Source Code#

The DAMASK core is written in Fortran 2018 with a few enhancements in C. A Unix-style operation system is a prerequisite for installation from source. DAMASK has been installed on different GNU/Linux distributions and on MacOS. Compilation on Windows is possible via the Windows Subsystem for Linux (WSL).

The pre- and post-processing tools are written in Python 3. They are the only parts of DAMASK that can be installed on Windows directly.

Warning

Compilation from source is only recommended for developers and users with profound knowledge of Unix-style operating systems.

Get an overview of the prerequisites present on your system:

wget --quiet https://damask-multiphysics.org/installation/files/DAMASK_prerequisites.sh -O - | sh
cat system_report.txt

Download, check, and unpack the source code:

wget https://damask-multiphysics.org/download/damask-3.0.1.tar.xz
wget https://damask-multiphysics.org/download/damask-3.0.1.tar.xz.sha256
sha256sum -c damask-3.0.1.tar.xz.sha256 && \
tar -xf damask-3.0.1.tar.xz
wget https://damask-multiphysics.org/download/damask-3.0.1.tar.xz
wget https://damask-multiphysics.org/download/damask-3.0.1.tar.xz.sha256
shasum -a 256 -c damask-3.0.1.tar.xz.sha256 && \
tar -xf damask-3.0.1.tar.xz

Note

The next steps depend on which components (Grid and/or Mesh solver, MSC Marc, or processing tools) you want to install. Please follow the instructions in the relevant section(s) only.

Grid and Mesh Solver#

A recent version of the GNU Compiler Collection, the Intel Parallel Studio XE, or the Intel oneAPI toolkit is needed to build the grid solver and/or mesh solver from source. The solvers included with DAMASK are build with CMake and rely on PETSc. A PETSc installation with support for MPI and the following external packages is needed:

The PETSc setup can be tested with the help of a small example:

wget https://damask-multiphysics.org/installation/files/PETSc_test.tar.xz
tar -xf PETSc_test.tar.xz
cd PETSc_test
make PETSc_test
mpirun -np 2 ./PETSc_test

For full support of YAML 1.2, a libfyaml installation is needed. CMake uses pkg-config to locate the installation location.

If all prerequisites are installed, compiliation and installation follows the standard CMake procedure:

cmake -S damask-3.0.1 -B build-grid -DDAMASK_SOLVER=grid
cmake --build build-grid --target install
cmake -S damask-3.0.1 -B build-mesh -DDAMASK_SOLVER=mesh
cmake --build build-mesh --target install

MSC Marc#

Supported versions of MSC Marc are

  • 2023.1, 2023.2, 2023.3 (default)

  • 2022.1, 2022.2, 2022.3, 2022.4

  • 2021.2, 2021.3.1

  • 2020

Install MSC Marc including Marc Mentat and the recommended version of Intel Parallel Studio XE. Then build an 64bit integer version of HDF5 with the Intel compilers using autotools (not CMake):

export FCFLAGS='-fPIC -integer-size 64 -real-size 64 -qopenmp'
export CFLAGS='-fPIC -qopenmp'
CFLAGS=$CFLAGS FCFLAGS=$FCFLAGS FC=ifort CC=icx \
./configure \
--disable-parallel \
--enable-fortran \
--enable-build-mode=production
make && make install

A successful installation creates a wrapper called h5fc. This wrapper is used by MSC Marc to compile DAMASK. Check whether the wrapper is indeed using ifort with:

h5fc -show

The HDF5 setup can be tested with the help of a small example:

wget https://damask-multiphysics.org/installation/files/HDF5_test.F90
h5fc HDF5_test.F90 -o HDF5_test
./HDF5_test

As a final step, apply the DAMASK modifications to the MSC Marc installation. For this, xvfb-run (typically available as a system package) and patch (typically installed by default) need to be installed. The following command applies the DAMASK modifications assuming the standard installation folder for MSC Marc:

export PYTHONPATH=${PWD}/damask-3.0.1/python:${PYTHONPATH}
./damask-3.0.1/install/MarcMentat/MSC_modifications.py

if you use a non-standard MSC Marc setup, use --marc-root and --marc-version to set path and version, respectively.

Note

To see all options of MSC_modifications.py, invoke it with --help.

Changes made by MSC_modifications.py

The original Marc/Mentat installation remains fully operational after these changes!

  • Mentat

    1. In MSCpath/mentat20??/bin/ the script edit_window is altered to use a text editor according to the value of option --editor.

    2. The file MSCpath/mentat20??/menus/job_run.ms is modified and compiled into MSCpath/mentat20??/menus/linux64/main.msb to add a DAMASK menu to Jobs Run from where you can start DAMASK using different optimization levels (0, 1, 2).

    3. In MSCpath/mentat20??/bin/ submit4 to submit6 scripts are added, which call the run_damask[l, ,h] scripts.

    4. In MSCpath/mentat20??/bin/ kill4 to kill6 scripts are added, which kill the respective jobs.

  • Marc

    1. In MSCpath/marc20??/tools/ run_damask[l, ,h] and conpile_damask[l, ,h] scripts are added, which can treat *.f90 source files (compatible with free-format DAMASK). Naming convention: ‘l’ is for O0, ‘ ‘ for O1, and ‘h’ for O2 optimization.

    2. DAMASK Fortran compiler calls, modified according to the needs of DAMASK, are added in MSCpath/marc20??/tools/include_linux64.

Pre- and Post-Processing Tools#

Installation follows the standard pip procedure:

cd damask-3.0.1/python
pip install .