All Classes Files Functions Variables Pages
mod_receiver Module Reference

This module contains subroutines to compute information about receivers and to write receivers' time history into binary files.

Public Member Functions

subroutine, public init_hexa_receiver ()
 This subroutine reads all receivers in file *.vor; determines to which cpu they belong; computes their local coordinates \(\xi,\eta,\zeta\) in hexahedron elements and open receivers' output files in which displacements, velocities and accelerations are written. More...
 
subroutine, public init_quad_receiver ()
 This subroutine reads all receivers in file *.fsr; determines to which cpu they belong; computes their local coordinates \(\xi,\eta\) in quadrangle elements and open receivers' output files in which displacements, velocities and accelerations are written. More...
 
subroutine, public search_closest_hexa_gll (x, y, z, dmin, kgll, lgll, mgll, iel)
 This subroutine searches among all hexahedron elements in cpu myrank the closest GLL node to a point of coordinates \(x,y,z\). More...
 
subroutine, public search_closest_quad_gll (x, y, global_gll, dmin, lgll, mgll, iel)
 This subroutine searches among all free surface quadrangle elements in cpu myrank the closest GLL node to a point of coordinates \(x,y\). More...
 
subroutine, public compute_info_hexa_receiver (tlxinf)
 This subroutine computes local coordinates \(\xi,\eta,\zeta\) of a receiver in the hexahedron element it belongs. It also stores global GLL nodes numbers for future interpolations as well as Lagrange polynonial values at the receiver. More...
 
subroutine, public compute_info_quad_receiver (tlxinf)
 This subroutine computes local coordinates \(\xi,\eta\) of a receiver in the quadrangle element it belongs. It also stores global GLL nodes numbers for future interpolations as well as Lagrange polynonial values at the receiver. More...
 
subroutine, public write_receiver_output ()
 This subroutine writes \(x,y,z\)-displacements, velocities and accelerations at receivers.
 
subroutine, public is_inside_quad (x, y, quad_gnode, nquad, quad_nnode, dmin, lgll, mgll, quad_num, is_inside)
 This subroutine finds which quadrangle element contains a receiver. More...
 

Private Member Functions

subroutine, private is_inside_polygon (x0, y0, x, y, n, l, m)
 This subroutine tests if a point P with coordinates \(x0,y0\) is inside a polygonal line. More...
 

Detailed Description

Definition at line 126 of file module_receiver.f90.

Member Function/Subroutine Documentation

subroutine, public mod_receiver::compute_info_hexa_receiver ( type(type_receiver_hexa), intent(inout)  tlxinf)
Parameters
tlxinf: data structure for a receiver located inside a hexahedron element

Definition at line 783 of file module_receiver.f90.

References mod_jacobian::compute_hexa_jacobian(), mod_coordinate::compute_hexa_point_coord(), and mod_lagrange::lagrap().

Referenced by init_hexa_receiver().

Here is the call graph for this function:

subroutine, public mod_receiver::compute_info_quad_receiver ( type(type_receiver_quad), intent(inout)  tlxinf)
Parameters
tlxinf: data structure for a receiver located inside a quadrangle element

Definition at line 917 of file module_receiver.f90.

References mod_jacobian::compute_quad_jacobian(), mod_coordinate::compute_quad_point_coord(), mod_coordinate::compute_quad_point_coord_z(), and mod_lagrange::lagrap().

Referenced by init_quad_receiver(), and mod_snapshot_surface::init_snapshot_surface().

Here is the call graph for this function:

subroutine, public mod_receiver::init_hexa_receiver ( )
Returns
mod_global_variables::tg_receiver_hexa
mod_global_variables::ig_nreceiver_hexa

Definition at line 154 of file module_receiver.f90.

References compute_info_hexa_receiver(), and search_closest_hexa_gll().

Referenced by efispec3d().

Here is the call graph for this function:

subroutine, public mod_receiver::init_quad_receiver ( )
Returns
mod_global_variables::tg_receiver_quad
mod_global_variables::ig_nreceiver_quad

Definition at line 371 of file module_receiver.f90.

References compute_info_quad_receiver(), and is_inside_quad().

Referenced by efispec3d().

Here is the call graph for this function:

