[cig-commits] [commit] devel: timestep and layers fix for asymmetric 1-chunk simulations (c4be8f6)
cig_noreply at geodynamics.org
cig_noreply at geodynamics.org
Tue Nov 25 06:56:16 PST 2014
Repository : https://github.com/geodynamics/specfem3d_globe
On branch : devel
Link : https://github.com/geodynamics/specfem3d_globe/compare/0e5b55c6f30be94583639fd325373eecd6facc6d...8be3e0b0267c8d4cf5af3bc26e8903da17bc4fd1
>---------------------------------------------------------------
commit c4be8f65455f6a0ed9644b3f0bfda2212e5a5b61
Author: daniel peter <peterda at ethz.ch>
Date: Thu Nov 13 09:44:22 2014 +0100
timestep and layers fix for asymmetric 1-chunk simulations
>---------------------------------------------------------------
c4be8f65455f6a0ed9644b3f0bfda2212e5a5b61
src/shared/get_timestep_and_layers.f90 | 38 +++++++++++++++++++++-------------
1 file changed, 24 insertions(+), 14 deletions(-)
diff --git a/src/shared/get_timestep_and_layers.f90 b/src/shared/get_timestep_and_layers.f90
index 701cb56..e2723dd 100644
--- a/src/shared/get_timestep_and_layers.f90
+++ b/src/shared/get_timestep_and_layers.f90
@@ -37,6 +37,7 @@
! local variables
integer :: multiplication_factor
+ double precision :: min_chunk_width_in_degrees
!----
!---- case prem_onecrust by default
@@ -347,26 +348,34 @@
endif
endif
+ ! minimum width of chunk
+ min_chunk_width_in_degrees = min(ANGULAR_WIDTH_XI_IN_DEGREES,ANGULAR_WIDTH_ETA_IN_DEGREES)
+
+ ! gets attenuation min/max range
if (.not. ATTENUATION_RANGE_PREDEFINED) then
- call auto_attenuation_periods(ANGULAR_WIDTH_XI_IN_DEGREES, NEX_MAX, &
- MIN_ATTENUATION_PERIOD, MAX_ATTENUATION_PERIOD)
+ call auto_attenuation_periods(min_chunk_width_in_degrees, NEX_MAX, &
+ MIN_ATTENUATION_PERIOD, MAX_ATTENUATION_PERIOD)
endif
+ ! adapts number of layer elements and time step size
if (ANGULAR_WIDTH_XI_IN_DEGREES < 90.0d0 .or. &
- ANGULAR_WIDTH_ETA_IN_DEGREES < 90.0d0 .or. &
- NEX_MAX > 1248) then
+ ANGULAR_WIDTH_ETA_IN_DEGREES < 90.0d0 .or. &
+ NEX_MAX > 1248) then
- call auto_ner(ANGULAR_WIDTH_XI_IN_DEGREES, NEX_MAX, &
- NER_CRUST, NER_80_MOHO, NER_220_80, NER_400_220, NER_600_400, &
- NER_670_600, NER_771_670, NER_TOPDDOUBLEPRIME_771, &
- NER_CMB_TOPDDOUBLEPRIME, NER_OUTER_CORE, NER_TOP_CENTRAL_CUBE_ICB, &
- R_CENTRAL_CUBE, CASE_3D, CRUSTAL, &
- HONOR_1D_SPHERICAL_MOHO, REFERENCE_1D_MODEL)
+ ! gets number of element-layers
+ call auto_ner(min_chunk_width_in_degrees, NEX_MAX, &
+ NER_CRUST, NER_80_MOHO, NER_220_80, NER_400_220, NER_600_400, &
+ NER_670_600, NER_771_670, NER_TOPDDOUBLEPRIME_771, &
+ NER_CMB_TOPDDOUBLEPRIME, NER_OUTER_CORE, NER_TOP_CENTRAL_CUBE_ICB, &
+ R_CENTRAL_CUBE, CASE_3D, CRUSTAL, &
+ HONOR_1D_SPHERICAL_MOHO, REFERENCE_1D_MODEL)
- call auto_attenuation_periods(ANGULAR_WIDTH_XI_IN_DEGREES, NEX_MAX, &
- MIN_ATTENUATION_PERIOD, MAX_ATTENUATION_PERIOD)
+ ! gets attenuation min/max range
+ call auto_attenuation_periods(min_chunk_width_in_degrees, NEX_MAX, &
+ MIN_ATTENUATION_PERIOD, MAX_ATTENUATION_PERIOD)
- call auto_time_stepping(ANGULAR_WIDTH_XI_IN_DEGREES, NEX_MAX, DT)
+ ! gets time step size
+ call auto_time_stepping(min_chunk_width_in_degrees, NEX_MAX, DT)
!! DK DK suppressed because this routine should not write anything to the screen
! write(*,*)'##############################################################'
@@ -376,7 +385,7 @@
! write(*,*)' This should only be invoked for chunks less than 90 degrees'
! write(*,*)' and for chunks greater than 1248 elements wide'
! write(*,*)
- ! write(*,*)'CHUNK WIDTH: ', ANGULAR_WIDTH_XI_IN_DEGREES
+ ! write(*,*)'CHUNK WIDTH: ', min_chunk_width_in_degrees
! write(*,*)'NEX: ', NEX_MAX
! write(*,*)'NER_CRUST: ', NER_CRUST
! write(*,*)'NER_80_MOHO: ', NER_80_MOHO
@@ -398,6 +407,7 @@
! write(*,*)
! write(*,*)'##############################################################'
+ ! checks minimum number of element-layers in crust
if (HONOR_1D_SPHERICAL_MOHO) then
if (.not. ONE_CRUST) then
! case 1D + two crustal layers
More information about the CIG-COMMITS
mailing list