[cig-commits] [commit] master: multiply time step suggested by the mesher by an empirical factor (3dbeddb)
cig_noreply at geodynamics.org
cig_noreply at geodynamics.org
Mon Sep 29 04:23:54 PDT 2014
Repository : https://github.com/geodynamics/axisem
On branch : master
Link : https://github.com/geodynamics/axisem/compare/1231dadf6d0dc28f86000873a685f55c93956aea...3dbeddb239d17b94f5cc81665d84d7934837e868
>---------------------------------------------------------------
commit 3dbeddb239d17b94f5cc81665d84d7934837e868
Author: martinvandriel <martin at vandriel.de>
Date: Mon Sep 29 13:23:47 2014 +0200
multiply time step suggested by the mesher by an empirical factor
depending on the time scheme
>---------------------------------------------------------------
3dbeddb239d17b94f5cc81665d84d7934837e868
SOLVER/parameters.F90 | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/SOLVER/parameters.F90 b/SOLVER/parameters.F90
index 1f8fb79..9199a4e 100644
--- a/SOLVER/parameters.F90
+++ b/SOLVER/parameters.F90
@@ -799,9 +799,9 @@ subroutine compute_numerical_parameters
! Overwrite time step or source period if demanded by input
if (enforced_dt > zero) then
- if (time_scheme=='newmark2' .and. enforced_dt>deltat .or. &
- time_scheme=='symplec4' .and. enforced_dt>1.5*deltat .or. &
- time_scheme=='SS_35o10' .and. enforced_dt>3.0*deltat ) then
+ if (time_scheme == 'newmark2' .and. enforced_dt > deltat .or. &
+ time_scheme == 'symplec4' .and. enforced_dt > 1.5 * deltat .or. &
+ time_scheme == 'SS_35o10' .and. enforced_dt > 3.0 * deltat ) then
write(errmsg,*) &
'PROBLEM: Time step larger than allowed by mesh!\n', &
'Chosen value (in inparam file) [s] :', enforced_dt, '\n', &
@@ -818,6 +818,16 @@ subroutine compute_numerical_parameters
deltat = enforced_dt
endif
else
+ ! mesher suggestion is based on newmark scheme, the higher order schemes are stable
+ ! for longer time steps
+ select case (time_scheme)
+ case ('newmark')
+ deltat = deltat
+ case ('symplec4')
+ deltat = deltat * 1.5
+ case ('SS_35o10')
+ deltat = deltat * 3.0
+ end select
if (lpr .and. verbose > 1) then
write(6,'(/,a)')' Using time step precalculated by the mesher:',deltat
endif
More information about the CIG-COMMITS
mailing list