[cig-commits] [commit] devel: added src/inverse_problem (for our work with Vadim Monteiller: as planned we are trying a way of parallelizing the Fortran inversion tools to see how fast they can be made) (509c631)

cig_noreply at geodynamics.org cig_noreply at geodynamics.org
Thu Dec 4 17:26:11 PST 2014


Repository : https://github.com/geodynamics/specfem3d

On branch  : devel
Link       : https://github.com/geodynamics/specfem3d/compare/fc799ce109fbccfddf183626b147f975a518f463...509c631db172c2d85f326dd7e547302d9fb5621a

>---------------------------------------------------------------

commit 509c631db172c2d85f326dd7e547302d9fb5621a
Author: Dimitri Komatitsch <komatitsch at lma.cnrs-mrs.fr>
Date:   Fri Dec 5 02:18:21 2014 +0100

    added src/inverse_problem (for our work with Vadim Monteiller: as planned we are trying a way of parallelizing the Fortran inversion tools to see how fast they can be made)


>---------------------------------------------------------------

509c631db172c2d85f326dd7e547302d9fb5621a
 Makefile.in                                        |  12 +
 configure                                          |   3 +-
 configure.ac                                       |   1 +
 ...ography.h.in => constants_inverse_problem.h.in} |   0
 src/{decompose_mesh => inverse_problem}/Makefile   |   3 +-
 .../inverse_problem_par.f90}                       |  38 +--
 .../program01_add_model_iso.f90}                   |  10 +-
 .../program02_model_update.f90}                    |  18 +-
 .../program03_smooth_sem.f90}                      |   0
 .../program04_sum_kernels.f90}                     |   4 +-
 .../program05_sum_preconditioned_kernels.f90}      |   6 +-
 src/inverse_problem/rules.mk                       | 303 +++++++++++++++++++++
 .../subroutine01_compute_kernel_integral.f90}      |  14 +-
 .../subroutine02_get_gradient_cg.f90}              |   4 +-
 .../subroutine03_get_gradient_steepest.f90}        |   4 +-
 .../subroutine04_read_kernels_cg.f90}              |   2 +-
 .../subroutine05_read_kernels.f90}                 |   4 +-
 .../subroutine06_read_model.f90}                   |   6 +-
 .../subroutine07_read_parameters_invprob.f90}      |   6 +-
 .../subroutine08_save_external_bin_m_up.f90}       |   0
 .../subroutine09_write_gradients.f90}              |   4 +-
 .../subroutine10_write_new_model.f90}              |   4 +-
 ...subroutine11_write_new_model_perturbations.f90} |   4 +-
 23 files changed, 383 insertions(+), 67 deletions(-)

diff --git a/Makefile.in b/Makefile.in
index 11dcc91..6fce842 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -223,6 +223,7 @@ SUBDIRS = \
 	shared \
 	specfem3D \
 	tomography \
+	inverse_problem \
 	$(EMPTY_MACRO)
 
 # default targets for the pure Fortran version
@@ -248,6 +249,11 @@ all: default \
 	xcheck_mesh_quality_CUBIT_Abaqus \
 	xconvert_skewness_to_angle \
 	xmultiply_CUBIT_Abaqus_mesh_by_1000 \
+	xprogram01_add_model_iso \
+	xprogram02_model_update \
+	xprogram03_smooth_sem \
+	xprogram04_sum_kernels \
+	xprogram05_sum_preconditioned_kernels \
 	$(EMPTY_MACRO)
 
 backup:
@@ -322,6 +328,12 @@ help:
 	@echo "    xsum_kernels"
 	@echo "    xsum_preconditioned_kernels"
 	@echo ""
+	@echo "- inverse problem: [make inverse_problem]"
+	@echo "    xprogram1_under_construction"
+	@echo "    xprogram2_under_construction"
+	@echo "    xprogram3_under_construction"
+	@echo "    xprogram4_under_construction"
+	@echo ""
 	@echo "for unit testing:"
 	@echo "    tests"
 	@echo ""
diff --git a/configure b/configure
index 1a220ec..3975617 100755
--- a/configure
+++ b/configure
@@ -7869,7 +7869,7 @@ $as_echo "## ----------------------------------- ##
 ## ----------------------------------- ##"
 
 # Output results.
-ac_config_files="$ac_config_files Makefile setup/constants.h setup/constants_tomography.h setup/precision.h setup/config.fh"
+ac_config_files="$ac_config_files Makefile setup/constants.h setup/constants_tomography.h setup/constants_inverse_problem.h setup/precision.h setup/config.fh"
 
 
 if test "$USE_BUNDLED_SCOTCH" = 1; then
@@ -8619,6 +8619,7 @@ do
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
     "setup/constants.h") CONFIG_FILES="$CONFIG_FILES setup/constants.h" ;;
     "setup/constants_tomography.h") CONFIG_FILES="$CONFIG_FILES setup/constants_tomography.h" ;;
+    "setup/constants_inverse_problem") CONFIG_FILES="$CONFIG_FILES setup/constants_inverse_problem" ;;
     "setup/precision.h") CONFIG_FILES="$CONFIG_FILES setup/precision.h" ;;
     "setup/config.fh") CONFIG_FILES="$CONFIG_FILES setup/config.fh" ;;
     "${SCOTCH_DIR}/src/Makefile.inc") CONFIG_FILES="$CONFIG_FILES ${SCOTCH_DIR}/src/Makefile.inc" ;;
