[cig-commits] r20759 - in seismo/3D/SPECFEM3D/trunk: doc/USER_MANUAL examples/BENCHMARK_CLAERBOUT_ADJOINT/ACOUSTIC/in_data_files examples/BENCHMARK_CLAERBOUT_ADJOINT/ELASTIC/in_data_files examples/Mount_StHelens/in_data_files examples/homogeneous_halfspace/in_data_files examples/homogeneous_poroelastic/in_data_files examples/layered_halfspace/in_data_files examples/meshfem3D_examples/many_interfaces examples/meshfem3D_examples/simple_model/in_data_files examples/meshfem3D_examples/socal1D/in_data_files examples/tomographic_model/in_data_files examples/waterlayered_halfspace/in_data_files in_data_files src/cuda src/generate_databases src/shared src/specfem3D

joseph.charles at geodynamics.org joseph.charles at geodynamics.org
Fri Sep 21 09:52:09 PDT 2012


Author: joseph.charles
Date: 2012-09-21 09:52:09 -0700 (Fri, 21 Sep 2012)
New Revision: 20759

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/examples/BENCHMARK_CLAERBOUT_ADJOINT/ACOUSTIC/in_data_files/Par_file
   seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ELASTIC/in_data_files/Par_file
   seismo/3D/SPECFEM3D/trunk/examples/Mount_StHelens/in_data_files/Par_file
   seismo/3D/SPECFEM3D/trunk/examples/homogeneous_halfspace/in_data_files/Par_file
   seismo/3D/SPECFEM3D/trunk/examples/homogeneous_poroelastic/in_data_files/Par_file
   seismo/3D/SPECFEM3D/trunk/examples/layered_halfspace/in_data_files/Par_file
   seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/many_interfaces/Par_file
   seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/simple_model/in_data_files/Par_file
   seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/in_data_files/Par_file
   seismo/3D/SPECFEM3D/trunk/examples/tomographic_model/in_data_files/Par_file
   seismo/3D/SPECFEM3D/trunk/examples/waterlayered_halfspace/in_data_files/Par_file
   seismo/3D/SPECFEM3D/trunk/in_data_files/Par_file
   seismo/3D/SPECFEM3D/trunk/src/cuda/compute_forces_acoustic_cuda.cu
   seismo/3D/SPECFEM3D/trunk/src/cuda/specfem3D_gpu_cuda_method_stubs.c
   seismo/3D/SPECFEM3D/trunk/src/generate_databases/create_regions_mesh.f90
   seismo/3D/SPECFEM3D/trunk/src/generate_databases/generate_databases.f90
   seismo/3D/SPECFEM3D/trunk/src/generate_databases/generate_databases_par.f90
   seismo/3D/SPECFEM3D/trunk/src/generate_databases/get_absorbing_boundary.f90
   seismo/3D/SPECFEM3D/trunk/src/shared/combine_vol_data.f90
   seismo/3D/SPECFEM3D/trunk/src/shared/constants.h.in
   seismo/3D/SPECFEM3D/trunk/src/shared/create_movie_shakemap_AVS_DX_GMT.f90
   seismo/3D/SPECFEM3D/trunk/src/shared/read_parameter_file.f90
   seismo/3D/SPECFEM3D/trunk/src/shared/smooth_vol_data.f90
   seismo/3D/SPECFEM3D/trunk/src/shared/sum_kernels.f90
   seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_forces_acoustic.f90
   seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_forces_acoustic_PML.f90
   seismo/3D/SPECFEM3D/trunk/src/specfem3D/initialize_simulation.f90
   seismo/3D/SPECFEM3D/trunk/src/specfem3D/specfem3D_par.f90
Log:
moves ABSORB_FREE_SURFACE flag from constants.h.in 
into ABSORB_INSTEAD_OF_FREE_SURFACE flag in Par_file 


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-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/doc/USER_MANUAL/manual_SPECFEM3D.tex	2012-09-21 16:52:09 UTC (rev 20759)
@@ -995,6 +995,8 @@
 want to use an anisotropy model. Please see the file \texttt{model\_aniso.f90} in subdirectory \texttt{src/generate\_databases/} for the current implementation of anisotropic models.
 \item [{\texttt{ABSORBING\_CONDITIONS}}] Set to \texttt{.true.} to turn
 on Clayton-Enquist absorbing boundary conditions (see \citet{KoTr99}).
+\item [{\texttt{ABSORB\_INSTEAD\_OF\_FREE\_SURFACE}}] Set to \texttt{.true.} to turn on 
+absorbing boundary conditions on the top surface which by default constitutes a free surface of the model.
 \item [{\texttt{MOVIE\_SURFACE}}] Set to \texttt{.false.}, unless you want
 to create a movie of seismic wave propagation on the Earth's surface.
 Turning this option on generates large output files. See Section~\ref{sec:Movies}
@@ -1067,7 +1069,7 @@
 an arbitrary (non-unitary) direction vector of the force source.
 \item [{\texttt{COMPONENT\_DIR\_VECT\_SOURCE\_N}}] This parameter specifies the North component of 
 an arbitrary (non-unitary) direction vector of the force source.
-\item [{\texttt{COMPONENT\_DIR\_VECT\_SOURCE\_ZUP}}] This parameter specifies the vertical component of 
+\item [{\texttt{COMPONENT\_DIR\_VECT\_SOURCE\_Z\_UP}}] This parameter specifies the vertical component of 
 an arbitrary (non-unitary) direction vector of the force source.
 \item [{\texttt{PRINT\_SOURCE\_TIME\_FUNCTION}}] Turn this flag on to print
 information about the source time function in the file \texttt{in\_out\_files/OUTPUT\_FILES/plot\_source\_time\_function.txt}.

Modified: seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ACOUSTIC/in_data_files/Par_file
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ACOUSTIC/in_data_files/Par_file	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ACOUSTIC/in_data_files/Par_file	2012-09-21 16:52:09 UTC (rev 20759)
@@ -37,6 +37,9 @@
 # absorbing boundary conditions for a regional simulation
 ABSORBING_CONDITIONS            = .true.
 
+# absorbing top surface (defined in mesh as 'free_surface_file')
+ABSORB_INSTEAD_OF_FREE_SURFACE  = .false.
+
 # save AVS or OpenDX movies
 MOVIE_SURFACE                   = .false.
 MOVIE_VOLUME                    = .false.
