[cig-commits] r22623 - in seismo/3D/SPECFEM3D_GLOBE/trunk/src: shared specfem3D

dkomati1 at geodynamics.org dkomati1 at geodynamics.org
Mon Jul 15 19:11:54 PDT 2013


Author: dkomati1
Date: 2013-07-15 19:11:54 -0700 (Mon, 15 Jul 2013)
New Revision: 22623

Modified:
   seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/memory_eval.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part1_undo_att.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/specfem3D.F90
Log:
switched to static memory allocation for epsilondev() and eps_trace_over_3_crust_mantle(), and uncommented their memory size calculation in memory_eval()


Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/memory_eval.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/memory_eval.f90	2013-07-16 00:32:13 UTC (rev 22622)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/memory_eval.f90	2013-07-16 02:11:54 UTC (rev 22623)
@@ -337,18 +337,17 @@
 
 ! add arrays used to save strain for attenuation or for adjoint runs
 
-!! ZN ZN this has now been suppressed to save as much memory as possible to undo attenuation
 ! epsilondev_crust_mantle
-! static_memory_size = static_memory_size + 5.d0*dble(NGLLX)*dble(NGLLY)*dble(NGLLZ)*NSPEC_CRUST_MANTLE_STR_OR_ATT*dble(CUSTOM_REAL)
+  static_memory_size = static_memory_size + 5.d0*dble(NGLLX)*dble(NGLLY)*dble(NGLLZ)*NSPEC_CRUST_MANTLE_STR_OR_ATT*dble(CUSTOM_REAL)
 
 ! eps_trace_over_3_crust_mantle
-! static_memory_size = static_memory_size + dble(NGLLX)*dble(NGLLY)*dble(NGLLZ)*NSPEC_CRUST_MANTLE_STR_OR_ATT*dble(CUSTOM_REAL)
+  static_memory_size = static_memory_size + dble(NGLLX)*dble(NGLLY)*dble(NGLLZ)*NSPEC_CRUST_MANTLE_STR_OR_ATT*dble(CUSTOM_REAL)
 
 ! epsilondev_inner_core
-! static_memory_size = static_memory_size + 5.d0*dble(NGLLX)*dble(NGLLY)*dble(NGLLZ)*NSPEC_INNER_CORE_STR_OR_ATT*dble(CUSTOM_REAL)
+  static_memory_size = static_memory_size + 5.d0*dble(NGLLX)*dble(NGLLY)*dble(NGLLZ)*NSPEC_INNER_CORE_STR_OR_ATT*dble(CUSTOM_REAL)
 
 ! eps_trace_over_3_inner_core
-! static_memory_size = static_memory_size + dble(NGLLX)*dble(NGLLY)*dble(NGLLZ)*NSPEC_INNER_CORE_STR_OR_ATT*dble(CUSTOM_REAL)
+  static_memory_size = static_memory_size + dble(NGLLX)*dble(NGLLY)*dble(NGLLZ)*NSPEC_INNER_CORE_STR_OR_ATT*dble(CUSTOM_REAL)
 
 ! add arrays used for adjoint runs
 

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part1_undo_att.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part1_undo_att.f90	2013-07-16 00:32:13 UTC (rev 22622)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/part1_undo_att.f90	2013-07-16 02:11:54 UTC (rev 22623)
@@ -4,9 +4,9 @@
 !! DK DK it also handles the cases NOISE_TOMOGRAPHY == 1 and NOISE_TOMOGRAPHY == 2
 !! DK DK
 
-    ! Newmark time scheme update
+    ! Newmark or LDDRK time scheme update
 
-  do istage = 1, NSTAGE_TIME_SCHEME ! begin loop of istage
+  do istage = 1, NSTAGE_TIME_SCHEME ! is equal to 1 if Newmark because only one stage then
 
     if(USE_LDDRK)then
 

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/specfem3D.F90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/specfem3D.F90	2013-07-16 00:32:13 UTC (rev 22622)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/specfem3D.F90	2013-07-16 02:11:54 UTC (rev 22623)
@@ -393,16 +393,17 @@
   real(kind=CUSTOM_REAL), dimension(N_SLS,ATT1_VAL,ATT2_VAL,ATT3_VAL,ATT5_VAL) :: factor_common_inner_core
 
   real(kind=CUSTOM_REAL), dimension(5,N_SLS,NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE_ATTENUATION) :: R_memory_crust_mantle
-  real(kind=CUSTOM_REAL), dimension(:,:,:,:,:), allocatable :: epsilondev_crust_mantle
-  real(kind=CUSTOM_REAL), dimension(:,:,:,:), allocatable :: eps_trace_over_3_crust_mantle
+  real(kind=CUSTOM_REAL), dimension(5,N_SLS,NGLLX,NGLLY,NGLLZ,NSPEC_INNER_CORE_ATTENUATION) :: R_memory_inner_core
 
+  real(kind=CUSTOM_REAL), dimension(5,NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE_ATTENUATION) :: epsilondev_crust_mantle
+  real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE_ATTENUATION) :: eps_trace_over_3_crust_mantle
+
+  real(kind=CUSTOM_REAL), dimension(5,NGLLX,NGLLY,NGLLZ,NSPEC_INNER_CORE_ATTENUATION) :: epsilondev_inner_core
+  real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ,NSPEC_INNER_CORE_ATTENUATION) :: eps_trace_over_3_inner_core
+
   real(kind=CUSTOM_REAL), dimension(5,NGLLX,NGLLY,NGLLZ) :: epsilondev_loc_crust_mantle
   real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ) :: eps_trace_over_3_loc_crust_mantle
 
