CIPHER
A phase-field simulation tool for microstructure evolution in multi-component alloy systems
Install / Use
/learn @micmog/CIPHERREADME
CIPHER: Calphad Integrated PHase-field solvER
What is this?
CIPHER is a phase-field simulation code for microstructure evolution in multi-component alloy systems. Features include:
- Automatic parallel adaptive mesh refinement.
- Local truncation error estimates and adaptive time stepping.
- Designed for large number of phases (10-10000), with constant computational complexity, i.e. computational cost is independent of the number of phases.
- Efficient grand-canonical-based phase-field implementation with direct use of Compound-Energy-Formalism and other CALPHAD thermodynamic models for multi-component systems [1].
- Designed for MPI parallelization and scalability.
Requirements
This software requires MPI, p4est [2], and PETSc [3].
Note that the following installation instructions are specific to users of the University of Manchester's Computational Shared Facility (CSF). Non CSF users will need to follow their local procedures to install PETSc.
To install CIPHER:
# Set environment variables and location to install CIPHER.
export BASE_PATH=$PATH
export BASE_LD_LIBRARY_PATH=$LD_LIBRARY_PATH
export CIPHER_DIR=<path/to/cipher>
# Replace <path/to/cipher> with specific location, e.g. export CIPHER_DIR=$HOME/software/CIPHER. It is recommended to place these in your .bashrc/.bash_profile.
# Clone the CIPHER repository with:
module load tools/env/proxy
git clone --recurse-submodules https://github.com/micmog/CIPHER.git $CIPHER_DIR
# Install PETSc:
cd $CIPHER_DIR/petsc
module load tools/gcc/cmake/3.23.0
module load mpi/intel-19.1/openmpi/4.1.1
./configure --download-metis --download-parmetis --download-chaco --download-triangle --download-ctetgen --download-pragmatic --download-eigen --download-hypre --download-ml --download-hdf5 --download-zlib --download-yaml --download-p4est --with-pthread --with-mkl_pardiso-dir=$MKLROOT --with-mkl_sparse-dir=$MKLROOT --with-mkl_sparse_optimize-dir=$MKLROOT --with-blaslapack-dir=$MKLROOT --with-cxx-dialect=C++11 --with-debugging=0 COPTFLAGS="-O2 -msse4.2 -axSSE4.2,AVX,CORE-AVX2" CXXOPTFLAGS="-O2 -msse4.2 -axSSE4.2,AVX,CORE-AVX2" FOPTFLAGS="-O2 -msse4.2 -axSSE4.2,AVX,CORE-AVX2" PETSC_ARCH=cipher PETSC_DIR=$CIPHER_DIR/petsc
make PETSC_ARCH=cipher PETSC_DIR=$CIPHER_DIR/petsc all
cd $CIPHER_DIR
# Set up CIPHER environment
source $CIPHER_DIR/load_CIPHER.sh
# Install CIPHER
make clean
make install
Usage
Running an example:
# Set environment variables, if you have not already added these to your .bashrc or .bash_profile.
export BASE_PATH=$PATH
export BASE_LD_LIBRARY_PATH=$LD_LIBRARY_PATH
export CIPHER_DIR=<path/to/cipher>
# Set up CIPHER environment
source $CIPHER_DIR/load_CIPHER.sh
# Navigate to examples folder
cd $CIPHER_DIR/examples/GrainBoundaryPrecipitate
# run example
mpiexec -n 4 cipher.exe --config GrainBoundaryPrecipitate.yaml
Contact
This code is maintained by the Microstructure Modelling Group at the University of Manchester. For questions, comments, bug-reports or contributions please email Dr. Pratheek Shanthraj at pratheek.shanthraj@manchester.ac.uk.
Funding
Development of CIPHER is primarily funded through EPSRC programme grants NEWAM (EP/R027218/1) and LightForm (EP/R001715/1).
References
[1] Grand-canonical phase-field implementation: https://doi.org/10.1016/j.cma.2020.113029
[2] p4est: http://www.p4est.org
[3] PETSc: https://www.mcs.anl.gov/petsc/
License
You are free to use and redistribute this is a free software under the terms of the GNU General Public License v3.0.
Related Skills
node-connect
350.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
350.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
350.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