@@ -66,7 +69,9 @@
 # in which the source is a vertical force, normal force, inclined force, impact etc.
 USE_FORCE_POINT_SOURCE          = .false.
 FACTOR_FORCE_SOURCE             = 1.d15
-# components of a (non-unitary) direction vector for the force source on the E/N/Z_UP basis
+# components of a (non-unitary) direction vector for the force source in the E/N/Z_UP basis;
+# this vector is made unitary internally in the code and thus only its direction matters here;
+# its norm is ignored and the norm of the force used is FACTOR_FORCE_SOURCE times the source time function.
 COMPONENT_DIR_VECT_SOURCE_E     = 1.d0
 COMPONENT_DIR_VECT_SOURCE_N     = -2.d0
 COMPONENT_DIR_VECT_SOURCE_Z_UP  = -1.d0

Modified: seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ELASTIC/in_data_files/Par_file
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ELASTIC/in_data_files/Par_file	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ELASTIC/in_data_files/Par_file	2012-09-21 16:52:09 UTC (rev 20759)
@@ -37,6 +37,9 @@
 # absorbing boundary conditions for a regional simulation
 ABSORBING_CONDITIONS            = .true.
 
+# absorbing top surface (defined in mesh as 'free_surface_file')
+ABSORB_INSTEAD_OF_FREE_SURFACE  = .false.
+
 # save AVS or OpenDX movies
 MOVIE_SURFACE                   = .false.
 MOVIE_VOLUME                    = .false.
@@ -66,7 +69,9 @@
 # in which the source is a vertical force, normal force, inclined force, impact etc.
 USE_FORCE_POINT_SOURCE          = .false.
 FACTOR_FORCE_SOURCE             = 1.d15
-# components of a (non-unitary) direction vector for the force source on the E/N/Z_UP basis
+# components of a (non-unitary) direction vector for the force source in the E/N/Z_UP basis;
+# this vector is made unitary internally in the code and thus only its direction matters here;
+# its norm is ignored and the norm of the force used is FACTOR_FORCE_SOURCE times the source time function.
 COMPONENT_DIR_VECT_SOURCE_E     = 1.d0
 COMPONENT_DIR_VECT_SOURCE_N     = -2.d0
 COMPONENT_DIR_VECT_SOURCE_Z_UP  = -1.d0

Modified: seismo/3D/SPECFEM3D/trunk/examples/Mount_StHelens/in_data_files/Par_file
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/Mount_StHelens/in_data_files/Par_file	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/examples/Mount_StHelens/in_data_files/Par_file	2012-09-21 16:52:09 UTC (rev 20759)
@@ -37,6 +37,9 @@
 # absorbing boundary conditions for a regional simulation
 ABSORBING_CONDITIONS            = .true.
 
+# absorbing top surface (defined in mesh as 'free_surface_file')
+ABSORB_INSTEAD_OF_FREE_SURFACE  = .false.
+
 # save AVS or OpenDX movies
 MOVIE_SURFACE                   = .false.
 MOVIE_VOLUME                    = .false.
@@ -66,7 +69,9 @@
 # in which the source is a vertical force, normal force, inclined force, impact etc.
 USE_FORCE_POINT_SOURCE          = .false.
 FACTOR_FORCE_SOURCE             = 1.d15
-# components of a (non-unitary) direction vector for the force source on the E/N/Z_UP basis
+# components of a (non-unitary) direction vector for the force source in the E/N/Z_UP basis;
+# this vector is made unitary internally in the code and thus only its direction matters here;
+# its norm is ignored and the norm of the force used is FACTOR_FORCE_SOURCE times the source time function.
 COMPONENT_DIR_VECT_SOURCE_E     = 1.d0
 COMPONENT_DIR_VECT_SOURCE_N     = -2.d0
 COMPONENT_DIR_VECT_SOURCE_Z_UP  = -1.d0

Modified: seismo/3D/SPECFEM3D/trunk/examples/homogeneous_halfspace/in_data_files/Par_file
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/homogeneous_halfspace/in_data_files/Par_file	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/examples/homogeneous_halfspace/in_data_files/Par_file	2012-09-21 16:52:09 UTC (rev 20759)
@@ -38,6 +38,9 @@
 # absorbing boundary conditions for a regional simulation
 ABSORBING_CONDITIONS            = .false.
 
+# absorbing top surface (defined in mesh as 'free_surface_file')
+ABSORB_INSTEAD_OF_FREE_SURFACE  = .false.
+
 # save AVS or OpenDX movies
 MOVIE_SURFACE                   = .false.
 MOVIE_VOLUME                    = .false.
@@ -68,7 +71,9 @@
 # in which the source is a vertical force, normal force, inclined force, impact etc.
 USE_FORCE_POINT_SOURCE          = .false.
 FACTOR_FORCE_SOURCE             = 1.d15
-# components of a (non-unitary) direction vector for the force source on the E/N/Z_UP basis
+# components of a (non-unitary) direction vector for the force source in the E/N/Z_UP basis;
+# this vector is made unitary internally in the code and thus only its direction matters here;
+# its norm is ignored and the norm of the force used is FACTOR_FORCE_SOURCE times the source time function.
 COMPONENT_DIR_VECT_SOURCE_E     = 1.d0
 COMPONENT_DIR_VECT_SOURCE_N     = -2.d0
 COMPONENT_DIR_VECT_SOURCE_Z_UP  = -1.d0

Modified: seismo/3D/SPECFEM3D/trunk/examples/homogeneous_poroelastic/in_data_files/Par_file
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/homogeneous_poroelastic/in_data_files/Par_file	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/examples/homogeneous_poroelastic/in_data_files/Par_file	2012-09-21 16:52:09 UTC (rev 20759)
@@ -38,6 +38,9 @@
 # absorbing boundary conditions for a regional simulation
 ABSORBING_CONDITIONS            = .false.
 
+# absorbing top surface (defined in mesh as 'free_surface_file')
+ABSORB_INSTEAD_OF_FREE_SURFACE  = .false.
+
 # save AVS or OpenDX movies
 MOVIE_SURFACE                   = .false.
 MOVIE_VOLUME                    = .false.
@@ -68,7 +71,9 @@
 # in which the source is a vertical force, normal force, inclined force, impact etc.
 USE_FORCE_POINT_SOURCE          = .false.
 FACTOR_FORCE_SOURCE             = 1.d15
