1#ifndef DOUBLEHEISENBERGMODELU1
2#define DOUBLEHEISENBERGMODELU1
12#include "Geometry2D.h"
17class HeisenbergU1xU1 :
public Mpo<Sym::S1xS2<Sym::U1<Sym::SpinU1>,Sym::U1<Sym::SpinU1> > ,double>,
29 typedef Eigen::Matrix<double,Eigen::Dynamic,Eigen::Dynamic>
MatrixType;
43 size_t Lcell = P.size();
45 for (
size_t l=0; l<
N_sites; ++l)
N_phys += P.get<
size_t>(
"Ly",l%Lcell);
77 {
"J",0.}, {
"Jprime",0.}, {
"Jrung",0.},
78 {
"Jxy",0.}, {
"Jxyprime",0.}, {
"Jxyrung",0.},
79 {
"Jz",0.}, {
"Jzprime",0.}, {
"Jzrung",0.},
81 {
"Dy",0.}, {
"Dyprime",0.}, {
"Dyrung",0.},
84 {
"D",2ul}, {
"maxPower",2ul}, {
"CYLINDER",
false}, {
"Ly",1ul}, {
"mfactor",1}
89 {
"max_alpha",100.}, {
"min_alpha",1e-11}, {
"lim_alpha",11ul}, {
"eps_svd",1e-7},
90 {
"Dincr_abs", 2ul}, {
"Dincr_per", 2ul}, {
"Dincr_rel", 1.1},
91 {
"min_Nsv",1ul}, {
"max_Nrich",-1},
92 {
"max_halfsweeps",30ul}, {
"min_halfsweeps",6ul},
93 {
"Dinit",3ul}, {
"Qinit",20ul}, {
"Dlimit",500ul},
94 {
"tol_eigval",1e-6}, {
"tol_state",1e-5},
105 size_t Lcell = P.size();
112 for (
size_t l=0; l<
N_sites; ++l)
114 N_phys += P.get<
size_t>(
"Ly",l%Lcell);
118 this->
set_name(
"HeisenbergSystemU1xBathU1");
121 std::vector<std::vector<std::string>> labellist;
vector< SpinBase< Sym::S1xS2< Sym::U1< Sym::SpinU1 >, Sym::U1< Sym::SpinU1 > > > > B
void finalize(const bool COMPRESS=true, const std::size_t power=1, const double tolerance=::mynumeric_limits< double >::epsilon())
void setLocBasis(const std::vector< std::vector< qType > > &q)
DMRG::VERBOSITY::OPTION VERB
void set_name(const std::string &label_in)
void precalc_TwoSiteData(bool FORCE=false)
void construct_from_pushlist(const PushType< OperatorType, CouplScalar > &pushlist, const std::vector< std::vector< std::string > > &labellist, size_t Lcell)
static void set_operators(const std::vector< SpinBase< Symmetry_ > > &B, const ParamHandler &P, PushType< SiteOperator< Symmetry_, double >, double > &pushlist, std::vector< std::vector< std::string > > &labellist, const BC boundary=BC::OPEN)
static const map< string, any > defaults
static qarray< 2 > singlet(int N=0)
static constexpr MODEL_FAMILY FAMILY
SiteOperatorQ< Symmetry, MatrixType > OperatorType
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixType
Sym::S1xS2< Sym::U1< Sym::SpinU1 >, Sym::U1< Sym::SpinU1 > > Symmetry
HeisenbergU1xU1(Mpo< Symmetry > &Mpo_input, const vector< Param > ¶ms)
static const map< string, any > sweep_defaults
#define MAKE_TYPEDEFS(MODEL)