⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 matrix.cc

📁 大型并行量子化学软件;支持密度泛函(DFT)。可以进行各种量子化学计算。支持CHARMM并行计算。非常具有应用价值。
💻 CC
📖 第 1 页 / 共 3 页
字号:
  return pointer()->get_element(i);}RefSCMatrixRefDiagSCMatrix::operator*(const RefSCMatrix&a) const{  require_nonnull();  a.require_nonnull();  RefSCMatrix r = kit()->matrix(dim(),a->coldim());  r->assign(0.0);  r->accumulate_product(pointer(),a.pointer());  return r;}RefDiagSCMatrixRefDiagSCMatrix::operator+(const RefDiagSCMatrix&a) const{  require_nonnull();  a.require_nonnull();  RefDiagSCMatrix ret(dim(),kit());    ret->assign(pointer());  ret->accumulate(a.pointer());  return ret;}RefDiagSCMatrixRefDiagSCMatrix::operator-(const RefDiagSCMatrix&a) const{  require_nonnull();  a.require_nonnull();  RefDiagSCMatrix ret(dim(),kit());    ret->assign(a.pointer());  ret->scale(-1.0);  ret->accumulate(pointer());  return ret;}RefDiagSCMatrixRefDiagSCMatrix::i() const{  require_nonnull();    RefDiagSCMatrix ret;  ret = clone();  ret->assign(pointer());  ret->invert_this();  return ret;}RefDiagSCMatrixRefDiagSCMatrix::gi() const{  require_nonnull();    RefDiagSCMatrix ret;  ret = clone();  ret->assign(pointer());  ret->gen_invert_this();  return ret;}intRefDiagSCMatrix::n() const{  if (null()) return 0;  else return pointer()->dim()->n();}RefSCDimensionRefDiagSCMatrix::dim() const{  if (null()) return 0;  else return pointer()->dim();}Ref<SCMatrixKit>RefDiagSCMatrix::kit() const{  if (null()) return 0;  else return pointer()->kit();}DiagSCMatrixdoubleRefDiagSCMatrix::operator()(int i) const{  return DiagSCMatrixdouble(pointer(),i,i);}RefDiagSCMatrixRefDiagSCMatrix::clone() const{  RefDiagSCMatrix r = kit()->diagmatrix(dim());  return r;}RefDiagSCMatrixRefDiagSCMatrix::copy() const{  if (null()) return 0;  RefDiagSCMatrix v = kit()->diagmatrix(dim());  v.assign(*this);  return v;}voidRefDiagSCMatrix::randomize() const{  require_nonnull();  pointer()->randomize();}voidRefDiagSCMatrix::assign(const RefDiagSCMatrix&a) const{  require_nonnull();  pointer()->assign(a.pointer());}voidRefDiagSCMatrix::assign(const double*v) const{  require_nonnull();  pointer()->assign(v);}voidRefDiagSCMatrix::convert(double*v) const{  require_nonnull();  pointer()->convert(v);}voidRefDiagSCMatrix::scale(double a) const{  require_nonnull();  pointer()->scale(a);}voidRefDiagSCMatrix::assign(double a) const{  require_nonnull();  pointer()->assign(a);}voidRefDiagSCMatrix::accumulate(const RefDiagSCMatrix&a) const{  require_nonnull();  pointer()->accumulate(a.pointer());}voidRefDiagSCMatrix::element_op(const Ref<SCElementOp>&op) const{  if (nonnull()) pointer()->element_op(op);}voidRefDiagSCMatrix::element_op(const Ref<SCElementOp2>&op,                            const RefDiagSCMatrix&m) const{  if (nonnull()) pointer()->element_op(op,m.pointer());}voidRefDiagSCMatrix::element_op(const Ref<SCElementOp3>&op,                            const RefDiagSCMatrix&m,                            const RefDiagSCMatrix&n) const{  if (nonnull()) pointer()->element_op(op,m.pointer(),n.pointer());}doubleRefDiagSCMatrix::determ() const{  return pointer()->determ_this();}doubleRefDiagSCMatrix::trace() const{  return pointer()->trace();}voidRefDiagSCMatrix::print(ostream& out) const{  print(0,out);}voidRefDiagSCMatrix::print(const char*title,ostream&out, int precision) const{  if (nonnull()) {      pointer()->print(title,out,precision);    }  else {      if (title) out << endl << title << endl;      out << "null matrix" << endl;    }}RefDiagSCMatrixRefDiagSCMatrix::operator *(double a) const{  RefDiagSCMatrix r(copy());  r.scale(a);  return r;}RefDiagSCMatrixoperator *(double a, const RefDiagSCMatrix& v){  return v*a;}voidRefDiagSCMatrix::save(StateOut&s){  if (null()) s.put(0);  else {      s.put(1);      pointer()->save(s);    }}voidRefDiagSCMatrix::restore(StateIn&s){  int have_matrix;  s.get(have_matrix);  if (have_matrix && nonnull()) {      pointer()->restore(s);    }  else if (have_matrix) {      ExEnv::errn() << "RefDiagSCMatrix::restore: "           << "matrix not properly initialized" << endl;      abort();    }  else {      clear();    }}intRefDiagSCMatrix::nblock() const{  BlockedDiagSCMatrix *b = dynamic_cast<BlockedDiagSCMatrix*>(pointer());  if (b) return b->nblocks();  return 1;}RefDiagSCMatrixRefDiagSCMatrix::block(int i) const{  BlockedDiagSCMatrix *b = dynamic_cast<BlockedDiagSCMatrix*>(pointer());  if (b) return b->block(i);  return *this;}///////////////////////////////////////////////////////////////////// RefSCVector membersRefSCVector::RefSCVector(){}             RefSCVector::RefSCVector (const RefSCVector & o):  Ref<SCVector> (o){}             RefSCVector::RefSCVector (SCVector * o):  Ref<SCVector> (o){}RefSCVector::~RefSCVector (){}RefSCVector&RefSCVector::operator=(SCVector* cr){  Ref<SCVector>::operator=(cr);  return *this;}RefSCVector&RefSCVector::operator=(const RefSCVector & c){  Ref<SCVector>::operator=(c);  return *this;}RefSCVector::RefSCVector(const RefSCDimension&a,                         const Ref<SCMatrixKit>&k){  a.require_nonnull();  assign_pointer(k->vector(a));}voidRefSCVector::set_element(int i, double a) const{  require_nonnull();  pointer()->set_element(i,a);}voidRefSCVector::accumulate_element(int i, double a) const{  require_nonnull();  pointer()->accumulate_element(i,a);}doubleRefSCVector::get_element(int i) const{  require_nonnull();  return pointer()->get_element(i);}RefSCVectorRefSCVector::operator+(const RefSCVector&a) const{  require_nonnull();  a.require_nonnull();  RefSCVector ret(dim(),kit());    ret->assign(pointer());  ret->accumulate(a.pointer());  return ret;}RefSCVectorRefSCVector::operator-(const RefSCVector&a) const{  require_nonnull();  a.require_nonnull();  RefSCVector ret(dim(),kit());    ret->assign(a.pointer());  ret->scale(-1.0);  ret->accumulate(pointer());  return ret;}intRefSCVector::n() const{  if (null()) return 0;  else return pointer()->dim()->n();}RefSCDimensionRefSCVector::dim() const{  if (null()) return 0;  else return pointer()->dim();}Ref<SCMatrixKit>RefSCVector::kit() const{  if (null()) return 0;  else return pointer()->kit();}SCVectordoubleRefSCVector::operator()(int i) const{  return SCVectordouble(pointer(),i);}SCVectordoubleRefSCVector::operator[](int i) const{  return SCVectordouble(pointer(),i);}RefSCVectorRefSCVector::clone() const{  RefSCVector r = kit()->vector(dim());  return r;}RefSCVectorRefSCVector::copy() const{  if (null()) return 0;  RefSCVector v = kit()->vector(dim());  v.assign(*this);  return v;}doubleRefSCVector::dot(const RefSCVector&a) const{  require_nonnull();  return pointer()->scalar_product(a.pointer());}doubleRefSCVector::scalar_product(const RefSCVector&a) const{  require_nonnull();  return pointer()->scalar_product(a.pointer());}voidRefSCVector::randomize() const{  require_nonnull();  pointer()->randomize();}voidRefSCVector::assign(const RefSCVector&a) const{  require_nonnull();  pointer()->assign(a.pointer());}voidRefSCVector::assign(const double*v) const{  require_nonnull();  pointer()->assign(v);}voidRefSCVector::convert(double*v) const{  require_nonnull();  pointer()->convert(v);}voidRefSCVector::scale(double a) const{  require_nonnull();  pointer()->scale(a);}voidRefSCVector::assign(double a) const{  require_nonnull();  pointer()->assign(a);}voidRefSCVector::accumulate(const RefSCVector&a) const{  require_nonnull();  pointer()->accumulate(a.pointer());}voidRefSCVector::accumulate_product(const RefSymmSCMatrix&a, const RefSCVector&b){  require_nonnull();  pointer()->accumulate_product(a.pointer(), b.pointer());}voidRefSCVector::accumulate_product(const RefSCMatrix&a, const RefSCVector&b){  require_nonnull();  pointer()->accumulate_product(a.pointer(), b.pointer());}voidRefSCVector::element_op(const Ref<SCElementOp>&op) const{  if (nonnull()) pointer()->element_op(op);}voidRefSCVector::element_op(const Ref<SCElementOp2>&op,                        const RefSCVector&v) const{  if (nonnull()) pointer()->element_op(op,v.pointer());}voidRefSCVector::element_op(const Ref<SCElementOp3>&op,                        const RefSCVector&v,                        const RefSCVector&w) const{  if (nonnull()) pointer()->element_op(op,v.pointer(),w.pointer());}voidRefSCVector::print(ostream& out) const{  print(0,out);}voidRefSCVector::print(const char*title,ostream&out, int precision) const{  if (nonnull()) {      pointer()->print(title,out,precision);    }  else {      if (title) out << endl << title << endl;      out << "null matrix" << endl;    }}RefSCVectorRefSCVector::operator *(double a) const{  RefSCVector r(copy());  r.scale(a);  return r;}RefSCVectoroperator *(double a, const RefSCVector& v){  return v*a;}voidRefSCVector::normalize() const{  require_nonnull();  pointer()->normalize();}RefSymmSCMatrixRefSCVector::symmetric_outer_product() const{  RefSymmSCMatrix result(dim(),kit());  result.assign(0.0);  result.accumulate_symmetric_outer_product(pointer());  return result;}RefSCMatrixRefSCVector::outer_product(const RefSCVector&v) const{  RefSCMatrix result(dim(),v.dim(),kit());  result.assign(0.0);  result.accumulate_outer_product(*this,v);  return result;}doubleRefSCVector::maxabs() const{  if (null()) return 0.0;  return pointer()->maxabs();}voidRefSCVector::save(StateOut&s){  if (null()) s.put(0);  else {      s.put(1);      pointer()->save(s);    }}voidRefSCVector::restore(StateIn&s){  int have_matrix;  s.get(have_matrix);  if (have_matrix && nonnull()) {      pointer()->restore(s);    }  else if (have_matrix) {      ExEnv::errn() << "RefSCVector::restore: vector not properly initialized" << endl;      abort();    }  else {      clear();    }}/////////////////////////////////////////////////////////////////////////////}// Local Variables:// mode: c++// c-file-style: "CLJ"// End:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -