[cig-commits] [commit] : created v1.4.4_last_BASIN as a copy of the current v1.4.3_BASIN (c3c2ba2)
cig_noreply at geodynamics.org
cig_noreply at geodynamics.org
Thu Nov 14 20:16:16 PST 2013
Repository : ssh://geoshell/specfem3d
On branch :
Link : https://github.com/geodynamics/specfem2d/compare/1e201257d91c794056b990a43329e05d04f77454...0000000000000000000000000000000000000000
>---------------------------------------------------------------
commit c3c2ba2ad61e1522b98fe9c6e96d490eb90b3de5
Author: Dimitri Komatitsch <komatitsch at lma.cnrs-mrs.fr>
Date: Tue Dec 29 16:52:45 2009 +0000
created v1.4.4_last_BASIN as a copy of the current v1.4.3_BASIN
>---------------------------------------------------------------
c3c2ba2ad61e1522b98fe9c6e96d490eb90b3de5
Makefile.in | 22 +--
README_SPECFEM3D | 166 +++++++++++-----
Specfem3D/Mesher.py | 71 -------
Specfem3D/Model.py | 23 ---
Specfem3D/Solver.py | 291 -----------------------------
Specfem3D/Specfem.py | 147 ---------------
Specfem3D/__init__.py | 7 -
Specfem3D/models/Harvard_LA.odb | 45 -----
Specfem3D/models/Lacq_gas_field_France.odb | 11 --
Specfem3D/models/Min_Chen_anisotropy.odb | 11 --
Specfem3D/models/SoCal.odb | 11 --
Specfem3D/models/__vault__.odb | 0
combine_vol_data.f90 | 20 +-
flags.guess | 6 +-
locate_source.f90 | 2 +-
meshfem3D.f90 | 99 +++++++---
specfem3D.f90 | 99 +++++++---
write_c_binary.c | 1 +
18 files changed, 295 insertions(+), 737 deletions(-)
diff --git a/Makefile.in b/Makefile.in
index ae117f8..5c28e08 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -165,8 +165,7 @@ LIBSPECFEM = $(COND_PYRE_OBJECTS) $O/libspecfem.a
@COND_PYRE_FALSE@ check_mesh_quality_AVS_DX \
@COND_PYRE_FALSE@ combine_AVS_DX \
@COND_PYRE_FALSE@ convolve_source_timefunction \
- at COND_PYRE_FALSE@ create_movie_AVS_DX \
- at COND_PYRE_FALSE@ create_movie_GMT \
+ at COND_PYRE_FALSE@ create_movie_shakemap_AVS_DX_GMT \
@COND_PYRE_FALSE@ meshfem3D \
@COND_PYRE_FALSE@ $(EMPTY_MACRO)
@@ -218,8 +217,7 @@ check_mesh_quality_AVS_DX: xcheck_mesh_quality_AVS_DX
combine_AVS_DX: xcombine_AVS_DX
convolve_source_timefunction: xconvolve_source_timefunction
create_header_file: xcreate_header_file
-create_movie_AVS_DX: xcreate_movie_AVS_DX
-create_movie_GMT: xcreate_movie_GMT
+create_movie_shakemap_AVS_DX_GMT: xcreate_movie_shakemap_AVS_DX_GMT
combine_vol_data: xcombine_vol_data
combine_surf_data: xcombine_surf_data
@@ -230,8 +228,8 @@ xconvolve_source_timefunction: $O/convolve_source_timefunction.o
xcreate_header_file: $O/program_create_header_file.o $(LIBSPECFEM)
${FCCOMPILE_CHECK} -o xcreate_header_file $O/program_create_header_file.o $(LIBSPECFEM)
- at COND_PYRE_FALSE@xcreate_movie_AVS_DX: $O/create_movie_AVS_DX.o $(LIBSPECFEM)
- at COND_PYRE_FALSE@ ${FCCOMPILE_CHECK} -o xcreate_movie_AVS_DX $O/create_movie_AVS_DX.o $(LIBSPECFEM)
+ at COND_PYRE_FALSE@xcreate_movie_shakemap_AVS_DX_GMT: $O/create_movie_shakemap_AVS_DX_GMT.o $(LIBSPECFEM)
+ at COND_PYRE_FALSE@ ${FCCOMPILE_CHECK} -o xcreate_movie_shakemap_AVS_DX_GMT $O/create_movie_shakemap_AVS_DX_GMT.o $(LIBSPECFEM)
xcombine_AVS_DX: $O/combine_AVS_DX.o $(LIBSPECFEM)
${FCCOMPILE_CHECK} -o xcombine_AVS_DX $O/combine_AVS_DX.o $(LIBSPECFEM)
@@ -248,11 +246,8 @@ xcombine_vol_data: $O/combine_vol_data.o $O/write_c_binary.o
xcombine_surf_data: $O/combine_surf_data.o $O/write_c_binary.o
${FCCOMPILE_CHECK} -o xcombine_surf_data $O/combine_surf_data.o $O/write_c_binary.o
-xcreate_movie_GMT: $O/create_movie_GMT.o $(LIBSPECFEM)
- ${FCCOMPILE_CHECK} -o xcreate_movie_GMT $O/create_movie_GMT.o $(LIBSPECFEM)
-
clean:
- rm -f $O/* *.o *.gnu OUTPUT_FILES/timestamp* OUTPUT_FILES/starttime*txt work.pc* xmeshfem3D xspecfem3D xcombine_AVS_DX xcheck_mesh_quality_AVS_DX xcheck_buffers_2D xconvolve_source_timefunction xcreate_header_file xcreate_movie_AVS_DX xcombine_vol_data xcombine_surf_data xcreate_movie_GMT
+ rm -f $O/* *.o *.gnu OUTPUT_FILES/timestamp* OUTPUT_FILES/starttime*txt work.pc* xmeshfem3D xspecfem3D xcombine_AVS_DX xcheck_mesh_quality_AVS_DX xcheck_buffers_2D xconvolve_source_timefunction xcreate_header_file xcreate_movie_shakemap_AVS_DX_GMT xcombine_vol_data xcombine_surf_data
###
### rule for the archive library
@@ -375,8 +370,8 @@ $O/get_MPI_cutplanes_eta.o: constants.h get_MPI_cutplanes_eta.f90
$O/get_cmt.o: constants.h get_cmt.f90
${FCCOMPILE_CHECK} -c -o $O/get_cmt.o get_cmt.f90
-$O/create_movie_AVS_DX.o: constants.h create_movie_AVS_DX.f90
- ${FCCOMPILE_CHECK} -c -o $O/create_movie_AVS_DX.o create_movie_AVS_DX.f90
+$O/create_movie_shakemap_AVS_DX_GMT.o: constants.h create_movie_shakemap_AVS_DX_GMT.f90
+ ${FCCOMPILE_CHECK} -c -o $O/create_movie_shakemap_AVS_DX_GMT.o create_movie_shakemap_AVS_DX_GMT.f90
$O/get_global.o: constants.h get_global.f90
${FCCOMPILE_CHECK} -c -o $O/get_global.o get_global.f90
@@ -486,9 +481,6 @@ $O/combine_vol_data.o: constants.h combine_vol_data.f90
$O/combine_surf_data.o: constants.h combine_surf_data.f90
${FCCOMPILE_CHECK} -c -o $O/combine_surf_data.o combine_surf_data.f90
-$O/create_movie_GMT.o: constants.h create_movie_GMT.f90
- ${FCCOMPILE_CHECK} -c -o $O/create_movie_GMT.o create_movie_GMT.f90
-
###
### rule for the header file
###
diff --git a/README_SPECFEM3D b/README_SPECFEM3D
index 36a27d7..ceb9eba 100644
--- a/README_SPECFEM3D
+++ b/README_SPECFEM3D
@@ -45,51 +45,127 @@ Min Chen
+++++++++ NOTES ON USING THE SPECFEM3D PACKAGE +++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-If you use this code for your own research, please send an email
-to Jeroen Tromp <jtromp AT caltech.edu> for information, and cite
-
- at article{KoLiTrSuStSh04,
-author={Dimitri Komatitsch and Qinya Liu and Jeroen Tromp and Peter S\"{u}ss
- and Christiane Stidham and John H. Shaw},
-year=2004,
-title={Simulations of Ground Motion in the {L}os {A}ngeles {B}asin
- based upon the Spectral-Element Method},
-journal={Bull. Seism. Soc. Am.},
-volume=94,
-pages={187-206}}
-
- at article{KoTr99,
- author={D. Komatitsch and J. Tromp},
- year=1999,
- title={Introduction to the spectral-element method for 3-{D} seismic wave propagation},
- journal={Geophys. J. Int.},
- volume=139,
- pages={806-822}}
-
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-REFERENCE FRAME - CONVENTION:
-
-The code uses the following convention for the reference frame:
-
- - X axis is East
- - Y axis is North
- - Z axis is up
-
-Note that this convention is different from both the Aki-Richards convention
-and the Harvard CMT convention.
-
-Let us recall that the Aki-Richards convention is:
-
- - X axis is North
- - Y axis is East
- - Z axis is down
-
-and that the Harvard CMT convention is:
-
- - X axis is South
- - Y axis is East
- - Z axis is up
+! If you use this code for your own research, please cite at least one article
+! written by the developers of the package, for instance:
+!
+! @ARTICLE{TrKoLi08,
+! author = {Jeroen Tromp and Dimitri Komatitsch and Qinya Liu},
+! title = {Spectral-Element and Adjoint Methods in Seismology},
+! journal = {Communications in Computational Physics},
+! year = {2008},
+! volume = {3},
+! pages = {1-32},
+! number = {1}}
+!
+! or
+!
+! @ARTICLE{LiPoKoTr04,
+! author = {Qinya Liu and Jascha Polet and Dimitri Komatitsch and Jeroen Tromp},
+! title = {Spectral-element moment tensor inversions for earthquakes in {S}outhern {C}alifornia},
+! journal={Bull. Seismol. Soc. Am.},
+! year = {2004},
+! volume = {94},
+! pages = {1748-1761},
+! number = {5},
+! doi = {10.1785/012004038}}
+!
+! @INCOLLECTION{ChKoViCaVaFe07,
+! author = {Emmanuel Chaljub and Dimitri Komatitsch and Jean-Pierre Vilotte and
+! Yann Capdeville and Bernard Valette and Gaetano Festa},
+! title = {Spectral Element Analysis in Seismology},
+! booktitle = {Advances in Wave Propagation in Heterogeneous Media},
+! publisher = {Elsevier - Academic Press},
+! year = {2007},
+! editor = {Ru-Shan Wu and Val\'erie Maupin},
+! volume = {48},
+! series = {Advances in Geophysics},
+! pages = {365-419}}
+!
+! @ARTICLE{KoVi98,
+! author={D. Komatitsch and J. P. Vilotte},
+! title={The spectral-element method: an efficient tool to simulate the seismic response of 2{D} and 3{D} geological structures},
+! journal={Bull. Seismol. Soc. Am.},
+! year=1998,
+! volume=88,
+! number=2,
+! pages={368-392}}
+!
+! @ARTICLE{KoTr99,
+! author={D. Komatitsch and J. Tromp},
+! year=1999,
+! title={Introduction to the spectral-element method for 3-{D} seismic wave propagation},
+! journal={Geophys. J. Int.},
+! volume=139,
+! number=3,
+! pages={806-822},
+! doi={10.1046/j.1365-246x.1999.00967.x}}
+!
+! @ARTICLE{KoLiTrSuStSh04,
+! author={Dimitri Komatitsch and Qinya Liu and Jeroen Tromp and Peter S\"{u}ss
+! and Christiane Stidham and John H. Shaw},
+! year=2004,
+! title={Simulations of Ground Motion in the {L}os {A}ngeles {B}asin
+! based upon the Spectral-Element Method},
+! journal={Bull. Seism. Soc. Am.},
+! volume=94,
+! number=1,
+! pages={187-206}}
+!
+! and/or another article from http://web.univ-pau.fr/~dkomati1/publications.html
+!
+!
+! If you use the kernel capabilities of the code, please cite at least one article
+! written by the developers of the package, for instance:
+!
+! @ARTICLE{TrKoLi08,
+! author = {Jeroen Tromp and Dimitri Komatitsch and Qinya Liu},
+! title = {Spectral-Element and Adjoint Methods in Seismology},
+! journal = {Communications in Computational Physics},
+! year = {2008},
+! volume = {3},
+! pages = {1-32},
+! number = {1}}
+!
+! or
+!
+! @ARTICLE{LiTr06,
+! author={Qinya Liu and Jeroen Tromp},
+! title={Finite-frequency kernels based on adjoint methods},
+! journal={Bull. Seismol. Soc. Am.},
+! year=2006,
+! volume=96,
+! number=6,
+! pages={2383-2397},
+! doi={10.1785/0120060041}}
+!
+!
+! Reference frame - convention:
+! ----------------------------
+!
+! The code uses the following convention for the reference frame:
+!
+! - X axis is East
+! - Y axis is North
+! - Z axis is up
+!
+! Note that this convention is different from both the Aki-Richards convention
+! and the Harvard CMT convention.
+!
+! Let us recall that the Aki-Richards convention is:
+!
+! - X axis is North
+! - Y axis is East
+! - Z axis is down
+!
+! and that the Harvard CMT convention is:
+!
+! - X axis is South
+! - Y axis is East
+! - Z axis is up
+!
+! To report bugs or suggest improvements to the code, please send an email
+! to Jeroen Tromp <jtromp AT princeton.edu> and/or use our online
+! bug tracking system at http://www.geodynamics.org/roundup .
PARAMETERS TO CHANGE ON DIFFERENT MACHINES:
diff --git a/Specfem3D/Mesher.py b/Specfem3D/Mesher.py
deleted file mode 100644
index 35a1a5e..0000000
--- a/Specfem3D/Mesher.py
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/usr/bin/env python
-
-
-from pyre.components import Component
-from pyre.units.length import km
-
-
-class Mesher(Component):
-
-
- # name by which the user refers to this component
- name = "mesher"
-
-
- #
- #--- parameters
- #
-
- import pyre.inventory as pyre
-
- SAVE_MESH_FILES = pyre.bool("save-files")
- SUPPRESS_UTM_PROJECTION = pyre.bool("suppress-utm-projection")
- dry = pyre.bool("dry")
-
- depth_block = pyre.dimensional('depth-block', default=0.0*km)
-
- LATITUDE_MAX = pyre.float("latitude-max")
- LATITUDE_MIN = pyre.float("latitude-min")
- LONGITUDE_MAX = pyre.float("longitude-max")
- LONGITUDE_MIN = pyre.float("longitude-min")
-
- NEX_ETA = pyre.int("nex-eta", default=64)
- NEX_XI = pyre.int("nex-xi", default=64)
- NPROC_ETA = pyre.int("nproc-eta", validator=pyre.greaterEqual(1), default=1)
- NPROC_XI = pyre.int("nproc-xi", validator=pyre.greaterEqual(1), default=1)
- UTM_PROJECTION_ZONE = pyre.int("utm-projection-zone")
-
-
- #
- #--- configuration
- #
-
- def _configure(self):
- Component._configure(self)
-
- # convert to kilometers
- self.DEPTH_BLOCK_KM = self.depth_block / km
-
- return
-
-
- def nproc(self):
- """Return the total number of processors needed."""
- return self.NPROC_XI * self.NPROC_ETA
-
-
- #
- #--- execution
- #
-
- def execute(self, script):
- """Execute the mesher."""
- from PyxMeshfem import meshfem3D
- if self.dry:
- print "execute", meshfem3D
- else:
- meshfem3D(script) # call into Fortran
- return
-
-
-# end of file
diff --git a/Specfem3D/Model.py b/Specfem3D/Model.py
deleted file mode 100644
index 5dd0ea7..0000000
--- a/Specfem3D/Model.py
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env python
-
-
-#
-# base class for all models
-#
-
-
-from pyre.components import Component
-
-
-class Model(Component):
-
- import pyre.inventory as pyre
-
- # parameters common to all models
- ATTENUATION = pyre.bool("attenuation")
- OCEANS = pyre.bool("oceans")
- TOPOGRAPHY = pyre.bool("topography")
- USE_OLSEN_ATTENUATION = pyre.bool("use-olsen-attenuation")
-
-
-# end of file
diff --git a/Specfem3D/Solver.py b/Specfem3D/Solver.py
deleted file mode 100644
index 5fbbe0e..0000000
--- a/Specfem3D/Solver.py
+++ /dev/null
@@ -1,291 +0,0 @@
-#!/usr/bin/env python
-
-
-from pyre.components import Component
-from pyre.units.time import second
-
-
-class Solver(Component):
-
-
- # name by which the user refers to this component
- name = "solver"
-
-
- #
- #--- parameters
- #
-
- import pyre.inventory as pyre
- #from CMTSolution import cmtValidator
-
- ABSORBING_CONDITIONS = pyre.bool("absorbing-conditions")
- CREATE_SHAKEMAP = pyre.bool("create-shakemap")
- MOVIE_SURFACE = pyre.bool("movie-surface")
- MOVIE_VOLUME = pyre.bool("movie-volume")
- PRINT_SOURCE_TIME_FUNCTION = pyre.bool("print-source-time-function")
- SAVE_DISPLACEMENT = pyre.bool("save-displacement")
- SAVE_FORWARD = pyre.bool("save-forward")
- USE_HIGHRES_FOR_MOVIES = pyre.bool("use-highres-for-movies")
- dry = pyre.bool("dry")
-
- record_length = pyre.dimensional("record-length", default=0.0*second)
-
- HDUR_MOVIE = pyre.float("hdur-movie")
-
- cmtSolution = pyre.inputFile("cmt-solution", default="DATA/CMTSOLUTION")
- stations = pyre.inputFile("stations", default="DATA/STATIONS")
- STATIONS_FILTERED = pyre.str("stations-filtered", default="DATA/STATIONS_FILTERED")
-
- NTSTEP_BETWEEN_FRAMES = pyre.int("ntstep-between-frames")
- NTSTEP_BETWEEN_OUTPUT_INFO = pyre.int("ntstep-between-output-info")
- NTSTEP_BETWEEN_OUTPUT_SEISMOS = pyre.int("ntstep-between-output-seismos")
-
- simulation_type = pyre.str("simulation-type", validator=pyre.choice(['forward', 'adjoint', 'both']), default='forward')
-
-
- #
- #--- configuration
- #
-
- def _configure(self):
- Component._configure(self)
-
- # convert to seconds
- self.RECORD_LENGTH_IN_SECONDS = self.record_length / second
-
- st = { 'forward':1, 'adjoint':2, 'both':3 }
- self.SIMULATION_TYPE = st[self.simulation_type]
-
- return
-
-
- #
- #--- final initialization
- #
-
- def _init(self):
- Component._init(self)
-
- from os.path import abspath, join
- self.CMTSOLUTION = abspath(self.cmtSolution.name)
- self.STATIONS = abspath(self.stations.name)
-
-
- def setOutputDirectories(self, LOCAL_PATH, OUTPUT_FILES):
- from os.path import abspath, join
-
- self.LOCAL_PATH = LOCAL_PATH
- self.OUTPUT_FILES = OUTPUT_FILES
-
- # always written by the mesher
- self.HEADER_FILE = abspath(join(OUTPUT_FILES, 'values_from_mesher.h'))
-
-
- #
- #--- building
- #
-
- def build(self, script, srcdir):
- """Build the solver."""
-
- import os, os.path, sys
- from os.path import abspath, join
-
- outputDir = abspath(script.outputDir)
- pyspecfem3D = abspath(script.mpiExecutable)
-
- wd = os.getcwd()
- print "cd", srcdir
- os.chdir(srcdir)
-
- # create the include file for the solver
- self.createheader(script)
-
- # now finally build the solver
- argv = ['make', 'OUTPUT_DIR=' + outputDir, pyspecfem3D]
- print ' '.join(argv)
- status = os.spawnvp(os.P_WAIT, argv[0], argv)
- if status != 0:
- sys.exit("%s: %s: exit %d" % (sys.argv[0], argv[0], status))
-
- print "cd", wd
- os.chdir(wd)
-
- return
-
-
- def createheader(self, script):
- """Create the include file for the solver."""
-
- import os, shutil, sys
- from os.path import exists
- from PyxParameters import create_header_file
-
- # This path is hardwired into the Fortran source.
- oldHeader = 'OUTPUT_FILES/values_from_mesher.h'
-
- # If the header doesn't exist, simply create it.
- if not exists(oldHeader):
- self.HEADER_FILE = oldHeader
- create_header_file(script) # call into Fortran
- return
-
- # First generate the header into a temporary file.
- from tempfile import mktemp
- newHeader = mktemp()
- self.HEADER_FILE = newHeader
- create_header_file(script) # call into Fortran
-
- # Did the header file change?
- argv = ['diff', oldHeader, newHeader]
- print ' '.join(argv)
- status = os.spawnvp(os.P_WAIT, argv[0], argv)
- if status == 0:
- # Nope! Nothing to do here.
- os.remove(newHeader)
- return
- if status != 1:
- # diff countered a problem
- os.remove(newHeader)
- sys.exit("%s: %s: exit %d" % (sys.argv[0], argv[0], status))
-
- # Replace the old header with the new one.
- print "mv", newHeader, oldHeader
- shutil.move(newHeader, oldHeader)
-
- return
-
-
- #
- #--- execution
- #
-
- def execute(self, script):
- """Execute the solver."""
- from PyxSpecfem import specfem3D
- if self.dry:
- print "execute", specfem3D
- else:
- specfem3D(script) # call into Fortran
- return
-
-
- #
- #--- clean-up
- #
-
- def collectSeismograms(self):
- """collect seismograms"""
-
- if self.dry:
- return
-
- import os, shutil, tarfile
- from os.path import basename, join
- from glob import glob
- from cig.seismo.sac import asc2sac
- from mpi import MPI_Comm_rank, MPI_COMM_WORLD
-
- rank = MPI_Comm_rank(MPI_COMM_WORLD)
- scratchSeismogramArchive = join(self.LOCAL_PATH, "seismograms-%d.tar.gz" % rank)
- archive = self.scratchSeismogramArchive
-
- files = []
- for sem in glob(join(self.LOCAL_PATH, "*.sem")):
- files.append(sem)
- sac = sem + ".sac"
- asc2sac(sem, sac)
- files.append(sac)
- for semd in glob(join(self.LOCAL_PATH, "*.semd")):
- files.append(semd)
- sac = semd + ".sac"
- asc2sac(semd, sac)
- files.append(sac)
- if len(files) == 0:
- # no seismograms on this node
- archive.close()
- os.remove(archive.name)
- return
-
- # A compressed tar file is between 10-15% of the size of the
- # raw data files. By taring and compressing it now -- in
- # parallel, on local filesystems -- we sharply reduce the
- # amount of data we have to shovel over the network.
-
- tgz = tarfile.open(archive.name, "w:gz", archive)
- for name in files:
- arcname = basename(name)
- tgz.add(name, arcname)
- tgz.close()
- archive.close()
-
- # Copy the archive to the shared filesystem.
-
- src = archive.name
- dst = join(self.OUTPUT_FILES, basename(src))
- shutil.copyfile(src, dst)
-
- return
-
-
- def collectOutputFiles(self):
- """collect output files"""
-
- if self.dry:
- return
-
- import os, tarfile
- from os.path import basename, join
-
- seismogramArchive = join(self.OUTPUT_FILES, "seismograms.tar.gz")
- archiveOut = open(seismogramArchive, "w")
- skipList = ['pyspecfem3D', basename(archiveOut.name)]
-
- # Archive output files -- including the intermediate seismogram
- # archives delivered from the compute nodes.
-
- filesIn = []
- archivesIn = []
- for name in os.listdir(self.OUTPUT_FILES):
- if name in skipList:
- continue
- pathname = join(self.OUTPUT_FILES, name)
- if name.startswith("seismograms-"):
- archivesIn.append(pathname)
- else:
- filesIn.append((pathname, name))
- if len(filesIn) == 0:
- self._warning.log("No output files!")
- archiveOut.close()
- os.remove(archiveOut.name)
- return
-
- tgzOut = tarfile.open(archiveOut.name, "w:gz", archiveOut)
-
- # Rearchive seismograms.
-
- for archiveIn in archivesIn:
- tgzIn = tarfile.open(archiveIn, "r:gz")
- for member in tgzIn.getmembers():
- seismogram = tgzIn.extractfile(member)
- tgzOut.addfile(member, seismogram)
- tgzIn.close()
-
- # Archive other output files.
-
- for name, arcname in filesIn:
- tgzOut.add(name, arcname)
-
- tgzOut.close()
- archiveOut.close()
-
- # Delete the intermediate seismogram archives.
-
- for archiveIn in archivesIn:
- os.remove(archiveIn)
-
- return
-
-
-# end of file
diff --git a/Specfem3D/Specfem.py b/Specfem3D/Specfem.py
deleted file mode 100644
index 0326941..0000000
--- a/Specfem3D/Specfem.py
+++ /dev/null
@@ -1,147 +0,0 @@
-#!/usr/bin/env python
-
-
-try:
- import _mpi
-except ImportError:
- from pyre.applications import Script as Base
-else:
- from mpi import Application as Base
-
-
-class Specfem(Base):
-
-
- # name by which the user refers to this application
- name = "Specfem3DBasin"
-
-
- #
- #--- inventory
- #
-
- import pyre.inventory as pyre
-
- from Mesher import Mesher
- from Solver import Solver
-
- outputDir = pyre.str("output-dir", default="OUTPUT_FILES")
- scratchDir = pyre.str("scratch-dir", default="/scratch")
-
- model = pyre.facility("model", default="Harvard_LA")
- mesher = pyre.facility("mesher", factory=Mesher)
- solver = pyre.facility("solver", factory=Solver)
-
- command = pyre.str("command", validator=pyre.choice(['mesh', 'solve', 'go']), default="go")
-
-
- #
- #--- configuration
- #
-
- def _configure(self):
- super(Specfem, self)._configure()
-
- from os import makedirs
- from os.path import isdir
- if not isdir(self.outputDir):
- makedirs(self.outputDir)
-
- # declare the interpreter to be used on the compute nodes
- from os.path import join
- self.mpiExecutable = join(self.outputDir, "pyspecfem3D") # includes solver
-
- # compute the total number of processors needed
- self.nodes = self.mesher.nproc()
-
- return
-
-
- #
- #--- final initialization
- #
-
- def _init(self):
- super(Specfem, self)._init()
- self.OUTPUT_FILES = self.outputDir
- self.LOCAL_PATH = self.scratchDir
- self.solver.setOutputDirectories(
- LOCAL_PATH = self.LOCAL_PATH,
- OUTPUT_FILES = self.OUTPUT_FILES
- )
-
-
- #
- #--- .odb files
- #
-
-
- def _getPrivateDepositoryLocations(self):
- from os.path import dirname, isdir, join
- models = join(dirname(__file__), 'models')
- assert isdir(models)
- return [models]
-
-
- #
- #--- executed on the login node in response to the user's command
- #
-
- def onLoginNode(self, *args, **kwds):
-
- # build the solver
- import __main__
- from os.path import dirname
- srcdir = dirname(__main__.__file__)
- self.solver.build(self, srcdir)
-
- # schedule the job (bsub)
- super(Specfem, self).onLoginNode(*args, **kwds)
-
- return
-
-
- #
- #--- executed when the batch job is scheduled
- #
-
- def onLauncherNode(self, *args, **kwds):
- super(Specfem, self).onLauncherNode(*args, **kwds) # mpirun
- self.solver.collectOutputFiles()
- return
-
-
- #
- #--- executed in parallel on the compute nodes
- #
-
- def onComputeNodes(self, *args, **kwds):
-
- # execute mesher and/or solver
-
- if self.command == "mesh" or self.command == "go":
- self.mesher.execute(self)
-
- if self.command == "solve" or self.command == "go":
- self.solver.execute(self)
- self.solver.collectSeismograms()
-
- return
-
-
- #
- #--- executed by the serial version of the code
- #
-
- def main(self, *args, **kwds):
- self.onComputeNodes(self, *args, **kwds)
-
-
-# entry points
-
-def main(*args, **kwds):
- script = Specfem()
- script.run(*args, **kwds)
-
-
-# end of file
diff --git a/Specfem3D/__init__.py b/Specfem3D/__init__.py
deleted file mode 100644
index 61e84c1..0000000
--- a/Specfem3D/__init__.py
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env python
-
-
-from Specfem3DBasin.Model import Model
-
-
-# end of file
diff --git a/Specfem3D/models/Harvard_LA.odb b/Specfem3D/models/Harvard_LA.odb
deleted file mode 100644
index 67360cf..0000000
--- a/Specfem3D/models/Harvard_LA.odb
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/usr/bin/env python
-
-
-from Specfem3DBasin import Model
-
-
-class ModelHarvardLA(Model):
-
-
- name = "Harvard_LA"
-
-
- import pyre.inventory as pyre
-
- basin_3d_high_res = pyre.inputFile("basin-3d-high-res",
- default="DATA/la_3D_block_harvard/la_3D_high_res/LA_HR_voxet_extracted.txt")
- basin_3d_medium_res = pyre.inputFile("basin-3d-medium-res",
- default="DATA/la_3D_block_harvard/la_3D_medium_res/LA_MR_voxet_extracted.txt")
- hauksson_regional = pyre.inputFile("hauksson-regional",
- default="DATA/hauksson_model/hauksson_final_grid_smooth.dat")
- moho_map = pyre.inputFile("moho-map",
- default="DATA/moho_map/moho_lupei_zhu.dat")
- basement_map = pyre.inputFile("basement-map",
- default="DATA/la_basement/reggridbase2_filtered_ascii.dat")
- salton_sea = pyre.inputFile("salton-sea",
- default="DATA/st_3D_block_harvard/regrid3_vel_p.bin")
-
-
- def _init(self):
- Model._init(self)
-
- from os.path import abspath
- self.BASIN_MODEL_3D_HIGH_RES_FILE = abspath(self.basin_3d_high_res.name)
- self.BASIN_MODEL_3D_MEDIUM_RES_FILE = abspath(self.basin_3d_medium_res.name)
- self.HAUKSSON_REGIONAL_MODEL_FILE = abspath(self.hauksson_regional.name)
- self.MOHO_MAP_FILE = abspath(self.moho_map.name)
- self.BASEMENT_MAP_FILE = abspath(self.basement_map.name)
- self.SALTON_SEA_MODEL_FILE = abspath(self.salton_sea.name)
-
-
-def model():
- return ModelHarvardLA()
-
-
-# end of file
diff --git a/Specfem3D/models/Lacq_gas_field_France.odb b/Specfem3D/models/Lacq_gas_field_France.odb
deleted file mode 100644
index 5460285..0000000
--- a/Specfem3D/models/Lacq_gas_field_France.odb
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env python
-
-
-from Specfem3DBasin import Model
-
-
-def model():
- return Model("Lacq_gas_field_France")
-
-
-# end of file
diff --git a/Specfem3D/models/Min_Chen_anisotropy.odb b/Specfem3D/models/Min_Chen_anisotropy.odb
deleted file mode 100644
index 0454295..0000000
--- a/Specfem3D/models/Min_Chen_anisotropy.odb
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env python
-
-
-from Specfem3DBasin import Model
-
-
-def model():
- return Model("Min_Chen_anisotropy")
-
-
-# end of file
diff --git a/Specfem3D/models/SoCal.odb b/Specfem3D/models/SoCal.odb
deleted file mode 100644
index 69fc53f..0000000
--- a/Specfem3D/models/SoCal.odb
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env python
-
-
-from Specfem3DBasin import Model
-
-
-def model():
- return Model("SoCal")
-
-
-# end of file
diff --git a/Specfem3D/models/__vault__.odb b/Specfem3D/models/__vault__.odb
deleted file mode 100644
index e69de29..0000000
diff --git a/combine_vol_data.f90 b/combine_vol_data.f90
index 00f75fb..c6a2921 100644
--- a/combine_vol_data.f90
+++ b/combine_vol_data.f90
@@ -39,15 +39,15 @@
integer i,j,k,ispec, ios, it
integer iproc, proc1, proc2, num_node, node_list(300), nspec, nglob
integer np, ne, npp, nee, npoint, nelement, njunk, njunk2, n1, n2, n3, n4, n5, n6, n7, n8
- integer ibool(NGLLX,NGLLY,NGLLZ,NSPEC_AB)
+ integer ibool(NGLLX,NGLLY,NGLLZ,NSPEC_AB_VAL)
integer numpoin, iglob1, iglob2, iglob3, iglob4, iglob5, iglob6, iglob7, iglob8, iglob
- logical mask_ibool(NGLOB_AB)
- real(kind=CUSTOM_REAL) data(NGLLX,NGLLY,NGLLZ,NSPEC_AB)
- real(kind=CUSTOM_REAL),dimension(NGLOB_AB) :: xstore, ystore, zstore
- real x, y, z, dat(NGLLX,NGLLY,NGLLZ,NSPEC_AB)
- character(len=150) :: sline, arg(5), filename, indir, outdir, prname
+ logical mask_ibool(NGLOB_AB_VAL)
+ real(kind=CUSTOM_REAL) data(NGLLX,NGLLY,NGLLZ,NSPEC_AB_VAL)
+ real(kind=CUSTOM_REAL),dimension(NGLOB_AB_VAL) :: xstore, ystore, zstore
+ real x, y, z, dat(NGLLX,NGLLY,NGLLZ,NSPEC_AB_VAL)
+ character(len=150) :: sline, arg(6), filename, indir, outdir, prname
character(len=150) :: mesh_file, local_point_file, local_element_file, local_file, local_data_file, local_ibool_file
- integer :: num_ibool(NGLOB_AB)
+ integer :: num_ibool(NGLOB_AB_VAL)
logical :: HIGH_RESOLUTION_MESH
integer :: ires
@@ -56,7 +56,7 @@
print *
do i = 1, 6
- call getarg(i,arg(i))
+ call get_command_argument(i,arg(i))
if (i < 6 .and. trim(arg(i)) == '') then
print *, 'Usage: xcombine_data start_slice end_slice filename input_dir output_dir high/low-resolution'
print *, ' or xcombine_data slice_list filename input_dir output_dir high/low-resolution'
@@ -117,8 +117,8 @@
mesh_file = trim(outdir) // '/' // trim(filename)//'.mesh'
call open_file(trim(mesh_file)//char(0))
- nspec = NSPEC_AB
- nglob = NGLOB_AB
+ nspec = NSPEC_AB_VAL
+ nglob = NGLOB_AB_VAL
np = 0
diff --git a/flags.guess b/flags.guess
index b6a6b1d..3d841f7 100644
--- a/flags.guess
+++ b/flags.guess
@@ -26,13 +26,13 @@ case $FC in
# Intel ifort Fortran90 for Linux
#
if test x"$FLAGS_CHECK" = x; then
- FLAGS_CHECK="-O3 -vec-report0 -e95 -std95 -implicitnone -warn truncated_source -warn argument_checking -warn unused -warn declarations -warn alignments -warn ignore_loc -warn usage -check nobounds -align sequence -assume byterecl -fpe0 -ftz -traceback -ftrapuv" # -mcmodel=medium
+ FLAGS_CHECK="-O3 -vec-report0 -e95 -std03 -implicitnone -warn truncated_source -warn argument_checking -warn unused -warn declarations -warn alignments -warn ignore_loc -warn usage -check nobounds -align sequence -assume byterecl -fpe0 -ftz -traceback -ftrapuv" # -mcmodel=medium
fi
if test x"$FLAGS_NO_CHECK" = x; then
# standard options (leave option -ftz, which is *critical* for performance)
# add -Winline to get information about routines that are inlined
# add -vec-report3 to get information about loops that are vectorized or not
- FLAGS_NO_CHECK="-O3 -xP -vec-report0 -e95 -std95 -implicitnone -warn truncated_source -warn argument_checking -warn unused -warn declarations -warn alignments -warn ignore_loc -warn usage -check nobounds -align sequence -assume byterecl -fpe3 -ftz" # -mcmodel=medium
+ FLAGS_NO_CHECK="-O3 -xP -vec-report0 -e95 -std03 -implicitnone -warn truncated_source -warn argument_checking -warn unused -warn declarations -warn alignments -warn ignore_loc -warn usage -check nobounds -align sequence -assume byterecl -fpe3 -ftz" # -mcmodel=medium
fi
#MPI_LIBS = -Vaxlib
;;
@@ -41,7 +41,7 @@ case $FC in
# GNU gfortran
#
if test x"$FLAGS_NO_CHECK" = x; then
- FLAGS_NO_CHECK="-std=f95 -fimplicit-none -frange-check -O3 -fmax-errors=10 -pedantic -pedantic-errors -Waliasing -Wampersand -Wcharacter-truncation -Wline-truncation -Wsurprising -Wno-tabs -Wunderflow -fno-trapping-math" # -mcmodel=medium
+ FLAGS_NO_CHECK="-std=f2003 -fimplicit-none -frange-check -O3 -fmax-errors=10 -pedantic -pedantic-errors -Waliasing -Wampersand -Wcharacter-truncation -Wline-truncation -Wsurprising -Wno-tabs -Wunderflow -fno-trapping-math" # -mcmodel=medium
# older gfortran syntax
# FLAGS_NO_CHECK="-std=f95 -fimplicit-none -frange-check -O3 -Wunused-labels -Waliasing -Wampersand -Wsurprising -Wline-truncation -Wunderflow -fno-trapping-math" # -mcmodel=medium
fi
diff --git a/locate_source.f90 b/locate_source.f90
index 45fc5d1..19ae5c6 100644
--- a/locate_source.f90
+++ b/locate_source.f90
@@ -373,7 +373,7 @@
ispec_selected_source_all(:,:) = -1
- call gather_all_i(ispec_selected_source(ns:ne),ng,ispec_selected_source_all(1:ng,:),ng)
+ call gather_all_i(ispec_selected_source(ns:ne),ng,ispec_selected_source_all(1:ng,:),ng,NPROC)
call gather_all_dp(xi_source(ns:ne),ng,xi_source_all(1:ng,:),ng,NPROC)
call gather_all_dp(eta_source(ns:ne),ng,eta_source_all(1:ng,:),ng,NPROC)
diff --git a/meshfem3D.f90 b/meshfem3D.f90
index 505a3ef..ae4ca61 100644
--- a/meshfem3D.f90
+++ b/meshfem3D.f90
@@ -39,7 +39,60 @@
! !
!=============================================================================!
!
-! If you use this code for your own research, please cite some of these articles:
+! If you use this code for your own research, please cite at least one article
+! written by the developers of the package, for instance:
+!
+! @ARTICLE{TrKoLi08,
+! author = {Jeroen Tromp and Dimitri Komatitsch and Qinya Liu},
+! title = {Spectral-Element and Adjoint Methods in Seismology},
+! journal = {Communications in Computational Physics},
+! year = {2008},
+! volume = {3},
+! pages = {1-32},
+! number = {1}}
+!
+! or
+!
+! @ARTICLE{LiPoKoTr04,
+! author = {Qinya Liu and Jascha Polet and Dimitri Komatitsch and Jeroen Tromp},
+! title = {Spectral-element moment tensor inversions for earthquakes in {S}outhern {C}alifornia},
+! journal={Bull. Seismol. Soc. Am.},
+! year = {2004},
+! volume = {94},
+! pages = {1748-1761},
+! number = {5},
+! doi = {10.1785/012004038}}
+!
+! @INCOLLECTION{ChKoViCaVaFe07,
+! author = {Emmanuel Chaljub and Dimitri Komatitsch and Jean-Pierre Vilotte and
+! Yann Capdeville and Bernard Valette and Gaetano Festa},
+! title = {Spectral Element Analysis in Seismology},
+! booktitle = {Advances in Wave Propagation in Heterogeneous Media},
+! publisher = {Elsevier - Academic Press},
+! year = {2007},
+! editor = {Ru-Shan Wu and Val\'erie Maupin},
+! volume = {48},
+! series = {Advances in Geophysics},
+! pages = {365-419}}
+!
+! @ARTICLE{KoVi98,
+! author={D. Komatitsch and J. P. Vilotte},
+! title={The spectral-element method: an efficient tool to simulate the seismic response of 2{D} and 3{D} geological structures},
+! journal={Bull. Seismol. Soc. Am.},
+! year=1998,
+! volume=88,
+! number=2,
+! pages={368-392}}
+!
+! @ARTICLE{KoTr99,
+! author={D. Komatitsch and J. Tromp},
+! year=1999,
+! title={Introduction to the spectral-element method for 3-{D} seismic wave propagation},
+! journal={Geophys. J. Int.},
+! volume=139,
+! number=3,
+! pages={806-822},
+! doi={10.1046/j.1365-246x.1999.00967.x}}
!
! @ARTICLE{KoLiTrSuStSh04,
! author={Dimitri Komatitsch and Qinya Liu and Jeroen Tromp and Peter S\"{u}ss
@@ -52,26 +105,22 @@
! number=1,
! pages={187-206}}
!
-! @ARTICLE{KoTr99,
-! author={D. Komatitsch and J. Tromp},
-! year=1999,
-! title={Introduction to the spectral-element method for 3-{D} seismic wave propagation},
-! journal={Geophys. J. Int.},
-! volume=139,
-! number=3,
-! pages={806-822},
-! doi={10.1046/j.1365-246x.1999.00967.x}}
+! and/or another article from http://web.univ-pau.fr/~dkomati1/publications.html
!
-! @ARTICLE{KoVi98,
-! author={D. Komatitsch and J. P. Vilotte},
-! title={The spectral-element method: an efficient tool to simulate the seismic response of 2{D} and 3{D} geological structures},
-! journal={Bull. Seismol. Soc. Am.},
-! year=1998,
-! volume=88,
-! number=2,
-! pages={368-392}}
!
-! If you use the kernel capabilities of the code, please cite
+! If you use the kernel capabilities of the code, please cite at least one article
+! written by the developers of the package, for instance:
+!
+! @ARTICLE{TrKoLi08,
+! author = {Jeroen Tromp and Dimitri Komatitsch and Qinya Liu},
+! title = {Spectral-Element and Adjoint Methods in Seismology},
+! journal = {Communications in Computational Physics},
+! year = {2008},
+! volume = {3},
+! pages = {1-32},
+! number = {1}}
+!
+! or
!
! @ARTICLE{LiTr06,
! author={Qinya Liu and Jeroen Tromp},
@@ -83,6 +132,7 @@
! pages={2383-2397},
! doi={10.1785/0120060041}}
!
+!
! Reference frame - convention:
! ----------------------------
!
@@ -108,7 +158,7 @@
! - Z axis is up
!
! To report bugs or suggest improvements to the code, please send an email
-! to Jeroen Tromp <jtromp AT caltech.edu> and/or use our online
+! to Jeroen Tromp <jtromp AT princeton.edu> and/or use our online
! bug tracking system at http://www.geodynamics.org/roundup .
!
! Evolution of the code:
@@ -116,15 +166,18 @@
!
! MPI v. 1.4 Dimitri Komatitsch, University of Pau, Qinya Liu and others, Caltech, September 2006:
! better adjoint and kernel calculations, faster and better I/Os
-! on very large systems, new Pyre version, many small improvements and bug fixes
+! on very large systems, many small improvements and bug fixes
+!
! MPI v. 1.3 Dimitri Komatitsch, University of Pau, and Qinya Liu, Caltech, July 2005:
! serial version, regular mesh, adjoint and kernel calculations, ParaView support
+!
! MPI v. 1.2 Min Chen and Dimitri Komatitsch, Caltech, July 2004:
! full anisotropy, volume movie
+!
! MPI v. 1.1 Dimitri Komatitsch, Caltech, October 2002: Zhu's Moho map, scaling
! of Vs with depth, Hauksson's regional model, attenuation, oceans, movies
-! MPI v. 1.0 Dimitri Komatitsch, Caltech, May 2002: first MPI version
-! based on global code
+!
+! MPI v. 1.0 Dimitri Komatitsch, Caltech, May 2002: first MPI version based on global code
! number of spectral elements in each block
integer nspec,npointot
diff --git a/specfem3D.f90 b/specfem3D.f90
index 3e0acdd..88fd52c 100644
--- a/specfem3D.f90
+++ b/specfem3D.f90
@@ -41,7 +41,60 @@
! !
!=============================================================================!
!
-! If you use this code for your own research, please cite some of these articles:
+! If you use this code for your own research, please cite at least one article
+! written by the developers of the package, for instance:
+!
+! @ARTICLE{TrKoLi08,
+! author = {Jeroen Tromp and Dimitri Komatitsch and Qinya Liu},
+! title = {Spectral-Element and Adjoint Methods in Seismology},
+! journal = {Communications in Computational Physics},
+! year = {2008},
+! volume = {3},
+! pages = {1-32},
+! number = {1}}
+!
+! or
+!
+! @ARTICLE{LiPoKoTr04,
+! author = {Qinya Liu and Jascha Polet and Dimitri Komatitsch and Jeroen Tromp},
+! title = {Spectral-element moment tensor inversions for earthquakes in {S}outhern {C}alifornia},
+! journal={Bull. Seismol. Soc. Am.},
+! year = {2004},
+! volume = {94},
+! pages = {1748-1761},
+! number = {5},
+! doi = {10.1785/012004038}}
+!
+! @INCOLLECTION{ChKoViCaVaFe07,
+! author = {Emmanuel Chaljub and Dimitri Komatitsch and Jean-Pierre Vilotte and
+! Yann Capdeville and Bernard Valette and Gaetano Festa},
+! title = {Spectral Element Analysis in Seismology},
+! booktitle = {Advances in Wave Propagation in Heterogeneous Media},
+! publisher = {Elsevier - Academic Press},
+! year = {2007},
+! editor = {Ru-Shan Wu and Val\'erie Maupin},
+! volume = {48},
+! series = {Advances in Geophysics},
+! pages = {365-419}}
+!
+! @ARTICLE{KoVi98,
+! author={D. Komatitsch and J. P. Vilotte},
+! title={The spectral-element method: an efficient tool to simulate the seismic response of 2{D} and 3{D} geological structures},
+! journal={Bull. Seismol. Soc. Am.},
+! year=1998,
+! volume=88,
+! number=2,
+! pages={368-392}}
+!
+! @ARTICLE{KoTr99,
+! author={D. Komatitsch and J. Tromp},
+! year=1999,
+! title={Introduction to the spectral-element method for 3-{D} seismic wave propagation},
+! journal={Geophys. J. Int.},
+! volume=139,
+! number=3,
+! pages={806-822},
+! doi={10.1046/j.1365-246x.1999.00967.x}}
!
! @ARTICLE{KoLiTrSuStSh04,
! author={Dimitri Komatitsch and Qinya Liu and Jeroen Tromp and Peter S\"{u}ss
@@ -54,26 +107,22 @@
! number=1,
! pages={187-206}}
!
-! @ARTICLE{KoTr99,
-! author={D. Komatitsch and J. Tromp},
-! year=1999,
-! title={Introduction to the spectral-element method for 3-{D} seismic wave propagation},
-! journal={Geophys. J. Int.},
-! volume=139,
-! number=3,
-! pages={806-822},
-! doi={10.1046/j.1365-246x.1999.00967.x}}
+! and/or another article from http://web.univ-pau.fr/~dkomati1/publications.html
!
-! @ARTICLE{KoVi98,
-! author={D. Komatitsch and J. P. Vilotte},
-! title={The spectral-element method: an efficient tool to simulate the seismic response of 2{D} and 3{D} geological structures},
-! journal={Bull. Seismol. Soc. Am.},
-! year=1998,
-! volume=88,
-! number=2,
-! pages={368-392}}
!
-! If you use the kernel capabilities of the code, please cite
+! If you use the kernel capabilities of the code, please cite at least one article
+! written by the developers of the package, for instance:
+!
+! @ARTICLE{TrKoLi08,
+! author = {Jeroen Tromp and Dimitri Komatitsch and Qinya Liu},
+! title = {Spectral-Element and Adjoint Methods in Seismology},
+! journal = {Communications in Computational Physics},
+! year = {2008},
+! volume = {3},
+! pages = {1-32},
+! number = {1}}
+!
+! or
!
! @ARTICLE{LiTr06,
! author={Qinya Liu and Jeroen Tromp},
@@ -85,6 +134,7 @@
! pages={2383-2397},
! doi={10.1785/0120060041}}
!
+!
! Reference frame - convention:
! ----------------------------
!
@@ -110,7 +160,7 @@
! - Z axis is up
!
! To report bugs or suggest improvements to the code, please send an email
-! to Jeroen Tromp <jtromp AT caltech.edu> and/or use our online
+! to Jeroen Tromp <jtromp AT princeton.edu> and/or use our online
! bug tracking system at http://www.geodynamics.org/roundup .
!
! Evolution of the code:
@@ -118,15 +168,18 @@
!
! MPI v. 1.4 Dimitri Komatitsch, University of Pau, Qinya Liu and others, Caltech, September 2006:
! better adjoint and kernel calculations, faster and better I/Os
-! on very large systems, new Pyre version, many small improvements and bug fixes
+! on very large systems, many small improvements and bug fixes
+!
! MPI v. 1.3 Dimitri Komatitsch, University of Pau, and Qinya Liu, Caltech, July 2005:
! serial version, regular mesh, adjoint and kernel calculations, ParaView support
+!
! MPI v. 1.2 Min Chen and Dimitri Komatitsch, Caltech, July 2004:
! full anisotropy, volume movie
+!
! MPI v. 1.1 Dimitri Komatitsch, Caltech, October 2002: Zhu's Moho map, scaling
! of Vs with depth, Hauksson's regional model, attenuation, oceans, movies
-! MPI v. 1.0 Dimitri Komatitsch, Caltech, May 2002: first MPI version
-! based on global code
+!
+! MPI v. 1.0 Dimitri Komatitsch, Caltech, May 2002: first MPI version based on global code
! memory variables and standard linear solids for attenuation
double precision, dimension(N_SLS) :: tau_mu_dble,tau_sigma_dble,beta_dble
diff --git a/write_c_binary.c b/write_c_binary.c
index e4b129e..8e9eb06 100644
--- a/write_c_binary.c
+++ b/write_c_binary.c
@@ -29,6 +29,7 @@
#include "config.h"
#include <stdio.h>
+#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
More information about the CIG-COMMITS
mailing list