[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