_       _              _    ____ ____  ____
   / \   __| |_ __ ___    / \  |  _ \___ \|  _ \
  / _ \ / _` | '_ ` _ \  / _ \ | |_) |__) | | | |
 / ___ \ (_| | | | | | |/ ___ \|  __// __/| |_| |
/_/   \_\__,_|_| |_| |_/_/   \_\_|  |_____|____/

ASCII art done with FIGlet

pipeline status coverage report

AdmAP2D

An admissibility and asymptotic-preserving finite volume scheme for systems of conservation laws with source terms on 2D unstructured meshes

Usage

Compilation

Make

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

CMake

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

Meson

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.

Run

$DESTDIR/$BUILDDIR/bin/AdmAP2D --mesh path/to/mesh/file.msh --test_case TestCase --restart path/to/restart/file, where:

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.

Scripts

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.

Testing

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).

Modifications

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.

Documentation

Doxygen

Doxygen documentation, generated with doxygen or make doxydoc or cmake -DBUILD_DOCUMENTATION=ON && make doxydoc

Articles

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.

PhD thesis:

Requirements

Authors

License

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/.