Skip to content

Commit

Permalink
Merge pull request #1200 from danielpeter/devel
Browse files Browse the repository at this point in the history
updates examples and utils folder; adds support for nummaterial_velocity_file for external meshes; updates config files
  • Loading branch information
danielpeter committed Feb 8, 2024
2 parents 98741db + e65b987 commit 9343a0a
Show file tree
Hide file tree
Showing 342 changed files with 6,558 additions and 4,376 deletions.
105 changes: 105 additions & 0 deletions CITATION.cff
@@ -0,0 +1,105 @@
cff-version: 1.2.0

message: "If this software turns out to be helpful for your research, please cite both the article from preferred-citation and the software itself. More detailed citation suggestions can be found in the user manual."
title: 'SPECFEM/specfem2d: SPECFEM2D v8.1.0'
version: v8.1.0
date-released: '2023-12-20'
repository-code: https://github.com/SPECFEM/specfem2d/tree/v8.1.0
url: "https://github.com/SPECFEM/specfem2d"
type: software
identifiers:
- type: doi
- value: 10.5281/zenodo.10415228
license:
- gpl-3.0-or-later

authors:
- family-names: Komatitsch
given-names: Dimitri
- family-names: Tromp
given-names: Jeroen
- family-names: Gharti
given-names: Hom Nath
- family-names: Peter
given-names: Daniel
- family-names: Valero Cano
given-names: Eduardo
- family-names: Bachmann
given-names: Etienne
- family-names: Bottero
given-names: Alexis
- family-names: Brissaud
given-names: Quentin
- family-names: Chow
given-names: Bryant
- family-names: Cristini
given-names: Paul
- family-names: Cui
given-names: Congyue
- family-names: Gassmoeller
given-names: Rene
- family-names: Gineste
given-names: Michael
- family-names: Halpaap
given-names: Felix
- family-names: Heien
given-names: Eric
- family-names: Labarta
given-names: Jesus
- family-names: Le Goff
given-names: Nicolas
- family-names: Le Loher
given-names: Pieyre
- family-names: Lefebvre
given-names: Matthieu
- family-names: Liu
given-names: Qiancheng
- family-names: Liu
given-names: Qinya
- family-names: Liu
given-names: Youshan
- family-names: Liu
given-names: Zhaolun
- family-names: Luet
given-names: David
- family-names: Martin
given-names: Roland
- family-names: Matzen
given-names: Rene
- family-names: Modrak
given-names: Ryan
- family-names: Morency
given-names: Christina
- family-names: Nagaso
given-names: Masaru
- family-names: Rosenkrantz
given-names: Eric
- family-names: Rusmanugroho
given-names: Herurisa
- family-names: Sales de Andrade
given-names: Elliott
- family-names: Tape
given-names: Carl
- family-names: Vilotte
given-names: Jean-Pierre
- family-names: Xie
given-names: Zhinan
- family-names: Zhang
given-names: Zhendong


preferred-citation:
type: article
authors:
- family-names: Komatitsch
given-names: Dimitri
- family-names: Vilotte
given-names: Jean-Pierre
title: "The spectral-element method: an efficient tool to simulate the seismic response of 2D and 3D geological structures"
journal: "Bull. seism. Soc. Am."
volume: 88
issue: 2
start: 368 # First page number
end: 392 # Last page number
year: 1998
doi: "10.1785/BSSA0880020368"
19 changes: 10 additions & 9 deletions DATA/Par_file
Expand Up @@ -279,15 +279,16 @@ read_external_mesh = .false.

# data concerning mesh, when generated using third-party app (more info in README)
# (see also absorbing_conditions above)
mesh_file = ./DATA/mesh_file # file containing the mesh
nodes_coords_file = ./DATA/nodes_coords_file # file containing the nodes coordinates
materials_file = ./DATA/materials_file # file containing the material number for each element
free_surface_file = ./DATA/free_surface_file # file containing the free surface
axial_elements_file = ./DATA/axial_elements_file # file containing the axial elements if AXISYM is true
absorbing_surface_file = ./DATA/absorbing_surface_file # file containing the absorbing surface
acoustic_forcing_surface_file = ./DATA/MSH/Surf_acforcing_Bottom_enforcing_mesh # file containing the acoustic forcing surface
absorbing_cpml_file = ./DATA/absorbing_cpml_file # file containing the CPML element numbers
tangential_detection_curve_file = ./DATA/courbe_eros_nodes # file containing the curve delimiting the velocity model
mesh_file = dummy # file containing the mesh
nodes_coords_file = dummy # file containing the nodes coordinates
materials_file = dummy # file containing the material number for each element
nummaterial_velocity_file = dummy # file containing the material properties for each material
free_surface_file = dummy # file containing the free surface
axial_elements_file = dummy # file containing the axial elements if AXISYM is true
absorbing_surface_file = dummy # file containing the absorbing surface
acoustic_forcing_surface_file = dummy # file containing the acoustic forcing surface
absorbing_cpml_file = dummy # file containing the CPML element numbers
tangential_detection_curve_file = dummy # file containing the curve delimiting the velocity model