-  real(kind=CUSTOM_REAL), dimension(5,N_SLS,NGLLX,NGLLY,NGLLZ,NSPEC_INNER_CORE_ATTENUATION) :: R_memory_inner_core
-  real(kind=CUSTOM_REAL), dimension(:,:,:,:,:), allocatable :: epsilondev_inner_core
-  real(kind=CUSTOM_REAL), dimension(:,:,:,:), allocatable :: eps_trace_over_3_inner_core
-
 ! to save a significant amount of memory space, we equivalence these two arrays that are never used simultaneously
 ! (ibathy_topo is only used before the beginning of the time loop, while R_memory_crust_mantle is only used inside the time loop)
   equivalence(R_memory_crust_mantle,ibathy_topo)
@@ -1137,45 +1138,15 @@
 ! in exact undoing of attenuation
   undo_att_sim_type_3 = .false.
 
-! ZN if we want to storing the strain to acclerate the code but cost more memory then
-  if(ATTENUATION_VAL .and. COMPUTE_AND_STORE_STRAIN_VAL)then
-    allocate(epsilondev_crust_mantle(5,NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE_ATTENUATION),stat=ier)
-    if( ier /= 0 ) call exit_MPI(myrank,'error allocating epsilondev_crust_mantle')
-    allocate(eps_trace_over_3_crust_mantle(NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE_ATTENUATION),stat=ier)
-    if( ier /= 0 ) call exit_MPI(myrank,'error allocating eps_trace_over_3_crust_mantle')
-    allocate(epsilondev_inner_core(5,NGLLX,NGLLY,NGLLZ,NSPEC_INNER_CORE_ATTENUATION),stat=ier)
-    if( ier /= 0 ) call exit_MPI(myrank,'error allocating epsilondev_inner_core')
-    allocate(eps_trace_over_3_inner_core(NGLLX,NGLLY,NGLLZ,NSPEC_INNER_CORE_ATTENUATION),stat=ier)
-    if( ier /= 0 ) call exit_MPI(myrank,'error allocating eps_trace_over_3_inner_core')
-    epsilondev_crust_mantle(:,:,:,:,:) = 0._CUSTOM_REAL
-    eps_trace_over_3_crust_mantle(:,:,:,:) = 0._CUSTOM_REAL
-    epsilondev_inner_core(:,:,:,:,:) = 0._CUSTOM_REAL
-    eps_trace_over_3_inner_core(:,:,:,:) = 0._CUSTOM_REAL
-    if(FIX_UNDERFLOW_PROBLEM) then
-      epsilondev_crust_mantle(:,:,:,:,:) = VERYSMALLVAL
-      eps_trace_over_3_crust_mantle(:,:,:,:) = VERYSMALLVAL
-      epsilondev_inner_core(:,:,:,:,:) = VERYSMALLVAL
-      eps_trace_over_3_inner_core(:,:,:,:) = VERYSMALLVAL
-    endif
-  else
-    allocate(epsilondev_crust_mantle(5,NGLLX,NGLLY,NGLLZ,1),stat=ier)
-    if( ier /= 0 ) call exit_MPI(myrank,'error allocating epsilondev_crust_mantle')
-    allocate(eps_trace_over_3_crust_mantle(NGLLX,NGLLY,NGLLZ,1),stat=ier)
-    if( ier /= 0 ) call exit_MPI(myrank,'error allocating eps_trace_over_3_crust_mantle')
-    allocate(epsilondev_inner_core(5,NGLLX,NGLLY,NGLLZ,1),stat=ier)
-    if( ier /= 0 ) call exit_MPI(myrank,'error allocating epsilondev_inner_core')
-    allocate(eps_trace_over_3_inner_core(NGLLX,NGLLY,NGLLZ,1),stat=ier)
-    if( ier /= 0 ) call exit_MPI(myrank,'error allocating eps_trace_over_3_inner_core')
-    epsilondev_crust_mantle(:,:,:,:,:) = 0._CUSTOM_REAL
-    eps_trace_over_3_crust_mantle(:,:,:,:) = 0._CUSTOM_REAL
-    epsilondev_inner_core(:,:,:,:,:) = 0._CUSTOM_REAL
-    eps_trace_over_3_inner_core(:,:,:,:) = 0._CUSTOM_REAL
-    if(FIX_UNDERFLOW_PROBLEM) then
-      epsilondev_crust_mantle(:,:,:,:,:) = VERYSMALLVAL
-      eps_trace_over_3_crust_mantle(:,:,:,:) = VERYSMALLVAL
-      epsilondev_inner_core(:,:,:,:,:) = VERYSMALLVAL
-      eps_trace_over_3_inner_core(:,:,:,:) = VERYSMALLVAL
-    endif
+  epsilondev_crust_mantle(:,:,:,:,:) = 0._CUSTOM_REAL
+  eps_trace_over_3_crust_mantle(:,:,:,:) = 0._CUSTOM_REAL
+  epsilondev_inner_core(:,:,:,:,:) = 0._CUSTOM_REAL
+  eps_trace_over_3_inner_core(:,:,:,:) = 0._CUSTOM_REAL
+  if(FIX_UNDERFLOW_PROBLEM) then
+    epsilondev_crust_mantle(:,:,:,:,:) = VERYSMALLVAL
+    eps_trace_over_3_crust_mantle(:,:,:,:) = VERYSMALLVAL
+    epsilondev_inner_core(:,:,:,:,:) = VERYSMALLVAL
+    eps_trace_over_3_inner_core(:,:,:,:) = VERYSMALLVAL
   endif
 
 !



More information about the CIG-COMMITS mailing list