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