#-----------------------------------------------------------
#
Expand Down
19 changes: 10 additions & 9 deletions EXAMPLES/BENCHIE_water_PVC/DATA/Par_file
Expand Up @@ -278,15 +278,16 @@ read_external_mesh = .true.

# data concerning mesh, when generated using third-party app (more info in README)
# (see also absorbing_conditions above)
mesh_file = ./DATA/mesh_file # file containing the mesh
nodes_coords_file = ./DATA/nodes_coords_file # file containing the nodes coordinates
materials_file = ./DATA/materials_file # file containing the material number for each element
free_surface_file = ./DATA/free_surface_file # file containing the free surface
axial_elements_file = ./DATA/axial_elements_file # file containing the axial elements if AXISYM is true
absorbing_surface_file = ./DATA/absorbing_surface_file # file containing the absorbing surface
acoustic_forcing_surface_file = ./DATA/MSH/Surf_acforcing_Bottom_enforcing_mesh # file containing the acoustic forcing surface
absorbing_cpml_file = ./DATA/absorbing_cpml_file # file containing the CPML element numbers
tangential_detection_curve_file = ./DATA/courbe_eros_nodes # file containing the curve delimiting the velocity model
mesh_file = ./MESH/mesh_file # file containing the mesh
nodes_coords_file = ./MESH/nodes_coords_file # file containing the nodes coordinates
materials_file = ./MESH/materials_file # file containing the material number for each element
nummaterial_velocity_file = ./MESH/nummaterial_velocity_file # file containing the material properties for each material
free_surface_file = ./MESH/free_surface_file # file containing the free surface
axial_elements_file = ./MESH/axial_elements_file # file containing the axial elements if AXISYM is true
absorbing_surface_file = ./MESH/absorbing_surface_file # file containing the absorbing surface
acoustic_forcing_surface_file = ./MESH/Surf_acforcing_Bottom_enforcing_mesh # file containing the acoustic forcing surface
absorbing_cpml_file = ./MESH/absorbing_cpml_file # file containing the CPML element numbers
tangential_detection_curve_file = ./MESH/courbe_eros_nodes # file containing the curve delimiting the velocity model

#-----------------------------------------------------------
#
Expand Down
File renamed without changes.
33 changes: 33 additions & 0 deletions EXAMPLES/BENCHIE_water_PVC/MESH/nummaterial_velocity_file
@@ -0,0 +1,33 @@
# nummaterial_velocity_file
# format:
#(1)domain_id #(2)material_id #(3)rho #(4)vp #(5)vs #(6)Q_k #(7)Q_mu #(8)ani
#
# where
# domain_id : 1=acoustic / 2=elastic / 3=poroelastic
# material_id : POSITIVE integer identifier of material block
# rho : density
# vp : P-velocity
# vs : S-velocity
# Q_k : 9999 = no Q_kappa attenuation
# Q_mu : 9999 = no Q_mu attenuation
# ani : 0=no anisotropy/ 1,2,.. check with aniso_model.f90
#
# example:
# 2 1 2300 2800 1500 9999.0 9999.0 0
#
# or
#
#(1)domain_id #(2)material_id tomography elastic #(3)filename #(4)positive
#
# where
# domain_id : 1=acoustic / 2=elastic / 3=poroelastic
# material_id : NEGATIVE integer identifier of material block
# filename : filename of the tomography file
# positive : a positive unique identifier
#
# example:
# 2 -1 tomography elastic tomo.xyz 1
#
# materials
2 1 1412.d0 2260.d0 1050.d0 9999.0 9999.0 0
1 2 1000.d0 1477.d0 0.d0 9999.0 9999.0 0
Expand Up @@ -263,6 +263,7 @@ read_external_mesh = .false.
mesh_file = dummy # file containing the mesh
nodes_coords_file = dummy # file containing the nodes coordinates
materials_file = dummy # file containing the material number for each element
nummaterial_velocity_file = dummy # file containing the material properties for each material
free_surface_file = dummy # file containing the free surface
axial_elements_file = dummy # file containing the axial elements if AXISYM is true
absorbing_surface_file = dummy # file containing the absorbing surface
Expand Down
Expand Up @@ -264,6 +264,7 @@ read_external_mesh = .false.
mesh_file = dummy # file containing the mesh
nodes_coords_file = dummy # file containing the nodes coordinates
materials_file = dummy # file containing the material number for each element
nummaterial_velocity_file = dummy # file containing the material properties for each material
free_surface_file = dummy # file containing the free surface
axial_elements_file = dummy # file containing the axial elements if AXISYM is true
absorbing_surface_file = dummy # file containing the absorbing surface
Expand Down
1 change: 1 addition & 0 deletions EXAMPLES/BENCHMARK_CLAERBOUT_ADJOINT/ELASTIC/DATA/Par_file
Expand Up @@ -263,6 +263,7 @@ read_external_mesh = .false.
mesh_file = dummy # file containing the mesh
nodes_coords_file = dummy # file containing the nodes coordinates
materials_file = dummy # file containing the material number for each element
nummaterial_velocity_file = dummy # file containing the material properties for each material
free_surface_file = dummy # file containing the free surface
axial_elements_file = dummy # file containing the axial elements if AXISYM is true
absorbing_surface_file = dummy # file containing the absorbing surface
Expand Down
19 changes: 10 additions & 9 deletions EXAMPLES/Gmsh_example_Stacey_MPI/DATA/Par_file
Expand Up @@ -269,15 +269,16 @@ read_external_mesh = .true.

