-
Notifications
You must be signed in to change notification settings - Fork 248
[Utilities] ParMmg Process
ParMMG is the MPI parallel version of the remeshing library MMG. In order to use ParMmg, please checkout the guide on how to install and use MMG first:
MMG remeshing process install guide
As of now, ParMMG is a separate library that depends on MMG and it therefore requires another installation. ParMmg does not have all functionalities from MMG, but it currently features:
- 3D volume remeshing of tetrahedras
In order to install ParMmg in our system, we need to clone the repository.
git clone https://github.com/MmgTools/ParMmg
Once cloned, we can change directory to ParMmg, and create a build folder where the libraries will be written.
cd ParMmg;
mkdir build;
cd build;
Now, we will create and edit a configure.sh file:
touch configure.sh
In the configure file we will write the following:
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-USE_POINTMAP=ON \
-DCMAKE_CXX_FLAGS="-O3 -msse3 -fPIC -fopenmp" \
-DCMAKE_C_FLAGS="-O3 -msse3 -fPIC -fopenmp" \
-DLIBPARMMG_SHARED=ON \
-DLIBPARMMG_STATIC=OFF \
-DDOWNLOAD_MMG=OFF \
-DMMG_DIR="/path/to/mmg" \
-DMMG_BUILDDIR="/path/to/mmg/build" \
-DDOWNLOAD_METIS=OFF \
-DMETIS_DIR="/usr/include" \
make -j4
Where we have set the path to the MMG installation. Please set it with the correct path in your machine. ParMmg will be linked to a certain version of MMG. For instance, v1.3.0 of ParMmg needs version v5.5.2 of MMG. This can be checked in the file:
ParMmg/CMakeLists.txt
Specified as GIT_TAG
in the MMG section. We can now compile:
sh configure.sh
After compiling, we can now compile Kratos with the following extra variables. Note that Kratos will have to be compiled in MPI with the flag -DUSE_MPI=ON
-DUSE_MPI=ON \
-DINCLUDE_PMMG=ON \
-DPMMG_ROOT=/path/to/parmmg/build \
Where we have set the path to ParMmg build folder with the flag -DPMMG_ROOT
. Note that this will assume that libraries are located in ParMmg/build/lib
and the include folder in ParMmg/build/include
. If this is not the case, you can specify the custom library and include dir with the following flags (remove PMMG_ROOT if this is the case):
-DUSE_MPI=ON \
-DINCLUDE_PMMG=ON \
-DPMMG_INCLUDE_DIR=/path/to/custom/parmmg/build/include/ \
-DPMMG_LIBRARY=/path/to/custom/parmmg/build/lib/libparmmg.so \
- Getting Kratos (Last compiled Release)
- Compiling Kratos
- Running an example from GiD
- Kratos input files and I/O
- Data management
- Solving strategies
- Manipulating solution values
- Multiphysics
- Video tutorials
- Style Guide
- Authorship of Kratos files
- Configure .gitignore
- How to configure clang-format
- How to use smart pointer in Kratos
- How to define adjoint elements and response functions
- Visibility and Exposure
- Namespaces and Static Classes
Kratos structure
Conventions
Solvers
Debugging, profiling and testing
- Compiling Kratos in debug mode
- Debugging Kratos using GDB
- Cross-debugging Kratos under Windows
- Debugging Kratos C++ under Windows
- Checking memory usage with Valgind
- Profiling Kratos with MAQAO
- Creating unitary tests
- Using ThreadSanitizer to detect OMP data race bugs
- Debugging Memory with ASAN
HOW TOs
- How to create applications
- Python Tutorials
- Kratos For Dummies (I)
- List of classes and variables accessible via python
- How to use Logger
- How to Create a New Application using cmake
- How to write a JSON configuration file
- How to Access DataBase
- How to use quaternions in Kratos
- How to do Mapping between nonmatching meshes
- How to use Clang-Tidy to automatically correct code
- How to use the Constitutive Law class
- How to use Serialization
- How to use GlobalPointerCommunicator
- How to use PointerMapCommunicator
- How to use the Geometry
- How to use processes for BCs
- How to use Parallel Utilities in futureproofing the code
- Porting to Pybind11 (LEGACY CODE)
- Porting to AMatrix
- How to use Cotire
- Applications: Python-modules
- How to run multiple cases using PyCOMPSs
- How to apply a function to a list of variables
- How to use Kratos Native sparse linear algebra
Utilities
Kratos API
Kratos Structural Mechanics API