Ignore:
Timestamp:
Dec 19, 2012, 3:25:31 PM (12 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:
dac89b1
Parents:
c62f96
git-author:
Frederik Heber <heber@…> (12/11/12 16:03:40)
git-committer:
Frederik Heber <heber@…> (12/19/12 15:25:31)
Message:

PairPotential_Harmonic now has additional offset parameter.

  • do we need this value in general or not?. A constant should in fact be removed by zero and first order ... but it has to to remove the minimum value. Otherwise the fit cannot converge properly (hence the parameter probably inavoidable for stability).
  • With this setup we were able to successfully fit to a C2H6 system where the CC bond length was specifically manipulated. However, the harmonic function is not the best model, a Morse potential seems more adept.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Potentials/Specifics/PairPotential_Harmonic.cpp

    rc62f96 r65c42c  
    5151      "PairPotential_Harmonic::operator() - requires exactly one argument.");
    5252  const argument_t &r_ij = arguments[0];
    53   const result_t result = spring_constant * Helpers::pow( r_ij.distance - equilibrium_distance, 2 );
     53  const result_t result = spring_constant * Helpers::pow( r_ij.distance - equilibrium_distance, 2 ) - energy_offset;
    5454  return std::vector<result_t>(1, result);
    5555}
     
    7272void PairPotential_Harmonic::setParameters(const parameters_t &_params)
    7373{
    74   ASSERT( _params.size() == 2,
     74  ASSERT( _params.size() == 3,
    7575      "PairPotential_Harmonic::setParameters() - we need exactly two parameters.");
    7676  spring_constant = _params[0];
    7777  equilibrium_distance = _params[1];
     78  energy_offset = _params[2];
    7879}
    7980
    8081PairPotential_Harmonic::parameters_t PairPotential_Harmonic::getParameters() const
    8182{
    82   parameters_t params(2, 0.);
     83  parameters_t params(3, 0.);
    8384  params[0] = spring_constant;
    8485  params[1] = equilibrium_distance;
     86  params[2] = energy_offset;
    8587  return params;
    8688}
Note: See TracChangeset for help on using the changeset viewer.