![]() |
This module defines all global variables of EFISPEC3D. Scalar variables are initialized directly in this module. This module also contains some general purpose subroutines.
Data Types | |
type | type_cpu_neighbor |
type that gathers information about cpus connected to cpu myrank (cpus not connected to cpu myrank are not stored) More... | |
type | type_double_couple_source |
type for double couple point sources More... | |
type | type_elastic_material |
type for linear elastic properties of materials More... | |
type | type_receiver_hexa |
type for receivers (i.e., stations) located inside hexahedron elements More... | |
type | type_receiver_quad |
type for receivers (i.e., stations) located inside quadrangle elements More... | |
type | type_single_force_source |
type for single force point sources More... | |
type | type_viscoelastic_material |
type for viscoelastic properties of materials More... | |
Public Attributes | |
logical, parameter | lg_visco = .false. |
if .true. –> activate viscoelasticity in the solver module: see mod_solver | |
logical, parameter | lg_snapshot_vtk = .false. |
if .true. –> write snapshots in VTK format | |
logical, parameter | lg_snapshot_gmt = .true. |
if .true. –> write snapshots in gmt format | |
logical, parameter | lg_output_medium_vtk = .false. |
if .true. –> write medium in VTK format | |
integer, parameter | ig_lagrange_order = 4 |
order of Lagrange's polynomials. Should be set from 4 to 6. | |
integer, parameter | ig_ngll = IG_LAGRANGE_ORDER + 1 |
number of GLL nodes in the reference domain [-1:1] | |
integer, parameter | ig_lst_unit = 10 |
unit for listing file *.lst | |
integer, parameter | ig_ndof = 3 |
number of degrees of freedom of the problem (i.e., 3) | |
integer, parameter | ig_nrelax = 8 |
number of relaxation times and weights for viscoelastic stress-strain law (following liu and archuleta, 2006) | |
real, parameter | rg_newmark_gamma = 0.5 |
RG_NEWMARK_GAMMA : gamma coefficient of Newmark method. | |
real, parameter | rg_pi = 3.141592654 |
RG_PI : approximation of pi. | |
real, parameter | epsilon_machine = epsilon(EPSILON_MACHINE) |
EPSILON_MACHINE : upper bound on the relative error due to rounding in floating point arithmetic. | |
real, parameter | tiny_real = tiny(TINY_REAL) |
TINY_REAL : smallest positive (non zero) number in the model of the type real. | |
logical, parameter | lg_async_mpi_comm = .false. |
if .true. –> activate asynchrone MPI communications between cpu | |
logical, parameter | lg_output_cputime = .false. |
if .true. –> output cpu_time information in file *.time.cpu.* | |
logical, parameter | lg_output_debug_file = .false. |
if .true. –> output debug.* files | |
real, dimension(:,:,:,:,:), allocatable | rg_dcsource_gll_force |
distributed forces at GLL nodes to generate double couple point source in cpu myrank | |
real, dimension(:,:,:,:), allocatable | rg_hexa_gll_jacobian_det |
jacobian determinant at GLL nodes of hexahedron elements in cpu myrank | |
real, dimension(:,:,:,:), allocatable | rg_hexa_gll_dxidx |
derivative of local coordinate ( \(\xi\)) with respect to global coordinate \(x\) at GLL nodes of hexahedron elements in cpu myrank | |
real, dimension(:,:,:,:), allocatable | rg_hexa_gll_dxidy |
derivative of local coordinate ( \(\xi\)) with respect to global coordinate \(y\) at GLL nodes of hexahedron elements in cpu myrank | |
real, dimension(:,:,:,:), allocatable | rg_hexa_gll_dxidz |
derivative of local coordinate ( \(\xi\)) with respect to global coordinate \(z\) at GLL nodes of hexahedron elements in cpu myrank | |
real, dimension(:,:,:,:), allocatable | rg_hexa_gll_detdx |
derivative of local coordinate ( \(\eta\)) with respect to global coordinate \(x\) at GLL nodes of hexahedron elements in cpu myrank | |
real, dimension(:,:,:,:), allocatable | rg_hexa_gll_detdy |
derivative of local coordinate ( \(\eta\)) with respect to global coordinate \(y\) at GLL nodes of hexahedron elements in cpu myrank | |
real, dimension(:,:,:,:), allocatable | rg_hexa_gll_detdz |
derivative of local coordinate ( \(\eta\)) with respect to global coordinate \(z\) at GLL nodes of hexahedron elements in cpu myrank | |
real, dimension(:,:,:,:), allocatable | rg_hexa_gll_dzedx |
derivative of local coordinate ( \(\zeta\)) with respect to global coordinate \(x\) at GLL nodes of hexahedron elements in cpu myrank | |
real, dimension(:,:,:,:), allocatable | rg_hexa_gll_dzedy |
derivative of local coordinate ( \(\zeta\)) with respect to global coordinate \(y\) at GLL nodes of hexahedron elements in cpu myrank | |
real, dimension(:,:,:,:), allocatable | rg_hexa_gll_dzedz |
derivative of local coordinate ( \(\zeta\)) with respect to global coordinate \(z\) at GLL nodes of hexahedron elements in cpu myrank | |
real, dimension(:,:,:,:), allocatable | rg_hexa_gll_rho |
density ( \( \rho \)) at GLL nodes for hexahedron elements in cpu myrank | |
real, dimension(:,:,:,:), allocatable | rg_hexa_gll_rhovs2 |
density times squared shear-wave velocity ( \(\rho \beta^{2}\)) at GLL nodes of hexahedron elements in cpu myrank | |
real, dimension(:,:,:,:), allocatable | rg_hexa_gll_rhovp2 |
density times squared pressure-wave velocity ( \(\rho \alpha^{2}\)) at GLL nodes of hexahedron elements in cpu myrank | |
real, dimension(:,:,:), allocatable | rg_quadp_gll_rhovs |
density times shear-wave velocity ( \(\rho \beta\)) at GLL nodes of absorbing quadrangle elements in cpu myrank | |
real, dimension(:,:,:), allocatable | rg_quadp_gll_rhovp |
density times shear-wave velocity ( \(\rho \alpha\)) at GLL nodes of absorbing quadrangle elements in cpu myrank | |
real, dimension(:,:,:), allocatable | rg_quadp_gll_jaco_det |
jacobian determinant at GLL nodes of quadrangle elements in cpu myrank | |
real, dimension(:,:,:,:), allocatable | rg_quadp_gll_normal |
vector normal to GLL nodes of quadrangle elements in x,y,z coordinate system in cpu myrank | |
real, dimension(:,:,:,:,:), allocatable | rg_hexa_gll_wkqs |
weights \( w^{S}_{k} \) for a given quality factor \( Q_{S} \) at GLL nodes of hexahedron elements in cpu myrank | |
real, dimension(:,:,:,:,:), allocatable | rg_hexa_gll_wkqp |
weights \( w^{P}_{k} \) for a given quality factor \( Q_{P} \) at GLL nodes of hexahedron elements in cpu myrank | |
real, dimension(:,:,:,:,:), allocatable | rg_hexa_gll_ksixx |
memory variables \( ksi_{xx} \) at GLL nodes of hexahedron elements in cpu myrank used for viscoelastic simulation | |
real, dimension(:,:,:,:,:), allocatable | rg_hexa_gll_ksiyy |
memory variables \( ksi_{yy} \) at GLL nodes of hexahedron elements in cpu myrank used for viscoelastic simulation | |
real, dimension(:,:,:,:,:), allocatable | rg_hexa_gll_ksizz |
memory variables \( ksi_{zz} \) at GLL nodes of hexahedron elements in cpu myrank used for viscoelastic simulation | |
real, dimension(:,:,:,:,:), allocatable | rg_hexa_gll_ksixy |
memory variables \( ksi_{xy} \) at GLL nodes of hexahedron elements in cpu myrank used for viscoelastic simulation | |
real, dimension(:,:,:,:,:), allocatable | rg_hexa_gll_ksixz |
memory variables \( ksi_{xz} \) at GLL nodes of hexahedron elements in cpu myrank used for viscoelastic simulation | |
real, dimension(:,:,:,:,:), allocatable | rg_hexa_gll_ksiyz |
memory variables \( ksi_{yz} \) at GLL nodes of hexahedron elements in cpu myrank used for viscoelastic simulation | |
real, dimension(ig_nrelax, 3), parameter | rg_relax_coeff = [ 1.72333e-3, 1.80701e-3, 5.38887e-3, 1.99322e-2, 8.49833e-2, 4.09335e-1, 2.05951e+0, 13.26290e+0, 1.66958e-2, 3.81644e-2, 9.84666e-3, -1.36803e-2, -2.85125e-2, -5.37309e-2, -6.65035e-2, -1.33696e-1, 8.98758e-2, 6.84635e-2, 9.67052e-2, 1.20172e-1, 1.30728e-1, 1.38746e-1, 1.40705e-1, 2.14647e-1 ] |
coefficients for viscoelastic simulation | |
real, dimension(ig_nrelax) | rg_mem_var_exp |
exponential used for viscoelastic simulation | |
real, dimension(:,:), allocatable | rg_gll_displacement |
\(x,y,z\) displacement at step n or n+1 at the GLL nodes (global numbering) in cpu myrank | |
real, dimension(:,:), allocatable | rg_gll_velocity |
\(x,y,z\) velocity at step n or n+1 at the GLL nodes (global numbering) in cpu myrank | |
real, dimension(:,:), allocatable | rg_gll_acceleration |
\(x,y,z\) acceleration or external forces at step n+1 at the GLL nodes (global numbering) in cpu myrank | |
real, dimension(:), allocatable | rg_gnode_abscissa |
local coordinate of geometric nodes in the reference domain [-1:1] | |
real, dimension(:,:), allocatable | rg_gnode_abscissa_dist |
denominator for computing lagrange polynomial for geometric nodes in the reference domain [-1:1] | |
real, dimension(:), allocatable | rg_gll_mass_matrix |
diagonal mass matrix at GLL nodes (global numbering) in cpu myrank | |
real, dimension(:), allocatable | rg_gnode_x |
\(x\) coordinate of the geometric nodes in cpu myrank | |
real, dimension(:), allocatable | rg_gnode_y |
\(y\) coordinate of the geometric nodes in cpu myrank | |
real, dimension(:), allocatable | rg_gnode_z |
\(z\) coordinate of the geometric nodes in cpu myrank | |
real, dimension(:), allocatable | rg_receiver_snapshot_z |
\(z\) coordinate of all receivers used for snapshot (only in cpu0) | |
integer, dimension(:), allocatable | ig_receiver_snapshot_locnum |
local number of receiver used for snapshot | |
real, dimension(:), allocatable | rg_dcsource_user_func |
user defined source function for double couple source | |
real, dimension(:), allocatable | rg_sfsource_user_func |
user defined source function for single force point source | |
real, dimension(:), allocatable | rg_mpi_buffer_send |
send buffer for asynchrone communications | |
real, dimension(:), allocatable | rg_mpi_buffer_recv |
receive buffer for asynchrone communications | |
real | rg_dt = 0.0 |
time step increment \( \Delta t \) | |
real | rg_dt2 = 0.0 |
squared time step increment \( \Delta t^{2} \) | |
real | rg_simu_current_time = 0.0 |
current time of simulation \( t_{simu} \) (i.e. rg_dt*ig_idt) | |
real | rg_simu_total_time = 0.0 |
total time of simulation \( tt_{simu} \) | |
real | rg_mesh_xmax = 0.0 |
maximum \(x\) coordinate of the physical domain of study (over all cpus) | |
real | rg_mesh_xmin = 0.0 |
minimum \(x\) coordinate of the physical domain of study (over all cpus) | |
real | rg_mesh_ymax = 0.0 |
maximum \(y\) coordinate of the physical domain of study (over all cpus) | |
real | rg_mesh_ymin = 0.0 |
minimum \(y\) coordinate of the physical domain of study (over all cpus) | |
real | rg_mesh_zmax = 0.0 |
maximum \(z\) coordinate of the physical domain of study (over all cpus) | |
real | rg_mesh_zmin = 0.0 |
minimum \(z\) coordinate of the physical domain of study (over all cpus) | |
real | rg_receiver_snapshot_dxdy = 0.0 |
space increment of the grid of receivers for snapshot given in the configuration file *.cfg | |
real | rg_receiver_snapshot_dx = 0.0 |
space increment \(dx\) of the grid of receivers for snapshot | |
real | rg_receiver_snapshot_dy = 0.0 |
space increment \(dy\) of the grid of receivers for snapshot | |
integer | ig_receiver_snapshot_nx = 0 |
number of receivers for snapshot in the \(x\)-direction | |
integer | ig_receiver_snapshot_ny = 0 |
number of receivers for snapshot in the \(y\)-direction | |
integer, dimension(:,:,:,:), allocatable, target | ig_hexa_gll_glonum |
global GLL nodes of hexahedron elements from local gll nodes | |
integer, dimension(:,:,:), allocatable | ig_quadp_gll_glonum |
global GLL nodes of paraxial quadrangle elements from local gll nodes | |
integer, dimension(:,:,:), allocatable | ig_quadf_gll_glonum |
global GLL nodes of free surface quadrangle elements from local gll nodes | |
integer, dimension(:,:), allocatable | ig_hexa_gnode_glonum |
global geometric nodes of hexahedron elements in cpu myrank | |
integer, dimension(:,:), allocatable | ig_quadp_gnode_glonum |
global geometric nodes of paraxial quadrangle elements in cpu myrank | |
integer, dimension(:,:), allocatable | ig_quadf_gnode_glonum |
global geometric nodes of free surface quadrangle elements in cpu myrank | |
integer, dimension(:), allocatable | ig_hexa_gnode_xiloc |
local position \( \xi \) of geometric nodes in hexahedron elements | |
integer, dimension(:), allocatable | ig_hexa_gnode_etloc |
local position \( \eta \) of geometric nodes in hexahedron elements | |
integer, dimension(:), allocatable | ig_hexa_gnode_zeloc |
local position \( \zeta \) of geometric nodes in hexahedron elements | |
integer, dimension(:), allocatable | ig_quad_gnode_xiloc |
local position \( \xi \) of geometric nodes in quadrangle elements | |
integer, dimension(:), allocatable | ig_quad_gnode_etloc |
local position \( \eta \) of geometric nodes in quadrangle elements | |
integer, dimension(:), allocatable | ig_hexa_receiver_unit |
fortran unit number of receivers in hexahedron elements in cpu myrank | |
integer, dimension(:), allocatable | ig_quad_receiver_unit |
fortran unit number of receivers in quadrangle elements in cpu myrank | |
integer | ig_mpi_buffer_sizemax = 0 |
maximum number of GLL nodes in all mpi buffers for cpu myrank | |
integer, dimension(:), allocatable | ig_mpi_request_send |
mpi send request for asynchrone communications | |
integer, dimension(:), allocatable | ig_mpi_request_recv |
mpi receive request for asynchrone communications | |
integer, dimension(:), allocatable | ig_mpi_buffer_offset |
offset buffer for asynchrone communications | |
integer, dimension(:), allocatable | ig_hexa_material_number |
material number of hexahedron elements | |
integer(kind=1), dimension(:), allocatable | ig_material_type |
material type: 1=elastic, 2=viscoelastic | |
integer, dimension(:), allocatable | ig_receiver_snapshot_glonum |
global numbering of all receivers of all cpus to write *.grd files (gathered by cpu0 only) | |
integer, dimension(:), allocatable | ig_receiver_snapshot_mpi_shift |
shift for gatherv for snapshot receivers | |
integer, dimension(:), allocatable | ig_receiver_snapshot_total_number |
number of receivers in each cpu (gathered by cpu0 only) | |
integer | ig_ncpu = 0 |
total number of cpu used for computation | |
integer | ig_myrank = 0 |
rank of the cpu myrank | |
integer | ig_ncpu_neighbor = 0 |
number of cpus neighbor to cpu myrank | |
integer, dimension(:,:), allocatable | ig_cpu_neighbor_info |
info about cpus neighbor to cpu myrank: ig_cpu_neighbor_info(1,:) –> element number, ig_cpu_neighbor_info(2,:) –> face number, ig_cpu_neighbor_info(3,:) –> cpu number | |
integer | ig_nhexa = 0 |
number of hexahedron elements in cpu myrank | |
integer | ig_nhexa_outer = 0 |
number of outer hexahedron elements in cpu myrank | |
integer | ig_nhexa_inner = 0 |
number of inner hexahedron elements in cpu myrank | |
integer | ig_nquad_parax = 0 |
number of paraxial quadrangle elements in cpu myrank | |
integer | ig_nquad_fsurf = 0 |
number of free surface quadrangle elements in cpu myrank | |
integer | ig_mesh_nnode = 0 |
total number of geometric nodes in cpu myrank | |
integer | ig_hexa_nnode = 0 |
number of geometric nodes to define a hexahedron element | |
integer | ig_quad_nnode = 0 |
number of geometric nodes to define a quadrangle element | |
integer | ig_line_nnode = 0 |
number of geometric nodes to define a line element | |
integer, dimension(3, 8) | ig_hexa_node2gll |
indirection from hexahedron geometrical nodes to local GLL nodes (only for vertex nodes) | |
integer | ig_ndt = 0 |
number of time step | |
integer | ig_idt = 0 |
current time step of analysis | |
integer | ig_receiver_saving_incr = 1 |
saving increment for receivers time history | |
integer | ig_snapshot_saving_incr = 0 |
saving increment for free surface snapshot | |
integer | ig_snapshot_volume_saving_incr = 0 |
saving increment for volume snapshot | |
logical | lg_boundary_absorption = .true. |
if .true. –> boundary absorption is activated | |
integer | ig_ndcsource = 0 |
number of double couple point sources in cpu myrank | |
integer | ig_nsfsource = 0 |
number of single force point sources in cpu myrank | |
integer | ig_nreceiver_hexa = 0 |
number of receivers in hexahedron elements in cpu myrank | |
integer | ig_nreceiver_quad = 0 |
number of receivers in quadrangle elements in cpu myrank | |
integer | ig_nreceiver_snapshot = 0 |
number of receivers in quadrangle elements for free surface snapshot in cpu myrank | |
integer | ig_medium_type = 0 |
media type: if = 0 –> material properties are identical for all GLL nodes of a hexahedron | |
integer | ig_nmaterial = 0 |
number of material | |
integer, dimension(:), allocatable | ig_quadp_neighbor_hexa |
hexahedron element number attached to paraxial quadrangle elements | |
integer, dimension(:), allocatable | ig_quadp_neighbor_hexaface |
face number of hexahedron element attached to paraxial quadrangle elements | |
integer | ig_nneighbor_all_kind = 0 |
number of neighbors (either face, edge and node) between cpu myrank and its neighbors | |
integer | ig_cpu_name_len = 0 |
length of the name of cpu myrank | |
character(len=mpi_max_processor_name) | cg_cpu_name |
name of cpu myrank | |
character(len=92) | cg_prefix |
prefix of all input files | |
character(len=6) | cg_myrank |
myrank number in character format | |
character(len=6) | cg_ncpu |
total number of cpu in character format | |
logical | lg_snapshot = .false. |
if .true. –> snapshot of free surface is output either in gmt or VTK format | |
logical | lg_snapshot_displacement = .false. |
if .true. –> activation of displacement free surface snapshot | |
logical | lg_snapshot_velocity = .false. |
if .true. –> activation of velocity free surface snapshot | |
logical | lg_snapshot_acceleration = .false. |
if .true. –> activation of acceleration free surface snapshot | |
logical | lg_snapshot_volume = .false. |
if .true. –> snapshot of volume is output either in VTK format | |
logical | lg_snapshot_volume_displacement = .false. |
if .true. –> activation of displacement volume snapshot | |
logical | lg_snapshot_volume_velocity = .false. |
if .true. –> activation of velocity volume snapshot | |
logical | lg_snapshot_volume_acceleration = .false. |
if .true. –> activation of acceleration volume snapshot | |
real, dimension(:,:), allocatable | rg_gll_coordinate |
GLL nodes \(x,y,z\)coordinates in cpu myrank. | |
real, dimension(ig_ngll) | rg_gll_weight |
weight of GLL nodes for numerical integration | |
real, dimension(ig_ngll) | rg_gll_abscissa |
abscissa of GLL nodes in reference domain [-1:1] | |
real, dimension(ig_ngll, ig_ngll) | rg_gll_lagrange_deriv |
derivative of lagrange polynomial of node p at GLL node i in [-1:1] –> rg_gll_lagrange_deriv(p,i) | |
real, dimension(ig_ngll, ig_ngll) | rg_gll_abscissa_dist |
denominator for computing lagrange polynomial for GLL nodes in the reference domain [-1:1] | |
integer | ig_ngll_total = 0 |
total number of unique global GLL nodes in cpu myrank | |
integer, dimension(:), allocatable | ig_hexa_snapshot |
EFISPEC's hexahedron element used for volume snapshot. | |
integer, dimension(:), allocatable | ig_vtk_hexa_conn_snapshot |
VTK's hexahedron element connectivity used for volume snapshot. | |
integer, dimension(:), allocatable | ig_vtk_node_gll_glonum_snapshot |
Indirection array used for volume snapshot: VTK's geometric nodes to EFISPEC's GLL nodes. | |
real, dimension(:), allocatable | rg_vtk_node_x_snapshot |
\(x\)-coordinate of VTK mesh nodes used for volume snapshot | |
real, dimension(:), allocatable | rg_vtk_node_y_snapshot |
\(y\)-coordinate of VTK mesh nodes used for volume snapshot | |
real, dimension(:), allocatable | rg_vtk_node_z_snapshot |
\(z\)-coordinate of VTK mesh nodes used for volume snapshot | |
integer(kind=1), dimension(:), allocatable | ig_vtk_cell_type_snapshot |
VTK's hexahedron element cell type used for volume snapshot. | |
integer, dimension(:), allocatable | ig_vtk_offset_snapshot |
VTK's hexahedron element offset used for volume snapshot. | |
integer | ig_vtk_nhexa_snapshot |
number of hexahadron element in VTK mesh | |
integer | ig_vtk_nnode_snapshot |
number of geometric nodes in VTK mesh | |
real | rg_snapshot_volume_xmin |
minimal \(x\)-coordinate of the box of volume snapshot | |
real | rg_snapshot_volume_xmax |
maximal \(x\)-coordinate of the box of volume snapshot | |
real | rg_snapshot_volume_ymin |
minimal \(y\)-coordinate of the box of volume snapshot | |
real | rg_snapshot_volume_ymax |
maximal \(y\)-coordinate of the box of volume snapshot | |
real | rg_snapshot_volume_zmin |
minimal \(z\)-coordinate of the box of volume snapshot | |
real | rg_snapshot_volume_zmax |
maximal \(z\)-coordinate of the box of volume snapshot | |
type(type_single_force_source), dimension(:), allocatable | tg_sfsource |
data structure for single force point sources in cpu myrank | |
type(type_double_couple_source), dimension(:), allocatable | tg_dcsource |
data structure for double couple sources in cpu myrank | |
type(type_receiver_hexa), dimension(:), allocatable | tg_receiver_hexa |
data structure for receivers located inside hexahedron elements | |
type(type_receiver_quad), dimension(:), allocatable | tg_receiver_snapshot_quad |
data structure for receivers used for snapshot | |
type(type_receiver_quad), dimension(:), allocatable | tg_receiver_quad |
data structure for receivers located on free surface quadrangle elements | |
type(type_cpu_neighbor), dimension(:), allocatable | tg_cpu_neighbor |
data structure of cpu myrank that contains information about connected cpu icon. | |
type(type_elastic_material), dimension(:), allocatable | tg_elastic_material |
data structure for linear elastic properties of materials | |
type(type_viscoelastic_material), dimension(:), allocatable | tg_viscoelastic_material |
data structure for viscoelastic properties of materials | |
Definition at line 128 of file module_global_variables.f90.