template<> void Op_component<Cre>::add_local_indices(int i, int j , int k) { m_op.add_local_index(i); std::vector<boost::shared_ptr<Cre> >& vec = m_op(i); vec.resize(1); vec[0]=boost::shared_ptr<Cre>(new Cre); }
math::Vector<2> LinearJoint<OP_T>::value() { math::Vector<2> curDst(m_v2 - m_v1); real_t kx = m_op(curDst.length() - m_dst.length(), *this); if (!curDst.isZero()) { curDst.normalize(); curDst *= kx; return curDst; } else return math::Vector<2>(); }
template<> void Op_component<CreCreComp>::add_local_indices(int i, int j , int k) { m_op.add_local_indices(i,j); std::vector<boost::shared_ptr<CreCreComp> >& vec = m_op(i,j); SpinQuantum spin1 = getSpinQuantum(i);//SpinQuantum(1, 1, SymmetryOfSpatialOrb(i)); SpinQuantum spin2 = getSpinQuantum(j);//SpinQuantum(1, 1, SymmetryOfSpatialOrb(j)); std::vector<SpinQuantum> spinvec = spin1+spin2; vec.resize(spinvec.size()); for (int j=0; j<spinvec.size(); j++) vec[j]=boost::shared_ptr<CreCreComp>(new CreCreComp); }
void t_trans(matrix trans, real d[], real **ev) { rvec x; int j; for (j = 0; (j < DIM); j++) { x[XX] = ev[1][j+1]; x[YY] = ev[2][j+1]; x[ZZ] = ev[3][j+1]; m_op(trans, x); fprintf(stderr, "d[%d]=%g\n", j, d[j+1]); } }
template<> void Op_component<Ham>::build_iterators(SpinBlock& b) { m_op.set_indices(); m_op(0).resize(1); m_op(0)[0]=boost::shared_ptr<Ham>(new Ham); m_op(0)[0]->set_orbs() = std::vector<int>(); m_op(0)[0]->set_initialised() = true; m_op(0)[0]->set_fermion() = false; if (dmrginp.hamiltonian() == BCS) { m_op(0)[0]->resize_deltaQuantum(5); for (int i = 0; i <5; ++i) { m_op(0)[0]->set_deltaQuantum(i) = SpinQuantum(2*(i-2), SpinSpace(0), IrrepSpace(0) ); } } else { m_op(0)[0]->set_deltaQuantum(1, SpinQuantum(0, SpinSpace(0), IrrepSpace(0))); } }
template<> void Op_component<Overlap>::build_iterators(SpinBlock& b) { m_op.set_indices(); m_op(0).resize(1); m_op(0)[0]=boost::shared_ptr<Overlap>(new Overlap); m_op(0)[0]->set_orbs() = std::vector<int>(); m_op(0)[0]->set_initialised() = true; m_op(0)[0]->set_fermion() = false; m_op(0)[0]->set_deltaQuantum(1, SpinQuantum(0, SpinSpace(0), IrrepSpace(0))); }
void measure(const Conf& conf, std::size_t stamp) { m_acc(m_op(conf, stamp)); }