[cig-commits] r17861 - in seismo/3D/SPECFEM3D_GLOBE/trunk: . doc/USER_MANUAL doc/USER_MANUAL/figures

danielpeter at geodynamics.org danielpeter at geodynamics.org
Mon Feb 14 14:33:26 PST 2011


Author: danielpeter
Date: 2011-02-14 14:33:26 -0800 (Mon, 14 Feb 2011)
New Revision: 17861

Modified:
   seismo/3D/SPECFEM3D_GLOBE/trunk/compute_arrays_source.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/bibliography.bib
   seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/figures/IRIS_band_codes.pdf
   seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/figures/PKPdf_all_15s500s.pdf
   seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/figures/bolivia_trans.pdf
   seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/figures/bolivia_vertical.pdf
   seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/figures/vanuatu_trans.pdf
   seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/figures/vanuatu_vertical.pdf
   seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/manual_SPECFEM3D_GLOBE.pdf
   seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/manual_SPECFEM3D_GLOBE.tex
   seismo/3D/SPECFEM3D_GLOBE/trunk/get_model_parameters.f90
   seismo/3D/SPECFEM3D_GLOBE/trunk/setup_sources_receivers.f90
Log:
updates reading in adjoint source files; updates manual and PPM models

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/compute_arrays_source.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/compute_arrays_source.f90	2011-02-14 19:48:56 UTC (rev 17860)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/compute_arrays_source.f90	2011-02-14 22:33:26 UTC (rev 17861)
@@ -249,7 +249,16 @@
     ! opens adjoint component file
     filename = 'SEM/'//trim(adj_source_file) // '.'// comp(icomp) // '.adj'
     open(unit=IIN,file=trim(filename),status='old',action='read',iostat=ios)
-    if (ios /= 0) cycle ! cycles to next file
+    
+    ! note: adjoint source files must be available for all three components E/N/Z, even
+    !          if a component is just zeroed out
+    if (ios /= 0) then   
+      ! adjoint source file not found
+      ! stops simulation
+      call exit_MPI(myrank,&
+          'file '//trim(filename)//' not found, please check with your STATIONS_ADJOINT file') 
+    endif    
+    !if (ios /= 0) cycle ! cycles to next file
 
     ! jumps over unused trace length
     do itime =1,it_start-1

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/bibliography.bib
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/bibliography.bib	2011-02-14 19:48:56 UTC (rev 17860)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/bibliography.bib	2011-02-14 22:33:26 UTC (rev 17861)
@@ -10805,6 +10805,15 @@
   pages = {1925-1928}
 }
 
