示例#1
0
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);
  }
示例#2
0
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>();
}
示例#3
0
  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);
    }
示例#4
0
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]);
    }
}
示例#5
0
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)));
    }      
  }
示例#6
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)));
            
    }
示例#7
0
文件: mean.hpp 项目: yangqi137/yqvmc
 void measure(const Conf& conf, std::size_t stamp) {
   m_acc(m_op(conf, stamp));
 }