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

dkomati1 at geodynamics.org dkomati1 at geodynamics.org
Sat Aug 3 16:51:07 PDT 2013


Author: dkomati1
Date: 2013-08-03 16:51:06 -0700 (Sat, 03 Aug 2013)
New Revision: 22694

Modified:
   seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/create_mass_matrices.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/create_regions_mesh.F90
   seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/save_arrays_solver.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/memory_eval.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/save_header_file.F90
   seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/prepare_timerun.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/read_arrays_solver.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/read_mesh_databases.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/specfem3D.F90
Log:
fixed the bug detected by Min Chen about NGLOB_XY_CM_BACKWARD and NGLOB_XY_IC_BACKWARD that were not correct for EXACT_MASS_MATRIX_FOR_ROTATION if the code was not recompiled and the mesher rerun when switching from SIMULATION_TYPE == 1 to SIMULATION_TYPE == 3


Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/create_mass_matrices.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/create_mass_matrices.f90	2013-08-01 15:35:56 UTC (rev 22693)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/create_mass_matrices.f90	2013-08-03 23:51:06 UTC (rev 22694)
@@ -42,7 +42,7 @@
                           jacobian2D_xmin,jacobian2D_xmax,jacobian2D_ymin,jacobian2D_ymax, &
                           jacobian2D_bottom,jacobian2D_top,&
                           SIMULATION_TYPE,EXACT_MASS_MATRIX_FOR_ROTATION,USE_LDDRK,&
-                          nglob_xy_backward,b_rmassx,b_rmassy)
+                          b_rmassx,b_rmassy)
 
   ! creates rmassx, rmassy, rmassz and rmass_ocean_load
 
@@ -69,10 +69,9 @@
   real(kind=CUSTOM_REAL), dimension(nglob)    :: rmassz
   real(kind=CUSTOM_REAL) :: two_omega_earth,scale_t_inv
 
-  ! mass matrices for backward simulation when SIMULATION_TYPE =3 and ROTATION is .true.
-  integer :: nglob_xy_backward
+  ! mass matrices for backward simulation when ROTATION is .true.
   logical :: EXACT_MASS_MATRIX_FOR_ROTATION,USE_LDDRK
-  real(kind=CUSTOM_REAL), dimension(nglob_xy_backward) :: b_rmassx,b_rmassy
+  real(kind=CUSTOM_REAL), dimension(nglob_xy) :: b_rmassx,b_rmassy
   real(kind=CUSTOM_REAL) :: b_two_omega_earth
 
   real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ,nspec) :: rhostore,kappavstore

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/create_regions_mesh.F90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/create_regions_mesh.F90	2013-08-01 15:35:56 UTC (rev 22693)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/create_regions_mesh.F90	2013-08-03 23:51:06 UTC (rev 22694)
@@ -163,8 +163,8 @@
   real(kind=CUSTOM_REAL), dimension(:), allocatable :: rmassx,rmassy,rmassz
   integer :: nglob_xy
 
-  ! mass matrices for backward simulation when SIMULATION_TYPE =3 and ROTATION is .true.
-  integer :: SIMULATION_TYPE,nglob_xy_backward
+  ! mass matrices for backward simulation when ROTATION is .true.
+  integer :: SIMULATION_TYPE
   logical :: EXACT_MASS_MATRIX_FOR_ROTATION,USE_LDDRK
   real(kind=CUSTOM_REAL), dimension(:), allocatable :: b_rmassx,b_rmassy
 
@@ -983,7 +983,6 @@
     ! if absorbing_conditions are not set or if NCHUNKS=6, only one mass matrix is needed
     ! for the sake of performance, only "rmassz" array will be filled and "rmassx" & "rmassy" will be obsolete
     nglob_xy = 1
-    nglob_xy_backward = 1
 
     if(NCHUNKS /= 6 .and. ABSORBING_CONDITIONS .and. (.not. USE_LDDRK)) then
        select case(iregion_code)
@@ -996,7 +995,7 @@
        nglob_xy = 1
     endif
 
-    if(SIMULATION_TYPE /=3  .and. (.not. USE_LDDRK))then
+    if(.not. USE_LDDRK)then
       if(ROTATION .and. EXACT_MASS_MATRIX_FOR_ROTATION)then
         select case(iregion_code)
         case( IREGION_CRUST_MANTLE,IREGION_INNER_CORE )
@@ -1007,19 +1006,6 @@
       endif
     endif
 
-    if(SIMULATION_TYPE ==3  .and. (.not. USE_LDDRK) )then
-      if(ROTATION .and. EXACT_MASS_MATRIX_FOR_ROTATION)then
-        select case(iregion_code)
-        case( IREGION_CRUST_MANTLE,IREGION_INNER_CORE )
-           nglob_xy = nglob
-           nglob_xy_backward = nglob
-        case( IREGION_OUTER_CORE )
-           nglob_xy = 1
-           nglob_xy_backward = 1
-        endselect
-      endif
-    endif
-
     allocate(rmassx(nglob_xy),stat=ier)
     if(ier /= 0) stop 'error in allocate 21'
     allocate(rmassy(nglob_xy),stat=ier)