+ at ARTICLE{RiDeVaWo10,
+  author = {J. Ritsema and A. Deuss and H. J. {Van Heijst} and J. H. Woodhouse},
+  title = {{S40RTS}: a degree-40 shear-velocity model for the mantle from new Rayleigh wave dispersion, 
+  teleseismic traveltime and normal-mode splitting function measurements},
+  journal = gji,
+  year = {2010},
+  doi = {10.1111/j.1365-246X.2010.04884.x}
+}
+
 @ARTICLE{ritzwollerlavely1995,
   author = {M. H. Ritzwoller and E. M. Lavely},
   title = {Three-dimensional models of the {E}arth's mantle},

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/figures/IRIS_band_codes.pdf
===================================================================
(Binary files differ)

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/figures/PKPdf_all_15s500s.pdf
===================================================================
(Binary files differ)

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/figures/bolivia_trans.pdf
===================================================================
(Binary files differ)

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/figures/bolivia_vertical.pdf
===================================================================
(Binary files differ)

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/figures/vanuatu_trans.pdf
===================================================================
(Binary files differ)

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/figures/vanuatu_vertical.pdf
===================================================================
(Binary files differ)

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/manual_SPECFEM3D_GLOBE.pdf
===================================================================
(Binary files differ)

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/manual_SPECFEM3D_GLOBE.tex
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/manual_SPECFEM3D_GLOBE.tex	2011-02-14 19:48:56 UTC (rev 17860)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/doc/USER_MANUAL/manual_SPECFEM3D_GLOBE.tex	2011-02-14 22:33:26 UTC (rev 17861)
@@ -559,6 +559,12 @@
 model, and that we use the PREM radial attenuation model when \texttt{ATTENUATION}
 is incorporated. See Chapter~\ref{cha:-Changing-the} for a discussion
 on how to change 3D models.
+\item [{\texttt{s40rts}}] A global 3D mantle model \citep{RiDeVaWo10} succeeding S20RTS
+with a higher resolution.
+S40RTS uses transversely isotropic PREM as a background
+model and the 3D crustal model Crust2.0 \citep{BaLaMa00}. 
+We use the PREM radial attenuation model when \texttt{ATTENUATION}
+is incorporated. 
 \item [{\texttt{\textcolor{black}{s362ani}}}] A global shear-wave speed
 model developed by \citet{KuDzEk06}. In this model, radial anisotropy
 is confined to the uppermost mantle. The model (and the corresponding
@@ -575,6 +581,10 @@
 for a discussion on how to specify your own 3D anisotropic model.
 \item [{\texttt{3D\_attenuation}}] See Chapter~\ref{cha:-Changing-the}
 for a discussion on how to specify your own 3D attenuation model.
+\item [{\texttt{PPM}}] For a user-specified 3D model (Point-Profile-Model) 
+given as ASCII-table, specifying Vs-perturbations
+with respect to PREM. See Chapter~\ref{cha:-Changing-the}
+for a discussion on how to specify your own 3D model.
 \end{description}
 \item [{\textmd{NOTE:}}]~\\
 When a 3D mantle model is chosen in \texttt{Par\_file}, the simulations are performed together with the 3D crustal model Crust2.0. Alternatively, Crust2.0 can be combined with a higher resolution European crustal model EUCrust07 \citep{EUCrust07}. This can be done by setting the crustal type to \texttt{ICRUST\_CRUSTMAPS} in the \texttt{constant.h} file.
@@ -2903,6 +2913,33 @@
 in Appendix~\ref{cha:Reference-Frame-Convention}.
 
 
+\subsection{{\normalsize \label{sub:Point-Profile-Models}Point-Profile Models}}
+
+In order to facilitate the use of your own specific mantle model, you can choose \texttt{PPM} as model in the \texttt{DATA/Par\_file} file
+and supply your own model as an ASCII-table file. These generic models are given as depth profiles at a specified lon/lat location
+and a perturbation (in percentage) with respect to the shear-wave speed values from PREM. The ASCII-file should have a format like:
+\begin{lyxcode}
+{\footnotesize \#lon(deg), lat(deg), depth(km), Vs-perturbation wrt PREM(\%), Vs-PREM (km/s)}{\footnotesize \par}
+{\footnotesize -10.00000       31.00000       40.00000      -1.775005       4.400000}{\footnotesize \par}
+{\footnotesize -10.00000       32.00000       40.00000      -1.056823       4.400000}{\footnotesize \par}
+{\footnotesize ...}{\footnotesize \par}
+\end{lyxcode}
+where the first line is a comment line and all following ones are specifying the Vs-perturbation at a lon/lat location and a given depth.
+The last entry on each line is specifying the absolute value of Vs (however this value is only given as a supplementary information 
+and not used any further). The background model is PREM with a transverse isotropic layer between Moho and 220~km depth.
+The specified Vs-perturbations are added as isotropic perturbations. Please see the file \texttt{DATA/PPM/README} 
+for more informations how to setup the directory \texttt{DATA/PPM} to use your own ASCII-file.
+
+
+
+To change the code behavior of these PPM-routines, please have a look at the implementation in the source code
+file \texttt{model\_ppm.f90} and set the flags and scaling factors as needed for your purposes.
+Perturbations in density and Vp may be scaled to the given Vs-perturbations with constant scaling factors by setting the appropriate 
+values in this source code file. In case you want to change the format of the input ASCII-file, see more details in the Appendix \ref{cha:Troubleshooting}. 
+
+
+
+
 \section{{\normalsize \label{sec:Anelastic-Models}}Anelastic Models}
 
 Three-dimensional anelastic (attenuation) models may be superimposed
@@ -3334,6 +3371,127 @@
 
 \noindent \textbf{\texttt{EXAMPLE:}} Depending on the resolution of your simulations, if the sampling rate is greater than $0.1$ s and less than $1$ s, a seismogram recorded on the vertical component of station \texttt{AAK} will be named \texttt{AAK.IU.MXZ.sem.sac}, whereas it will be \texttt{AAK.IU.BXZ.sem.sac}, if the sampling rate is greater than 0.0125 and less equal to 0.1 s.
 
+
+
+\chapter{\label{cha:Troubleshooting}Troubleshooting}
+
+\section*{FAQ}
+
+\begin{description}
+\item [configuration fails:]
+   Examine the log file 'config.log'. It contains detailed informations.
+   In many cases, the path's to these specific compiler commands F90,
+   CC and MPIF90 won't be correct if `./configure` fails.
+
+   Please make sure that you have a working installation of a Fortran compiler,
+   a C compiler and an MPI implementation. You should be able to compile this
+   little program code:
+\begin{lyxcode}
+{\footnotesize      program main }{\footnotesize \par}
+{\footnotesize        include 'mpif.h' }{\footnotesize \par}
+{\footnotesize        integer, parameter :: CUSTOM\_MPI\_TYPE = MPI\_REAL }{\footnotesize \par}
+{\footnotesize        integer ier }{\footnotesize \par}
+{\footnotesize        call MPI\_INIT(ier) }{\footnotesize \par}
+{\footnotesize        call MPI\_BARRIER(MPI\_COMM\_WORLD,ier) }{\footnotesize \par}
+{\footnotesize        call MPI\_FINALIZE(ier) }{\footnotesize \par}
+{\footnotesize      end}{\footnotesize \par}
+\end{lyxcode}
+
+
+\item [compilation fails:] In case a compilation error like the following occurs, stating 
+\begin{lyxcode}
+{\footnotesize    ...  }{\footnotesize \par}
+{\footnotesize    obj/meshfem3D.o: In function `MAIN\_\_':  }{\footnotesize \par}
+{\footnotesize    meshfem3D.f90:(.text+0x14): undefined reference to `\_gfortran\_set\_std'  }{\footnotesize \par}
+{\footnotesize    ...  }{\footnotesize \par}
+\end{lyxcode}
+  make sure you're pointing to the right 'mpif90' wrapper command.
+
+  Normally, this message will appear when you're mixing two different Fortran
+  compilers. That is, using e.g. gfortran to compile non-MPI files
+  and mpif90, wrapper provided for e.g. ifort, to compile MPI-files.
+
+  fix: e.g. specify > ./configure FC=gfortran MPIF90=/usr/local/openmpi-gfortran/bin/mpif90
+
+
+\item [changing PPM model routines fails:]
+  In case you want to modify the PPM-routines in file \texttt{model\_ppm.f90}, please consider the following points:
+  
+  \begin{enumerate}
+  \item Please check in file \texttt{get\_model\_parameter.f90} that the entry for PPM models looks like:
+  \begin{lyxcode}
+{\footnotesize  ... }{\footnotesize \par}
+{\footnotesize  else if(MODEL\_ROOT == 'PPM') then  }{\footnotesize \par}
+{\footnotesize   ! overimposed based on isotropic-prem  }{\footnotesize \par}
+{\footnotesize   CASE\_3D = .true.  }{\footnotesize \par}
+{\footnotesize   CRUSTAL = .true.  }{\footnotesize \par}
+{\footnotesize   ISOTROPIC\_3D\_MANTLE = .true.  }{\footnotesize \par}
+{\footnotesize   ONE\_CRUST = .true.  }{\footnotesize \par}
+{\footnotesize   THREE\_D\_MODEL = THREE\_D\_MODEL\_PPM  }{\footnotesize \par}
+{\footnotesize   TRANSVERSE\_ISOTROPY = .true. ! to use transverse-isotropic prem  }{\footnotesize \par}
+{\footnotesize  ...  }{\footnotesize \par}
+  \end{lyxcode}
+  You can set \texttt{TRANSVERSE\_ISOTROPY} to \texttt{.false.} in case you want to use the isotropic PREM 
+  as 1D background model.
+
+  \item Transverse isotropy would mean different values for horizontal and vertically polarized wave speeds, 
+  i.e. different for vph and   vpv, vsh and vsv, and it includes an additional parameter eta. 
+  By default, we take these wave speeds from PREM and add your model perturbations to them.
+  For the moment, your model perturbations are added as isotropic perturbations, using the same dvp for vph and vpv, 
+  and dvs for vsh   and vsv, see in \texttt{meshfem3D\_models.f90}:
+  \begin{lyxcode}
+{\footnotesize  ... }{\footnotesize \par}
+{\footnotesize     case(THREE\_D\_MODEL\_PPM ) }{\footnotesize \par}
+{\footnotesize       ! point profile model }{\footnotesize \par}
+{\footnotesize       call model\_PPM(r\_used,theta,phi,dvs,dvp,drho,PPM\_V) }{\footnotesize \par}
+{\footnotesize       vpv=vpv*(1.0d0+dvp) }{\footnotesize \par}
+{\footnotesize       vph=vph*(1.0d0+dvp) }{\footnotesize \par}
+{\footnotesize       vsv=vsv*(1.0d0+dvs) }{\footnotesize \par}
+{\footnotesize       vsh=vsh*(1.0d0+dvs) }{\footnotesize \par}
+{\footnotesize       rho=rho*(1.0d0+drho) }{\footnotesize \par}
+{\footnotesize	... }{\footnotesize \par}
+  \end{lyxcode}
+ You could modify this to add different perturbations for vph and vpv, resp. vsh and vsv. 
+ This would basically mean that you add transverse isotropic perturbations.
+ You can see how this is done with e.g. the model \texttt{s362ani}, 
+ following the flag \texttt{THREE\_D\_MODEL\_S362ANI} on how to modify accordingly the file \texttt{meshfem3D\_models.f90}.
+
+  \item In case you modify the structure \texttt{PPM\_V} in file \texttt{model\_ppm.f90}, 
+  also check that in file \texttt{meshfem3D\_models.f90}, you use your updated \texttt{PPM\_V} structure (for example including dvp):
+  \begin{lyxcode}
+{\footnotesize  ... }{\footnotesize \par}
+{\footnotesize! point profile model\_variables }{\footnotesize \par}
+{\footnotesize type model\_ppm\_variables }{\footnotesize \par}
+{\footnotesize   sequence }{\footnotesize \par}
+{\footnotesize   double precision,dimension(:),pointer :: dvs,dvp,lat,lon,depth }{\footnotesize \par}
+{\footnotesize   double precision :: maxlat,maxlon,minlat,minlon,maxdepth,mindepth }{\footnotesize \par}
+{\footnotesize   double precision :: dlat,dlon,ddepth,max\_dvs,min\_dvs,max\_dvp,min\_dvp }{\footnotesize \par}
+{\footnotesize   integer :: num\_v,num\_latperlon,num\_lonperdepth }{\footnotesize \par}
+{\footnotesize   integer :: dummy ! padding 4 bytes to align the structure }{\footnotesize \par}
+{\footnotesize end type model\_ppm\_variables }{\footnotesize \par}
+{\footnotesize type (model\_ppm\_variables) PPM\_V }{\footnotesize \par}
+{\footnotesize  ... }{\footnotesize \par}
+  \end{lyxcode}
+
+  Together with these modifications in file \texttt{meshfem3D\_models.f90}, your code should work fine. 
+  In case you want to add more specific model routines, follow the code sections starting with:
+  \begin{lyxcode}
+{\footnotesize  !--- }{\footnotesize \par}
+{\footnotesize  ! }{\footnotesize \par}
+{\footnotesize  ! ADD YOUR MODEL HERE }{\footnotesize \par}
+{\footnotesize  ! }{\footnotesize \par}
+{\footnotesize  !--- }{\footnotesize \par}
+  \end{lyxcode}
+  to see code sections sensitive to model updates.
+    
+  \end{enumerate}
+
+\end{description}
+
+
+
+
+
 \chapter{\label{cha:License}License}
 
 \textbf{GNU GENERAL PUBLIC LICENSE Version 2, June 1991. Copyright

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/get_model_parameters.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/get_model_parameters.f90	2011-02-14 19:48:56 UTC (rev 17860)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/get_model_parameters.f90	2011-02-14 22:33:26 UTC (rev 17861)
@@ -369,7 +369,7 @@
     ISOTROPIC_3D_MANTLE = .true.
     ONE_CRUST = .true.
     THREE_D_MODEL = THREE_D_MODEL_PPM
-    ! TRANSVERSE_ISOTROPY = .true. ! to use transverse-isotropic prem
+    TRANSVERSE_ISOTROPY = .true. ! to use transverse-isotropic prem
 
   else if(MODEL_ROOT == 'GLL') then
     ! model will be given on local basis, at all GLL points,

Modified: seismo/3D/SPECFEM3D_GLOBE/trunk/setup_sources_receivers.f90
===================================================================
--- seismo/3D/SPECFEM3D_GLOBE/trunk/setup_sources_receivers.f90	2011-02-14 19:48:56 UTC (rev 17860)
+++ seismo/3D/SPECFEM3D_GLOBE/trunk/setup_sources_receivers.f90	2011-02-14 22:33:26 UTC (rev 17861)
@@ -271,11 +271,14 @@
         ! updates counter
         nadj_rec_local = nadj_rec_local + 1
 
-        ! checks **sta**.**net**.**LH**.adj files for correct number of time steps
+        ! checks **sta**.**net**.**MX**.adj files for correct number of time steps
         adj_source_file = trim(station_name(irec))//'.'//trim(network_name(irec))
         do icomp = 1,NDIM
+
+          ! opens adjoint source file for this component
           filename = 'SEM/'//trim(adj_source_file) // '.'// comp(icomp) // '.adj'
           open(unit=IIN,file=trim(filename),status='old',action='read',iostat=ier)
+          
           if( ier == 0 ) then
             ! checks length of file
             itime = 0
@@ -286,12 +289,20 @@
             if( itime /= NSTEP) &
               call exit_MPI(myrank,&
                 'file '//trim(filename)//' has wrong length, please check with your simulation duration')
+
+            ! updates counter for found files    
             nadj_files_found = nadj_files_found + 1
+          else
+            ! adjoint source file not found
+            ! stops simulation
+            call exit_MPI(myrank,&
+                'file '//trim(filename)//' not found, please check with your STATIONS_ADJOINT file')            
           endif
           close(IIN)
         enddo
       endif
     enddo
+    
     ! checks if any adjoint source files found at all
     call MPI_REDUCE(nadj_files_found,nadj_files_found_tot,1,MPI_INTEGER,MPI_SUM,0,MPI_COMM_WORLD,ier)
     if( myrank == 0 ) then



More information about the CIG-COMMITS mailing list