-# components of a (non-unitary) direction vector for the force source on the E/N/Z_UP basis
+# components of a (non-unitary) direction vector for the force source in the E/N/Z_UP basis;
+# this vector is made unitary internally in the code and thus only its direction matters here;
+# its norm is ignored and the norm of the force used is FACTOR_FORCE_SOURCE times the source time function.
 COMPONENT_DIR_VECT_SOURCE_E     = 1.d0
 COMPONENT_DIR_VECT_SOURCE_N     = -2.d0
 COMPONENT_DIR_VECT_SOURCE_Z_UP  = -1.d0

Modified: seismo/3D/SPECFEM3D/trunk/examples/layered_halfspace/in_data_files/Par_file
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/layered_halfspace/in_data_files/Par_file	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/examples/layered_halfspace/in_data_files/Par_file	2012-09-21 16:52:09 UTC (rev 20759)
@@ -38,6 +38,9 @@
 # absorbing boundary conditions for a regional simulation
 ABSORBING_CONDITIONS            = .true.
 
+# absorbing top surface (defined in mesh as 'free_surface_file')
+ABSORB_INSTEAD_OF_FREE_SURFACE  = .false.
+
 # save AVS or OpenDX movies
 MOVIE_SURFACE                   = .false.
 MOVIE_VOLUME                    = .false.
@@ -67,7 +70,9 @@
 # in which the source is a vertical force, normal force, inclined force, impact etc.
 USE_FORCE_POINT_SOURCE          = .false.
 FACTOR_FORCE_SOURCE             = 1.d15
-# components of a (non-unitary) direction vector for the force source on the E/N/Z_UP basis
+# components of a (non-unitary) direction vector for the force source in the E/N/Z_UP basis;
+# this vector is made unitary internally in the code and thus only its direction matters here;
+# its norm is ignored and the norm of the force used is FACTOR_FORCE_SOURCE times the source time function.
 COMPONENT_DIR_VECT_SOURCE_E     = 1.d0
 COMPONENT_DIR_VECT_SOURCE_N     = -2.d0
 COMPONENT_DIR_VECT_SOURCE_Z_UP  = -1.d0

Modified: seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/many_interfaces/Par_file
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/many_interfaces/Par_file	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/many_interfaces/Par_file	2012-09-21 16:52:09 UTC (rev 20759)
@@ -38,6 +38,9 @@
 # absorbing boundary conditions for a regional simulation
 ABSORBING_CONDITIONS            = .true.
 
+# absorbing top surface (defined in mesh as 'free_surface_file')
+ABSORB_INSTEAD_OF_FREE_SURFACE  = .false.
+
 # save AVS or OpenDX movies
 MOVIE_SURFACE                   = .true.
 MOVIE_VOLUME                    = .false.
@@ -67,7 +70,9 @@
 # in which the source is a vertical force, normal force, inclined force, impact etc.
 USE_FORCE_POINT_SOURCE          = .false.
 FACTOR_FORCE_SOURCE             = 1.d15
-# components of a (non-unitary) direction vector for the force source on the E/N/Z_UP basis
+# components of a (non-unitary) direction vector for the force source in the E/N/Z_UP basis;
+# this vector is made unitary internally in the code and thus only its direction matters here;
+# its norm is ignored and the norm of the force used is FACTOR_FORCE_SOURCE times the source time function.
 COMPONENT_DIR_VECT_SOURCE_E     = 1.d0
 COMPONENT_DIR_VECT_SOURCE_N     = -2.d0
 COMPONENT_DIR_VECT_SOURCE_Z_UP  = -1.d0

Modified: seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/simple_model/in_data_files/Par_file
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/simple_model/in_data_files/Par_file	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/simple_model/in_data_files/Par_file	2012-09-21 16:52:09 UTC (rev 20759)
@@ -38,6 +38,9 @@
 # absorbing boundary conditions for a regional simulation
 ABSORBING_CONDITIONS            = .false.
 
+# absorbing top surface (defined in mesh as 'free_surface_file')
+ABSORB_INSTEAD_OF_FREE_SURFACE  = .false.
+
 # save AVS or OpenDX movies
 MOVIE_SURFACE                   = .false.
 MOVIE_VOLUME                    = .false.
@@ -67,7 +70,9 @@
 # in which the source is a vertical force, normal force, inclined force, impact etc.
 USE_FORCE_POINT_SOURCE          = .false.
 FACTOR_FORCE_SOURCE             = 1.d15
-# components of a (non-unitary) direction vector for the force source on the E/N/Z_UP basis
+# components of a (non-unitary) direction vector for the force source in the E/N/Z_UP basis;
+# this vector is made unitary internally in the code and thus only its direction matters here;
+# its norm is ignored and the norm of the force used is FACTOR_FORCE_SOURCE times the source time function.
 COMPONENT_DIR_VECT_SOURCE_E     = 1.d0
 COMPONENT_DIR_VECT_SOURCE_N     = -2.d0
 COMPONENT_DIR_VECT_SOURCE_Z_UP  = -1.d0

Modified: seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/in_data_files/Par_file
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/in_data_files/Par_file	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/in_data_files/Par_file	2012-09-21 16:52:09 UTC (rev 20759)
@@ -38,6 +38,9 @@
 # absorbing boundary conditions for a regional simulation
 ABSORBING_CONDITIONS            = .true.
 
+# absorbing top surface (defined in mesh as 'free_surface_file')
+ABSORB_INSTEAD_OF_FREE_SURFACE  = .false.
+
 # save AVS or OpenDX movies
 MOVIE_SURFACE                   = .false.
 MOVIE_VOLUME                    = .false.
@@ -67,7 +70,9 @@
 # in which the source is a vertical force, normal force, inclined force, impact etc.
 USE_FORCE_POINT_SOURCE          = .false.
 FACTOR_FORCE_SOURCE             = 1.d15
-# components of a (non-unitary) direction vector for the force source on the E/N/Z_UP basis
+# components of a (non-unitary) direction vector for the force source in the E/N/Z_UP basis;
+# this vector is made unitary internally in the code and thus only its direction matters here;
+# its norm is ignored and the norm of the force used is FACTOR_FORCE_SOURCE times the source time function.
 COMPONENT_DIR_VECT_SOURCE_E     = 1.d0
 COMPONENT_DIR_VECT_SOURCE_N     = -2.d0
 COMPONENT_DIR_VECT_SOURCE_Z_UP  = -1.d0

