Build System and Options¶
This document describes the CMake build system and compile-time options for StdFace.
Overview¶
StdFace uses CMake as its build system. The build produces variant executables for different target solvers (HPhi, mVMC, UHF, HWAVE), each with mode-specific functionality enabled via preprocessor defines.
Source references:
CMakeLists.txt(root)src/CMakeLists.txt
Build Requirements¶
CMake 2.8.12 or later
C99-compatible compiler
Standard math library (
libm)Optional: MPI library (for MPI-aware error handling)
CMake Options¶
The following CMake options control which executables are built:
Option |
Default |
Description |
|---|---|---|
|
OFF |
Build |
|
OFF |
Build |
|
OFF |
Build |
|
OFF |
Build |
Source reference: CMakeLists.txt lines 8-11
option(UHF "Build uhf_dry.out" OFF)
option(MVMC "Build mvmc_dry.out" OFF)
option(HPHI "Build hphi_dry.out" OFF)
option(HWAVE "Build hwave_dry.out" OFF)
Build Configuration Examples¶
Build for HPhi solver:
mkdir build && cd build
cmake .. -DHPHI=ON
make
Build for multiple solvers:
cmake .. -DHPHI=ON -DMVMC=ON -DUHF=ON -DHWAVE=ON
make
Preprocessor Defines¶
Each build mode defines a preprocessor macro that enables mode-specific code:
CMake Option |
Preprocessor Define |
Affected Features |
|---|---|---|
|
|
UHF-specific fields in StdIntList |
|
|
mVMC orbital/variational functions |
|
|
HPhi Lanczos and boost functions |
|
|
HWAVE export functions (Wannier90 export) |
Source reference: src/CMakeLists.txt
if(UHF)
add_library(StdFace_uhf STATIC ${SOURCES_StdFace})
target_compile_definitions(StdFace_uhf PUBLIC _UHF)
add_executable(uhf_dry.out dry.c)
target_compile_definitions(uhf_dry.out PUBLIC _UHF)
target_link_libraries(uhf_dry.out PUBLIC StdFace_uhf m)
endif()
Build Artifacts¶
Each enabled mode produces:
A static library:
StdFace_<mode>An executable:
<mode>_dry.out
Mode |
Library |
Executable |
|---|---|---|
UHF |
|
|
MVMC |
|
|
HPHI |
|
|
HWAVE |
|
|
Conditional Compilation¶
Mode-Specific Code Blocks¶
Mode-specific code is wrapped in preprocessor conditionals:
#if defined(_HPhi)
void StdFace_Chain_Boost(struct StdIntList *StdI);
void StdFace_Ladder_Boost(struct StdIntList *StdI);
void StdFace_Honeycomb_Boost(struct StdIntList *StdI);
void StdFace_Kagome_Boost(struct StdIntList *StdI);
#endif
#if defined(_mVMC)
void StdFace_generate_orb(struct StdIntList *StdI);
void StdFace_Proj(struct StdIntList *StdI);
void PrintJastrow(struct StdIntList *StdI);
#endif
Source reference: src/StdFace_ModelUtil.h
export_wannier90.h (HWAVE Only)¶
The export_wannier90.h header provides Wannier90 export functions that are
only available when _HWAVE is defined:
#if defined(_HWAVE)
void ExportGeometry(struct StdIntList *StdI, FILE *fp);
void ExportInteraction(struct StdIntList *StdI, FILE *fp);
#endif
Source reference: src/export_wannier90.h
These functions export lattice geometry and interaction data in Wannier90 format for downstream processing by the HWAVE solver.
StdIntList Mode-Specific Fields¶
The StdIntList structure contains additional fields depending on build mode:
HPhi mode (
_HPhi): Lanczos parameters, spectrum calculation settings, time evolution parametersmVMC mode (
_mVMC): Variational parameters, sublattice settings, orbital indicesUHF mode (
_UHF): Mean-field iteration parameters, sublattice settingsHWAVE mode (
_HWAVE): Wannier90 export settings (similar to UHF)
Source reference: src/StdFace_vals.h
Source Files¶
The following source files are compiled into each StdFace variant:
File |
Description |
|---|---|
|
Main entry and orchestration |
|
Core model utilities |
|
1D chain lattice |
|
Ladder lattice |
|
Face-centered orthorhombic lattice |
|
Honeycomb lattice |
|
Kagome lattice |
|
Orthorhombic/cubic lattice |
|
Pyrochlore lattice |
|
Square lattice |
|
Triangular lattice |
|
Wannier90 import |
|
Wannier90 export (HWAVE) |
|
Version information |
|
Memory allocation utilities |
Source reference: src/CMakeLists.txt
Source References¶
CMake configuration:
CMakeLists.txt,src/CMakeLists.txtConditional declarations:
src/StdFace_ModelUtil.hMode-specific structure fields:
src/StdFace_vals.hHWAVE export functions:
src/export_wannier90.h