Ignore:
Timestamp:
Oct 18, 2011, 8:23:11 AM (14 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
Children:
752bb4
Parents:
9011c1
git-author:
Frederik Heber <heber@…> (10/06/11 13:55:45)
git-committer:
Frederik Heber <heber@…> (10/18/11 08:23:11)
Message:

Implemented Psi3Parser::save().

  • also we now have working unit test on this functionality.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/Psi3Parser.cpp

    r9011c1 rd640ea  
    160160void FormatParser< psi3 >::save(ostream *file, const std::vector<atom *> &atoms)
    161161{
    162 //  Vector center;
    163 ////  vector<atom *> allatoms = World::getInstance().getAllAtoms();
    164 //
    165 //  // calculate center
    166 //  for (std::vector<atom *>::const_iterator runner = atoms.begin();runner != atoms.end(); ++runner)
    167 //    center += (*runner)->getPosition();
    168 //  center.Scale(1./(double)atoms.size());
    169 //
    170 //  // first without hessian
    171 //  if (file->fail()) {
    172 //    DoeLog(1) && (eLog()<< Verbose(1) << "Cannot open psi3 output file." << endl);
    173 //  } else {
    174 //    *file << "% Created by MoleCuilder" << endl;
    175 //    *file << "psi3: (" << endl;
    176 //    *file << "\tsavestate = " << getParams().getParameter(Psi3Parser_Parameters::savestateParam) << endl;
    177 //    *file << "\tdo_gradient = " << getParams().getParameter(Psi3Parser_Parameters::do_gradientParam) << endl;
    178 //    if (Converter(getParams().getParameter(Psi3Parser_Parameters::hessianParam))) {
    179 //      *file << "\tfreq<MolecularFrequencies>: (" << endl;
    180 //      *file << "\t\tmolecule=$:molecule" << endl;
    181 //      *file << "\t)" << endl;
     162  Vector center;
     163//  vector<atom *> allatoms = World::getInstance().getAllAtoms();
     164
     165  // calculate center
     166  for (std::vector<atom *>::const_iterator runner = atoms.begin();runner != atoms.end(); ++runner)
     167    center += (*runner)->getPosition();
     168  center.Scale(1./(double)atoms.size());
     169
     170  // first without hessian
     171  if (file->fail()) {
     172    DoeLog(1) && (eLog()<< Verbose(1) << "Cannot open psi3 output file." << std::endl);
     173  } else {
     174    *file << "% Created by MoleCuilder" << std::endl;
     175    *file << "psi: (" << std::endl;
     176    *file << "\t" << getParams().getParameterName(Psi3Parser_Parameters::labelParam)
     177                  << " = \"" << getParams().getParameter(Psi3Parser_Parameters::labelParam) << "\"" << std::endl;
     178    *file << "\t" << getParams().getParameterName(Psi3Parser_Parameters::jobtypeParam)
     179                  << " = " << getParams().getParameter(Psi3Parser_Parameters::jobtypeParam) << std::endl;
     180    *file << "\t" << getParams().getParameterName(Psi3Parser_Parameters::wavefunctionParam)
     181                  << " = " << getParams().getParameter(Psi3Parser_Parameters::wavefunctionParam) << std::endl;
     182    *file << "\t" << getParams().getParameterName(Psi3Parser_Parameters::maxiterParam)
     183                  << " = " << getParams().getParameter(Psi3Parser_Parameters::maxiterParam) << std::endl;
     184    *file << "\t" << getParams().getParameterName(Psi3Parser_Parameters::referenceParam)
     185                  << " = " << getParams().getParameter(Psi3Parser_Parameters::referenceParam) << std::endl;
     186    *file << "\t" << getParams().getParameterName(Psi3Parser_Parameters::basisParam)
     187                  << " = \"" << getParams().getParameter(Psi3Parser_Parameters::basisParam) << "\"" << std::endl;
     188    const std::string reference = getParams().getParameter(Psi3Parser_Parameters::referenceParam);
     189//    if (reference == getParams().getReferenceName(Psi3Parser_Parameters::RHF)) {
    182190//    }
    183 //    const std::string theory = getParams().getParameter(Psi3Parser_Parameters::theoryParam);
    184 //    if (theory == getParams().getTheoryName(Psi3Parser_Parameters::CLHF)) {
    185 //      *file << "\tmole<" << getParams().getParameter(Psi3Parser_Parameters::theoryParam) << ">: (" << endl;
    186 //      *file << "\t\tmolecule = $:molecule" << endl;
    187 //      *file << "\t\t" << getParams().getParameterName(Psi3Parser_Parameters::basisParam) << " = $:basis" << endl;
    188 //      *file << "\t\t" << getParams().getParameterName(Psi3Parser_Parameters::maxiterParam)
    189 //          << " = " << getParams().getParameter(Psi3Parser_Parameters::maxiterParam)<< endl;
    190 //      *file << "\t\t" << getParams().getParameterName(Psi3Parser_Parameters::memoryParam)
    191 //          << " = " << getParams().getParameter(Psi3Parser_Parameters::memoryParam) << endl;
    192 //      *file << "\t)" << endl;
    193 //    } else if (theory == getParams().getTheoryName(Psi3Parser_Parameters::CLKS)) {
    194 //      *file << "\tmole<" << getParams().getParameter(Psi3Parser_Parameters::theoryParam) << ">: (" << endl;
    195 //      *file << "\t\tfunctional<StdDenFunctional>:(name=B3LYP)" << endl;
    196 //      *file << "\t\tmolecule = $:molecule" << endl;
    197 //      *file << "\t\t" << getParams().getParameterName(Psi3Parser_Parameters::basisParam) << " = $:basis" << endl;
    198 //      *file << "\t\t" << getParams().getParameterName(Psi3Parser_Parameters::maxiterParam)
    199 //          << " = " << getParams().getParameter(Psi3Parser_Parameters::maxiterParam)<< endl;
    200 //      *file << "\t\t" << getParams().getParameterName(Psi3Parser_Parameters::memoryParam)
    201 //          << " = " << getParams().getParameter(Psi3Parser_Parameters::memoryParam) << endl;
    202 //      *file << "\t)" << endl;
    203 //    } else if (theory == getParams().getTheoryName(Psi3Parser_Parameters::MBPT2)) {
    204 //      *file << "\tmole<" << getParams().getParameter(Psi3Parser_Parameters::theoryParam) << ">: (" << endl;
    205 //      *file << "\t\t" << getParams().getParameterName(Psi3Parser_Parameters::basisParam) << " = $:basis" << endl;
    206 //      *file << "\t\tmolecule = $:molecule" << endl;
    207 //      *file << "\t\t" << getParams().getParameterName(Psi3Parser_Parameters::memoryParam)
    208 //          << " = " << getParams().getParameter(Psi3Parser_Parameters::memoryParam) << endl;
    209 //      *file << "\t\treference<CLHF>: (" << endl;
    210 //      *file << "\t\t\t" << getParams().getParameterName(Psi3Parser_Parameters::maxiterParam)
    211 //          << " = " << getParams().getParameter(Psi3Parser_Parameters::maxiterParam)<< endl;
    212 //      *file << "\t\t\t" << getParams().getParameterName(Psi3Parser_Parameters::basisParam) << " = $:basis" << endl;
    213 //      *file << "\t\t\tmolecule = $:molecule" << endl;
    214 //      *file << "\t\t\t" << getParams().getParameterName(Psi3Parser_Parameters::memoryParam)
    215 //          << " = " << getParams().getParameter(Psi3Parser_Parameters::memoryParam) << endl;
    216 //      *file << "\t\t)" << endl;
    217 //      *file << "\t)" << endl;
    218 //    } else if (theory == getParams().getTheoryName(Psi3Parser_Parameters::MBPT2_R12)) {
    219 //      *file << "\tmole<" << getParams().getParameter(Psi3Parser_Parameters::theoryParam) << ">: (" << endl;
    220 //      *file << "\t\tmolecule = $:molecule" << endl;
    221 //      *file << "\t\t" << getParams().getParameterName(Psi3Parser_Parameters::basisParam) << " = $:basis" << endl;
    222 //      *file << "\t\t" << getParams().getParameterName(Psi3Parser_Parameters::aux_basisParam) << " = $:abasis" << endl;
    223 //      *file << "\t\t" << getParams().getParameterName(Psi3Parser_Parameters::stdapproxParam)
    224 //          << " = \"" << getParams().getParameter(Psi3Parser_Parameters::stdapproxParam) << "\"" << endl;
    225 //      *file << "\t\t" << getParams().getParameterName(Psi3Parser_Parameters::nfzcParam)
    226 //          << " = " << getParams().getParameter(Psi3Parser_Parameters::nfzcParam) << endl;
    227 //      *file << "\t\t" << getParams().getParameterName(Psi3Parser_Parameters::memoryParam)
    228 //          << " = " << getParams().getParameter(Psi3Parser_Parameters::memoryParam) << endl;
    229 //      *file << "\t\tintegrals<IntegralCints>:()" << endl;
    230 //      *file << "\t\treference<CLHF>: (" << endl;
    231 //      *file << "\t\t\tmolecule = $:molecule" << endl;
    232 //      *file << "\t\t\t" << getParams().getParameterName(Psi3Parser_Parameters::basisParam) << " = $:basis" << endl;
    233 //      *file << "\t\t\tmaxiter = " << getParams().getParameter(Psi3Parser_Parameters::maxiterParam) << endl;
    234 //      *file << "\t\t\tmemory = " << getParams().getParameter(Psi3Parser_Parameters::memoryParam) << endl;
    235 //      *file << "\t\t\tintegrals<" << getParams().getParameter(Psi3Parser_Parameters::integrationParam) << ">:()" << endl;
    236 //      *file << "\t\t)" << endl;
    237 //      *file << "\t)" << endl;
    238 //    } else {
    239 //      DoeLog(0) && (eLog() << Verbose(0)
    240 //          << "Unknown level of theory requested for MPQC output file." << std::endl);
     191//    if (reference == getParams().getReferenceName(Psi3Parser_Parameters::ROHF)) {
    241192//    }
    242 //    *file << ")" << endl;
    243 //    *file << "molecule<Molecule>: (" << endl;
    244 //    *file << "\tunit = " << (World::getInstance().getConfig()->GetIsAngstroem() ? "angstrom" : "bohr" ) << endl;
    245 //    *file << "\t{ atoms geometry } = {" << endl;
    246 //    // output of atoms
    247 //    for (std::vector<atom *>::const_iterator AtomRunner = atoms.begin(); AtomRunner != atoms.end(); ++AtomRunner) {
    248 //      (*AtomRunner)->OutputMPQCLine(file, &center);
    249 //    }
    250 //    *file << "\t}" << endl;
    251 //    *file << ")" << endl;
    252 //    *file << "basis<GaussianBasisSet>: (" << endl;
    253 //    *file << "\tname = \"" << getParams().getParameter(Psi3Parser_Parameters::basisParam) << "\"" << endl;
    254 //    *file << "\tmolecule = $:molecule" << endl;
    255 //    *file << ")" << endl;
    256 //    if (theory == getParams().getTheoryName(Psi3Parser_Parameters::MBPT2_R12)) {
    257 //      *file << "% auxiliary basis set specification" << endl;
    258 //      *file << "\tabasis<GaussianBasisSet>: (" << endl;
    259 //      *file << "\tname = \"" << getParams().getParameter(Psi3Parser_Parameters::aux_basisParam) << "\"" << endl;
    260 //      *file << "\tmolecule = $:molecule" << endl;
    261 //      *file << ")" << endl;
    262 //    }
    263 //  }
     193    if ((reference == getParams().getReferenceName(Psi3Parser_Parameters::UHF))
     194        || (reference == getParams().getReferenceName(Psi3Parser_Parameters::TWOCON))) {
     195      *file << "\t" << getParams().getParameterName(Psi3Parser_Parameters::multiplicityParam)
     196                    << " = " << getParams().getParameter(Psi3Parser_Parameters::multiplicityParam) << std::endl;
     197      *file << "\t" << getParams().getParameterName(Psi3Parser_Parameters::chargeParam)
     198                    << " = " << getParams().getParameter(Psi3Parser_Parameters::chargeParam) << std::endl;
     199    }
     200    if (reference == getParams().getReferenceName(Psi3Parser_Parameters::TWOCON)) {
     201      *file << "\t" << getParams().getParameterName(Psi3Parser_Parameters::soccParam)
     202                    << " = " << getParams().getParameter(Psi3Parser_Parameters::soccParam) << std::endl;
     203      *file << "\t" << getParams().getParameterName(Psi3Parser_Parameters::doccParam)
     204                    << " = " << getParams().getParameter(Psi3Parser_Parameters::doccParam) << std::endl;
     205      *file << "\t" << getParams().getParameterName(Psi3Parser_Parameters::subgroupParam)
     206                    << " = " << getParams().getParameter(Psi3Parser_Parameters::subgroupParam) << std::endl;
     207      *file << "\t" << getParams().getParameterName(Psi3Parser_Parameters::unique_axisParam)
     208                    << " = " << getParams().getParameter(Psi3Parser_Parameters::unique_axisParam) << std::endl;
     209    }
     210    if ((reference != getParams().getReferenceName(Psi3Parser_Parameters::RHF))
     211        && (reference != getParams().getReferenceName(Psi3Parser_Parameters::ROHF))
     212        && (reference != getParams().getReferenceName(Psi3Parser_Parameters::UHF))
     213        && (reference != getParams().getReferenceName(Psi3Parser_Parameters::TWOCON)))
     214    {
     215      DoeLog(0) && (eLog() << Verbose(0)
     216          << "Unknown level of reference requested for Psi3 output file." << std::endl);
     217    }
     218    *file << "\t" << getParams().getParameterName(Psi3Parser_Parameters::freeze_coreParam)
     219                  << " = " << getParams().getParameter(Psi3Parser_Parameters::freeze_coreParam) << std::endl;
     220    *file << "\t" << getParams().getParameterName(Psi3Parser_Parameters::unitsParam)
     221                  << " = " << getParams().getParameter(Psi3Parser_Parameters::unitsParam) << std::endl;
     222    *file << "\tgeometry = (" << std::endl;
     223    // output of atoms
     224    for (std::vector<atom *>::const_iterator AtomRunner = atoms.begin(); AtomRunner != atoms.end(); ++AtomRunner) {
     225      (*AtomRunner)->OutputPsi3Line(file, &center);
     226    }
     227    *file << "\t)" << std::endl;
     228    *file << "\t" << getParams().getParameterName(Psi3Parser_Parameters::originParam)
     229                  << " = " << getParams().getParameter(Psi3Parser_Parameters::originParam) << std::endl;
     230    *file << ")" << std::endl;
     231  }
    264232}
    265233
Note: See TracChangeset for help on using the changeset viewer.