@@ -1027,9 +1013,9 @@
     allocate(rmassz(nglob),stat=ier)
     if(ier /= 0) stop 'error in allocate 21'
 
-    allocate(b_rmassx(nglob_xy_backward),stat=ier)
+    allocate(b_rmassx(nglob_xy),stat=ier)
     if(ier /= 0) stop 'error in allocate b_21'
-    allocate(b_rmassy(nglob_xy_backward),stat=ier)
+    allocate(b_rmassy(nglob_xy),stat=ier)
     if(ier /= 0) stop 'error in allocate b_21'
 
     ! allocates ocean load mass matrix as well if oceans
@@ -1060,7 +1046,7 @@
                           jacobian2D_xmin,jacobian2D_xmax,jacobian2D_ymin,jacobian2D_ymax, &
                           jacobian2D_bottom,jacobian2D_top,&
                           SIMULATION_TYPE,EXACT_MASS_MATRIX_FOR_ROTATION,USE_LDDRK, &
-                          nglob_xy_backward,b_rmassx,b_rmassy)
+                          b_rmassx,b_rmassy)
 
     ! save the binary files
 #ifdef USE_SERIAL_CASCADE_FOR_IOs
@@ -1090,8 +1076,8 @@
                   tau_s,tau_e_store,Qmu_store,T_c_source,ATTENUATION, &
                   ATT1,ATT2,ATT3,size(tau_e_store,5),&
                   NCHUNKS,ABSORBING_CONDITIONS,SAVE_MESH_FILES,ispec_is_tiso,myrank,&
-                  SIMULATION_TYPE,ROTATION,EXACT_MASS_MATRIX_FOR_ROTATION,USE_LDDRK,&
-                  nglob_xy_backward,b_rmassx,b_rmassy)
+                  ROTATION,EXACT_MASS_MATRIX_FOR_ROTATION,USE_LDDRK,&
+                  b_rmassx,b_rmassy)
 #ifdef USE_SERIAL_CASCADE_FOR_IOs
     you_can_start_doing_IOs = .true.
     if (myrank < NPROC_XI*NPROC_ETA-1) call MPI_SEND(you_can_start_doing_IOs, 1, MPI_LOGICAL, myrank+1, itag, MPI_COMM_WORLD, ier)

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/save_arrays_solver.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/save_arrays_solver.f90	2013-08-01 15:35:56 UTC (rev 22693)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/meshfem3D/save_arrays_solver.f90	2013-08-03 23:51:06 UTC (rev 22694)
@@ -45,20 +45,19 @@
                     ANISOTROPIC_INNER_CORE,OCEANS, &
                     tau_s,tau_e_store,Qmu_store,T_c_source,ATTENUATION,ATT1,ATT2,ATT3,vnspec, &
                     NCHUNKS,ABSORBING_CONDITIONS,SAVE_MESH_FILES,ispec_is_tiso,myrank,&
-                    SIMULATION_TYPE,ROTATION,EXACT_MASS_MATRIX_FOR_ROTATION,USE_LDDRK,&
-                    nglob_xy_backward,b_rmassx,b_rmassy)
+                    ROTATION,EXACT_MASS_MATRIX_FOR_ROTATION,USE_LDDRK,&
+                    b_rmassx,b_rmassy)
 
   implicit none
 
   include "constants.h"
 
-  integer SIMULATION_TYPE
   logical ATTENUATION,ROTATION,EXACT_MASS_MATRIX_FOR_ROTATION,USE_LDDRK
 
   character(len=150) prname
   integer iregion_code,NCHUNKS
 
-  integer nspec,nglob_xy,nglob,nspec_stacey,myrank,nglob_xy_backward
+  integer nspec,nglob_xy,nglob,nspec_stacey,myrank
   integer npointot_oceans
 
 ! Stacey
@@ -100,8 +99,8 @@
   real(kind=CUSTOM_REAL), dimension(nglob_xy) :: rmassx,rmassy
   real(kind=CUSTOM_REAL), dimension(nglob)    :: rmassz
 
-! mass matrices for backward simulation when SIMULATION_TYPE =3 and ROTATION is .true.
-  real(kind=CUSTOM_REAL), dimension(nglob_xy_backward) :: b_rmassx,b_rmassy
+! mass matrices for backward simulation when ROTATION is .true.
+  real(kind=CUSTOM_REAL), dimension(nglob_xy) :: b_rmassx,b_rmassy
 
 ! additional ocean load mass matrix
   real(kind=CUSTOM_REAL) rmass_ocean_load(npointot_oceans)
@@ -277,8 +276,8 @@
 
   if(.not. USE_LDDRK)then
     if(EXACT_MASS_MATRIX_FOR_ROTATION)then