Modified: seismo/3D/SPECFEM3D/trunk/examples/tomographic_model/in_data_files/Par_file
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/tomographic_model/in_data_files/Par_file	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/examples/tomographic_model/in_data_files/Par_file	2012-09-21 16:52:09 UTC (rev 20759)
@@ -38,6 +38,9 @@
 # absorbing boundary conditions for a regional simulation
 ABSORBING_CONDITIONS            = .true.
 
+# absorbing top surface (defined in mesh as 'free_surface_file')
+ABSORB_INSTEAD_OF_FREE_SURFACE  = .false.
+
 # save AVS or OpenDX movies
 MOVIE_SURFACE                   = .false.
 MOVIE_VOLUME                    = .false.
@@ -67,7 +70,9 @@
 # in which the source is a vertical force, normal force, inclined force, impact etc.
 USE_FORCE_POINT_SOURCE          = .false.
 FACTOR_FORCE_SOURCE             = 1.d15
-# components of a (non-unitary) direction vector for the force source on the E/N/Z_UP basis
+# components of a (non-unitary) direction vector for the force source in the E/N/Z_UP basis;
+# this vector is made unitary internally in the code and thus only its direction matters here;
+# its norm is ignored and the norm of the force used is FACTOR_FORCE_SOURCE times the source time function.
 COMPONENT_DIR_VECT_SOURCE_E     = 1.d0
 COMPONENT_DIR_VECT_SOURCE_N     = -2.d0
 COMPONENT_DIR_VECT_SOURCE_Z_UP  = -1.d0

Modified: seismo/3D/SPECFEM3D/trunk/examples/waterlayered_halfspace/in_data_files/Par_file
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/waterlayered_halfspace/in_data_files/Par_file	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/examples/waterlayered_halfspace/in_data_files/Par_file	2012-09-21 16:52:09 UTC (rev 20759)
@@ -38,6 +38,9 @@
 # absorbing boundary conditions for a regional simulation
 ABSORBING_CONDITIONS            = .true.
 
+# absorbing top surface (defined in mesh as 'free_surface_file')
+ABSORB_INSTEAD_OF_FREE_SURFACE  = .false.
+
 # save AVS or OpenDX movies
 MOVIE_SURFACE                   = .false.
 MOVIE_VOLUME                    = .false.
@@ -67,7 +70,9 @@
 # in which the source is a vertical force, normal force, inclined force, impact etc.
 USE_FORCE_POINT_SOURCE          = .false.
 FACTOR_FORCE_SOURCE             = 1.d15
-# components of a (non-unitary) direction vector for the force source on the E/N/Z_UP basis
+# components of a (non-unitary) direction vector for the force source in the E/N/Z_UP basis;
+# this vector is made unitary internally in the code and thus only its direction matters here;
+# its norm is ignored and the norm of the force used is FACTOR_FORCE_SOURCE times the source time function.
 COMPONENT_DIR_VECT_SOURCE_E     = 1.d0
 COMPONENT_DIR_VECT_SOURCE_N     = -2.d0
 COMPONENT_DIR_VECT_SOURCE_Z_UP  = -1.d0

Modified: seismo/3D/SPECFEM3D/trunk/in_data_files/Par_file
===================================================================
--- seismo/3D/SPECFEM3D/trunk/in_data_files/Par_file	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/in_data_files/Par_file	2012-09-21 16:52:09 UTC (rev 20759)
@@ -38,6 +38,9 @@
 # absorbing boundary conditions for a regional simulation
 ABSORBING_CONDITIONS            = .false.
 
+# absorbing top surface (defined in mesh as 'free_surface_file')
+ABSORB_INSTEAD_OF_FREE_SURFACE  = .false.
+
 # save AVS or OpenDX movies
 MOVIE_SURFACE                   = .false.
 MOVIE_VOLUME                    = .false.

Modified: seismo/3D/SPECFEM3D/trunk/src/cuda/compute_forces_acoustic_cuda.cu
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/cuda/compute_forces_acoustic_cuda.cu	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/src/cuda/compute_forces_acoustic_cuda.cu	2012-09-21 16:52:09 UTC (rev 20759)
@@ -788,14 +788,14 @@
 extern "C"
 void FC_FUNC_(acoustic_enforce_free_surf_cuda,
               ACOUSTIC_ENFORCE_FREE_SURF_CUDA)(long* Mesh_pointer_f,
-                                               int* ABSORB_FREE_SURFACE) {
+                                               int* ABSORB_INSTEAD_OF_FREE_SURFACE) {
 
 TRACE("acoustic_enforce_free_surf_cuda");
 
   Mesh* mp = (Mesh*)(*Mesh_pointer_f); //get mesh pointer out of fortran integer container
 
   // checks if anything to do
-  if( *ABSORB_FREE_SURFACE == 0 ){
+  if( *ABSORB_INSTEAD_OF_FREE_SURFACE == 0 ){
 
     // does not absorb free surface, thus we enforce the potential to be zero at surface
 

Modified: seismo/3D/SPECFEM3D/trunk/src/cuda/specfem3D_gpu_cuda_method_stubs.c
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/cuda/specfem3D_gpu_cuda_method_stubs.c	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/src/cuda/specfem3D_gpu_cuda_method_stubs.c	2012-09-21 16:52:09 UTC (rev 20759)
@@ -212,7 +212,7 @@
 
 void FC_FUNC_(acoustic_enforce_free_surf_cuda,
               ACOUSTIC_ENFORCE_FREE_SURF_CUDA)(long* Mesh_pointer_f,
-                                               int* ABSORB_FREE_SURFACE) {}
+                                               int* ABSORB_INSTEAD_OF_FREE_SURFACE) {}
 
 
 //

Modified: seismo/3D/SPECFEM3D/trunk/src/generate_databases/create_regions_mesh.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/generate_databases/create_regions_mesh.f90	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/src/generate_databases/create_regions_mesh.f90	2012-09-21 16:52:09 UTC (rev 20759)
@@ -257,6 +257,7 @@
                         nspec2D_xmin,nspec2D_xmax,nspec2D_ymin,nspec2D_ymax, &
                         nspec2D_bottom,nspec2D_top,ANISOTROPY)
 
+  use generate_databases_par, only: ABSORB_INSTEAD_OF_FREE_SURFACE
   use create_regions_mesh_ext_par
   implicit none
 
@@ -353,7 +354,7 @@
   ! absorbing faces
   num_abs_boundary_faces = nspec2D_xmin + nspec2D_xmax + nspec2D_ymin + nspec2D_ymax + nspec2D_bottom
   ! adds faces of free surface if it also absorbs
-  if( ABSORB_FREE_SURFACE ) num_abs_boundary_faces = num_abs_boundary_faces + nspec2D_top
+  if( ABSORB_INSTEAD_OF_FREE_SURFACE ) num_abs_boundary_faces = num_abs_boundary_faces + nspec2D_top
 
   ! allocates arrays to store info for each face (assumes NGLLX=NGLLY=NGLLZ)
   allocate( abs_boundary_ispec(num_abs_boundary_faces), &

Modified: seismo/3D/SPECFEM3D/trunk/src/generate_databases/generate_databases.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/generate_databases/generate_databases.f90	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/src/generate_databases/generate_databases.f90	2012-09-21 16:52:09 UTC (rev 20759)
@@ -264,7 +264,8 @@
                         NTSTEP_BETWEEN_READ_ADJSRC,NOISE_TOMOGRAPHY, &
                         USE_FORCE_POINT_SOURCE,FACTOR_FORCE_SOURCE, &
                         COMPONENT_DIR_VECT_SOURCE_E,COMPONENT_DIR_VECT_SOURCE_N, &
-                        COMPONENT_DIR_VECT_SOURCE_Z_UP,IMODEL)
+                        COMPONENT_DIR_VECT_SOURCE_Z_UP,ABSORB_INSTEAD_OF_FREE_SURFACE, &
+                        IMODEL)
 
 ! check that the code is running with the requested nb of processes
   if(sizeprocs /= NPROC) then
