![]() |
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... | |
Definition at line 126 of file module_receiver.f90.
| subroutine, public mod_receiver::compute_info_hexa_receiver | ( | type(type_receiver_hexa), intent(inout) | tlxinf | ) |
| 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().

| subroutine, public mod_receiver::compute_info_quad_receiver | ( | type(type_receiver_quad), intent(inout) | tlxinf | ) |
| 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().

| subroutine, public mod_receiver::init_hexa_receiver | ( | ) |
Definition at line 154 of file module_receiver.f90.
References compute_info_hexa_receiver(), and search_closest_hexa_gll().
Referenced by efispec3d().

| subroutine, public mod_receiver::init_quad_receiver | ( | ) |
Definition at line 371 of file module_receiver.f90.
References compute_info_quad_receiver(), and is_inside_quad().
Referenced by efispec3d().

|
private |
| 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). |
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 | ||
| ) |
| 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 |
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().

| 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 | ||
| ) |
| 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 | ||
| ) |
| 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.