Example of SEET embedding calculation
Here we provide a worked example of a Self-Energy Embedding Theory (SEET) calculation on
top of a weak-coupling result. Prerequisites: you must have green-mbpt (providing
embedding.exe) and the SEET exact-diagonalization impurity solver installed — see the
SEET Impurity Solver installation guide. We assume you
have already solved the weak-coupling problem for the input file input.h5, with results
in the sim.h5 file.
Initialization
The input data for SEET can be prepared with the help of the init_seet.py file which is
available in the SEET installation directory:
python <installation path>/python/init_seet.py --orth true --gf2_input_file sim.h5 \
--transform_file transform.h5 --active_space 0 1 --active_space 2 3 \
--from_ibz true --orth_method symmetrical_orbitals --input_file input.h5The various parameters used in this step primarily control the orbitals used in the active space and the type of orthogonalization:
--orth=true– requests orthogonalization of orbitals,--input_file– path to the input file for weak-coupling (e.g., GW, GF2) solution,--gf2_input_file– path to the weak-coupling output file,--transform_file– path to the output file containing transformation matrices,--active_space– multiple sets of orbital indices to define the active space for impurities,--from_ibz– set totrueif thesim.h5is in the reduced Brillouin Zone,--orth_method– type of orthogonalization (available options:natural_orbitals,symmetrical_orbitals, andcanonical_orbitals),
Selecting active-space orbitals
One of the most important step in SEET is to select the correct orbitals to form the active space, also known as the impurity. The process generally involves heuristics and analysis of the weak-coupling result. For instance, one can look at occupation number of symmetrized atomic orbitals (SAO) and identify half-filled -orbitals as impurity. For further details, please see the SEET theory page and references therein.
In the example above, we construct orthogonal transformation matrices using symmetrical orthogonalization. We choose two active subspaces of correlated orbitals ({0, 1} and {2, 3}).
Note that these are orbital numbers in the chosen orthogonal basis.
Since Green results are obtained in the reduced Brillouin zone we also specify --from_ibz=true.
As the result we will get transform.h5 file with orthogonal trasformation matrices and projection matrices.
Integral Transformation
The next preprocessing step for SEET solver is the transformation of the active-space two-electron integrals to the orthonormal basis-set selected and prepared in the previous step. This is done by calling
<installation path>/bin/int-transform.exe --input_file transform.h5 --in_file input.h5 --in_int_file df_int --transform 1Here the following parameters have to be provided:
--input_file– file with the trasformation matrices that has been obtained at the previous step--in_file– input file for the weak-coupling problem, i.e.,input.h5from the previous step--in_int_file– path to two body integrals that will be used for impurity problem. Note thatGreenhas two sets of integrals, one to be used for Hartree-Fock solution, and one that is used forGWcalculations. We strongly advise usingGWintegrals as they contain additional finite-size correction.
This procedure is time consuming and we advise to submit it as a job on a cluster.
Embedding solution
After all the preparations are done, SEET can be run as
<installation path>/bin/embedding.exe --scf_type=GW --BETA 100 \
--grid_file ir/1e4.h5 --itermax 1 --results_file sim.seet.h5 --weak_results sim.h5 --embedding_type SEET \
--mixing_type CDIIS --diis_start 2 --diis_size 5 --mixing_weight 0.3 \
--seet_input transform.h5 --bath_file bath.txt \
--impurity_solver_exec <path to seet ED solver> \
--impurity_solver_params " --arpack.NEV=8 --arpack.NCV=20 --lanc.NOMEGA=1000 --FREQ_FILE=<installation path>/share/ir/1e4.h5 --FREQ_PATH=/fermi/ngrid " \
--dc_data_prefix "dc_int" \
--seet_root_dir "./seet" \
--spin_symm trueThe following parameters in additional to regular Green parameters are used
--weak_results– initial results obtained from weak-coupling solver--embedding_type– type of SEET,FC_SEETfor full self-consistency,SEETfor inner self-consistency--seet_input– transformation matricies for impurity problems--bath_file– initial guess for impurity bath parameters--impurity_solver_exec– path toseet_solversexact diagonalization executable--impurity_solver_params– parameters for Exact diagonalization solver--dc_data_prefix– prefix for double-counting directories (has to bedc_int)--seet_root_dir– root directory forSEETintermediate input/outputs--spin_symm– whether the bath spin-symmetrization is needed during bath-fitting
Bath file
The bath file provides an initial guess for constructing the impurity-bath interaction in the Anderson impurity model for the active space. This interaction is constructed by fitting the hybridization to the form
where the interaction and energy ’s are both unknowns (see Theory for more details).
For our example, the bath file may be initialized as:
2 6
3 3
0.5 0.5 0.5 -1.0 0 1.0
0.5 0.5 0.5 -1.0 0 1.0
2 6
3 3
0.5 0.5 0.5 -1.0 0.0 1.0
0.5 0.5 0.5 -1.0 0.0 1.0The format for bath file is as follows (example below):
- For each impurity, we first specify two numbers: number of impurity orbitals and total number of bath sites. Here, we have 2 impurity orbitals and 6 bath sites for each impurity.
- In the next line, we specify the number of bath sites for each impurity orbital, which we choose as {3, 3}.
- Finally, for each impurity orbital we specify the initial values for and for . In our example, we initialize all the ’s to 0.5 and the ’s to {-1.0, 0.0, 1.0}.