@@ -391,12 +392,19 @@
     write(IMAIN,*)
     if(OCEANS) then
       write(IMAIN,*) 'incorporating the oceans using equivalent load'
-      if( TOPOGRAPHY ) write(IMAIN,*) ' with elevation from topography file'
+      if(TOPOGRAPHY) write(IMAIN,*) ' with elevation from topography file'
     else
       write(IMAIN,*) 'no oceans'
     endif
 
     write(IMAIN,*)
+    if(ABSORBING_CONDITIONS) then
+      write(IMAIN,*) 'incorporating absorbing conditions'
+    else
+      write(IMAIN,*) 'no absorbing condition'
+    endif
+
+    write(IMAIN,*)
     if(USE_FORCE_POINT_SOURCE) then
        write(IMAIN,*) 'using a force point source instead of a CMTSOLUTION source'
     else

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-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/src/generate_databases/generate_databases_par.f90	2012-09-21 16:52:09 UTC (rev 20759)
@@ -64,7 +64,8 @@
 
   logical :: ATTENUATION,USE_OLSEN_ATTENUATION, &
           OCEANS,TOPOGRAPHY,SAVE_FORWARD,USE_FORCE_POINT_SOURCE
-  logical :: ANISOTROPY,ABSORBING_CONDITIONS,SAVE_MESH_FILES,PRINT_SOURCE_TIME_FUNCTION
+  logical :: ANISOTROPY,ABSORBING_CONDITIONS,SAVE_MESH_FILES,PRINT_SOURCE_TIME_FUNCTION, &
+          ABSORB_INSTEAD_OF_FREE_SURFACE
 
   logical :: MOVIE_SURFACE,MOVIE_VOLUME,CREATE_SHAKEMAP,SAVE_DISPLACEMENT, &
           USE_HIGHRES_FOR_MOVIES

Modified: seismo/3D/SPECFEM3D/trunk/src/generate_databases/get_absorbing_boundary.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/generate_databases/get_absorbing_boundary.f90	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/src/generate_databases/get_absorbing_boundary.f90	2012-09-21 16:52:09 UTC (rev 20759)
@@ -34,6 +34,7 @@
 
 ! determines absorbing boundaries/free-surface, 2D jacobians, face normals for Stacey conditions
 
+  use generate_databases_par, only: ABSORB_INSTEAD_OF_FREE_SURFACE
   use create_regions_mesh_ext_par
   implicit none
 
@@ -438,7 +439,7 @@
     enddo
 
     ! stores surface infos
-    if( .not. ABSORB_FREE_SURFACE ) then
+    if( .not. ABSORB_INSTEAD_OF_FREE_SURFACE ) then
       ! stores free surface
       ! sets face infos
       ifree = ifree + 1
@@ -505,8 +506,8 @@
   if( myrank == 0 ) then
     write(IMAIN,*) '     absorbing boundary:'
     write(IMAIN,*) '     total number of faces = ',iabs
-    if( ABSORB_FREE_SURFACE ) then
-    write(IMAIN,*) '     absorbing boundary includes free surface'
+    if( ABSORB_INSTEAD_OF_FREE_SURFACE ) then
+       write(IMAIN,*) '     absorbing boundary includes free surface'
     endif
   endif
 

Modified: seismo/3D/SPECFEM3D/trunk/src/shared/combine_vol_data.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/shared/combine_vol_data.f90	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/src/shared/combine_vol_data.f90	2012-09-21 16:52:09 UTC (rev 20759)
@@ -100,7 +100,7 @@
             USE_HIGHRES_FOR_MOVIES,SUPPRESS_UTM_PROJECTION
   logical :: ATTENUATION,USE_OLSEN_ATTENUATION, &
             OCEANS,TOPOGRAPHY,USE_FORCE_POINT_SOURCE
-  logical :: ABSORBING_CONDITIONS,SAVE_FORWARD
+  logical :: ABSORBING_CONDITIONS,SAVE_FORWARD,ABSORB_INSTEAD_OF_FREE_SURFACE
   logical :: ANISOTROPY,SAVE_MESH_FILES,PRINT_SOURCE_TIME_FUNCTION
   character(len=256) LOCAL_PATH
   integer :: IMODEL
@@ -186,7 +186,8 @@
                         NTSTEP_BETWEEN_READ_ADJSRC,NOISE_TOMOGRAPHY, &
                         USE_FORCE_POINT_SOURCE,FACTOR_FORCE_SOURCE, &
                         COMPONENT_DIR_VECT_SOURCE_E,COMPONENT_DIR_VECT_SOURCE_N, &
