Skip to content

Commit

Permalink
release version: v0.1
Browse files Browse the repository at this point in the history
  • Loading branch information
mboxberg committed Apr 4, 2017
1 parent 8bd26df commit d313ecb
Show file tree
Hide file tree
Showing 267 changed files with 725,852 additions and 1 deletion.
22 changes: 22 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
*.[oa]
*~
*.log
*.incdep
*.19
bin/*
mod/*
metis*
simulations/2layerbox/bin/*
simulations/2layerbox/out2/*
simulations/2layerbox/cubit/cubit*jou
simulations/2layerbox/cubit/absorb
simulations/2layerbox/cubit/coord
simulations/2layerbox/cubit/*pyc
simulations/2layerbox/cubit/free
simulations/2layerbox/cubit/mat
simulations/2layerbox/cubit/matprop
simulations/2layerbox/cubit/mesh
simulations/2layerbox/cubit/mesh.cub
simulations/2layerbox/run.csh.*
src/.project
src/.settings
298 changes: 298 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,298 @@
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# This is the generic part of the Makefile. Use this
# template within each project.
#
# General definitions
# Check Operating system:
OS := $(shell uname)
#
# set the SHELL
# MSB MSB: Actually nothing should be specified here! (or SHELL = /bin/sh if really necessary for any reason...)
SHELL = /bin/tcsh
#
# Paths
#
srcdir = ./src
bindir = ./bin
obsdir = ./obj
moduledir = ./mod
AR = ar
F95 = mpif90

ifeq ($(notdir $(F95)),g95)
FFLAGS = -O3 -Wunused -fmod=$(moduledir)
else
#-march=opteron
#-march=core2

LINKFLAGS = -J$(moduledir) -fimplicit-none -funroll-all-loops -ffixed-line-length-none -ffree-line-length-none -fbacktrace -fbounds-check -Wunderflow -Wunused
FFLAGS = -J$(moduledir) -fimplicit-none -funroll-all-loops -ffixed-line-length-none -ffree-line-length-none -fbacktrace -fbounds-check -Wunderflow -Wunused -O3

# profiling and debugging
# LINKFLAGS = -J$(moduledir) -fimplicit-none -funroll-all-loops -ffixed-line-length-none -ffree-line-length-none -fbacktrace -fbounds-check -Wunderflow -Wall -Wextra -pg -fprofile-arcs -ftest-coverage
# FFLAGS = -J$(moduledir) -fimplicit-none -funroll-all-loops -ffixed-line-length-none -ffree-line-length-none -fbacktrace -fbounds-check -Wunderflow -Wall -Wextra -pg -fprofile-arcs -ftest-coverage
# for debugging
# LINKFLAGS = -J$(moduledir) -fimplicit-none -funroll-all-loops -ffixed-line-length-none -ffree-line-length-none -fbacktrace -fbounds-check -Wunderflow -g
# FFLAGS = -J$(moduledir) -fimplicit-none -funroll-all-loops -ffixed-line-length-none -ffree-line-length-none -fbacktrace -fbounds-check -Wunderflow \
-TENV:simd_zmask=OFF -TENV:simd_imask=OFF -TENV:simd_omask=OFF -g

#ifort
# LINKFLAGS = -module $(moduledir) -heap-arrays
# FFLAGS = -module $(moduledir) -heap-arrays
# LINKFLAGS = -O3 -module $(moduledir) -heap-arrays -diag-enable sc3
# FFLAGS = -O3 -module $(moduledir) -heap-arrays -diag-enable sc3
# FFLAGS = -O3 -module $(moduledir) -heap-arrays -funroll-loops
# LINKFLAGS= -O3 -xP -vec-report0 -e95 -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 -ftrapuv -check all -traceback -module $(moduledir)
# FFLAGS= -O3 -xP -vec-report0 -e95 -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 -ftrapuv -check all -traceback -module $(moduledir)

# LINKFLAGS= -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 -fpe0 -ftz -ftrapuv -check all -traceback -module $(moduledir)
# FFLAGS= -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 -fpe0 -ftz -ftrapuv -check all -traceback -module $(moduledir)




# FFLAGS= /F64000000 -O3 -xP -vec-report0 -implicitnone -warn truncated_source -warn argument_checking -warn declarations -warn alignments -warn ignore_loc -warn usage -check nobounds -align sequence -assume byterecl -fpe0 -ftz -ftrapuv -check all -traceback -module $(moduledir)

endif

obj_prog = program_dg3d.o \
constantsMod.o \
parameterMod.o \
gllMod.o \
warpfactorMod.o \
nodesMod.o \
triTrafoMod.o \
jacobiMod.o \
simplexMod.o \
vandermondeMod.o \
dmatricesMod.o \
geometricFactorsMod.o \
meshMod.o \
triangulation.o \
plotMod.o \
liftMod.o \
derMod.o \
normalsMod.o \
timeloopMod.o \
matrixMod.o \
waveMod.o \
dtMod.o \
stfMod.o \
imageMod.o \
sourceReceiverMod.o \
triangleNeighborMod.o \
fileParameterMod.o \
anelasticMod.o\
linearSystemMod.o\
mpiMod.o\
pmlMod.o\
rungekuttaMod.o\
allocateMod.o\
typeMod.o

#obj_mesher = program_mesher.o \
constantsMod.o \
parameterMod.o \
gllMod.o \
warpfactorMod.o \
nodesMod.o \
triTrafoMod.o \
jacobiMod.o \
simplexMod.o \
vandermondeMod.o \
dmatricesMod.o \
geometricFactorsMod.o \
meshMod.o \
triangulation.o \
plotMod.o \
liftMod.o \
derMod.o \
normalsMod.o \
matrixMod.o \
dtMod.o \
stfMod.o \
sourceReceiverMod.o \
triangleNeighborMod.o

obj_mesher = program_mesher.o \
constantsMod.o \
parameterMod.o \
tetraNeighborMod.o \
meshMod.o \
vtkMod.o \
nodesMod.o \
gllMod.o \
warpfactorMod.o \
matrixMod.o \
tetTrafoMod.o \
rosettaGammaMod.o \
jacobiMod.o \
vandermondeMod.o\
simplexMod.o \
dmatricesMod.o \
liftMod.o \
geometricFactorsMod.o \
normalsMod.o \
sourceReceiverMod.o \
fileParameterMod.o \
anelasticMod.o\
linearSystemMod.o\
logoMod.o\
allocateMod.o\
typeMod.o\
mpiMod.o\
stfMod.o

obj_solver = program_solver.o \
mpiincludeMod.o \
timeloopMod.o \
constantsMod.o \
parameterMod.o \
tetraNeighborMod.o \
meshMod.o \
vtkMod.o \
nodesMod.o \
gllMod.o \
warpfactorMod.o \
matrixMod.o \
tetTrafoMod.o \
rosettaGammaMod.o \
jacobiMod.o \
vandermondeMod.o\
simplexMod.o \
dmatricesMod.o \
liftMod.o \
geometricFactorsMod.o \
normalsMod.o \
sourceReceiverMod.o \
mpiMod.o \
stfMod.o \
vtkMod.o \
plotMod.o \
waveMod.o \
fileParameterMod.o \
anelasticMod.o\
linearSystemMod.o\
logoMod.o\
pmlMod.o\
rungekuttaMod.o\
allocateMod.o\
typeMod.o

obj_movie = program_movie.o \
constantsMod.o \
parameterMod.o \
collectMovieMod.o \
tetraNeighborMod.o \
meshMod.o \
vtkMod.o \
nodesMod.o \
gllMod.o \
warpfactorMod.o \
matrixMod.o \
tetTrafoMod.o \
rosettaGammaMod.o \
jacobiMod.o \
vandermondeMod.o\
simplexMod.o \
dmatricesMod.o \
liftMod.o \
geometricFactorsMod.o \
normalsMod.o \
sourceReceiverMod.o \
logoMod.o \
vtkMod.o \
fileParameterMod.o \
anelasticMod.o\
linearSystemMod.o\
plotMod.o \
allocateMod.o\
typeMod.o\
mpiMod.o\
stfMod.o



#-------------------------------------------------------
# Direcory search
#
vpath %.o $(obsdir)
#vpath %.f90 $(srcdir) ./src/include
#vpath %.f $(srcdir) ./src/include
#vpath %.c $(srcdir) ./src/include

#--------------------------------------------------------
# additional directories to be searched for module or include dependencies
# default is search in ./ only
#
DEPDIRS =
#-------------------------------------------------------
# Implicit rule to compile .o files from .f90 files.
# Because of vpath, targets and dependencies need not be
# in the current directory.
#
%.o: $(srcdir)/%.f90
$(F95) -c $(FFLAGS) $< -o $(obsdir)/$@
#--------------------------------------------------------------
# Object string for linking:
# Adds object dir as prefix and removes directory part
# of $^ (all dependencies)
#
obstring = $(addprefix $(obsdir)/,$(notdir $^))
obstringtest = $(addprefix $(obsdir)/,$(notdir $^))
#
# End of generic part of Makefile
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#
# Library paths
#
#ifeq ($(OS), Linux)
# pgplot = -lpgplot -L/usr/lib -lpng -lz -lX11
#endif
#ifeq ($(OS), Darwin)
# pgplot = -lpgplot -L/usr/local/lib -lpng -lz -lX11
#endif
la = -llapack -lblas
#lib = /usr/lib/libmetis.a /usr/lib/libscotch.a /usr/lib/libscotcherr.a
lib = metis-4.0.3/libmetis.a
#-L/opt/ompi/lib -lmpi
#---------------------------------------------------------
.PHONY: all

#
# create dependencies on modules
# make.incdep is a Makefile because it is included. Such files are first updated
# before anything else and make starts from anew including all updated makefiles
#
make.incdep:
./tools/scripts/makeDepFromUseInclude.py $(srcdir) $(DEPDIRS) > $@
-include make.incdep
#
# Targets
#
all: required mesher solver movie

clean :
rm -f $(bindir)/* $(moduledir)/*.mod $(obsdir)/*.o out/* out2/* *.mod tmp.log make.incdep

dg3d: all

mesher: $(obj_mesher)
$(F95) $(LINKFLAGS) -o $(bindir)/$@ $(obstring) $(pgplot) $(la) $(lib)

solver: $(obj_solver)
$(F95) $(LINKFLAGS) -o $(bindir)/$@ $(obstring) $(pgplot) $(la) $(lib)

movie: $(obj_movie)
$(F95) $(LINKFLAGS) -o $(bindir)/$@ $(obstring) $(pgplot) $(la) $(lib)

bin:
mkdir -p $(bindir)

mod:
mkdir -p $(moduledir)

obj:
mkdir -p $(obsdir)

required: mod obj bin
55 changes: 54 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,54 @@
# ne3d
# NEXD 3D

NEXD is a software package for high order simulation of seismic waves using the nodal discontinuous Galerkin method.
NEXD 3D is the 3D 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.

## Authors and License

NEXD 3D and some of its components, as well as documentation and some examples
are available under terms of the [GNU General Public License](LICENSE) (version 3 or higher)
on [github](https://github.com/seismology-RUB/NEXD-3D).
Please find contact addresses [there](https://github.com/seismology-RUB), or visit
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-3D).

The main authors are Lasse Lambrecht, Andre Lamert, and Wolfgang Friederich (Ruhr-Universität Bochum, Germany).


## Documentation

A complete documentation will be available in the future.


## Examples

NEXD 3D comes with two examples: [simulations/brick](simple example) and a [simulations/2layerbox](two layer problem). Please use these examples to familiarize yourself with the software.


## Requirements

* GNU Make
* Fortran compiler (sufficient standard)
* LAPACK libraries
* MPI libraries (e.g., OpenMPI) and METIS (http://glaros.dtc.umn.edu/gkhome/metis/metis/overview; tested with version 4.0.3) for parallel applications


## Installation

0. If not yet done, you should download the source code of the NEXD 3D main package by cloning the master branch of the ASKI repository on gitHub.com:
```
git clone --depth 1 --branch master https://github.com/seismology-RUB/NEXD-3D
```
1. Install all software dependencies.
2. Adjust the software to your system and personal requirements by changing the [Makefile](Makefile) appropriately (e.g., change the path to your METIS installation and set your compiler).
3. Run command
```
make all
```
from installation path `NEXD-3D/` to compile NEXD 3D.
Binary file added simulations/2layerbox/cubit/2layerbox_PML.cub
Binary file not shown.
Loading

0 comments on commit d313ecb

Please sign in to comment.