[cig-commits] r20809 - seismo/3D/FAULT_SOURCE/branches/new_fault_db/src
surendra at geodynamics.org
surendra at geodynamics.org
Sat Oct 6 11:53:16 PDT 2012
Author: surendra
Date: 2012-10-06 11:53:15 -0700 (Sat, 06 Oct 2012)
New Revision: 20809
Modified:
seismo/3D/FAULT_SOURCE/branches/new_fault_db/src/fault_solver.f90
seismo/3D/FAULT_SOURCE/branches/new_fault_db/src/prepare_timerun.f90
Log:
Added bulk velocities for Rate and State (vey specific to tpv102, not robust enough)
Modified: seismo/3D/FAULT_SOURCE/branches/new_fault_db/src/fault_solver.f90
===================================================================
--- seismo/3D/FAULT_SOURCE/branches/new_fault_db/src/fault_solver.f90 2012-10-06 15:27:33 UTC (rev 20808)
+++ seismo/3D/FAULT_SOURCE/branches/new_fault_db/src/fault_solver.f90 2012-10-06 18:53:15 UTC (rev 20809)
@@ -127,7 +127,7 @@
real(kind=CUSTOM_REAL), allocatable, save :: Kelvin_Voigt_eta(:)
public :: BC_DYNFLT_init, BC_DYNFLT_set3d_all, Kelvin_Voigt_eta, &
- SIMULATION_TYPE_DYN,PARALLEL_FAULT
+ SIMULATION_TYPE_DYN,PARALLEL_FAULT,RATE_AND_STATE
contains
@@ -139,13 +139,14 @@
! Minv inverse mass matrix
! dt global time step
!
-subroutine BC_DYNFLT_init(prname,Minv,DTglobal,nt,accel)
+subroutine BC_DYNFLT_init(prname,Minv,DTglobal,nt,accel,vel)
character(len=256), intent(in) :: prname ! 'proc***'
real(kind=CUSTOM_REAL), intent(in) :: Minv(:)
double precision, intent(in) :: DTglobal
integer, intent(in) :: nt
real(kind=CUSTOM_REAL) :: accel(:,:)
+ real(kind=CUSTOM_REAL), intent(inout) :: vel(:,:)
real(kind=CUSTOM_REAL) :: dt
integer :: iflt,ier,dummy_idfault
@@ -198,7 +199,7 @@
dt = real(DTglobal)
do iflt=1,nbfaults
read(IIN_PAR,nml=BEGIN_FAULT,end=100)
- call init_one_fault(faults(iflt),IIN_BIN,IIN_PAR,Minv,dt,nt,iflt,accel)
+ call init_one_fault(faults(iflt),IIN_BIN,IIN_PAR,Minv,dt,nt,vel,iflt,accel)
enddo
close(IIN_BIN)
close(IIN_PAR)
@@ -223,11 +224,13 @@
!---------------------------------------------------------------------
-subroutine init_one_fault(bc,IIN_BIN,IIN_PAR,Minv,dt_tmp,NT,iflt,accel)
+subroutine init_one_fault(bc,IIN_BIN,IIN_PAR,Minv,dt_tmp,NT,vel,iflt,accel)
use specfem_par
real(kind=CUSTOM_REAL) :: accel(:,:)
+ real(kind=CUSTOM_REAL), intent(inout) :: vel(:,:)
+
type(bc_dynflt_type), intent(inout) :: bc
real(kind=CUSTOM_REAL), intent(in) :: Minv(:)
integer, intent(in) :: IIN_BIN,IIN_PAR,NT,iflt
@@ -273,9 +276,10 @@
real(kind=CUSTOM_REAL) :: x,z
logical :: c1,c2,c3,c4
real(kind=CUSTOM_REAL) :: b11,b12,b21,b22,B1,B2
- integer iglob
+ integer iglob,nglob_bulk
double precision, dimension(:), allocatable :: mu1,mu2,mu3
+ real(kind=CUSTOM_REAL), dimension(:,:), allocatable :: init_vel
NAMELIST / INIT_STRESS / S1,S2,S3,n1,n2,n3
@@ -554,6 +558,16 @@
call init_2d_distribution(bc%rsf%C ,bc%coord,IIN_PAR,nC)
call init_2d_distribution(bc%rsf%T ,bc%coord,IIN_PAR,nForcedRup)
+ ! WARNING : Not general enough
+ nglob_bulk = size(vel,2)
+ allocate(init_vel(3,nglob_bulk))
+ init_vel = 0._CUSTOM_REAL
+ init_vel(1,bc%ibulk1) = -bc%rsf%V_init/2._CUSTOM_REAL
+ init_vel(1,bc%ibulk2) = bc%rsf%V_init/2._CUSTOM_REAL
+ where(ystore > 0) init_vel(1,:) = -V_init/2._CUSTOM_REAL
+ where(ystore < 0) init_vel(1,:) = V_init/2._CUSTOM_REAL
+ !init_vel = rotate(bc,init_vel,-1) ! directly assigned in global coordinates here as it is a simplified case
+ vel = vel + init_vel
W1=15000._CUSTOM_REAL
W2=7500._CUSTOM_REAL
Modified: seismo/3D/FAULT_SOURCE/branches/new_fault_db/src/prepare_timerun.f90
===================================================================
--- seismo/3D/FAULT_SOURCE/branches/new_fault_db/src/prepare_timerun.f90 2012-10-06 15:27:33 UTC (rev 20808)
+++ seismo/3D/FAULT_SOURCE/branches/new_fault_db/src/prepare_timerun.f90 2012-10-06 18:53:15 UTC (rev 20809)
@@ -114,8 +114,9 @@
! sets up mass matrices
call prepare_timerun_mass_matrices()
+veloc(:,:) = 0._CUSTOM_REAL
! Loading kinematic and dynamic fault solvers.
- call BC_DYNFLT_init(prname,rmass,DT,NSTEP,accel)
+ call BC_DYNFLT_init(prname,rmass,DT,NSTEP,accel,veloc)
call BC_KINFLT_init(prname,rmass,DT,NSTEP)
@@ -131,7 +132,7 @@
! initialize elastic arrays to zero/verysmallvall
if( ELASTIC_SIMULATION ) then
displ(:,:) = 0._CUSTOM_REAL
- veloc(:,:) = 0._CUSTOM_REAL
+ if(.not. RATE_AND_STATE) veloc(:,:) = 0._CUSTOM_REAL
accel(:,:) = 0._CUSTOM_REAL
! put negligible initial value to avoid very slow underflow trapping
if(FIX_UNDERFLOW_PROBLEM) displ(:,:) = VERYSMALLVAL
More information about the CIG-COMMITS
mailing list