-                        COMPONENT_DIR_VECT_SOURCE_Z_UP,IMODEL)
+                        COMPONENT_DIR_VECT_SOURCE_Z_UP,ABSORB_INSTEAD_OF_FREE_SURFACE, &
+                        IMODEL)
 
   print *, 'Slice list: '
   print *, node_list(1:num_node)

Modified: seismo/3D/SPECFEM3D/trunk/src/shared/constants.h.in
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/shared/constants.h.in	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/src/shared/constants.h.in	2012-09-21 16:52:09 UTC (rev 20759)
@@ -149,10 +149,6 @@
 !!
 !!-----------------------------------------------------------
 
-! absorb top surface
-! (defined in mesh as 'free_surface_file')
-  logical,parameter :: ABSORB_FREE_SURFACE = .false.
-
 ! absorb boundaries using a PML region
 ! (EXPERIMENTAL feature)
 ! (only acoustic domains supported...)

Modified: seismo/3D/SPECFEM3D/trunk/src/shared/create_movie_shakemap_AVS_DX_GMT.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/shared/create_movie_shakemap_AVS_DX_GMT.f90	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/src/shared/create_movie_shakemap_AVS_DX_GMT.f90	2012-09-21 16:52:09 UTC (rev 20759)
@@ -95,7 +95,7 @@
                    COMPONENT_DIR_VECT_SOURCE_Z_UP
   logical ATTENUATION,USE_OLSEN_ATTENUATION, &
           OCEANS,TOPOGRAPHY,USE_FORCE_POINT_SOURCE
-  logical ABSORBING_CONDITIONS,SAVE_FORWARD
+  logical ABSORBING_CONDITIONS,SAVE_FORWARD,ABSORB_INSTEAD_OF_FREE_SURFACE
   logical ANISOTROPY,SAVE_MESH_FILES,PRINT_SOURCE_TIME_FUNCTION
   character(len=256) OUTPUT_FILES,LOCAL_PATH
   integer NPROC
@@ -140,7 +140,8 @@
         NTSTEP_BETWEEN_READ_ADJSRC,NOISE_TOMOGRAPHY, &
         USE_FORCE_POINT_SOURCE,FACTOR_FORCE_SOURCE, &
         COMPONENT_DIR_VECT_SOURCE_E,COMPONENT_DIR_VECT_SOURCE_N, &
-        COMPONENT_DIR_VECT_SOURCE_Z_UP,IMODEL)
+        COMPONENT_DIR_VECT_SOURCE_Z_UP,ABSORB_INSTEAD_OF_FREE_SURFACE, &
+        IMODEL)
 
   ! get the base pathname for output files
   call get_value_string(OUTPUT_FILES, 'OUTPUT_FILES', OUTPUT_FILES_PATH(1:len_trim(OUTPUT_FILES_PATH)))

Modified: seismo/3D/SPECFEM3D/trunk/src/shared/read_parameter_file.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/shared/read_parameter_file.f90	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/src/shared/read_parameter_file.f90	2012-09-21 16:52:09 UTC (rev 20759)
@@ -33,7 +33,8 @@
                         SAVE_MESH_FILES,PRINT_SOURCE_TIME_FUNCTION,NTSTEP_BETWEEN_OUTPUT_INFO, &
                         SIMULATION_TYPE,SAVE_FORWARD,NTSTEP_BETWEEN_READ_ADJSRC,NOISE_TOMOGRAPHY, &
                         USE_FORCE_POINT_SOURCE,FACTOR_FORCE_SOURCE,COMPONENT_DIR_VECT_SOURCE_E, &
-                        COMPONENT_DIR_VECT_SOURCE_N,COMPONENT_DIR_VECT_SOURCE_Z_UP,IMODEL)
+                        COMPONENT_DIR_VECT_SOURCE_N,COMPONENT_DIR_VECT_SOURCE_Z_UP, &
+                        ABSORB_INSTEAD_OF_FREE_SURFACE,IMODEL)
 
   implicit none
 
@@ -51,7 +52,7 @@
   logical ATTENUATION,USE_OLSEN_ATTENUATION,OCEANS,TOPOGRAPHY,ABSORBING_CONDITIONS,SAVE_FORWARD
   logical MOVIE_SURFACE,MOVIE_VOLUME,CREATE_SHAKEMAP,SAVE_DISPLACEMENT,USE_HIGHRES_FOR_MOVIES
   logical ANISOTROPY,SAVE_MESH_FILES,PRINT_SOURCE_TIME_FUNCTION,SUPPRESS_UTM_PROJECTION
-  logical USE_FORCE_POINT_SOURCE
+  logical USE_FORCE_POINT_SOURCE,ABSORB_INSTEAD_OF_FREE_SURFACE
 
   character(len=256) LOCAL_PATH,CMTSOLUTION
 
@@ -118,6 +119,8 @@
   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')
+  if(err_occurred() /= 0) return
   call read_value_logical(MOVIE_SURFACE, 'solver.MOVIE_SURFACE')
   if(err_occurred() /= 0) return
   call read_value_logical(MOVIE_VOLUME, 'solver.MOVIE_VOLUME')

Modified: seismo/3D/SPECFEM3D/trunk/src/shared/smooth_vol_data.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/shared/smooth_vol_data.f90	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/src/shared/smooth_vol_data.f90	2012-09-21 16:52:09 UTC (rev 20759)
@@ -108,7 +108,7 @@
             USE_HIGHRES_FOR_MOVIES,SUPPRESS_UTM_PROJECTION
   logical :: ATTENUATION,USE_OLSEN_ATTENUATION, &
             OCEANS,TOPOGRAPHY,USE_FORCE_POINT_SOURCE
-  logical :: ABSORBING_CONDITIONS,SAVE_FORWARD
+  logical :: ABSORBING_CONDITIONS,SAVE_FORWARD,ABSORB_INSTEAD_OF_FREE_SURFACE
   logical :: ANISOTROPY,SAVE_MESH_FILES,PRINT_SOURCE_TIME_FUNCTION
   character(len=256) LOCAL_PATH
   integer :: IMODEL
