[cig-commits] r20791 - 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/generate_databases src/meshfem3D src/shared src/specfem3D
joseph.charles at geodynamics.org
joseph.charles at geodynamics.org
Fri Sep 28 10:42:59 PDT 2012
Author: joseph.charles
Date: 2012-09-28 10:42:59 -0700 (Fri, 28 Sep 2012)
New Revision: 20791
Added:
seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ACOUSTIC/in_data_files/FORCESOLUTION
seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ELASTIC/in_data_files/FORCESOLUTION
seismo/3D/SPECFEM3D/trunk/examples/Mount_StHelens/in_data_files/FORCESOLUTION
seismo/3D/SPECFEM3D/trunk/examples/homogeneous_halfspace/in_data_files/FORCESOLUTION
seismo/3D/SPECFEM3D/trunk/examples/homogeneous_poroelastic/in_data_files/FORCESOLUTION
seismo/3D/SPECFEM3D/trunk/examples/layered_halfspace/in_data_files/FORCESOLUTION
seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/many_interfaces/FORCESOLUTION
seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/simple_model/in_data_files/FORCESOLUTION
seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/in_data_files/FORCESOLUTION
seismo/3D/SPECFEM3D/trunk/examples/tomographic_model/in_data_files/FORCESOLUTION
seismo/3D/SPECFEM3D/trunk/examples/waterlayered_halfspace/in_data_files/FORCESOLUTION
seismo/3D/SPECFEM3D/trunk/in_data_files/FORCESOLUTION
seismo/3D/SPECFEM3D/trunk/src/shared/get_force.f90
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/generate_databases/Makefile.in
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/meshfem3D/Makefile.in
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/get_cmt.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/Makefile.in
seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_add_sources_acoustic.f90
seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_add_sources_elastic.f90
seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_add_sources_poroelastic.f90
seismo/3D/SPECFEM3D/trunk/src/specfem3D/finalize_simulation.f90
seismo/3D/SPECFEM3D/trunk/src/specfem3D/initialize_simulation.f90
seismo/3D/SPECFEM3D/trunk/src/specfem3D/locate_source.f90
seismo/3D/SPECFEM3D/trunk/src/specfem3D/setup_sources_receivers.f90
seismo/3D/SPECFEM3D/trunk/src/specfem3D/specfem3D_par.f90
Log:
adds a set of FORCESOLUTION files to set force source parameters, used instead of CMTSOLUTION files if "USE_FORCE_POINT_SOURCE = .true".
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-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/doc/USER_MANUAL/manual_SPECFEM3D.tex 2012-09-28 17:42:59 UTC (rev 20791)
@@ -1056,14 +1056,14 @@
than requested) seismograms in this directory. On a fast machine set
\texttt{NTSTEP\_BETWEEN\_OUTPUT\_SEISMOS} to a relatively high value
to avoid writing to the seismograms too often. This feature is only relevant for the solver.
-\item [{\texttt{USE\_FORCE\_POINT\_SOURCE}}] Turn this flag on to use a force source
+\item [{\texttt{USE\_FORCE\_POINT\_SOURCE}}] Turn this flag on to use a \texttt{FORCESOLUTION} force source
instead of a \texttt{CMTSOLUTION} moment-tensor source. This can be useful e.g. for oil industry
foothills simulations in which the source is a vertical force, normal force,
tilted force, or an impact etc. You will need to give the East, North and vertical components of an
arbitrary (non-unitary) direction vector of the force vector; thus refer to Appendix~\ref{cha:Coordinates}
for the orientation of the reference frame.
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 \texttt{FACTOR\_FORCE\_SOURCE} times the source time function.
+its norm is ignored and the norm of the force used is the factor force source times the source time function.
\item [{\texttt{FACTOR\_FORCE\_SOURCE}}] This parameter specifies the magnitude of the force source.
\item [{\texttt{COMPONENT\_DIR\_VECT\_SOURCE\_E}}] This parameter specifies the East component of
an arbitrary (non-unitary) direction vector of the force source.
@@ -1112,7 +1112,7 @@
\begin{description}
\item [{\texttt{Par\_file}}] the main parameter file which was discussed in detail in the previous
Chapter~\ref{cha:Creating-Distributed-Databases},
-\item [{\texttt{CMTSOLUTION}}] the earthquake source parameter file, and
+\item [{\texttt{CMTSOLUTION}} or {\texttt{FORCESOLUTION}}] the earthquake source parameter file or the force source parameter file or, and
\item [{\texttt{STATIONS}}] the stations file.
\end{description}
@@ -1247,6 +1247,23 @@
and convolve afterwards, since the half duration is generally fixed
by the finite fault model.
+\vspace{1cm}
+
+\noindent The \texttt{FORCESOLUTION} should be edited in the following way:
+
+\begin{itemize}
+\item Set the \texttt{time shift} parameter equal to $0.0$ (the solver
+will not run otherwise.) The time shift parameter would simply apply
+an overall time shift to the synthetics, something that can be done
+in the post-processing (see Section \ref{sec:Process-data-and-syn}).
+\item Set the latitude, longitude, depth of the source in geographical
+ coordinates.
+\item Set the magnitude of the force source.
+\item Set the components of a (non-unitary) direction vector for the
+ force source in the East/North/Vertical basis (see Appendix A for
+ the orientation of the reference frame).
+\end{itemize}
+
{\small }%
\begin{figure}[H]
\noindent \begin{centering}
@@ -1339,16 +1356,17 @@
at which the timestamp files are written based upon the parameter
\texttt{NTSTEP\_BETWEEN\_OUTPUT\_INFO} in the \texttt{Par\_file}.
-Having set the \texttt{Par\_file} parameters, and having provided
-the \texttt{CMTSOLUTION} and \texttt{STATIONS} files, you are now
-ready to launch the solver! This is most easily accomplished based
-upon the \texttt{go\_solver} script (See Chapter \ref{cha:Scheduler}
-for information about running through a scheduler, e.g., LSF). You
-may need to edit the last command at the end of the script that invokes
-the \texttt{mpirun} command. The \texttt{runall} script compiles and
-runs both \texttt{xgenerate\_databases} and \texttt{xspecfem3D} in sequence. This is a safe approach that
-ensures using the correct combination of distributed database output and solver
-input.
+Having set the \texttt{Par\_file} parameters, and having provided the
+\texttt{CMTSOLUTION} (or the \texttt{FORCESOLUTION}) and
+\texttt{STATIONS} files, you are now ready to launch the solver! This
+is most easily accomplished based upon the \texttt{go\_solver} script
+(See Chapter \ref{cha:Scheduler} for information about running through
+a scheduler, e.g., LSF). You may need to edit the last command at the
+end of the script that invokes the \texttt{mpirun} command. The
+\texttt{runall} script compiles and runs both
+\texttt{xgenerate\_databases} and \texttt{xspecfem3D} in
+sequence. This is a safe approach that ensures using the correct
+combination of distributed database output and solver input.
It is important to realize that the CPU and memory requirements of
the solver are closely tied to choices about attenuation (\texttt{ATTENUATION})
@@ -1357,11 +1375,12 @@
with various flags turned on or off to develop a sense for what is
involved.
-For the same model, one can rerun the solver for different events
-by simply changing the \texttt{CMTSOLUTION} file, or for different
-stations by changing the \texttt{STATIONS} file. There is no need
-to rerun the \texttt{xgenerate\_databases} executable. Of course it is best to include as many stations
-as possible, since this does not add to the cost of the simulation.
+For the same model, one can rerun the solver for different events by
+simply changing the \texttt{CMTSOLUTION} or \texttt{FORCESOLUTION}
+file, or for different stations by changing the \texttt{STATIONS}
+file. There is no need to rerun the \texttt{xgenerate\_databases}
+executable. Of course it is best to include as many stations as
+possible, since this does not add to the cost of the simulation.
\chapter{\label{cha:Adjoint-Simulations}Adjoint Simulations}
@@ -2808,11 +2827,13 @@
\subsection*{Source and receiver locations}
The SPECFEM3D software code internally uses Cartesian coordinates.
-The given locations for sources and receiver locations thus may get converted.
-Sources and receiver locations are read in from the
-\texttt{CMTSOLUTION} and \texttt{STATIONS} file.
-Note that e.g. the \texttt{CMTSOLUTION} file denotes the location by "longitude/latitude/depth". We read in
-longitude as $x$ coordinate, latitude as $y$ coordinate.
+The given locations for sources and receiver locations thus may get
+converted. Sources and receiver locations are read in from the
+\texttt{CMTSOLUTION} (or \texttt{FORCESOLUTION}) and \texttt{STATIONS}
+files. Note that e.g. the \texttt{CMTSOLUTION} and
+\texttt{FORCESOLUTION} files denotes the location by
+"longitude/latitude/depth". We read in longitude as $x$ coordinate,
+latitude as $y$ coordinate.
In case the flag \texttt{SUPPRESS\_UTM\_PROJECTION} is set to \texttt{.false.}
@@ -2821,10 +2842,14 @@
using a UTM conversion with the specified UTM zone.
-The value for depth (given in $km$ in \texttt{CMTSOLUTION}) or burial depth (given in $m$ in \texttt{STATIONS})
-is evaluated with respect to the surface of the mesh at the specified $x$/$y$ location to find the corresponding $z$ coordinate.
-It is possible to use this depth value directly as $z$ coordinate by
-changing the flag \texttt{USE\_SOURCES\_RECVS\_Z} to \texttt{.true.} in the file \texttt{constants.h} located in the \texttt{src/shared/} subdirectory.
+The value for depth (given in $km$ in \texttt{CMTSOLUTION} and
+\texttt{FORCESOLUTION}) or burial depth (given in $m$ in
+\texttt{STATIONS}) is evaluated with respect to the surface of the
+mesh at the specified $x$/$y$ location to find the corresponding $z$
+coordinate. It is possible to use this depth value directly as $z$
+coordinate by changing the flag \texttt{USE\_SOURCES\_RECVS\_Z} to
+\texttt{.true.} in the file \texttt{constants.h} located in the
+\texttt{src/shared/} subdirectory.
\subsection*{Seismogram outputs}
Added: seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ACOUSTIC/in_data_files/FORCESOLUTION
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ACOUSTIC/in_data_files/FORCESOLUTION (rev 0)
+++ seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ACOUSTIC/in_data_files/FORCESOLUTION 2012-09-28 17:42:59 UTC (rev 20791)
@@ -0,0 +1,9 @@
+FORCE 001
+time shift: 0.0000
+latitude: 1320.0
+longitude: 1320.0
+depth: 1.0
+factor force source: 1.d15
+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/ACOUSTIC/in_data_files/Par_file
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ACOUSTIC/in_data_files/Par_file 2012-09-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ACOUSTIC/in_data_files/Par_file 2012-09-28 17:42:59 UTC (rev 20791)
@@ -64,17 +64,17 @@
# interval in time steps for reading adjoint traces
NTSTEP_BETWEEN_READ_ADJSRC = 0 # 0 = read the whole adjoint sources at the same time
-# use a force source located exactly at a grid point instead of a CMTSOLUTION source
-# this can be useful e.g. for oil industry foothills simulations or asteroid simulations
+# use a force source (or several) located exactly at a grid point instead of a CMTSOLUTION source.
+# This can be useful e.g. for oil industry foothills simulations or asteroid simulations
# 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 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
+# If this flag is turned on, the FORCESOLUTION file must be edited by precising:
+# - the related time-shift parameter,
+# - the coordinates of the source,
+# - the magnitude of the force source,
+# - the components of a (non-unitary) direction vector for the force source in the E/N/Z_UP basis.
+# The direction 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 the factor force source times the source time function.
# print source time function
PRINT_SOURCE_TIME_FUNCTION = .true.
Added: seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ELASTIC/in_data_files/FORCESOLUTION
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ELASTIC/in_data_files/FORCESOLUTION (rev 0)
+++ seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ELASTIC/in_data_files/FORCESOLUTION 2012-09-28 17:42:59 UTC (rev 20791)
@@ -0,0 +1,9 @@
+FORCE 001
+time shift: 0.0000
+latitude: 1320.0
+longitude: 1320.0
+depth: 1.0
+factor force source: 1.d15
+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-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/examples/BENCHMARK_CLAERBOUT_ADJOINT/ELASTIC/in_data_files/Par_file 2012-09-28 17:42:59 UTC (rev 20791)
@@ -64,17 +64,17 @@
# interval in time steps for reading adjoint traces
NTSTEP_BETWEEN_READ_ADJSRC = 0 # 0 = read the whole adjoint sources at the same time
-# use a force source located exactly at a grid point instead of a CMTSOLUTION source
-# this can be useful e.g. for oil industry foothills simulations or asteroid simulations
+# use a force source (or several) located exactly at a grid point instead of a CMTSOLUTION source.
+# This can be useful e.g. for oil industry foothills simulations or asteroid simulations
# 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 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
+# If this flag is turned on, the FORCESOLUTION file must be edited by precising:
+# - the related time-shift parameter,
+# - the coordinates of the source,
+# - the magnitude of the force source,
+# - the components of a (non-unitary) direction vector for the force source in the E/N/Z_UP basis.
+# The direction 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 the factor force source times the source time function.
# print source time function
PRINT_SOURCE_TIME_FUNCTION = .true.
Added: seismo/3D/SPECFEM3D/trunk/examples/Mount_StHelens/in_data_files/FORCESOLUTION
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/Mount_StHelens/in_data_files/FORCESOLUTION (rev 0)
+++ seismo/3D/SPECFEM3D/trunk/examples/Mount_StHelens/in_data_files/FORCESOLUTION 2012-09-28 17:42:59 UTC (rev 20791)
@@ -0,0 +1,9 @@
+FORCE 001
+time shift: 0.0000
+latitude: 46.197
+longitude: -122.186
+depth: 5.0
+factor force source: 1.d15
+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-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/examples/Mount_StHelens/in_data_files/Par_file 2012-09-28 17:42:59 UTC (rev 20791)
@@ -64,17 +64,17 @@
# interval in time steps for reading adjoint traces
NTSTEP_BETWEEN_READ_ADJSRC = 0 # 0 = read the whole adjoint sources at the same time
-# use a force source located exactly at a grid point instead of a CMTSOLUTION source
-# this can be useful e.g. for oil industry foothills simulations or asteroid simulations
+# use a force source (or several) located exactly at a grid point instead of a CMTSOLUTION source.
+# This can be useful e.g. for oil industry foothills simulations or asteroid simulations
# 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 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
+# If this flag is turned on, the FORCESOLUTION file must be edited by precising:
+# - the related time-shift parameter,
+# - the coordinates of the source,
+# - the magnitude of the force source,
+# - the components of a (non-unitary) direction vector for the force source in the E/N/Z_UP basis.
+# The direction 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 the factor force source times the source time function.
# print source time function
PRINT_SOURCE_TIME_FUNCTION = .false.
Added: seismo/3D/SPECFEM3D/trunk/examples/homogeneous_halfspace/in_data_files/FORCESOLUTION
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/homogeneous_halfspace/in_data_files/FORCESOLUTION (rev 0)
+++ seismo/3D/SPECFEM3D/trunk/examples/homogeneous_halfspace/in_data_files/FORCESOLUTION 2012-09-28 17:42:59 UTC (rev 20791)
@@ -0,0 +1,9 @@
+FORCE 001
+time shift: 0.0000
+latitude: 67000.0
+longitude: 67000.0
+depth: 25.0
+factor force source: 1.d15
+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-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/examples/homogeneous_halfspace/in_data_files/Par_file 2012-09-28 17:42:59 UTC (rev 20791)
@@ -66,17 +66,17 @@
# 0 = read the whole adjoint sources at the same time
NTSTEP_BETWEEN_READ_ADJSRC = 0
-# use a force source located exactly at a grid point instead of a CMTSOLUTION source
-# this can be useful e.g. for oil industry foothills simulations or asteroid simulations
+# use a force source (or several) located exactly at a grid point instead of a CMTSOLUTION source.
+# This can be useful e.g. for oil industry foothills simulations or asteroid simulations
# 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 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
+# If this flag is turned on, the FORCESOLUTION file must be edited by precising:
+# - the related time-shift parameter,
+# - the coordinates of the source,
+# - the magnitude of the force source,
+# - the components of a (non-unitary) direction vector for the force source in the E/N/Z_UP basis.
+# The direction 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 the factor force source times the source time function.
# print source time function
PRINT_SOURCE_TIME_FUNCTION = .false.
Added: seismo/3D/SPECFEM3D/trunk/examples/homogeneous_poroelastic/in_data_files/FORCESOLUTION
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/homogeneous_poroelastic/in_data_files/FORCESOLUTION (rev 0)
+++ seismo/3D/SPECFEM3D/trunk/examples/homogeneous_poroelastic/in_data_files/FORCESOLUTION 2012-09-28 17:42:59 UTC (rev 20791)
@@ -0,0 +1,9 @@
+FORCE 001
+time shift: 0.0000
+latitude: 100.0
+longitude: 150.0
+depth: 0.150
+factor force source: 1.d15
+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-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/examples/homogeneous_poroelastic/in_data_files/Par_file 2012-09-28 17:42:59 UTC (rev 20791)
@@ -66,17 +66,17 @@
# # 0 = read the whole adjoint sources at the same time
NTSTEP_BETWEEN_READ_ADJSRC = 0
-# use a force source located exactly at a grid point instead of a CMTSOLUTION source
-# this can be useful e.g. for oil industry foothills simulations or asteroid simulations
+# use a force source (or several) located exactly at a grid point instead of a CMTSOLUTION source.
+# This can be useful e.g. for oil industry foothills simulations or asteroid simulations
# 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 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
+# If this flag is turned on, the FORCESOLUTION file must be edited by precising:
+# - the related time-shift parameter,
+# - the coordinates of the source,
+# - the magnitude of the force source,
+# - the components of a (non-unitary) direction vector for the force source in the E/N/Z_UP basis.
+# The direction 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 the factor force source times the source time function.
# print source time function
PRINT_SOURCE_TIME_FUNCTION = .true.
Added: seismo/3D/SPECFEM3D/trunk/examples/layered_halfspace/in_data_files/FORCESOLUTION
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/layered_halfspace/in_data_files/FORCESOLUTION (rev 0)
+++ seismo/3D/SPECFEM3D/trunk/examples/layered_halfspace/in_data_files/FORCESOLUTION 2012-09-28 17:42:59 UTC (rev 20791)
@@ -0,0 +1,9 @@
+FORCE 001
+time shift: 0.0000
+latitude: 67000.0
+longitude: 67000.0
+depth: 25.05
+factor force source: 1.d15
+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-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/examples/layered_halfspace/in_data_files/Par_file 2012-09-28 17:42:59 UTC (rev 20791)
@@ -65,17 +65,17 @@
# interval in time steps for reading adjoint traces
NTSTEP_BETWEEN_READ_ADJSRC = 0 # 0 = read the whole adjoint sources at the same time
-# use a force source located exactly at a grid point instead of a CMTSOLUTION source
-# this can be useful e.g. for oil industry foothills simulations or asteroid simulations
+# use a force source (or several) located exactly at a grid point instead of a CMTSOLUTION source.
+# This can be useful e.g. for oil industry foothills simulations or asteroid simulations
# 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 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
+# If this flag is turned on, the FORCESOLUTION file must be edited by precising:
+# - the related time-shift parameter,
+# - the coordinates of the source,
+# - the magnitude of the force source,
+# - the components of a (non-unitary) direction vector for the force source in the E/N/Z_UP basis.
+# The direction 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 the factor force source times the source time function.
# print source time function
PRINT_SOURCE_TIME_FUNCTION = .false.
Added: seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/many_interfaces/FORCESOLUTION
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/many_interfaces/FORCESOLUTION (rev 0)
+++ seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/many_interfaces/FORCESOLUTION 2012-09-28 17:42:59 UTC (rev 20791)
@@ -0,0 +1,9 @@
+FORCE 001
+time shift: 0.0000
+latitude: 15150.0
+longitude: 14925.0
+depth: 10.0
+factor force source: 1.d15
+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-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/many_interfaces/Par_file 2012-09-28 17:42:59 UTC (rev 20791)
@@ -65,17 +65,17 @@
# interval in time steps for reading adjoint traces
NTSTEP_BETWEEN_READ_ADJSRC = 0 # 0 = read the whole adjoint sources at the same time
-# use a force source located exactly at a grid point instead of a CMTSOLUTION source
-# this can be useful e.g. for oil industry foothills simulations or asteroid simulations
+# use a force source (or several) located exactly at a grid point instead of a CMTSOLUTION source.
+# This can be useful e.g. for oil industry foothills simulations or asteroid simulations
# 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 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
+# If this flag is turned on, the FORCESOLUTION file must be edited by precising:
+# - the related time-shift parameter,
+# - the coordinates of the source,
+# - the magnitude of the force source,
+# - the components of a (non-unitary) direction vector for the force source in the E/N/Z_UP basis.
+# The direction 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 the factor force source times the source time function.
# print source time function
PRINT_SOURCE_TIME_FUNCTION = .false.
Added: seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/simple_model/in_data_files/FORCESOLUTION
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/simple_model/in_data_files/FORCESOLUTION (rev 0)
+++ seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/simple_model/in_data_files/FORCESOLUTION 2012-09-28 17:42:59 UTC (rev 20791)
@@ -0,0 +1,9 @@
+FORCE 001
+time shift: 0.0000
+latitude: 33.6
+longitude: -118.4
+depth: 10.0
+factor force source: 1.d15
+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-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/simple_model/in_data_files/Par_file 2012-09-28 17:42:59 UTC (rev 20791)
@@ -65,17 +65,17 @@
# interval in time steps for reading adjoint traces
NTSTEP_BETWEEN_READ_ADJSRC = 0 # 0 = read the whole adjoint sources at the same time
-# use a force source located exactly at a grid point instead of a CMTSOLUTION source
-# this can be useful e.g. for oil industry foothills simulations or asteroid simulations
+# use a force source (or several) located exactly at a grid point instead of a CMTSOLUTION source.
+# This can be useful e.g. for oil industry foothills simulations or asteroid simulations
# 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 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
+# If this flag is turned on, the FORCESOLUTION file must be edited by precising:
+# - the related time-shift parameter,
+# - the coordinates of the source,
+# - the magnitude of the force source,
+# - the components of a (non-unitary) direction vector for the force source in the E/N/Z_UP basis.
+# The direction 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 the factor force source times the source time function.
# print source time function
PRINT_SOURCE_TIME_FUNCTION = .false.
Added: seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/in_data_files/FORCESOLUTION
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/in_data_files/FORCESOLUTION (rev 0)
+++ seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/in_data_files/FORCESOLUTION 2012-09-28 17:42:59 UTC (rev 20791)
@@ -0,0 +1,9 @@
+FORCE 001
+time shift: 0.0000
+latitude: 34.0745
+longitude: -118.3792
+depth: 5.4000
+factor force source: 1.d15
+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-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/examples/meshfem3D_examples/socal1D/in_data_files/Par_file 2012-09-28 17:42:59 UTC (rev 20791)
@@ -65,17 +65,17 @@
# interval in time steps for reading adjoint traces
NTSTEP_BETWEEN_READ_ADJSRC = 0 # 0 = read the whole adjoint sources at the same time
-# use a force source located exactly at a grid point instead of a CMTSOLUTION source
-# this can be useful e.g. for oil industry foothills simulations or asteroid simulations
+# use a force source (or several) located exactly at a grid point instead of a CMTSOLUTION source.
+# This can be useful e.g. for oil industry foothills simulations or asteroid simulations
# 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 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
+# If this flag is turned on, the FORCESOLUTION file must be edited by precising:
+# - the related time-shift parameter,
+# - the coordinates of the source,
+# - the magnitude of the force source,
+# - the components of a (non-unitary) direction vector for the force source in the E/N/Z_UP basis.
+# The direction 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 the factor force source times the source time function.
# print source time function
PRINT_SOURCE_TIME_FUNCTION = .true.
Added: seismo/3D/SPECFEM3D/trunk/examples/tomographic_model/in_data_files/FORCESOLUTION
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/tomographic_model/in_data_files/FORCESOLUTION (rev 0)
+++ seismo/3D/SPECFEM3D/trunk/examples/tomographic_model/in_data_files/FORCESOLUTION 2012-09-28 17:42:59 UTC (rev 20791)
@@ -0,0 +1,9 @@
+FORCE 001
+time shift: 0.0000
+latitude: 67000.0
+longitude: 67000.0
+depth: 25.0
+factor force source: 1.d15
+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-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/examples/tomographic_model/in_data_files/Par_file 2012-09-28 17:42:59 UTC (rev 20791)
@@ -65,17 +65,17 @@
# interval in time steps for reading adjoint traces
NTSTEP_BETWEEN_READ_ADJSRC = 0 # 0 = read the whole adjoint sources at the same time
-# use a force source located exactly at a grid point instead of a CMTSOLUTION source
-# this can be useful e.g. for oil industry foothills simulations or asteroid simulations
+# use a force source (or several) located exactly at a grid point instead of a CMTSOLUTION source.
+# This can be useful e.g. for oil industry foothills simulations or asteroid simulations
# 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 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
+# If this flag is turned on, the FORCESOLUTION file must be edited by precising:
+# - the related time-shift parameter,
+# - the coordinates of the source,
+# - the magnitude of the force source,
+# - the components of a (non-unitary) direction vector for the force source in the E/N/Z_UP basis.
+# The direction 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 the factor force source times the source time function.
# print source time function
PRINT_SOURCE_TIME_FUNCTION = .false.
Added: seismo/3D/SPECFEM3D/trunk/examples/waterlayered_halfspace/in_data_files/FORCESOLUTION
===================================================================
--- seismo/3D/SPECFEM3D/trunk/examples/waterlayered_halfspace/in_data_files/FORCESOLUTION (rev 0)
+++ seismo/3D/SPECFEM3D/trunk/examples/waterlayered_halfspace/in_data_files/FORCESOLUTION 2012-09-28 17:42:59 UTC (rev 20791)
@@ -0,0 +1,9 @@
+FORCE 001
+time shift: 0.0000
+latitude: 67000.0
+longitude: 66999.9
+depth: 1.0
+factor force source: 1.d15
+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-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/examples/waterlayered_halfspace/in_data_files/Par_file 2012-09-28 17:42:59 UTC (rev 20791)
@@ -65,17 +65,17 @@
# interval in time steps for reading adjoint traces
NTSTEP_BETWEEN_READ_ADJSRC = 0 # 0 = read the whole adjoint sources at the same time
-# use a force source located exactly at a grid point instead of a CMTSOLUTION source
-# this can be useful e.g. for oil industry foothills simulations or asteroid simulations
+# use a force source (or several) located exactly at a grid point instead of a CMTSOLUTION source.
+# This can be useful e.g. for oil industry foothills simulations or asteroid simulations
# 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 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
+# If this flag is turned on, the FORCESOLUTION file must be edited by precising:
+# - the related time-shift parameter,
+# - the coordinates of the source,
+# - the magnitude of the force source,
+# - the components of a (non-unitary) direction vector for the force source in the E/N/Z_UP basis.
+# The direction 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 the factor force source times the source time function.
# print source time function
PRINT_SOURCE_TIME_FUNCTION = .false.
Added: seismo/3D/SPECFEM3D/trunk/in_data_files/FORCESOLUTION
===================================================================
--- seismo/3D/SPECFEM3D/trunk/in_data_files/FORCESOLUTION (rev 0)
+++ seismo/3D/SPECFEM3D/trunk/in_data_files/FORCESOLUTION 2012-09-28 17:42:59 UTC (rev 20791)
@@ -0,0 +1,9 @@
+FORCE 001
+time shift: 0.0000
+latitude: 67000.0
+longitude: 67000.0
+depth: 25.0
+factor force source: 1.d15
+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-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/in_data_files/Par_file 2012-09-28 17:42:59 UTC (rev 20791)
@@ -66,17 +66,17 @@
# 0 = read the whole adjoint sources at the same time
NTSTEP_BETWEEN_READ_ADJSRC = 0
-# use a force source located exactly at a grid point instead of a CMTSOLUTION source
-# this can be useful e.g. for oil industry foothills simulations or asteroid simulations
+# use a force source (or several) located exactly at a grid point instead of a CMTSOLUTION source.
+# This can be useful e.g. for oil industry foothills simulations or asteroid simulations
# 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 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
+# If this flag is turned on, the FORCESOLUTION file must be edited by precising:
+# - the related time-shift parameter,
+# - the coordinates of the source,
+# - the magnitude of the force source,
+# - the components of a (non-unitary) direction vector for the force source in the E/N/Z_UP basis.
+# The direction 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 the factor force source times the source time function.
# print source time function
PRINT_SOURCE_TIME_FUNCTION = .false.
Modified: seismo/3D/SPECFEM3D/trunk/src/generate_databases/Makefile.in
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/generate_databases/Makefile.in 2012-09-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/src/generate_databases/Makefile.in 2012-09-28 17:42:59 UTC (rev 20791)
@@ -84,6 +84,7 @@
$O/get_cmt.shared.o \
$O/get_coupling_surfaces.o \
$O/get_element_face.shared.o \
+ $O/get_force.shared.o \
$O/get_global.o \
$O/get_jacobian_boundaries.shared.o \
$O/get_model.o \
Modified: seismo/3D/SPECFEM3D/trunk/src/generate_databases/generate_databases.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/generate_databases/generate_databases.f90 2012-09-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/src/generate_databases/generate_databases.f90 2012-09-28 17:42:59 UTC (rev 20791)
@@ -262,9 +262,7 @@
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,ABSORB_INSTEAD_OF_FREE_SURFACE, &
+ USE_FORCE_POINT_SOURCE,ABSORB_INSTEAD_OF_FREE_SURFACE, &
IMODEL)
! check that the code is running with the requested nb of processes
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-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/src/generate_databases/generate_databases_par.f90 2012-09-28 17:42:59 UTC (rev 20791)
@@ -58,9 +58,7 @@
integer :: NTSTEP_BETWEEN_OUTPUT_SEISMOS,NSTEP,SIMULATION_TYPE
integer :: NSOURCES
- double precision :: DT,HDUR_MOVIE,FACTOR_FORCE_SOURCE
- double precision :: COMPONENT_DIR_VECT_SOURCE_E,COMPONENT_DIR_VECT_SOURCE_N, &
- COMPONENT_DIR_VECT_SOURCE_Z_UP
+ double precision :: DT,HDUR_MOVIE
logical :: ATTENUATION,USE_OLSEN_ATTENUATION, &
OCEANS,TOPOGRAPHY,SAVE_FORWARD,USE_FORCE_POINT_SOURCE
Modified: seismo/3D/SPECFEM3D/trunk/src/meshfem3D/Makefile.in
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/meshfem3D/Makefile.in 2012-09-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/src/meshfem3D/Makefile.in 2012-09-28 17:42:59 UTC (rev 20791)
@@ -221,6 +221,9 @@
$O/get_cmt.o: ${SHARED}constants.h get_cmt.f90
${FCCOMPILE_CHECK} -c -o $O/get_cmt.o get_cmt.f90
+$O/get_force.o: ${SHARED}constants.h get_force.f90
+ ${FCCOMPILE_CHECK} -c -o $O/get_force.o get_force.f90
+
$O/get_global.o: ${SHARED}constants.h get_global.f90
${FCCOMPILE_CHECK} -c -o $O/get_global.o get_global.f90
Modified: seismo/3D/SPECFEM3D/trunk/src/shared/combine_vol_data.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/shared/combine_vol_data.f90 2012-09-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/src/shared/combine_vol_data.f90 2012-09-28 17:42:59 UTC (rev 20791)
@@ -89,9 +89,7 @@
! for read_parameter_files
double precision :: DT
- double precision :: HDUR_MOVIE,FACTOR_FORCE_SOURCE
- double precision :: COMPONENT_DIR_VECT_SOURCE_E,COMPONENT_DIR_VECT_SOURCE_N, &
- COMPONENT_DIR_VECT_SOURCE_Z_UP
+ double precision :: HDUR_MOVIE
integer :: NPROC,NTSTEP_BETWEEN_OUTPUT_SEISMOS,NSTEP, &
UTM_PROJECTION_ZONE,SIMULATION_TYPE
integer :: NSOURCES,NTSTEP_BETWEEN_READ_ADJSRC,NOISE_TOMOGRAPHY
@@ -184,9 +182,7 @@
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,ABSORB_INSTEAD_OF_FREE_SURFACE, &
+ USE_FORCE_POINT_SOURCE,ABSORB_INSTEAD_OF_FREE_SURFACE, &
IMODEL)
print *, 'Slice list: '
Modified: seismo/3D/SPECFEM3D/trunk/src/shared/constants.h.in
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/shared/constants.h.in 2012-09-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/src/shared/constants.h.in 2012-09-28 17:42:59 UTC (rev 20791)
@@ -341,6 +341,7 @@
! number of lines per source in CMTSOLUTION file
integer, parameter :: NLINES_PER_CMTSOLUTION_SOURCE = 13
+ integer, parameter :: NLINES_PER_FORCESOLUTION_SOURCE = 9
! number of iterations to solve the system for xi and eta
integer, parameter :: NUM_ITER = 4
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-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/src/shared/create_movie_shakemap_AVS_DX_GMT.f90 2012-09-28 17:42:59 UTC (rev 20791)
@@ -90,9 +90,7 @@
USE_HIGHRES_FOR_MOVIES,SUPPRESS_UTM_PROJECTION
integer NTSTEP_BETWEEN_FRAMES,NTSTEP_BETWEEN_OUTPUT_INFO
double precision DT
- double precision HDUR_MOVIE,FACTOR_FORCE_SOURCE
- double precision COMPONENT_DIR_VECT_SOURCE_E,COMPONENT_DIR_VECT_SOURCE_N, &
- COMPONENT_DIR_VECT_SOURCE_Z_UP
+ double precision HDUR_MOVIE
logical ATTENUATION,USE_OLSEN_ATTENUATION, &
OCEANS,TOPOGRAPHY,USE_FORCE_POINT_SOURCE
logical ABSORBING_CONDITIONS,SAVE_FORWARD,ABSORB_INSTEAD_OF_FREE_SURFACE
@@ -138,9 +136,7 @@
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,ABSORB_INSTEAD_OF_FREE_SURFACE, &
+ USE_FORCE_POINT_SOURCE,ABSORB_INSTEAD_OF_FREE_SURFACE, &
IMODEL)
! get the base pathname for output files
Modified: seismo/3D/SPECFEM3D/trunk/src/shared/get_cmt.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/shared/get_cmt.f90 2012-09-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/src/shared/get_cmt.f90 2012-09-28 17:42:59 UTC (rev 20791)
@@ -25,7 +25,7 @@
!=====================================================================
subroutine get_cmt(yr,jda,ho,mi,sec,tshift_cmt,hdur,lat,long,depth,moment_tensor,&
- DT,NSOURCES,min_tshift_cmt_original,USE_FORCE_POINT_SOURCE)
+ DT,NSOURCES,min_tshift_cmt_original)
implicit none
@@ -35,7 +35,6 @@
integer, intent(in) :: NSOURCES
double precision, intent(in) :: DT
- logical, intent(in) :: USE_FORCE_POINT_SOURCE
integer, intent(out) :: yr,jda,ho,mi
double precision, intent(out) :: sec,min_tshift_cmt_original
@@ -133,17 +132,9 @@
read(string(5:len_trim(string)),*) moment_tensor(6,isource)
! checks half-duration
- if( USE_FORCE_POINT_SOURCE ) then
- ! half-duration is the dominant frequency of the source
- ! point forces use a Ricker source time function
- ! null half-duration indicates a very low-frequency source
- ! (see constants.h: TINYVAL = 1.d-9 )
- if( hdur(isource) < TINYVAL ) hdur(isource) = TINYVAL
- else
- ! null half-duration indicates a Heaviside
- ! replace with very short error function
- if( hdur(isource) < 5. * DT ) hdur(isource) = 5. * DT
- endif
+ ! null half-duration indicates a Heaviside
+ ! replace with very short error function
+ if( hdur(isource) < 5. * DT ) hdur(isource) = 5. * DT
enddo
Added: seismo/3D/SPECFEM3D/trunk/src/shared/get_force.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/shared/get_force.f90 (rev 0)
+++ seismo/3D/SPECFEM3D/trunk/src/shared/get_force.f90 2012-09-28 17:42:59 UTC (rev 20791)
@@ -0,0 +1,142 @@
+!=====================================================================
+!
+! S p e c f e m 3 D V e r s i o n 2 . 1
+! ---------------------------------------
+!
+! Main authors: Dimitri Komatitsch and Jeroen Tromp
+! Princeton University, USA and CNRS / INRIA / University of Pau
+! (c) Princeton University / California Institute of Technology and CNRS / INRIA / University of Pau
+! July 2012
+!
+! This program is free software; you can redistribute it and/or modify
+! it under the terms of the GNU General Public License as published by
+! the Free Software Foundation; either version 2 of the License, or
+! (at your option) any later version.
+!
+! This program is distributed in the hope that it will be useful,
+! but WITHOUT ANY WARRANTY; without even the implied warranty of
+! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+! GNU General Public License for more details.
+!
+! You should have received a copy of the GNU General Public License along
+! with this program; if not, write to the Free Software Foundation, Inc.,
+! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+!
+!=====================================================================
+
+ subroutine get_force(tshift_force,hdur,lat,long,depth,NSOURCES,min_tshift_force_original,factor_force_source, &
+ comp_dir_vect_source_E,comp_dir_vect_source_N,comp_dir_vect_source_Z_UP)
+
+ implicit none
+
+ include "constants.h"
+
+!--- input or output arguments of the subroutine below
+
+ integer, intent(in) :: NSOURCES
+
+ double precision, intent(out) :: min_tshift_force_original
+ double precision, dimension(NSOURCES), intent(out) :: tshift_force,hdur,lat,long,depth,factor_force_source
+ double precision, dimension(NSOURCES), intent(out) :: comp_dir_vect_source_E
+ double precision, dimension(NSOURCES), intent(out) :: comp_dir_vect_source_N
+ double precision, dimension(NSOURCES), intent(out) :: comp_dir_vect_source_Z_UP
+
+!--- local variables below
+
+ integer isource,dummyval
+ double precision t_shift(NSOURCES)
+ character(len=7) dummy
+ character(len=256) string, FORCESOLUTION
+
+ ! initializes
+ lat(:) = 0.d0
+ long(:) = 0.d0
+ depth(:) = 0.d0
+ t_shift(:) = 0.d0
+ tshift_force(:) = 0.d0
+ hdur(:) = 0.d0
+ factor_force_source(:) = 0.d0
+ comp_dir_vect_source_E(:) = 0.d0
+ comp_dir_vect_source_N(:) = 0.d0
+ comp_dir_vect_source_Z_UP(:) = 0.d0
+!
+!---- read info
+!
+ call get_value_string(FORCESOLUTION, 'solver.FORCESOLUTION', &
+ IN_DATA_FILES_PATH(1:len_trim(IN_DATA_FILES_PATH))//'FORCESOLUTION')
+
+ open(unit=1,file=trim(FORCESOLUTION),status='old',action='read')
+
+! read source number isource
+ do isource=1,NSOURCES
+
+ read(1,"(a256)") string
+ ! skips empty lines
+ do while( len_trim(string) == 0 )
+ read(1,"(a256)") string
+ enddo
+
+ ! read header with event information
+ read(string,"(a6,i4)") dummy,dummyval
+
+ ! read time shift
+ read(1,"(a)") string
+ read(string(12:len_trim(string)),*) t_shift(isource)
+
+ ! read latitude
+ read(1,"(a)") string
+ read(string(10:len_trim(string)),*) lat(isource)
+
+ ! read longitude
+ read(1,"(a)") string
+ read(string(11:len_trim(string)),*) long(isource)
+
+ ! read depth
+ read(1,"(a)") string
+ read(string(7:len_trim(string)),*) depth(isource)
+
+ ! read magnitude
+ read(1,"(a)") string
+ read(string(21:len_trim(string)),*) factor_force_source(isource)
+
+ ! read direction vector's East component
+ read(1,"(a)") string
+ read(string(29:len_trim(string)),*) comp_dir_vect_source_E(isource)
+
+ ! read direction vector's North component
+ read(1,"(a)") string
+ read(string(29:len_trim(string)),*) comp_dir_vect_source_N(isource)
+
+ ! read direction vector's vertical component
+ read(1,"(a)") string
+ read(string(32:len_trim(string)),*) comp_dir_vect_source_Z_UP(isource)
+
+ enddo
+
+ close(1)
+
+ ! Sets tshift_force to zero to initiate the simulation!
+ if(NSOURCES == 1)then
+ tshift_force = 0.d0
+ min_tshift_force_original = t_shift(1)
+ else
+ tshift_force(1:NSOURCES) = t_shift(1:NSOURCES)-minval(t_shift)
+ min_tshift_force_original = minval(t_shift)
+ endif
+
+ do isource=1,NSOURCES
+
+ ! checks half-duration
+ ! half-duration is the dominant frequency of the source
+ ! point forces use a Ricker source time function
+ ! null half-duration indicates a very low-frequency source
+ ! (see constants.h: TINYVAL = 1.d-9 )
+ if( hdur(isource) < TINYVAL ) hdur(isource) = TINYVAL
+
+ ! check (inclined) force source's direction vector
+ if( comp_dir_vect_source_E(isource) .eq. 0.d0 .and. comp_dir_vect_source_N(isource) .eq. 0.d0 &
+ .and. comp_dir_vect_source_Z_UP(isource) .eq. 0.d0 ) &
+ stop 'When using USE_FORCE_POINT_SOURCE make sure all forces have a non null direction vector'
+ enddo
+
+ end subroutine get_force
Modified: seismo/3D/SPECFEM3D/trunk/src/shared/read_parameter_file.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/shared/read_parameter_file.f90 2012-09-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/src/shared/read_parameter_file.f90 2012-09-28 17:42:59 UTC (rev 20791)
@@ -32,9 +32,7 @@
NTSTEP_BETWEEN_FRAMES,USE_HIGHRES_FOR_MOVIES,HDUR_MOVIE, &
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, &
- ABSORB_INSTEAD_OF_FREE_SURFACE,IMODEL)
+ USE_FORCE_POINT_SOURCE,ABSORB_INSTEAD_OF_FREE_SURFACE,IMODEL)
implicit none
@@ -45,16 +43,14 @@
integer NOISE_TOMOGRAPHY
integer IMODEL
- double precision DT,HDUR_MOVIE,FACTOR_FORCE_SOURCE
- double precision COMPONENT_DIR_VECT_SOURCE_E,COMPONENT_DIR_VECT_SOURCE_N
- double precision COMPONENT_DIR_VECT_SOURCE_Z_UP
+ double precision DT,HDUR_MOVIE
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,ABSORB_INSTEAD_OF_FREE_SURFACE
- character(len=256) LOCAL_PATH,CMTSOLUTION
+ character(len=256) LOCAL_PATH,CMTSOLUTION,FORCESOLUTION
! local variables
integer ::ios,icounter,isource,idummy,nproc_eta_old,nproc_xi_old
@@ -147,14 +143,6 @@
if(err_occurred() /= 0) return
call read_value_logical(USE_FORCE_POINT_SOURCE, 'solver.USE_FORCE_POINT_SOURCE')
if(err_occurred() /= 0) return
- call read_value_double_precision(FACTOR_FORCE_SOURCE, 'solver.FACTOR_FORCE_SOURCE')
- if(err_occurred() /= 0) return
- call read_value_double_precision(COMPONENT_DIR_VECT_SOURCE_E, 'solver.COMPONENT_DIR_VECT_SOURCE_E')
- if(err_occurred() /= 0) return
- call read_value_double_precision(COMPONENT_DIR_VECT_SOURCE_N, 'solver.COMPONENT_DIR_VECT_SOURCE_N')
- if(err_occurred() /= 0) return
- call read_value_double_precision(COMPONENT_DIR_VECT_SOURCE_Z_UP, 'solver.COMPONENT_DIR_VECT_SOURCE_Z_UP')
- if(err_occurred() /= 0) return
call read_value_logical(PRINT_SOURCE_TIME_FUNCTION, 'solver.PRINT_SOURCE_TIME_FUNCTION')
if(err_occurred() /= 0) return
@@ -190,54 +178,78 @@
endif
endif
- ! compute the total number of sources in the CMTSOLUTION file
- ! there are NLINES_PER_CMTSOLUTION_SOURCE lines per source in that file
- call get_value_string(CMTSOLUTION, 'solver.CMTSOLUTION',&
- IN_DATA_FILES_PATH(1:len_trim(IN_DATA_FILES_PATH))//'CMTSOLUTION')
+ if (USE_FORCE_POINT_SOURCE) then
+ ! compute the total number of sources in the FORCESOLUTION file
+ ! there are NLINES_PER_FORCESOLUTION_SOURCE lines per source in that file
+ call get_value_string(FORCESOLUTION, 'solver.FORCESOLUTION',&
+ IN_DATA_FILES_PATH(1:len_trim(IN_DATA_FILES_PATH))//'FORCESOLUTION')
- open(unit=21,file=trim(CMTSOLUTION),iostat=ios,status='old',action='read')
- if(ios /= 0) stop 'error opening CMTSOLUTION file'
+ open(unit=21,file=trim(FORCESOLUTION),iostat=ios,status='old',action='read')
+ if(ios /= 0) stop 'error opening FORCESOLUTION file'
- icounter = 0
- do while(ios == 0)
- read(21,"(a)",iostat=ios) dummystring
- if(ios == 0) icounter = icounter + 1
- enddo
- close(21)
+ icounter = 0
+ do while(ios == 0)
+ read(21,"(a)",iostat=ios) dummystring
+ if(ios == 0) icounter = icounter + 1
+ enddo
+ close(21)
- if(mod(icounter,NLINES_PER_CMTSOLUTION_SOURCE) /= 0) &
- stop 'total number of lines in CMTSOLUTION file should be a multiple of NLINES_PER_CMTSOLUTION_SOURCE'
+ if(mod(icounter,NLINES_PER_FORCESOLUTION_SOURCE) /= 0) &
+ stop 'total number of lines in FORCESOLUTION file should be a multiple of NLINES_PER_FORCESOLUTION_SOURCE'
- NSOURCES = icounter / NLINES_PER_CMTSOLUTION_SOURCE
- if(NSOURCES < 1) stop 'need at least one source in CMTSOLUTION file'
+ NSOURCES = icounter / NLINES_PER_FORCESOLUTION_SOURCE
+ if(NSOURCES < 1) stop 'need at least one source in FORCESOLUTION file'
- ! compute the minimum value of hdur in CMTSOLUTION file
- open(unit=21,file=trim(CMTSOLUTION),status='old',action='read')
- minval_hdur = HUGEVAL
- do isource = 1,NSOURCES
+ else
+ ! compute the total number of sources in the CMTSOLUTION file
+ ! there are NLINES_PER_CMTSOLUTION_SOURCE lines per source in that file
+ call get_value_string(CMTSOLUTION, 'solver.CMTSOLUTION',&
+ IN_DATA_FILES_PATH(1:len_trim(IN_DATA_FILES_PATH))//'CMTSOLUTION')
- ! skip other information
- do idummy = 1,3
- read(21,"(a)") dummystring
- enddo
+ open(unit=21,file=trim(CMTSOLUTION),iostat=ios,status='old',action='read')
+ if(ios /= 0) stop 'error opening CMTSOLUTION file'
- ! read half duration and compute minimum
- read(21,"(a)") dummystring
- read(dummystring(15:len_trim(dummystring)),*) hdur
- minval_hdur = min(minval_hdur,hdur)
+ icounter = 0
+ do while(ios == 0)
+ read(21,"(a)",iostat=ios) dummystring
+ if(ios == 0) icounter = icounter + 1
+ enddo
+ close(21)
- ! skip other information
- do idummy = 1,9
- read(21,"(a)") dummystring
- enddo
+ if(mod(icounter,NLINES_PER_CMTSOLUTION_SOURCE) /= 0) &
+ stop 'total number of lines in CMTSOLUTION file should be a multiple of NLINES_PER_CMTSOLUTION_SOURCE'
- enddo
- close(21)
+ NSOURCES = icounter / NLINES_PER_CMTSOLUTION_SOURCE
+ if(NSOURCES < 1) stop 'need at least one source in CMTSOLUTION file'
- ! one cannot use a Heaviside source for the movies
- if((MOVIE_SURFACE .or. MOVIE_VOLUME) .and. sqrt(minval_hdur**2 + HDUR_MOVIE**2) < TINYVAL) &
- stop 'hdur too small for movie creation, movies do not make sense for Heaviside source'
+ ! compute the minimum value of hdur in CMTSOLUTION file
+ open(unit=21,file=trim(CMTSOLUTION),status='old',action='read')
+ minval_hdur = HUGEVAL
+ do isource = 1,NSOURCES
+ ! skip other information
+ do idummy = 1,3
+ read(21,"(a)") dummystring
+ enddo
+
+ ! read half duration and compute minimum
+ read(21,"(a)") dummystring
+ read(dummystring(15:len_trim(dummystring)),*) hdur
+ minval_hdur = min(minval_hdur,hdur)
+
+ ! skip other information
+ do idummy = 1,9
+ read(21,"(a)") dummystring
+ enddo
+
+ enddo
+ close(21)
+
+ ! one cannot use a Heaviside source for the movies
+ if((MOVIE_SURFACE .or. MOVIE_VOLUME) .and. sqrt(minval_hdur**2 + HDUR_MOVIE**2) < TINYVAL) &
+ stop 'hdur too small for movie creation, movies do not make sense for Heaviside source'
+ endif
+
! converts all string characters to lowercase
irange = iachar('a') - iachar('A')
do i = 1,len_trim(MODEL)
Modified: seismo/3D/SPECFEM3D/trunk/src/shared/smooth_vol_data.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/shared/smooth_vol_data.f90 2012-09-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/src/shared/smooth_vol_data.f90 2012-09-28 17:42:59 UTC (rev 20791)
@@ -97,9 +97,7 @@
! for read_parameter_files
double precision :: DT
- double precision :: HDUR_MOVIE,FACTOR_FORCE_SOURCE
- double precision :: COMPONENT_DIR_VECT_SOURCE_E,COMPONENT_DIR_VECT_SOURCE_N, &
- COMPONENT_DIR_VECT_SOURCE_Z_UP
+ double precision :: HDUR_MOVIE
integer :: NPROC,NTSTEP_BETWEEN_OUTPUT_SEISMOS,NSTEP, &
UTM_PROJECTION_ZONE,SIMULATION_TYPE
integer :: NSOURCES,NTSTEP_BETWEEN_READ_ADJSRC,NOISE_TOMOGRAPHY
@@ -222,9 +220,7 @@
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,ABSORB_INSTEAD_OF_FREE_SURFACE, &
+ USE_FORCE_POINT_SOURCE,ABSORB_INSTEAD_OF_FREE_SURFACE, &
IMODEL)
! checks if number of MPI process as specified
Modified: seismo/3D/SPECFEM3D/trunk/src/shared/sum_kernels.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/shared/sum_kernels.f90 2012-09-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/src/shared/sum_kernels.f90 2012-09-28 17:42:59 UTC (rev 20791)
@@ -103,9 +103,7 @@
! for read_parameter_files
double precision :: DT
- double precision :: HDUR_MOVIE,FACTOR_FORCE_SOURCE
- double precision :: COMPONENT_DIR_VECT_SOURCE_E,COMPONENT_DIR_VECT_SOURCE_N, &
- COMPONENT_DIR_VECT_SOURCE_Z_UP
+ double precision :: HDUR_MOVIE
integer :: NPROC,NTSTEP_BETWEEN_OUTPUT_SEISMOS,NSTEP, &
UTM_PROJECTION_ZONE,SIMULATION_TYPE
integer :: NSOURCES,NTSTEP_BETWEEN_READ_ADJSRC,NOISE_TOMOGRAPHY
@@ -161,9 +159,7 @@
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,ABSORB_INSTEAD_OF_FREE_SURFACE, &
+ USE_FORCE_POINT_SOURCE,ABSORB_INSTEAD_OF_FREE_SURFACE, &
IMODEL)
! checks if number of MPI process as specified
Modified: seismo/3D/SPECFEM3D/trunk/src/specfem3D/Makefile.in
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/specfem3D/Makefile.in 2012-09-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/src/specfem3D/Makefile.in 2012-09-28 17:42:59 UTC (rev 20791)
@@ -109,6 +109,7 @@
$O/get_attenuation_model.shared.o \
$O/get_cmt.shared.o \
$O/get_element_face.shared.o \
+ $O/get_force.shared.o \
$O/get_jacobian_boundaries.shared.o \
$O/get_shape3D.shared.o \
$O/get_value_parameters.shared.o \
Modified: seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_add_sources_acoustic.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_add_sources_acoustic.f90 2012-09-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_add_sources_acoustic.f90 2012-09-28 17:42:59 UTC (rev 20791)
@@ -42,7 +42,7 @@
xigll,yigll,zigll,xi_receiver,eta_receiver,gamma_receiver,&
station_name,network_name,adj_source_file,nrec_local,number_receiver_global, &
pm1_source_encoding,nsources_local,USE_FORCE_POINT_SOURCE, &
- FACTOR_FORCE_SOURCE
+ factor_force_source
implicit none
include "constants.h"
@@ -123,7 +123,7 @@
do isource = 1,NSOURCES
if(USE_FORCE_POINT_SOURCE) then
! precomputes source time function factor
- stf_pre_compute(isource) = FACTOR_FORCE_SOURCE * comp_source_time_function_rickr( &
+ stf_pre_compute(isource) = factor_force_source(isource) * comp_source_time_function_rickr( &
dble(it-1)*DT-t0-tshift_cmt(isource),hdur(isource))
else
if( USE_RICKER_IPATI ) then
@@ -175,7 +175,7 @@
! we use nu_source(:,3) here because we want a source normal to the surface.
! This is the expression of a Ricker; should be changed according maybe to the Par_file.
- stf_used = FACTOR_FORCE_SOURCE * &
+ stf_used = factor_force_source(isource) * &
comp_source_time_function_rickr(dble(it-1)*DT-t0-tshift_cmt(isource),f0)
@@ -419,7 +419,7 @@
do isource = 1,NSOURCES
if(USE_FORCE_POINT_SOURCE) then
! precomputes source time function factors
- stf_pre_compute(isource) = FACTOR_FORCE_SOURCE * comp_source_time_function_rickr( &
+ stf_pre_compute(isource) = factor_force_source(isource) * comp_source_time_function_rickr( &
dble(NSTEP-it)*DT-t0-tshift_cmt(isource),hdur(isource))
else
if( USE_RICKER_IPATI ) then
@@ -472,7 +472,7 @@
! we use nu_source(:,3) here because we want a source normal to the surface.
! This is the expression of a Ricker; should be changed according maybe to the Par_file.
- stf_used = FACTOR_FORCE_SOURCE * comp_source_time_function_rickr( &
+ stf_used = factor_force_source(isource) * comp_source_time_function_rickr( &
dble(NSTEP-it)*DT-t0-tshift_cmt(isource),f0)
! source encoding
Modified: seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_add_sources_elastic.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_add_sources_elastic.f90 2012-09-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_add_sources_elastic.f90 2012-09-28 17:42:59 UTC (rev 20791)
@@ -46,7 +46,7 @@
mask_noise,noise_surface_movie, &
nrec_local,number_receiver_global, &
nsources_local,USE_FORCE_POINT_SOURCE, &
- FACTOR_FORCE_SOURCE
+ factor_force_source
implicit none
@@ -125,7 +125,7 @@
do isource = 1,NSOURCES
if(USE_FORCE_POINT_SOURCE) then
! precomputes source time function factor
- stf_pre_compute(isource) = FACTOR_FORCE_SOURCE * comp_source_time_function_rickr( &
+ stf_pre_compute(isource) = factor_force_source(isource) * comp_source_time_function_rickr( &
dble(it-1)*DT-t0-tshift_cmt(isource),hdur(isource))
else
if( USE_RICKER_IPATI ) then
@@ -412,7 +412,7 @@
do isource = 1,NSOURCES
if(USE_FORCE_POINT_SOURCE) then
! precomputes source time function factors
- stf_pre_compute(isource) = FACTOR_FORCE_SOURCE * comp_source_time_function_rickr( &
+ stf_pre_compute(isource) = factor_force_source(isource) * comp_source_time_function_rickr( &
dble(NSTEP-it)*DT-t0-tshift_cmt(isource),hdur(isource))
else
if( USE_RICKER_IPATI ) then
Modified: seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_add_sources_poroelastic.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_add_sources_poroelastic.f90 2012-09-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/src/specfem3D/compute_add_sources_poroelastic.f90 2012-09-28 17:42:59 UTC (rev 20791)
@@ -42,7 +42,7 @@
use specfem_par,only: PRINT_SOURCE_TIME_FUNCTION,stf_used_total, &
xigll,yigll,zigll,xi_receiver,eta_receiver,gamma_receiver,&
station_name,network_name,adj_source_file, &
- USE_FORCE_POINT_SOURCE,FACTOR_FORCE_SOURCE
+ USE_FORCE_POINT_SOURCE
implicit none
Modified: seismo/3D/SPECFEM3D/trunk/src/specfem3D/finalize_simulation.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/specfem3D/finalize_simulation.f90 2012-09-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/src/specfem3D/finalize_simulation.f90 2012-09-28 17:42:59 UTC (rev 20791)
@@ -142,6 +142,13 @@
! frees dynamically allocated memory
+ if (USE_FORCE_POINT_SOURCE) then
+ deallocate(factor_force_source)
+ deallocate(comp_dir_vect_source_E)
+ deallocate(comp_dir_vect_source_N)
+ deallocate(comp_dir_vect_source_Z_UP)
+ endif
+
! mass matrices
if( ELASTIC_SIMULATION ) then
deallocate(rmassx)
Modified: seismo/3D/SPECFEM3D/trunk/src/specfem3D/initialize_simulation.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/specfem3D/initialize_simulation.f90 2012-09-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/src/specfem3D/initialize_simulation.f90 2012-09-28 17:42:59 UTC (rev 20791)
@@ -47,9 +47,7 @@
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,ABSORB_INSTEAD_OF_FREE_SURFACE, &
+ USE_FORCE_POINT_SOURCE,ABSORB_INSTEAD_OF_FREE_SURFACE, &
IMODEL)
! GPU_MODE is in par_file
@@ -292,13 +290,6 @@
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 &
- .and. COMPONENT_DIR_VECT_SOURCE_Z_UP .eq. 0.d0 ) &
- stop 'USE_FORCE_POINT_SOURCE requires a non null direction vector'
- endif
-
! exclusive movie flags
if( EXTERNAL_MESH_MOVIE_SURFACE .or. EXTERNAL_MESH_CREATE_SHAKEMAP ) then
if( EXTERNAL_MESH_MOVIE_SURFACE .and. EXTERNAL_MESH_CREATE_SHAKEMAP ) &
Modified: seismo/3D/SPECFEM3D/trunk/src/specfem3D/locate_source.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/specfem3D/locate_source.f90 2012-09-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/src/specfem3D/locate_source.f90 2012-09-28 17:42:59 UTC (rev 20791)
@@ -39,8 +39,8 @@
nu_source,iglob_is_surface_external_mesh,ispec_is_surface_external_mesh, &
ispec_is_acoustic,ispec_is_elastic,ispec_is_poroelastic, &
num_free_surface_faces,free_surface_ispec,free_surface_ijk, &
- USE_FORCE_POINT_SOURCE,COMPONENT_DIR_VECT_SOURCE_E, &
- COMPONENT_DIR_VECT_SOURCE_N,COMPONENT_DIR_VECT_SOURCE_Z_UP)
+ USE_FORCE_POINT_SOURCE,factor_force_source,comp_dir_vect_source_E, &
+ comp_dir_vect_source_N,comp_dir_vect_source_Z_UP)
implicit none
@@ -52,8 +52,6 @@
logical PRINT_SOURCE_TIME_FUNCTION,SUPPRESS_UTM_PROJECTION,USE_FORCE_POINT_SOURCE
double precision DT
- double precision COMPONENT_DIR_VECT_SOURCE_E,COMPONENT_DIR_VECT_SOURCE_N, &
- COMPONENT_DIR_VECT_SOURCE_Z_UP
integer, dimension(NGLLX,NGLLY,NGLLZ,NSPEC_AB) :: ibool
@@ -136,8 +134,13 @@
double precision, dimension(3,3,NSOURCES) :: nu_source
double precision, dimension(NSOURCES) :: lat,long,depth
- double precision moment_tensor(6,NSOURCES)
+ double precision, dimension(NSOURCES) :: factor_force_source
+ double precision, dimension(NSOURCES) :: comp_dir_vect_source_E
+ double precision, dimension(NSOURCES) :: comp_dir_vect_source_N
+ double precision, dimension(NSOURCES) :: comp_dir_vect_source_Z_UP
+ double precision, dimension(6,NSOURCES) :: moment_tensor
+
character(len=256) OUTPUT_FILES
double precision, dimension(NSOURCES) :: x_found_source,y_found_source,z_found_source
@@ -165,8 +168,13 @@
call get_value_string(OUTPUT_FILES, 'OUTPUT_FILES', OUTPUT_FILES_PATH(1:len_trim(OUTPUT_FILES_PATH)))
! read all the sources (note: each process reads the source file)
- call get_cmt(yr,jda,ho,mi,sec,tshift_cmt,hdur,lat,long,depth,moment_tensor, &
- DT,NSOURCES,min_tshift_cmt_original,USE_FORCE_POINT_SOURCE)
+ if (USE_FORCE_POINT_SOURCE) then
+ call get_force(tshift_cmt,hdur,lat,long,depth,NSOURCES,min_tshift_cmt_original,factor_force_source, &
+ comp_dir_vect_source_E,comp_dir_vect_source_N,comp_dir_vect_source_Z_UP)
+ else
+ call get_cmt(yr,jda,ho,mi,sec,tshift_cmt,hdur,lat,long,depth,moment_tensor, &
+ DT,NSOURCES,min_tshift_cmt_original)
+ endif
! define topology of the control element
call usual_hex_nodes(iaddx,iaddy,iaddz)
@@ -732,9 +740,9 @@
write(IMAIN,*) ' j index of source in that element: ',nint(eta_source(isource))
write(IMAIN,*) ' k index of source in that element: ',nint(gamma_source(isource))
write(IMAIN,*)
- write(IMAIN,*) ' component of direction vector in East direction: ',COMPONENT_DIR_VECT_SOURCE_E
- write(IMAIN,*) ' component of direction vector in North direction: ',COMPONENT_DIR_VECT_SOURCE_N
- write(IMAIN,*) ' component of direction vector in Vertical direction: ',COMPONENT_DIR_VECT_SOURCE_Z_UP
+ write(IMAIN,*) ' component of direction vector in East direction: ',comp_dir_vect_source_E(isource)
+ write(IMAIN,*) ' component of direction vector in North direction: ',comp_dir_vect_source_N(isource)
+ write(IMAIN,*) ' component of direction vector in Vertical direction: ',comp_dir_vect_source_Z_UP(isource)
write(IMAIN,*)
write(IMAIN,*) ' nu1 = ',nu_source(1,:,isource)
write(IMAIN,*) ' nu2 = ',nu_source(2,:,isource)
Modified: seismo/3D/SPECFEM3D/trunk/src/specfem3D/setup_sources_receivers.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/specfem3D/setup_sources_receivers.f90 2012-09-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/src/specfem3D/setup_sources_receivers.f90 2012-09-28 17:42:59 UTC (rev 20791)
@@ -95,9 +95,17 @@
hdur_gaussian(NSOURCES), &
utm_x_source(NSOURCES), &
utm_y_source(NSOURCES), &
- nu_source(3,3,NSOURCES),stat=ier)
+ nu_source(3,3,NSOURCES), stat=ier)
if( ier /= 0 ) stop 'error allocating arrays for sources'
+ if (USE_FORCE_POINT_SOURCE) then
+ allocate(factor_force_source(NSOURCES), &
+ comp_dir_vect_source_E(NSOURCES), &
+ comp_dir_vect_source_N(NSOURCES), &
+ comp_dir_vect_source_Z_UP(NSOURCES),stat=ier)
+ if( ier /= 0 ) stop 'error allocating arrays for force point sources'
+ endif
+
! for source encoding (acoustic sources so far only)
allocate(pm1_source_encoding(NSOURCES),stat=ier)
if( ier /= 0 ) stop 'error allocating arrays for sources'
@@ -117,8 +125,8 @@
nu_source,iglob_is_surface_external_mesh,ispec_is_surface_external_mesh,&
ispec_is_acoustic,ispec_is_elastic,ispec_is_poroelastic, &
num_free_surface_faces,free_surface_ispec,free_surface_ijk, &
- USE_FORCE_POINT_SOURCE,COMPONENT_DIR_VECT_SOURCE_E, &
- COMPONENT_DIR_VECT_SOURCE_N,COMPONENT_DIR_VECT_SOURCE_Z_UP)
+ USE_FORCE_POINT_SOURCE,factor_force_source,comp_dir_vect_source_E, &
+ comp_dir_vect_source_N,comp_dir_vect_source_Z_UP)
if(abs(minval(tshift_cmt)) > TINYVAL) call exit_MPI(myrank,'one tshift_cmt must be zero, others must be positive')
@@ -603,12 +611,12 @@
if( ispec_is_elastic(ispec) ) then
! we use an inclined force defined by its magnitude and the projections
! of an arbitrary (non-unitary) direction vector on the E/N/Z_UP basis:
- sourcearray(:,i,j,k) = FACTOR_FORCE_SOURCE * &
- ( nu_source(1,:,isource) * COMPONENT_DIR_VECT_SOURCE_E + &
- nu_source(2,:,isource) * COMPONENT_DIR_VECT_SOURCE_N + &
- nu_source(3,:,isource) * COMPONENT_DIR_VECT_SOURCE_Z_UP ) / &
- sqrt( COMPONENT_DIR_VECT_SOURCE_E**2 + COMPONENT_DIR_VECT_SOURCE_N**2 + &
- COMPONENT_DIR_VECT_SOURCE_Z_UP**2 )
+ sourcearray(:,i,j,k) = factor_force_source(isource) * &
+ ( nu_source(1,:,isource) * comp_dir_vect_source_E(isource) + &
+ nu_source(2,:,isource) * comp_dir_vect_source_N(isource) + &
+ nu_source(3,:,isource) * comp_dir_vect_source_Z_UP(isource) ) / &
+ sqrt( comp_dir_vect_source_E(isource)**2 + comp_dir_vect_source_N(isource)**2 + &
+ comp_dir_vect_source_Z_UP(isource)**2 )
endif
endif
enddo
Modified: seismo/3D/SPECFEM3D/trunk/src/specfem3D/specfem3D_par.f90
===================================================================
--- seismo/3D/SPECFEM3D/trunk/src/specfem3D/specfem3D_par.f90 2012-09-28 15:38:06 UTC (rev 20790)
+++ seismo/3D/SPECFEM3D/trunk/src/specfem3D/specfem3D_par.f90 2012-09-28 17:42:59 UTC (rev 20791)
@@ -156,10 +156,10 @@
! parameters for a force source located exactly at a grid point
logical :: USE_FORCE_POINT_SOURCE
- double precision :: FACTOR_FORCE_SOURCE
- double precision :: COMPONENT_DIR_VECT_SOURCE_E
- double precision :: COMPONENT_DIR_VECT_SOURCE_N
- double precision :: COMPONENT_DIR_VECT_SOURCE_Z_UP
+ double precision, dimension(:), allocatable :: factor_force_source
+ double precision, dimension(:), allocatable :: comp_dir_vect_source_E
+ double precision, dimension(:), allocatable :: comp_dir_vect_source_N
+ double precision, dimension(:), allocatable :: comp_dir_vect_source_Z_UP
! parameters
integer :: SIMULATION_TYPE
More information about the CIG-COMMITS
mailing list