[cig-commits] r12623 - in seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta: OUTPUT_FILES setup src
dkomati1 at geodynamics.org
dkomati1 at geodynamics.org
Tue Aug 12 18:29:39 PDT 2008
Author: dkomati1
Date: 2008-08-12 18:29:38 -0700 (Tue, 12 Aug 2008)
New Revision: 12623
Modified:
seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/OUTPUT_FILES/values_from_mesher.h
seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/setup/constants.h
seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/create_regions_mesh.F90
seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/memory_eval.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/model_1066a.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/model_ak135.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/model_iasp91.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/model_prem.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/model_ref.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/read_compute_parameters.F90
Log:
added temporary patch (called PATCH_TIKIR_PARTLY_RESTORE in constants.h) to allow for multiples of 8 instead of only 16 (to cut the mesh). We will do better later
with David (we need to debug the case of multiples of 8 cutting the superbrick in two).
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/OUTPUT_FILES/values_from_mesher.h
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/OUTPUT_FILES/values_from_mesher.h 2008-08-13 00:42:34 UTC (rev 12622)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/OUTPUT_FILES/values_from_mesher.h 2008-08-13 01:29:38 UTC (rev 12623)
@@ -6,68 +6,41 @@
! ---------------
!
!
- ! number of chunks = 1
+ ! number of chunks = 6
!
- ! these statistics do not include the central cube
+ ! these statistics include the central cube
!
- ! number of processors = 4
+ ! number of processors = 96
!
- ! maximum number of points per region = 509449
+ ! maximum number of points per region = 576013
!
! on NEC SX, make sure "loopcnt=" parameter
- ! in Makefile is greater than max vector length = 1528347
+ ! in Makefile is greater than max vector length = 1728039
!
- ! total elements per slice = 8336
- ! total points per slice = 560035
+ ! total elements per slice = 9616
+ ! total points per slice = 645095
!
! total for full 6-chunk mesh:
! ---------------------------
!
! exact total number of spectral elements in entire mesh =
- ! 200064.000000000
+ ! 902656.000000000
! approximate total number of points in entire mesh =
- ! 13440840.0000000
+ ! 60555995.0000000
! approximate total number of degrees of freedom in entire mesh =
- ! 38019240.0000000
+ ! 172454865.000000
!
- ! position of the mesh chunk at the surface:
- ! -----------------------------------------
- !
- ! angular size in first direction in degrees = 90.00000
- ! angular size in second direction in degrees = 90.00000
- !
- ! longitude of center in degrees = 0.0000000E+00
- ! latitude of center in degrees = 90.00000
- !
- ! angle of rotation of the first chunk = 0.0000000E+00
- !
- ! corner 1
- ! longitude in degrees = -45.0000000000000
- ! latitude in degrees = 35.4465752495873
- !
- ! corner 2
- ! longitude in degrees = 45.0000000000000
- ! latitude in degrees = 35.4465752495873
- !
- ! corner 3
- ! longitude in degrees = -135.000000000000
- ! latitude in degrees = 35.4465752495873
- !
- ! corner 4
- ! longitude in degrees = 135.000000000000
- ! latitude in degrees = 35.4465752495873
- !
! resolution of the mesh at the surface:
! -------------------------------------
!
- ! spectral elements along a great circle = 256
- ! GLL points along a great circle = 1024
- ! average distance between points in degrees = 0.3515625
- ! average distance between points in km = 39.09196
- ! average size of a spectral element in km = 156.3679
+ ! spectral elements along a great circle = 512
+ ! GLL points along a great circle = 2048
+ ! average distance between points in degrees = 0.1757812
+ ! average distance between points in km = 19.54598
+ ! average size of a spectral element in km = 78.18393
!
- ! number of time steps = 6300
- ! value of a time step DT = 0.239400000000000
+ ! number of time steps = 7600
+ ! value of a time step DT = 0.200000000000000
!
! number of seismic sources = 1
!
@@ -75,7 +48,7 @@
! approximate static memory needed by the solver:
! ----------------------------------------------
!
- ! size of static arrays per slice = 7.561429217457771E-002 GB
+ ! size of static arrays per slice = 0.178467992693186 GB
!
! (should be below and typically equal to 80% of 1.5 GB = 1.2 GB on pangu
! at Caltech, and below and typically equal to 85% of 2 GB = 1.7 GB
@@ -83,32 +56,32 @@
! (if significantly more, the job will not run by lack of memory)
! (if significantly less, you waste a significant amount of memory)
!
- ! size of static arrays for all slices = 0.302457168698311 GB
- ! = 2.953683288069442E-004 TB
+ ! size of static arrays for all slices = 17.1329272985458 GB
+ ! = 1.673137431498617E-002 TB
!
- integer, parameter :: NEX_XI_VAL = 64
- integer, parameter :: NEX_ETA_VAL = 64
+ integer, parameter :: NEX_XI_VAL = 128
+ integer, parameter :: NEX_ETA_VAL = 128
- integer, parameter :: NSPEC_CRUST_MANTLE = 7616
+ integer, parameter :: NSPEC_CRUST_MANTLE = 8640
integer, parameter :: NSPEC_OUTER_CORE = 688
- integer, parameter :: NSPEC_INNER_CORE = 32
+ integer, parameter :: NSPEC_INNER_CORE = 288
- integer, parameter :: NGLOB_CRUST_MANTLE = 509449
+ integer, parameter :: NGLOB_CRUST_MANTLE = 576013
integer, parameter :: NGLOB_OUTER_CORE = 47985
- integer, parameter :: NGLOB_INNER_CORE = 2601
+ integer, parameter :: NGLOB_INNER_CORE = 21097
integer, parameter :: NSPECMAX_ANISO_IC = 1
- integer, parameter :: NSPECMAX_ISO_MANTLE = 7616
+ integer, parameter :: NSPECMAX_ISO_MANTLE = 8640
integer, parameter :: NSPECMAX_TISO_MANTLE = 2304
integer, parameter :: NSPECMAX_ANISO_MANTLE = 1
- integer, parameter :: NSPEC_CRUST_MANTLE_ATTENUAT = 1
- integer, parameter :: NSPEC_INNER_CORE_ATTENUATION = 1
+ integer, parameter :: NSPEC_CRUST_MANTLE_ATTENUAT = 8640
+ integer, parameter :: NSPEC_INNER_CORE_ATTENUATION = 288
- integer, parameter :: NSPEC_CRUST_MANTLE_STR_OR_ATT = 1
- integer, parameter :: NSPEC_INNER_CORE_STR_OR_ATT = 1
+ integer, parameter :: NSPEC_CRUST_MANTLE_STR_OR_ATT = 8640
+ integer, parameter :: NSPEC_INNER_CORE_STR_OR_ATT = 288
integer, parameter :: NSPEC_CRUST_MANTLE_STR_AND_ATT = 1
integer, parameter :: NSPEC_INNER_CORE_STR_AND_ATT = 1
@@ -127,7 +100,7 @@
integer, parameter :: NSPEC_CRUST_MANTLE_STACEY = 1
integer, parameter :: NSPEC_OUTER_CORE_STACEY = 1
- integer, parameter :: NGLOB_CRUST_MANTLE_OCEANS = 1
+ integer, parameter :: NGLOB_CRUST_MANTLE_OCEANS = 576013
logical, parameter :: TRANSVERSE_ISOTROPY_VAL = .true.
@@ -135,7 +108,7 @@
logical, parameter :: ANISOTROPIC_INNER_CORE_VAL = .false.
- logical, parameter :: ATTENUATION_VAL = .false.
+ logical, parameter :: ATTENUATION_VAL = .true.
logical, parameter :: ATTENUATION_3D_VAL = .false.
@@ -146,35 +119,35 @@
logical, parameter :: ROTATION_VAL = .false.
integer, parameter :: NSPEC_OUTER_CORE_ROTATION = 1
- integer, parameter :: NGLOB1D_RADIAL_CM = 105
+ integer, parameter :: NGLOB1D_RADIAL_CM = 109
integer, parameter :: NGLOB1D_RADIAL_OC = 65
integer, parameter :: NGLOB1D_RADIAL_IC = 9
- integer, parameter :: NGLOB2DMAX_XMIN_XMAX_CM = 7934
+ integer, parameter :: NGLOB2DMAX_XMIN_XMAX_CM = 8574
integer, parameter :: NGLOB2DMAX_XMIN_XMAX_OC = 2134
- integer, parameter :: NGLOB2DMAX_XMIN_XMAX_IC = 178
- integer, parameter :: NGLOB2DMAX_YMIN_YMAX_CM = 7934
+ integer, parameter :: NGLOB2DMAX_XMIN_XMAX_IC = 1283
+ integer, parameter :: NGLOB2DMAX_YMIN_YMAX_CM = 8574
integer, parameter :: NGLOB2DMAX_YMIN_YMAX_OC = 2134
- integer, parameter :: NGLOB2DMAX_YMIN_YMAX_IC = 178
- integer, parameter :: NPROC_XI_VAL = 2
- integer, parameter :: NPROC_ETA_VAL = 2
- integer, parameter :: NCHUNKS_VAL = 1
- integer, parameter :: NPROCTOT_VAL = 4
- integer, parameter :: NGLOB2DMAX_XY_VAL_CM = 7934
+ integer, parameter :: NGLOB2DMAX_YMIN_YMAX_IC = 1283
+ integer, parameter :: NPROC_XI_VAL = 4
+ integer, parameter :: NPROC_ETA_VAL = 4
+ integer, parameter :: NCHUNKS_VAL = 6
+ integer, parameter :: NPROCTOT_VAL = 96
+ integer, parameter :: NGLOB2DMAX_XY_VAL_CM = 8574
integer, parameter :: NGLOB2DMAX_XY_VAL_OC = 2134
- integer, parameter :: NGLOB2DMAX_XY_VAL_IC = 178
- integer, parameter :: NUMMSGS_FACES_VAL = 2
- integer, parameter :: NCORNERSCHUNKS_VAL = 1
+ integer, parameter :: NGLOB2DMAX_XY_VAL_IC = 1283
+ integer, parameter :: NUMMSGS_FACES_VAL = 48
+ integer, parameter :: NCORNERSCHUNKS_VAL = 8
integer, parameter :: ATT1 = 1
integer, parameter :: ATT2 = 1
integer, parameter :: ATT3 = 1
- integer, parameter :: ATT4 = 1
- integer, parameter :: ATT5 = 1
- integer, parameter :: NSPEC2DMAX_XMIN_XMAX_CM = 408
- integer, parameter :: NSPEC2DMAX_YMIN_YMAX_CM = 408
+ integer, parameter :: ATT4 = 70000
+ integer, parameter :: ATT5 = 70000
+ integer, parameter :: NSPEC2DMAX_XMIN_XMAX_CM = 440
+ integer, parameter :: NSPEC2DMAX_YMIN_YMAX_CM = 440
integer, parameter :: NSPEC2D_BOTTOM_CM = 64
integer, parameter :: NSPEC2D_TOP_CM = 1024
- integer, parameter :: NSPEC2DMAX_XMIN_XMAX_IC = 8
- integer, parameter :: NSPEC2DMAX_YMIN_YMAX_IC = 8
+ integer, parameter :: NSPEC2DMAX_XMIN_XMAX_IC = 72
+ integer, parameter :: NSPEC2DMAX_YMIN_YMAX_IC = 72
integer, parameter :: NSPEC2D_BOTTOM_IC = 16
integer, parameter :: NSPEC2D_TOP_IC = 16
integer, parameter :: NSPEC2DMAX_XMIN_XMAX_OC = 100
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/setup/constants.h
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/setup/constants.h 2008-08-13 00:42:34 UTC (rev 12622)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/setup/constants.h 2008-08-13 01:29:38 UTC (rev 12623)
@@ -446,6 +446,8 @@
! to suppress the crustal layers (replaced by an extension of the mantle: R_EARTH is not modified, but no more crustal doubling)
logical, parameter :: SUPPRESS_CRUSTAL_MESH = .false.
+!! DK DK temporary patch to cut in multiples of 8 instead of 16; will do better later
+ logical, parameter :: PATCH_TIKIR_PARTLY_RESTORE = .false.
! to add a fourth doubling at the bottom of the outer core
logical, parameter :: ADD_4TH_DOUBLING = .false.
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/create_regions_mesh.F90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/create_regions_mesh.F90 2008-08-13 00:42:34 UTC (rev 12622)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/create_regions_mesh.F90 2008-08-13 01:29:38 UTC (rev 12623)
@@ -793,7 +793,7 @@
if (ilayer == 1 .and. CASE_3D .and. .not. SUPPRESS_CRUSTAL_MESH) then
! crustal elements are stretched to be thinner in the upper crust than in lower crust in the 3D case
! max ratio between size of upper crust elements and lower crust elements is given by the param MAX_RATIO_STRETCHING
-! to avoid stretching, set MAX_RATIO_STRETCHING = 1.0d in constants.h
+! to avoid stretching, set MAX_RATIO_STRETCHING = 1.d0 in constants.h
call compute_coord_main_mesh(offset_x,offset_y,offset_z,xelm,yelm,zelm, &
ANGULAR_WIDTH_XI_RAD,ANGULAR_WIDTH_ETA_RAD,iproc_xi,iproc_eta, &
NPROC_XI,NPROC_ETA,NEX_PER_PROC_XI,NEX_PER_PROC_ETA, &
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/memory_eval.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/memory_eval.f90 2008-08-13 00:42:34 UTC (rev 12622)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/memory_eval.f90 2008-08-13 01:29:38 UTC (rev 12623)
@@ -62,7 +62,7 @@
double precision, intent(out) :: static_memory_size
! variables
- integer :: ilayer,NUMBER_OF_MESH_LAYERS,ner_without_doubling,ispec_aniso
+ integer :: ilayer,NUMBER_OF_MESH_LAYERS,ner_without_doubling,nspec_tiso
integer, intent(out) :: NSPECMAX_ANISO_IC,NSPECMAX_ISO_MANTLE,NSPECMAX_TISO_MANTLE, &
NSPECMAX_ANISO_MANTLE,NSPEC_CRUST_MANTLE_ATTENUAT, &
@@ -78,8 +78,6 @@
NGLOB_CRUST_MANTLE_OCEANS,NSPEC_OUTER_CORE_ROTATION
! generate the elements in all the regions of the mesh
- ispec_aniso = 0
-
if (ONE_CRUST) then
NUMBER_OF_MESH_LAYERS = MAX_NUMBER_OF_MESH_LAYERS - 1
else
@@ -87,19 +85,25 @@
endif
! count anisotropic elements
+ nspec_tiso = 0
do ilayer = 1, NUMBER_OF_MESH_LAYERS
if(doubling_index(ilayer) == IFLAG_220_80 .or. doubling_index(ilayer) == IFLAG_80_MOHO) then
ner_without_doubling = ner(ilayer)
if(this_layer_has_a_doubling(ilayer)) then
ner_without_doubling = ner_without_doubling - 2
- ispec_aniso = ispec_aniso + &
+ nspec_tiso = nspec_tiso + &
(NSPEC_DOUBLING_SUPERBRICK*(NEX_PER_PROC_XI/ratio_sampling_array(ilayer)/2)* &
(NEX_PER_PROC_ETA/ratio_sampling_array(ilayer)/2))
endif
- ispec_aniso = ispec_aniso + &
+ nspec_tiso = nspec_tiso + &
((NEX_PER_PROC_XI/ratio_sampling_array(ilayer))*(NEX_PER_PROC_ETA/ratio_sampling_array(ilayer))*ner_without_doubling)
endif
enddo
+!! DK DK the above code by David is incorrect when SUPPRESS_CRUSTAL_MESH = .true.
+!! DK DK therefore apply a temporary patch for now
+!! DK DK we should fix the above code later
+!! DK DK temporary patch to cut in multiples of 8 instead of 16; will do better later
+ if(SUPPRESS_CRUSTAL_MESH .and. PATCH_TIKIR_PARTLY_RESTORE) nspec_tiso = NSPEC(IREGION_CRUST_MANTLE)
! define static size of the arrays whose size depends on logical tests
@@ -117,7 +121,7 @@
NSPECMAX_ISO_MANTLE = NSPEC(IREGION_CRUST_MANTLE)
if(TRANSVERSE_ISOTROPY) then
- NSPECMAX_TISO_MANTLE = ispec_aniso
+ NSPECMAX_TISO_MANTLE = nspec_tiso
else
NSPECMAX_TISO_MANTLE = 1
endif
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/model_1066a.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/model_1066a.f90 2008-08-13 00:42:34 UTC (rev 12622)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/model_1066a.f90 2008-08-13 01:29:38 UTC (rev 12623)
@@ -788,7 +788,7 @@
M1066a_V%vs_1066a(159) = 2.58140000000000
M1066a_V%vs_1066a(160) = 2.58220000000000
- if (SUPPRESS_CRUSTAL_MESH) then
+ if (SUPPRESS_CRUSTAL_MESH .and. .not. PATCH_TIKIR_PARTLY_RESTORE) then
M1066a_V%vp_1066a(158:160) = M1066a_V%vp_1066a(157)
M1066a_V%vs_1066a(158:160) = M1066a_V%vs_1066a(157)
M1066a_V%density_1066a(158:160) = M1066a_V%density_1066a(157)
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/model_ak135.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/model_ak135.f90 2008-08-13 00:42:34 UTC (rev 12622)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/model_ak135.f90 2008-08-13 01:29:38 UTC (rev 12623)
@@ -727,7 +727,7 @@
Mak135_V%vs_ak135(143) = 3.20000000000000
Mak135_V%vs_ak135(144) = 3.20000000000000
- if (SUPPRESS_CRUSTAL_MESH) then
+ if (SUPPRESS_CRUSTAL_MESH .and. .not. PATCH_TIKIR_PARTLY_RESTORE) then
Mak135_V%vp_ak135(137:144) = Mak135_V%vp_ak135(136)
Mak135_V%vs_ak135(137:144) = Mak135_V%vs_ak135(136)
Mak135_V%density_ak135(137:144) = Mak135_V%density_ak135(136)
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/model_iasp91.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/model_iasp91.f90 2008-08-13 00:42:34 UTC (rev 12622)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/model_iasp91.f90 2008-08-13 01:29:38 UTC (rev 12623)
@@ -186,7 +186,7 @@
Qmu=600.0d0
Qkappa=57827.0d0
- else if (SUPPRESS_CRUSTAL_MESH) then
+ else if (SUPPRESS_CRUSTAL_MESH .and. .not. PATCH_TIKIR_PARTLY_RESTORE) then
!! DK DK extend the Moho up to the surface instead of the crust
vp = 8.78541d0-0.74953d0*(RMOHO / R_EARTH)
vs = 6.706231d0-2.248585d0*(RMOHO / R_EARTH)
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/model_prem.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/model_prem.f90 2008-08-13 00:42:34 UTC (rev 12622)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/model_prem.f90 2008-08-13 01:29:38 UTC (rev 12623)
@@ -180,7 +180,7 @@
Qmu=80.0d0
Qkappa=57827.0d0
else
- if(CRUSTAL .and. .not. SUPPRESS_CRUSTAL_MESH) then
+ if(CRUSTAL .and. (.not. SUPPRESS_CRUSTAL_MESH .or. PATCH_TIKIR_PARTLY_RESTORE)) then
! fill with PREM mantle and later add CRUST2.0
if(r > R80) then
drhodr=0.6924d0
@@ -201,7 +201,7 @@
Qkappa=57827.0d0
- else if (SUPPRESS_CRUSTAL_MESH) then
+ else if (SUPPRESS_CRUSTAL_MESH .and. .not. PATCH_TIKIR_PARTLY_RESTORE) then
!! DK DK extend the Moho up to the surface instead of the crust
drhodr=0.6924d0
rho = 2.6910d0+0.6924d0*(RMOHO / R_EARTH)
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/model_ref.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/model_ref.f90 2008-08-13 00:42:34 UTC (rev 12622)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/model_ref.f90 2008-08-13 01:29:38 UTC (rev 12623)
@@ -7361,7 +7361,7 @@
1.00000000000000 , &
1.00000000000000 /)
- if (SUPPRESS_CRUSTAL_MESH) then
+ if (SUPPRESS_CRUSTAL_MESH .and. .not. PATCH_TIKIR_PARTLY_RESTORE) then
Mref_V%density_ref(718:750) = Mref_V%density_ref(717)
Mref_V%vpv_ref(718:750) = Mref_V%vpv_ref(717)
Mref_V%vph_ref(718:750) = Mref_V%vph_ref(717)
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/read_compute_parameters.F90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/read_compute_parameters.F90 2008-08-13 00:42:34 UTC (rev 12622)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/read_compute_parameters.F90 2008-08-13 01:29:38 UTC (rev 12623)
@@ -1114,36 +1114,50 @@
if(NEX_ETA < 48) stop 'NEX_ETA must be greater than 48 to cut the sphere into slices with positive Jacobian'
! check that mesh can be coarsened in depth three or four times
- CUT_SUPERBRICK_XI=.false.
- CUT_SUPERBRICK_ETA=.false.
+ CUT_SUPERBRICK_XI = .false.
+ CUT_SUPERBRICK_ETA = .false.
+!! DK DK temporary patch
+ if(PATCH_TIKIR_PARTLY_RESTORE .and. .not. SUPPRESS_CRUSTAL_MESH) &
+ stop 'temporary patch: must set SUPPRESS_CRUSTAL_MESH = .true. if PATCH_TIKIR_PARTLY_RESTORE = .true.'
+
if (SUPPRESS_CRUSTAL_MESH .and. .not. ADD_4TH_DOUBLING) then
+
if(mod(NEX_XI,8) /= 0) stop 'NEX_XI must be a multiple of 8'
if(mod(NEX_ETA,8) /= 0) stop 'NEX_ETA must be a multiple of 8'
+!! DK DK temporary patch
+ if(PATCH_TIKIR_PARTLY_RESTORE) then
+ if(mod(NEX_XI/8,NPROC_XI) /= 0) stop 'NEX_XI must be a multiple of 8*NPROC_XI'
+ if(mod(NEX_ETA/8,NPROC_ETA) /= 0) stop 'NEX_ETA must be a multiple of 8*NPROC_ETA'
+ else
if(mod(NEX_XI/4,NPROC_XI) /= 0) stop 'NEX_XI must be a multiple of 4*NPROC_XI'
if(mod(NEX_ETA/4,NPROC_ETA) /= 0) stop 'NEX_ETA must be a multiple of 4*NPROC_ETA'
- if(mod(NEX_XI/8,NPROC_XI) /=0) CUT_SUPERBRICK_XI = .true.
- if(mod(NEX_ETA/8,NPROC_ETA) /=0) CUT_SUPERBRICK_ETA = .true.
- elseif (SUPPRESS_CRUSTAL_MESH .or. .not. ADD_4TH_DOUBLING) then
+ if(mod(NEX_XI/8,NPROC_XI) /= 0) CUT_SUPERBRICK_XI = .true.
+ if(mod(NEX_ETA/8,NPROC_ETA) /= 0) CUT_SUPERBRICK_ETA = .true.
+ endif
+
+ else if (SUPPRESS_CRUSTAL_MESH .or. .not. ADD_4TH_DOUBLING) then
+
if(mod(NEX_XI,16) /= 0) stop 'NEX_XI must be a multiple of 16'
if(mod(NEX_ETA,16) /= 0) stop 'NEX_ETA must be a multiple of 16'
if(mod(NEX_XI/8,NPROC_XI) /= 0) stop 'NEX_XI must be a multiple of 8*NPROC_XI'
if(mod(NEX_ETA/8,NPROC_ETA) /= 0) stop 'NEX_ETA must be a multiple of 8*NPROC_ETA'
- if(mod(NEX_XI/16,NPROC_XI) /=0) CUT_SUPERBRICK_XI = .true.
- if(mod(NEX_ETA/16,NPROC_ETA) /=0) CUT_SUPERBRICK_ETA = .true.
+ if(mod(NEX_XI/16,NPROC_XI) /= 0) CUT_SUPERBRICK_XI = .true.
+ if(mod(NEX_ETA/16,NPROC_ETA) /= 0) CUT_SUPERBRICK_ETA = .true.
!! DK DK added this because of temporary bug in David's code
- if(mod(NEX_XI/16,NPROC_XI) /=0) &
+ if(mod(NEX_XI/16,NPROC_XI) /= 0) &
stop 'NEX_XI multiple of 8*NPROC_XI but not of 16*NPROC_XI is currently unsafe'
- if(mod(NEX_ETA/16,NPROC_ETA) /=0) &
+ if(mod(NEX_ETA/16,NPROC_ETA) /= 0) &
stop 'NEX_ETA multiple of 8*NPROC_ETA but not of 16*NPROC_ETA is currently unsafe'
!! DK DK added this because of temporary bug in David's code
else
+
if(mod(NEX_XI,32) /= 0) stop 'NEX_XI must be a multiple of 32'
if(mod(NEX_ETA,32) /= 0) stop 'NEX_ETA must be a multiple of 32'
if(mod(NEX_XI/16,NPROC_XI) /= 0) stop 'NEX_XI must be a multiple of 16*NPROC_XI'
if(mod(NEX_ETA/16,NPROC_ETA) /= 0) stop 'NEX_ETA must be a multiple of 16*NPROC_ETA'
- if(mod(NEX_XI/32,NPROC_XI) /=0) CUT_SUPERBRICK_XI = .true.
- if(mod(NEX_ETA/32,NPROC_ETA) /=0) CUT_SUPERBRICK_ETA = .true.
+ if(mod(NEX_XI/32,NPROC_XI) /= 0) CUT_SUPERBRICK_XI = .true.
+ if(mod(NEX_ETA/32,NPROC_ETA) /= 0) CUT_SUPERBRICK_ETA = .true.
endif
! check that topology is correct if more than two chunks
More information about the cig-commits
mailing list