[cig-commits] r20775 - in seismo/3D/SPECFEM3D/trunk: doc/USER_MANUAL src/generate_databases src/shared src/specfem3D

joseph.charles at geodynamics.org joseph.charles at geodynamics.org
Tue Sep 25 12:07:15 PDT 2012


Author: joseph.charles
Date: 2012-09-25 12:07:15 -0700 (Tue, 25 Sep 2012)
New Revision: 20775

Modified:
   seismo/3D/SPECFEM3D/trunk/doc/USER_MANUAL/manual_SPECFEM3D.pdf
   seismo/3D/SPECFEM3D/trunk/doc/USER_MANUAL/manual_SPECFEM3D.tex
   seismo/3D/SPECFEM3D/trunk/src/generate_databases/finalize_databases.f90
   seismo/3D/SPECFEM3D/trunk/src/generate_databases/generate_databases_par.f90
   seismo/3D/SPECFEM3D/trunk/src/shared/read_parameter_file.f90
   seismo/3D/SPECFEM3D/trunk/src/shared/save_header_file.f90
   seismo/3D/SPECFEM3D/trunk/src/specfem3D/initialize_simulation.f90
Log:
adds a check on the use of the ABSORB_INSTEAD_OF_FREE_SURFACE flag  


Modified: seismo/3D/SPECFEM3D/trunk/doc/USER_MANUAL/manual_SPECFEM3D.pdf
===================================================================
(Binary files differ)

Modified: seismo/3D/SPECFEM3D/trunk/doc/USER_MANUAL/manual_SPECFEM3D.tex
===================================================================
--- seismo/3D/SPECFEM3D/trunk/doc/USER_MANUAL/manual_SPECFEM3D.tex	2012-09-25 13:48:07 UTC (rev 20774)
+++ seismo/3D/SPECFEM3D/trunk/doc/USER_MANUAL/manual_SPECFEM3D.tex	2012-09-25 19:07:15 UTC (rev 20775)
@@ -1124,7 +1124,8 @@
 \item the simulation type control parameters: \texttt{SIMULATION\_TYPE}
 and \texttt{SAVE\_FORWARD}
 \item the time step parameters \texttt{NSTEP} and \texttt{DT}
-\item the absorbing boundary control parameter \texttt{ABSORBING\_CONDITIONS}
+\item the absorbing boundary control parameter \texttt{ABSORBING\_CONDITIONS} on condition that the\\ 
+  \texttt{ABSORB\_INSTEAD\_OF\_FREE\_SURFACE} flag remains unmodified after running the databases generation. 
 \item the movie control parameters \texttt{MOVIE\_SURFACE}, \texttt{MOVIE\_VOLUME},
 and \texttt{NTSTEPS\_BETWEEN\_FRAMES}
 \item the ShakeMap\textregistered option \texttt{CREATE\_SHAKEMAP}

Modified: seismo/3D/SPECFEM3D/trunk/src/generate_databases/finalize_databases.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/generate_databases/finalize_databases.f90	2012-09-25 13:48:07 UTC (rev 20774)
+++ seismo/3D/SPECFEM3D/trunk/src/generate_databases/finalize_databases.f90	2012-09-25 19:07:15 UTC (rev 20775)
@@ -101,7 +101,7 @@
 ! copy number of elements and points in an include file for the solver
   if( myrank == 0 ) then
     call save_header_file(NSPEC_AB,NGLOB_AB,NPROC, &
-               ATTENUATION,ANISOTROPY,NSTEP,DT, &
+               ATTENUATION,ANISOTROPY,NSTEP,DT,ABSORB_INSTEAD_OF_FREE_SURFACE, &
                SIMULATION_TYPE,max_memory_size,nfaces_surface_glob_ext_mesh)
   endif
 