# data concerning mesh, when generated using third-party app (more info in README)
# (see also absorbing_conditions above)
mesh_file = MESH/Mesh_SqrCirc # file containing the mesh
nodes_coords_file = MESH/Nodes_SqrCirc # file containing the nodes coordinates
materials_file = MESH/Material_SqrCirc # file containing the material number for each element
free_surface_file = MESH/Surf_free_SqrCirc # file containing the free surface
axial_elements_file = dummy # file containing the axial elements if AXISYM is true
absorbing_surface_file = MESH/Surf_abs_SqrCirc # file containing the absorbing surface
acoustic_forcing_surface_file = dummy # file containing the acoustic forcing surface
absorbing_cpml_file = dummy # file containing the CPML element numbers
tangential_detection_curve_file = dummy # file containing the curve delimiting the velocity model
mesh_file = ./MESH/Mesh_SqrCirc # file containing the mesh
nodes_coords_file = ./MESH/Nodes_SqrCirc # file containing the nodes coordinates
materials_file = ./MESH/Material_SqrCirc # file containing the material number for each element
nummaterial_velocity_file = ./MESH/nummaterial_velocity_file # file containing the material properties for each material
free_surface_file = ./MESH/Surf_free_SqrCirc # file containing the free surface
axial_elements_file = dummy # file containing the axial elements if AXISYM is true
absorbing_surface_file = ./MESH/Surf_abs_SqrCirc # file containing the absorbing surface
acoustic_forcing_surface_file = dummy # file containing the acoustic forcing surface
absorbing_cpml_file = dummy # file containing the CPML element numbers
tangential_detection_curve_file = dummy # file containing the curve delimiting the velocity model

#-----------------------------------------------------------
#
Expand Down
19 changes: 10 additions & 9 deletions EXAMPLES/Gmsh_example_Stacey_MPI/DATA/Par_file.serial
Expand Up @@ -269,15 +269,16 @@ read_external_mesh = .true.

# data concerning mesh, when generated using third-party app (more info in README)
# (see also absorbing_conditions above)
mesh_file = MESH/Mesh_SqrCirc # file containing the mesh
nodes_coords_file = MESH/Nodes_SqrCirc # file containing the nodes coordinates
materials_file = MESH/Material_SqrCirc # file containing the material number for each element
free_surface_file = MESH/Surf_free_SqrCirc # file containing the free surface
axial_elements_file = dummy # file containing the axial elements if AXISYM is true
absorbing_surface_file = MESH/Surf_abs_SqrCirc # file containing the absorbing surface
acoustic_forcing_surface_file = dummy # file containing the acoustic forcing surface
absorbing_cpml_file = dummy # file containing the CPML element numbers
tangential_detection_curve_file = dummy # file containing the curve delimiting the velocity model
mesh_file = ./MESH/Mesh_SqrCirc # file containing the mesh
nodes_coords_file = ./MESH/Nodes_SqrCirc # file containing the nodes coordinates
materials_file = ./MESH/Material_SqrCirc # file containing the material number for each element
nummaterial_velocity_file = ./MESH/nummaterial_velocity_file # file containing the material properties for each material
free_surface_file = ./MESH/Surf_free_SqrCirc # file containing the free surface
axial_elements_file = dummy # file containing the axial elements if AXISYM is true
absorbing_surface_file = ./MESH/Surf_abs_SqrCirc # file containing the absorbing surface
acoustic_forcing_surface_file = dummy # file containing the acoustic forcing surface
absorbing_cpml_file = dummy # file containing the CPML element numbers
tangential_detection_curve_file = dummy # file containing the curve delimiting the velocity model

