1#ifndef STRAWBERRY_SpinlessFermions
2#define STRAWBERRY_SpinlessFermions
5#include "models/SpinlessFermionsU1.h"
6#include "models/SpinlessFermionsZ2.h"
46 template<
typename Symmetry_>
49 static const std::map<string,std::any>
defaults;
55 {
"t",1.}, {
"Delta",0.}, {
"tPrime",0.},
57 {
"Vprime",0.}, {
"VphPrime",0.},
59 {
"D",2ul}, {
"CALC_SQUARE",
true}, {
"CYLINDER",
false}, {
"OPEN_BC",
true}, {
"Ly",1ul},
64 {
"max_alpha",100.}, {
"min_alpha",1.e-11}, {
"lim_alpha",10ul}, {
"eps_svd",1.e-7},
65 {
"Dincr_abs", 4ul}, {
"Dincr_per", 2ul}, {
"Dincr_rel", 1.1},
66 {
"min_Nsv",0ul}, {
"max_Nrich",-1},
67 {
"max_halfsweeps",40ul}, {
"min_halfsweeps",1ul},
68 {
"Dinit",10ul}, {
"Qinit",2ul}, {
"Dlimit",1000ul},
69 {
"tol_eigval",1.e-5}, {
"tol_state",1.e-5},
80 size_t Lcell = P.size();
82 for (
size_t l=0; l<
N_sites; ++l)
84 N_phys += P.get<
size_t>(
"Ly",l%Lcell);
93 this->construct_from_Terms(Terms, Lcell, P.get<
bool>(
"CALC_SQUARE"), P.get<
bool>(
"OPEN_BC"));
void set_name(const std::string &label_in)
void setLocBasis(const std::vector< std::vector< qType > > &q)
void precalc_TwoSiteData(bool FORCE=false)
vector< SpinlessFermionBase< Sym::U0 > > F
static void set_operators(const std::vector< SpinlessFermionBase< Symmetry_ > > &F, const ParamHandler &P, PushType< SiteOperator< Symmetry_, double >, double > &pushlist, std::vector< std::vector< std::string > > &labellist, const BC boundary=BC::OPEN)
static void add_operators(const std::vector< SpinlessFermionBase< Symmetry_ > > &B, const ParamHandler &P, HamiltonianTermsXd< Symmetry_ > &Terms)
static const std::map< string, std::any > sweep_defaults
static const std::map< string, std::any > defaults
static qarray< 0 > singlet(int N)
static constexpr MODEL_FAMILY FAMILY
static void add_operators(const std::vector< SpinlessFermionBase< Symmetry_ > > &B, const ParamHandler &P, HamiltonianTermsXd< Symmetry_ > &Terms)
#define MAKE_TYPEDEFS(MODEL)