diff --git a/configure.ac b/configure.ac
index 3d623d8..82908b8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -393,6 +393,7 @@ AC_CONFIG_FILES([
     Makefile
     setup/constants.h
     setup/constants_tomography.h
+    setup/constants_inverse_problem.h
     setup/precision.h
     setup/config.fh
 ])
diff --git a/setup/constants_tomography.h.in b/setup/constants_inverse_problem.h.in
similarity index 100%
copy from setup/constants_tomography.h.in
copy to setup/constants_inverse_problem.h.in
diff --git a/src/decompose_mesh/Makefile b/src/inverse_problem/Makefile
similarity index 98%
copy from src/decompose_mesh/Makefile
copy to src/inverse_problem/Makefile
index ed1f1dc..fa288b9 100644
--- a/src/decompose_mesh/Makefile
+++ b/src/inverse_problem/Makefile
@@ -25,7 +25,7 @@
 #
 #=====================================================================
 
-DIR = decompose_mesh
+DIR = inverse_problem
 
 # The rest of this file is generic
 #######################################
@@ -54,4 +54,3 @@ bak: backup
 
 .PHONY: default all clean cleanall backup bak
 
-
diff --git a/src/tomography/tomography_par.f90 b/src/inverse_problem/inverse_problem_par.f90
similarity index 87%
copy from src/tomography/tomography_par.f90
copy to src/inverse_problem/inverse_problem_par.f90
index 0c4a1b1..a9857bb 100644
--- a/src/tomography/tomography_par.f90
+++ b/src/inverse_problem/inverse_problem_par.f90
@@ -26,7 +26,7 @@
 !=====================================================================
 
 
-module tomography_par
+module inverse_problem_par
 
   use constants,only: CUSTOM_REAL,MAX_STRING_LEN, &
     NGLLX,NGLLY,NGLLZ,IIN,IOUT, &
@@ -34,8 +34,8 @@ module tomography_par
 
   implicit none
 
-  ! tomography parameter settings
-  include "constants_tomography.h"
+  ! inverse_problem parameter settings
+  include "constants_inverse_problem.h"
 
   ! mesh size
   integer :: NSPEC, NGLOB
@@ -69,15 +69,15 @@ module tomography_par
   ! directory where the statistics output files will be written
   character(len=MAX_STRING_LEN) :: OUTPUT_STATISTICS_DIR = 'OUTPUT_MODEL/'
 
-end module tomography_par
+end module inverse_problem_par
 
 !
 !-------------------------------------------------------------------------------------------------
 !
 
-module tomography_kernels_iso
+module inverse_problem_kernels_iso
 
-  use tomography_par
+  use inverse_problem_par
 
   implicit none
 
@@ -87,16 +87,16 @@ module tomography_kernels_iso
   ! gradients for model updates
   real(kind=CUSTOM_REAL), dimension(:,:,:,:),allocatable :: model_dbulk,model_dbeta,model_drho
 
-end module tomography_kernels_iso
+end module inverse_problem_kernels_iso
 
 
 !
 !-------------------------------------------------------------------------------------------------
 !
 
-module tomography_kernels_tiso
+module inverse_problem_kernels_tiso
 
-  use tomography_par
+  use inverse_problem_par
 
   implicit none
 
@@ -106,16 +106,16 @@ module tomography_kernels_tiso
   ! gradients for model updates
   real(kind=CUSTOM_REAL), dimension(:,:,:,:),allocatable :: model_dbulk,model_dbetah,model_dbetav,model_deta
 
-end module tomography_kernels_tiso
+end module inverse_problem_kernels_tiso
 
 
 !
 !-------------------------------------------------------------------------------------------------
 !
 
-module tomography_kernels_tiso_cg
+module inverse_problem_kernels_tiso_cg
 
-  use tomography_par
+  use inverse_problem_par
 
   implicit none
 
@@ -131,15 +131,15 @@ module tomography_kernels_tiso_cg
   real(kind=CUSTOM_REAL), dimension(:,:,:,:),allocatable :: &
         model_dbulk_old,model_dbetah_old,model_dbetav_old,model_deta_old
 
-end module tomography_kernels_tiso_cg
+end module inverse_problem_kernels_tiso_cg
 
 !
 !-------------------------------------------------------------------------------------------------
 !
 
-module tomography_model_iso
+module inverse_problem_model_iso
 
-  use tomography_par
+  use inverse_problem_par
 
   implicit none
 
@@ -147,15 +147,15 @@ module tomography_model_iso
   real(kind=CUSTOM_REAL), dimension(:,:,:,:),allocatable :: model_vp,model_vs,model_rho
   real(kind=CUSTOM_REAL), dimension(:,:,:,:),allocatable :: model_vp_new,model_vs_new,model_rho_new
 
-end module tomography_model_iso
+end module inverse_problem_model_iso
 
 !
 !-------------------------------------------------------------------------------------------------
 !
 
-module tomography_model_tiso
+module inverse_problem_model_tiso
 
-  use tomography_par
+  use inverse_problem_par
 
   implicit none
 
@@ -165,6 +165,6 @@ module tomography_model_tiso
   real(kind=CUSTOM_REAL), dimension(:,:,:,:),allocatable :: &
         model_vpv_new,model_vph_new,model_vsv_new,model_vsh_new,model_eta_new,model_rho_new
 
-end module tomography_model_tiso
+end module inverse_problem_model_tiso
 
 
diff --git a/src/tomography/add_model_iso.f90 b/src/inverse_problem/program01_add_model_iso.f90
similarity index 97%
copy from src/tomography/add_model_iso.f90
copy to src/inverse_problem/program01_add_model_iso.f90
index a9de79f..3fc51c0 100644
--- a/src/tomography/add_model_iso.f90
+++ b/src/inverse_problem/program01_add_model_iso.f90
@@ -67,8 +67,8 @@
 
 program add_model
 
