Changeset 0aa88e


Ignore:
Timestamp:
Oct 21, 2013, 8:42:13 AM (12 years ago)
Author:
Frederik Heber <heber@…>
Children:
1966ba
Parents:
6a4956
git-author:
Frederik Heber <heber@…> (10/21/13 08:38:14)
git-committer:
Frederik Heber <heber@…> (10/21/13 08:42:13)
Message:

FIX: Core electrons was still broken.

  • now, we just use getCoreElectrons() to get their number and count the number of orbitals to drop from sampling.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/bin/mpqc/mpqc.cc

    r6a4956 r0aa88e  
    17881788         std::set<int> valence_indices;
    17891789         if (data.DoValenceOnly == MPQCData::DoSampleValenceOnly) {
     1790           // calculate number of core electrons, half their number is the
     1791           // number of orbitals to skip
     1792           size_t sum = 0;
     1793           for (int iatom=0;iatom < wfn->molecule()->natom(); ++iatom) {
     1794             double charge = wfn->molecule()->Z(iatom);
     1795             sum += getCoreElectrons(charge);
     1796           }
     1797           sum = sum/2 - 1;
    17901798           // find valence orbitals
    17911799           RefDiagSCMatrix evals = scf->eigenvalues();
     
    17971805             evals_sorted.insert(evals(i));
    17981806           std::set<double> evals_distances;
    1799            std::set<double>::const_iterator advancer = evals_sorted.begin();
    1800            std::set<double>::const_iterator iter = advancer++;
    1801            for(;advancer != evals_sorted.end(); ++advancer,++iter) {
    1802              if ((*advancer) > 0.)
    1803                break;
    1804              evals_distances.insert(-(*iter)+(*advancer));
    1805            }
    1806            const double largest_distance = (evals_distances.empty() ? 0. : *(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 ((*advancer) > 0.)
    1812                break;
    1813              if (fabs((-(*iter)+(*advancer)) - largest_distance) < 1e-10)
    1814                break;
    1815            }
     1807           std::set<double>::const_iterator iter = evals_sorted.begin();
     1808           std::advance(iter, sum);
     1809//           std::set<double>::const_iterator iter = advancer++;
     1810//           for(;advancer != evals_sorted.end(); ++advancer,++iter) {
     1811//             if ((*advancer) > 0.)
     1812//               break;
     1813//             evals_distances.insert(-(*iter)+(*advancer));
     1814//           }
     1815//           const double largest_distance = (evals_distances.empty() ? 0. : *(evals_distances.rbegin()));
     1816//           ExEnv::out0()  << "Largest distance between EV is " << largest_distance << std::endl;
     1817//           advancer = evals_sorted.begin();
     1818//           iter = advancer++;
     1819//           for(;advancer != evals_sorted.begin(); ++advancer,++iter) {
     1820//             if ((*advancer) > 0.)
     1821//               break;
     1822//             if (fabs((-(*iter)+(*advancer)) - largest_distance) < 1e-10)
     1823//               break;
     1824//           }
    18161825//           assert( advancer != evals_sorted.begin() );
    18171826           const double last_core_ev = (*iter);
    1818            ExEnv::out0()  << "Last core EV is " << last_core_ev << std::endl;
     1827           ExEnv::out0()  << "Last (" << sum << ") core EV is " << last_core_ev << std::endl;
    18191828           for(int i=0;i<wfn->oso_dimension(); ++i)
    18201829             if (evals(i) > last_core_ev)
Note: See TracChangeset for help on using the changeset viewer.