[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