Changeset 884d8c for src/Potentials


Ignore:
Timestamp:
Nov 11, 2016, 2:25:35 PM (8 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Action_Thermostats, Add_AtomRandomPerturbation, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_StructOpt_integration_tests, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, 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_ChronosMutex, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, GeometryObjects, Gui_displays_atomic_force_velocity, IndependentFragmentGrids_IntegrationTest, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, RotateToPrincipalAxisSystem_UndoRedo, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, ThirdParty_MPQC_rebuilt_buildsystem, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, Ubuntu_1604_changes, stable
Children:
824bba
Parents:
c738f1
git-author:
Frederik Heber <heber@…> (10/05/16 20:29:23)
git-committer:
Frederik Heber <heber@…> (11/11/16 14:25:35)
Message:

FIX: FourBodyPotential_Improper does not need to override function_theta anymore.

  • the order of arguments is now changed by the different binding model.
  • TESTFIX: We don't need to set up the unit test with input args in different order any more, i.e. now same as .._Torsion.
Location:
src/Potentials/Specifics
Files:
3 edited

Legend:

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

    rc738f1 r884d8c  
    114114    bindingmodel(generateBindingModel(_ParticleTypes))
    115115{}
    116 
    117 FourBodyPotential_Improper::result_t
    118 FourBodyPotential_Improper::function_theta(
    119     const double &r_ij,
    120     const double &r_ik,
    121     const double &r_il,
    122     const double &r_jk,
    123     const double &r_jl,
    124     const double &r_kl
    125   ) const
    126 {
    127   // just relay call to torsion's theta function with some flipped arguments
    128   return FourBodyPotential_Torsion::function_theta(
    129       r_jk,
    130       r_ik,
    131       r_kl,
    132       r_ij,
    133       r_jl,
    134       r_il
    135       );
    136 }
  • src/Potentials/Specifics/FourBodyPotential_Improper.hpp

    rc738f1 r884d8c  
    6868
    6969private:
    70   /** Function to obtain angle between planes from distances.
    71    *
    72    */
    73   result_t function_theta(
    74       const double &r_ij,
    75       const double &r_ik,
    76       const double &r_il,
    77       const double &r_jk,
    78       const double &r_jl,
    79       const double &r_kl
    80     ) const;
    8170
    8271  /** Return the token name of this specific potential.
  • src/Potentials/Specifics/unittests/FourBodyPotential_ImproperUnitTest.cpp

    rc738f1 r884d8c  
    7272  angles += -0.5, -.4, -.3, -.2, -.1, 0., .1, .2, .3, .4, .5;
    7373  FunctionModel::arguments_t tempvector(6);
    74   tempvector[3] = argument_t( std::make_pair(0,1), std::make_pair(0,1), 1.);
    75   tempvector[1] = argument_t( std::make_pair(0,2), std::make_pair(0,1), 1.);
    76   tempvector[5] = argument_t( std::make_pair(0,3), std::make_pair(0,0), 0.);
    77   tempvector[0] = argument_t( std::make_pair(1,2), std::make_pair(1,1), 1.);
    78   tempvector[4] = argument_t( std::make_pair(1,3), std::make_pair(0,1), 1.);
    79   tempvector[2] = argument_t( std::make_pair(2,3), std::make_pair(0,1), 1.);
     74  tempvector[0] = argument_t( std::make_pair(0,1), std::make_pair(0,1), 1., true);
     75  tempvector[1] = argument_t( std::make_pair(0,2), std::make_pair(0,1), 1., true);
     76  tempvector[2] = argument_t( std::make_pair(0,3), std::make_pair(0,0), 0., true);
     77  tempvector[3] = argument_t( std::make_pair(1,2), std::make_pair(1,1), 1., false);
     78  tempvector[4] = argument_t( std::make_pair(1,3), std::make_pair(0,1), 1., false);
     79  tempvector[5] = argument_t( std::make_pair(2,3), std::make_pair(0,1), 1., false);
    8080  // we have two equilateral triangles (length 1)
    8181  // height is then \sqrt(2*(1+1)-1)*.5=sqrt(3)*.5
     
    8686  // x = sqrt(h_1^2+h_2^2 - cos(theta) * (2*h_1*h_2))
    8787  for (angles_t::const_iterator iter = angles.begin(); iter != angles.end(); ++iter) {
    88     tempvector[5].distance = sqrt(.75+.75 - (*iter)*(1.5));
     88    tempvector[2].distance = sqrt(.75+.75 - (*iter)*(1.5));
    8989    input += tempvector;
    9090  }
Note: See TracChangeset for help on using the changeset viewer.