Modified: seismo/3D/SPECFEM3D/trunk/src/generate_databases/generate_databases_par.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/generate_databases/generate_databases_par.f90	2012-09-25 13:48:07 UTC (rev 20774)
+++ seismo/3D/SPECFEM3D/trunk/src/generate_databases/generate_databases_par.f90	2012-09-25 19:07:15 UTC (rev 20775)
@@ -64,9 +64,10 @@
 
   logical :: ATTENUATION,USE_OLSEN_ATTENUATION, &
           OCEANS,TOPOGRAPHY,SAVE_FORWARD,USE_FORCE_POINT_SOURCE
-  logical :: ANISOTROPY,ABSORBING_CONDITIONS,SAVE_MESH_FILES,PRINT_SOURCE_TIME_FUNCTION, &
-          ABSORB_INSTEAD_OF_FREE_SURFACE
+  logical :: ANISOTROPY,ABSORBING_CONDITIONS,SAVE_MESH_FILES,PRINT_SOURCE_TIME_FUNCTION
 
+  logical :: ABSORB_INSTEAD_OF_FREE_SURFACE
+
   logical :: MOVIE_SURFACE,MOVIE_VOLUME,CREATE_SHAKEMAP,SAVE_DISPLACEMENT, &
           USE_HIGHRES_FOR_MOVIES
   integer :: NTSTEP_BETWEEN_FRAMES,NTSTEP_BETWEEN_OUTPUT_INFO,NTSTEP_BETWEEN_READ_ADJSRC

Modified: seismo/3D/SPECFEM3D/trunk/src/shared/read_parameter_file.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/shared/read_parameter_file.f90	2012-09-25 13:48:07 UTC (rev 20774)
+++ seismo/3D/SPECFEM3D/trunk/src/shared/read_parameter_file.f90	2012-09-25 19:07:15 UTC (rev 20775)
@@ -119,7 +119,7 @@
   if(err_occurred() /= 0) return
   call read_value_logical(ABSORBING_CONDITIONS, 'solver.ABSORBING_CONDITIONS')
   if(err_occurred() /= 0) return
-  call read_value_logical(ABSORB_INSTEAD_OF_FREE_SURFACE, 'solver.ABSORB_INSTEAD_OF_FREE_SURFACE')
+  call read_value_logical(ABSORB_INSTEAD_OF_FREE_SURFACE, 'model.ABSORB_INSTEAD_OF_FREE_SURFACE')
   if(err_occurred() /= 0) return
   call read_value_logical(MOVIE_SURFACE, 'solver.MOVIE_SURFACE')
   if(err_occurred() /= 0) return

Modified: seismo/3D/SPECFEM3D/trunk/src/shared/save_header_file.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/shared/save_header_file.f90	2012-09-25 13:48:07 UTC (rev 20774)
+++ seismo/3D/SPECFEM3D/trunk/src/shared/save_header_file.f90	2012-09-25 19:07:15 UTC (rev 20775)
@@ -27,7 +27,7 @@
 ! save header file OUTPUT_FILES/values_from_mesher.h
 
   subroutine save_header_file(NSPEC_AB,NGLOB_AB,NPROC, &
-             ATTENUATION,ANISOTROPY,NSTEP,DT, &
+             ATTENUATION,ANISOTROPY,NSTEP,DT,ABSORB_INSTEAD_OF_FREE_SURFACE, &
              SIMULATION_TYPE,memory_size,nfaces_surface_glob_ext_mesh)
 
   implicit none
@@ -37,6 +37,7 @@
   integer NSPEC_AB,NGLOB_AB,NPROC,NSTEP,SIMULATION_TYPE
 
   logical ATTENUATION,ANISOTROPY
+  logical ABSORB_INSTEAD_OF_FREE_SURFACE, ABSORB_INSTEAD_OF_FREE_SURFACE_VAL
 
   double precision DT
 
@@ -46,6 +47,14 @@
 
   integer :: nfaces_surface_glob_ext_mesh
 
