[cig-commits] r12585 - in seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta: . DATA OUTPUT_FILES setup src

dkomati1 at geodynamics.org dkomati1 at geodynamics.org
Thu Aug 7 16:02:22 PDT 2008


Author: dkomati1
Date: 2008-08-07 16:02:22 -0700 (Thu, 07 Aug 2008)
New Revision: 12585

Added:
   seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/ok_until_here.f90
Modified:
   seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/DATA/CMTSOLUTION
   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/setup/constants.h
   seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/call_meshfem1.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/call_meshfem2.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/call_specfem1.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/call_specfem2.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/create_chunk_buffers.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/create_header_file.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/declarations_main.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/declarations_mesher.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/locate_sources.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/main_program.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/meshfem3D.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/save_header_file.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/specfem3D.f90
Log:
The merged version now works for an isotropic elastic and/or acoustic medium;
I still need to convert some arrays from heap to stack.
I also need to make sure that anisotropy works, and to implement the merged
version of attenuation (ignored for now)


Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/DATA/CMTSOLUTION
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/DATA/CMTSOLUTION	2008-08-07 22:56:36 UTC (rev 12584)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/DATA/CMTSOLUTION	2008-08-07 23:02:22 UTC (rev 12585)
@@ -2,7 +2,7 @@
 event name:     060994A
 time shift:      0.0000
 half duration: 100.0000
-latitude:       43.8200
+latitude:       87.8200
 longitude:      12.2500
 depth:         647.1000
 Mrr:      -7.600000e+27

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/Makefile
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/Makefile	2008-08-07 22:56:36 UTC (rev 12584)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/Makefile	2008-08-07 23:02:22 UTC (rev 12585)
@@ -25,15 +25,19 @@
 #
 #=====================================================================
 
-# Makefile.  Generated from Makefile.in by configure.
+# Makefile
 
+# you need to add "ulimit -S -s unlimited" to your ~/.bash_profile
+# or "limit stacksize unlimited" to your ~/.cshrc before running the code,
+# because it makes extensive use of the memory stack to store arrays
+
 #
 # Intel ifort
 #
 FC = ifort
 MPIFC = mpif90
 #FLAGS_NO_CHECK = -O1 -vec-report0 -e95 -implicitnone -warn truncated_source -warn argument_checking -warn unused -warn declarations -std95 -check nobounds -align sequence -assume byterecl -ftrapuv -fpe0 -ftz -traceback
-FLAGS_NO_CHECK = -O1 -vec-report0 -e95 -implicitnone -warn truncated_source -warn argument_checking -warn declarations -std95 -check nobounds -align sequence -assume byterecl -ftrapuv -fpe0 -ftz -traceback
+FLAGS_NO_CHECK = -O1 -vec-report0 -e95 -implicitnone -warn truncated_source -warn argument_checking -warn unused -warn declarations -std95 -check all -align sequence -assume byterecl -ftrapuv -fpe0 -ftz -traceback
 #FLAGS_NO_CHECK = -O3 -xP -vec-report0 -e95 -implicitnone -warn truncated_source -warn argument_checking -warn unused -warn declarations -std95 -check nobounds -align sequence -assume byterecl -fpe3 -ftz
 
 #
@@ -41,7 +45,7 @@
 #
 #FC = gfortran
 #MPIFC = /opt/mpich2_gfortran/bin/mpif90
-#FLAGS_NO_CHECK = -std=gnu -fimplicit-none -frange-check -O3 -fmax-errors=10 -pedantic -pedantic-errors -Waliasing -Wampersand -Wcharacter-truncation -Wline-truncation -Wsurprising -Wno-tabs -Wunderflow -fno-trapping-math
+#FLAGS_NO_CHECK = -std=gnu -fimplicit-none -frange-check -O3 -fmax-errors=10 -pedantic -pedantic-errors -Waliasing -Wampersand -Wcharacter-truncation -Wline-truncation -Wsurprising -Wno-tabs -Wunderflow -fno-trapping-math  -fbounds-check
 
 #
 # Portland pgf90
@@ -98,12 +102,12 @@
 	$O/count_number_of_sources.o \
 	$O/create_central_cube_buffers.o \
 	$O/create_chunk_buffers.o \
-	$O/create_header_file.o \
 	$O/create_regions_mesh.o \
 	$O/crustal_model.o \
 	$O/define_derivation_matrices.o \
 	$O/define_superbrick.o \
 	$O/euler_angles.o \
+	$O/meshfem3D.o \
 	$O/get_MPI_1D_buffers.o \
 	$O/get_MPI_cutplanes_eta.o \
 	$O/get_MPI_cutplanes_xi.o \
@@ -194,7 +198,7 @@
 ####
 
 # rules for the main programs
-XMESHFEM_OBJECTS = $O/meshfem3D.o $O/exit_mpi.o $(SOLVER_ARRAY_OBJECTS) $(LIBSPECFEM)
+XMESHFEM_OBJECTS = $O/main_program.o $O/exit_mpi.o $(SOLVER_ARRAY_OBJECTS) $(LIBSPECFEM)
 xspecfem3D: $(XMESHFEM_OBJECTS)
 ## use MPI here
 	${MPIFCCOMPILE_CHECK} -o $(BIN)/xspecfem3D $(XMESHFEM_OBJECTS) $(MPILIBS)
@@ -366,6 +370,10 @@
 	${FCCOMPILE_CHECK} -c -o $O/euler_angles.o ${FCFLAGS_f90} $S/euler_angles.f90
 
 ## use MPI here
+$O/main_program.o: $(SPECINC)/constants.h $S/main_program.f90
+	${MPIFCCOMPILE_CHECK} -c -o $O/main_program.o ${FCFLAGS_f90} $S/main_program.f90
+
+## use MPI here
 $O/meshfem3D.o: $(SPECINC)/constants.h $S/meshfem3D.f90
 	${MPIFCCOMPILE_CHECK} -c -o $O/meshfem3D.o ${FCFLAGS_f90} $S/meshfem3D.f90
 
@@ -493,3 +501,4 @@
 $(OUTPUT_FILES_INC)/values_from_mesher.h: $(BIN)/xcreate_header_file
 	mkdir -p $(OUTPUT_FILES_INC)
 	$(BIN)/xcreate_header_file
+

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-07 22:56:36 UTC (rev 12584)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/OUTPUT_FILES/values_from_mesher.h	2008-08-07 23:02:22 UTC (rev 12585)
@@ -6,11 +6,11 @@
  ! ---------------
  !
  !
- ! number of chunks =            1
+ ! number of chunks =            3
  !
  ! these statistics do not include the central cube
  !
- ! number of processors =            4
+ ! number of processors =           12
  !
  ! maximum number of points per region =       576013
  !
@@ -67,6 +67,7 @@
  ! average size of a spectral element in km =    156.3679    
  !
  ! number of time steps =         7900
+ ! value of a time step DT =   0.190000000000000     
  !
  ! number of seismic sources =            1
  !
