[cig-commits] r11938 - in seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta: . OUTPUT_FILES
dkomati1 at geodynamics.org
dkomati1 at geodynamics.org
Fri May 9 16:11:56 PDT 2008
Author: dkomati1
Date: 2008-05-09 16:11:56 -0700 (Fri, 09 May 2008)
New Revision: 11938
Modified:
seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/Makefile
seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/OUTPUT_FILES/values_from_mesher.h
seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/assemble_MPI_vector.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/constants.h
seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/create_chunk_buffers.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/create_list_files_chunks.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/declar.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/meshfem3D.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/read_compute_parameters.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/save_header_file.f90
seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/specfem3D.f90
Log:
fixed problem of size of the MPI buffers that was too big
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/Makefile
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/Makefile 2008-05-09 22:14:18 UTC (rev 11937)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/Makefile 2008-05-09 23:11:56 UTC (rev 11938)
@@ -27,26 +27,34 @@
# Makefile. Generated from Makefile.in by configure.
- FC = ifort
-#FC = /usr/bin/gfortran
+#
+# Intel ifort
+#
+#FC = ifort
+#MPIFC = /home/r/geophy/dkomati1/bin/mpich2-1.0.7_ifort/bin/mpif90
+#FLAGS_NO_CHECK = -O3 -e95 -implicitnone -warn truncated_source -warn argument_checking -warn unused -warn declarations -std95 -check nobounds -align sequence -assume byterecl -i-dynamic -fpe3 -no-ftz
+#FLAGS_NO_CHECK = -O3 -e95 -implicitnone -warn truncated_source -warn argument_checking -warn declarations -std95 -check all -align sequence -assume byterecl -warn unused
+
+#
+# GNU gfortran
+#
+FC = /usr/bin/gfortran
+MPIFC = /home/r/geophy/dkomati1/bin/mpich2-1.0.7/bin/mpif90
+FLAGS_NO_CHECK = -std=gnu -fimplicit-none -frange-check -O3 -Wunused-labels -Waliasing -Wampersand -Wsurprising -Wline-truncation -Wunderflow
+
+#
+# Portland pgf90
+#
#FC = pgf90
-#FC = /opt/intel/fc/9.1.040/bin/ifort
-FCFLAGS = #-g
-MPIFC = mpif90
-#MPIFC = /home/r/geophy/dkomati1/bin/mpich2-1.0.7/bin/mpif90
-#MPIFC = /opt/mpich2_ifort/bin/mpif90
-MPILIBS =
-#FLAGS_CHECK = -O3 -e95 -implicitnone -warn truncated_source -warn argument_checking -warn unused -warn declarations -std95 -check nobounds -align sequence -assume byterecl -i-dynamic -ftrapuv -fpe0 -no-ftz -traceback
-FLAGS_CHECK = $(FLAGS_NO_CHECK)
-FLAGS_NO_CHECK = -O3 -e95 -implicitnone -warn truncated_source -warn argument_checking -warn unused -warn declarations -std95 -check nobounds -align sequence -assume byterecl -i-dynamic -fpe3 -no-ftz
-
-#FLAGS_NO_CHECK = -std=gnu -fimplicit-none -frange-check -O3 -Wunused-labels -Waliasing -Wampersand -Wsurprising -Wline-truncation -Wunderflow
+#MPIFC = mpif90
#FLAGS_NO_CHECK = -fast -Mnobounds -Minline -Mneginfo -Mdclchk -Knoieee -Minform=warn -Mstandard -fastsse -tp amd64e
-#FLAGS_NO_CHECK = -O3 -e95 -implicitnone -warn truncated_source -warn argument_checking -warn declarations -std95 -check all -align sequence -assume byterecl -warn unused
+FLAGS_CHECK = $(FLAGS_NO_CHECK)
#FLAGS_NO_CHECK2 = -O3 -e95 -implicitnone -warn truncated_source -warn argument_checking -warn declarations -std95 -CB -align sequence -assume byterecl # -warn unused
FLAGS_NO_CHECK2 = $(FLAGS_NO_CHECK)
FCFLAGS_f90 =
+MPILIBS =
+FCFLAGS = #-g
FCCOMPILE_CHECK = ${FC} ${FCFLAGS} $(FLAGS_CHECK)
FCCOMPILE_NO_CHECK = ${FC} ${FCFLAGS} $(FLAGS_NO_CHECK)
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-05-09 22:14:18 UTC (rev 11937)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/OUTPUT_FILES/values_from_mesher.h 2008-05-09 23:11:56 UTC (rev 11938)
@@ -1,4 +1,4 @@
-
+
!
! this is the parameter file for static compilation of the solver
!
@@ -43,7 +43,7 @@
!
! number of seismic sources = 1
!
-
+
! approximate static memory needed by the solver:
! ----------------------------------------------
!
@@ -58,36 +58,36 @@
! size of static arrays for all slices = 1151.40130090714 GB
! = 1.12441533291712 TB
!
-
+
integer, parameter :: NEX_XI_VAL = 864
integer, parameter :: NEX_ETA_VAL = 864
-
+
integer, parameter :: NSPEC_CRUST_MANTLE = 57456
integer, parameter :: NSPEC_OUTER_CORE = 7308
integer, parameter :: NSPEC_INNER_CORE = 4212
-
+
integer, parameter :: NGLOB_CRUST_MANTLE = 3776989
integer, parameter :: NGLOB_OUTER_CORE = 493569
integer, parameter :: NGLOB_INNER_CORE = 293125
-
+
integer, parameter :: NSPECMAX_ANISO_IC = 1
-
+
integer, parameter :: NSPECMAX_ISO_MANTLE = 57456
integer, parameter :: NSPECMAX_TISO_MANTLE = 1
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_STR_OR_ATT = 1
integer, parameter :: NSPEC_INNER_CORE_STR_OR_ATT = 1
-
+
integer, parameter :: NSPEC_CRUST_MANTLE_STR_AND_ATT = 1
integer, parameter :: NSPEC_INNER_CORE_STR_AND_ATT = 1
-
+
integer, parameter :: NSPEC_CRUST_MANTLE_STRAIN_ONLY = 1
integer, parameter :: NSPEC_INNER_CORE_STRAIN_ONLY = 1
-
+
integer, parameter :: NSPEC_CRUST_MANTLE_ADJOINT = 1
integer, parameter :: NSPEC_OUTER_CORE_ADJOINT = 1
integer, parameter :: NSPEC_INNER_CORE_ADJOINT = 1
@@ -95,43 +95,45 @@
integer, parameter :: NGLOB_OUTER_CORE_ADJOINT = 1
integer, parameter :: NGLOB_INNER_CORE_ADJOINT = 1
integer, parameter :: NSPEC_OUTER_CORE_ROT_ADJOINT = 1
-
+
integer, parameter :: NSPEC_CRUST_MANTLE_STACEY = 1
integer, parameter :: NSPEC_OUTER_CORE_STACEY = 1
-
+
integer, parameter :: NGLOB_CRUST_MANTLE_OCEANS = 1
-
+
logical, parameter :: TRANSVERSE_ISOTROPY_VAL = .false.
-
+
logical, parameter :: ANISOTROPIC_3D_MANTLE_VAL = .false.
-
+
logical, parameter :: ANISOTROPIC_INNER_CORE_VAL = .false.
-
+
logical, parameter :: ATTENUATION_VAL = .false.
-
+
logical, parameter :: ATTENUATION_3D_VAL = .false.
-
+
logical, parameter :: ELLIPTICITY_VAL = .false.
-
+
logical, parameter :: GRAVITY_VAL = .false.
-
+
logical, parameter :: ROTATION_VAL = .false.
integer, parameter :: NSPEC_OUTER_CORE_ROTATION = 1
-
+
integer, parameter :: NGLOB1D_RADIAL_CM = 493
integer, parameter :: NGLOB1D_RADIAL_OC = 345
integer, parameter :: NGLOB1D_RADIAL_IC = 37
- integer, parameter :: NGLOB2DMAX_XMIN_XMAX_CM = 62101
- integer, parameter :: NGLOB2DMAX_XMIN_XMAX_OC = 18751
- integer, parameter :: NGLOB2DMAX_XMIN_XMAX_IC = 17551
- integer, parameter :: NGLOB2DMAX_YMIN_YMAX_CM = 62101
- integer, parameter :: NGLOB2DMAX_YMIN_YMAX_OC = 18751
- integer, parameter :: NGLOB2DMAX_YMIN_YMAX_IC = 17551
+ integer, parameter :: NGLOB2DMAX_XMIN_XMAX_CM = 49242
+ integer, parameter :: NGLOB2DMAX_XMIN_XMAX_OC = 15198
+ integer, parameter :: NGLOB2DMAX_XMIN_XMAX_IC = 11931
+ integer, parameter :: NGLOB2DMAX_YMIN_YMAX_CM = 49242
+ integer, parameter :: NGLOB2DMAX_YMIN_YMAX_OC = 15198
+ integer, parameter :: NGLOB2DMAX_YMIN_YMAX_IC = 11931
integer, parameter :: NPROC_XI_VAL = 18
integer, parameter :: NPROC_ETA_VAL = 18
integer, parameter :: NCHUNKS_VAL = 6
integer, parameter :: NPROCTOT_VAL = 1944
- integer, parameter :: NGLOB2DMAX_XY_VAL = 62101
+ integer, parameter :: NGLOB2DMAX_XY_VAL_CM = 49242
+ integer, parameter :: NGLOB2DMAX_XY_VAL_OC = 15198
+ integer, parameter :: NGLOB2DMAX_XY_VAL_IC = 11931
integer, parameter :: NUMMSGS_FACES_VAL = 216
integer, parameter :: NCORNERSCHUNKS_VAL = 8
integer, parameter :: ATT1 = 1
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/assemble_MPI_vector.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/assemble_MPI_vector.f90 2008-05-09 22:14:18 UTC (rev 11937)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/assemble_MPI_vector.f90 2008-05-09 23:11:56 UTC (rev 11938)
@@ -31,9 +31,7 @@
!---- to reduce the total number of MPI calls
!----
- subroutine assemble_MPI_vector(myrank, &
- accel_crust_mantle,NGLOB_CRUST_MANTLE, &
- accel_inner_core,NGLOB_INNER_CORE, &
+ subroutine assemble_MPI_vector(myrank,accel_crust_mantle,accel_inner_core, &
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, &
@@ -46,12 +44,8 @@
buffer_send_faces_vector,buffer_received_faces_vector,npoin2D_max_all, &
buffer_send_chunkcorners_vector,buffer_recv_chunkcorners_vector, &
NUMMSGS_FACES,NUM_MSG_TYPES,NCORNERSCHUNKS, &
- NPROC_XI,NPROC_ETA, &
- NGLOB1D_RADIAL_crust_mantle, &
- NGLOB2DMAX_XMIN_XMAX_CM,NGLOB2DMAX_YMIN_YMAX_CM, &
- NGLOB1D_RADIAL_inner_core, &
- NGLOB2DMAX_XMIN_XMAX_IC,NGLOB2DMAX_YMIN_YMAX_IC, &
- NGLOB2DMAX_XY,NCHUNKS)
+ NPROC_XI,NPROC_ETA,NGLOB1D_RADIAL_crust_mantle, &
+ NGLOB1D_RADIAL_inner_core,NCHUNKS)
implicit none
@@ -61,8 +55,11 @@
include "constants.h"
include "precision.h"
- integer myrank,NGLOB_CRUST_MANTLE,NGLOB_INNER_CORE,NCHUNKS
+! include values created by the mesher
+ include "OUTPUT_FILES/values_from_mesher.h"
+ integer myrank,NCHUNKS
+
! the two arrays to assemble
real(kind=CUSTOM_REAL), dimension(NDIM,NGLOB_CRUST_MANTLE) :: accel_crust_mantle
real(kind=CUSTOM_REAL), dimension(NDIM,NGLOB_INNER_CORE) :: accel_inner_core
@@ -73,9 +70,7 @@
integer npoin2D_xi_inner_core,npoin2D_eta_inner_core
integer npoin2D_faces_inner_core(NUMFACES_SHARED)
- integer NGLOB2DMAX_XMIN_XMAX_CM,NGLOB2DMAX_YMIN_YMAX_CM,NGLOB1D_RADIAL_crust_mantle
- integer NGLOB2DMAX_XMIN_XMAX_IC,NGLOB2DMAX_YMIN_YMAX_IC,NGLOB1D_RADIAL_inner_core
- integer NPROC_XI,NPROC_ETA,NGLOB2DMAX_XY
+ integer NGLOB1D_RADIAL_crust_mantle,NGLOB1D_RADIAL_inner_core,NPROC_XI,NPROC_ETA
integer NUMMSGS_FACES,NUM_MSG_TYPES,NCORNERSCHUNKS
! for addressing of the slices
@@ -93,7 +88,8 @@
integer icount_corners
integer :: npoin2D_max_all
- integer, dimension(NGLOB2DMAX_XY,NUMFACES_SHARED) :: iboolfaces_crust_mantle,iboolfaces_inner_core
+ integer, dimension(NGLOB2DMAX_XY_VAL_CM,NUMFACES_SHARED) :: iboolfaces_crust_mantle
+ integer, dimension(NGLOB2DMAX_XY_VAL_IC,NUMFACES_SHARED) :: iboolfaces_inner_core
real(kind=CUSTOM_REAL), dimension(NDIM,npoin2D_max_all) :: buffer_send_faces_vector,buffer_received_faces_vector
! buffers for send and receive between corners of the chunks
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/constants.h
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/constants.h 2008-05-09 22:14:18 UTC (rev 11937)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/constants.h 2008-05-09 23:11:56 UTC (rev 11938)
@@ -359,12 +359,12 @@
! number of faces a given slice can share with other slices
! this is at most 2, except when there is only once slice per chunk
! in which case it is 4
- integer, parameter :: NUMFACES_SHARED = 4
+ integer, parameter :: NUMFACES_SHARED = 2 !!!!! DK DK removed support for one slice only 4
! number of corners a given slice can share with other slices
! this is at most 1, except when there is only once slice per chunk
! in which case it is 4
- integer, parameter :: NUMCORNERS_SHARED = 4
+ integer, parameter :: NUMCORNERS_SHARED = 1 !!!!!! DK DK removed support for one slice only 4
! number of slaves per corner
integer, parameter :: NUMSLAVES = 2
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/create_chunk_buffers.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/create_chunk_buffers.f90 2008-05-09 22:14:18 UTC (rev 11937)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/create_chunk_buffers.f90 2008-05-09 23:11:56 UTC (rev 11938)
@@ -42,7 +42,7 @@
yread1D_leftxi_lefteta, yread1D_rightxi_lefteta, yread1D_leftxi_righteta, yread1D_rightxi_righteta, &
zread1D_leftxi_lefteta, zread1D_rightxi_lefteta, zread1D_leftxi_righteta, zread1D_rightxi_righteta, &
iprocfrom_faces,iprocto_faces,iproc_master_corners,iproc_worker1_corners,iproc_worker2_corners, &
- iboolfaces,npoin2D_faces,iboolcorner,NGLOB1D_RADIAL)
+ iboolfaces,npoin2D_faces,iboolcorner,NGLOB1D_RADIAL,NGLOB2DMAX_XY)
implicit none
@@ -60,7 +60,8 @@
integer :: NGLOB1D_RADIAL
integer :: imsg2,icount_faces,icount_corners
integer, dimension(NUMFACES_SHARED) :: npoin2D_faces
- integer, dimension(NGLOB2DMAX_XY_VAL,NUMFACES_SHARED) :: iboolfaces
+ integer :: NGLOB2DMAX_XY
+ integer, dimension(NGLOB2DMAX_XY,NUMFACES_SHARED) :: iboolfaces
integer, dimension(NGLOB1D_RADIAL,NUMCORNERS_SHARED) :: iboolcorner
!! DK DK added this for the merged version
@@ -98,7 +99,6 @@
logical, dimension(:), allocatable :: mask_ibool
! array to store points selected for the chunk face buffer
- integer NGLOB2DMAX_XY
integer, dimension(:), allocatable :: ibool_selected
double precision, dimension(:), allocatable :: xstore_selected,ystore_selected,zstore_selected
@@ -245,9 +245,6 @@
write(IMAIN,*)
endif
-! define maximum size for message buffers
- NGLOB2DMAX_XY = max(NGLOB2DMAX_XMIN_XMAX,NGLOB2DMAX_YMIN_YMAX)
-
! allocate arrays for message buffers with maximum size
allocate(ibool_selected(NGLOB2DMAX_XY))
allocate(xstore_selected(NGLOB2DMAX_XY))
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/create_list_files_chunks.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/create_list_files_chunks.f90 2008-05-09 22:14:18 UTC (rev 11937)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/create_list_files_chunks.f90 2008-05-09 23:11:56 UTC (rev 11938)
@@ -32,7 +32,6 @@
subroutine create_list_files_chunks(iregion_code, &
nglob_ori,NPROC_XI,NPROC_ETA,NPROCTOT,NGLOB1D_RADIAL_CORNER, &
- NGLOB2DMAX_XMIN_XMAX,NGLOB2DMAX_YMIN_YMAX, &
myrank,addressing,ichunk_slice,iproc_xi_slice,iproc_eta_slice,NCHUNKS)
implicit none
@@ -51,14 +50,10 @@
integer nglob,nglob_ori
integer NPROC_XI,NPROC_ETA,NPROCTOT,NGLOB1D_RADIAL_my_corner
- integer NGLOB2DMAX_XMIN_XMAX,NGLOB2DMAX_YMIN_YMAX
integer myrank,NCHUNKS
character(len=150) OUTPUT_FILES
-! array to store points selected for the chunk face buffer
- integer NGLOB2DMAX_XY
-
! pairs generated theoretically
! four sides for each of the three types of messages
integer, dimension(:), allocatable :: iproc_sender,iproc_receiver,npoin2D_send,npoin2D_receive
@@ -158,9 +153,6 @@
write(IMAIN,*)
endif
-! define maximum size for message buffers
- NGLOB2DMAX_XY = max(NGLOB2DMAX_XMIN_XMAX,NGLOB2DMAX_YMIN_YMAX)
-
imsg = 0
if(myrank == 0) then
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/declar.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/declar.f90 2008-05-09 22:14:18 UTC (rev 11937)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/declar.f90 2008-05-09 23:11:56 UTC (rev 11938)
@@ -123,12 +123,10 @@
integer, dimension(NSPEC2D_BOTTOM_IC) :: ibelm_bottom_inner_core
integer, dimension(NSPEC2D_TOP_IC) :: ibelm_top_inner_core
- integer, dimension(NGLOB2DMAX_XY_VAL,NUMFACES_SHARED) :: iboolfaces_crust_mantle,iboolfaces_outer_core,iboolfaces_inner_core
+ integer, dimension(NGLOB2DMAX_XY_VAL_CM,NUMFACES_SHARED) :: iboolfaces_crust_mantle
+ integer, dimension(NGLOB2DMAX_XY_VAL_OC,NUMFACES_SHARED) :: iboolfaces_outer_core
+ integer, dimension(NGLOB2DMAX_XY_VAL_IC,NUMFACES_SHARED) :: iboolfaces_inner_core
-!!!! real(kind=CUSTOM_REAL), dimension(NGLOB2DMAX_XY_VAL) :: buffer_send_faces_scalar,buffer_received_faces_scalar
-
-!!!! real(kind=CUSTOM_REAL), dimension(NDIM,2*NGLOB2DMAX_XY_VAL) :: buffer_send_faces_vector,buffer_received_faces_vector
-
integer, dimension(NGLLX,NGLLY,NGLLZ,NSPEC_CRUST_MANTLE) :: ibool_crust_mantle
integer, dimension(NSPEC_CRUST_MANTLE) :: idoubling_crust_mantle
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/meshfem3D.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/meshfem3D.f90 2008-05-09 22:14:18 UTC (rev 11937)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/meshfem3D.f90 2008-05-09 23:11:56 UTC (rev 11938)
@@ -1768,7 +1768,6 @@
! crust_mantle
call create_list_files_chunks(iregion_code, &
nglob(iregion_code),NPROC_XI,NPROC_ETA,NPROCTOT,NGLOB1D_RADIAL_CORNER, &
- NGLOB2DMAX_XMIN_XMAX(iregion_code),NGLOB2DMAX_YMIN_YMAX(iregion_code), &
myrank,addressing,ichunk_slice,iproc_xi_slice,iproc_eta_slice,NCHUNKS)
!! $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
@@ -1846,7 +1845,8 @@
yread1D_leftxi_lefteta, yread1D_rightxi_lefteta, yread1D_leftxi_righteta, yread1D_rightxi_righteta, &
zread1D_leftxi_lefteta, zread1D_rightxi_lefteta, zread1D_leftxi_righteta, zread1D_rightxi_righteta, &
iprocfrom_faces,iprocto_faces,iproc_master_corners,iproc_worker1_corners,iproc_worker2_corners, &
- iboolfaces_crust_mantle,npoin2D_faces_crust_mantle,iboolcorner_crust_mantle,NGLOB1D_RADIAL(IREGION_CRUST_MANTLE))
+ iboolfaces_crust_mantle,npoin2D_faces_crust_mantle,iboolcorner_crust_mantle,NGLOB1D_RADIAL(IREGION_CRUST_MANTLE), &
+ NGLOB2DMAX_XY_VAL_CM)
else if(iregion_code == IREGION_OUTER_CORE) then
! outer_core
@@ -1864,7 +1864,8 @@
yread1D_leftxi_lefteta, yread1D_rightxi_lefteta, yread1D_leftxi_righteta, yread1D_rightxi_righteta, &
zread1D_leftxi_lefteta, zread1D_rightxi_lefteta, zread1D_leftxi_righteta, zread1D_rightxi_righteta, &
iprocfrom_faces,iprocto_faces,iproc_master_corners,iproc_worker1_corners,iproc_worker2_corners, &
- iboolfaces_outer_core,npoin2D_faces_outer_core,iboolcorner_outer_core,NGLOB1D_RADIAL(IREGION_OUTER_CORE))
+ iboolfaces_outer_core,npoin2D_faces_outer_core,iboolcorner_outer_core,NGLOB1D_RADIAL(IREGION_OUTER_CORE), &
+ NGLOB2DMAX_XY_VAL_OC)
else if(iregion_code == IREGION_INNER_CORE) then
! inner_core
@@ -1882,7 +1883,8 @@
yread1D_leftxi_lefteta, yread1D_rightxi_lefteta, yread1D_leftxi_righteta, yread1D_rightxi_righteta, &
zread1D_leftxi_lefteta, zread1D_rightxi_lefteta, zread1D_leftxi_righteta, zread1D_rightxi_righteta, &
iprocfrom_faces,iprocto_faces,iproc_master_corners,iproc_worker1_corners,iproc_worker2_corners, &
- iboolfaces_inner_core,npoin2D_faces_inner_core,iboolcorner_inner_core,NGLOB1D_RADIAL(IREGION_INNER_CORE))
+ iboolfaces_inner_core,npoin2D_faces_inner_core,iboolcorner_inner_core,NGLOB1D_RADIAL(IREGION_INNER_CORE), &
+ NGLOB2DMAX_XY_VAL_IC)
else
stop 'DK DK incorrect region in merged code'
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/read_compute_parameters.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/read_compute_parameters.f90 2008-05-09 22:14:18 UTC (rev 11937)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/read_compute_parameters.f90 2008-05-09 23:11:56 UTC (rev 11938)
@@ -2195,7 +2195,8 @@
tmp_sum_nglob2D_eta = tmp_sum_nglob2D_eta + (((NEX_PER_PROC_ETA / ratio_sampling_array(iter_layer)) * &
(ner(iter_layer) - doubling*nb_lay_sb))*NGLLX*NGLLX) - &
((((NEX_PER_PROC_ETA / ratio_sampling_array(iter_layer))-1)*(ner(iter_layer) - doubling*nb_lay_sb)) + &
- ((NEX_PER_PROC_ETA / ratio_sampling_array(iter_layer))*(ner(iter_layer) - to_remove - doubling*nb_lay_sb))*NGLLX) + &
+ ((NEX_PER_PROC_ETA / ratio_sampling_array(iter_layer))* &
+ (ner(iter_layer) - to_remove - doubling*nb_lay_sb))*NGLLX) + &
(((NEX_PER_PROC_ETA / ratio_sampling_array(iter_layer))-1)*(ner(iter_layer) - to_remove - doubling*nb_lay_sb)) + &
doubling * (((NEX_PER_PROC_ETA / ratio_sampling_array(iter_layer))/divider) * (nglob_surf-nglob_edges_h) - &
((NEX_PER_PROC_ETA / ratio_sampling_array(iter_layer))/divider -1) * nglob_edge_v)
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/save_header_file.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/save_header_file.f90 2008-05-09 22:14:18 UTC (rev 11937)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/save_header_file.f90 2008-05-09 23:11:56 UTC (rev 11938)
@@ -395,8 +395,12 @@
write(IOUT,*) 'integer, parameter :: NCHUNKS_VAL = ',NCHUNKS
write(IOUT,*) 'integer, parameter :: NPROCTOT_VAL = ',NPROCTOT
- write(IOUT,*) 'integer, parameter :: NGLOB2DMAX_XY_VAL = ', &
- max(NGLOB2DMAX_XMIN_XMAX(IREGION_CRUST_MANTLE),NGLOB2DMAX_YMIN_YMAX(IREGION_CRUST_MANTLE))
+ write(IOUT,*) 'integer, parameter :: NGLOB2DMAX_XY_VAL_CM = ', &
+ max(NGLOB2DMAX_XMIN_XMAX(IREGION_CRUST_MANTLE),NGLOB2DMAX_YMIN_YMAX(IREGION_CRUST_MANTLE))
+ write(IOUT,*) 'integer, parameter :: NGLOB2DMAX_XY_VAL_OC = ', &
+ max(NGLOB2DMAX_XMIN_XMAX(IREGION_OUTER_CORE),NGLOB2DMAX_YMIN_YMAX(IREGION_OUTER_CORE))
+ write(IOUT,*) 'integer, parameter :: NGLOB2DMAX_XY_VAL_IC = ', &
+ max(NGLOB2DMAX_XMIN_XMAX(IREGION_INNER_CORE),NGLOB2DMAX_YMIN_YMAX(IREGION_INNER_CORE))
if(NCHUNKS == 1 .or. NCHUNKS == 2) then
NCORNERSCHUNKS = 1
Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/specfem3D.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/specfem3D.f90 2008-05-09 22:14:18 UTC (rev 11937)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/specfem3D.f90 2008-05-09 23:11:56 UTC (rev 11938)
@@ -311,9 +311,9 @@
! indirect addressing for each message for faces and corners of the chunks
! a given slice can belong to at most one corner and at most two faces
- integer NGLOB2DMAX_XY
- integer, dimension(NGLOB2DMAX_XY_VAL,NUMFACES_SHARED) :: iboolfaces_crust_mantle, &
- iboolfaces_outer_core,iboolfaces_inner_core
+ integer, dimension(NGLOB2DMAX_XY_VAL_CM,NUMFACES_SHARED) :: iboolfaces_crust_mantle
+ integer, dimension(NGLOB2DMAX_XY_VAL_OC,NUMFACES_SHARED) :: iboolfaces_outer_core
+ integer, dimension(NGLOB2DMAX_XY_VAL_IC,NUMFACES_SHARED) :: iboolfaces_inner_core
! buffers for send and receive between faces of the slices and the chunks
! we use the same buffers to assemble scalars and vectors because vectors are
@@ -1013,10 +1013,6 @@
! make ellipticity
if(ELLIPTICITY_VAL) call make_ellipticity(nspl,rspl,espl,espl2,ONE_CRUST)
-! define maximum size for message buffers
-! use number of elements found in the mantle since it is the largest region
- NGLOB2DMAX_XY = max(NGLOB2DMAX_XMIN_XMAX(IREGION_CRUST_MANTLE),NGLOB2DMAX_YMIN_YMAX(IREGION_CRUST_MANTLE))
-
! number of corners and faces shared between chunks and number of message types
if(NCHUNKS_VAL == 1 .or. NCHUNKS_VAL == 2) then
NCORNERSCHUNKS = 1
@@ -1383,7 +1379,7 @@
buffer_send_chunkcorners_scalar,buffer_recv_chunkcorners_scalar, &
NUMMSGS_FACES,NUM_MSG_TYPES,NCORNERSCHUNKS, &
NPROC_XI,NPROC_ETA,NGLOB1D_RADIAL(IREGION_CRUST_MANTLE), &
- NGLOB2DMAX_XMIN_XMAX(IREGION_CRUST_MANTLE),NGLOB2DMAX_YMIN_YMAX(IREGION_CRUST_MANTLE),NGLOB2DMAX_XY,NCHUNKS)
+ NGLOB2DMAX_XMIN_XMAX(IREGION_CRUST_MANTLE),NGLOB2DMAX_YMIN_YMAX(IREGION_CRUST_MANTLE),NGLOB2DMAX_XY_VAL_CM,NCHUNKS)
endif
! crust and mantle
@@ -1398,7 +1394,7 @@
buffer_send_chunkcorners_scalar,buffer_recv_chunkcorners_scalar, &
NUMMSGS_FACES,NUM_MSG_TYPES,NCORNERSCHUNKS, &
NPROC_XI,NPROC_ETA,NGLOB1D_RADIAL(IREGION_CRUST_MANTLE), &
- NGLOB2DMAX_XMIN_XMAX(IREGION_CRUST_MANTLE),NGLOB2DMAX_YMIN_YMAX(IREGION_CRUST_MANTLE),NGLOB2DMAX_XY,NCHUNKS)
+ NGLOB2DMAX_XMIN_XMAX(IREGION_CRUST_MANTLE),NGLOB2DMAX_YMIN_YMAX(IREGION_CRUST_MANTLE),NGLOB2DMAX_XY_VAL_CM,NCHUNKS)
! outer core
call assemble_MPI_scalar(myrank,rmass_outer_core,NGLOB_OUTER_CORE, &
@@ -1412,7 +1408,7 @@
buffer_send_chunkcorners_scalar,buffer_recv_chunkcorners_scalar, &
NUMMSGS_FACES,NUM_MSG_TYPES,NCORNERSCHUNKS, &
NPROC_XI,NPROC_ETA,NGLOB1D_RADIAL(IREGION_OUTER_CORE), &
- NGLOB2DMAX_XMIN_XMAX(IREGION_OUTER_CORE),NGLOB2DMAX_YMIN_YMAX(IREGION_OUTER_CORE),NGLOB2DMAX_XY,NCHUNKS)
+ NGLOB2DMAX_XMIN_XMAX(IREGION_OUTER_CORE),NGLOB2DMAX_YMIN_YMAX(IREGION_OUTER_CORE),NGLOB2DMAX_XY_VAL_OC,NCHUNKS)
! inner core
call assemble_MPI_scalar(myrank,rmass_inner_core,NGLOB_INNER_CORE, &
@@ -1426,7 +1422,7 @@
buffer_send_chunkcorners_scalar,buffer_recv_chunkcorners_scalar, &
NUMMSGS_FACES,NUM_MSG_TYPES,NCORNERSCHUNKS, &
NPROC_XI,NPROC_ETA,NGLOB1D_RADIAL(IREGION_INNER_CORE), &
- NGLOB2DMAX_XMIN_XMAX(IREGION_INNER_CORE),NGLOB2DMAX_YMIN_YMAX(IREGION_INNER_CORE),NGLOB2DMAX_XY,NCHUNKS)
+ NGLOB2DMAX_XMIN_XMAX(IREGION_INNER_CORE),NGLOB2DMAX_YMIN_YMAX(IREGION_INNER_CORE),NGLOB2DMAX_XY_VAL_IC,NCHUNKS)
if(myrank == 0) write(IMAIN,*) 'end assembling MPI mass matrix'
@@ -2105,7 +2101,7 @@
buffer_send_chunkcorners_scalar,buffer_recv_chunkcorners_scalar, &
NUMMSGS_FACES,NUM_MSG_TYPES,NCORNERSCHUNKS, &
NPROC_XI,NPROC_ETA,NGLOB1D_RADIAL(IREGION_OUTER_CORE), &
- NGLOB2DMAX_XMIN_XMAX(IREGION_OUTER_CORE),NGLOB2DMAX_YMIN_YMAX(IREGION_OUTER_CORE),NGLOB2DMAX_XY,NCHUNKS)
+ NGLOB2DMAX_XMIN_XMAX(IREGION_OUTER_CORE),NGLOB2DMAX_YMIN_YMAX(IREGION_OUTER_CORE),NGLOB2DMAX_XY_VAL_OC,NCHUNKS)
! multiply by the inverse of the mass matrix and update velocity
do i=1,NGLOB_OUTER_CORE
@@ -2281,9 +2277,7 @@
! crust/mantle and inner core handled in the same call
! in order to reduce the number of MPI messages by 2
- call assemble_MPI_vector(myrank, &
- accel_crust_mantle,NGLOB_CRUST_MANTLE, &
- accel_inner_core,NGLOB_INNER_CORE, &
+ call assemble_MPI_vector(myrank,accel_crust_mantle,accel_inner_core, &
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(1),npoin2D_eta_crust_mantle(1), &
@@ -2296,12 +2290,8 @@
buffer_send_faces,buffer_received_faces,npoin2D_max_all, &
buffer_send_chunkcorners_vector,buffer_recv_chunkcorners_vector, &
NUMMSGS_FACES,NUM_MSG_TYPES,NCORNERSCHUNKS, &
- NPROC_XI,NPROC_ETA, &
- NGLOB1D_RADIAL(IREGION_CRUST_MANTLE), &
- NGLOB2DMAX_XMIN_XMAX(IREGION_CRUST_MANTLE),NGLOB2DMAX_YMIN_YMAX(IREGION_CRUST_MANTLE), &
- NGLOB1D_RADIAL(IREGION_INNER_CORE), &
- NGLOB2DMAX_XMIN_XMAX(IREGION_INNER_CORE),NGLOB2DMAX_YMIN_YMAX(IREGION_INNER_CORE), &
- NGLOB2DMAX_XY,NCHUNKS)
+ NPROC_XI,NPROC_ETA,NGLOB1D_RADIAL(IREGION_CRUST_MANTLE), &
+ NGLOB1D_RADIAL(IREGION_INNER_CORE),NCHUNKS)
!---
!--- use buffers to assemble forces with the central cube
More information about the cig-commits
mailing list