Skip to content

Commit

Permalink
release version: v0.4
Browse files Browse the repository at this point in the history
  • Loading branch information
mboxberg committed Apr 29, 2020
1 parent 37ee265 commit b056625
Show file tree
Hide file tree
Showing 1,096 changed files with 4,206,458 additions and 2,326,224 deletions.
13 changes: 13 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,10 @@
# along with NEXD 2D. If not, see <http://www.gnu.org/licenses/>.
#-----------------------------------------------------------------------

# files created by the system
*~
._*
.DS_Store

# Files created by the compiler (Fortran)
*.[oa]
Expand All @@ -33,14 +36,19 @@ make.incdep

# Editor files
.project
*eclipse*

# Project files / output files
*.jou
*.vtk
!simulations/example_inversion/ref/*vtk
*.bin
*seismo*
!*meas
!simulations/lambs/ref/*
*run.csh.*
*cub*
*msh*
*log
simulations/*/out/*
simulations/*/bin/*
Expand Down Expand Up @@ -87,3 +95,8 @@ metis-4.0.3/pmetis
*.synctex.gz
*.tdo

metis-4.0.3
simulations/testmodel2D
simulations/zylinder_alu
simulations/example_linearSlipInterface/out_marc
simulations/validation3D
43 changes: 43 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Changelog
All notable changes to NEXD 2D will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

## [0.4] - 2020-04-22
### Added
- Full waveform inversion
- Interface for meshs created by gmsh

### Changed
- Definition of fractures / linear slip interfaces now requires the relaxation frequency instead of the thickness and elastic moduli.
- Definitions of reference frequencies for viscoelastic attenuation are changed to frequencies instead of angular frequencies.

### Removed
- Flag 'debug' in parfile


## [0.3] - 2019-12-13
### Added
- Porous material saturated by one or two fluids
- Subsampling for seismograms (sampling rate of seismograms can now be an integer multiple of the simulation timestep)
- Rotation angles can now be set for each receiver individually.
- Duration of simulation can now be set in terms of total simulated time in addition to the number of timesteps.
- Sources can have a source time other than 0.


## [0.2.1] - 2019-03-20
### Fixed
- In the case of several sources in the same partition of the mesh, only one source was active.


## [0.2] - 2018-09-20
### Added
- Fractures in terms of linear slip interfaces can be included in the model.
- Manual

### Removed
- Weak form of PDE


## [0.1] - 2017-03-23
### Added
- Wave propagation in elastic and viscoelastic materials
22 changes: 16 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#-----------------------------------------------------------------------
# Copyright 2011-2016 Lasse Lambrecht (Ruhr-Universität Bochum, GER)
# Copyright 2014-2019 Marc S. Boxberg (Ruhr-Universität Bochum, GER)
# Copyright 2014-2020 Marc S. Boxberg (RWTH Aachen University, GER)
#
# This file is part of NEXD 2D.
#
Expand Down Expand Up @@ -219,7 +219,17 @@ obj_solver = program_solver.o \
riemannFluxLsiMod.o \
timestampMod.o \
calendar.o \
convert_time.o
convert_time.o \
adjointMod.o \
timeSeries.o\
dateTime.o\
recursiveFilterCoefficients.o\
fourierTransform.o\
realloc.o\
filterCoefficientsDecimate.o\
timeUtils.o\
collectMovieMod.o \
mathConstants.o

obj_movie = program_movie.o \
constantsMod.o \
Expand Down Expand Up @@ -261,14 +271,14 @@ obj_movie = program_movie.o \
# Direcory search
#
vpath %.o $(obsdir)
vpath %.f90 $(srcdir)
vpath %.f $(srcdir)
vpath %.c $(srcdir)
vpath %.f90 $(srcdir) $(srcdir)/include
vpath %.f $(srcdir) $(srcdir)/include
vpath %.c $(srcdir) $(srcdir)/include
#--------------------------------------------------------
# additional directories to be searched for module or include dependencies
# default is search in ./ only
#
DEPDIRS = $(srcdir)
DEPDIRS = $(srcdir) $(srcdir)/include
#-------------------------------------------------------
# Implicit rule to compile .o files from .f90 files.
# Because of vpath, targets and dependencies need not be
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
NEXD is a software package for high order simulation of seismic waves using the nodal discontinuous Galerkin method.
NEXD 2D is the 2D solver of this software package.

To deal with highly complex heterogeneous models, here the Nodal Discontinuous Galerkin Method (NDG) is used to calculate synthetic seismograms. The advantage of this method is that complex mesh geometries can be computed by using triangular or tetrahedral elements for domain discretization together with a high order spatial approximation of the wave field. The simulation tool NEXD is developed which has the capability of simulating elastic and anelastic wave fields for seismic experiments for one-, two- and three- dimensional settings. The implementation of poroelasticity and simulation of slip interfaces are currently in progress and are working for the one dimensional part. External models provided by e.g. Trelis/Cubit can be used for parallelized computations on triangular or tetrahedral meshes. For absorbing boundary conditions either a fluxes based approach or a Nearly Perfectly Matched Layer (NPML) can be used.
To deal with highly complex heterogeneous models, here the Nodal Discontinuous Galerkin Method (NDG) is used to calculate synthetic seismograms. The advantage of this method is that complex mesh geometries can be computed by using triangular or tetrahedral elements for domain discretization together with a high order spatial approximation of the wave field. The simulation tool NEXD is developed which has the capability of simulating elastic and anelastic wave fields for seismic experiments for one-, two- and three- dimensional settings. Porous materials and fractures (in terms of linear slop interfaces) are working for the one- and two-dimensional versions. External models provided by e.g. Trelis/Cubit can be used for parallelized computations on triangular or tetrahedral meshes. For absorbing boundary conditions either a fluxes based approach or a Nearly Perfectly Matched Layer (NPML) can be used. In addition full waveform inversion is supported in 2D.

## Authors and License

Expand All @@ -15,7 +15,7 @@ http://www.rub.de/nexd in case you want to get in touch with the authors. If you
encounter any problems installing or using the software, it will be helpful to
open (or add to) an "issues" topic at the [github repository](https://github.com/seismology-RUB/NEXD-2D).

The main authors are Lasse Lambrecht, Andre Lamert, Wolfgang Friederich, Thomas Möller and Marc S. Boxberg (Ruhr-Universität Bochum, Germany).
The main authors are Lasse Lambrecht, Andre Lamert, Wolfgang Friederich, Thomas Möller (all Ruhr-Universität Bochum, Germany) and Marc S. Boxberg (now at RWTH Aachen University, Germany).


## Documentation
Expand All @@ -25,7 +25,7 @@ A user manual can be found in the folder 'doc'.

## Examples

NEXD 2D comes with three examples: Lamb's problem (simulations/lambs), a two layer problem (simulations/2layer_pml_att) and an example for including fractures (simulations/example_linearSlipInterface). Please use these examples to familiarize yourself with the software.
NEXD 2D comes with five examples: Lamb's problem (simulations/lambs), a two layer problem (simulations/2layer_pml_att), an example for including fractures (simulations/example_linearSlipInterface), an example for poroelastic wave propagation (simulations/example_poro), and an example for full waveform inversion (simulations/example_inversion). Please use these examples to familiarize yourself with the software.


## Requirements
Expand Down
Binary file modified doc/manual.pdf
Binary file not shown.
15 changes: 8 additions & 7 deletions doc/tex/1_Introduction.tex
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,22 @@ \chapter{Introduction}
% use \chaptermark{}
% to alter or adjust the chapter heading in the running head

This manual describes NEXD 2D (\textbf{N}odal \textbf{D}iscontinuous \textbf{G}alerkin Finite \textbf{E}lement in \textbf{X} \textbf{D}imensions) version 0.3. NEXD is a Fortran based implementation of the nodal version of the discontinuous Galerkin approach. It is designed to simulate seismic wave propagation in complex geological structures with general physical properties and is not restricted with regard to the size of the model. The programs are currently designed to work on CPUs, only. GPUs are not supported. To run the code, no programming knowledge is required.
This manual describes NEXD 2D (\textbf{N}odal \textbf{D}iscontinuous \textbf{G}alerkin Finite \textbf{E}lement in \textbf{X} \textbf{D}imensions) version 0.4. NEXD is a Fortran based implementation of the nodal version of the discontinuous Galerkin approach. It is designed to simulate seismic wave propagation in complex geological structures with general physical properties and is not restricted with regard to the size of the model. The programs are currently designed to work on CPUs, only. GPUs are not supported. To run the code, no programming knowledge is required.
\section{Supplied programs}
The following programs are part of the software package NEXD 2D:
\begin{itemize}
\item "mesher": The pre-processor designed to read in specific files related to the mesh (see chapter \ref{chap:input}).
\item "solver": The main program to simulate the wave-propagation.
\item "movie": A post-processor to generate files that show the wave-field at certain time steps.
\item ``mesher'': The pre-processor designed to read in specific files related to the mesh (see chapter \ref{chap:input}).
\item ``solver'': The main program to simulate the wave-propagation.
\item ``movie'': A post-processor to generate files that show the wave-field at certain time steps.
\end{itemize}
\section{Functionality}
\label{functions and applications}
\subsection{General features}
As of release version v0.3 the following features are included:
As of release version v0.4 the following features are included:
\begin{itemize}
\item Forward simulation of wave-propagation in elastic, anelastic and poroelastic media
\item Wave-propagation across fractures (elastic media only)
\item Full waveform inversion based on the adjoint method (elastic media only, viscoelastic media under restrictions)
\end{itemize}
Since no restrictions are imposed on size and shape of the media of interest, NEXD can be used in any situation, where the propagation of elastic waves is the key information. It is able to yield the wave field at every time step of propagating waves and the output of simulated receivers. Free surface and absorbing boundary conditions (BC) are implemented. In addition, Perfectly Matched Layers (PML) \citep{Lambrecht.2017} are available to enhance the absorbing BC.
\subsection{Source time functions}
Expand All @@ -28,7 +29,7 @@ \section{Functionality}
\item cubed-sine ($sin^3$)
\item an arbitrary discrete wavelet
\end{itemize}
With sufficient programming knowledge, it is possible to add new wavelet types to the program. Appendix~\ref{sec:srcCode} explains how to do that.
With sufficient programming knowledge, it is possible to add new wavelet types to the program as described in appendix~\ref{sec:srcCode}.

\subsection{Output}
As possible output, the program generates seismograms from the data recorded at the stations placed in the model. Additionally, binary files for desired fields (velocity, displacement or stress) are created according to the parameters set in the parfile (see section~\ref{subsec:parfile} and chapter~\ref{chap:output} for details).
Expand All @@ -37,4 +38,4 @@ \section{License}
NEXD is designed and developed by Lasse Lambrecht, Andre Lamert, Wolfgang Friederich, Thomas M{\"o}ller and Marc S. Boxberg. NEXD 2D and its components, as well as documentation and some examples, are available under terms of the GNU General Public License (version 3 or higher).

\section{Citation}
Please cite \cite{Lambrecht.2017} if you use NEXD. If you use poroelasticity please cite \cite{Boxberg.2017} or \cite{Boxberg.2019} and if you use the feature to simulate the effect of fractures please cite \cite{Moeller.2019}.
Please cite \cite{Lambrecht.2017} if you use NEXD. If you use poroelasticity please cite \cite{Boxberg.2017} or \cite{Boxberg.2019}. If you use the feature to simulate the effect of fractures please cite \cite{Moeller.2019}. For applications of the inversion feature please cite \cite{Lamert.2020} or \cite{Lamert.2019}
54 changes: 32 additions & 22 deletions doc/tex/2_Installation.tex
Original file line number Diff line number Diff line change
Expand Up @@ -21,23 +21,23 @@ \section{Software requirements}
To install NEXD the user needs the following software installed on his system:
\begin{itemize}
\item GNU Make (\url{https://www.gnu.org/software/make/}),
\item Fortran compiler (GNU Fortran or Intel Fortran). The version 0.3 of this software has been tested using the following compiler versions:
\item Fortran compiler (GNU Fortran or Intel Fortran). The version 0.4 of this software has been tested using the following compiler versions:
\begin{itemize}
\item Intel Fortran version 19.0.0
\item GNU Fortran version 4.9.2, 6.3.0 and 7.4.0
\item Intel Fortran version 19.0
\item GNU Fortran version 4.9.2, 6.3, 7.4, 9.2 and 9.3
\end{itemize}
Version 0.2 of NEXD 2D also worked with:
Version 0.2 of NEXD 2D has also been tested with:
\begin{itemize}
\item Intel Fortran version 17.0.4
\item GNU Fortran version 5.4.0 and 7.3.0
\item GNU Fortran version 5.4 and 7.3
\end{itemize}
\item LAPACK libraries (\url{http://www.netlib.org/lapack/},
\item MPI libraries, e.g. OpenMPI,
\item METIS (\url{http://glaros.dtc.umn.edu/gkhome/metis/metis/overview}, tested with version 4.0.3) for parallel applications,
\item a Python installation.
\end{itemize}

A number of Python scripts are used during the installation of NEXD 2D and as an aid in the creation of input files. To run those, a Python version (recommended 2.7, or 3.6 or higher) is required. A good and easy way to get Python is to install it via the Anaconda distribution, which is available for Windows, Mac and Linux. It can be downloaded under \url{https://www.anaconda.com/download/}.
A number of Python scripts are used during the installation of NEXD 2D and as an aid in the creation of input files. To run those, a Python version (recommended 2.7, or 3.6 or higher) is required. A good and easy way to get Python is to install it via the Anaconda distribution, which is available for Windows, MacOS and Linux. It can be downloaded under \url{https://www.anaconda.com/download/}.

\section{Installation}
To install the software, follow these steps:
Expand All @@ -46,12 +46,13 @@ \section{Installation}
\item Install all software dependencies.
\item Adjust the software to your system and personal requirements by changing the Makefile appropriately (e.g., change the path to your METIS installation and set your compiler, see code listing \ref{lis:make2}).
\item Compile METIS.
\item Compile NEXD using the command "make all" in your console from your installation directory.
\item Compile NEXD using the command ``make all'' in your console from your installation directory.
\end{enumerate}

\section{Changing the Makefile}
\label{subsec:changeMake}
As mentioned in step three (3) in the instruction on how to run the software, the Makefile needs to be changed at certain position. The following sections need to be adjusted by the user: \\
As mentioned in step 3 of the instruction on how to install the software, the Makefile needs to be changed at certain position. The following sections need to be adjusted by the user:

\lstinputlisting[
float=h,
captionpos=b,
Expand All @@ -62,10 +63,10 @@ \section{Changing the Makefile}
lastline=34,
breaklines=true,
postbreak=\mbox{\textcolor{red}{$\hookrightarrow$}\space}
]{source_files/Makefile.txt} \\
Change these lines to select the compiler. The default compiler flags are set for optimum performance of the user and need not be adjusted. Recommended flags for developers are given in the comments given in the Makefile. Please review the Makefile for more information. \\
\\
Please adjust the path to your METIS library specified in the code listing \ref{lis:make2}.
]{source_files/Makefile.txt}
Change these lines to select the compiler. The default compiler flags are set for optimum performance of the user and need not be adjusted. Recommended flags for developers are given by the comments in the Makefile. Please review the Makefile for more information.

Please adjust the path to your METIS library as specified in the code listing \ref{lis:make2}.
\lstinputlisting[
float=ht,
captionpos=b,
Expand All @@ -80,8 +81,9 @@ \section{Changing the Makefile}
\newpage
\section{Clean installation directory}
\label{sec:cleansimdirc}
Below a clean tree for the installation directory with all sub-folders is shown. \\
\\
Below a clean tree for the installation directory with all sub-folders is shown.

{\footnotesize
\begin{forest}
pic dir tree,
where level=0{}{% folder icons by default; override using file for file icons
Expand All @@ -91,42 +93,50 @@ \section{Clean installation directory}
[doc, label=right:{Contains all files related to the documentation, including the Latex source files}]
[simulations
[2layer\_pml\_att
[cubit, label=right:{Contains the files: 2layer\_pml\_att.jou, cubit2dg.py and run\_cubit.py}]
[mesh, label=right:{Contains files related to the mesh}]
[data, label=right:{Contains the files: parfile, source and stations}]
[ref
[att, label=right:{Contains reference seismograms with attenuation (66 files)}]
[no\_att, label=right:{Contains reference seismograms without attenuation (66 files)}]
[att, label=right:{Contains reference seismograms with attenuation and without PMLs (42 files)}]
[no\_att, label=right:{Contains reference seismograms without attenuation and without PMLs (42 files)}]
[pml, label=right:{Contains reference seismograms without attenuation and with PMLs (42 files)}]
[pml\_att, label=right:{Contains reference seismograms with attenuation and with PMLs (42 files)}]
]
]
[example\_inversion
[mesh, label=right:{Contains files related to the mesh}]
[data, label=right:{Contains the files: parfile, source, stations and invpar}]
[ref, label=right:{Contains reference seismograms and .vtk files (22 files)}]
[inversion, label=right:{Contains the seismograms obtained from the real model}]
]
[example\_linearSlipInterface
[cubit, label=right:{Contains the files: lsi.jou, cubit2dg.py and run\_cubit.py}]
[mesh, label=right:{Contains files related to the mesh}]
[data, label=right:{Contains the files: parfile, source, stations, interfaces and fracs}]
[ref
[noPML, label=right:{Contains reference seismograms with PML (60 files)}]
[withPML, label=right:{Contains reference seismograms without PML (60 files)}]
]
]
[example\_poro
[cubit, label=right:{Contains the files: example\_poro.jou, matpropporo, cubit2dg.py and run\_cubit.py}]
[mesh, label=right:{Contains files related to the mesh}]
[data, label=right:{Contains the files: parfile, source and stations}]
[ref, label=right:{Contains reference seismograms (178 Files)}]
[tools, label=right:{Contains Matlab Code to calculate velocities and required element size.}]
]
[lambs
[cubit, label=right:{Contains the files: lambs.jou, cubit2dg.py and run\_cubit.py}]
[mesh, label=right:{Contains files related to the mesh}]
[data, label=right:{Contains the files: parfile, source and stations}]
[ref, label=right:{Contains reference seismograms and a README (13 Files)}]
]
]
[src, label=right:Contains all fortran source files]
[tools
[python, label=right:Contains a number of python scripts]
[scripts, label=right:Contains a number of python scripts]
]
[LICENSE, file]
[Makefile, file]
[Readme.md, file]
]
\end{forest}
}
\\
For the remaining part of the manual the NEXD 2D installation directory will be referred to as \url{dg2d}.
For the remaining part of the manual the NEXD 2D installation directory will be referred to as \url{dg2d}.
Loading

0 comments on commit b056625

Please sign in to comment.