-      if((SIMULATION_TYPE == 3 .and. (ROTATION .and. iregion_code == IREGION_CRUST_MANTLE)) .or. &
-        (SIMULATION_TYPE == 3 .and. (ROTATION .and. iregion_code == IREGION_INNER_CORE)))then
+      if((ROTATION .and. iregion_code == IREGION_CRUST_MANTLE) .or. &
+         (ROTATION .and. iregion_code == IREGION_INNER_CORE))then
          write(27) b_rmassx
          write(27) b_rmassy
        endif

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/memory_eval.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/memory_eval.f90	2013-08-01 15:35:56 UTC (rev 22693)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/memory_eval.f90	2013-08-03 23:51:06 UTC (rev 22694)
@@ -83,7 +83,7 @@
   ! local variables
   integer :: ilayer,NUMBER_OF_MESH_LAYERS,ner_without_doubling,ispec_aniso, &
              NSPEC_CRUST_MANTLE_ADJOINT_HESS,NSPEC_CRUST_MANTLE_ADJOINT_NOISE,NSPEC_CRUST_MANTLE_ADJOINT_ANISO_KL, &
-             NGLOB_XY_CM,NGLOB_XY_IC,NGLOB_XY_CM_BACKWARD,NGLOB_XY_IC_BACKWARD
+             NGLOB_XY_CM,NGLOB_XY_IC
 
   ! generate the elements in all the regions of the mesh
   ispec_aniso = 0
@@ -427,8 +427,6 @@
 
   NGLOB_XY_CM = 1
   NGLOB_XY_IC = 1
-  NGLOB_XY_CM_BACKWARD = 1
-  NGLOB_XY_IC_BACKWARD = 1
 
   if(NCHUNKS /= 6 .and. ABSORBING_CONDITIONS .and. .not. USE_LDDRK) then
      NGLOB_XY_CM = NGLOB(IREGION_CRUST_MANTLE)
@@ -436,33 +434,24 @@
      NGLOB_XY_CM = 1
   endif
 
-  if(SIMULATION_TYPE /= 3  .and. .not. USE_LDDRK .and. EXACT_MASS_MATRIX_FOR_ROTATION) then
+  if(.not. USE_LDDRK .and. EXACT_MASS_MATRIX_FOR_ROTATION) then
     if(ROTATION) then
       NGLOB_XY_CM = NGLOB(IREGION_CRUST_MANTLE)
       NGLOB_XY_IC = NGLOB(IREGION_INNER_CORE)
     endif
   endif
 
-  if(SIMULATION_TYPE == 3  .and. .not. USE_LDDRK .and. EXACT_MASS_MATRIX_FOR_ROTATION) then
-    if(ROTATION) then
-      NGLOB_XY_CM = NGLOB(IREGION_CRUST_MANTLE)
-      NGLOB_XY_IC = NGLOB(IREGION_INNER_CORE)
-      NGLOB_XY_CM_BACKWARD = NGLOB(IREGION_CRUST_MANTLE)
-      NGLOB_XY_IC_BACKWARD = NGLOB(IREGION_INNER_CORE)
-    endif
-  endif
-
 ! rmassx_crust_mantle,rmassy_crust_mantle for EXACT_MASS_MATRIX_FOR_ROTATION and/or ABSORBING_CONDITIONS
   static_memory_size = static_memory_size + 2.d0*NGLOB_XY_CM*4.d0*dble(CUSTOM_REAL)
 
 ! b_rmassx_crust_mantle,b_rmassy_crust_mantle for EXACT_MASS_MATRIX_FOR_ROTATION and/or ABSORBING_CONDITIONS
-  static_memory_size = static_memory_size + 2.d0*NGLOB_XY_CM_BACKWARD*4.d0*dble(CUSTOM_REAL)
+  static_memory_size = static_memory_size + 2.d0*NGLOB_XY_CM*4.d0*dble(CUSTOM_REAL)
 
 ! rmassx_inner_core,rmassy_inner_core for EXACT_MASS_MATRIX_FOR_ROTATION and/or ABSORBING_CONDITIONS
   static_memory_size = static_memory_size + 2.d0*NGLOB_XY_IC*4.d0*dble(CUSTOM_REAL)
 
 ! b_rmassx_inner_core,b_rmassy_inner_core for EXACT_MASS_MATRIX_FOR_ROTATION and/or ABSORBING_CONDITIONS
-  static_memory_size = static_memory_size + 2.d0*NGLOB_XY_IC_BACKWARD*4.d0*dble(CUSTOM_REAL)
+  static_memory_size = static_memory_size + 2.d0*NGLOB_XY_IC*4.d0*dble(CUSTOM_REAL)
 
   end subroutine memory_eval
 

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/save_header_file.F90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/save_header_file.F90	2013-08-01 15:35:56 UTC (rev 22693)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/shared/save_header_file.F90	2013-08-03 23:51:06 UTC (rev 22694)
@@ -56,6 +56,16 @@
                         SAVE_SOURCE_MASK,ABSORBING_CONDITIONS,USE_LDDRK,EXACT_MASS_MATRIX_FOR_ROTATION, &
                         ATTENUATION_1D_WITH_3D_STORAGE)
 
