[cig-commits] r19071 - in seismo/2D/SPECFEM2D/trunk: EXAMPLES EXAMPLES/acoustic_poroelastic src/specfem2D
cmorency at geodynamics.org
cmorency at geodynamics.org
Fri Oct 14 09:58:30 PDT 2011
Author: cmorency
Date: 2011-10-14 09:58:30 -0700 (Fri, 14 Oct 2011)
New Revision: 19071
Added:
seismo/2D/SPECFEM2D/trunk/EXAMPLES/acoustic_poroelastic/
seismo/2D/SPECFEM2D/trunk/EXAMPLES/acoustic_poroelastic/Par_file_acoustic_poroelastic
seismo/2D/SPECFEM2D/trunk/EXAMPLES/acoustic_poroelastic/README
seismo/2D/SPECFEM2D/trunk/EXAMPLES/acoustic_poroelastic/SOURCE_acoustic_poroelastic
seismo/2D/SPECFEM2D/trunk/EXAMPLES/acoustic_poroelastic/interfaces_acoustic_poroelastic.dat
seismo/2D/SPECFEM2D/trunk/EXAMPLES/acoustic_poroelastic/process.sh
Modified:
seismo/2D/SPECFEM2D/trunk/src/specfem2D/specfem2D.F90
Log:
Added an acoustic-poroelastic example in EXAMPLES/acoustic_poroelastic
Added: seismo/2D/SPECFEM2D/trunk/EXAMPLES/acoustic_poroelastic/Par_file_acoustic_poroelastic
===================================================================
--- seismo/2D/SPECFEM2D/trunk/EXAMPLES/acoustic_poroelastic/Par_file_acoustic_poroelastic (rev 0)
+++ seismo/2D/SPECFEM2D/trunk/EXAMPLES/acoustic_poroelastic/Par_file_acoustic_poroelastic 2011-10-14 16:58:30 UTC (rev 19071)
@@ -0,0 +1,126 @@
+# title of job
+title = Test for 2 layers: acoustic/poroelastic
+
+# forward or adjoint simulation
+SIMULATION_TYPE = 1 # 1 = forward, 2 = adjoint + kernels
+NOISE_TOMOGRAPHY = 0 # 0 = earthquake simulation, 1/2/3 = noise simulation
+SAVE_FORWARD = .false. # save the last frame, needed for adjoint simulation
+
+# parameters concerning partitioning
+nproc = 1 # number of processes
+partitioning_method = 3 # SCOTCH = 3, ascending order (very bad idea) = 1
+
+ngnod = 9 # number of control nodes per element (4 or 9)
+initialfield = .false. # use a plane wave as source or not
+add_Bielak_conditions = .false. # add Bielak conditions or not if initial plane wave
+assign_external_model = .false. # define external earth model or not
+READ_EXTERNAL_SEP_FILE = .false. # Read external SEP file from DATA/model_velocity.dat_input, or use routine
+TURN_ATTENUATION_ON = .false. # turn attenuation on or off for solid medium
+TURN_VISCATTENUATION_ON = .false. # turn viscous attenuation on or off
+Q0 = 1 # quality factor for viscous attenuation
+freq0 = 10 # frequency for viscous attenuation
+p_sv = .true. # set the type of calculation (P-SV or SH/membrane waves)
+
+# time step parameters
+nt = 5000 # total number of time steps
+deltat = 3.d-4 # duration of a time step
+
+# source parameters
+NSOURCES = 1 # number of sources [source info read in CMTSOLUTION file]
+force_normal_to_surface = .false. # angleforce normal to surface (external mesh and curve file needed)
+
+# constants for attenuation
+N_SLS = 2 # number of standard linear solids for attenuation
+f0_attenuation = 5.196152422706633 # (Hz) relevant only if source is a Dirac or a Heaviside, else it is f0
+
+# receiver line parameters for seismograms
+seismotype = 2 # record 1=displ 2=veloc 3=accel 4=pressure
+generate_STATIONS = .true. # creates a STATION file in ./DATA
+nreceiverlines = 2 # number of receiver lines
+anglerec = 0.d0 # angle to rotate components at receivers
+rec_normal_to_surface = .false. # base anglerec normal to surface (external mesh and curve file needed)
+
+# first receiver line (in the acoustic layer)
+nrec = 1 # number of receivers
+xdeb = 2000. # first receiver x in meters
+zdeb = 2933.33 # first receiver z in meters
+xfin = 3700. # last receiver x in meters (ignored if onlyone receiver)
+zfin = 2200. # last receiver z in meters (ignored if onlyone receiver)
+enreg_surf_same_vertical = .false. # receivers inside the medium or at the surface
+
+# second receiver line (in the poroelastic layer)
+nrec = 1 # number of receivers
+xdeb = 2000. # first receiver x in meters
+zdeb = 1866.67 # first receiver z in meters
+xfin = 3777 # last receiver x in meters (ignored if onlyone receiver)
+zfin = 1866.67 # last receiver z in meters (ignored if onlyone receiver)
+enreg_surf_same_vertical = .false. # receivers inside the medium or at the surface
+
+# display parameters
+NTSTEP_BETWEEN_OUTPUT_INFO = 300 # display frequency in time steps
+output_postscript_snapshot = .true. # output Postscript snapshot of the results
+output_color_image = .false. # output color image of the results
+imagetype = 1 # display 1=displ 2=veloc 3=accel 4=pressure
+cutsnaps = 1. # minimum amplitude in % for snapshots
+meshvect = .true. # display mesh on vector plots or not
+modelvect = .false. # display velocity model on vector plots
+boundvect = .true. # display boundary conditions on plots
+interpol = .true. # interpolation of the display or not
+pointsdisp = 6 # points for interpolation of display (set to 1 for lower-left corner only)
+subsamp = 1 # subsampling of color snapshots
+sizemax_arrows = 1.d0 # maximum size of arrows on vector plots in cm
+gnuplot = .false. # generate a GNUPLOT file for the grid
+output_grid = .false. # save the grid in a text file or not
+output_energy = .false. # compute and output acoustic and elastic energy (slows down the code significantly)
+output_wavefield_snapshot = .false. # output Ux,Uy,Uz text file for each output time (big files)
+
+# velocity and density models
+nbmodels = 2 # nb of different models
+# define models as
+# I: (model_number 1 rho Vp Vs 0 0 QKappa Qmu 0 0 0 0 0 0) or
+# II: (model_number 2 rho c11 c13 c15 c33 c35 c55 0 0 0 0 0 0) or
+# III: (model_number 3 rhos rhof phi c kxx kxz kzz Ks Kf Kfr etaf mufr Qmu).
+# For istropic elastic/acoustic material use I and set Vs to zero to make a given model acoustic, for anisotropic elastic use II,
+# and for isotropic poroelastic material use III. The mesh can contain acoustic, elastic, and poroelastic models simultaneously.
+1 3 2500.d0 1020.d0 0.4d0 2.0 1d-11 0.d0 1d-11 1.60554d10 2.295d9 1.0d10 0.0d-4 9.63342d9 10.d0
+2 1 1020.d0 1500.d0 0.d0 0 0 10.d0 10.d0 0 0 0 0 0 0
+
+# external mesh or not
+read_external_mesh = .false.
+
+# absorbing boundary active or not
+absorbing_conditions = .true.
+
+#-----------------------------------------------------------------------------
+# PARAMETERS FOR EXTERNAL MESHING
+
+# data concerning mesh, when generated using third-party app (more info in README)
+# (see also absorbing_conditions above)
+mesh_file = ./DATA/Mesh_canyon/canyon_mesh_file # file containing the mesh
+nodes_coords_file = ./DATA/Mesh_canyon/canyon_nodes_coords_file # file containing the nodes coordinates
+materials_file = ./DATA/Mesh_canyon/canyon_materials_file # file containing the material number for each element
+free_surface_file = ./DATA/Mesh_canyon/canyon_free_surface_file # file containing the free surface
+absorbing_surface_file = ./DATA/Mesh_canyon/canyon_absorbing_surface_file # file containing the absorbing surface
+tangential_detection_curve_file = ./DATA/courbe_eros_nodes # file containing the curve delimiting the velocity model
+
+#-----------------------------------------------------------------------------
+# PARAMETERS FOR INTERNAL MESHING
+
+# file containing interfaces for internal mesh
+interfacesfile = ../interfaces_acoustic_poroelastic.dat
+
+# geometry of the model (origin lower-left corner = 0,0) and mesh description
+xmin = 0.d0 # abscissa of left side of the model
+xmax = 4800.d0 # abscissa of right side of the model
+nx = 260 # number of elements along X
+
+# absorbing boundary parameters (see absorbing_conditions above)
+absorbbottom = .true.
+absorbright = .true.
+absorbtop = .false.
+absorbleft = .true.
+
+# define the different regions of the model in the (nx,nz) spectral element mesh
+nbregions = 2 # nb of regions and model number for each
+1 260 1 110 1
+1 260 111 220 2
Added: seismo/2D/SPECFEM2D/trunk/EXAMPLES/acoustic_poroelastic/README
===================================================================
--- seismo/2D/SPECFEM2D/trunk/EXAMPLES/acoustic_poroelastic/README (rev 0)
+++ seismo/2D/SPECFEM2D/trunk/EXAMPLES/acoustic_poroelastic/README 2011-10-14 16:58:30 UTC (rev 19071)
@@ -0,0 +1,28 @@
+----------------------------------------------------------------------
+README
+----------------------------------------------------------------------
+
+This default example creates an internal mesh with a flat interface between
+an acoustic layer on top of a poroelastic layer.
+
+TO RUN:
+
+0. Read the user manual in SPECFEM2D/doc/manual_SPECFEM2D.pdf
+
+1. in SPECFEM2D root directory, configure, e.g. for a serial calculation,
+ ./configure FC=gfortran
+
+2. compile:
+ make all
+
+3. cd EXAMPLES/acoustic_poroelastic
+
+4. execute script to run mesher and solver for the PSV case:
+ ./process.sh
+
+5. check out the output files in the local directory OUTPUT_FILES,
+the seismograms should compare to Fig.8 in Morency and Tromp, Geophys. J. Int. (2008) 175, 301-345
+with a reversed polarity due to a reversed expression of the Ricker source time function in this paper.
+
+
+----------------------------------------------------------------------
Added: seismo/2D/SPECFEM2D/trunk/EXAMPLES/acoustic_poroelastic/SOURCE_acoustic_poroelastic
===================================================================
--- seismo/2D/SPECFEM2D/trunk/EXAMPLES/acoustic_poroelastic/SOURCE_acoustic_poroelastic (rev 0)
+++ seismo/2D/SPECFEM2D/trunk/EXAMPLES/acoustic_poroelastic/SOURCE_acoustic_poroelastic 2011-10-14 16:58:30 UTC (rev 19071)
@@ -0,0 +1,13 @@
+# source parameters
+source_surf = .false. # source inside the medium or at the surface
+xs = 1600. # source location x in meters
+zs = 2900. # source location z in meters
+source_type = 1 # elastic force or acoustic pressure = 1 or moment tensor = 2
+time_function_type = 1 # Ricker = 1, first derivative = 2, Gaussian = 3, Dirac = 4, Heaviside = 5
+f0 = 15.0 # dominant source frequency (Hz) if not Dirac or Heaviside
+t0 = 0.0 # time shift when multi sources (if one source, must be zero)
+angleforce = 0. # angle of the source (for a force only)
+Mxx = 1. # Mxx component (for a moment tensor source only)
+Mzz = 1. # Mzz component (for a moment tensor source only)
+Mxz = 0. # Mxz component (for a moment tensor source only)
+factor = 1.d10 # amplification factor
Added: seismo/2D/SPECFEM2D/trunk/EXAMPLES/acoustic_poroelastic/interfaces_acoustic_poroelastic.dat
===================================================================
--- seismo/2D/SPECFEM2D/trunk/EXAMPLES/acoustic_poroelastic/interfaces_acoustic_poroelastic.dat (rev 0)
+++ seismo/2D/SPECFEM2D/trunk/EXAMPLES/acoustic_poroelastic/interfaces_acoustic_poroelastic.dat 2011-10-14 16:58:30 UTC (rev 19071)
@@ -0,0 +1,34 @@
+#
+# number of interfaces
+#
+ 3
+#
+# for each interface below, we give the number of points and then x,y for each point
+#
+#
+# interface number 1 (bottom of the mesh)
+#
+ 2
+ 0 0
+ 4800 0
+#
+# interface number 2 (topography, top of the mesh)
+#
+ 2
+ 0 2400
+ 4800 2400
+#
+# interface number 3 (topography, top of the mesh)
+#
+ 2
+ 0 4800
+ 4800 4800
+#
+# for each layer, we give the number of spectral elements in the vertical direction
+#
+#
+# layer number 1 (bottom layer)
+#
+ 110
+#
+ 110
Added: seismo/2D/SPECFEM2D/trunk/EXAMPLES/acoustic_poroelastic/process.sh
===================================================================
--- seismo/2D/SPECFEM2D/trunk/EXAMPLES/acoustic_poroelastic/process.sh (rev 0)
+++ seismo/2D/SPECFEM2D/trunk/EXAMPLES/acoustic_poroelastic/process.sh 2011-10-14 16:58:30 UTC (rev 19071)
@@ -0,0 +1,66 @@
+#!/bin/bash
+#
+# script runs mesher and solver (in serial)
+# using this example setup
+#
+
+echo "running example: `date`"
+currentdir=`pwd`
+
+echo
+echo "(will take about 30 minutes)"
+echo
+
+# sets up directory structure in current example directoy
+echo
+echo " setting up example..."
+echo
+
+mkdir -p OUTPUT_FILES
+mkdir -p DATA
+
+# sets up local DATA/ directory
+cd DATA/
+ln -s ../Par_file_acoustic_poroelastic Par_file
+ln -s ../SOURCE_acoustic_poroelastic SOURCE
+cd ../
+
+# cleans output files
+rm -rf OUTPUT_FILES/*
+
+# compiles executables in root directory
+cd ../../
+make > tmp.log
+cd $currentdir
+
+# links executables
+rm -f xmeshfem2D xspecfem2D
+ln -s ../../bin/xmeshfem2D
+ln -s ../../bin/xspecfem2D
+
+# stores setup
+cp DATA/Par_file OUTPUT_FILES/
+cp DATA/SOURCE OUTPUT_FILES/
+
+# runs database generation
+echo
+echo " running mesher..."
+echo
+./xmeshfem2D > OUTPUT_FILES/output_mesher.txt
+
+# runs simulation
+echo
+echo " running solver..."
+echo
+./xspecfem2D > OUTPUT_FILES/output_solver.txt
+
+# stores output
+cp DATA/SOURCE_xz.dat OUTPUT_FILES/
+cp DATA/STATIONS OUTPUT_FILES/
+cp DATA/STATIONS_target OUTPUT_FILES/
+
+echo
+echo "see results in directory: OUTPUT_FILES/"
+echo
+echo "done"
+echo `date`
Property changes on: seismo/2D/SPECFEM2D/trunk/EXAMPLES/acoustic_poroelastic/process.sh
___________________________________________________________________
Name: svn:executable
+ *
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/specfem2D.F90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/specfem2D.F90 2011-10-14 13:47:03 UTC (rev 19070)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/specfem2D.F90 2011-10-14 16:58:30 UTC (rev 19071)
@@ -5125,7 +5125,7 @@
! ******************************************************************************************************************
-! ************* main solver for the poroelastic elements: first the solid (u_s) than the fluid (w)
+! ************* main solver for the poroelastic elements: first the solid (u_s) then the fluid (w)
! ******************************************************************************************************************
if(any_poroelastic) then
More information about the CIG-COMMITS
mailing list