_ _ _ ____ ____ ____
/ \ __| |_ __ ___ / \ | _ \___ \| _ \
/ _ \ / _` | '_ ` _ \ / _ \ | |_) |__) | | | |
/ ___ \ (_| | | | | | |/ ___ \| __// __/| |_| |
/_/ \_\__,_|_| |_| |_/_/ \_\_| |_____|____/
ASCII art done with FIGlet
An admissibility and asymptotic-preserving finite volume scheme for systems of conservation laws with source terms on 2D unstructured meshes
Just type make
in the top directory, see mk/scheme.mk
for the different options related to the scheme and mk/libs.mk
for the libraries that can be used.
The different compilation options for gfortran
and ifort
are located in mk/gnu_f.mk
and mk/intel_f.mk
It is also possible to use CMake to configure the code, then build it with make
:
$ mkdir -p build
$ cd build
$ cmake .. # or 'ccmake ..' to get access to the options
$ make
Finally Meson can be used to configure the code, then build it with Ninja:
$ meson build
$ cd build
$ ninja
The available options can be displayed with mesonconf
in the build directory or in the meson_options.txt
file.
$DESTDIR/$BUILDDIR/bin/AdmAP2D --mesh path/to/mesh/file.msh --test_case TestCase --restart path/to/restart/file
, where:
$BUILDDIR
is something like build_AdmAP2D-$PHY-$FLUX-$TIME-$ORDER-$MESH-$ARCH-$COMPILER
,$PHY
is the physics,$FLUX
is the flux and the reconstruction used,$TIME
is the time scheme used,$ORDER
describes the high order method used,$MESH
is the mesh used,$ARCH
is the architecture where the code was build,$COMPILER
is the compiler and the options used.This will run the code and the output will be writen in $DESTDIR/$BUILDDIR/out/$PHY-$FLUX-$MeshName-$TestCase
as VTK files (for VisIt or ParaView).
Some sample meshes generated by Gmsh are available in the mesh
folder.
Some scripts are available in the scripts
directory to simplify the compilation and the run.
They can be used as skeletons to launch others test cases, for the list of the possible test cases one as to look to the various physic modules.
To test if the code run well, it is possible to test it with a constant test case and appropriate boundaries: nothing has to move.
To test the compilation, it is possible to use the script tests_compile.sh
in order to check all the compilations (using different combinations of parameters).
In order to add or change the property of the physics used see the files src/physics/physics.f90
and src/physics/physics_var.f90
that are used as wrappers for the routines and the variables. The module for each physics are physics_PHY.f90
and physics_PHY_var.f90
in the folder src/physics
. There is also the files in src/asymptotic
for everything linked to the source term (for instance the computations of the asymptotic correction).
The tags for the boundary conditions can be changed in src/mesh/type_mesh.f90
in order to fit with the tags in the .msh
files.
Numerical fluxes can be added in the src/flux/flux_1D.f90
file with the proper preprocessing variable in mk/scheme.mk
.
Doxygen documentation, generated with doxygen
or make doxydoc
or cmake -DBUILD_DOCUMENTATION=ON && make doxydoc
Mainly AAP2D (or on HAL) for the first first-order scheme and AAP2D-HO (or on HAL) for the high-order scheme. You may also look at references therein and bibliography used in the code.
The scheme is built using the Droniou and Le Potier scheme (or on [HAL] (https://hal.archives-ouvertes.fr/hal-00808694)) and the asymptotic-preserving technique developed by Berthon and Turpault.
mk/deps.mk
), it's also possible to use CMake or Meson to configure the code (see compile.sh
),gfortran
, ifort
and pgfortran
),hostname
, uname
, basename
, grep
, tput
, readlink
, find
, echo
are needed,cov_gnu.sh
and cov_intel.sh
,gprof.sh
and scalasca.sh
,md2ZZZ
rules in the Makefile.GPLv3, see the LICENSE.md file.
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 3 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, see http://www.gnu.org/licenses/.