@@ -82,8 +83,8 @@
  !   (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.325386047363281       GB
- !                                      =   3.177598118782043E-004  TB
+ ! size of static arrays for all slices =   0.976158142089844       GB
+ !                                      =   9.532794356346130E-004  TB
  !
  
  integer, parameter :: NEX_XI_VAL =           64
@@ -156,12 +157,12 @@
  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 :: NCHUNKS_VAL =            3
+ integer, parameter :: NPROCTOT_VAL =           12
  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 :: NUMMSGS_FACES_VAL =            6
  integer, parameter :: NCORNERSCHUNKS_VAL =            1
  integer, parameter :: ATT1 =            1
  integer, parameter :: ATT2 =            1

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/setup/constants.h
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/setup/constants.h	2008-08-07 22:56:36 UTC (rev 12584)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/setup/constants.h	2008-08-07 23:02:22 UTC (rev 12585)
@@ -56,9 +56,9 @@
 ! local file unit for output of buffers
   integer, parameter :: IOUT_BUFFERS = 35
 ! uncomment this to write messages to a text file
-  integer, parameter :: IMAIN = 42
+! integer, parameter :: IMAIN = 42
 ! uncomment this to write messages to the screen (slows down the code)
-! integer, parameter :: IMAIN = ISTANDARD_OUTPUT
+  integer, parameter :: IMAIN = ISTANDARD_OUTPUT
 
 ! R_EARTH is the radius of the bottom of the oceans (radius of Earth in m)
   double precision, parameter :: R_EARTH = 6371000.d0
@@ -125,8 +125,8 @@
 ! was found by trial and error
   double precision, parameter :: SOURCE_DECAY_MIMIC_TRIANGLE = 1.628d0
 
-! maximum number of sources to locate simultaneously
-  integer, parameter :: NSOURCES_SUBSET_MAX = 1000
+! maximum number of sources to locate simultaneously (do not set it too high otherwise you will use a lot of memory)
+  integer, parameter :: NSOURCES_SUBSET_MAX = 100
 
 ! distance threshold (in km) above which we consider that a receiver
 ! is located outside the mesh and therefore excluded from the station list

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/call_meshfem1.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/call_meshfem1.f90	2008-08-07 22:56:36 UTC (rev 12584)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/call_meshfem1.f90	2008-08-07 23:02:22 UTC (rev 12585)
@@ -1,5 +1,23 @@
 
 !! DK DK created this for merged version
 
-  call meshfem3D()
+  call meshfem3D( &
+  myrank,sizeprocs,addressing,ichunk_slice,iproc_xi_slice,iproc_eta_slice,ibathy_topo,NSOURCES, &
+  NTSTEP_BETWEEN_OUTPUT_SEISMOS,ibool_crust_mantle,ibool_outer_core,ibool_inner_core, &
+  idoubling_crust_mantle,idoubling_inner_core,ibelm_bottom_crust_mantle, ibelm_bottom_outer_core, ibelm_top_outer_core, &
+ibelm_xmin_inner_core,ibelm_xmax_inner_core,ibelm_ymin_inner_core,ibelm_ymax_inner_core,ibelm_bottom_inner_core, &
+ibelm_top_inner_core,iboolleft_xi_crust_mantle,iboolright_xi_crust_mantle, iboolleft_eta_crust_mantle, &
+iboolright_eta_crust_mantle,iboolleft_xi_outer_core,iboolright_xi_outer_core,iboolleft_eta_outer_core,iboolright_eta_outer_core, &
+  iboolleft_xi_inner_core,iboolright_xi_inner_core, iboolleft_eta_inner_core,iboolright_eta_inner_core,&
+  jacobian2D_bottom_outer_core,jacobian2D_top_outer_core, &
+  normal_bottom_outer_core, normal_top_outer_core,kappavstore_crust_mantle,muvstore_crust_mantle, &
+  kappahstore_crust_mantle,muhstore_crust_mantle,eta_anisostore_crust_mantle,kappavstore_inner_core,muvstore_inner_core, &
+  rmass_crust_mantle, rmass_outer_core, rmass_inner_core, &
+  nspec2D_xmin_inner_core,nspec2D_xmax_inner_core,nspec2D_ymin_inner_core,nspec2D_ymax_inner_core, &
+iprocfrom_faces,iprocto_faces,imsg_type,iproc_master_corners,iproc_worker1_corners,iproc_worker2_corners, &
+  iboolfaces_crust_mantle,iboolfaces_outer_core,iboolfaces_inner_core, &
+  iboolcorner_crust_mantle,iboolcorner_outer_core,iboolcorner_inner_core, &
+  npoin2D_faces_crust_mantle,npoin2D_xi_crust_mantle,npoin2D_eta_crust_mantle, &
+  npoin2D_faces_outer_core,npoin2D_xi_outer_core,npoin2D_eta_outer_core, &
+  npoin2D_faces_inner_core,npoin2D_xi_inner_core,npoin2D_eta_inner_core)
 

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/call_meshfem2.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/call_meshfem2.f90	2008-08-07 22:56:36 UTC (rev 12584)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/call_meshfem2.f90	2008-08-07 23:02:22 UTC (rev 12585)
@@ -1,5 +1,23 @@
 
 !! DK DK created this for merged version
 
-  subroutine meshfem3D()
+  subroutine meshfem3D( &
+  myrank,sizeprocs,addressing,ichunk_slice,iproc_xi_slice,iproc_eta_slice,ibathy_topo,NSOURCES, &
+  NTSTEP_BETWEEN_OUTPUT_SEISMOS,ibool_crust_mantle,ibool_outer_core,ibool_inner_core, &
+  idoubling_crust_mantle,idoubling_inner_core,ibelm_bottom_crust_mantle, ibelm_bottom_outer_core, ibelm_top_outer_core, &
+ibelm_xmin_inner_core,ibelm_xmax_inner_core,ibelm_ymin_inner_core,ibelm_ymax_inner_core,ibelm_bottom_inner_core, &
+ibelm_top_inner_core,iboolleft_xi_crust_mantle,iboolright_xi_crust_mantle, iboolleft_eta_crust_mantle, &
+iboolright_eta_crust_mantle,iboolleft_xi_outer_core,iboolright_xi_outer_core,iboolleft_eta_outer_core,iboolright_eta_outer_core, &
+  iboolleft_xi_inner_core,iboolright_xi_inner_core, iboolleft_eta_inner_core,iboolright_eta_inner_core,&
+  jacobian2D_bottom_outer_core,jacobian2D_top_outer_core, &
+  normal_bottom_outer_core, normal_top_outer_core,kappavstore_crust_mantle,muvstore_crust_mantle, &
+  kappahstore_crust_mantle,muhstore_crust_mantle,eta_anisostore_crust_mantle,kappavstore_inner_core,muvstore_inner_core, &
+  rmass_crust_mantle, rmass_outer_core, rmass_inner_core, &
+  nspec2D_xmin_inner_core,nspec2D_xmax_inner_core,nspec2D_ymin_inner_core,nspec2D_ymax_inner_core, &
+iprocfrom_faces,iprocto_faces,imsg_type,iproc_master_corners,iproc_worker1_corners,iproc_worker2_corners, &
+  iboolfaces_crust_mantle,iboolfaces_outer_core,iboolfaces_inner_core, &
+  iboolcorner_crust_mantle,iboolcorner_outer_core,iboolcorner_inner_core, &
+  npoin2D_faces_crust_mantle,npoin2D_xi_crust_mantle,npoin2D_eta_crust_mantle, &
+  npoin2D_faces_outer_core,npoin2D_xi_outer_core,npoin2D_eta_outer_core, &
+  npoin2D_faces_inner_core,npoin2D_xi_inner_core,npoin2D_eta_inner_core)
 

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/call_specfem1.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/call_specfem1.f90	2008-08-07 22:56:36 UTC (rev 12584)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/call_specfem1.f90	2008-08-07 23:02:22 UTC (rev 12585)
@@ -7,9 +7,9 @@
   one_minus_sum_beta_crust_mantle,factor_scale_crust_mantle, one_minus_sum_beta_inner_core,factor_scale_inner_core, &
   factor_common_crust_mantle,factor_common_inner_core,factor_common_crust_mantle_dble, factor_common_inner_core_dble, &
 !! DK DK already computed
-  myrank,sizeprocs,addressing,ichunk_slice,iproc_xi_slice,iproc_eta_slice,ibathy_topo,NSOURCES,npoin2D_max_all,NDIM_smaller_buffers,nrec, &
-  NTSTEP_BETWEEN_OUTPUT_SEISMOS,ibool_crust_mantle, ibool_outer_core, ibool_inner_core, idoubling_crust_mantle,idoubling_inner_core, &
-ibelm_bottom_crust_mantle, ibelm_bottom_outer_core, ibelm_top_outer_core, &
+  myrank,sizeprocs,addressing,ichunk_slice,iproc_xi_slice,iproc_eta_slice,ibathy_topo,NSOURCES,npoin2D_max_all, &
+  NDIM_smaller_buffers,nrec,NTSTEP_BETWEEN_OUTPUT_SEISMOS,ibool_crust_mantle,ibool_outer_core,ibool_inner_core, &
+  idoubling_crust_mantle,idoubling_inner_core,ibelm_bottom_crust_mantle, ibelm_bottom_outer_core, ibelm_top_outer_core, &
 ibelm_xmin_inner_core,ibelm_xmax_inner_core,ibelm_ymin_inner_core,ibelm_ymax_inner_core,ibelm_bottom_inner_core, &
 ibelm_top_inner_core,iboolleft_xi_crust_mantle,iboolright_xi_crust_mantle, iboolleft_eta_crust_mantle, &
 iboolright_eta_crust_mantle,iboolleft_xi_outer_core,iboolright_xi_outer_core,iboolleft_eta_outer_core,iboolright_eta_outer_core, &
@@ -24,8 +24,5 @@
   iboolcorner_crust_mantle,iboolcorner_outer_core,iboolcorner_inner_core, &
   npoin2D_faces_crust_mantle,npoin2D_xi_crust_mantle,npoin2D_eta_crust_mantle, &
   npoin2D_faces_outer_core,npoin2D_xi_outer_core,npoin2D_eta_outer_core, &
-  npoin2D_faces_inner_core,npoin2D_xi_inner_core,npoin2D_eta_inner_core, &
-  xelm_store_crust_mantle,yelm_store_crust_mantle,zelm_store_crust_mantle, &
-  xelm_store_outer_core,yelm_store_outer_core,zelm_store_outer_core, &
-  xelm_store_inner_core,yelm_store_inner_core,zelm_store_inner_core)
+  npoin2D_faces_inner_core,npoin2D_xi_inner_core,npoin2D_eta_inner_core)
 

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/call_specfem2.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/call_specfem2.f90	2008-08-07 22:56:36 UTC (rev 12584)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/call_specfem2.f90	2008-08-07 23:02:22 UTC (rev 12585)
@@ -7,9 +7,9 @@
   one_minus_sum_beta_crust_mantle,factor_scale_crust_mantle, one_minus_sum_beta_inner_core,factor_scale_inner_core, &
   factor_common_crust_mantle,factor_common_inner_core,factor_common_crust_mantle_dble, factor_common_inner_core_dble, &
 !! DK DK already computed
-  myrank,sizeprocs,addressing,ichunk_slice,iproc_xi_slice,iproc_eta_slice,ibathy_topo,NSOURCES,npoin2D_max_all,NDIM_smaller_buffers,nrec, &
-  NTSTEP_BETWEEN_OUTPUT_SEISMOS,ibool_crust_mantle, ibool_outer_core, ibool_inner_core, idoubling_crust_mantle,idoubling_inner_core, &
-ibelm_bottom_crust_mantle, ibelm_bottom_outer_core, ibelm_top_outer_core, &
+  myrank,sizeprocs,addressing,ichunk_slice,iproc_xi_slice,iproc_eta_slice,ibathy_topo,NSOURCES,npoin2D_max_all, &
+  NDIM_smaller_buffers,nrec,NTSTEP_BETWEEN_OUTPUT_SEISMOS,ibool_crust_mantle,ibool_outer_core,ibool_inner_core, &
+  idoubling_crust_mantle,idoubling_inner_core,ibelm_bottom_crust_mantle, ibelm_bottom_outer_core, ibelm_top_outer_core, &
 ibelm_xmin_inner_core,ibelm_xmax_inner_core,ibelm_ymin_inner_core,ibelm_ymax_inner_core,ibelm_bottom_inner_core, &
 ibelm_top_inner_core,iboolleft_xi_crust_mantle,iboolright_xi_crust_mantle, iboolleft_eta_crust_mantle, &
 iboolright_eta_crust_mantle,iboolleft_xi_outer_core,iboolright_xi_outer_core,iboolleft_eta_outer_core,iboolright_eta_outer_core, &
@@ -24,8 +24,5 @@
   iboolcorner_crust_mantle,iboolcorner_outer_core,iboolcorner_inner_core, &
   npoin2D_faces_crust_mantle,npoin2D_xi_crust_mantle,npoin2D_eta_crust_mantle, &
   npoin2D_faces_outer_core,npoin2D_xi_outer_core,npoin2D_eta_outer_core, &
-  npoin2D_faces_inner_core,npoin2D_xi_inner_core,npoin2D_eta_inner_core, &
-  xelm_store_crust_mantle,yelm_store_crust_mantle,zelm_store_crust_mantle, &
-  xelm_store_outer_core,yelm_store_outer_core,zelm_store_outer_core, &
-  xelm_store_inner_core,yelm_store_inner_core,zelm_store_inner_core)
+  npoin2D_faces_inner_core,npoin2D_xi_inner_core,npoin2D_eta_inner_core)
 

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/create_chunk_buffers.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/create_chunk_buffers.f90	2008-08-07 22:56:36 UTC (rev 12584)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/create_chunk_buffers.f90	2008-08-07 23:02:22 UTC (rev 12585)
@@ -111,7 +111,7 @@
 
 ! pairs generated theoretically
 ! four sides for each of the three types of messages
-  integer, dimension(:), allocatable :: npoin2D_send,npoin2D_receive
+  integer, dimension(NUMMSGS_FACES_VAL) :: npoin2D_send,npoin2D_receive
 
 ! 1D buffers to remove points belonging to corners
   integer ibool1D_leftxi_lefteta(NGLOB1D_RADIAL_MAX)
@@ -130,7 +130,7 @@
   double precision, dimension(NGLOB1D_RADIAL_MAX) :: xread1D,yread1D,zread1D
 
 ! arrays to assemble the corners (3 processors for each corner)
-  integer, dimension(:,:), allocatable :: iprocscorners,itypecorner
+  integer, dimension(3,NCORNERSCHUNKS_VAL) :: iprocscorners,itypecorner
 
   integer ichunk_send,iproc_xi_send,iproc_eta_send
   integer ichunk_receive,iproc_xi_receive,iproc_eta_receive

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/create_header_file.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/create_header_file.f90	2008-08-07 22:56:36 UTC (rev 12584)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/create_header_file.f90	2008-08-07 23:02:22 UTC (rev 12585)
@@ -198,7 +198,7 @@
          NGLOB_CRUST_MANTLE_ADJOINT,NGLOB_OUTER_CORE_ADJOINT, &
          NGLOB_INNER_CORE_ADJOINT,NSPEC_OUTER_CORE_ROT_ADJOINT, &
          NSPEC_CRUST_MANTLE_STACEY,NSPEC_OUTER_CORE_STACEY, &
-         NGLOB_CRUST_MANTLE_OCEANS,NSPEC_OUTER_CORE_ROTATION)
+         NGLOB_CRUST_MANTLE_OCEANS,NSPEC_OUTER_CORE_ROTATION,DT)
 
   print *
   print *,'edit file OUTPUT_FILES/values_from_mesher.h to see some statistics about the mesh'
@@ -212,6 +212,7 @@
   print *,'total points per slice = ',sum(nglob)
   print *
   print *,'number of time steps = ',NSTEP
+  print *,'value of a time step DT = ',DT
   print *
 
   print *,'on NEC SX, make sure "loopcnt=" parameter'

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/declarations_main.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/declarations_main.f90	2008-08-07 22:56:36 UTC (rev 12584)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/declarations_main.f90	2008-08-07 23:02:22 UTC (rev 12585)
@@ -1,11 +1,4 @@
 
-!! DK DK added this for merged version
-!! DK DK stored in single precision for merged version, check if it precise enough (probably yes)
-  real(kind=CUSTOM_REAL), dimension(:,:), allocatable :: &
-          xelm_store_crust_mantle,yelm_store_crust_mantle,zelm_store_crust_mantle, &
-          xelm_store_outer_core,yelm_store_outer_core,zelm_store_outer_core, &
-          xelm_store_inner_core,yelm_store_inner_core,zelm_store_inner_core
-
 !!!!!!!!!!!!!!!! DK DK for merged version, all the arrays below are allocated statically instead
 !!!!!!!!!!!!!!!! DK DK for merged version, all the arrays below are allocated statically instead
 !!!!!!!!!!!!!!!! DK DK for merged version, all the arrays below are allocated statically instead
@@ -23,8 +16,6 @@
              npoin2D_xi_inner_core,npoin2D_eta_inner_core
 
 ! number of elements on the boundaries
-  integer :: nspec2D_xmin_crust_mantle,nspec2D_xmax_crust_mantle,nspec2D_ymin_crust_mantle,nspec2D_ymax_crust_mantle
-  integer :: nspec2D_xmin_outer_core,nspec2D_xmax_outer_core,nspec2D_ymin_outer_core,nspec2D_ymax_outer_core
   integer :: nspec2D_xmin_inner_core,nspec2D_xmax_inner_core,nspec2D_ymin_inner_core,nspec2D_ymax_inner_core
 
   real(kind=CUSTOM_REAL), dimension(NGLOB_CRUST_MANTLE) :: rmass_crust_mantle
@@ -40,50 +31,17 @@
 
 !! DK DK added this for the merged version
 !! DK DK these arrays are useless in the solver and will therefore be allocated with a dummy size of 1
-  real(kind=CUSTOM_REAL), dimension(1,1,1,1) :: kappahstore_inner_core,muhstore_inner_core,eta_anisostore_inner_core
-  real(kind=CUSTOM_REAL), dimension(1,1,1,1) :: kappavstore_outer_core,muvstore_outer_core
-  real(kind=CUSTOM_REAL), dimension(1,1,1,1) :: kappahstore_outer_core,muhstore_outer_core,eta_anisostore_outer_core
 
 ! 2-D jacobians and normals
-  real(kind=CUSTOM_REAL), dimension(NGLLY,NGLLZ,NSPEC2DMAX_XMIN_XMAX_IC) :: jacobian2D_xmin_inner_core,jacobian2D_xmax_inner_core
-  real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLZ,NSPEC2DMAX_YMIN_YMAX_IC) :: jacobian2D_ymin_inner_core,jacobian2D_ymax_inner_core
-  real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NSPEC2D_BOTTOM_IC) :: jacobian2D_bottom_inner_core
-  real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NSPEC2D_TOP_IC) :: jacobian2D_top_inner_core
 
-  real(kind=CUSTOM_REAL), dimension(NDIM,NGLLY,NGLLZ,NSPEC2DMAX_XMIN_XMAX_IC) :: normal_xmin_inner_core,normal_xmax_inner_core
-  real(kind=CUSTOM_REAL), dimension(NDIM,NGLLX,NGLLZ,NSPEC2DMAX_YMIN_YMAX_IC) :: normal_ymin_inner_core,normal_ymax_inner_core
-  real(kind=CUSTOM_REAL), dimension(NDIM,NGLLX,NGLLY,NSPEC2D_BOTTOM_IC) :: normal_bottom_inner_core
-  real(kind=CUSTOM_REAL), dimension(NDIM,NGLLX,NGLLY,NSPEC2D_TOP_IC) :: normal_top_inner_core
-
-  integer, dimension(NSPEC2DMAX_XMIN_XMAX_CM) :: ibelm_xmin_crust_mantle,ibelm_xmax_crust_mantle
-  integer, dimension(NSPEC2DMAX_YMIN_YMAX_CM) :: ibelm_ymin_crust_mantle,ibelm_ymax_crust_mantle
   integer, dimension(NSPEC2D_BOTTOM_CM) :: ibelm_bottom_crust_mantle
-  integer, dimension(NSPEC2D_TOP_CM) :: ibelm_top_crust_mantle
 
-  real(kind=CUSTOM_REAL), dimension(NGLLY,NGLLZ,NSPEC2DMAX_XMIN_XMAX_CM) :: &
-    jacobian2D_xmin_crust_mantle,jacobian2D_xmax_crust_mantle
-  real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLZ,NSPEC2DMAX_YMIN_YMAX_CM) :: &
-    jacobian2D_ymin_crust_mantle,jacobian2D_ymax_crust_mantle
-  real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NSPEC2D_BOTTOM_CM) :: jacobian2D_bottom_crust_mantle
-  real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NSPEC2D_TOP_CM) :: jacobian2D_top_crust_mantle
-
-  real(kind=CUSTOM_REAL), dimension(NDIM,NGLLY,NGLLZ,NSPEC2DMAX_XMIN_XMAX_CM) :: normal_xmin_crust_mantle,normal_xmax_crust_mantle
-  real(kind=CUSTOM_REAL), dimension(NDIM,NGLLX,NGLLY,NSPEC2DMAX_YMIN_YMAX_CM) :: normal_ymin_crust_mantle,normal_ymax_crust_mantle
-  real(kind=CUSTOM_REAL), dimension(NDIM,NGLLX,NGLLY,NSPEC2D_BOTTOM_CM) :: normal_bottom_crust_mantle
-  real(kind=CUSTOM_REAL), dimension(NDIM,NGLLX,NGLLY,NSPEC2D_TOP_CM) :: normal_top_crust_mantle
-
-  integer, dimension(NSPEC2DMAX_XMIN_XMAX_OC) :: ibelm_xmin_outer_core,ibelm_xmax_outer_core
-  integer, dimension(NSPEC2DMAX_YMIN_YMAX_OC) :: ibelm_ymin_outer_core,ibelm_ymax_outer_core
   integer, dimension(NSPEC2D_BOTTOM_OC) :: ibelm_bottom_outer_core
   integer, dimension(NSPEC2D_TOP_OC) :: ibelm_top_outer_core
 
-  real(kind=CUSTOM_REAL), dimension(NDIM,NGLLY,NGLLZ,NSPEC2DMAX_XMIN_XMAX_OC) :: normal_xmin_outer_core,normal_xmax_outer_core
-  real(kind=CUSTOM_REAL), dimension(NDIM,NGLLX,NGLLZ,NSPEC2DMAX_YMIN_YMAX_OC) :: normal_ymin_outer_core,normal_ymax_outer_core
   real(kind=CUSTOM_REAL), dimension(NDIM,NGLLX,NGLLY,NSPEC2D_BOTTOM_OC) :: normal_bottom_outer_core
   real(kind=CUSTOM_REAL), dimension(NDIM,NGLLX,NGLLY,NSPEC2D_TOP_OC) :: normal_top_outer_core
 
-  real(kind=CUSTOM_REAL), dimension(NGLLY,NGLLZ,NSPEC2DMAX_XMIN_XMAX_OC) :: jacobian2D_xmin_outer_core,jacobian2D_xmax_outer_core
-  real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLZ,NSPEC2DMAX_YMIN_YMAX_OC) :: jacobian2D_ymin_outer_core,jacobian2D_ymax_outer_core
   real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NSPEC2D_BOTTOM_OC) :: jacobian2D_bottom_outer_core
   real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLY,NSPEC2D_TOP_OC) :: jacobian2D_top_outer_core
 
@@ -100,9 +58,6 @@
 
   integer, dimension(NSPEC_CRUST_MANTLE) :: idoubling_crust_mantle
 
-!! DK DK this array is useless in the solver and is therefore allocated with a dummy size of 1
-  integer, dimension(1) :: idoubling_outer_core
-
   integer, dimension(NSPEC_INNER_CORE) :: idoubling_inner_core
 
   integer, dimension(NGLLX,NGLLY,NGLLZ,NSPEC_OUTER_CORE) :: ibool_outer_core

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/declarations_mesher.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/declarations_mesher.f90	2008-08-07 22:56:36 UTC (rev 12584)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/declarations_mesher.f90	2008-08-07 23:02:22 UTC (rev 12585)
@@ -1,11 +1,4 @@
 
-!! DK DK added this for merged version
-!! DK DK stored in single precision for merged version, check if it precise enough (probably yes)
-  real(kind=CUSTOM_REAL), dimension(:,:), allocatable :: &
-          xelm_store_crust_mantle,yelm_store_crust_mantle,zelm_store_crust_mantle, &
-          xelm_store_outer_core,yelm_store_outer_core,zelm_store_outer_core, &
-          xelm_store_inner_core,yelm_store_inner_core,zelm_store_inner_core
-
 !!!!!!!!!!!!!!!! DK DK for merged version, all the arrays below are allocated statically instead
 !!!!!!!!!!!!!!!! DK DK for merged version, all the arrays below are allocated statically instead
 !!!!!!!!!!!!!!!! DK DK for merged version, all the arrays below are allocated statically instead
@@ -120,28 +113,6 @@
   integer, dimension(NGLOB2DMAX_XMIN_XMAX_IC) :: iboolleft_xi_inner_core,iboolright_xi_inner_core
   integer, dimension(NGLOB2DMAX_YMIN_YMAX_IC) :: iboolleft_eta_inner_core,iboolright_eta_inner_core
 
-  double precision, dimension(ATT1,ATT2,ATT3,ATT4) :: omsb_crust_mantle_dble, factor_scale_crust_mantle_dble
-
-  double precision, dimension(ATT1,ATT2,ATT3,ATT5) :: omsb_inner_core_dble, factor_scale_inner_core_dble
-
-  real(kind=CUSTOM_REAL), dimension(ATT1,ATT2,ATT3,ATT4) :: one_minus_sum_beta_crust_mantle, factor_scale_crust_mantle
-
-  real(kind=CUSTOM_REAL), dimension(ATT1,ATT2,ATT3,ATT5) :: one_minus_sum_beta_inner_core, factor_scale_inner_core
-
-  real(kind=CUSTOM_REAL), dimension(N_SLS,ATT1,ATT2,ATT3,ATT4) :: factor_common_crust_mantle
-
-  real(kind=CUSTOM_REAL), dimension(N_SLS,ATT1,ATT2,ATT3,ATT5) :: factor_common_inner_core
-
-  double precision, dimension(N_SLS,ATT1,ATT2,ATT3,ATT4) :: factor_common_crust_mantle_dble
-
-  double precision, dimension(N_SLS,ATT1,ATT2,ATT3,ATT5) :: factor_common_inner_core_dble
-
-  integer :: npoin2D_max_all,NDIM_smaller_buffers
-
-! receiver information
-  integer :: nrec,ios
-  character(len=150) :: STATIONS,rec_filename,dummystring
-
 !! DK DK added this for the merged version
 !---- arrays to assemble between chunks
 

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/locate_sources.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/locate_sources.f90	2008-08-07 22:56:36 UTC (rev 12584)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/locate_sources.f90	2008-08-07 23:02:22 UTC (rev 12585)
@@ -158,9 +158,9 @@
 
   integer, dimension(NSOURCES_SUBSET_MAX) :: ispec_selected_source_subset
 
-  integer, dimension(NSOURCES_SUBSET_MAX,0:NPROCTOT-1) :: ispec_selected_source_all
+  integer, dimension(0:NPROCTOT-1,NSOURCES_SUBSET_MAX) :: ispec_selected_source_all
 
-  double precision, dimension(NSOURCES_SUBSET_MAX,0:NPROCTOT-1) :: xi_source_all,eta_source_all,gamma_source_all, &
+  double precision, dimension(0:NPROCTOT-1,NSOURCES_SUBSET_MAX) :: xi_source_all,eta_source_all,gamma_source_all, &
      final_distance_source_all,x_found_source_all,y_found_source_all,z_found_source_all
 
   double precision, dimension(NSOURCES_SUBSET_MAX) :: xi_source_subset,eta_source_subset,gamma_source_subset
@@ -477,7 +477,9 @@
 
 ! now gather information from all the nodes
 ! use -1 as a flag to detect if gather fails for some reason
-  ispec_selected_source_all(:,:) = -1
+  ispec_selected_source_all(:,:) = 0
+  ispec_selected_source_all(:,1:NSOURCES_SUBSET_current_size) = -1
+
   call MPI_GATHER(ispec_selected_source_subset,NSOURCES_SUBSET_current_size,MPI_INTEGER, &
                   ispec_selected_source_all,NSOURCES_SUBSET_current_size,MPI_INTEGER,0,MPI_COMM_WORLD,ier)
   call MPI_GATHER(xi_source_subset,NSOURCES_SUBSET_current_size,MPI_DOUBLE_PRECISION, &
@@ -499,7 +501,7 @@
   if(myrank == 0) then
 
 ! check that the gather operation went well
-  if(minval(ispec_selected_source_all) <= 0) call exit_MPI(myrank,'gather operation failed for source')
+  if(minval(ispec_selected_source_all) < 0) call exit_MPI(myrank,'gather operation failed for source')
 
 ! loop on all the sources within subsets
   do isource_in_this_subset = 1,NSOURCES_SUBSET_current_size
@@ -510,16 +512,16 @@
 ! loop on all the results to determine the best slice
   distmin = HUGEVAL
   do iprocloop = 0,NPROCTOT-1
-    if(final_distance_source_all(isource_in_this_subset,iprocloop) < distmin) then
-      distmin = final_distance_source_all(isource_in_this_subset,iprocloop)
+    if(final_distance_source_all(iprocloop,isource_in_this_subset) < distmin) then
+      distmin = final_distance_source_all(iprocloop,isource_in_this_subset)
       islice_selected_source(isource) = iprocloop
-      ispec_selected_source(isource) = ispec_selected_source_all(isource_in_this_subset,iprocloop)
-      xi_source(isource) = xi_source_all(isource_in_this_subset,iprocloop)
-      eta_source(isource) = eta_source_all(isource_in_this_subset,iprocloop)
-      gamma_source(isource) = gamma_source_all(isource_in_this_subset,iprocloop)
-      x_found_source(isource_in_this_subset) = x_found_source_all(isource_in_this_subset,iprocloop)
-      y_found_source(isource_in_this_subset) = y_found_source_all(isource_in_this_subset,iprocloop)
-      z_found_source(isource_in_this_subset) = z_found_source_all(isource_in_this_subset,iprocloop)
+      ispec_selected_source(isource) = ispec_selected_source_all(iprocloop,isource_in_this_subset)
+      xi_source(isource) = xi_source_all(iprocloop,isource_in_this_subset)
+      eta_source(isource) = eta_source_all(iprocloop,isource_in_this_subset)
+      gamma_source(isource) = gamma_source_all(iprocloop,isource_in_this_subset)
+      x_found_source(isource_in_this_subset) = x_found_source_all(iprocloop,isource_in_this_subset)
+      y_found_source(isource_in_this_subset) = y_found_source_all(iprocloop,isource_in_this_subset)
+      z_found_source(isource_in_this_subset) = z_found_source_all(iprocloop,isource_in_this_subset)
     endif
   enddo
   final_distance_source(isource) = distmin

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/main_program.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/main_program.f90	2008-08-07 22:56:36 UTC (rev 12584)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/main_program.f90	2008-08-07 23:02:22 UTC (rev 12585)
@@ -200,6 +200,22 @@
 !      first 3-D solver for the Connection Machine CM-5 (by Thinking Machines)
 !
 
+!! DK DK added this for merged version
+!! DK DK stored in single precision for merged version, check if it precise enough (probably yes)
+!! DK DK now defined as pointers, in order to be able to deallocate them
+!! DK DK see for instance http://www.pcc.qub.ac.uk/tec/courses/f77tof90/stu-notes/f90studentMIF_6.html
+!! DK DK Section 5.6 about this
+  module dyn_array
+!---------------------------------------------------------------------
+!  Module containing definitions needed to dynamically allocate the values of an array 
+!---------------------------------------------------------------------
+  include "constants.h"
+  real(kind=CUSTOM_REAL), dimension(:,:), allocatable :: &
+          xelm_store_crust_mantle,yelm_store_crust_mantle,zelm_store_crust_mantle, &
+          xelm_store_outer_core,yelm_store_outer_core,zelm_store_outer_core, &
+          xelm_store_inner_core,yelm_store_inner_core,zelm_store_inner_core
+  end module dyn_array
+
   program main_program
 
   implicit none
@@ -214,409 +230,22 @@
 ! include values created by the mesher
   include "values_from_mesher.h"
 
-! aniso_mantle_model_variables
-  type aniso_mantle_model_variables
-    sequence
-    double precision beta(14,34,37,73)
-    double precision pro(47)
-    integer npar1
-  end type aniso_mantle_model_variables
-
-  type (aniso_mantle_model_variables) AMM_V
-! aniso_mantle_model_variables
-
-! attenuation_model_variables
-  type attenuation_model_variables
-    sequence
-    double precision min_period, max_period
-    double precision                          :: QT_c_source        ! Source Frequency
-    double precision, dimension(N_SLS)        :: Qtau_s             ! tau_sigma
-    double precision, dimension(:), pointer   :: QrDisc             ! Discontinutitues Defined
-    double precision, dimension(:), pointer   :: Qr                 ! Radius
-    integer, dimension(:), pointer            :: Qs                 ! Steps
-    double precision, dimension(:), pointer   :: Qmu                ! Shear Attenuation
-    double precision, dimension(:,:), pointer :: Qtau_e             ! tau_epsilon
-    double precision, dimension(:), pointer   :: Qomsb, Qomsb2      ! one_minus_sum_beta
-    double precision, dimension(:,:), pointer :: Qfc, Qfc2          ! factor_common
-    double precision, dimension(:), pointer   :: Qsf, Qsf2          ! scale_factor
-    integer, dimension(:), pointer            :: Qrmin              ! Max and Mins of idoubling
-    integer, dimension(:), pointer            :: Qrmax              ! Max and Mins of idoubling
-    integer                                   :: Qn                 ! Number of points
-  end type attenuation_model_variables
-
-  type (attenuation_model_variables) AM_V
-! attenuation_model_variables
-
-! model_1066a_variables
-  type model_1066a_variables
-    sequence
-      double precision, dimension(NR_1066A) :: radius_1066a
-      double precision, dimension(NR_1066A) :: density_1066a
-      double precision, dimension(NR_1066A) :: vp_1066a
-      double precision, dimension(NR_1066A) :: vs_1066a
-      double precision, dimension(NR_1066A) :: Qkappa_1066a
-      double precision, dimension(NR_1066A) :: Qmu_1066a
-  end type model_1066a_variables
-
-  type (model_1066a_variables) M1066a_V
-! model_1066a_variables
-
-! model_ak135_variables
-  type model_ak135_variables
-    sequence
-    double precision, dimension(NR_AK135) :: radius_ak135
-    double precision, dimension(NR_AK135) :: density_ak135
-    double precision, dimension(NR_AK135) :: vp_ak135
-    double precision, dimension(NR_AK135) :: vs_ak135
-    double precision, dimension(NR_AK135) :: Qkappa_ak135
-    double precision, dimension(NR_AK135) :: Qmu_ak135
-  end type model_ak135_variables
-
- type (model_ak135_variables) Mak135_V
-! model_ak135_variables
-
-! three_d_mantle_model_variables
-  type three_d_mantle_model_variables
-    sequence
-    double precision dvs_a(0:NK,0:NS,0:NS)
-    double precision dvs_b(0:NK,0:NS,0:NS)
-    double precision dvp_a(0:NK,0:NS,0:NS)
-    double precision dvp_b(0:NK,0:NS,0:NS)
-    double precision spknt(NK+1)
-    double precision qq0(NK+1,NK+1)
-    double precision qq(3,NK+1,NK+1)
-  end type three_d_mantle_model_variables
-
-! model_ref_variables
-  type model_ref_variables
-    sequence
-    double precision, dimension(NR_REF) :: radius_ref
-    double precision, dimension(NR_REF) :: density_ref
-    double precision, dimension(NR_REF) :: vpv_ref
-    double precision, dimension(NR_REF) :: vph_ref
-    double precision, dimension(NR_REF) :: vsv_ref
-    double precision, dimension(NR_REF) :: vsh_ref
-    double precision, dimension(NR_REF) :: eta_ref
-    double precision, dimension(NR_REF) :: Qkappa_ref
-    double precision, dimension(NR_REF) :: Qmu_ref
-  end type model_ref_variables
-
-  type (model_ref_variables) Mref_V
-! model_ref_variables
-
-  type (three_d_mantle_model_variables) D3MM_V
-! three_d_mantle_model_variables
-
-! sea1d_model_variables
-  type sea1d_model_variables
-    sequence
-     double precision, dimension(NR_SEA1D) :: radius_sea1d
-     double precision, dimension(NR_SEA1D) :: density_sea1d
-     double precision, dimension(NR_SEA1D) :: vp_sea1d
-     double precision, dimension(NR_SEA1D) :: vs_sea1d
-     double precision, dimension(NR_SEA1D) :: Qkappa_sea1d
-     double precision, dimension(NR_SEA1D) :: Qmu_sea1d
-  end type sea1d_model_variables
-
-  type (sea1d_model_variables) SEA1DM_V
-! sea1d_model_variables
-
-! jp3d_model_variables
-  type jp3d_model_variables
-    sequence
-! vmod3d
-  integer :: NPA
-  integer :: NRA
-  integer :: NHA
-  integer :: NPB
-  integer :: NRB
-  integer :: NHB
-  double precision :: PNA(MPA)
-  double precision :: RNA(MRA)
-  double precision :: HNA(MHA)
-  double precision :: PNB(MPB)
-  double precision :: RNB(MRB)
-  double precision :: HNB(MHB)
-  double precision :: VELAP(MPA,MRA,MHA)
-  double precision :: VELBP(MPB,MRB,MHB)
-! discon
-  double precision :: PN(51)
-  double precision :: RRN(63)
-  double precision :: DEPA(51,63)
-  double precision :: DEPB(51,63)
-  double precision :: DEPC(51,63)
-! locate
-  integer :: IPLOCA(MKA)
-  integer :: IRLOCA(MKA)
-  integer :: IHLOCA(MKA)
-  integer :: IPLOCB(MKB)
-  integer :: IRLOCB(MKB)
-  integer :: IHLOCB(MKB)
-  double precision :: PLA
-  double precision :: RLA
-  double precision :: HLA
-  double precision :: PLB
-  double precision :: RLB
-  double precision :: HLB
-! weight
-  integer :: IP
-  integer :: JP
-  integer :: KP
-  integer :: IP1
-  integer :: JP1
-  integer :: KP1
-  double precision :: WV(8)
-! prhfd
-  double precision :: P
-  double precision :: R
-  double precision :: H
-  double precision :: PF
-  double precision :: RF
-  double precision :: HF
-  double precision :: PF1
-  double precision :: RF1
-  double precision :: HF1
-  double precision :: PD
-  double precision :: RD
-  double precision :: HD
-! jpmodv
-  double precision :: VP(29)
-  double precision :: VS(29)
-  double precision :: RA(29)
-  double precision :: DEPJ(29)
-  end type jp3d_model_variables
-
-  type (jp3d_model_variables) JP3DM_V
-! jp3d_model_variables
-
-! sea99_s_model_variables
-  type sea99_s_model_variables
-    sequence
-    integer :: sea99_ndep
-    integer :: sea99_nlat
-    integer :: sea99_nlon
-    double precision :: sea99_ddeg
-    double precision :: alatmin
-    double precision :: alatmax
-    double precision :: alonmin
-    double precision :: alonmax
-    double precision :: sea99_vs(100,100,100)
-    double precision :: sea99_depth(100)
- end type sea99_s_model_variables
-
- type (sea99_s_model_variables) SEA99M_V
-! sea99_s_model_variables
-
-! crustal_model_variables
-  type crustal_model_variables
-    sequence
-    double precision, dimension(NKEYS_CRUST,NLAYERS_CRUST) :: thlr
-    double precision, dimension(NKEYS_CRUST,NLAYERS_CRUST) :: velocp
-    double precision, dimension(NKEYS_CRUST,NLAYERS_CRUST) :: velocs
-    double precision, dimension(NKEYS_CRUST,NLAYERS_CRUST) :: dens
-    character(len=2) abbreviation(NCAP_CRUST/2,NCAP_CRUST)
-    character(len=2) code(NKEYS_CRUST)
-  end type crustal_model_variables
-
-  type (crustal_model_variables) CM_V
-! crustal_model_variables
-
-! attenuation_model_storage
-  type attenuation_model_storage
-    sequence
-    integer Q_resolution
-    integer Q_max
-    double precision, dimension(:,:), pointer :: tau_e_storage
-    double precision, dimension(:), pointer :: Qmu_storage
-  end type attenuation_model_storage
-
-  type (attenuation_model_storage) AM_S
-! attenuation_model_storage
-
-! attenuation_simplex_variables
-  type attenuation_simplex_variables
-    sequence
-    integer nf          ! nf    = Number of Frequencies
-    integer nsls        ! nsls  = Number of Standard Linear Solids
-    double precision Q  ! Q     = Desired Value of Attenuation or Q
-    double precision iQ ! iQ    = 1/Q
-    double precision, dimension(:), pointer ::  f
-    ! f = Frequencies at which to evaluate the solution
-    double precision, dimension(:), pointer :: tau_s
-    ! tau_s = Tau_sigma defined by the frequency range and
-    !             number of standard linear solids
-  end type attenuation_simplex_variables
-
-  type(attenuation_simplex_variables) AS_V
-! attenuation_simplex_variables
-
-! correct number of spectral elements in each block depending on chunk type
-
-  integer nspec_aniso,npointot
-
-! arrays with the mesh in double precision
-  double precision, dimension(:,:,:,:), allocatable :: xstore,ystore,zstore
-
 ! proc numbers for MPI
-  integer myrank,sizeprocs,ier,errorcode
+  integer myrank,sizeprocs,ier
 
-! check area and volume of the final mesh
-  double precision area_local_bottom,area_total_bottom
-  double precision area_local_top,area_total_top
-  double precision volume_local,volume_total,volume_total_region
-
-  integer iprocnum
-
-! for loop on all the slices
-  integer iregion_code,iregion
-  integer iproc_xi,iproc_eta,ichunk
-
-!! DK DK for the merged version
-  integer, dimension(:), allocatable :: ibool1D_leftxi_lefteta,ibool1D_rightxi_lefteta, &
-             ibool1D_leftxi_righteta,ibool1D_rightxi_righteta
-  double precision, dimension(:), allocatable :: xread1D_leftxi_lefteta,xread1D_rightxi_lefteta, &
-             xread1D_leftxi_righteta,xread1D_rightxi_righteta
-  double precision, dimension(:), allocatable :: yread1D_leftxi_lefteta,yread1D_rightxi_lefteta, &
-             yread1D_leftxi_righteta,yread1D_rightxi_righteta
-  double precision, dimension(:), allocatable :: zread1D_leftxi_lefteta,zread1D_rightxi_lefteta, &
-             zread1D_leftxi_righteta,zread1D_rightxi_righteta
-
-! rotation matrix from Euler angles
-  double precision, dimension(NDIM,NDIM) :: rotation_matrix
-
-  double precision ANGULAR_WIDTH_XI_RAD,ANGULAR_WIDTH_ETA_RAD
-
 ! use integer array to store values
   integer, dimension(NX_BATHY,NY_BATHY) :: ibathy_topo
 
-! for ellipticity
-  integer nspl
-  double precision rspl(NR),espl(NR),espl2(NR)
-
-! for some statistics for the mesh
-  integer numelem_crust_mantle,numelem_outer_core,numelem_inner_core
-  integer numelem_total
-
-! timer MPI
-  double precision time_start,tCPU
-
 ! addressing for all the slices
-  integer, dimension(:), allocatable :: ichunk_slice,iproc_xi_slice,iproc_eta_slice
-  integer, dimension(:,:,:), allocatable :: addressing
+  integer, dimension(0:NPROCTOT_VAL-1) :: ichunk_slice,iproc_xi_slice,iproc_eta_slice
+  integer, dimension(NCHUNKS_VAL,0:NPROC_XI_VAL-1,0:NPROC_ETA_VAL-1) :: addressing
 
-! parameters read from parameter file
-  integer MIN_ATTENUATION_PERIOD,MAX_ATTENUATION_PERIOD,NER_CRUST, &
-          NER_80_MOHO,NER_220_80,NER_400_220,NER_600_400,NER_670_600,NER_771_670, &
-          NER_TOPDDOUBLEPRIME_771,NER_CMB_TOPDDOUBLEPRIME,NER_OUTER_CORE, &
-          NER_TOP_CENTRAL_CUBE_ICB,NEX_XI,NEX_ETA,RMOHO_FICTITIOUS_IN_MESHER, &
-          NPROC_XI,NPROC_ETA,NTSTEP_BETWEEN_OUTPUT_SEISMOS, &
-          NTSTEP_BETWEEN_READ_ADJSRC,NSTEP,NSOURCES,NTSTEP_BETWEEN_FRAMES, &
-          NTSTEP_BETWEEN_OUTPUT_INFO,NUMBER_OF_RUNS,NUMBER_OF_THIS_RUN,NCHUNKS,SIMULATION_TYPE, &
-          REFERENCE_1D_MODEL,THREE_D_MODEL,MOVIE_VOLUME_TYPE,MOVIE_START,MOVIE_STOP
+  integer :: NTSTEP_BETWEEN_OUTPUT_SEISMOS,NSOURCES
 
-  double precision DT,ANGULAR_WIDTH_XI_IN_DEGREES,ANGULAR_WIDTH_ETA_IN_DEGREES,CENTER_LONGITUDE_IN_DEGREES, &
-          CENTER_LATITUDE_IN_DEGREES,GAMMA_ROTATION_AZIMUTH,ROCEAN,RMIDDLE_CRUST, &
-          RMOHO,R80,R120,R220,R400,R600,R670,R771,RTOPDDOUBLEPRIME,RCMB,RICB, &
-          R_CENTRAL_CUBE,RHO_TOP_OC,RHO_BOTTOM_OC,RHO_OCEANS,HDUR_MOVIE, &
-          MOVIE_TOP,MOVIE_BOTTOM,MOVIE_WEST,MOVIE_EAST,MOVIE_NORTH,MOVIE_SOUTH
-
-
-  logical TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE,ANISOTROPIC_INNER_CORE, &
-          CRUSTAL,ELLIPTICITY,GRAVITY,ONE_CRUST,ROTATION,ISOTROPIC_3D_MANTLE, &
-          TOPOGRAPHY,OCEANS,MOVIE_SURFACE,MOVIE_VOLUME,MOVIE_COARSE,ATTENUATION_3D, &
-          RECEIVERS_CAN_BE_BURIED,PRINT_SOURCE_TIME_FUNCTION, &
-          SAVE_MESH_FILES,ATTENUATION, &
-          ABSORBING_CONDITIONS,INCLUDE_CENTRAL_CUBE,INFLATE_CENTRAL_CUBE,SAVE_FORWARD,CASE_3D, &
-          OUTPUT_SEISMOS_ASCII_TEXT,OUTPUT_SEISMOS_SAC_ALPHANUM,OUTPUT_SEISMOS_SAC_BINARY, &
-          ROTATE_SEISMOGRAMS_RT,HONOR_1D_SPHERICAL_MOHO,WRITE_SEISMOGRAMS_BY_MASTER,&
-          SAVE_ALL_SEISMOS_IN_ONE_FILE,USE_BINARY_FOR_LARGE_FILE
-
-  character(len=150) OUTPUT_FILES,MODEL
-
-! parameters deduced from parameters read from file
-  integer NPROC,NPROCTOT,NEX_PER_PROC_XI,NEX_PER_PROC_ETA,ratio_divide_central_cube
-
   integer, external :: err_occurred
 
-! this for all the regions
-  integer, dimension(MAX_NUM_REGIONS) :: NSPEC, &
-               NSPEC2D_XI, &
-               NSPEC2D_ETA, &
-               NSPEC2DMAX_XMIN_XMAX,NSPEC2DMAX_YMIN_YMAX, &
-               NSPEC2D_BOTTOM,NSPEC2D_TOP, &
-               NSPEC1D_RADIAL,NGLOB1D_RADIAL, &
-               NGLOB2DMAX_XMIN_XMAX,NGLOB2DMAX_YMIN_YMAX, &
-               nglob
-
-! computed in read_compute_parameters
-  integer, dimension(MAX_NUMBER_OF_MESH_LAYERS) :: ner,ratio_sampling_array
-  integer, dimension(MAX_NUMBER_OF_MESH_LAYERS) :: doubling_index
-  double precision, dimension(MAX_NUMBER_OF_MESH_LAYERS) :: r_bottom,r_top
-  logical, dimension(MAX_NUMBER_OF_MESH_LAYERS) :: this_region_has_a_doubling
-  double precision, dimension(MAX_NUMBER_OF_MESH_LAYERS) :: rmins,rmaxs
-
-! arrays for BCAST
-  integer, dimension(38) :: bcast_integer
-  double precision, dimension(30) :: bcast_double_precision
-  logical, dimension(26) :: bcast_logical
-
-  integer, parameter :: maxker=200
-  integer, parameter :: maxl=72
-  integer, parameter :: maxcoe=2000
-  integer, parameter :: maxver=1000
-  integer, parameter :: maxhpa=2
-
-  integer numker
-  integer numhpa,numcof
-  integer ihpa,lmax,nylm
-  integer lmxhpa(maxhpa)
-  integer itypehpa(maxhpa)
-  integer ihpakern(maxker)
-  integer numcoe(maxhpa)
-  integer ivarkern(maxker)
-  integer itpspl(maxcoe,maxhpa)
-
-  integer nconpt(maxhpa),iver
-  integer iconpt(maxver,maxhpa)
-  real(kind=4) conpt(maxver,maxhpa)
-
-  real(kind=4) xlaspl(maxcoe,maxhpa)
-  real(kind=4) xlospl(maxcoe,maxhpa)
-  real(kind=4) radspl(maxcoe,maxhpa)
-  real(kind=4) coe(maxcoe,maxker)
-  character(len=80) hsplfl(maxhpa)
-  character(len=40) dskker(maxker)
-  real(kind=4) vercof(maxker)
-  real(kind=4) vercofd(maxker)
-
-  real(kind=4) ylmcof((maxl+1)**2,maxhpa)
-  real(kind=4) wk1(maxl+1)
-  real(kind=4) wk2(maxl+1)
-  real(kind=4) wk3(maxl+1)
-
-  character(len=80) kerstr
-  character(len=80) refmdl
-  character(len=40) varstr(maxker)
-
-  integer :: ipass
-
-! this for the different corners of the slice (which are different if the superbrick is cut)
-! 1 : xi_min, eta_min
-! 2 : xi_max, eta_min
-! 3 : xi_max, eta_max
-! 4 : xi_min, eta_max
-  integer, dimension(MAX_NUM_REGIONS,NB_SQUARE_CORNERS) :: NSPEC1D_RADIAL_CORNER,NGLOB1D_RADIAL_CORNER
-
-! 1 -> min, 2 -> max
-  integer, dimension(MAX_NUM_REGIONS,NB_SQUARE_EDGES_ONEDIR) :: NSPEC2D_XI_FACE,NSPEC2D_ETA_FACE
-
-  integer, dimension(NB_SQUARE_CORNERS,NB_CUT_CASE) :: DIFF_NSPEC1D_RADIAL
-  integer, dimension(NB_SQUARE_EDGES_ONEDIR,NB_CUT_CASE) :: DIFF_NSPEC2D_XI,DIFF_NSPEC2D_ETA
-  logical :: CUT_SUPERBRICK_XI,CUT_SUPERBRICK_ETA
-! integer, dimension(MAX_NUM_REGIONS) :: NGLOB1D_RADIAL_TEMP
-
 !! DK DK for the merged version
-  include 'declarations_mesher.f90'
+  include 'declarations_main.f90'
 
 ! ************** PROGRAM STARTS HERE **************
 

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/meshfem3D.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/meshfem3D.f90	2008-08-07 22:56:36 UTC (rev 12584)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/meshfem3D.f90	2008-08-07 23:02:22 UTC (rev 12585)
@@ -36,12 +36,14 @@
 !! DK DK for the merged version
   include 'call_meshfem2.f90'
 
+  use dyn_array
+
   implicit none
 
 ! standard include of the MPI library
   include 'mpif.h'
 
-  include "constants.h"
+!!!!!!!!!!! DK DK now in module dyn_array  include "constants.h"
   include "precision.h"
 
 !! DK DK for the merged version
@@ -335,8 +337,8 @@
   double precision time_start,tCPU
 
 ! addressing for all the slices
-  integer, dimension(:), allocatable :: ichunk_slice,iproc_xi_slice,iproc_eta_slice
-  integer, dimension(:,:,:), allocatable :: addressing
+  integer, dimension(0:NPROCTOT_VAL-1) :: ichunk_slice,iproc_xi_slice,iproc_eta_slice
+  integer, dimension(NCHUNKS_VAL,0:NPROC_XI_VAL-1,0:NPROC_ETA_VAL-1) :: addressing
 
 ! parameters read from parameter file
   integer MIN_ATTENUATION_PERIOD,MAX_ATTENUATION_PERIOD,NER_CRUST, &
@@ -506,9 +508,7 @@
           DIFF_NSPEC1D_RADIAL,DIFF_NSPEC2D_XI,DIFF_NSPEC2D_ETA,&
           WRITE_SEISMOGRAMS_BY_MASTER,SAVE_ALL_SEISMOS_IN_ONE_FILE,USE_BINARY_FOR_LARGE_FILE,.false.)
 