subroutine, private mod_receiver::is_inside_polygon ( real, intent(in)  x0,
real, intent(in)  y0,
real, dimension(n), intent(in)  x,
real, dimension(n), intent(in)  y,
integer, intent(in)  n,
integer, intent(out)  l,
integer, intent(out)  m 
)
private
License
GNU LGPL
Author
Fortran 66 version by A.H. Morris. Converted to ELF90 compatibility by Alan Miller, 15 February 1997.
Parameters
x0: \(x\)-coordinate of the point P
y0: \(y\)-coordinate of the point P
x: \(x\)-coordinate of the vertices of the polygonal line
y: \(y\)-coordinate of the vertices of the polygonal line
n: number of vertices of the polygonal line
l: l = -1 if (x0,y0) is outside the polygonal path, l = 0 if (x0,y0) lies on the polygonal path, l = 1 if (x0,y0) is inside the polygonal path
m: m = 0 if (x0,y0) is on or outside the path. if (x0,y0) is inside the path then m is the winding number of the path around the point (x0,y0).
Returns
l : l = -1 if (x0,y0) is outside the polygonal path, l = 0 if (x0,y0) lies on the polygonal path, l = 1 if (x0,y0) is inside the polygonal path
m : m = 0 if (x0,y0) is on or outside the path. if (x0,y0) is inside the path then m is the winding number of the path around the point (x0,y0).

Definition at line 1229 of file module_receiver.f90.

Referenced by is_inside_quad().

subroutine, public mod_receiver::is_inside_quad ( real, intent(in)  x,
real, intent(in)  y,
integer, dimension(quad_nnode,nquad), intent(in)  quad_gnode,
integer, intent(in)  nquad,
integer, intent(in)  quad_nnode,
real, intent(out)  dmin,
integer, intent(out)  lgll,
integer, intent(out)  mgll,
integer, intent(out)  quad_num,
logical, intent(out)  is_inside 
)
Parameters
x: \(x\)-coordinate of a receiver
y: \(y\)-coordinate of a receiver
quad_gnode: global geometric nodes of quadrangle elements
nquad: number of quadrangle element in global_gll
quad_nnode: number of geometric node of a quadrangle element
dmin: minimal Euclidean distance from point to all GLL nodes in cpu myrank
lgll: closest GLL node index along \(\eta \)-coordinate
mgll: closest GLL node index along \(\xi \)-coordinate
quad_num: number of quadrangle element in cpu myrank whose GLL node has the minimal dmin
is_inside: .true. is the receiver is inside or on the polygonal line
Returns
is_inside : .true. is the receiver is inside or on the polygonal line

Definition at line 1143 of file module_receiver.f90.

References is_inside_polygon().

Referenced by init_quad_receiver(), and mod_snapshot_surface::init_snapshot_surface().

Here is the call graph for this function:

subroutine, public mod_receiver::search_closest_hexa_gll ( real, intent(in)  x,
real, intent(in)  y,
real, intent(in)  z,
real, intent(out)  dmin,
integer, intent(out)  kgll,
integer, intent(out)  lgll,
integer, intent(out)  mgll,
integer, intent(out)  iel 
)
Parameters
x: \(x\)-coordinates of a point
y: \(y\)-coordinates of a point
z: \(z\)-coordinates of a point
dmin: minimal Euclidean distance from point to all GLL nodes in cpu myrank
kgll: closest GLL node index along \(\zeta\)-coordinate
lgll: closest GLL node index along \(\eta \)-coordinate
mgll: closest GLL node index along \(\xi \)-coordinate
iel: number of hexahedron element in cpu myrank whose GLL node has the minimal dmin

Definition at line 650 of file module_receiver.f90.

Referenced by mod_source::init_double_couple_source(), init_hexa_receiver(), and mod_source::init_single_force_source().

subroutine, public mod_receiver::search_closest_quad_gll ( real, intent(in)  x,
real, intent(in)  y,
integer, dimension(:,:,:), intent(in)  global_gll,
real, intent(out)  dmin,
integer, intent(out)  lgll,
integer, intent(out)  mgll,
integer, intent(out)  iel 
)
Parameters
x: \(x\)-coordinates of a point
y: \(y\)-coordinates of a point
global_gll: indirection from local GLL nodes to global GLL nodes for quadrangle elements
dmin: minimal Euclidean distance from point to all GLL nodes in cpu myrank
lgll: closest GLL node index along \(\eta \)-coordinate
mgll: closest GLL node index along \(\xi \)-coordinate
iel: number of free surface quadrangle element in cpu myrank whose GLL node has the minimal dmin

Definition at line 722 of file module_receiver.f90.


The documentation for this module was generated from the following file: