[cig-commits] r19359 - in seismo/3D/FAULT_SOURCE/branches/new_fault_db: . utils
ampuero at geodynamics.org
ampuero at geodynamics.org
Fri Jan 13 17:49:17 PST 2012
Author: ampuero
Date: 2012-01-13 17:49:16 -0800 (Fri, 13 Jan 2012)
New Revision: 19359
Added:
seismo/3D/FAULT_SOURCE/branches/new_fault_db/utils/
seismo/3D/FAULT_SOURCE/branches/new_fault_db/utils/critical_timestep.m
Modified:
seismo/3D/FAULT_SOURCE/branches/new_fault_db/README_SPECFEM3D_FAULT
Log:
doc Kelvin Voigt viscosity
Modified: seismo/3D/FAULT_SOURCE/branches/new_fault_db/README_SPECFEM3D_FAULT
===================================================================
--- seismo/3D/FAULT_SOURCE/branches/new_fault_db/README_SPECFEM3D_FAULT 2012-01-13 22:57:20 UTC (rev 19358)
+++ seismo/3D/FAULT_SOURCE/branches/new_fault_db/README_SPECFEM3D_FAULT 2012-01-14 01:49:16 UTC (rev 19359)
@@ -187,7 +187,7 @@
has a strict format:
Line 1: Number of faults (NF)
- Lines 2 to NF+1: Kelvin Voigt damping (in seconds) for each fault.
+ 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/FAULT_STATIONS), usually a large number (100s or 1000s).
@@ -262,7 +262,31 @@
sets a constant value (val) within a sphere with center (xc,yc,zc) and radius r.
+Note: How to set the Kelvin-Voigt damping parameter:
+ The purpose of the Kelvin-Voigt viscosity is to damp spurious oscillations
+ generated by the fault slip at frequencies that are too high to be resolved by the mesh.
+ The viscosity "eta" (in seconds) depends on the size of the elements on the fault.
+ Let "h_fault" be the average linear size of the elements on the fault plane (they usually have similar size).
+ Eta must be a small fraction of the critical time step in an elastic medium
+ for a (hypothetical) element of cubic shape with size equal to h_fault.
+ This (hypothetical) timestep value "dtc_fault" must be computed before simulation
+ using the matlab function utils/critical_timestep.m
+ Note that in general the critical timestep "dtc_bulk" of the whole simulation is smaller,
+ because elements off the fault might be smaller or more distorted than element faces on the fault.
+ Set eta in Par_file_faults equal to (0.1 to 0.3)*critical_timestep(cp,h,ngll) .
+ A larger eta damps high-frequencies more aggresively but also affects lower frequencies
+ and affects rupture speed.
+ Warning: viscosity degrades numerical stability:
+ The critical timestep in a viscous simulation needs to be smaller than what
+ you would usually expect in a purely elastic simulation.
+ The critical timestep for a Kelvin-Voigt material is
+ dtc_kv = eta*( sqrt(1+dtc_bulk^2/eta^2)-1 )
+ where dtc_bulk is the critical timestep for a purely elastic medium.
+ To get the value of dtc_bulk, first run a test simulation with eta=0,
+ and look for the "maximum suggested time step" in OUTPUT_FILES/output_mesher.txt.
+
+
DATA/FAULT/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
Added: seismo/3D/FAULT_SOURCE/branches/new_fault_db/utils/critical_timestep.m
===================================================================
--- seismo/3D/FAULT_SOURCE/branches/new_fault_db/utils/critical_timestep.m (rev 0)
+++ seismo/3D/FAULT_SOURCE/branches/new_fault_db/utils/critical_timestep.m 2012-01-14 01:49:16 UTC (rev 19359)
@@ -0,0 +1,31 @@
+% CRITICAL_TIMESTEP Computes the critical timestep in 3D, assuming:
+% purely elastic medium
+% the leapfrog time scheme
+% a cube element (same size for all faces)
+%
+% SYNTAX dtc = critical_timestep(csp,h,ngll)
+%
+% INPUT cp P wave speed (in m/s)
+% h element size (in m)
+% ngll number of GLL nodes per spectral element edge (2 to 20)
+%
+% OUTPUT dtc critical timestep
+%
+function dtc = critical_timestep(csp,h,ngll)
+
+DIM = 3; % dimension
+
+if ngll<2 | ngll>20, error('ngll must be from 2 to 20'); end
+
+% tabulated values of critical frequency (non-dimensional, 1D)
+% Omega_max(p) = Omega_max(ngll-1)
+Omega_max = [2.0000000e+00 4.8989795e+00 8.6203822e+00 1.3540623e+01 1.9797952e+01 2.7378050e+01 ...
+ 3.6256848e+01 4.6421894e+01 5.7867306e+01 7.0590158e+01 8.4588883e+01 9.9862585e+01 ...
+ 1.1641072e+02 1.3423295e+02 1.5332903e+02 1.7369883e+02 1.9534221e+02 2.1825912e+02 2.4244948e+02];
+
+% stability factor por leapfrog timescheme
+C = 2;
+
+% critical time step,
+% assumes a cube element
+dtc = C*h/csp/sqrt(DIM)/Omega_max(ngll-1);
More information about the CIG-COMMITS
mailing list