+!
+! ****************************************************************************************************
+! IMPORTANT: this routine must *NOT* use flag SIMULATION_TYPE, i.e. none of the parameters it computes
+! should depend on SIMULATION_TYPE, because most users do not recompile the code nor rerun the mesher
+! when switching from SIMULATION_TYPE == 1 to SIMULATION_TYPE == 3 and thus the header file created
+! by this routine would become wrong in the case of a run with SIMULATION_TYPE == 3 if the code
+! was compiled with SIMULATION_TYPE == 1
+! ****************************************************************************************************
+!
+
   implicit none
 
   include "constants.h"
@@ -93,7 +103,7 @@
          NSPEC_CRUST_MANTLE_STACEY,NSPEC_OUTER_CORE_STACEY, &
          NGLOB_CRUST_MANTLE_OCEANS,NSPEC_OUTER_CORE_ROTATION, &
          NSPEC2D_MOHO, NSPEC2D_400, NSPEC2D_670, NSPEC2D_CMB, NSPEC2D_ICB, &
-         NGLOB_XY_CM, NGLOB_XY_IC, NGLOB_XY_CM_BACKWARD, NGLOB_XY_IC_BACKWARD
+         NGLOB_XY_CM, NGLOB_XY_IC
 
   integer :: SIMULATION_TYPE
   logical :: SAVE_FORWARD,MOVIE_VOLUME
@@ -593,8 +603,6 @@
 
   NGLOB_XY_CM = 1
   NGLOB_XY_IC = 1
-  NGLOB_XY_CM_BACKWARD = 1
-  NGLOB_XY_IC_BACKWARD = 1
 
   if(NCHUNKS /= 6 .and. ABSORBING_CONDITIONS .and. .not. USE_LDDRK) then
      NGLOB_XY_CM = NGLOB(IREGION_CRUST_MANTLE)
@@ -602,26 +610,15 @@
      NGLOB_XY_CM = 1
   endif
 
-  if(SIMULATION_TYPE /= 3  .and. .not. USE_LDDRK .and. EXACT_MASS_MATRIX_FOR_ROTATION) then
+  if(.not. USE_LDDRK .and. EXACT_MASS_MATRIX_FOR_ROTATION) then
     if(ROTATION) then
       NGLOB_XY_CM = NGLOB(IREGION_CRUST_MANTLE)
       NGLOB_XY_IC = NGLOB(IREGION_INNER_CORE)
     endif
   endif
 
-  if(SIMULATION_TYPE == 3  .and. .not. USE_LDDRK .and. EXACT_MASS_MATRIX_FOR_ROTATION) then
-    if(ROTATION) then
-      NGLOB_XY_CM = NGLOB(IREGION_CRUST_MANTLE)
-      NGLOB_XY_IC = NGLOB(IREGION_INNER_CORE)
-      NGLOB_XY_CM_BACKWARD = NGLOB(IREGION_CRUST_MANTLE)
-      NGLOB_XY_IC_BACKWARD = NGLOB(IREGION_INNER_CORE)
-    endif
-  endif
-
   write(IOUT,*) 'integer, parameter :: NGLOB_XY_CM = ',NGLOB_XY_CM
   write(IOUT,*) 'integer, parameter :: NGLOB_XY_IC = ',NGLOB_XY_IC
-  write(IOUT,*) 'integer, parameter :: NGLOB_XY_CM_BACKWARD = ',NGLOB_XY_CM_BACKWARD
-  write(IOUT,*) 'integer, parameter :: NGLOB_XY_IC_BACKWARD = ',NGLOB_XY_IC_BACKWARD
   write(IOUT,*)
 
   if (ATTENUATION_1D_WITH_3D_STORAGE) then

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/prepare_timerun.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/prepare_timerun.f90	2013-08-01 15:35:56 UTC (rev 22693)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/prepare_timerun.f90	2013-08-03 23:51:06 UTC (rev 22694)
@@ -66,14 +66,14 @@
   real(kind=CUSTOM_REAL), dimension(NGLOB_CRUST_MANTLE_OCEANS) :: rmass_ocean_load
   real(kind=CUSTOM_REAL), dimension(NGLOB_XY_CM) :: rmassx_crust_mantle
   real(kind=CUSTOM_REAL), dimension(NGLOB_XY_CM) :: rmassy_crust_mantle
-  real(kind=CUSTOM_REAL), dimension(NGLOB_XY_CM_BACKWARD) :: b_rmassx_crust_mantle
-  real(kind=CUSTOM_REAL), dimension(NGLOB_XY_CM_BACKWARD) :: b_rmassy_crust_mantle
+  real(kind=CUSTOM_REAL), dimension(NGLOB_XY_CM) :: b_rmassx_crust_mantle
+  real(kind=CUSTOM_REAL), dimension(NGLOB_XY_CM) :: b_rmassy_crust_mantle
   real(kind=CUSTOM_REAL), dimension(NGLOB_CRUST_MANTLE) :: rmassz_crust_mantle
   real(kind=CUSTOM_REAL), dimension(NGLOB_OUTER_CORE) :: rmass_outer_core
   real(kind=CUSTOM_REAL), dimension(NGLOB_XY_IC) :: rmassx_inner_core
   real(kind=CUSTOM_REAL), dimension(NGLOB_XY_IC) :: rmassy_inner_core
-  real(kind=CUSTOM_REAL), dimension(NGLOB_XY_IC_BACKWARD) :: b_rmassx_inner_core
-  real(kind=CUSTOM_REAL), dimension(NGLOB_XY_IC_BACKWARD) :: b_rmassy_inner_core
+  real(kind=CUSTOM_REAL), dimension(NGLOB_XY_IC) :: b_rmassx_inner_core
+  real(kind=CUSTOM_REAL), dimension(NGLOB_XY_IC) :: b_rmassy_inner_core
   real(kind=CUSTOM_REAL), dimension(NGLOB_INNER_CORE) :: rmass_inner_core
 
   integer ichunk,iproc_xi,iproc_eta
@@ -197,9 +197,9 @@
             NGLOB2DMAX_XY_CM_VAL,NCHUNKS_VAL)
 
  if(ROTATION_VAL .and. EXACT_MASS_MATRIX_FOR_ROTATION &
-    .and. .not. USE_LDDRK .and. NGLOB_XY_CM_BACKWARD > 0)then
+    .and. .not. USE_LDDRK .and. NGLOB_XY_CM > 0)then
     if(SIMULATION_TYPE == 3)then
-       call assemble_MPI_scalar_block(myrank,b_rmassx_crust_mantle,NGLOB_XY_CM_BACKWARD, &
+       call assemble_MPI_scalar_block(myrank,b_rmassx_crust_mantle,NGLOB_XY_CM, &
             iproc_xi,iproc_eta,ichunk,addressing, &
             iboolleft_xi_crust_mantle,iboolright_xi_crust_mantle,iboolleft_eta_crust_mantle,iboolright_eta_crust_mantle, &
             npoin2D_faces_crust_mantle,npoin2D_xi_crust_mantle,npoin2D_eta_crust_mantle, &
@@ -212,7 +212,7 @@
             NPROC_XI_VAL,NPROC_ETA_VAL,NGLOB1D_RADIAL(IREGION_CRUST_MANTLE), &
             NGLOB2DMAX_XMIN_XMAX(IREGION_CRUST_MANTLE),NGLOB2DMAX_YMIN_YMAX(IREGION_CRUST_MANTLE), &
             NGLOB2DMAX_XY_CM_VAL,NCHUNKS_VAL)
-      call assemble_MPI_scalar_block(myrank,b_rmassy_crust_mantle,NGLOB_XY_CM_BACKWARD, &
+      call assemble_MPI_scalar_block(myrank,b_rmassy_crust_mantle,NGLOB_XY_CM, &
             iproc_xi,iproc_eta,ichunk,addressing, &
             iboolleft_xi_crust_mantle,iboolright_xi_crust_mantle,iboolleft_eta_crust_mantle,iboolright_eta_crust_mantle, &
             npoin2D_faces_crust_mantle,npoin2D_xi_crust_mantle,npoin2D_eta_crust_mantle, &
@@ -274,8 +274,8 @@
             NGLOB2DMAX_XMIN_XMAX(IREGION_INNER_CORE),NGLOB2DMAX_YMIN_YMAX(IREGION_INNER_CORE), &
             NGLOB2DMAX_XY_IC_VAL,NCHUNKS_VAL)
 
-    if(SIMULATION_TYPE == 3  .and. NGLOB_XY_IC_BACKWARD > 0)then
-      call assemble_MPI_scalar_block(myrank,b_rmassx_inner_core,NGLOB_XY_IC_BACKWARD, &
+    if(SIMULATION_TYPE == 3  .and. NGLOB_XY_IC > 0)then
+      call assemble_MPI_scalar_block(myrank,b_rmassx_inner_core,NGLOB_XY_IC, &
             iproc_xi,iproc_eta,ichunk,addressing, &
             iboolleft_xi_inner_core,iboolright_xi_inner_core,iboolleft_eta_inner_core,iboolright_eta_inner_core, &
             npoin2D_faces_inner_core,npoin2D_xi_inner_core,npoin2D_eta_inner_core, &
@@ -289,7 +289,7 @@
             NGLOB2DMAX_XMIN_XMAX(IREGION_INNER_CORE),NGLOB2DMAX_YMIN_YMAX(IREGION_INNER_CORE), &
             NGLOB2DMAX_XY_IC_VAL,NCHUNKS_VAL)
 
-      call assemble_MPI_scalar_block(myrank,b_rmassy_inner_core,NGLOB_XY_IC_BACKWARD, &
+      call assemble_MPI_scalar_block(myrank,b_rmassy_inner_core,NGLOB_XY_IC, &
             iproc_xi,iproc_eta,ichunk,addressing, &
             iboolleft_xi_inner_core,iboolright_xi_inner_core,iboolleft_eta_inner_core,iboolright_eta_inner_core, &
             npoin2D_faces_inner_core,npoin2D_xi_inner_core,npoin2D_eta_inner_core, &

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/read_arrays_solver.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/read_arrays_solver.f90	2013-08-01 15:35:56 UTC (rev 22693)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/read_arrays_solver.f90	2013-08-03 23:51:06 UTC (rev 22694)
@@ -39,7 +39,7 @@
               rmassx,rmassy,rmassz,rmass_ocean_load,nspec, &
               is_on_a_slice_edge,READ_KAPPA_MU,READ_TISO,TRANSVERSE_ISOTROPY, &
               ANISOTROPIC_3D_MANTLE,ANISOTROPIC_INNER_CORE,OCEANS,LOCAL_PATH,ABSORBING_CONDITIONS,&
-              SIMULATION_TYPE,nglob_xy_backward,EXACT_MASS_MATRIX_FOR_ROTATION,USE_LDDRK, &
+              EXACT_MASS_MATRIX_FOR_ROTATION,USE_LDDRK, &
               b_rmassx,b_rmassy)
 
   implicit none
@@ -47,8 +47,8 @@
   include "constants.h"
   include "OUTPUT_FILES/values_from_mesher.h"
 
-  integer :: iregion_code,myrank,SIMULATION_TYPE
-  integer :: nspec,nglob,nglob_xy,nglob_xy_backward
+  integer :: iregion_code,myrank
+  integer :: nspec,nglob,nglob_xy
   integer :: nspec_iso,nspec_tiso,nspec_ani
 
   ! Stacey
@@ -80,7 +80,7 @@
 
   ! mass matrices and additional ocean load mass matrix
   real(kind=CUSTOM_REAL), dimension(nglob_xy) :: rmassx,rmassy
-  real(kind=CUSTOM_REAL), dimension(nglob_xy_backward) :: b_rmassx,b_rmassy
+  real(kind=CUSTOM_REAL), dimension(nglob_xy) :: b_rmassx,b_rmassy
   real(kind=CUSTOM_REAL), dimension(nglob)    :: rmassz
   real(kind=CUSTOM_REAL), dimension(nglob) :: rmass_ocean_load
 
@@ -200,10 +200,8 @@
   read(IIN) rmassz
 
   if(.not. USE_LDDRK)then
-    if((SIMULATION_TYPE == 3 .and. &
-        (ROTATION_VAL  .and. EXACT_MASS_MATRIX_FOR_ROTATION .and. iregion_code == IREGION_CRUST_MANTLE)) .or. &
-       (SIMULATION_TYPE == 3 .and. &
-        (ROTATION_VAL  .and. EXACT_MASS_MATRIX_FOR_ROTATION .and. iregion_code == IREGION_INNER_CORE)))then
+    if((ROTATION_VAL .and. EXACT_MASS_MATRIX_FOR_ROTATION .and. iregion_code == IREGION_CRUST_MANTLE) .or. &
+       (ROTATION_VAL .and. EXACT_MASS_MATRIX_FOR_ROTATION .and. iregion_code == IREGION_INNER_CORE))then
        read(IIN) b_rmassx
        read(IIN) b_rmassy
     endif

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/read_mesh_databases.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/read_mesh_databases.f90	2013-08-01 15:35:56 UTC (rev 22693)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/read_mesh_databases.f90	2013-08-03 23:51:06 UTC (rev 22694)
@@ -61,7 +61,7 @@
             ibool_inner_core,idoubling_inner_core,ispec_is_tiso_inner_core, &
             is_on_a_slice_edge_inner_core,rmass_inner_core, &
             ABSORBING_CONDITIONS,LOCAL_PATH,&
-            SIMULATION_TYPE,EXACT_MASS_MATRIX_FOR_ROTATION,USE_LDDRK, &
+            EXACT_MASS_MATRIX_FOR_ROTATION,USE_LDDRK, &
             b_rmassx_crust_mantle,b_rmassy_crust_mantle,&
             rmassx_inner_core,rmassy_inner_core,&
             b_rmassx_inner_core,b_rmassy_inner_core)
@@ -71,7 +71,7 @@
   include "constants.h"
   include "OUTPUT_FILES/values_from_mesher.h"
 
-  integer myrank,SIMULATION_TYPE
+  integer myrank
 
   ! Stacey
   real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE_STACEY) :: &
@@ -117,8 +117,8 @@
   logical :: EXACT_MASS_MATRIX_FOR_ROTATION,USE_LDDRK
   real(kind=CUSTOM_REAL), dimension(NGLOB_XY_CM) :: rmassx_crust_mantle
   real(kind=CUSTOM_REAL), dimension(NGLOB_XY_CM) :: rmassy_crust_mantle
-  real(kind=CUSTOM_REAL), dimension(NGLOB_XY_CM_BACKWARD) :: b_rmassx_crust_mantle
-  real(kind=CUSTOM_REAL), dimension(NGLOB_XY_CM_BACKWARD) :: b_rmassy_crust_mantle
+  real(kind=CUSTOM_REAL), dimension(NGLOB_XY_CM) :: b_rmassx_crust_mantle
+  real(kind=CUSTOM_REAL), dimension(NGLOB_XY_CM) :: b_rmassy_crust_mantle
   real(kind=CUSTOM_REAL), dimension(NGLOB_CRUST_MANTLE) :: rmassz_crust_mantle
 
   ! additional mass matrix for ocean load
@@ -157,8 +157,8 @@
 
   real(kind=CUSTOM_REAL), dimension(NGLOB_XY_IC) :: rmassx_inner_core
   real(kind=CUSTOM_REAL), dimension(NGLOB_XY_IC) :: rmassy_inner_core
-  real(kind=CUSTOM_REAL), dimension(NGLOB_XY_IC_BACKWARD) :: b_rmassx_inner_core
-  real(kind=CUSTOM_REAL), dimension(NGLOB_XY_IC_BACKWARD) :: b_rmassy_inner_core
+  real(kind=CUSTOM_REAL), dimension(NGLOB_XY_IC) :: b_rmassx_inner_core
+  real(kind=CUSTOM_REAL), dimension(NGLOB_XY_IC) :: b_rmassy_inner_core
   real(kind=CUSTOM_REAL), dimension(NGLOB_INNER_CORE) :: rmass_inner_core
 
   logical ABSORBING_CONDITIONS
@@ -224,10 +224,9 @@
             rmassx_crust_mantle,rmassy_crust_mantle,rmassz_crust_mantle,rmass_ocean_load,NSPEC_CRUST_MANTLE, &
             is_on_a_slice_edge_crust_mantle,READ_KAPPA_MU,READ_TISO,TRANSVERSE_ISOTROPY_VAL,ANISOTROPIC_3D_MANTLE_VAL, &
             ANISOTROPIC_INNER_CORE_VAL,OCEANS_VAL,LOCAL_PATH,ABSORBING_CONDITIONS,&
-            SIMULATION_TYPE,NGLOB_XY_CM_BACKWARD,EXACT_MASS_MATRIX_FOR_ROTATION,USE_LDDRK, &
+            EXACT_MASS_MATRIX_FOR_ROTATION,USE_LDDRK, &
             b_rmassx_crust_mantle,b_rmassy_crust_mantle)
 
-
   ! synchronizes processes
   call sync_all()
 
@@ -262,7 +261,7 @@
             dummy_rmass,dummy_rmass,rmass_outer_core,rmass_ocean_load,NSPEC_OUTER_CORE, &
             is_on_a_slice_edge_outer_core,READ_KAPPA_MU,READ_TISO,TRANSVERSE_ISOTROPY_VAL,ANISOTROPIC_3D_MANTLE_VAL, &
             ANISOTROPIC_INNER_CORE_VAL,OCEANS_VAL,LOCAL_PATH,ABSORBING_CONDITIONS,&
-            SIMULATION_TYPE,NGLOB_DUMMY,EXACT_MASS_MATRIX_FOR_ROTATION,USE_LDDRK, &
+            EXACT_MASS_MATRIX_FOR_ROTATION,USE_LDDRK, &
             dummy_rmass,dummy_rmass)
 
   ! synchronizes processes
