[cig-commits] [commit] devel: updated README_SPECFEM3D_FAULT (1c07758)
cig_noreply at geodynamics.org
cig_noreply at geodynamics.org
Wed Jun 18 12:55:07 PDT 2014
Repository : https://github.com/geodynamics/specfem3d
On branch : devel
Link : https://github.com/geodynamics/specfem3d/compare/162be97e5d1637f332135862c22a5383ed79880c...ba49c5d6a99847d75e7de04c2363291a235d7c42
>---------------------------------------------------------------
commit 1c0775854c46692d2730227734ea84f679838aa2
Author: Dimitri Komatitsch <komatitsch at lma.cnrs-mrs.fr>
Date: Wed Jun 18 21:53:49 2014 +0200
updated README_SPECFEM3D_FAULT
>---------------------------------------------------------------
1c0775854c46692d2730227734ea84f679838aa2
README_SPECFEM3D_FAULT | 381 +++++++++++++++++++------------------------------
1 file changed, 147 insertions(+), 234 deletions(-)
diff --git a/README_SPECFEM3D_FAULT b/README_SPECFEM3D_FAULT
index 89b7885..ac0cb12 100644
--- a/README_SPECFEM3D_FAULT
+++ b/README_SPECFEM3D_FAULT
@@ -1,13 +1,22 @@
+********************************************************************************
+ PLEASE IGNORE THIS FILE IF YOU DO NOT PLAN TO USE THE DYNAMIC FAULT RUPTURE
+ CAPABILITIES OF SPECFEM; in that case, just refer to the regular users manual
+ in the "doc" directory. If you plan to model dynamic rupture capabilities,
+ please refer to the file below but read the users manual first,
+ since some of the installation instructions below are probably obsolete.
+********************************************************************************
+
This file documents modifications done by
J.-P. Ampuero (Caltech Seismolab), P. Galvez (ETH Zurich) and S. N. Somala (Caltech)
to model dynamic and kinematic earthquake rupture on non-planar faults.
+
The main modifications are encapsulated in the following modules:
- decompose_mesh_SCOTCH/fault_scotch.f90
- generate_databases/fault_generate_databases.f90
- specfem3d/fault_solver_dynamic.f90
- specfem3d/fault_solver_kinematic.f90
- specfem3d/fault_solver_common.f90
+ decompose_mesh_SCOTCH/fault_scotch.f90
+ generate_databases/fault_generate_databases.f90
+ specfem3d/fault_solver_dynamic.f90
+ specfem3d/fault_solver_kinematic.f90
+ specfem3d/fault_solver_common.f90
We also include examples and Matlab functions for post-processing and visualization.
This is a preliminary version, still under development and testing.
@@ -18,96 +27,30 @@ The current README file describes how to install and run our modified version of
It is not a replacement for the original manual, which you should read first.
Contents:
- Download and updates
- Installation
- Mesh generation with split nodes
- Cubit-python scripts for fault
- Running a simulation
- Examples
- Sign convention for fault quantities
- Input files
- Output files
- Post-processing and visualization
- Running on Fram (the Caltech GPS cluster)
+
+ Download and updates
+ Installation
+ Mesh generation with split nodes
+ Cubit-python scripts for fault
+ Running a simulation
+ Examples
+ Sign convention for fault quantities
+ Input files
+ Output files
+ Post-processing and visualization
DOWNLOAD AND UPDATES
---------------------
-To download the package for the first time run the following Subversion comand:
-
- >> svn checkout http://geodynamics.org/svn/cig/seismo/3D/FAULT_SOURCE/branches/new_fault_db SPECFEM3D
-
-This will create a copy of the code in a directory called SPECFEM3D.
-Subsequently, to download new version of the package:
-
- >> cd ~/SPECFEM3D
- >> svn update
-
-This will update the package: it will replace files by new ones, add new files and remove deprecated
-files if needed. Files that you generated and were not originally in the package will not be touched.
+Please refer to the users manual in the "doc" directory.
INSTALLATION
-------------
-1. Copy the start-up and source files to the root directory:
-
- >> cd SPECFEM3D
- >> cp START_UP/* src/* .
-
-
-2. Modify compiler options if needed:
- The file flags.guess contains default values for compiler flags, which in general work fine.
- To force your preferred compiler settings you must edit the variables FLAGS_CHECK and
- FLAGS_NO_CHECK in file flags.guess.
-
-
-3. Configure the package, for instance:
-
- >> ./configure FC=ifort MPIFC=mpif90
- or
- >> ./configure FC=ifort MPIFC=mpiifort
-
- Several settings can be tuned for your system, see Chapter 2 of the manual for more details.
- The code runs by default in single precision. If you prefer to run in double precision do instead:
-
- >> ./configure --enable-double-precision FC=ifort MPIFC=mpif90
-
-
-4. Compile the package:
-
- >> make
-
- This creates the following executables:
- xgenerate_dabases (database generation)
- xspecfem3d (solver)
- xcombine_AVS_DX
- xconvolve_source_timefunction.
-
-
-5. Install SCOTCH:
-
- >> cd decompose_mesh_SCOTCH
- >> tar -xvf scotch.5.1.7.tar
- Follow the instructions in the scotch_5.1.7/INSTALL.txt file.
- copy scotch_5.1/src/Make.inc/Makefile.inc.i686_pc_linux2.debug to scotch_5.1/src/Makefile.inc
-
-6. Compile the SCOTCH-to-SPECFEM3D interface program, also in the directory decompose_mesh_SCOTCH:
-
- Edit the Makefile:
- + the F90 variable to match your compiler.
- + the SCOTCH_LIB_PATH to match your SCOTCH library path.
- >> make
-
- This creates the executable xdecompose_mesh_SCOTCH in directory decompose_mesh_SCOTCH.
-
-
-7. Obtain and install the mesh generation software CUBIT (cubit.sandia.gov).
- If you don't have a CUBIT license yet, you can still run the examples in this package using
- the mesh files we provide.
-
+Please refer to the users manual in the "doc" directory.
MESH GENERATION WITH SPLIT NODES
@@ -169,25 +112,25 @@ defined in the CUBIT directory:
The functions in #1 and #3 are part of the main SPECFEM3D-SESAME distribution and are not documented here.
We focus here on #2:
- Function: fault_input
- Purpose: export a fault mesh database from Cubit to a SPECFEM3D-compliant file
- Syntax: fault_input(id_fault, ids_surf_1, ids_surf_2)
+ Function: fault_input
+ Purpose: export a fault mesh database from Cubit to a SPECFEM3D-compliant file
+ Syntax: fault_input(id_fault, ids_surf_1, ids_surf_2)
- Inputs: id_fault integer index assigned to the fault.
- The user must number all the faults, starting at 1, with unit increments.
- ids_surf_1 list of Cubit ids of all surfaces that form side 1 of the fault
- ids_surf_2 list of Cubit ids of all surfaces that form side 2 of the fault
- The user must decide which side of the fault is side 1.
- This choice affects the sign conventions of fault quantities
- as explained in a later section.
+ Inputs: id_fault integer index assigned to the fault.
+ The user must number all the faults, starting at 1, with unit increments.
+ ids_surf_1 list of Cubit ids of all surfaces that form side 1 of the fault
+ ids_surf_2 list of Cubit ids of all surfaces that form side 2 of the fault
+ The user must decide which side of the fault is side 1.
+ This choice affects the sign conventions of fault quantities
+ as explained in a later section.
- Outputs: file "fault_file_X.dat", where X is the fault id (id_fault).
+ Outputs: file "fault_file_X.dat", where X is the fault id (id_fault).
- Example: For the example in the previous section:
+ Example: For the example in the previous section:
- A1 = [168]
- A2 = [160]
- faultA = fault_input(1,A1,A2)
+ A1 = [168]
+ A2 = [160]
+ faultA = fault_input(1,A1,A2)
@@ -196,8 +139,8 @@ RUNNING A SIMULATION
1. Copy the input files to the work directory:
- >> cd ~/SPECFEM3D
- >> cp -r EXAMPLES/splay_faults/DATA ./
+ >> cd ~/SPECFEM3D
+ >> cp -r EXAMPLES/splay_faults/DATA ./
2. Create a mesh with CUBIT:
@@ -206,19 +149,19 @@ RUNNING A SIMULATION
See the previous section "MESH GENERATION WITH SPLIT NODES" or
move to the directory CUBIT, open the cubit GUI, run a CUBIT script:
- >> cd ~/SPECFEM3D/CUBIT
- >> cubit
+ >> cd ~/SPECFEM3D/CUBIT
+ >> cubit
In CUBIT's menu "Tools", select "Play Journal File" and select a script file,
for instance:
- EXAMPLES/splay_faults/splay_faults.py
+ EXAMPLES/splay_faults/splay_faults.py
This creates several mesh files in directory CUBIT/MESH/:
- absorbing_surface_file_* (5 files)
- free_surface_file
- materials_file
- mesh_file
- nodes_coords_file
- nummaterial_velocity_file
+ absorbing_surface_file_* (5 files)
+ free_surface_file
+ materials_file
+ mesh_file
+ nodes_coords_file
+ nummaterial_velocity_file
The CUBIT graphics window should show the mesh (e.g. EXAMPLES/splay_faults/splay_faults.jpg)
You can zoom, pan or rotate using mouse gestures. To look at the block of your interest,
@@ -230,8 +173,8 @@ RUNNING A SIMULATION
3. Partition the mesh with the domain decomposition software SCOTCH.
- >> cd ~/SPECFEM3D/decompose_mesh_SCOTH
- >> ./xdecompose_mesh_SCOTCH 'nproc' ../CUBIT/MESH/ ../DATABASES_MPI/
+ >> cd ~/SPECFEM3D/decompose_mesh_SCOTH
+ >> ./xdecompose_mesh_SCOTCH 'nproc' ../CUBIT/MESH/ ../DATABASES_MPI/
where 'nproc' is the number of processors that you will use in the simulation.
The second argument (../CUBIT/MESH/ in this example) is the path to the directory
@@ -243,19 +186,19 @@ RUNNING A SIMULATION
4. Edit the file DATA/Par_file: (copy an example here, see III.2)
- LOCAL_PATH = should be the path to DATABASES_MPI
- NPROC = number of processors. The same as the number of partitions in SCOTCH (step 3).
+ LOCAL_PATH = should be the path to DATABASES_MPI
+ NPROC = number of processors. The same as the number of partitions in SCOTCH (step 3).
5. Generate databases:
- >> cd ~/SPECFEM3D
- >> mpirun -np nproc ./xgenerate_databases
- or
- >> ./run/run.xdatabases
- or
- >> qsub -l nodes=... -l walltime=... go_mesher
- (the script go_mesher is in utils/)
+ >> cd ~/SPECFEM3D
+ >> mpirun -np nproc ./xgenerate_databases
+ or
+ >> ./run/run.xdatabases
+ or
+ >> qsub -l nodes=... -l walltime=... go_mesher
+ (the script go_mesher is in utils/)
This creates several binary mesh files for each processor (proc000***.bin)
in directory DATABASES_MPI.
@@ -270,12 +213,12 @@ RUNNING A SIMULATION
7. Run the solver:
- >> mpirun -np nproc ./xspecfem3D
- or
- >>./run/run.xspecfem3d
- or
- >> qsub -l nodes=... -l walltime=... go_solver
- (the script go_solver is in utils/)
+ >> mpirun -np nproc ./xspecfem3D
+ or
+ >>./run/run.xspecfem3d
+ or
+ >> qsub -l nodes=... -l walltime=... go_solver
+ (the script go_solver is in utils/)
@@ -283,9 +226,9 @@ EXAMPLES
---------
The package includes examples, the SCEC benchmark problems:
- + TPV5, a planar vertical strike-slip fault
- + TPV14 and TPV15, vertical strike-slip fault system with a fault branch
- + Splay fault models from Wendt et al. (2009)
+ + TPV5, a planar vertical strike-slip fault
+ + TPV14 and TPV15, vertical strike-slip fault system with a fault branch
+ + Splay fault models from Wendt et al. (2009)
To run the examples:
@@ -295,7 +238,7 @@ To run the examples:
2. replace the contents of directory DATA/* by one of the EXAMPLES/tpv*/DATA,
for instance:
- >> cp -r EXAMPLES/tpv5/DATA ./
+ >> cp -r EXAMPLES/tpv5/DATA ./
3. follow all the steps in section II above.
@@ -333,112 +276,112 @@ and positive along-dip traction generates thrust slip if side 1 is on the hangin
INPUT FILES
------------
-DATA/Par_file See SPECFEM3D manual page 17.
- A first version of this file is generated by ./configure.
+DATA/Par_file See SPECFEM3D manual page 17.
+ A first version of this file is generated by ./configure.
-DATA/STATIONS List of stations outside the fault (see manual page 23).
+DATA/STATIONS List of stations outside the fault (see manual page 23).
-DATA/Par_file_faults contains parameters of the fault. The first part of this file
- has a strict format:
+DATA/Par_file_faults contains parameters of the fault. The first part of this file
+ has a strict format:
- Line 1: Number of faults (NF)
- Lines 2 to NF+1: Kelvin Voigt damping (in seconds) for each fault. (See below how to set this parameter)
+ Line 1: Number of faults (NF)
+ Lines 2 to NF+1: Kelvin Voigt damping (in seconds) for each fault. (See below how to set this parameter)
Line NF+2: Type of simulation (1=dynamic , 2 = kinematic)
- Line NF+3: Number of time steps between updates of the time series outputs at selected
- fault points (see DATA/FAULT_STATIONS), usually a large number (100s or 1000s).
- Note that the sampling rate of the time series is usually much higher.
- Line NF+4: Number of time steps between fault snapshot outputs (quantities at every fault
- point exported at regular times), usually a large number (100s or 1000s).
- Line NF+5: Slip velocity threshold below which frictional healing is set (friction coefficient
+ Line NF+3: Number of time steps between updates of the time series outputs at selected
+ fault points (see DATA/FAULT_STATIONS), usually a large number (100s or 1000s).
+ Note that the sampling rate of the time series is usually much higher.
+ Line NF+4: Number of time steps between fault snapshot outputs (quantities at every fault
+ point exported at regular times), usually a large number (100s or 1000s).
+ Line NF+5: Slip velocity threshold below which frictional healing is set (friction coefficient
is reset to its static value). If this value is negative healing is disabled.
- Line NF+6: Slip velocity threshold to define the rupture front. Only used for outputs.
+ Line NF+6: Slip velocity threshold to define the rupture front. Only used for outputs.
The rest of this file is made of namelist input blocks (see "namelist" in a Fortran 9x manual).
The input for each fault has the following sequence (arguments in [brackets] are optional):
- &BEGIN_FAULT /
+ &BEGIN_FAULT /
&INIT_STRESS S1, S2, S3 [,n1, n2, n3] /
followed by (n1+n2+n3) &DIST2D blocks
- &SWF mus, mud, dc [, nmus, nmud, ndc] /
+ &SWF mus, mud, dc [, nmus, nmud, ndc] /
followed by (nmus+nmud+ndc) &DIST2D blocks
The &INIT_STRESS input block sets the initial fault stresses relative to the foot-wall side of
- the fault. Initial stresses are composed of a constant background value possibly overwritten
- in prescribed regions by heterogeneous distributions (see &DIST2D blocks below):
- S1 = constant background value of along-strike shear stress
- (positive in the usual strike direction)
- S2 = constant background value of along-dip shear
- (positive is down-dip, normal faulting)
- S3 = constant background value of normal stress (negative in compresion)
- n1 = number of heterogeneous items for along-strike shear stress [default is 0]
- n2 = number of heterogeneous items for along-dip shear stress [default is 0]
- n3 = number of heterogeneous items for normal stress [default is 0]
+ the fault. Initial stresses are composed of a constant background value possibly overwritten
+ in prescribed regions by heterogeneous distributions (see &DIST2D blocks below):
+ S1 = constant background value of along-strike shear stress
+ (positive in the usual strike direction)
+ S2 = constant background value of along-dip shear
+ (positive is down-dip, normal faulting)
+ S3 = constant background value of normal stress (negative in compresion)
+ n1 = number of heterogeneous items for along-strike shear stress [default is 0]
+ n2 = number of heterogeneous items for along-dip shear stress [default is 0]
+ n3 = number of heterogeneous items for normal stress [default is 0]
The &SWF input block sets the slip-weakening friction parameters of the fault:
- mus = constant background value of static friction coefficient
- mud = constant background value of dynamic friction coefficient
- dc = constant background value of critical slip-weakening distance
- nmus = number of heterogeneous items for static friction coefficient [default is 0]
- nmud = number of heterogeneous items for dynamic friction coefficient [default is 0]
- ndc = number of heterogeneous items for critical slip-weakening distance [default is 0]
+ mus = constant background value of static friction coefficient
+ mud = constant background value of dynamic friction coefficient
+ dc = constant background value of critical slip-weakening distance
+ nmus = number of heterogeneous items for static friction coefficient [default is 0]
+ nmud = number of heterogeneous items for dynamic friction coefficient [default is 0]
+ ndc = number of heterogeneous items for critical slip-weakening distance [default is 0]
The &DIST2D input blocks modify (overwrite) the value of a fault parameter by a heterogeneous
- spatial distribution:
+ spatial distribution:
- &DIST2D shape='square', val, xc, yc, zc, l /
+ &DIST2D shape='square', val, xc, yc, zc, l /
sets a constant value (val) within a cube with center (xc,yc,zc) and edge size l.
- &DIST2D shape='rectangle', val, xc, yc, zc, lx, ly, lz /
+ &DIST2D shape='rectangle', val, xc, yc, zc, lx, ly, lz /
sets a constant value (val) within a rectangular prism with center (xc,yc,zc)
and edge sizes (lx,ly,lz).
- &DIST2D shape='rectangle-taper', val, valh, xc, yc, zc, lx, ly, lz /
+ &DIST2D shape='rectangle-taper', val, valh, xc, yc, zc, lx, ly, lz /
sets a vertical linear gradient
- within a rectangular prism with center (xc,yc,zc) and edge sizes (lx,ly,lz).
- Values vary linearly as a function of vertical position z
- between value val at z = zc-lz/2 and value valh at z = zc+lz/2 .
+ within a rectangular prism with center (xc,yc,zc) and edge sizes (lx,ly,lz).
+ Values vary linearly as a function of vertical position z
+ between value val at z = zc-lz/2 and value valh at z = zc+lz/2 .
- &DIST2D shape='circular', val, xc, yc, zc, r /
+ &DIST2D shape='circular', val, xc, yc, zc, r /
sets a constant value (val) within a sphere with center (xc,yc,zc) and radius r.
-DATA/FAULT_STATIONS Stations in the fault plane.
- Line 1: number of stations.
- Line 2 to end: 5 columns: X, Y, Z (-depth), station name, fault-id
- The fault-id identifies the fault that contains the station.
- It is the index of appearance in the faults list after line 2 of Par_file_faults
+DATA/FAULT_STATIONS Stations in the fault plane.
+ Line 1: number of stations.
+ Line 2 to end: 5 columns: X, Y, Z (-depth), station name, fault-id
+ The fault-id identifies the fault that contains the station.
+ It is the index of appearance in the faults list after line 2 of Par_file_faults
-DATA/input_file.txt Heterogeneous stresses and friction parameters
- Documented in page 10 of EXAMPLES/tpv16.crack/description/TPV16_17_Description_v03.pdf
- To activate this feature, in fault_solver.f90 set
- TPV16 = .true.
- then re-compile the code:
- cd SPECFEM3D
- make
+DATA/input_file.txt Heterogeneous stresses and friction parameters
+ Documented in page 10 of EXAMPLES/tpv16.crack/description/TPV16_17_Description_v03.pdf
+ To activate this feature, in fault_solver.f90 set
+ TPV16 = .true.
+ then re-compile the code:
+ cd SPECFEM3D
+ make
Heterogeneous velocity models can be given in a regular grid.
- In the mesh generation Python file (.py) or in the CUBIT journal file (.jou),
- set the material 1st attribute to -1:
- block * attribute index 1 -1
- In module model_tomography.f90:
- Set the parameter TOMO_FILENAME to the name of the file containing the velocity model.
- Re-compile the code:
- cd SPECFEM3D
- make
- The format of the velocity file is:
- Line 1: ORIG_X, ORIG_Y, ORIG_Z, END_X, END_Y, END_Z
- (coordinates of the two extreme corners of the box)
- Line 2: SPACING_X, SPACING_Y, SPACING_Z
- (regular grid spacing in each direction)
- Line 3: NX, NY, NZ
- (number of grid point in each direction)
- Line 4: VP_MIN, VP_MAX, VS_MIN, VS_MAX, RHO_MIN, RHO_MAX
- (min and max values of P wave speed, S wave speed and density)
- Line 5 to 4+NX*NY*NZ:
- x_tomo,y_tomo,z_tomo,vp_tomo,vs_tomo,rho_tomo
- (position, P wave speed, S wave speed, density)
+ In the mesh generation Python file (.py) or in the CUBIT journal file (.jou),
+ set the material 1st attribute to -1:
+ block * attribute index 1 -1
+ In module model_tomography.f90:
+ Set the parameter TOMO_FILENAME to the name of the file containing the velocity model.
+ Re-compile the code:
+ cd SPECFEM3D
+ make
+ The format of the velocity file is:
+ Line 1: ORIG_X, ORIG_Y, ORIG_Z, END_X, END_Y, END_Z
+ (coordinates of the two extreme corners of the box)
+ Line 2: SPACING_X, SPACING_Y, SPACING_Z
+ (regular grid spacing in each direction)
+ Line 3: NX, NY, NZ
+ (number of grid point in each direction)
+ Line 4: VP_MIN, VP_MAX, VS_MIN, VS_MAX, RHO_MIN, RHO_MAX
+ (min and max values of P wave speed, S wave speed and density)
+ Line 5 to 4+NX*NY*NZ:
+ x_tomo,y_tomo,z_tomo,vp_tomo,vs_tomo,rho_tomo
+ (position, P wave speed, S wave speed, density)
Several files are generated automatically by xgenerate_databases in directory DATABASES_MPI
@@ -522,38 +465,8 @@ POST-PROCESSING AND VISUALIZATION
Some Matlab functions for post-processing and visualization are included in directory
Post-processing. The functions are internally documented (see their matlab help).
- FSEM3D_snapshot reads a fault data snapshot
+ FSEM3D_snapshot reads a fault data snapshot
The directories EXAMPLES/*/post contain additional Matlab scripts to generate figures
specific to each example.
-
-
-RUNNING ON FRAM (THE CALTECH GPS CLUSTER)
-------------------------------------------
-
-Getting started with Fram:
- http://hpc.caltech.edu/hel/citerrafram-new-user-guide/
- http://citerra.gps.caltech.edu/Fram_User_Meeting.pdf
-
-Before step I.3 add this to you ~/.bash_profile file:
- # Load modules:
- module load intel/intel-12
- module load intel/impi
- # Set huge stack size:
- ulimit -s unlimited
-
-Compiler settings for configure:
- FC = ifort
- MPIFC = mpiifort
-
-If you can't compile SCOTCH:
- cp -r /home/surendra/decompose_mesh_SCOTCH/scotch_5.1 .
-or in SPECFEM3D/decompose_mesh_SCOTCH/Makefile set
- SCOTCH_LIBS = -L/home/surendra/decompose_mesh_SCOTCH/scotch_5.1/lib/ -lscotch -lscotcherr
-
-Submitting a job:
- qsub -l nodes=48 -l walltime=30:00 go_mesher
-Other useful options to qsub are:
- -N simulation_name
- -m bae -M your at email.address
More information about the CIG-COMMITS
mailing list