FerroX
FerroX is a massively parallel, 3D phase-field simulation framework for modeling ferroelectric materials based scalable logic devices. We self-consistently solve the time-dependent Ginzburg Landau (TDGL) equation for ferroelectric polarization, Poisson’s equation for electric potential, and semiconductor charge equation for carrier densities in semiconductor regions. The algorithm is implemented using Exascale Computing Project software framework, AMReX, which provides effective scalability on manycore and GPU-based supercomputing architectures. The code can be used for simulations of ferroelectric domain-wall induced negative capacitance (NC) effect in Metal-Ferroelectric-Insulator-Metal (MFIM) and Metal-Ferroelectric-Insulator-Semiconductor-Metal (MFISM) devices.
Our community is here to help. Please report installation problems in case you should get stuck.
Installation
First, download the AMReX repository:
git clone https://github.com:AMReX-Codes/amrex.git
At the same directory level as AMReX, download the FerroX Repository:
git clone https://github.com/AMReX-Microelectronics/FerroX.git
Build
Make sure that the AMReX and FerroX are cloned in the same location in your filesystem before continuing. Note that the commands to build FerroX depend on your computer’s hardware configuration. Navigate to the Exec folder within the FerroX directory and execute the following commands based on your setup:
If running on a computer with a GPU:
make -j 4
If running on a computer with a CPU:
make -j 4 USE_CUDA=FALSE
Enabling sundials support while building (computer with CPU):
make -j 4 USE_CUDA=FALSE USE_SUNDIALS=TRUE
If you want to use FerroX on a specific high-performance computing (HPC) system, follow the same steps as above. For MPI+CUDA build, make sure that appropriate CUDA modules are loaded. For instance, on Perlmutter you will need to do:
module load cudatoolkit
Incorporating SUNDIALS
If you want to incorporate the SUNDIALS library into your FerroX code, first follow the SUNDIALS installation steps as described here. To build the code with SUNDIALS support enabled, you can include the USE_SUNDIALS=TRUE option with the appropriate build command (refer to the example under the ‘Build’ heading).