Source code compilation of DAMASK was required for our work because it involved modifying the source code. \section{Install Dependencies} DAMASK uses many open source libraries which has to be installed before installing it. DAMASK developers have provided bash script which gives an overview of the prerequisites available in the computer. \begin{lstlisting}[language=bash, basicstyle=\small\ttfamily, frame=single] wget https://damask.mpie.de/files/installation/3.0.0- beta/DAMASK_prerequisites.sh sh ./DAMASK_prerequisites.sh cat system_report.txt \end{lstlisting} Running the below bash script as superuser will install all the DAMASK dependencies. \begin{lstlisting}[language=bash, basicstyle=\small\ttfamily, frame=single] #!/bin/bash # Script to install DAMASK dependencies and PETSc in home # directory # References: Researchgate & https://damask.mpie.de/ #Go to home directory cd "$HOME" || exit #install dependencies sudo apt install git build-essential cmake make autoconf mpich libopenmpi-dev bison cmake-format liblapack-dev libblas-dev python3 python3-pip python3-setuptools python3-vtk9 python3-numpy python3-scipy python3-pandas python3-matplotlib python3-h5py # Download PETSc source and pick the version git clone https://gitlab.com/petsc/petsc.git cd petsc/ git checkout v3.15.5 # Configure PETSc ./configure --with-cc=mpicc --with-cxx=mpicxx --with-fc=mpif90 --download-fblaslapack --download-hdf5 --download-fftw --download-superlu --download-hypre --download-mumps --download-ml --download-scalapack --with-hdf5-fortran-bindings --download-chaco --download-netcdf --download-exodusii --download-metis --download-parmetis --download-suitesparse --download-superlu --download-superlu_dist --download-triangle --with-c2html=0 --with-debugging=0 --with-ssl=0 --with-x=0 --download-zlib --download-cmake --download-pnetcdf --with-cxx-dialect=C++11 COPTFLAGS="-O3 -march=native" CXXOPTFLAGS="-O3 -march=native" FOPTFLAGS="-O3 -march=native" PETSC_ARCH=gfortran -PETSC_DIR=`pwd` --with-debugging=0 #Build make PETSC_DIR=$HOME/petsc PETSC_ARCH=gfortran all #Check make PETSC_DIR=$HOME/petsc PETSC_ARCH=gfortran check #Go to home directory cd "$HOME" || exit # Lines to be added to .bashrc lines=($'export PETSC_DIR=/home/achal/petsc\nexport PETSC_ARCH=gfortran\nexport XAUTHORITY=~/.Xauthority\nexport HWLOC_COMPONENTS=-gl') # Check if .bashrc exists if [ -f ~/.bashrc ]; then # Append the lines to the end of .bashrc printf "%s\n" "${lines[@]}" >> ~/.bashrc echo "Lines appended to ~/.bashrc" else echo "Error: ~/.bashrc does not exist" exit 1 fi echo "Dependencies installed." echo "================================" echo -e "Run command: 'source .bashrc'" \end{lstlisting} \subsection{Git} Git is a distributed version control system for tracking changes in source code during software development. It was created in 2005 by Linus Torvalds, the principal developer of the Linux kernel. \subsection{GNU compiler Collection.} The GNU Compiler Collection is a open source project which provides set of compilers for various programming languages including C, C++, Fortran, and others. It was developed by the GNU Project, a free software project of the Free Software Foundation (FSF). \subsection{CMake} CMake is a cross-platform tool that helps build, test, and package software by generating native makefiles and project files. It allows developers to write portable configuration files that can build their software across different platforms and compilers. \subsection{MPI} Message Passing Interface (MPI) is a standardized and portable message-passing system designed for distributed and parallel computing. It allows multiple computers (or even multiple processor cores within the same computer) to exchange messages across distributed memory. \subsection{PETSc} Portable, Extensible Toolkit for Scientific Computation (PETSc) is a large library of simulation software developed by Argonne National Laboratory \cite{balay2020petsc}. It contains parallel linear and nonlinear equation solvers, ODE integrators, and optimization algorithms. \section{Run Checks and Install DAMASK} PETSc setup can be checked using an example that can be downloaded from DAMASK website: \begin{lstlisting}[language=bash, basicstyle=\small\ttfamily, frame=single] wget https://damask.mpie.de/files/installation/3.0.0-beta/ PETSc_test.tar.xz tar -xf PETSc_test.tar.xz cd PETSc_test make PETSc_test mpirun -np 2 ./PETSc_test \end{lstlisting} Downloading, compilation and installation of DAMASK can be done using the bash script below: \begin{lstlisting}[language=bash, basicstyle=\small\ttfamily, frame=single] #!/bin/bash # Source: https://damask.mpie.de/release/installation/ source_code.html # Create the DAMASK directory mkdir DAMASK cd DAMASK # Download and extract DAMASK wget https://damask.mpie.de/download/damask-3.0.0-beta.tar.xz wget https://damask.mpie.de/download/ damask-3.0.0-beta.tar.xz.sha256 sha256sum -c damask-3.0.0-beta.tar.xz.sha256 && tar -xf damask-3.0.0-beta.tar.xz # Run cmake commands for grid solver cmake -S damask-3.0.0-beta -B build-grid -DDAMASK_SOLVER=grid cmake --build build-grid --target install # Run cmake commands for mesh solver cmake -S damask-3.0.0-beta -B build-mesh -DDAMASK_SOLVER=mesh cmake --build build-mesh --target install echo "Installed DAMASK_grid and DAMASK_mesh" \end{lstlisting}