-  use tomography_model_iso
-  use tomography_kernels_iso
+  use inverse_problem_model_iso
+  use inverse_problem_kernels_iso
 
   use specfem_par,only: NPROC
 
@@ -83,7 +83,7 @@ program add_model
   call initialize()
 
   ! reads in parameters needed
-  call read_parameters_tomo()
+  call read_parameters_invprob()
 
   ! user output
   if (myrank == 0) then
@@ -203,7 +203,7 @@ subroutine initialize()
 
 ! initializes arrays
 
-  use tomography_par
+  use inverse_problem_par
 
   use specfem_par,only: NSPEC_AB,NGLOB_AB,NPROC,ADIOS_ENABLED
 
@@ -236,7 +236,7 @@ subroutine initialize()
   ! read the value of NSPEC_AB and NGLOB_AB because we need it to define some array sizes below
   call read_mesh_for_init()
 
-  ! sets tomography array dimensions
+  ! sets inverse_problem array dimensions
   NSPEC = NSPEC_AB
   NGLOB = NGLOB_AB
 
diff --git a/src/tomography/model_update.f90 b/src/inverse_problem/program02_model_update.f90
similarity index 98%
copy from src/tomography/model_update.f90
copy to src/inverse_problem/program02_model_update.f90
index 2e9b9a0..a85c0b4 100644
--- a/src/tomography/model_update.f90
+++ b/src/inverse_problem/program02_model_update.f90
@@ -31,8 +31,8 @@ program model_update
   use specfem_par,only: NPROC,OUTPUT_FILES_PATH,LOCAL_PATH
   use specfem_par_elastic,only: rho_vp,rho_vs
 
-  use tomography_model_iso
-  use tomography_kernels_iso
+  use inverse_problem_model_iso
+  use inverse_problem_kernels_iso
 
   implicit none
 
@@ -112,7 +112,7 @@ program model_update
   endif
 
   ! reads in parameters needed
-  call read_parameters_tomo()
+  call read_parameters_invprob()
 
   ! user output
   if (myrank == 0) then
@@ -561,7 +561,7 @@ subroutine initialize()
 
 ! initializes arrays
 
-  use tomography_par,only: myrank_tomo => myrank, sizeprocs, NSPEC, NGLOB, USE_ALPHA_BETA_RHO
+  use inverse_problem_par,only: myrank_invprob => myrank, sizeprocs, NSPEC, NGLOB, USE_ALPHA_BETA_RHO
 
   use specfem_par,only: &
     NSPEC_AB,NGLOB_AB,NPROC,myrank, &
@@ -589,7 +589,7 @@ subroutine initialize()
   endif
 
   if (USE_ALPHA_BETA_RHO .neqv. .true.) then
-    print*,'Sorry using USE_ALPHA_BETA_RHO must be set to .true. in constants_tomography.h file; Please recompile...'
+    print*,'Sorry using USE_ALPHA_BETA_RHO must be set to .true. in constants_inverse_problem.h file; Please recompile...'
     stop 'Error USE_ALPHA_BETA_RHO flag invalid'
   endif
 
@@ -607,10 +607,10 @@ subroutine initialize()
   ! read the value of NSPEC_AB and NGLOB_AB because we need it to define some array sizes below
   call read_mesh_for_init()
 
-  ! sets tomography array dimensions
+  ! sets inverse_problem array dimensions
   NSPEC = NSPEC_AB
   NGLOB = NGLOB_AB
-  myrank_tomo = myrank
+  myrank_invprob = myrank
 
 end subroutine initialize
 
@@ -631,7 +631,7 @@ subroutine get_external_mesh()
   use specfem_par_poroelastic,only: POROELASTIC_SIMULATION,ispec_is_poroelastic,rho_vpI,rho_vpII,rho_vsI, &
     phistore,tortstore,rhoarraystore
 
-  use tomography_par,only: OUTPUT_MODEL_DIR
+  use inverse_problem_par,only: OUTPUT_MODEL_DIR
 
   implicit none
   integer :: ier
@@ -754,7 +754,7 @@ subroutine save_new_databases()
   use specfem_par_acoustic,only:ACOUSTIC_SIMULATION,ispec_is_acoustic
   use specfem_par_poroelastic,only:POROELASTIC_SIMULATION,ispec_is_poroelastic
 
-  use tomography_model_iso,only: model_vs_new,model_vp_new,model_rho_new,OUTPUT_MODEL_DIR
+  use inverse_problem_model_iso,only: model_vs_new,model_vp_new,model_rho_new,OUTPUT_MODEL_DIR
 
   implicit none
 
diff --git a/src/tomography/smooth_sem.f90 b/src/inverse_problem/program03_smooth_sem.f90
similarity index 100%
copy from src/tomography/smooth_sem.f90
copy to src/inverse_problem/program03_smooth_sem.f90
diff --git a/src/tomography/sum_kernels.f90 b/src/inverse_problem/program04_sum_kernels.f90
similarity index 98%
copy from src/tomography/sum_kernels.f90
copy to src/inverse_problem/program04_sum_kernels.f90
index fc3829b..efcc007 100644
--- a/src/tomography/sum_kernels.f90
+++ b/src/inverse_problem/program04_sum_kernels.f90
@@ -48,7 +48,7 @@
 
 program sum_kernels
 
-  use tomography_par,only: MAX_STRING_LEN,MAX_NUM_NODES,KERNEL_FILE_LIST,IIN, &
+  use inverse_problem_par,only: MAX_STRING_LEN,MAX_NUM_NODES,KERNEL_FILE_LIST,IIN, &
     myrank,sizeprocs, &
     NGLOB,NSPEC, &
     USE_ALPHA_BETA_RHO,USE_ISO_KERNELS
@@ -204,7 +204,7 @@ end program sum_kernels
 
 subroutine sum_kernel(kernel_name,kernel_list,nker)
 
-  use tomography_par
+  use inverse_problem_par
 
   implicit none
 
diff --git a/src/tomography/sum_preconditioned_kernels.f90 b/src/inverse_problem/program05_sum_preconditioned_kernels.f90
similarity index 98%
copy from src/tomography/sum_preconditioned_kernels.f90
copy to src/inverse_problem/program05_sum_preconditioned_kernels.f90
index 48d310b..f64cdac 100644
--- a/src/tomography/sum_preconditioned_kernels.f90
+++ b/src/inverse_problem/program05_sum_preconditioned_kernels.f90
@@ -52,7 +52,7 @@
 
 program sum_preconditioned_kernels
 
-  use tomography_par,only: MAX_STRING_LEN,MAX_NUM_NODES,KERNEL_FILE_LIST,IIN, &
+  use inverse_problem_par,only: MAX_STRING_LEN,MAX_NUM_NODES,KERNEL_FILE_LIST,IIN, &
     myrank,sizeprocs, &
     NGLOB,NSPEC, &
     USE_ALPHA_BETA_RHO,USE_ISO_KERNELS
@@ -208,7 +208,7 @@ end program sum_preconditioned_kernels
 
 subroutine sum_kernel_pre(kernel_name,kernel_list,nker)
 
-  use tomography_par
+  use inverse_problem_par
 
   implicit none
 
@@ -389,7 +389,7 @@ subroutine invert_hess( hess_matrix )
 ! H_nn = \frac{ \partial^2 \chi }{ \partial \rho_n \partial \rho_n }
 ! on all GLL points, which are indexed (i,j,k,ispec)
 
-  use tomography_par
+  use inverse_problem_par
 
   implicit none
 
diff --git a/src/inverse_problem/rules.mk b/src/inverse_problem/rules.mk
new file mode 100644
index 0000000..b400d03
--- /dev/null
+++ b/src/inverse_problem/rules.mk
@@ -0,0 +1,303 @@
+#=====================================================================
+#
+#               S p e c f e m 3 D  V e r s i o n  2 . 1
+#               ---------------------------------------
+#
+#     Main historical authors: Dimitri Komatitsch and Jeroen Tromp
+#                        Princeton University, USA
+#                and CNRS / University of Marseille, France
+#                 (there are currently many more authors!)
+# (c) Princeton University and CNRS / University of Marseille, 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.
+#
+#=====================================================================
+
+## compilation directories
+S := ${S_TOP}/src/inverse_problem
+$(inverse_problem_OBJECTS): S := ${S_TOP}/src/inverse_problem
+
+#######################################
+
+inverse_problem_TARGETS = \
+	$E/xprogram01_add_model_iso \
+	$E/xprogram02_model_update \
+	$E/xprogram03_smooth_sem \
+	$E/xprogram04_sum_kernels \
+	$E/xprogram05_sum_preconditioned_kernels \
+	$(EMPTY_MACRO)
+
+inverse_problem_OBJECTS = \
+	$(xprogram01_add_model_iso_OBJECTS) \
+	$(xprogram02_model_update_OBJECTS) \
+	$(xprogram03_smooth_sem_OBJECTS) \
+	$(xprogram04_sum_kernels_OBJECTS) \
+	$(xprogram05_sum_preconditioned_kernels_OBJECTS) \
+	$(EMPTY_MACRO)
+
+# These files come from the shared directory
+inverse_problem_SHARED_OBJECTS = \
+	$(xadd_model_SHARED_OBJECTS) \
+	$(xprogram02_model_update_SHARED_OBJECTS) \
+	$(xprogram03_smooth_sem_SHARED_OBJECTS) \
+	$(xprogram04_sum_kernels_SHARED_OBJECTS) \
+	$(xprogram05_sum_preconditioned_kernels_SHARED_OBJECTS) \
+	$(EMPTY_MACRO)
+
+inverse_problem_MODULES = \
+	$(FC_MODDIR)/inverse_problem_par.$(FC_MODEXT) \
+	$(FC_MODDIR)/inverse_problem_kernels_iso.$(FC_MODEXT) \
+	$(FC_MODDIR)/inverse_problem_kernels_tiso.$(FC_MODEXT) \
+	$(FC_MODDIR)/inverse_problem_kernels_tiso_cg.$(FC_MODEXT) \
+	$(FC_MODDIR)/inverse_problem_model_tiso.$(FC_MODEXT) \
+	$(FC_MODDIR)/inverse_problem_model_iso.$(FC_MODEXT) \
+	$(EMPTY_MACRO)
+
+####
+#### rules for executables
+####
+
+.PHONY: all_invprob invprob inverse_problem
+
+all_invprob: $(inverse_problem_TARGETS)
+
+invprob: $(inverse_problem_TARGETS)
+
+inverse_problem: $(inverse_problem_TARGETS)
+
+## single targets
+program01_add_model_iso: xprogram01_add_model_iso
+xprogram01_add_model_iso: $E/xprogram01_add_model_iso
+
+program02_model_update: xprogram02_model_update
+xprogram02_model_update: $E/xprogram02_model_update
+
+program03_smooth_sem: xprogram03_smooth_sem
+xprogram03_smooth_sem: $E/xprogram03_smooth_sem
+
+program04_sum_kernels: xprogram04_sum_kernels
+xprogram04_sum_kernels: $E/xprogram04_sum_kernels
+
+program05_sum_preconditioned_kernels: xprogram05_sum_preconditioned_kernels
+xprogram05_sum_preconditioned_kernels: $E/xprogram05_sum_preconditioned_kernels
+
+
+#######################################
+
+####
+#### rules for each program follow
+####
+
+#######################################
+
+##
+## add_model
+##
+xadd_model_OBJECTS = \
+	$O/inverse_problem_par.invprob_module.o \
+	$O/subroutine01_compute_kernel_integral.invprob.o \
+	$O/subroutine02_get_gradient_cg.invprob.o \
+	$O/subroutine03_get_gradient_steepest.invprob.o \
+	$O/subroutine04_read_kernels_cg.invprob.o \
+	$O/subroutine05_read_kernels.invprob.o \
+	$O/subroutine06_read_model.invprob.o \
+	$O/subroutine07_read_parameters_invprob.invprob.o \
+	$O/subroutine09_write_gradients.invprob.o \
+	$O/subroutine10_write_new_model.invprob.o \
+	$O/subroutine11_write_new_model_perturbations.invprob.o \
+	$(EMPTY_MACRO)
+
+xadd_model_SHARED_OBJECTS = \
+	$O/specfem3D_par.spec.o \
+	$O/pml_par.spec.o \
+	$O/read_mesh_databases.spec.o \
+	$O/shared_par.shared_module.o \
+	$O/create_name_database.shared.o \
+	$O/exit_mpi.shared.o \
+	$O/gll_library.shared.o \
+	$O/param_reader.cc.o \
+	$O/read_parameter_file.shared.o \
+	$O/read_value_parameters.shared.o \
+	$O/unused_mod.shared_module.o \
+	$(EMPTY_MACRO)
+
+##
+## xprogram01_add_model_iso
+##
+xprogram01_add_model_iso_OBJECTS = \
+	$O/program01_add_model_iso.invprob.o \
+	$(xadd_model_OBJECTS) \
+	$(EMPTY_MACRO)
+
+# extra dependencies
+$O/program01_add_model_iso.invprob.o: $O/specfem3D_par.spec.o $O/inverse_problem_par.invprob_module.o
+
+${E}/xprogram01_add_model_iso: $(xprogram01_add_model_iso_OBJECTS) $(xadd_model_SHARED_OBJECTS) $(COND_MPI_OBJECTS)
+	${FCLINK} -o $@ $+ $(MPILIBS)
+
+
+##
+## xprogram02_model_update
+##
+xprogram02_model_update_OBJECTS = \
+	$O/inverse_problem_par.invprob_module.o \
+	$O/subroutine03_get_gradient_steepest.invprob.o \
+	$O/program02_model_update.invprob.o \
+	$O/subroutine05_read_kernels.invprob.o \
+	$O/subroutine07_read_parameters_invprob.invprob.o \
+	$O/subroutine08_save_external_bin_m_up.invprob.o \
+	$O/subroutine09_write_gradients.invprob.o \
+	$O/subroutine10_write_new_model.invprob.o \
+	$O/subroutine11_write_new_model_perturbations.invprob.o \
+	$(EMPTY_MACRO)
+
+xprogram02_model_update_SHARED_OBJECTS = \
+	$O/specfem3D_par.spec.o \
+	$O/pml_par.spec.o \
+	$O/initialize_simulation.spec.o \
+	$O/read_mesh_databases.spec.o \
+	$O/shared_par.shared_module.o \
+	$O/check_mesh_resolution.shared.o \
+	$O/create_name_database.shared.o \
+	$O/exit_mpi.shared.o \
+	$O/get_attenuation_model.shared.o \
+	$O/gll_library.shared.o \
+	$O/param_reader.cc.o \
+	$O/read_parameter_file.shared.o \
+	$O/read_value_parameters.shared.o \
+	$O/unused_mod.shared_module.o \
+	$O/write_VTK_data.shared.o \
+	$(EMPTY_MACRO)
+
+# cuda stubs
+xprogram02_model_update_OBJECTS += $O/specfem3D_gpu_cuda_method_stubs.cudacc.o
+
+
+# using ADIOS files
+adios_program02_model_update_OBJECTS= \
+	$O/read_mesh_databases_adios.spec_adios.o \
+	$O/read_forward_arrays_adios.spec_adios.o
+
+adios_program02_model_update_SHARED_OBJECTS = \
+	$O/adios_manager.shared_adios.o \
+	$O/adios_helpers_definitions.shared_adios_module.o \
+	$O/adios_helpers_writers.shared_adios_module.o \
+	$O/adios_helpers.shared_adios.o
+
+adios_program02_model_update_STUBS = \
+	$O/specfem3D_adios_stubs.spec_noadios.o
+
+adios_program02_model_update_SHARED_STUBS = \
+	$O/adios_manager_stubs.shared_noadios.o
+
+# conditional adios linking
+ifeq ($(ADIOS),yes)
+xprogram02_model_update_OBJECTS += $(adios_program02_model_update_OBJECTS)
+xprogram02_model_update_SHARED_OBJECTS += $(adios_program02_model_update_SHARED_OBJECTS)
+else
+xprogram02_model_update_OBJECTS += $(adios_program02_model_update_STUBS)
+xprogram02_model_update_SHARED_OBJECTS += $(adios_program02_model_update_SHARED_STUBS)
+endif
+
+# extra dependencies
+$O/program02_model_update.invprob.o: $O/specfem3D_par.spec.o $O/inverse_problem_par.invprob_module.o
+$O/subroutine08_save_external_bin_m_up.invprob.o: $O/specfem3D_par.spec.o
+
+${E}/xprogram02_model_update: $(xprogram02_model_update_OBJECTS) $(xprogram02_model_update_SHARED_OBJECTS) $(COND_MPI_OBJECTS)
+	${FCLINK} -o $@ $+ $(MPILIBS)
+
+
+##
+## xprogram03_smooth_sem
+##
+xprogram03_smooth_sem_OBJECTS = \
+	$O/inverse_problem_par.invprob_module.o \
+	$O/program03_smooth_sem.invprob.o \
+	$(EMPTY_MACRO)
+
+xprogram03_smooth_sem_SHARED_OBJECTS = \
+	$O/specfem3D_par.spec.o \
+	$O/pml_par.spec.o \
+	$O/read_mesh_databases.spec.o \
+	$O/shared_par.shared_module.o \
+	$O/check_mesh_resolution.shared.o \
+	$O/create_name_database.shared.o \
+	$O/exit_mpi.shared.o \
+	$O/gll_library.shared.o \
+	$O/param_reader.cc.o \
+	$O/read_parameter_file.shared.o \
+	$O/read_value_parameters.shared.o \
+	$O/unused_mod.shared_module.o \
+	$O/write_VTK_data.shared.o \
+	$(EMPTY_MACRO)
+
+# extra dependencies
+$O/program03_smooth_sem.invprob.o: $O/specfem3D_par.spec.o $O/inverse_problem_par.invprob_module.o
+
+${E}/xprogram03_smooth_sem: $(xprogram03_smooth_sem_OBJECTS) $(xprogram03_smooth_sem_SHARED_OBJECTS) $(COND_MPI_OBJECTS)
+	${FCLINK} -o $@ $+ $(MPILIBS)
+
+
+##
+## xprogram04_sum_kernels
+##
+xprogram04_sum_kernels_OBJECTS = \
+	$O/inverse_problem_par.invprob_module.o \
+	$O/program04_sum_kernels.invprob.o \
+	$(EMPTY_MACRO)
+
+xprogram04_sum_kernels_SHARED_OBJECTS = \
+	$O/shared_par.shared_module.o \
+	$O/param_reader.cc.o \
+	$O/read_parameter_file.shared.o \
+	$O/read_value_parameters.shared.o \
+	$O/unused_mod.shared_module.o \
+	$(EMPTY_MACRO)
+
+${E}/xprogram04_sum_kernels: $(xprogram04_sum_kernels_OBJECTS) $(xprogram04_sum_kernels_SHARED_OBJECTS) $(COND_MPI_OBJECTS)
+	${FCLINK} -o $@ $+ $(MPILIBS)
+
+
+##
+## xprogram05_sum_preconditioned_kernels
+##
+xprogram05_sum_preconditioned_kernels_OBJECTS = \
+	$O/inverse_problem_par.invprob_module.o \
+	$O/program05_sum_preconditioned_kernels.invprob.o \
+	$(EMPTY_MACRO)
+
+xprogram05_sum_preconditioned_kernels_SHARED_OBJECTS = $(xprogram04_sum_kernels_SHARED_OBJECTS)
+
+${E}/xprogram05_sum_preconditioned_kernels: $(xprogram05_sum_preconditioned_kernels_OBJECTS) $(xprogram05_sum_preconditioned_kernels_SHARED_OBJECTS) $(COND_MPI_OBJECTS)
+	${FCLINK} -o $@ $+ $(MPILIBS)
+
+
+#######################################
+
+###
+### Module dependencies
+###
+$O/inverse_problem_par.invprob_module.o: $O/shared_par.shared_module.o
+
+####
+#### rule for each .o file below
+####
+
+$O/%.invprob_module.o: $S/%.f90 ${SETUP}/constants_inverse_problem.h $O/shared_par.shared_module.o
+	${FCCOMPILE_CHECK} ${FCFLAGS_f90} -c -o $@ $<
+
+$O/%.invprob.o: $S/%.f90 ${SETUP}/constants_inverse_problem.h $O/inverse_problem_par.invprob_module.o
+	${FCCOMPILE_CHECK} ${FCFLAGS_f90} -c -o $@ $<
+
diff --git a/src/tomography/compute_kernel_integral.f90 b/src/inverse_problem/subroutine01_compute_kernel_integral.f90
similarity index 98%
copy from src/tomography/compute_kernel_integral.f90
copy to src/inverse_problem/subroutine01_compute_kernel_integral.f90
index 877d668..f23aeee 100644
--- a/src/tomography/compute_kernel_integral.f90
+++ b/src/inverse_problem/subroutine01_compute_kernel_integral.f90
@@ -30,8 +30,8 @@ subroutine compute_kernel_integral_iso()
 
 ! computes volume element associated with points and calculates kernel integral
 
-  use tomography_kernels_iso
-  use tomography_model_iso
+  use inverse_problem_kernels_iso
+  use inverse_problem_model_iso
   implicit none
 
   ! jacobian
@@ -228,8 +228,8 @@ subroutine compute_kernel_integral_tiso()
 
 ! computes volume element associated with points
 
-  use tomography_kernels_tiso
-  use tomography_model_tiso
+  use inverse_problem_kernels_tiso
+  use inverse_problem_model_tiso
   implicit none
 
   ! jacobian
@@ -462,8 +462,8 @@ subroutine compute_kernel_integral_tiso_iso()
 
 ! computes volume element associated with points
 
-  use tomography_kernels_iso
-  use tomography_model_tiso
+  use inverse_problem_kernels_iso
+  use inverse_problem_model_tiso
   implicit none
   ! jacobian
   real(kind=CUSTOM_REAL), dimension(:,:,:,:),allocatable :: jacobian
@@ -681,7 +681,7 @@ subroutine compute_jacobian(jacobian)
 
 ! computes volume element associated with points
 
-  use tomography_par,only: CUSTOM_REAL,NSPEC,NGLOB,NGLLX,NGLLY,NGLLZ,IIN,myrank,MAX_STRING_LEN,REG
+  use inverse_problem_par,only: CUSTOM_REAL,NSPEC,NGLOB,NGLLX,NGLLY,NGLLZ,IIN,myrank,MAX_STRING_LEN,REG
 
   implicit none
 
