当前位置: 首页>>代码示例>>C++>>正文


C++ Vector4d::modulo2方法代码示例

本文整理汇总了C++中Vector4d::modulo2方法的典型用法代码示例。如果您正苦于以下问题:C++ Vector4d::modulo2方法的具体用法?C++ Vector4d::modulo2怎么用?C++ Vector4d::modulo2使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Vector4d的用法示例。


在下文中一共展示了Vector4d::modulo2方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: calculate

double ERMSD::calculate(const std::vector<Vector> & positions,const Pbc& pbc,\
                        std::vector<Vector> &derivatives, Tensor& virial) {


  double ermsd=0.;
  std::vector<Vector4d> mat;
  mat.resize(nresidues*nresidues);

  std::vector<TensorGeneric<4,3> > Gderi;
  Gderi.resize(natoms*natoms);

  calcMat(positions,pbc,mat,Gderi);

  unsigned idx1 = 0;
  for(unsigned i=0; i<nresidues; i++) {
    for(unsigned j=0; j<nresidues; j++) {
      unsigned ii = i*nresidues + j;

      Vector4d dd = delta(reference_mat[ii],mat[ii]);
      double val = dd.modulo2();
      //std::cout << "AAA " << i << " " << j << " " << ii << " "<< val << "\n";

      if(val>0.0 && i!=j) {

        for(unsigned k=0; k<3; k++) {
          idx1 = i*nresidues*6 + j*6 + k;

          derivatives[3*i+k] += matmul(dd,Gderi[idx1]);
          derivatives[3*j+k] += matmul(dd,Gderi[idx1+3]);
        }
        ermsd += val;
      }
    }
  }

  //std::cout << ermsd << " ";
  //if(pairs.size()!=0) nresidues=pairs.size();
  //std::cout << ermsd << " " << nresidues;
  ermsd = sqrt(ermsd/nresidues);
  double iermsd = 1.0/(ermsd*nresidues);
  for(unsigned i=0; i<natoms; ++i) {derivatives[i] *= iermsd;}

  return ermsd;
}
开发者ID:JFDama,项目名称:plumed2,代码行数:44,代码来源:ERMSD.cpp


注:本文中的Vector4d::modulo2方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。