-    if(err_occurred() /= 0) then
-          call exit_MPI(myrank,'an error occurred while reading the parameter file')
-    endif
+    if(err_occurred() /= 0) call exit_MPI(myrank,'an error occurred while reading the parameter file')
 
 ! count the total number of sources in the CMTSOLUTION file
     call count_number_of_sources(NSOURCES)
@@ -682,28 +682,6 @@
 ! check that the code is running with the requested number of processes
   if(sizeprocs /= NPROCTOT) call exit_MPI(myrank,'wrong number of MPI processes')
 
-! dynamic allocation of mesh arrays
-  allocate(addressing(NCHUNKS,0:NPROC_XI-1,0:NPROC_ETA-1),STAT=ier)
-  if (ier /= 0) then
-    print *,"ABORTING can not allocate in meshfem3D ier=",ier
-    call MPI_Abort(MPI_COMM_WORLD,errorcode,ier)
-  endif
-  allocate(ichunk_slice(0:NPROCTOT-1),STAT=ier)
-  if (ier /= 0) then
-    print *,"ABORTING can not allocate in meshfem3D ier=",ier
-    call MPI_Abort(MPI_COMM_WORLD,errorcode,ier)
-  endif
-  allocate(iproc_xi_slice(0:NPROCTOT-1),STAT=ier)
-  if (ier /= 0) then
-    print *,"ABORTING can not allocate in meshfem3D ier=",ier
-    call MPI_Abort(MPI_COMM_WORLD,errorcode,ier)
-  endif
-  allocate(iproc_eta_slice(0:NPROCTOT-1),STAT=ier)
-  if (ier /= 0) then
-    print *,"ABORTING can not allocate in meshfem3D ier=",ier
-    call MPI_Abort(MPI_COMM_WORLD,errorcode,ier)
-  endif
-
   addressing(:,:,:) = 0
   ichunk_slice(:) = 0
   iproc_xi_slice(:) = 0
@@ -1157,14 +1135,7 @@
 ! volume of the slice
   volume_total = ZERO
 
-!----
-!----  loop on all the regions of the mesh
-!----
-
 !! DK DK for the merged version
-  include 'allocate_before.f90'
-
-!! DK DK for the merged version
   allocate(ibool1D_leftxi_lefteta(maxval(NGLOB1D_RADIAL_CORNER)),STAT=ier)
   if (ier /= 0) then
     print *,"ABORTING can not allocate in meshfem3D ier=",ier
@@ -1249,6 +1220,13 @@
     call MPI_Abort(MPI_COMM_WORLD,errorcode,ier)
   endif
 
+!! DK DK for the merged version
+  include 'allocate_before.f90'
+
+!----
+!----  loop on all the regions of the mesh
+!----
+
 ! number of regions in full Earth
   do iregion_code = 1,MAX_NUM_REGIONS
 
@@ -1426,6 +1404,7 @@
     call exit_MPI(myrank,'found no anisotropic elements in the mantle')
 
 ! use MPI reduction to compute total area and volume
+!! DK DK suppressed for now in the merged version, for simplicity
   volume_total_region = ZERO
   area_total_bottom   = ZERO
   area_total_top   = ZERO

Added: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/ok_until_here.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/ok_until_here.f90	                        (rev 0)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/ok_until_here.f90	2008-08-07 23:02:22 UTC (rev 12585)
@@ -0,0 +1,7 @@
+
+  print *,'ok until here'
+  call MPI_BARRIER(MPI_COMM_WORLD,ier)
+! stop all the MPI processes, and exit
+  call MPI_ABORT(MPI_COMM_WORLD,30,ier)
+  stop 'end of the test'
+

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/save_header_file.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/save_header_file.f90	2008-08-07 22:56:36 UTC (rev 12584)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/save_header_file.f90	2008-08-07 23:02:22 UTC (rev 12585)
@@ -46,7 +46,7 @@
          NGLOB_CRUST_MANTLE_ADJOINT,NGLOB_OUTER_CORE_ADJOINT, &
          NGLOB_INNER_CORE_ADJOINT,NSPEC_OUTER_CORE_ROT_ADJOINT, &
          NSPEC_CRUST_MANTLE_STACEY,NSPEC_OUTER_CORE_STACEY, &
-         NGLOB_CRUST_MANTLE_OCEANS,NSPEC_OUTER_CORE_ROTATION)
+         NGLOB_CRUST_MANTLE_OCEANS,NSPEC_OUTER_CORE_ROTATION,DT)
 
   implicit none
 
@@ -59,7 +59,7 @@
   logical TRANSVERSE_ISOTROPY,ANISOTROPIC_3D_MANTLE,ANISOTROPIC_INNER_CORE, &
           ELLIPTICITY,GRAVITY,ROTATION,ATTENUATION,ATTENUATION_3D,INCLUDE_CENTRAL_CUBE
 
-  double precision ANGULAR_WIDTH_XI_IN_DEGREES,ANGULAR_WIDTH_ETA_IN_DEGREES, &
+  double precision DT,ANGULAR_WIDTH_XI_IN_DEGREES,ANGULAR_WIDTH_ETA_IN_DEGREES, &
           CENTER_LONGITUDE_IN_DEGREES,CENTER_LATITUDE_IN_DEGREES,GAMMA_ROTATION_AZIMUTH
 
   double precision :: subtract_central_cube_elems,subtract_central_cube_points
@@ -244,6 +244,7 @@
   write(IOUT,*) '! average size of a spectral element in km = ',real(TWO_PI*R_EARTH/1000.d0)/real(4*NEX_XI)
   write(IOUT,*) '!'
   write(IOUT,*) '! number of time steps = ',NSTEP
+  write(IOUT,*) '! value of a time step DT = ',DT
   write(IOUT,*) '!'
   write(IOUT,*) '! number of seismic sources = ',NSOURCES
   write(IOUT,*) '!'

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/specfem3D.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/specfem3D.f90	2008-08-07 22:56:36 UTC (rev 12584)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/version41_beta/src/specfem3D.f90	2008-08-07 23:02:22 UTC (rev 12585)
@@ -33,12 +33,14 @@
 !! DK DK for the merged version
   include 'call_specfem2.f90'
 
+  use dyn_array
+
   implicit none
 
 ! standard include of the MPI library
   include 'mpif.h'
 
-  include "constants.h"
+!!!!!!!!!!! DK DK now in module dyn_array  include "constants.h"
   include "precision.h"
 
 ! include values created by the mesher
@@ -449,12 +451,6 @@
   integer, dimension(NB_SQUARE_CORNERS,NB_CUT_CASE) :: DIFF_NSPEC1D_RADIAL
   integer, dimension(NB_SQUARE_EDGES_ONEDIR,NB_CUT_CASE) :: DIFF_NSPEC2D_XI,DIFF_NSPEC2D_ETA
 
-!! DK DK added this for merged version
-!! DK DK stored in single precision for merged version, check if it precise enough (probably yes)
-  real(kind=CUSTOM_REAL), dimension(NGNOD,NSPEC_CRUST_MANTLE) :: xelm_store_crust_mantle,yelm_store_crust_mantle,zelm_store_crust_mantle
-  real(kind=CUSTOM_REAL), dimension(NGNOD,NSPEC_OUTER_CORE) :: xelm_store_outer_core,yelm_store_outer_core,zelm_store_outer_core
-  real(kind=CUSTOM_REAL), dimension(NGNOD,NSPEC_INNER_CORE) :: xelm_store_inner_core,yelm_store_inner_core,zelm_store_inner_core
-
 ! allocate this automatic array in the memory stack to avoid memory fragmentation with "allocate()"
  real(kind=CUSTOM_REAL), dimension(NDIM,NTSTEP_BETWEEN_OUTPUT_SEISMOS) :: one_seismogram
 
@@ -494,19 +490,21 @@
      ibool_inner_core,NSPEC_INNER_CORE,NGLOB_INNER_CORE, &
      xigll,yigll,zigll)
 
+!print *,yelm_store_inner_core
+!print *,etay_inner_core
+
 !! DK DK for merged version, deallocate arrays that have become useless
-!! DK DK attention je ne peux plus desallouer ici pour l'instant
-!! DK DK impossible YYYYYYYYYYYYY  deallocate(xelm_store_crust_mantle)
-!! DK DK impossible YYYYYYYYYYYYY  deallocate(yelm_store_crust_mantle)
-!! DK DK impossible YYYYYYYYYYYYY  deallocate(zelm_store_crust_mantle)
+  deallocate(xelm_store_crust_mantle)
+  deallocate(yelm_store_crust_mantle)
+  deallocate(zelm_store_crust_mantle)
 
-!! DK DK impossible YYYYYYYYYYYYY  deallocate(xelm_store_outer_core)
-!! DK DK impossible YYYYYYYYYYYYY  deallocate(yelm_store_outer_core)
-!! DK DK impossible YYYYYYYYYYYYY  deallocate(zelm_store_outer_core)
+  deallocate(xelm_store_outer_core)
+  deallocate(yelm_store_outer_core)
+  deallocate(zelm_store_outer_core)
 
-!! DK DK impossible YYYYYYYYYYYYY  deallocate(xelm_store_inner_core)
-!! DK DK impossible YYYYYYYYYYYYY  deallocate(yelm_store_inner_core)
-!! DK DK impossible YYYYYYYYYYYYY  deallocate(zelm_store_inner_core)
+  deallocate(xelm_store_inner_core)
+  deallocate(yelm_store_inner_core)
+  deallocate(zelm_store_inner_core)
 
   if (myrank == 0) then
 



More information about the cig-commits mailing list