diff --git a/src/tomography/get_gradient_cg.f90 b/src/inverse_problem/subroutine02_get_gradient_cg.f90
similarity index 99%
copy from src/tomography/get_gradient_cg.f90
copy to src/inverse_problem/subroutine02_get_gradient_cg.f90
index 393e369..9a13d98 100644
--- a/src/tomography/get_gradient_cg.f90
+++ b/src/inverse_problem/subroutine02_get_gradient_cg.f90
@@ -41,8 +41,8 @@ subroutine get_gradient_cg_tiso()
 !          gamma_n would be un-smoothed kernel and lambda_n would be smoothed one...
 !          i'm not sure if this makes a difference.
 
-  use tomography_kernels_tiso
-  use tomography_kernels_tiso_cg
+  use inverse_problem_kernels_tiso
+  use inverse_problem_kernels_tiso_cg
   implicit none
   ! local parameters
   real(kind=CUSTOM_REAL) :: alpha_bulk,alpha_betav,alpha_betah,alpha_eta,alpha_all
diff --git a/src/tomography/get_gradient_steepest.f90 b/src/inverse_problem/subroutine03_get_gradient_steepest.f90
similarity index 99%
copy from src/tomography/get_gradient_steepest.f90
copy to src/inverse_problem/subroutine03_get_gradient_steepest.f90
index 6401ac6..f498e5a 100644
--- a/src/tomography/get_gradient_steepest.f90
+++ b/src/inverse_problem/subroutine03_get_gradient_steepest.f90
@@ -30,7 +30,7 @@ subroutine get_gradient_steepest_iso()
 
 ! calculates gradient by steepest descent method
 
-  use tomography_kernels_iso
+  use inverse_problem_kernels_iso
 
   implicit none
   ! local parameters
@@ -238,7 +238,7 @@ subroutine get_gradient_steepest_tiso()
 
 ! calculates gradient by steepest descent method
 
-  use tomography_kernels_tiso
+  use inverse_problem_kernels_tiso
 
   implicit none
   ! local parameters
diff --git a/src/tomography/read_kernels_cg.f90 b/src/inverse_problem/subroutine04_read_kernels_cg.f90
similarity index 99%
copy from src/tomography/read_kernels_cg.f90
copy to src/inverse_problem/subroutine04_read_kernels_cg.f90
index 7920ba4..2036fce 100644
--- a/src/tomography/read_kernels_cg.f90
+++ b/src/inverse_problem/subroutine04_read_kernels_cg.f90
@@ -30,7 +30,7 @@ subroutine read_kernels_cg_tiso_old()
 
 ! reads in smoothed kernels from former iteration in OUTPUT_SUM.old/ : bulk, betav, betah, eta
 
-  use tomography_kernels_tiso_cg
+  use inverse_problem_kernels_tiso_cg
 
   implicit none
   real(kind=CUSTOM_REAL) :: min_vsv,min_vsh,max_vsv,max_vsh,min_eta,max_eta,min_bulk,max_bulk
diff --git a/src/tomography/read_kernels.f90 b/src/inverse_problem/subroutine05_read_kernels.f90
similarity index 99%
copy from src/tomography/read_kernels.f90
copy to src/inverse_problem/subroutine05_read_kernels.f90
index ce99791..3d2cb36 100644
--- a/src/tomography/read_kernels.f90
+++ b/src/inverse_problem/subroutine05_read_kernels.f90
@@ -30,7 +30,7 @@ subroutine read_kernels_iso()
 
 ! reads in smoothed kernels: bulk, beta, rho
 
-  use tomography_kernels_iso
+  use inverse_problem_kernels_iso
 
   implicit none
   ! local parameters
@@ -155,7 +155,7 @@ subroutine read_kernels_tiso()
 
 ! reads in smoothed kernels: bulk, betav, betah, eta
 
-  use tomography_kernels_tiso
+  use inverse_problem_kernels_tiso
 
   implicit none
   ! local parameters
diff --git a/src/tomography/read_model.f90 b/src/inverse_problem/subroutine06_read_model.f90
similarity index 99%
copy from src/tomography/read_model.f90
copy to src/inverse_problem/subroutine06_read_model.f90
index 1b99543..c64ce04 100644
--- a/src/tomography/read_model.f90
+++ b/src/inverse_problem/subroutine06_read_model.f90
@@ -29,7 +29,7 @@ subroutine read_model_iso()
 
 ! reads in current isotropic model: vp & vs & rho
 
-  use tomography_model_iso
+  use inverse_problem_model_iso
 
   implicit none
   real(kind=CUSTOM_REAL) :: min_vp,min_vs,max_vp,max_vs,min_rho,max_rho
@@ -130,7 +130,7 @@ subroutine read_model_tiso()
 
 ! reads in current transverse isotropic model: vpv.. & vsv.. & eta & rho
 
-  use tomography_model_tiso
+  use inverse_problem_model_tiso
 
   implicit none
   real(kind=CUSTOM_REAL) :: min_vpv,min_vph,min_vsv,min_vsh, &
@@ -292,7 +292,7 @@ subroutine read_model_database()
 
 ! reads in current transverse isotropic model: vpv.. & vsv.. & eta & rho
 
-  use tomography_par
+  use inverse_problem_par
 
   implicit none
   integer :: ival,ier
diff --git a/src/tomography/read_parameters_tomo.f90 b/src/inverse_problem/subroutine07_read_parameters_invprob.f90
similarity index 97%
copy from src/tomography/read_parameters_tomo.f90
copy to src/inverse_problem/subroutine07_read_parameters_invprob.f90
index 356707d..5be1d20 100644
--- a/src/tomography/read_parameters_tomo.f90
+++ b/src/inverse_problem/subroutine07_read_parameters_invprob.f90
@@ -26,11 +26,11 @@
 !=====================================================================
 
 
-subroutine read_parameters_tomo()
+subroutine read_parameters_invprob()
 
 ! reads in parameters needed (only step length for now...)
 
-  use tomography_par
+  use inverse_problem_par
 
   implicit none
   integer :: ier
@@ -118,5 +118,5 @@ contains
 
   end subroutine usage
 
-end subroutine read_parameters_tomo
+end subroutine read_parameters_invprob
 
diff --git a/src/tomography/save_external_bin_m_up.f90 b/src/inverse_problem/subroutine08_save_external_bin_m_up.f90
similarity index 100%
copy from src/tomography/save_external_bin_m_up.f90
copy to src/inverse_problem/subroutine08_save_external_bin_m_up.f90
diff --git a/src/tomography/write_gradients.f90 b/src/inverse_problem/subroutine09_write_gradients.f90
similarity index 98%
copy from src/tomography/write_gradients.f90
copy to src/inverse_problem/subroutine09_write_gradients.f90
index b1e8302..0d24c4f 100644
--- a/src/tomography/write_gradients.f90
+++ b/src/inverse_problem/subroutine09_write_gradients.f90
@@ -30,7 +30,7 @@ subroutine write_gradients_iso()
 
 ! file output for new model
 
-  use tomography_kernels_iso
+  use inverse_problem_kernels_iso
   implicit none
   character(len=MAX_STRING_LEN) :: m_file, fname
 
@@ -74,7 +74,7 @@ subroutine write_gradients_tiso()
 
 ! file output for new model
 
-  use tomography_kernels_tiso
+  use inverse_problem_kernels_tiso
   implicit none
 
   character(len=MAX_STRING_LEN) :: m_file, fname
diff --git a/src/tomography/write_new_model.f90 b/src/inverse_problem/subroutine10_write_new_model.f90
similarity index 99%
copy from src/tomography/write_new_model.f90
copy to src/inverse_problem/subroutine10_write_new_model.f90
index 1e5b1fd..b52ae73 100644
--- a/src/tomography/write_new_model.f90
+++ b/src/inverse_problem/subroutine10_write_new_model.f90
@@ -30,7 +30,7 @@ subroutine write_new_model_iso()
 
 ! file output for new model
 
-  use tomography_model_iso
+  use inverse_problem_model_iso
 
   implicit none
   real(kind=CUSTOM_REAL) :: min_vp,min_vs,max_vp,max_vs,min_rho,max_rho
@@ -103,7 +103,7 @@ subroutine write_new_model_tiso()
 
 ! file output for TI new model
 
-  use tomography_model_tiso
+  use inverse_problem_model_tiso
   implicit none
   real(kind=CUSTOM_REAL) :: min_vpv,min_vph,min_vsv,min_vsh, &
     max_vpv,max_vph,max_vsv,max_vsh,min_eta,max_eta, min_rho,max_rho
diff --git a/src/tomography/write_new_model_perturbations.f90 b/src/inverse_problem/subroutine11_write_new_model_perturbations.f90
similarity index 99%
copy from src/tomography/write_new_model_perturbations.f90
copy to src/inverse_problem/subroutine11_write_new_model_perturbations.f90
index b996ae5..df59240 100644
--- a/src/tomography/write_new_model_perturbations.f90
+++ b/src/inverse_problem/subroutine11_write_new_model_perturbations.f90
@@ -30,7 +30,7 @@ subroutine write_new_model_perturbations_iso()
 
 ! file output for new model perturbations
 
-  use tomography_model_iso
+  use inverse_problem_model_iso
 
   implicit none
   real(kind=CUSTOM_REAL) :: min_vp,min_vs,max_vp,max_vs,min_rho,max_rho
@@ -111,7 +111,7 @@ subroutine write_new_model_perturbations_tiso()
 
 ! file output for TI new model perturbations
 
-  use tomography_model_tiso
+  use inverse_problem_model_tiso
   implicit none
   real(kind=CUSTOM_REAL) :: min_vpv,min_vph,min_vsv,min_vsh, &
     max_vpv,max_vph,max_vsv,max_vsh,min_eta,max_eta,min_rho,max_rho



More information about the CIG-COMMITS mailing list