![]() |
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.