All Classes Files Functions Variables Pages
mod_global_variables Module Reference

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_nrelaxrg_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_ngllrg_gll_weight
 weight of GLL nodes for numerical integration
 
real, dimension(ig_ngllrg_gll_abscissa
 abscissa of GLL nodes in reference domain [-1:1]
 
real, dimension(ig_ngll, ig_ngllrg_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_ngllrg_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
 

Detailed Description

Definition at line 128 of file module_global_variables.f90.


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