Internals
Functions to generate and access internal structures. Kinetics are initalized
with diverge_model_internals_common(). Backend-specific interaction
internals with diverge_model_internals_tu(),
diverge_model_internals_patch(), diverge_model_internals_grid(),
or diverge_model_internals_any().
Internals can be accessed through several getter functions that may break when using non-standard models (custom Hamiltonians etc.):
-
int diverge_model_validate(diverge_model_t *model)
[source] Check for errors in the user defined model
-
void diverge_model_internals_common(diverge_model_t *model)
[source] Prepare the common part of the
internals_tstruct, including Hamiltonian, Eigenvectors/Eigenvalues, momentum meshes, etc.
-
void diverge_model_internals_any(diverge_model_t *model, const char *mode, ...)
[source] Prepare internal structure for the computation mode specified as string in mode; can be
"grid","patch", or"tu". Dispatches to the corrseponding function, i.e.,For
diverge_model_internals_grid(), no additional parameters are needed.For
diverge_model_internals_patch(), one additional parameter (index_t np_ibz) must be passed. Documentation found indiverge_model_internals_patch().For
diverge_model_internals_tu(), one additional parameter (double max_dist) must be passed. Documentation found indiverge_model_internals_tu().
-
void diverge_model_internals_grid(diverge_model_t *model)
[source] Prepare the grid FRG part of the
internals_tstructure.
-
void diverge_model_internals_patch(diverge_model_t *model, index_t np_ibz)
[source] Prepare the patch part of the
internals_tstruct as well as themom_patching_tstruct (diverge_model_t.patching) if it is not allocated.Note
divERGe can only generate and operate on the npatch backend if there is no refinement set through
diverge_model_t.nkf, i.e., ones in those spots wherediverge_model_t.nkis nonzero. Some of the patching routines further assume a two-dimensional model – not the actual FRG kernels, merely some helper functions.- Parameters:
model (diverge_model_t) – model instance
np_ibz (index_t) – number of patches to search for in the IBZ if
diverge_model_t.patchingis NULL
-
void diverge_model_internals_tu(diverge_model_t *model, double max_dist)
[source] Prepare the TU part of the
internals_tstruct.- Parameters:
model (diverge_model_t) – model instance
max_dist (double) – distance up to which formfactors should be included. If the return value of
diverge_max_dist_iobi()is passed (a special ‘nan’), formfactors that adhere to the IOBI approximation are generated.
-
double diverge_max_dist_iobi(void)
[source] return magic value for formfactor setup (max_dist value in
diverge_model_internals_tu()) of TUFRG such that only on-site intraorbital formfactors are generated (IOBI approximation). Uses quiet nan payload, i.e., returns ‘nan’. Might break if non-IEEE floating point numbers are in use.
-
void diverge_model_internals_reset(diverge_model_t *model)
[source] Reset all internal structures of the model and free their resources. Does not reset the patching. Usage is discouraged.
-
double *diverge_model_internals_get_E(const diverge_model_t *model)
[source] returns the internally generated energies (nk*nkf, nb).
diverge_model_internals_common()must have been called, otherwise NULL is returned.
-
complex128_t *diverge_model_internals_get_U(const diverge_model_t *model)
[source] returns the internally generated orbital to band transform (nk*nkf, nb, nb). Note that this array is ordered as (k, band, orb); contrary to what you might expect from pure C ordered eigensolvers; reason being CUDA.
diverge_model_internals_common()must have been called, otherwise NULL is returned.
-
complex128_t *diverge_model_internals_get_H(const diverge_model_t *model)
[source] returns the internally generated hamiltonian (nk*nkf, nb, nb)
diverge_model_internals_common()must have been called, otherwise NULL is returned.
-
double *diverge_model_internals_get_kmesh(const diverge_model_t *model)
[source] returns the internally generated coarse momentum mesh (nk, 3)
diverge_model_internals_common()must have been called, otherwise NULL is returned.
-
double *diverge_model_internals_get_kfmesh(const diverge_model_t *model)
[source] returns the internally generated coarse momentum mesh (nk*nkf, 3)
diverge_model_internals_common()must have been called, otherwise NULL is returned.
-
gf_complex_t *diverge_model_internals_get_greens(const diverge_model_t *model)
[source] returns the internal Green’s function buffer (2, nk*nkf, nb, nb)
diverge_model_internals_common()must have been called, otherwise NULL is returned.
-
index_t diverge_model_internals_get_dim(const diverge_model_t *model)
[source] returns the dimension (
diverge_model_internals_common()should be called prior)
-
diverge_lattice_t diverge_model_internals_get_rlattice(const diverge_model_t *model)
[source] return the reciprocal lattice (
diverge_model_internals_common()should be called prior)