95 , trotter_order(parse_trotter_order((*parms)[
"te_order"]))
98 maquis::cout <<
"Using nearest-neighbors time evolution." << std::endl;
99 maquis::cout <<
"Using " << trotter_order << std::endl;
100 maquis::cout <<
"Time evolution optimization is "
101 << (((*parms)[
"te_optim"]) ?
"enabled" :
"disabled")
105 switch (trotter_order){
108 gates_coeff.push_back(std::make_pair(0,0.5));
109 gates_coeff.push_back(std::make_pair(1,1.));
115 if ((*parms)[
"te_optim"])
117 gates_coeff.push_back(std::make_pair(0,1.));
119 Useq_bmeas.push_back(0);
120 Useq_bmeas.push_back(1);
121 Useq_bmeas.push_back(2);
123 Useq_double.push_back(1);
124 Useq_double.push_back(2);
126 Useq_ameas.push_back(1);
127 Useq_ameas.push_back(0);
130 maquis::cout <<
"Sequence initialized with " << Useq.size() <<
" terms." << std::endl;
135 double alpha_1=1./(4.0-pow(4.0,0.33333));
136 double alpha_3=1.-4.0*alpha_1;
138 gates_coeff.push_back(std::make_pair(0,alpha_1*0.5));
139 gates_coeff.push_back(std::make_pair(1,alpha_1));
140 gates_coeff.push_back(std::make_pair(0,alpha_3*0.5));
141 gates_coeff.push_back(std::make_pair(1,alpha_3));
159 if ((*parms)[
"te_optim"])
161 gates_coeff.push_back(std::make_pair(0,alpha_1));
162 gates_coeff.push_back(std::make_pair(0,alpha_3*0.5+alpha_1*0.5));
164 Useq_bmeas.push_back(0);
165 Useq_bmeas.push_back(1);
166 Useq_bmeas.push_back(4);
167 Useq_bmeas.push_back(1);
168 Useq_bmeas.push_back(5);
169 Useq_bmeas.push_back(3);
170 Useq_bmeas.push_back(5);
171 Useq_bmeas.push_back(1);
172 Useq_bmeas.push_back(4);
173 Useq_bmeas.push_back(1);
174 Useq_bmeas.push_back(4);
176 Useq_double.push_back(1);
177 Useq_double.push_back(4);
178 Useq_double.push_back(1);
179 Useq_double.push_back(5);
180 Useq_double.push_back(3);
181 Useq_double.push_back(5);
182 Useq_double.push_back(1);
183 Useq_double.push_back(4);
184 Useq_double.push_back(1);
185 Useq_double.push_back(4);
187 Useq_ameas.push_back(1);
188 Useq_ameas.push_back(4);
189 Useq_ameas.push_back(1);
190 Useq_ameas.push_back(5);
191 Useq_ameas.push_back(3);
192 Useq_ameas.push_back(5);
193 Useq_ameas.push_back(1);
194 Useq_ameas.push_back(4);
195 Useq_ameas.push_back(1);
196 Useq_ameas.push_back(0);
198 maquis::cout <<
"Sequence initialized with " << Useq.size() <<
" terms." << std::endl;
204 throw std::runtime_error(
"uknown Trotter decomposition");
std::vector< block_matrix< Matrix, SymmGroup > > hamil_to_blocks(Lattice const &lat, Model< Matrix, SymmGroup > const &model)
void prepare_te_terms(unsigned sweep)