@@ -300,7 +299,7 @@
             rmassx_inner_core,rmassy_inner_core,rmass_inner_core,rmass_ocean_load,NSPEC_INNER_CORE, &
             is_on_a_slice_edge_inner_core,READ_KAPPA_MU,READ_TISO,TRANSVERSE_ISOTROPY_VAL,ANISOTROPIC_3D_MANTLE_VAL, &
             ANISOTROPIC_INNER_CORE_VAL,OCEANS_VAL,LOCAL_PATH,ABSORBING_CONDITIONS,&
-            SIMULATION_TYPE,NGLOB_XY_IC_BACKWARD,EXACT_MASS_MATRIX_FOR_ROTATION,USE_LDDRK, &
+            EXACT_MASS_MATRIX_FOR_ROTATION,USE_LDDRK, &
             b_rmassx_inner_core,b_rmassy_inner_core)
 
   ! check that the number of points in this slice is correct

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/specfem3D.F90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/specfem3D.F90	2013-08-01 15:35:56 UTC (rev 22693)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/src/specfem3D/specfem3D.F90	2013-08-03 23:51:06 UTC (rev 22694)
@@ -567,8 +567,8 @@
 
   real(kind=CUSTOM_REAL), dimension(NGLOB_XY_CM) :: rmassx_crust_mantle
   real(kind=CUSTOM_REAL), dimension(NGLOB_XY_CM) :: rmassy_crust_mantle