#-----------------------------------------------------------
#
Expand Down
33 changes: 33 additions & 0 deletions EXAMPLES/Gmsh_example_Stacey_MPI/MESH/nummaterial_velocity_file
@@ -0,0 +1,33 @@
# nummaterial_velocity_file
# format:
#(1)domain_id #(2)material_id #(3)rho #(4)vp #(5)vs #(6)Q_k #(7)Q_mu #(8)ani
#
# where
# domain_id : 1=acoustic / 2=elastic / 3=poroelastic
# material_id : POSITIVE integer identifier of material block
# rho : density
# vp : P-velocity
# vs : S-velocity
# Q_k : 9999 = no Q_kappa attenuation
# Q_mu : 9999 = no Q_mu attenuation
# ani : 0=no anisotropy/ 1,2,.. check with aniso_model.f90
#
# example:
# 2 1 2300 2800 1500 9999.0 9999.0 0
#
# or
#
#(1)domain_id #(2)material_id tomography elastic #(3)filename #(4)positive
#
# where
# domain_id : 1=acoustic / 2=elastic / 3=poroelastic
# material_id : NEGATIVE integer identifier of material block
# filename : filename of the tomography file
# positive : a positive unique identifier
#
# example:
# 2 -1 tomography elastic tomo.xyz 1
#
# materials
1 1 2000.d0 1680.d0 0.0d0 10.d0 10.d0 0
1 2 1000.d0 1477.d0 0.0d0 10.d0 10.d0 0
19 changes: 10 additions & 9 deletions EXAMPLES/Industrial_Format_SEP/DATA/Par_file
Expand Up @@ -268,15 +268,16 @@ read_external_mesh = .false.

# data concerning mesh, when generated using third-party app (more info in README)
# (see also absorbing_conditions above)
mesh_file = ./mesh/mesh # file containing the mesh
nodes_coords_file = ./mesh/nodes_coords # file containing the nodes coordinates
materials_file = ./mesh/mat # file containing the material number for each element
free_surface_file = ./mesh/surface_free # file containing the free surface
axial_elements_file = ./mesh/axial_elements_file # file containing the axial elements if AXISYM is true
absorbing_surface_file = ./mesh/surface_abs # file containing the absorbing surface
acoustic_forcing_surface_file = ./mesh/Surf_acforcing_Bottom_enforcing_mesh # file containing the acoustic forcing surface
absorbing_cpml_file = ./mesh/Elements_CPML_list # file containing the CPML element numbers
tangential_detection_curve_file = ./mesh/courbe_eros_nodes # file containing the curve delimiting the velocity model
mesh_file = dummy # file containing the mesh
nodes_coords_file = dummy # file containing the nodes coordinates
materials_file = dummy # file containing the material number for each element
nummaterial_velocity_file = dummy # file containing the material properties for each material
free_surface_file = dummy # file containing the free surface
axial_elements_file = dummy # file containing the axial elements if AXISYM is true
absorbing_surface_file = dummy # file containing the absorbing surface
acoustic_forcing_surface_file = dummy # file containing the acoustic forcing surface
absorbing_cpml_file = dummy # file containing the CPML element numbers
tangential_detection_curve_file = dummy # file containing the curve delimiting the velocity model

#-----------------------------------------------------------
#
Expand Down
13 changes: 12 additions & 1 deletion EXAMPLES/Industrial_Format_SEP/README
@@ -1,7 +1,18 @@
----------------------------------------------------------------------
README
----------------------------------------------------------------------

This example reads in a Vp velocity model given in SEP (Stanford Exploration Project) file format
and interpolates it onto a regular SPECFEM2D mesh to produce seismic traces.

1. modify interpolate.f90
mainly to change the location/names of your SEP/SU models

2. run interpolation:
./interpolate.bash
./run_this_example.sh

The script will compile the interpolate.f90 file and run the xinterpolate binary.
This binary will call the mesher xmeshfem2D and solver xspecfem2D to first create and output the regular mesh,
then interpolate the velocities onto it and re-run the binaries to run a simulation using the
interpolated velocity model (in "legacy" format).

0 comments on commit 9343a0a

Please sign in to comment.