本文整理汇总了C++中Minimizer::solve方法的典型用法代码示例。如果您正苦于以下问题:C++ Minimizer::solve方法的具体用法?C++ Minimizer::solve怎么用?C++ Minimizer::solve使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Minimizer
的用法示例。
在下文中一共展示了Minimizer::solve方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main()
{
// MPI
int my_rank = 0;
#ifdef RUN_MPI
MPI_Init(NULL, NULL);
MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
#endif
string run = "O2";
clock_t begin = clock();
if (run == "CH4_potential"){
double d0 = 1.0910338084437818; // gives 1 ånsgtrøm bond length
double dexp = 1.086*d0; // experimental value
rowvec posC = {0.0, 0.0, 0.0};
rowvec posH1 = {d0, d0, d0};
rowvec posH2 = {-dexp, -dexp, dexp};
rowvec posH3 = {dexp, -dexp, -dexp};
rowvec posH4 = {-dexp, dexp, -dexp};
rowvec charges = {6.0, 1.0, 1.0, 1.0, 1.0};
int nElectrons = 10;
mat nucleiPositions = zeros<mat>(5,3);
nucleiPositions.row(0) = posC;
nucleiPositions.row(1) = posH1;
nucleiPositions.row(2) = posH2;
nucleiPositions.row(3) = posH3;
nucleiPositions.row(4) = posH4;
BasisFunctions *basisFunctions = new BasisFunctions;
basisFunctions->addContracteds("../../HartreeFock/inFiles/basisSets/C_631Gs.dat", 0);
basisFunctions->addContracteds("../../HartreeFock/inFiles/basisSets/H_631Gs.dat", 1);
basisFunctions->addContracteds("../../HartreeFock/inFiles/basisSets/H_631Gs.dat", 2);
basisFunctions->addContracteds("../../HartreeFock/inFiles/basisSets/H_631Gs.dat", 3);
basisFunctions->addContracteds("../../HartreeFock/inFiles/basisSets/H_631Gs.dat", 4);
System *system;
system = new System(basisFunctions, nucleiPositions, charges, nElectrons);
UHF solver(system);
double dmin = 0.8*d0;
double dmax = 4.6*d0;
double delta = 0.025*d0;
double d = dmin;
ofstream ofile;
if (my_rank == 0){
ofile.open("../../Results/CH4_potential/UHF_spin_631Gs.dat");
ofile << "Basis set: 6-31G*" << endl;
ofile << "Distance (a.u.) <S^2>" << endl;
}
while (d < dmax){
posH1 = {d, d, d};
nucleiPositions.row(1) = posH1;
system->setNucleiPositions(nucleiPositions);
solver.solve();
if (my_rank == 0){
ofile << d*sqrt(3) << " ";
ofile << solver.getSpinExpectation() << endl;
}
d += delta;
}
} else if (run == "CH4"){
double d = 1.1835680518387328;
rowvec posC = {0.0, 0.0, 0.0};
rowvec posH1 = {d, d, d};
rowvec posH2 = {-d, -d, d};
rowvec posH3 = {d, -d, -d};
rowvec posH4 = {-d, d, -d};
rowvec charges = {6.0, 1.0, 1.0, 1.0, 1.0};
int nElectrons = 9;
mat nucleiPositions = zeros<mat>(5,3);
nucleiPositions.row(0) = posC;
nucleiPositions.row(1) = posH1;
nucleiPositions.row(2) = posH2;
nucleiPositions.row(3) = posH3;
nucleiPositions.row(4) = posH4;
BasisFunctions *basisFunctions = new BasisFunctions;
basisFunctions->addContracteds("../../HartreeFock/inFiles/basisSets/C_631Gss.dat", 0);
basisFunctions->addContracteds("../../HartreeFock/inFiles/basisSets/H_631Gss.dat", 1);
basisFunctions->addContracteds("../../HartreeFock/inFiles/basisSets/H_631Gss.dat", 2);
basisFunctions->addContracteds("../../HartreeFock/inFiles/basisSets/H_631Gss.dat", 3);
basisFunctions->addContracteds("../../HartreeFock/inFiles/basisSets/H_631Gss.dat", 4);
System *system;
system = new System(basisFunctions, nucleiPositions, charges, nElectrons);
UHF solver(system);
solver.solve();
if (my_rank == 0){
//.........这里部分代码省略.........