+  if(ABSORB_INSTEAD_OF_FREE_SURFACE) then
+     ABSORB_INSTEAD_OF_FREE_SURFACE_VAL = .true.
+  else
+     ABSORB_INSTEAD_OF_FREE_SURFACE_VAL = .false.
+  endif
+  
+  NAMELIST /MESHER/ABSORB_INSTEAD_OF_FREE_SURFACE_VAL
+
 ! copy number of elements and points in an include file for the solver
   call get_value_string(HEADER_FILE, 'solver.HEADER_FILE', &
        OUTPUT_FILES_PATH(1:len_trim(OUTPUT_FILES_PATH))//'/values_from_mesher.h')
@@ -117,6 +126,8 @@
   write(IOUT,*) '!   (if significantly more, the job will not run by lack of memory)'
   write(IOUT,*) '!   (if significantly less, you waste a significant amount of memory)'
   write(IOUT,*) '!'
+  write(IOUT,*) '! check parameter to ensure the code has been compiled with the right values:'
+  write(IOUT,NML=MESHER) 
   write(IOUT,*)
   close(IOUT)
 

Modified: seismo/3D/SPECFEM3D/trunk/src/specfem3D/initialize_simulation.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/specfem3D/initialize_simulation.f90	2012-09-25 13:48:07 UTC (rev 20774)
+++ seismo/3D/SPECFEM3D/trunk/src/specfem3D/initialize_simulation.f90	2012-09-25 19:07:15 UTC (rev 20775)
@@ -218,11 +218,17 @@
   use specfem_par_acoustic
   use specfem_par_poroelastic
   use specfem_par_movie
+
   implicit none
 
   integer :: sizeprocs
   integer :: ier
 
+  character(len=256) HEADER_FILE
+  logical :: ABSORB_INSTEAD_OF_FREE_SURFACE_VAL
+  
+  NAMELIST/MESHER/ABSORB_INSTEAD_OF_FREE_SURFACE_VAL
+
   ! sizeprocs returns number of processes started
   ! (should be equal to NPROC)
   call world_size(sizeprocs)
@@ -266,10 +272,26 @@
     if( NGLLX /= NGLLY .and. NGLLY /= NGLLZ ) &
       stop 'ABSORBING_CONDITIONS must have NGLLX = NGLLY = NGLLZ'
   else
+    ! absorbing top surface
     if(ABSORB_INSTEAD_OF_FREE_SURFACE) &
       stop 'ABSORBING_CONDITIONS must be activated when ABSORB_INSTEAD_OF_FREE_SURFACE is true'
   endif
 
+  ! check that the code has been compiled with the right values
+  if( myrank == 0 ) then
+     call get_value_string(HEADER_FILE, 'solver.HEADER_FILE', &
+          OUTPUT_FILES_PATH(1:len_trim(OUTPUT_FILES_PATH))//'/values_from_mesher.h')
+
+     open(unit=IOUT,file=HEADER_FILE,status='old')
+     read(IOUT,NML=MESHER) 
+     close(IOUT)
+
+     if (ABSORB_INSTEAD_OF_FREE_SURFACE .NEQV. ABSORB_INSTEAD_OF_FREE_SURFACE_VAL) then
+        write(IMAIN,*) 'ABSORB_INSTEAD_OF_FREE_SURFACE:',ABSORB_INSTEAD_OF_FREE_SURFACE,ABSORB_INSTEAD_OF_FREE_SURFACE_VAL
+        call exit_MPI(myrank,'error in compiled parameters ABSORB_INSTEAD_OF_FREE_SURFACE, please recompile solver')
+     endif
+  endif
+
   ! inclined force source
   if( USE_FORCE_POINT_SOURCE ) then
      if( COMPONENT_DIR_VECT_SOURCE_E .eq. 0.d0 .and. COMPONENT_DIR_VECT_SOURCE_N .eq. 0.d0 &



More information about the CIG-COMMITS mailing list