Changeset 1e66bf for src/bin/mpqc/mpqc.cc
- Timestamp:
- Mar 6, 2016, 9:51:31 PM (10 years ago)
- Children:
- 8b0cdc
- Parents:
- 961fac
- git-author:
- Frederik Heber <heber@…> (03/02/16 23:51:51)
- git-committer:
- Frederik Heber <heber@…> (03/06/16 21:51:31)
- File:
-
- 1 edited
-
src/bin/mpqc/mpqc.cc (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/bin/mpqc/mpqc.cc
r961fac r1e66bf 1518 1518 // ExEnv::out0() << endl; 1519 1519 // } 1520 // { 1521 // SCF *scf = dynamic_cast<SCF*>(wfn.pointer()); 1522 // if (scf == NULL) { 1523 // MBPT2 *mbpt2 = dynamic_cast<MBPT2*>(wfn.pointer()); 1524 // if (mbpt2 != NULL) { 1525 // scf = mbpt2->ref().pointer(); 1526 // } else 1527 // scf = NULL; 1528 // } 1529 // if (scf != NULL) { 1530 // RefSCMatrix oso_vector = scf->oso_eigenvectors(); 1531 // RefSCMatrix vector = scf->so_to_orthog_so().t() * oso_vector; 1532 // { 1533 // // ExEnv::out0() << "The SO eigenvector matrix is "; 1534 // std::ofstream output("SOeigenvector.dat"); 1535 // for (int i=0; i < wfn->ao_dimension(); ++i) { 1536 // std::vector<double> sorted_values; 1537 // for (int j=0;j<wfn->ao_dimension();++j) 1538 // sorted_values.push_back(fabs(oso_vector(i,j))); 1539 // // std::sort(sorted_values.begin(), sorted_values.end()); 1540 // for (int j=0;j<wfn->ao_dimension();++j) { 1541 // output << sorted_values[j] << "\t"; 1542 // } 1543 // output << "\n"; 1544 // } 1545 // output.close(); 1546 // } 1547 // { 1548 // // ExEnv::out0() << "The OSO eigenvector matrix is "; 1549 // std::ofstream output("OSOeigenvector.dat"); 1550 // for (int i=0; i < wfn->ao_dimension(); ++i) { 1551 // std::vector<double> sorted_values; 1552 // for (int j=0;j<wfn->ao_dimension();++j) 1553 // sorted_values.push_back(fabs(vector(i,j))); 1554 // // std::sort(sorted_values.begin(), sorted_values.end()); 1555 // for (int j=0;j<wfn->ao_dimension();++j) { 1556 // output << sorted_values[j] << "\t"; 1557 // } 1558 // output << "\n"; 1559 // } 1560 // output.close(); 1561 // } 1562 // } else { 1563 // ExEnv::out0() << "INFO: There is no reference SCF information available either." << endl; 1564 // } 1565 // } 1520 // store accuracies 1521 data.accuracy = mole->value_result().actual_accuracy(); 1522 data.desired_accuracy = mole->value_result().desired_accuracy(); 1566 1523 // print the energy 1567 1524 data.energies.total = wfn->energy(); … … 1834 1791 std::set<int> valence_indices; 1835 1792 if (data.DoValenceOnly == MPQCData::DoSampleValenceOnly) { 1836 // calculate number of core electrons, half their number is the1837 // number of orbitals to skip1838 size_t sum = 0;1839 for (int iatom=0;iatom < wfn->molecule()->natom(); ++iatom) {1840 double charge = wfn->molecule()->Z(iatom);1841 sum += getCoreElectrons(charge);1842 }1843 sum = sum/2 - 1;1844 1793 // find valence orbitals 1845 1794 RefDiagSCMatrix evals = scf->eigenvalues(); … … 1851 1800 evals_sorted.insert(evals(i)); 1852 1801 std::set<double> evals_distances; 1853 std::set<double>::const_iterator iter = evals_sorted.begin(); 1854 std::advance(iter, sum); 1855 // std::set<double>::const_iterator iter = advancer++; 1856 // for(;advancer != evals_sorted.end(); ++advancer,++iter) { 1857 // if ((*advancer) > 0.) 1858 // break; 1859 // evals_distances.insert(-(*iter)+(*advancer)); 1860 // } 1861 // const double largest_distance = (evals_distances.empty() ? 0. : *(evals_distances.rbegin())); 1862 // ExEnv::out0() << "Largest distance between EV is " << largest_distance << std::endl; 1863 // advancer = evals_sorted.begin(); 1864 // iter = advancer++; 1865 // for(;advancer != evals_sorted.begin(); ++advancer,++iter) { 1866 // if ((*advancer) > 0.) 1867 // break; 1868 // if (fabs((-(*iter)+(*advancer)) - largest_distance) < 1e-10) 1869 // break; 1870 // } 1871 // assert( advancer != evals_sorted.begin() ); 1802 std::set<double>::const_iterator advancer = evals_sorted.begin(); 1803 std::set<double>::const_iterator iter = advancer++; 1804 for(;advancer != evals_sorted.end(); ++advancer,++iter) 1805 evals_distances.insert((*advancer)-(*iter)); 1806 const double largest_distance = *(evals_distances.rbegin()); 1807 ExEnv::out0() << "Largest distance between EV is " << largest_distance << std::endl; 1808 advancer = evals_sorted.begin(); 1809 iter = advancer++; 1810 for(;advancer != evals_sorted.begin(); ++advancer,++iter) 1811 if (fabs(fabs((*advancer)-(*iter)) - largest_distance) < 1e-10) 1812 break; 1813 assert( advancer != evals_sorted.begin() ); 1872 1814 const double last_core_ev = (*iter); 1873 ExEnv::out0() << "Last (" << sum << ")core EV is " << last_core_ev << std::endl;1815 ExEnv::out0() << "Last core EV is " << last_core_ev << std::endl; 1874 1816 for(int i=0;i<wfn->oso_dimension(); ++i) 1875 1817 if (evals(i) > last_core_ev) … … 1957 1899 n_electrons -= wfn->molecule()->n_core_electrons(); 1958 1900 const double normalization = 1959 ((integral_value == 0) ||(n_electrons == 0)) ?1901 ((integral_value == 0) && (n_electrons == 0)) ? 1960 1902 1. : n_electrons/integral_value; 1961 1903 std::cout << "Created " << data.sampled_grid.sampled_grid.size() << " grid points" … … 2103 2045 data.DoValenceOnly = DoValenceOnly; // set whether we sample just valence electron and nuclei densities 2104 2046 // now call work horse 2105 mainFunction(grp, values, output, input, generic_input, in_char_array, argc, argv, data); 2047 try { 2048 mainFunction(grp, values, output, input, generic_input, in_char_array, argc, argv, data); 2049 } 2050 catch (SCException &e) { 2051 cout << argv[0] << ": ERROR: SC EXCEPTION RAISED:" << endl 2052 << e.what() 2053 << endl; 2054 clean_up(); 2055 } 2106 2056 2107 2057 //delete[] in_char_array; // is deleted in mainFunction() … … 2118 2068 2119 2069 FragmentResult::ptr s( new FragmentResult(getId(), returnstream.str()) ); 2070 if (s->exitflag != 0) 2071 cerr << "Job #" << s->getId() << " failed to reach desired accuracy." << endl; 2072 2120 2073 return s; 2121 2074 }
Note:
See TracChangeset
for help on using the changeset viewer.
