void DMRGCat::SuperBlock::calGroundState(){ Conjugate con(Dim); con.setErrorBar(4.e-30); long iter = 0; bool breakfor = false; for (int j = 0; j < 400; j++){ if (iter == 0){ f1tof2(con.f0.memptr(), con.f1.memptr());// f1 = H f0 } breakfor = con.abc_2(iter); if (breakfor){ break; } f1tof2(con.f2.memptr(), con.f3.memptr()); // f3 = H f2 con.abc_4(); iter++; //if (iter == 30){ // con.restart(iter); //} } double GsEnergy = con.eng; con.NormTo1(con.f0); GsWave.v2QWave(con.f0.memptr());// change sup.Wave = GSWave <- f0 std::cout << "Dim=" << std::setiosflags(std::ios::left) << std::setw(8) << Dim; std::cout << "E=" << std::setiosflags(std::ios::left) << std::setw(16) << std::setprecision(10) << con.eng << "\n"; }
//the point f translate to g void Super::f1tof2(const double* f, double* g) { std::vector<double> f1, g1; for (int i = 0; i<Dim; i++) { f1.push_back(f[i]); } f1tof2(f1, g1); for (int i = 0; i<Dim; i++) { g[i] = g1[i]; } }