-  real(kind=CUSTOM_REAL), dimension(NGLOB_XY_CM_BACKWARD) :: b_rmassx_crust_mantle
-  real(kind=CUSTOM_REAL), dimension(NGLOB_XY_CM_BACKWARD) :: b_rmassy_crust_mantle
+  real(kind=CUSTOM_REAL), dimension(NGLOB_XY_CM) :: b_rmassx_crust_mantle
+  real(kind=CUSTOM_REAL), dimension(NGLOB_XY_CM) :: b_rmassy_crust_mantle
 
 ! displacement, velocity, acceleration
   real(kind=CUSTOM_REAL), dimension(NDIM,NGLOB_CRUST_MANTLE) :: &
@@ -629,8 +629,8 @@
 
   real(kind=CUSTOM_REAL), dimension(NGLOB_XY_IC) :: rmassx_inner_core
   real(kind=CUSTOM_REAL), dimension(NGLOB_XY_IC) :: rmassy_inner_core
-  real(kind=CUSTOM_REAL), dimension(NGLOB_XY_IC_BACKWARD) :: b_rmassx_inner_core
-  real(kind=CUSTOM_REAL), dimension(NGLOB_XY_IC_BACKWARD) :: b_rmassy_inner_core
+  real(kind=CUSTOM_REAL), dimension(NGLOB_XY_IC) :: b_rmassx_inner_core
+  real(kind=CUSTOM_REAL), dimension(NGLOB_XY_IC) :: b_rmassy_inner_core
 
 ! displacement, velocity, acceleration
   real(kind=CUSTOM_REAL), dimension(NDIM,NGLOB_INNER_CORE) :: &
@@ -1209,7 +1209,7 @@
               ibool_inner_core,idoubling_inner_core,ispec_is_tiso_inner_core, &
               is_on_a_slice_edge_inner_core,rmass_inner_core, &
               ABSORBING_CONDITIONS,LOCAL_PATH,&
-              SIMULATION_TYPE,EXACT_MASS_MATRIX_FOR_ROTATION,USE_LDDRK, &
+              EXACT_MASS_MATRIX_FOR_ROTATION,USE_LDDRK, &
               b_rmassx_crust_mantle,b_rmassy_crust_mantle,&
               rmassx_inner_core,rmassy_inner_core,&
               b_rmassx_inner_core,b_rmassy_inner_core)
@@ -1820,7 +1820,7 @@
                       sender_from_slices_to_cube,ibool_central_cube, &
                       buffer_slices,buffer_slices2,buffer_all_cube_from_slices)
 
-    if(SIMULATION_TYPE == 3  .and. NGLOB_XY_IC_BACKWARD > 0)then
+    if(SIMULATION_TYPE == 3  .and. NGLOB_XY_IC > 0)then
 
     call prepare_timerun_centralcube(myrank,b_rmassx_inner_core, &
                       iproc_xi,iproc_eta,ichunk, &
@@ -1914,7 +1914,7 @@
             call exit_MPI(myrank,'negative mass matrix term for the rmassy_inner_core')
        rmassx_inner_core = 1._CUSTOM_REAL / rmassx_inner_core
        rmassy_inner_core = 1._CUSTOM_REAL / rmassy_inner_core
-       if(SIMULATION_TYPE == 3 .and. NGLOB_XY_IC_BACKWARD > 0)then
+       if(SIMULATION_TYPE == 3 .and. NGLOB_XY_IC > 0)then
          if(minval(b_rmassx_inner_core) <= 0._CUSTOM_REAL) &
               call exit_MPI(myrank,'negative mass matrix term for the b_rmassx_inner_core')
          if(minval(b_rmassy_inner_core) <= 0._CUSTOM_REAL) &
@@ -1925,7 +1925,7 @@
     endif
 
     if(ROTATION_VAL .and. EXACT_MASS_MATRIX_FOR_ROTATION &
-      .and. .not. USE_LDDRK .and. SIMULATION_TYPE == 3 .and. NGLOB_XY_CM_BACKWARD > 0)then
+      .and. .not. USE_LDDRK .and. SIMULATION_TYPE == 3 .and. NGLOB_XY_CM > 0)then
       if(minval(b_rmassx_crust_mantle) <= 0._CUSTOM_REAL) &
            call exit_MPI(myrank,'negative mass matrix term for the b_crust_mantle')
       if(minval(b_rmassy_crust_mantle) <= 0._CUSTOM_REAL) &



More information about the CIG-COMMITS mailing list