Postprocessing and Output
-
struct diverge_postprocess_conf_t
[source] Default values are obtained using
diverge_postprocess_conf_defaults_CPP()from C/C++/Python and the static constant variablediverge_postprocess_conf_defaultsfrom C.Note
This documentation does not include the defaults directly, but they are given in the (linked) source file
src/diverge_post.h.Note
Member variables with prefix are used as follows
patch_used with the patch backend
grid_used with the grid backend
tu_used with the tu backend
Note
TUFRG channels are diagonalized in transposed form (cf.
diverge_postprocess_conf_t.tu_which_solver_mode)-
double patch_q_matrices_max_rel
[source] restrict analysis to q_norm <= <val>. if <0 or >1, no restriction.
-
char patch_q_matrices_eigen_which
[source] sort q matrices eigenvalues by ‘M’agnitude, ‘P’ositive, ‘N’egative, or ‘A’lternating values
-
char grid_lingap_vertex_file_P[MAX_NAME_LENGTH]
[source] output the q=0 linearized gap vertex of the P channel to the file (if != “”)
-
char grid_lingap_vertex_file_C[MAX_NAME_LENGTH]
[source] output the q=0 linearized gap vertex of the C channel to the file (if != “”)
-
char grid_lingap_vertex_file_D[MAX_NAME_LENGTH]
[source] output the q=0 linearized gap vertex of the D channel to the file (if != “”)
-
char grid_lingap_vertex_loop_file_P[MAX_NAME_LENGTH]
[source] output the q=0 linearized gap and loop vertex of the P channel to the file (if != “”)
-
char grid_lingap_vertex_loop_file_C[MAX_NAME_LENGTH]
[source] output the q=0 linearized gap and loop vertex of the C channel to the file (if != “”)
-
char grid_lingap_vertex_loop_file_D[MAX_NAME_LENGTH]
[source] output the q=0 linearized gap and loop vertex of the D channel to the file (if != “”)
-
int grid_n_singular_values
[source] number of singular values to save for the lineraized gap solutions
-
char tu_which_solver_mode
[source] choose how to handle non hermitian entries of the channel diagonalization. options: ‘a’(utomatic), ‘s’(vd), ‘e’(igen), ‘b’(atched eigen), ‘B’(atched SVD). For ‘a’(utomatic), one can use
tu_which_solver_mode_hermiticity_limitto set a “zero” value for hermiticity detection.Note
The diagonalization happens in Channel-native memory order (e.g.
(q,43,21)for the P Channel written in C ordering). As a consequence, the eigenvectors are (21) rather than (34) what you might expect. Effectively this means you get the eigenvectors of the transposed channel, not the true channel. For chiral systems, this makes a difference…
-
bool tu_skip_channel_calc
[source] if true, the eigenvectors of each channel are not calculated. useful for RPA calculations
-
double tu_storing_threshold
[source] sets a theshold above which all eigen/singular vectors will be stored (magnitude)
-
index_t tu_n_singular_values
[source] number of singular/eigen values to save for the lineraized gap solutions
-
bool tu_susceptibilities_full
[source] calculate the susceptibilities from tufrg in o_1-o_4 notation
-
int tu_selfenergy
[source] store the selfenergy if it was included in the calculation. Iff < 0, transform the selfenergy to real space hopping parameters using
diverge_model_ham2hop_fg()(seetu_selfenergy_rs_distandtu_selfenergy_rs_mval).
-
bool tu_symmetry_maps
[source] store the symmetry transfromations for the left multiindex (works for eigenvectors)
-
index_t tu_n_decomp_values
[source] store the N leading values of the channel eigendecomposition/SVD. ignored if zero
-
bool tu_lingap_atscale
[source] use the at-scale propagator instead of the integrated one in the linearized gap, useful for RPA
-
char tu_lingap_solver_mode[4]
[source] choose how to handle diagonalizations in the linearized gap equations for each of the channels (PCD, as index), useful for RPA. options:
's'(svd),'E'(eigen, sort by absolute value),'e'(eigen, sort alternating),'t'(eigen, sort from largest),'b'(eigen, sort from smallest)
-
bool tu_susceptibilities_bare
[source] output the (flowing) bare susceptibilities, i.e., the integrated loop derivative. May result in large files.
-
int tu_channel_calc_project
[source] project the full vertex into the respective diagrammatic channel (if > 0) for diagonalization, or to physical channels (if < 0). Note that this flag has an effect only when
tu_skip_channel_calcis false.
-
double tu_which_solver_mode_hermiticity_limit
[source] limit up to which to consider a matrix “hermitian” when the solver mode in
tu_which_solver_modeis ‘a’. limit is applied to the maximum entry of the difference of the matrix and its hermitian conjugate.
-
char tu_rpa_chans[8]
[source] select channels for vertices that are projected to the P channel at q=0 and then considered for diagonalization in linearized gap of RPA attachment. must be particle-hole channels; naming follows
diverge_flow_step_vertex().
-
int tu_rpa_nev
[source] number of eigenvalues to calculate in RPA attachment. Unless
-DUSE_ARPACK_EIGENSOLVERis used at compile time (and the library is linked to arpack) the postprocessing falls back to a lapack eigensolver that goes for all eigenvalues; and is very slow.
-
int tu_rpa_ncv
[source] size of Krylov space for eigensolver in RPA attachment (only enabled when library is compiled with
-DUSE_ARPACK_EIGENSOLVER)
-
int tu_rpa_maxiter
[source] number of Kryolv iterations for eigensolver in RPA attachment (only enabled when library is compiled with
-DUSE_ARPACK_EIGENSOLVER)
-
double tu_rpa_tol
[source] tolerance of eigensolver in RPA attachment (only enabled when library is compiled with
-DUSE_ARPACK_EIGENSOLVER)
-
char tu_rpa_sorting
[source] eigenvalue sorting and selection: most ‘N’egative, most ‘P’ositive, or largest ‘M’agnitude (cf.
single_eigen_sort())
-
static const diverge_postprocess_conf_t diverge_postprocess_conf_defaults
[source] defaults for C
-
diverge_postprocess_conf_t diverge_postprocess_conf_defaults_CPP(void)
[source] return default values in C, C++, and Python
-
void diverge_postprocess_and_write(diverge_flow_step_t *st, const char *file)
[source] Post-processing and output to disk as .dvg file. Those files can be read by the
diverge.outputPython library (see Simulation Output). File format specification depends on the chosen backend. In general, the header (shown in the figures) is followed by data. For the TUFRG backend, displacements are in bytes while sizes are in units of the respective datatype. For the other backends, all units areindex_t(i.e. 64bit). Default values fromdiverge_postprocess_conf_t(i.e.diverge_postprocess_conf_defaults_CPP()) are taken. For more control, usediverge_postprocess_and_write_finegrained()or its pyhton wrapperdiverge.postprocess_and_write_PY().Grid-FRG:
Patch-FRG:
TUFRG:
as for model output files (see
diverge_model_to_file()), the TUFRG output file has reserved space for the future. If the 125th field is nonzero, the actual header size is256*sizeof(int64_t).
-
void diverge_postprocess_and_write_finegrained(diverge_flow_step_t *st, const char *file, const diverge_postprocess_conf_t *cfg)
[source] same as
diverge_postprocess_and_write()but with control over the parameters indiverge_postprocess_conf_t.diverge_postprocess_and_write()uses the defaults (diverge_postprocess_conf_defaultsordiverge_postprocess_conf_defaults_CPP()).
-
void diverge_postprocess_and_write_fg(diverge_flow_step_t *st, const char *file, const diverge_postprocess_conf_t *cfg)
[source]