亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? nao.cc

?? 大型并行量子化學(xué)軟件;支持密度泛函(DFT)。可以進(jìn)行各種量子化學(xué)計(jì)算。支持CHARMM并行計(jì)算。非常具有應(yīng)用價(jià)值。
?? CC
?? 第 1 頁 / 共 2 頁
字號:
//// nao.cc//// Copyright (C) 1997 Limit Point Systems, Inc.//// Author: Curtis Janssen <cljanss@limitpt.com>// Maintainer: LPS//// This file is part of the SC Toolkit.//// The SC Toolkit is free software; you can redistribute it and/or modify// it under the terms of the GNU Library General Public License as published by// the Free Software Foundation; either version 2, or (at your option)// any later version.//// The SC Toolkit is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the// GNU Library General Public License for more details.//// You should have received a copy of the GNU Library General Public License// along with the SC Toolkit; see the file COPYING.LIB.  If not, write to// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.//// The U.S. Government is granted a limited license as per AL 91-7.//#include <util/misc/formio.h>#include <chemistry/qc/wfn/wfn.h>#include <chemistry/qc/basis/petite.h>#include <chemistry/qc/basis/transform.h>using namespace std;using namespace sc;#undef DEBUGnamespace sc {static RefSCMatrixoperator *(const RefDiagSCMatrix &d, const RefSymmSCMatrix &s){  RefSCMatrix ret(s.dim(), s.dim(), s.kit());  int n = s.dim()->n();  for (int i=0; i<n; i++) {      for (int j=0; j<n; j++) {          ret.set_element(i,j, d.get_element(i)*s.get_element(i,j));        }    }  return ret;}}static RefSymmSCMatrixweight_matrix(const RefDiagSCMatrix &d, const RefSymmSCMatrix &s){  RefSymmSCMatrix ret = s.clone();  int n = s.dim()->n();  for (int i=0; i<n; i++) {      for (int j=0; j<=i; j++) {          ret.set_element(i,j, s.get_element(i,j)                               *d.get_element(i)*d.get_element(j));        }    }  return ret;}static intnnmb_atom(int z, int l){  if (l==0) {      if (z <= 2) return 1;      else if (z <= 10) return 2;      else if (z <= 18) return 3;    }  else if (l==1) {      if (z <= 4) return 0;      else if (z <= 12) return 1;      else if (z <= 20) return 2;    }  else if (l==2) {      if (z <= 20) return 0;    }  else if (l==3) {      if (z <= 56) return 0;    }  else {      return 0;    }  ExEnv::errn() << "NAO: z too big" << endl;  abort();  return 0;}static intnnmb_all_atom(int z, int maxl){  int ret = 0;  for (int i=0; i<=maxl; i++) {      ret += nnmb_atom(z,i) * (2*i+1);    }  return ret;}static RefSymmSCMatrixmhalf(const RefSymmSCMatrix &S){  RefSCDimension tdim = S.dim();  Ref<SCMatrixKit> kit = S.kit();  // find a symmetric orthogonalization transform  RefSCMatrix trans(tdim,tdim,kit);  RefDiagSCMatrix eigval(tdim,kit);  S.diagonalize(eigval,trans);  Ref<SCElementOp> squareroot = new SCElementSquareRoot;  eigval.element_op(squareroot);  Ref<SCElementOp> invert = new SCElementInvert(1.0e-12);  eigval.element_op(invert);  RefSymmSCMatrix OL(tdim,kit);  OL.assign(0.0);  // OL = trans * eigval * trans.t();  OL.accumulate_transform(trans, eigval);  return OL;}static voiddelete_partition_info(int natom, int *maxam_on_atom,                      int **nam_on_atom, int ***amoff_on_atom){  int i, j;  for (i=0; i<natom; i++) {      for (j=0; j<=maxam_on_atom[i]; j++) {          delete[] amoff_on_atom[i][j];        }      delete[] nam_on_atom[i];      delete[] amoff_on_atom[i];    }  delete[] maxam_on_atom;  delete[] nam_on_atom;  delete[] amoff_on_atom;}#ifdef DEBUGstatic doublettrace(const RefSCMatrix &N,       const RefSymmSCMatrix &P,       const RefSymmSCMatrix &S){  RefSCMatrix Nt = N.t();  RefSymmSCMatrix Pt = P.clone();  Pt.assign(0.0);  Pt.accumulate_transform(Nt, P);  RefSymmSCMatrix St = S.clone();  St.assign(0.0);  St.accumulate_transform(Nt, S);  return (mhalf(St)*Pt*mhalf(St)).trace();}// for N giving an orthonormal basisstatic doublettrace(const RefSCMatrix &N,       const RefSymmSCMatrix &P){  RefSCMatrix Nt = N.t();  RefSymmSCMatrix Pt = P.clone();  Pt.assign(0.0);  Pt.accumulate_transform(Nt, P);  return Pt.trace();}#endifstatic RefSCMatrixassemble(const RefSCDimension dim,         const RefSCMatrix &Nm, int *Nm_map,         const RefSCMatrix &Nr1, int *Nr1_map,         const RefSCMatrix &Nr2 = 0,  int *Nr2_map = 0){  int nnmb = Nm.ncol();  int nr1 = Nr1.ncol();  int nr2 = (Nr2.null()?0:Nr2.ncol());  int nb = dim.n();  if (nb != nnmb + nr1 + nr2) {      ExEnv::errn() << "assemble: dim mismatch" << endl;      abort();    }  RefSCMatrix N(Nm.rowdim(), Nm.rowdim(), Nm.kit());  // collect Nm, Nr1, and Nr2 back into N  int i;  for (i=0; i<nnmb; i++) {      if (Nm_map[i] < 0 || Nm_map[i] >= nb) {          ExEnv::errn() << "assemble: bad Nm_map" << endl;          abort();        }      N.assign_column(Nm.get_column(i), Nm_map[i]);    }  for (i=0; i<nr1; i++) {      if (Nr1_map[i] < 0 || Nr1_map[i] >= nb) {          ExEnv::errn() << "assemble: bad Nr1_map" << endl;          abort();        }      N.assign_column(Nr1.get_column(i), Nr1_map[i]);    }  for (i=0; i<nr2; i++) {      if (Nr2_map[i] < 0 || Nr2_map[i] >= nb) {          ExEnv::errn() << "assemble: bad Nr2_map" << endl;          abort();        }      N.assign_column(Nr2.get_column(i), Nr2_map[i]);    }  return N;}// form symmetry average NAO for each atomstatic voidform_nao(const RefSymmSCMatrix &P, const RefSymmSCMatrix &S,         const RefSCMatrix &N, const RefDiagSCMatrix &W, int natom,         int *maxam_on_atom, int **nam_on_atom, int ***amoff_on_atom,         const Ref<SCMatrixKit>& kit){  int i,j,k,l,m;  N.assign(0.0);  W.assign(0.0);  for (i=0; i<natom; i++) {      for (j=0; j<=maxam_on_atom[i]; j++) {          int nfunc = 2*j + 1;          double oonfunc = 1.0/nfunc;          int nt = nam_on_atom[i][j];          RefSCDimension tdim(new SCDimension(nt));          RefSymmSCMatrix Pt(tdim, kit);          RefSymmSCMatrix St(tdim, kit);          Pt.assign(0.0);          St.assign(0.0);          for (k=0; k<nt; k++) {              for (l=0; l<nt; l++) {                  double Stmp = 0.0;                  double Ptmp = 0.0;                  for (m=0; m<nfunc; m++) {                      int ii = amoff_on_atom[i][j][k] + m;                      int jj = amoff_on_atom[i][j][l] + m;                      Stmp += S.get_element(ii,jj);                      Ptmp += P.get_element(ii,jj);                    }                  St.set_element(k,l,Stmp*oonfunc);                  Pt.set_element(k,l,Ptmp*oonfunc);                }            }          // find a symmetric orthogonalization transform          RefSymmSCMatrix OL = mhalf(St);          // transform Pt to the orthogonal basis          RefSymmSCMatrix PtL(tdim,kit);          PtL.assign(0.0);          PtL.accumulate_transform(OL, Pt);          // diagonalize PtL          RefSCMatrix trans(tdim,tdim,kit);          RefDiagSCMatrix eigval(tdim,kit);          PtL.diagonalize(eigval, trans);          // transform trans to the nonortho basis          trans = OL * trans;#         ifdef DEBUG          eigval.print("eigval");#         endif          // fill in the elements of W          for (k=0; k<nt; k++) {              // the eigenvalues come out backwards: reverse them              int krev = nt-k-1;              double elem = eigval.get_element(krev);              for (m=0; m<nfunc; m++) {                  int ii = amoff_on_atom[i][j][k] + m;#                 ifdef DEBUG                  ExEnv::outn().form("W(%2d) = %12.8f\n", ii, elem);#                 endif                  W.set_element(ii, elem);                }            }          // fill in the elements of N          for (k=0; k<nt; k++) {              for (l=0; l<nt; l++) {                  // the eigenvalues come out backwards: reverse them                  int lrev = nt-l-1;                  double elem = trans.get_element(k,lrev);                  for (m=0; m<nfunc; m++) {                      int ii = amoff_on_atom[i][j][k] + m;                      int jj = amoff_on_atom[i][j][l] + m;                      N.set_element(ii,jj, elem);                    }                }            }        }    }}// From "Natural Population Analysis", Alan E. Reed, Robert B. Weinstock,// Frank Weinhold, JCP, 83 (1985), p 735.RefSCMatrixWavefunction::nao(double *atom_charges){  Ref<GaussianBasisSet> b = basis();  Ref<PetiteList> pl = integral()->petite_list();  // compute S, the ao basis overlap  RefSymmSCMatrix blockedS = pl->to_AO_basis(overlap());  RefSymmSCMatrix S      = dynamic_cast<BlockedSymmSCMatrix*>(blockedS.pointer())->block(0);  blockedS = 0;# ifdef DEBUG  S.print("S");# endif  // compute P, the ao basis density  RefSymmSCMatrix P      = dynamic_cast<BlockedSymmSCMatrix*>(ao_density().pointer())->block(0);  // why?  good question.  RefSymmSCMatrix Ptmp = P->clone();  Ptmp.assign(0.0);  Ptmp->accumulate_transform(S, P);# ifdef DEBUG  P.print("P");  ExEnv::out0() << "nelec = " << (mhalf(S) * Ptmp * mhalf(S)).trace() << endl;  ExEnv::out0() << "nelec(2) = " << (P * S).trace() << endl;# endif  P = Ptmp;  Ptmp = 0;  int i,j,k,l;  int nb = b->nbasis();  int nsh = b->nshell();  int natom = molecule()->natom();# ifdef DEBUG  ExEnv::out0() << "nb = " << nb << endl;  ExEnv::out0() << "nsh = " << nsh << endl;  ExEnv::out0() << "natom = " << natom << endl;# endif  // Step 2a. Transform to solid harmonics.  // -- for now program will abort if basis does not use only S.H and cart d.  RefSCDimension aodim = P.dim();  RefSCMatrix Tdfg(aodim, aodim, matrixkit());  Tdfg->unit();  for (i=0; i<nsh; i++) {      const GaussianShell &shell = b->shell(i);      int off = b->shell_to_function(i);      for (j=0; j<shell.ncontraction(); j++) {          if (shell.am(j) == 2 && ! shell.is_pure(j)) {              for (k=0; k<6; k++) {                  for (l=0; l<6; l++) {                      Tdfg.set_element(off+k,off+l,0.0);                    }                }              // this will put the s function first and the d second              // first grab the s function              SphericalTransformIter *sti;              sti = integral()->new_spherical_transform_iter(2,0,0);              for (sti->begin(); sti->ready(); sti->next()) {                  Tdfg->set_element(off + sti->pureindex(),                                    off + sti->cartindex(),                                    sti->coef());                }              delete sti;              // now for the pure d part of the cartesian d shell              sti = integral()->new_spherical_transform_iter(2,0,2);              for (sti->begin(); sti->ready(); sti->next()) {                  Tdfg->set_element(off + sti->pureindex() + 1,                                    off + sti->cartindex(),                                    sti->coef());                }              delete sti;            }          else if (shell.am(j) > 2 && ! shell.is_pure(j)) {              ExEnv::errn() << "NAOs can only be computed for puream if am > 2" << endl;              abort();            }          off += shell.nfunction(j);        }    }  // Tdfg should already be orthogonal, normalize them//   RefSCMatrix Tdfgo = Tdfg*Tdfg.t();//   RefDiagSCMatrix Tdfg_norm(Tdfg.rowdim(), matrixkit());//   for (i=0; i<nb; i++) {//       double o = Tdfgo.get_element(i,i);//       Tdfg_norm.set_element(i,1.0/sqrt(o));//     }//   Tdfgo = 0;//   Tdfg = Tdfg_norm * Tdfg;# ifdef DEBUG  Tdfg.print("Tdfg");  (Tdfg.t() * Tdfg).print("Tdfg.t() * Tdfg");  (Tdfg * Tdfg.t()).print("Tdfg * Tdfg.t()");# endif  RefSymmSCMatrix Pdfg(aodim, matrixkit());  // Pdfp = Tdfp.t() * P * Tdfp  Pdfg.assign(0.0); Pdfg.accumulate_transform(Tdfg, P);  RefSymmSCMatrix Sdfg(aodim, matrixkit());  // Sdfp = Tdfp.t() * S * Tdfp  Sdfg.assign(0.0); Sdfg.accumulate_transform(Tdfg, S);# ifdef DEBUG  ExEnv::out0() << "nelec = " << (mhalf(Sdfg) * Pdfg * mhalf(Sdfg)).trace() << endl;# endif  // Step 2b. Partitioning and symmetry averaging of P and S  // Partitioning:  int *maxam_on_atom = new int[natom];  int **nam_on_atom = new int*[natom];  int ***amoff_on_atom = new int**[natom];  int maxam = -1;  for (i=0; i<natom; i++) {      maxam_on_atom[i] = -1;      for (j=0; j<b->nshell_on_center(i); j++) {          GaussianShell &shell = b->shell(i,j);          int maxam_on_shell = shell.max_angular_momentum();          if (maxam_on_atom[i] < maxam_on_shell)              maxam_on_atom[i] = maxam_on_shell;        }      if (maxam_on_atom[i] > maxam) maxam = maxam_on_atom[i];      nam_on_atom[i] = new int[maxam_on_atom[i]+1];      for (j=0; j<=maxam_on_atom[i]; j++) {          nam_on_atom[i][j] = 0;          for (k=0; k<b->nshell_on_center(i); k++) {              GaussianShell &shell = b->shell(i,k);              for (l=0; l<shell.ncontraction(); l++) {                  if (shell.am(l) == j) nam_on_atom[i][j]++;                  if (shell.am(l) == 2 && !shell.is_pure(l) && j == 0) {                      // the s component of a cartesian d                      nam_on_atom[i][0]++;                    }                }            }        }      amoff_on_atom[i] = new int*[maxam_on_atom[i]+1];      for (j=0; j<=maxam_on_atom[i]; j++) {          amoff_on_atom[i][j] = new int[nam_on_atom[i][j]];          int nam = 0;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av网站在线观看免费| 中文字幕精品一区二区三区精品 | 91一区二区在线| 亚洲青青青在线视频| 色偷偷一区二区三区| 亚洲h在线观看| 日韩三级伦理片妻子的秘密按摩| 成人精品视频一区二区三区| 国产精品天干天干在观线| 91麻豆产精品久久久久久| 婷婷国产v国产偷v亚洲高清| 精品电影一区二区三区| 风间由美一区二区三区在线观看 | 一区二区国产视频| 欧美精品亚洲一区二区在线播放| 久久精品av麻豆的观看方式| 国产日韩欧美激情| 在线观看区一区二| 国产主播一区二区| 一区二区三区四区视频精品免费 | 久久综合丝袜日本网| av日韩在线网站| 视频在线在亚洲| 久久精品亚洲乱码伦伦中文| 日本久久精品电影| 蓝色福利精品导航| 亚洲欧美一区二区三区久本道91| 欧美巨大另类极品videosbest | 国产一区二区福利视频| 国产精品久久精品日日| 欧美精品一卡二卡| www.欧美色图| 久久国产精品区| 亚洲一本大道在线| 国产日产亚洲精品系列| 欧美三级韩国三级日本三斤 | 日本一区二区三区四区| 在线观看免费亚洲| 国产成人综合自拍| 婷婷丁香久久五月婷婷| 中文幕一区二区三区久久蜜桃| 91精品国产欧美一区二区18| 丰满放荡岳乱妇91ww| 婷婷六月综合网| 亚洲欧美怡红院| 久久午夜国产精品| 欧美一区二区人人喊爽| 色老汉av一区二区三区| 国产精品1区2区| 日韩国产成人精品| 亚洲韩国精品一区| 亚洲视频一区二区在线| 日本一区免费视频| 欧美电影免费提供在线观看| 欧美熟乱第一页| 91日韩在线专区| 懂色av一区二区夜夜嗨| 国产自产视频一区二区三区| 亚洲成av人在线观看| 亚洲美女视频在线观看| 亚洲欧美一区二区三区国产精品 | 日韩欧美国产成人一区二区| 在线亚洲+欧美+日本专区| 99精品视频在线免费观看| 国产成人综合在线| 国产精品一二三| 国内精品免费在线观看| 美女一区二区久久| 美女免费视频一区二区| 日本亚洲电影天堂| 日本aⅴ亚洲精品中文乱码| 五月婷婷综合激情| 亚洲国产成人精品视频| 午夜电影网亚洲视频| 亚洲一级二级三级在线免费观看| 亚洲精品成人天堂一二三| 亚洲女与黑人做爰| 亚洲一区二区影院| 无吗不卡中文字幕| 麻豆精品视频在线观看免费| 免费成人你懂的| 国产一区二区调教| 粉嫩一区二区三区性色av| 成人精品国产免费网站| 91玉足脚交白嫩脚丫在线播放| 色综合天天综合给合国产| 在线观看日韩电影| 欧美一级理论性理论a| 日韩视频免费观看高清在线视频| 欧美成人精精品一区二区频| 久久久精品天堂| 国产精品视频一二三| 亚洲欧美在线观看| 香蕉久久一区二区不卡无毒影院 | 中文字幕一区二区三区色视频| 亚洲欧美色图小说| 婷婷成人激情在线网| 激情五月播播久久久精品| 成人在线视频一区二区| 在线视频一区二区三区| 欧美一激情一区二区三区| 久久久精品免费免费| 亚洲你懂的在线视频| 秋霞午夜av一区二区三区| 国产一区视频在线看| eeuss国产一区二区三区| 欧美三级视频在线播放| 久久久亚洲欧洲日产国码αv| 综合网在线视频| 日韩精品一二三区| 成人综合在线网站| 911精品产国品一二三产区 | 国产精品久久99| 五月天婷婷综合| 成人丝袜18视频在线观看| 欧洲一区在线观看| 26uuu成人网一区二区三区| 亚洲欧美另类小说视频| 国内精品伊人久久久久av一坑 | 亚洲午夜免费视频| 国产精品中文字幕日韩精品| 91搞黄在线观看| 久久精品欧美一区二区三区麻豆| 亚洲黄色免费电影| 国产一区二区三区观看| 在线观看免费一区| 欧美激情一区在线| 久久aⅴ国产欧美74aaa| 日本丰满少妇一区二区三区| 久久综合久久综合久久综合| 亚洲五码中文字幕| 丰满少妇在线播放bd日韩电影| 欧美一区二区日韩一区二区| 亚洲欧美日韩国产另类专区| 国产精品综合网| 欧美一区二区二区| 亚洲午夜电影网| 91在线精品一区二区三区| 久久免费看少妇高潮| 丝袜美腿高跟呻吟高潮一区| 95精品视频在线| 国产日产欧产精品推荐色| 喷水一区二区三区| 欧美日韩国产综合视频在线观看| 中文字幕中文在线不卡住| 国产最新精品免费| 91精品国产品国语在线不卡| 亚洲国产精品一区二区www在线| 丰满少妇久久久久久久| 久久久一区二区三区| 久久av中文字幕片| 欧美电视剧在线看免费| 天堂一区二区在线| 欧美色图一区二区三区| 一区二区三区四区在线| 色美美综合视频| √…a在线天堂一区| 成人激情动漫在线观看| 中文字幕乱码一区二区免费| 狠狠色狠狠色综合日日91app| 日韩一区二区三区免费看| 亚洲成av人片观看| 欧美日韩久久一区二区| 亚洲第一狼人社区| 欧美性猛交xxxxxx富婆| 亚洲一二三四在线观看| 欧美自拍偷拍一区| 亚洲高清免费视频| 欧美日本免费一区二区三区| 亚洲电影你懂得| 91麻豆精品国产自产在线 | 国产亚洲综合性久久久影院| 久久精品久久精品| 久久久亚洲高清| 成人h版在线观看| 一区二区理论电影在线观看| 欧美色区777第一页| 日韩不卡在线观看日韩不卡视频| 在线不卡a资源高清| 美女视频网站久久| 久久久国产精华| 97se亚洲国产综合自在线不卡| 一区二区成人在线视频| 制服丝袜中文字幕一区| 狠狠色狠狠色综合系列| 中文在线免费一区三区高中清不卡| 风流少妇一区二区| 亚洲综合免费观看高清在线观看| 欧美日韩一卡二卡| 久久国产剧场电影| 亚洲欧洲av另类| 欧美日韩国产一二三| 黄色日韩网站视频| 自拍偷拍亚洲激情| 欧美精品 日韩| 国产精华液一区二区三区| 亚洲精品美国一| 日韩免费一区二区| eeuss鲁片一区二区三区在线看| 亚洲mv在线观看|