@@ -224,7 +224,8 @@
                         NTSTEP_BETWEEN_READ_ADJSRC,NOISE_TOMOGRAPHY, &
                         USE_FORCE_POINT_SOURCE,FACTOR_FORCE_SOURCE, &
                         COMPONENT_DIR_VECT_SOURCE_E,COMPONENT_DIR_VECT_SOURCE_N, &
-                        COMPONENT_DIR_VECT_SOURCE_Z_UP,IMODEL)
+                        COMPONENT_DIR_VECT_SOURCE_Z_UP,ABSORB_INSTEAD_OF_FREE_SURFACE, &
+                        IMODEL)
 
   ! checks if number of MPI process as specified
   if (sizeprocs /= NPROC) then

Modified: seismo/3D/SPECFEM3D/trunk/src/shared/sum_kernels.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/shared/sum_kernels.f90	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/src/shared/sum_kernels.f90	2012-09-21 16:52:09 UTC (rev 20759)
@@ -115,7 +115,7 @@
             USE_HIGHRES_FOR_MOVIES,SUPPRESS_UTM_PROJECTION
   logical :: ATTENUATION,USE_OLSEN_ATTENUATION, &
             OCEANS,TOPOGRAPHY,USE_FORCE_POINT_SOURCE
-  logical :: ABSORBING_CONDITIONS,SAVE_FORWARD
+  logical :: ABSORBING_CONDITIONS,SAVE_FORWARD,ABSORB_INSTEAD_OF_FREE_SURFACE
   logical :: ANISOTROPY,SAVE_MESH_FILES,PRINT_SOURCE_TIME_FUNCTION
   character(len=256) LOCAL_PATH
 
@@ -163,7 +163,8 @@
                         NTSTEP_BETWEEN_READ_ADJSRC,NOISE_TOMOGRAPHY, &
                         USE_FORCE_POINT_SOURCE,FACTOR_FORCE_SOURCE, &
                         COMPONENT_DIR_VECT_SOURCE_E,COMPONENT_DIR_VECT_SOURCE_N, &
-                        COMPONENT_DIR_VECT_SOURCE_Z_UP,IMODEL)
+                        COMPONENT_DIR_VECT_SOURCE_Z_UP,ABSORB_INSTEAD_OF_FREE_SURFACE, &
+                        IMODEL)
 
   ! checks if number of MPI process as specified
   if (sizeprocs /= NPROC) then

Modified: seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_forces_acoustic.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_forces_acoustic.f90	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_forces_acoustic.f90	2012-09-21 16:52:09 UTC (rev 20759)
@@ -68,20 +68,20 @@
   ! enforces free surface (zeroes potentials at free surface)
   if(.NOT. GPU_MODE) then
     ! on CPU
-    call acoustic_enforce_free_surface(NSPEC_AB,NGLOB_AB, &
+    call acoustic_enforce_free_surface(NSPEC_AB,NGLOB_AB,ABSORB_INSTEAD_OF_FREE_SURFACE, &
                         potential_acoustic,potential_dot_acoustic,potential_dot_dot_acoustic, &
                         ibool,free_surface_ijk,free_surface_ispec, &
                         num_free_surface_faces,ispec_is_acoustic)
 
     ! adjoint simulations
     if( SIMULATION_TYPE == 3 ) &
-      call acoustic_enforce_free_surface(NSPEC_AB,NGLOB_ADJOINT, &
+      call acoustic_enforce_free_surface(NSPEC_AB,NGLOB_ADJOINT,ABSORB_INSTEAD_OF_FREE_SURFACE, &
                         b_potential_acoustic,b_potential_dot_acoustic,b_potential_dot_dot_acoustic, &
                         ibool,free_surface_ijk,free_surface_ispec, &
                         num_free_surface_faces,ispec_is_acoustic)
   else
     ! on GPU
-    call acoustic_enforce_free_surf_cuda(Mesh_pointer,ABSORB_FREE_SURFACE)
+    call acoustic_enforce_free_surf_cuda(Mesh_pointer,ABSORB_INSTEAD_OF_FREE_SURFACE)
   endif
 
   if(ABSORB_USE_PML .and. ABSORBING_CONDITIONS) then
@@ -95,7 +95,7 @@
     if(GPU_MODE) call transfer_fields_ac_from_device(NGLOB_AB,potential_acoustic, &
                               potential_dot_acoustic, potential_dot_dot_acoustic, Mesh_pointer)
 
-    call PML_acoustic_enforce_free_srfc(NSPEC_AB,NGLOB_AB, &
+    call PML_acoustic_enforce_free_srfc(NSPEC_AB,NGLOB_AB,ABSORB_INSTEAD_OF_FREE_SURFACE, &
                         potential_acoustic,potential_dot_acoustic,potential_dot_dot_acoustic, &
                         ibool,free_surface_ijk,free_surface_ispec, &
                         num_free_surface_faces,ispec_is_acoustic, &
@@ -477,7 +477,7 @@
 ! enforces free surface (zeroes potentials at free surface)
   if(.NOT. GPU_MODE) then
     ! on CPU
-    call acoustic_enforce_free_surface(NSPEC_AB,NGLOB_AB, &
+    call acoustic_enforce_free_surface(NSPEC_AB,NGLOB_AB,ABSORB_INSTEAD_OF_FREE_SURFACE, &
                         potential_acoustic,potential_dot_acoustic,potential_dot_dot_acoustic, &
                         ibool,free_surface_ijk,free_surface_ispec, &
                         num_free_surface_faces,ispec_is_acoustic)
@@ -490,13 +490,13 @@
 
     ! adjoint simulations
     if (SIMULATION_TYPE == 3) &
-      call acoustic_enforce_free_surface(NSPEC_AB,NGLOB_ADJOINT, &
+      call acoustic_enforce_free_surface(NSPEC_AB,NGLOB_ADJOINT,ABSORB_INSTEAD_OF_FREE_SURFACE, &
                         b_potential_acoustic,b_potential_dot_acoustic,b_potential_dot_dot_acoustic, &
                         ibool,free_surface_ijk,free_surface_ispec, &
                         num_free_surface_faces,ispec_is_acoustic)
   else
     ! on GPU
-    call acoustic_enforce_free_surf_cuda(Mesh_pointer,ABSORB_FREE_SURFACE)
+    call acoustic_enforce_free_surf_cuda(Mesh_pointer,ABSORB_INSTEAD_OF_FREE_SURFACE)
   endif
 
 
@@ -505,7 +505,7 @@
     if( GPU_MODE ) call transfer_fields_ac_from_device(NGLOB_AB,potential_acoustic, &
                               potential_dot_acoustic, potential_dot_dot_acoustic, Mesh_pointer)
 
-    call PML_acoustic_enforce_free_srfc(NSPEC_AB,NGLOB_AB, &
+    call PML_acoustic_enforce_free_srfc(NSPEC_AB,NGLOB_AB,ABSORB_INSTEAD_OF_FREE_SURFACE, &
                         potential_acoustic,potential_dot_acoustic,potential_dot_dot_acoustic, &
                         ibool,free_surface_ijk,free_surface_ispec, &
                         num_free_surface_faces, &
@@ -528,7 +528,7 @@
 !
 
 
-subroutine acoustic_enforce_free_surface(NSPEC_AB,NGLOB_AB, &
+subroutine acoustic_enforce_free_surface(NSPEC_AB,NGLOB_AB,ABSORB_INSTEAD_OF_FREE_SURFACE, &
                         potential_acoustic,potential_dot_acoustic,potential_dot_dot_acoustic, &
                         ibool,free_surface_ijk,free_surface_ispec, &
                         num_free_surface_faces,ispec_is_acoustic)
@@ -536,6 +536,7 @@
   include 'constants.h'
 
   integer :: NSPEC_AB,NGLOB_AB
+  logical :: ABSORB_INSTEAD_OF_FREE_SURFACE
 
 ! acoustic potentials
   real(kind=CUSTOM_REAL), dimension(NGLOB_AB) :: &
@@ -554,7 +555,7 @@
   integer :: iface,igll,i,j,k,ispec,iglob
 
   ! checks if free surface became an absorbing boundary
-  if( ABSORB_FREE_SURFACE ) return
+  if( ABSORB_INSTEAD_OF_FREE_SURFACE ) return
 
 ! enforce potentials to be zero at surface
   do iface = 1, num_free_surface_faces

Modified: seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_forces_acoustic_PML.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_forces_acoustic_PML.f90	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_forces_acoustic_PML.f90	2012-09-21 16:52:09 UTC (rev 20759)
@@ -942,7 +942,7 @@
 !-------------------------------------------------------------------------------------------------
 !
 
-subroutine PML_acoustic_enforce_free_srfc(NSPEC_AB,NGLOB_AB, &
+subroutine PML_acoustic_enforce_free_srfc(NSPEC_AB,NGLOB_AB,ABSORB_INSTEAD_OF_FREE_SURFACE, &
                         potential_acoustic,potential_dot_acoustic,potential_dot_dot_acoustic, &
                         ibool,free_surface_ijk,free_surface_ispec, &
                         num_free_surface_faces, &
@@ -953,10 +953,11 @@
                         chi1_dot_dot,chi2_t_dot_dot,&
                         chi3_dot_dot,chi4_dot_dot)
 
-  use constants,only: NGLLX,NGLLY,NGLLZ,NGLLSQUARE,CUSTOM_REAL,ABSORB_FREE_SURFACE
+  use constants,only: NGLLX,NGLLY,NGLLZ,NGLLSQUARE,CUSTOM_REAL
   implicit none
 
   integer :: NSPEC_AB,NGLOB_AB
+  logical :: ABSORB_INSTEAD_OF_FREE_SURFACE
 
   ! split-potentials
   integer :: num_PML_ispec
@@ -985,7 +986,7 @@
   integer :: iface,igll,i,j,k,ispec,iglob,ispecPML
 
   ! checks if free surface became an absorbing boundary
-  if( ABSORB_FREE_SURFACE ) return
+  if( ABSORB_INSTEAD_OF_FREE_SURFACE ) return
 
   ! enforce potentials to be zero at surface
   do iface = 1, num_free_surface_faces

Modified: seismo/3D/SPECFEM3D/trunk/src/specfem3D/initialize_simulation.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/specfem3D/initialize_simulation.f90	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/src/specfem3D/initialize_simulation.f90	2012-09-21 16:52:09 UTC (rev 20759)
@@ -49,7 +49,8 @@
                         NTSTEP_BETWEEN_READ_ADJSRC,NOISE_TOMOGRAPHY, &
                         USE_FORCE_POINT_SOURCE,FACTOR_FORCE_SOURCE, &
                         COMPONENT_DIR_VECT_SOURCE_E,COMPONENT_DIR_VECT_SOURCE_N, &
-                        COMPONENT_DIR_VECT_SOURCE_Z_UP,IMODEL)
+                        COMPONENT_DIR_VECT_SOURCE_Z_UP,ABSORB_INSTEAD_OF_FREE_SURFACE, &
+                        IMODEL)
 
   ! GPU_MODE is in par_file
   call read_gpu_mode(GPU_MODE,GRAVITY)
@@ -264,6 +265,9 @@
     ! just to be sure for now..
     if( NGLLX /= NGLLY .and. NGLLY /= NGLLZ ) &
       stop 'ABSORBING_CONDITIONS must have NGLLX = NGLLY = NGLLZ'
+  else
+    if(ABSORB_INSTEAD_OF_FREE_SURFACE) &
+      stop 'ABSORBING_CONDITIONS must be activated when ABSORB_INSTEAD_OF_FREE_SURFACE is true'
   endif
 
   ! inclined force source

Modified: seismo/3D/SPECFEM3D/trunk/src/specfem3D/specfem3D_par.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/specfem3D/specfem3D_par.f90	2012-09-21 14:26:55 UTC (rev 20758)
+++ seismo/3D/SPECFEM3D/trunk/src/specfem3D/specfem3D_par.f90	2012-09-21 16:52:09 UTC (rev 20759)
@@ -169,7 +169,8 @@
   double precision :: DT
 
   logical :: ATTENUATION,USE_OLSEN_ATTENUATION, &
-            OCEANS,TOPOGRAPHY,ABSORBING_CONDITIONS,ANISOTROPY
+            OCEANS,TOPOGRAPHY,ABSORBING_CONDITIONS,ANISOTROPY, &
+            ABSORB_INSTEAD_OF_FREE_SURFACE
   logical :: GRAVITY
 
   logical :: SAVE_FORWARD,SAVE_MESH_FILES,PRINT_SOURCE_TIME_FUNCTION



More information about the CIG-COMMITS mailing list