ELEQTRONeX
Our community is here to help. Please report installation problems in case you are stuck.
Follow these instructions for compilation.
1. Download
To download the codes in your local linux system or on a specific high-performance computing (HPC) system:
Download AMReX Repository as
git clone git@github.com:AMReX-Codes/amrex.git
Download ELEQTRONeX Repository in the folder hierarchy level as AMReX as
git@github.com:AMReX-Microelectronics/ELEQTRONeX.git
2. Build Parameters
Navigate to the Exec/
folder of ELEQTRONeX and execute
make -j <np>
Replace <np> with the number of processes you want to use.
To build with MPI and CUDA, ensure that either MPICH or OpenMPI, along with the appropriate CUDA modules, are installed and loaded. In the GNUmakefile
located in the Exec/
directory, set USE_MPI=TRUE
to enable MPI support, USE_OMP=FALSE
to disable OpenMP, and USE_CUDA=TRUE
to activate CUDA support for GPU utilization.
Other flags are explained below, with their default values shown:
AMREX_HOME ?= ../../amrex
specifies the location of the AMReX library.DEBUG=FALSE
sets the debug mode.USE_HYPRE=FALSE
can be used to sethypre
for the multigrid bottom solver. Installation instructions forhypre
are provided here.COMP=gnu
sets the GNU compiler.DIM=3
builds the code for 3D domain.CXXSTD=c++17
sets C++17 for compilation.TINY_PROFILE=FALSE
is used to enable the AMReX profiler.
Set the following flags based on your configuration needs:
USE_EB=TRUE
if the input file sets embedded boundaries.USE_TRANSPORT=TRUE
for enabling the transport solver, which uses the nonequilibrium Green’s function (NEGF) method.COMPUTE_GREENS_FUNCTION_OFFDIAG_ELEMS=FALSE
andCOMPUTE_SPECTRAL_FUNCTION_OFFDIAG_ELEMS=FALSE
to switch off computations and storage of off-diagonal elements of Green’s and spectral functions in the NEGF solver.BROYDEN_PARALLEL=TRUE
uses an efficient parallel version of the Broyden’s algorithm for self-consistency between electrostatics and NEGF modules.TIME_DEPENDENT=TRUE
builds the code for accepting voltages on the embedded boundaries with varying values, for example setting a range of values to obtain full current-voltage characteristics.
3. Preprocessor Flags
Set preprocessor flags in the ../Source/Code_Definitions.H
file before compiling the code, depending on your configuration needs.
The important ones are:
#define NUM_MODES 1
sets the size of block for each matrix element used in NEGF. For example, for modeling carbon nanotubes with single mode using mode-space approximation, NUM_MODES is set to 1, which implies each element of Hamiltonian matrix is a number. If it were 2, it would be an array of size 2. For other materials, this number may set the matrix block as a submatrix of sizeNUM_MODES x NUM_MODES
.#define NUM_CONTACTS 2
sets number of metal leads to 2 for source and drain. At present, the code is verified for 2 leads.