[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