Commit 62b400af authored by tilman.metz's avatar tilman.metz

initial git commit

parents
This is part of DENISE
======================
Developerlist as well as a contactlist for questions and information:
Thomas Bohlen (Thomas.Bohlen[at]kit.edu)
Denise De Nil
Lisa Groos
Sven Heider
Daniel Köhn
Andre Kurzmann
Martin Schäfer
Laura Gaßner
This diff is collapsed.
INSTALL for DENISE
==================
A detailed installation instruction is provided in the chapter 5 of the
documentation (manual_DENISE.pdf).
Before compiling the main program DENISE you have to compile the required
additional libraries. In the DENISE/par directory simply use the shell script
./compileLIBRARIES.sh
which should install the following libraries:
lib cseife
lib stfinv
lib aff
lib fourier
To compile the program DENISE you can use the shell script located in the
Directory DENISE/par:
./compileDENISE.sh
-------------------------------------------
There are several known dependencies:
- GCC
- OpenMPI
- fftw3
- fc2
- fort77
- stdc++
- math library (libm.a)
-------------------------------------------
Systems/environments the code was already successfully build on:
- Linux 2.6.31.14-0.6-desktop x86_64
-------------------------------------------
This diff is collapsed.
README for DENISE
=================
DENISE (subwavelength DEtail resolving Nonlinear Iterative SEismic inversion)
is a 2D elastic full waveform inversion code. The inversion problem is solved
by a conjugate gradient method. The gradients are computed in the time domain
with the adjoint method. The forward modeling is also done in the time domain
with a finite difference code on a standard staggered grid.
System requirements:
For a typical example of an inversion of shallow seismic surface waves with
- a model size of 400 grid points in lateral and 75 grid points in vertical
direction,
- 14000 time steps per forward modeling,
- viscoelastic forward modeling with three relaxation mechanisms and
- 8 shots
we need
- at least 4 CPUs
- 720 MB memory
- around 4.6 MB storage capacities per iteration (in total around 800 MB for 173
iteration steps in this example)
Installation instructions can be found in the file INSTALL.
A detailed documentation is provided in manual_DENISE.pdf.
To get started with this code try to run the toy example that is described in
chapter 9 in the documentation (manual_DENISE.pdf).
If you use this code for your own research please cite at least one article
written by the developers of the package, e.g.
D. Köhn. Time domain 2D elastic full waveform tomography. PhD Thesis, Kiel
University, 2011.
Contact:
see file DEVELOPERS
# What is DENISE?
DENISE (subwavelength DEtail resolving Nonlinear Iterative SEismic inversion) is a 2D elastic full waveform inversion code.
The inversion problem is solved by a conjugate gradient method and the gradients are computed in the time domain with the adjoint method.
The forward modeling is done by a time domain finite difference scheme. The manual is included in the download archive or can be downloaded [here](doc/manual_DENISE.pdf)
# Conditions for the Use of the Software
DENISE 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, version 2.0 of the License only.
DENISE 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 will receive a copy of the GNU General Public License along with the SOFI2D
download package. See file [COPYING](/COPYING) and/or [online](http://www.gnu.org/licenses/gpl-2.0.html)
# Download and Newsletter
You can Download the [latest Release](https://git.scc.kit.edu/GPIAG-Software/DENISE/tree/Release) or the current [Beta-Version](https://git.scc.kit.edu/GPIAG-Software/DENISE/tree/master)
To receive news and updates please [register](https://www.gpi.kit.edu/Software.php) on the email list denise@lists.kit.edu.
Please use this list also to ask questions on using the software or to report problems or bugs.
\ No newline at end of file
# This is a file for environment variables used in Makefiles in aff fourier stfinv
LOCINCLUDEDIR=../header
LOCLIBDIR=../bin
LOCBINDIR=../bin
TF_WWWBASEDIR=$HOME/public_html/txt/cxx
TF_BROWSER=firefox
FC=/usr/bin/g77-3.3
this is <COPYING>
============================================================================
libaff
------
$Id: COPYING 4964 2013-02-01 13:27:42Z lrehor $
============================================================================
Copyright (C) 2002 by Thomas Forbriger and Wolfgang Friederich
Copyright (C) 2013 by Thomas Forbriger
The source code and other files in this directory are part of libaff. libaff
is a template library. Part of the code compiles to libaff.a
libaff 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 St, Fifth Floor, Boston, MA 02110-1301 USA
----- END OF COPYING -----
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
this is <README>
============================================================================
aff
---
$Id$
============================================================================
This directory contains source code for the library aff. It was exportet
from TF_Software to DENISE. DENISE is hosted in the Trac-/svn-project
FWI_elastic (http://gpitrsvn.gpi.uni-karlsruhe.de/repos/FWI_elastic/DENISE).
See COPYING for copyright and license information.
Exports:
Each time this source code is exported to DENISE the current version is
tagged. The directory containing the tagged version is named by the day
of the export (yyyymmdd) and can be found in
http://gpitrsvn.gpi.uni-karlsruhe.de/repos/TFSoftware/export/aff.
19/10/2011 First export of the version tagged in 20111019
01/02/2013 Export of version tagged in 20130201
----- END OF README -----
/*! \file libaff/README.groups
* \brief groups in libaff
*
* ----------------------------------------------------------------------------
*
* $Id: README.groups 4964 2013-02-01 13:27:42Z lrehor $
*
* Copyright (c) 2011 by Thomas Forbriger (BFO)
*
* ----
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
* ----
*
* groups in code for C++ containers for numbers (libaff)
*
* REVISIONS and CHANGES
* - 15/05/2011 V1.0 Thomas Forbriger
*
\todo
Define more groups to cover the complete code
* ============================================================================
*/
/*======================================================================*/
/*! \brief Basic array module
\defgroup group_array Basic array module
By including aff/array.h you will get access to the following modules:
-# aff::Array is the main array interface (see example tests/arraytest.cc).
-# aff::Strided is the shape of a strided Fortran array and defines the
memory layout of aff::Array objects (see example
tests/shapetest.cc).
-# aff::SharedHeap is the representation used by aff::Array. It holds the
data in memory and provides an interface to it. This interface
may be passed separately from the array object (see also
\ref page_representation and example tests/reprtest.cc).
-# aff::SimpleRigidArray is a linear array with size fixed at compile-time.
There are several inline functions defined for operations with
this array class (see example tests/simplearraytest.cc).
-# aff::Exception is the exception base class used in the library.
-# aff::AllocException is the exception that indicated a failed memory
allocation(see also \ref group_error).
It additionally offers the following type definitions:
-# aff::Tsubscript is the type of subscripts to arrays (positive and
negative).
-# aff::Tsize is the type of size values (non-negative).
-# aff::Tdim is the type of the dimension index (small, non-negative).
Helpers are available in \ref group_array_extensions.
\todo
Place ingroup definitions in source code
\todo
Provide additional groups for Series and SimpleRigidArray
*/
/*----------------------------------------------------------------------*/
/*! \brief Extensions for array module
\defgroup group_array_extensions Extensions for array module
The library provides some additional modules. You need only include the
header file of those modules that you really want to use in addition to the
basic aff::Array functionality.
These additional modules are:
-# aff::Shaper presented in aff/shaper.h and used to pass Fortran layouts
to array constructors (see example tests/shapetest.cc).
-# aff::Series presented in aff/series.h which is used to interface linear
sequences of data (like time series or Fourier coefficients).
-# aff::Iterator presented in aff/iterator.h which is an iterator interface
to containers like aff::Array or aff::Series (see example
tests/helpertest.cc).
-# aff::subarray presented in aff/subarray.h to conveniently create
subarrays from aff::Array objects (see example
tests/helpertest.cc).
-# aff::slice presented in aff/slice.h to conveniently create
slices from aff::Array objects (see example
tests/helpertest.cc).
-# aff::FortranArray and its associate aff::util::FortranShape are presented
in aff/fortranshape.h. They calculate a Fortran 77 array
layout (leading dimensions) from a given AFF array (see
example tests/f77test.cc).
-# aff::dump and its associates, presented in aff/dump.h. They are used to
dump shape or contents of containers and are thus useful when
debugging your code. See also \ref group_helpers.
\sa \ref sec_design_namespaces
\sa \ref sec_naming_files
\todo
Place ingroup definitions in source code
*/
/*----------------------------------------------------------------------*/
/*! \brief Series container
\defgroup group_series Series container
\sa \ref group_series_extensions
\todo
Place ingroup definitions in source code
*/
/*----------------------------------------------------------------------*/
/*! \brief Extensions for series module
\defgroup group_series_extensions Extensions for series module
\todo
Place ingroup definitions in source code
*/
/*======================================================================*/
// ----- END OF README.groups -----
#
# SIK Auswahl fuer FF library
#
*.c *.h *.f ?akefile *.inc *.cc *.tcc
#
# when working with m4
*.m4 *.fpp
#
README*
#
# there are CVS working directories
CVS
#
# doxygen configuration
*.cfg
This diff is collapsed.
/*! \file arrayoperators.h
* \brief provide operators for array classes (prototypes)
*
* ----------------------------------------------------------------------------
*
* $Id: arrayoperators.h 3957 2011-05-16 14:46:43Z tforb $
* \author Thomas Forbriger
* \date 10/02/2004
*
* provide operators for array classes (prototypes)
*
* ----
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
* ----
*
* Copyright (c) 2004 by Thomas Forbriger (BFO Schiltach)
*
* REVISIONS and CHANGES
* - 10/02/2004 V1.0 Thomas Forbriger
*
* ============================================================================
*/
// include guard
#ifndef AFF_ARRAYOPERATORS_H_VERSION
#define AFF_ARRAYOPERATORS_H_VERSION \
"AFF_ARRAYOPERATORS_H V1.0 "
#define AFF_ARRAYOPERATORS_H_CVSID \
"$Id: arrayoperators.h 3957 2011-05-16 14:46:43Z tforb $"
#include<aff/array.h>
/*! \brief
* Array operators are defined through the macro mechanism in operators.h
* and \ref group_operators
* \ingroup group_array
*/
//@{
#define AFF_OPERATORS_CLASS aff::Array
#define AFF_OPERATORS_CONSTCLASS aff::ConstArray
#include <aff/lib/operators.h>
#undef AFF_OPERATORS_CLASS
#undef AFF_OPERATORS_CONSTCLASS
//@}
#endif // AFF_ARRAYOPERATORS_H_VERSION (includeguard)
/* ----- END OF arrayoperators.h ----- */
/*! \file converters.h
* \brief converters for AFF containers
*
* ----------------------------------------------------------------------------
*
* $Id: converters.h 3957 2011-05-16 14:46:43Z tforb $
* \author Thomas Forbriger
* \date 15/05/2011
*
* converters for AFF containers
*
* Copyright (c) 2011 by Thomas Forbriger (BFO Schiltach)
*
* ----
* 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 St, Fifth Floor, Boston, MA 02110-1301 USA
* ----
*
*
* REVISIONS and CHANGES
* - 15/05/2011 V1.0 Thomas Forbriger
*
* ============================================================================
*/
// include guard
#ifndef AFF_CONVERTERS_H_VERSION
#define AFF_CONVERTERS_H_VERSION \
"AFF_CONVERTERS_H V1.0 "
#define AFF_CONVERTERS_H_CVSID \
"$Id: converters.h 3957 2011-05-16 14:46:43Z tforb $"
#include<aff/array.h>
#include<aff/series.h>
#include<aff/lib/error.h>
namespace aff {
/*! \brief create a series container from an array container.
*
* \ingroup group_series_extensions group_array_extensions
*/
template<class T>
aff::Series<T> series_from_array(const aff::Array<T>& array)
{
typedef aff::Series<T> Tseries;
typedef aff::Array<T> Tarray;
typename Tarray::Tshape shape(array.shape());
AFF_assert(aff::util::is_dense_1D_array(shape),
"ERROR: array is not suitable to be converted to series");
typename Tseries::Trepresentation representation=array.representation();
typename Tseries::Tshape seriesshape(shape.first(0),
shape.last(0),
shape.first_offset());
Tseries retval(seriesshape, representation);
return retval;
} // aff::Series<T> series_from_array(const aff::Array<T>& array)
/*----------------------------------------------------------------------*/
/*! \brief create a series container from an array container.
*
* \ingroup group_series_extensions group_array_extensions
*/
template<class T>
aff::ConstSeries<T> series_from_array(const aff::ConstArray<T>& array)
{
typedef aff::ConstSeries<T> Tseries;
typedef aff::ConstArray<T> Tarray;
typename Tarray::Tshape shape(array.shape());
AFF_assert(aff::util::is_dense_1D_array(shape),
"ERROR: array is not suitable to be converted to series");
typename Tseries::Trepresentation representation=array.representation();
typename Tseries::Tshape seriesshape(shape.first(0),
shape.last(0),
shape.first_offset());
Tseries retval(seriesshape, representation);
return retval;
} // aff::ConstSeries<T> series_from_array(const aff::ConstArray<T>& array)
/*----------------------------------------------------------------------*/
/*! \brief create an array container from a series container.
*
* \ingroup group_series_extensions group_array_extensions
* \todo
* implement aff::Array<T> array_from_series(const aff::Series<T>& array)
*/
template<class T>
aff::Array<T> array_from_series(const aff::Series<T>& array)
{
AFF_abort("not yet implemented");
} // aff::Series<T> series_from_array(const aff::Array<T>& array)
/*----------------------------------------------------------------------*/
/*! \brief create an array container from a series container.
*
* \ingroup group_series_extensions group_array_extensions
* \todo
* implement aff::ConstArray<T> array_from_series(const aff::ConstSeries<T>& array)
*/
template<class T>
aff::ConstArray<T> array_from_series(const aff::ConstSeries<T>& array)
{
AFF_abort("not yet implemented");
} // aff::Series<T> series_from_array(const aff::Array<T>& array)
/*----------------------------------------------------------------------*/
/*! \brief create a series class from raw memory.
*