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

📄 chemclnt.cc

📁 大型并行量子化学软件;支持密度泛函(DFT)。可以进行各种量子化学计算。支持CHARMM并行计算。非常具有应用价值。
💻 CC
字号:
#include "molecule.h"#include "energy.h"#include "optimize.h"#include <iostream>#include <stdlib.h>void try_energy(const char *);void try_molecule(const char *);void try_opt(const char *);intmain (int argc, char **argv){	  if (argc < 2) {     cout << "usage: " << argv[0] << " <hostname>" << endl;     exit (-1);  }  try_molecule(argv[1]);  try_energy(argv[1]);  try_opt(argv[1]);  return 0;}voidtry_molecule(const char *host){  C_Molecule* p;  double natom;  TRY {    p = C_Molecule::_bind("testmol:Chemistry", host, IT_X);  } CATCHANY {    cerr << "Bind to object failed" << endl;    cerr << "Unexpected exception " << IT_X << endl;    exit(1);  } ENDTRY  long has_object;  TRY {      has_object = p->molecule_has_object(IT_X);  } CATCHANY {      cerr << "object check failed" << endl;      cerr << "Unexpected exception " << IT_X << endl;      exit(1);  } ENDTRY  cout << "has_object (should be 0) " << has_object << endl;  TRY {      has_object = p->molecule_has_object(IT_X);  } CATCHANY {      cerr << "object check failed" << endl;      cerr << "Unexpected exception " << IT_X << endl;      exit(1);  } ENDTRY cout << "has_object (should be 0) " << has_object << endl;  TRY {      p->keyval_create(          "object<Molecule>: (\n"          "  symmetry=c2v\n"          "  {atoms geometry} = {\n"          "    H  [   1.5  0.0   1.0 ]\n"          "    O  [   0.0  0.0   0.0 ]\n"          "    }\n"          " )\n"          , IT_X);  } CATCHANY {      cerr << "create of mol failed" << endl;      cerr << "Unexpected exception " << IT_X << endl;      exit(1);  } ENDTRY  TRY {    // try to count the atoms    natom = p->natom(IT_X);  } CATCHANY {    // an error occurred while trying to read the energy    cerr << "call to count the atoms failed" << endl;    cerr << "Unexpected exception " << IT_X << endl;    exit(1);  } ENDTRY  cout << "molecule had " << natom << " atoms" << endl;  TRY {    // try to cout the atoms    natom = p->natom(IT_X);  } CATCHANY {    // an error occurred while trying to read the energy    cerr << "call to count the atoms failed" << endl;    cerr << "Unexpected exception " << IT_X << endl;    exit(1);  } ENDTRY  cout << "molecule had " << natom << " atoms" << endl;  TRY {    // try to cout the atoms    natom = p->natom(IT_X);  } CATCHANY {    // an error occurred while trying to read the energy    cerr << "call to count the atoms failed" << endl;    cerr << "Unexpected exception " << IT_X << endl;    exit(1);  } ENDTRY  cout << "molecule had " << natom << " atoms" << endl;  TRY {      has_object = p->molecule_has_object(IT_X);  } CATCHANY {      cerr << "object check failed" << endl;      cerr << "Unexpected exception " << IT_X << endl;      exit(1);  } ENDTRY  cout << "has_object (should be 1) " << has_object << endl;  if (!has_object) {      cerr << "just created object is missing" << endl;      exit(1);    }}voidtry_energy(const char * host){  C_MolecularEnergy* p;  double e;	  TRY {    p = C_MolecularEnergy::_bind("testfunc:Chemistry", host, IT_X);  } CATCHANY {    cerr << "Bind to object failed" << endl;    cerr << "Unexpected exception " << IT_X << endl;    exit(1);  } ENDTRY  TRY {      p->keyval_create(          "object<MPSCF>: (\n"          " molecule<Molecule>: (\n"          "  symmetry=c2v\n"          "  {atoms geometry} = {\n"          "    H  [   1.5  0.0   1.3 ]\n"          "    O  [   0.0  0.0   0.0 ]\n"          "    }\n"          "  )\n"          " ckpt_freq = 100\n"          " save_vector = no\n"          " basis<GaussianBasisSet>: (\n"          "    basisfiles = [ v2g90supp.ipv2 v2g90.ipv2 ]\n"          "    molecule = $..:molecule\n"          "    name = sto3g\n"          "  )\n"          " docc = 5\n"          " local_P = yes\n"          " restart = no\n"          " coor<SymmMolecularCoor>: (\n"          "   molecule = $..:molecule\n"          "   )\n"          " )\n"          , IT_X);  } CATCHANY {      cerr << "create of mole failed" << endl;      cerr << "Unexpected exception " << IT_X << endl;      exit(1);  } ENDTRY  TRY {    // try to read the energy    e = p->energy(IT_X);  } CATCHANY {    // an error occurred while trying to read the energy    cerr << "call to read the energy failed" << endl;    cerr << "Unexpected exception " << IT_X << endl;    exit(1);  } ENDTRY  cout << "energy is " << e << endl;}voidtry_opt(const char * host){  C_MolecularEnergy* mole;  double olde = 0.0, e = 0.0;	  TRY {    mole = C_MolecularEnergy::_bind("testfunc:Chemistry", host, IT_X);  } CATCHANY {    cerr << "Bind to object failed" << endl;    cerr << "Unexpected exception " << IT_X << endl;    exit(1);  } ENDTRY  TRY {      int has_object = mole->molecularenergy_has_object(IT_X);      if (!has_object) {          cerr << "=============== object missing ==============" << endl;          exit(1);        }  } CATCHANY {      cerr << "create of mole failed" << endl;      cerr << "Unexpected exception " << IT_X << endl;      exit(1);  } ENDTRY  TRY {    // try to read the energy    olde = mole->energy(IT_X);  } CATCHANY {    // an error occurred while trying to read the energy    cerr << "call to read the energy failed" << endl;    cerr << "Unexpected exception " << IT_X << endl;    exit(1);  } ENDTRY  C_Optimize *o;  TRY {    o = C_Optimize::_bind("testopt:Chemistry", host, IT_X);  } CATCHANY {    cerr << "Bind to optimize failed" << endl;    cerr << "Unexpected exception " << IT_X << endl;    exit(1);  } ENDTRY  TRY {      const char *string = "object<QNewtonOpt>:(\n"                           "  convergence = 1.0e-4\n"                           "  max_iterations = 10\n"                           "  function<ORBProxy>: (marker = testfunc)\n"                           "  )\n";      o->keyval_create(string, IT_X);  } CATCHANY {    cerr << "Create of optimize failed" << endl;    cerr << "Unexpected exception " << IT_X << endl;    exit(1);  } ENDTRY  TRY {      o->optimize(IT_X);  } CATCHANY {    cerr << "optimize failed" << endl;    cerr << "Unexpected exception " << IT_X << endl;    exit(1);  } ENDTRY  TRY {    // try to read the energy    e = mole->energy(IT_X);  } CATCHANY {    // an error occurred while trying to read the energy    cerr << "call to read the energy failed" << endl;    cerr << "Unexpected exception " << IT_X << endl;    exit(1);  } ENDTRY  cout << "old energy was " << olde << endl;  cout << "optimized energy is " << e << endl;}

⌨️ 快捷键说明

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