Changeset 55fe788 for src


Ignore:
Timestamp:
Feb 27, 2013, 11:44:01 AM (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:
93e908
Parents:
b3eabc
git-author:
Frederik Heber <heber@…> (11/26/12 22:24:11)
git-committer:
Frederik Heber <heber@…> (02/27/13 11:44:01)
Message:

All specific Potentials now assert that arguments have charges matching with internal ParticleTypes_t.

  • this ensures that we don't have to pick indices.first == 0 or something similar spooky anymore.
  • TESTFIX: Modified Potentials/Specifics/unittests that now need to specify the (correct) types in each argument_t.
Location:
src/Potentials/Specifics
Files:
8 edited

Legend:

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

    rb3eabc r55fe788  
    165165      ++argiter) {
    166166    const argument_t &r_ij = *argiter;
     167    ASSERT( arguments[0].types.first == getParticleTypes()[0],
     168        "ManyBodyPotential_Tersoff::operator() - first charge "
     169        +toString(arguments[0].types.first)+" is not "+toString(getParticleTypes()[0]));
     170    ASSERT( arguments[0].types.second == getParticleTypes()[1],
     171        "ManyBodyPotential_Tersoff::operator() - second charge "
     172        +toString(arguments[0].types.second)+" is not "+toString(getParticleTypes()[1]));
     173
    167174    const double cutoff = function_cutoff(r_ij.distance);
    168175    const double temp = (cutoff == 0.) ?
     
    217224      ++argiter) {
    218225    const argument_t &r_ij = *argiter;
     226    ASSERT( arguments[0].types.first == getParticleTypes()[0],
     227        "ManyBodyPotential_Tersoff::operator() - first charge "
     228        +toString(arguments[0].types.first)+" is not "+toString(getParticleTypes()[0]));
     229    ASSERT( arguments[0].types.second == getParticleTypes()[1],
     230        "ManyBodyPotential_Tersoff::operator() - second charge "
     231        +toString(arguments[0].types.second)+" is not "+toString(getParticleTypes()[1]));
     232
    219233  switch (index) {
    220234//    case R:
  • src/Potentials/Specifics/PairPotential_Angle.cpp

    rb3eabc r55fe788  
    119119  ASSERT( arguments.size() == 3,
    120120      "PairPotential_Angle::operator() - requires exactly three arguments.");
     121  ASSERT( arguments[0].types.first == getParticleTypes()[0],
     122      "PairPotential_Angle::operator() - first charge of first distance "
     123      +toString(arguments[0].types.first)+" is not "+toString(getParticleTypes()[0]));
     124  ASSERT( arguments[0].types.second == getParticleTypes()[1],
     125      "PairPotential_Angle::operator() - second charge of first distance "
     126      +toString(arguments[0].types.second)+" is not "+toString(getParticleTypes()[1]));
     127  ASSERT( arguments[1].types.first == getParticleTypes()[0],
     128      "PairPotential_Angle::operator() - first charge of second distance "
     129      +toString(arguments[1].types.first)+" is not "+toString(getParticleTypes()[0]));
     130  ASSERT( arguments[1].types.second == getParticleTypes()[2],
     131      "PairPotential_Angle::operator() - second charge of second distance "
     132      +toString(arguments[1].types.second)+" is not "+toString(getParticleTypes()[2]));
     133  ASSERT( arguments[2].types.first == getParticleTypes()[1],
     134      "PairPotential_Angle::operator() - first charge of third distance "
     135      +toString(arguments[2].types.first)+" is not "+toString(getParticleTypes()[1]));
     136  ASSERT( arguments[2].types.second == getParticleTypes()[2],
     137      "PairPotential_Angle::operator() - second charge of third distance "
     138      +toString(arguments[2].types.second)+" is not "+toString(getParticleTypes()[2]));
    121139  const argument_t &r_ij = arguments[0];
    122140  const argument_t &r_ik = arguments[1];
     
    136154  ASSERT( arguments.size() == 3,
    137155      "PairPotential_Angle::operator() - requires exactly three arguments.");
     156  ASSERT( arguments[0].types.first == getParticleTypes()[0],
     157      "PairPotential_Angle::derivative() - first charge of first distance "
     158      +toString(arguments[0].types.first)+" is not "+toString(getParticleTypes()[0]));
     159  ASSERT( arguments[0].types.second == getParticleTypes()[1],
     160      "PairPotential_Angle::derivative() - second charge of first distance "
     161      +toString(arguments[0].types.second)+" is not "+toString(getParticleTypes()[1]));
     162  ASSERT( arguments[1].types.first == getParticleTypes()[0],
     163      "PairPotential_Angle::derivative() - first charge of second distance "
     164      +toString(arguments[1].types.first)+" is not "+toString(getParticleTypes()[0]));
     165  ASSERT( arguments[1].types.second == getParticleTypes()[2],
     166      "PairPotential_Angle::derivative() - second charge of second distance "
     167      +toString(arguments[1].types.second)+" is not "+toString(getParticleTypes()[2]));
     168  ASSERT( arguments[2].types.first == getParticleTypes()[1],
     169      "PairPotential_Angle::derivative() - first charge of third distance "
     170      +toString(arguments[2].types.first)+" is not "+toString(getParticleTypes()[1]));
     171  ASSERT( arguments[2].types.second == getParticleTypes()[2],
     172      "PairPotential_Angle::derivative() - second charge of third distance "
     173      +toString(arguments[2].types.second)+" is not "+toString(getParticleTypes()[2]));
    138174  derivative_components_t result;
    139175  const argument_t &r_ij = arguments[0];
     
    154190  ASSERT( arguments.size() == 3,
    155191      "PairPotential_Angle::parameter_derivative() - requires exactly three arguments.");
     192  ASSERT( arguments[0].types.first == getParticleTypes()[0],
     193      "PairPotential_Angle::parameter_derivative() - first charge of first distance "
     194      +toString(arguments[0].types.first)+" is not "+toString(getParticleTypes()[0]));
     195  ASSERT( arguments[0].types.second == getParticleTypes()[1],
     196      "PairPotential_Angle::parameter_derivative() - second charge of first distance "
     197      +toString(arguments[0].types.second)+" is not "+toString(getParticleTypes()[1]));
     198  ASSERT( arguments[1].types.first == getParticleTypes()[0],
     199      "PairPotential_Angle::parameter_derivative() - first charge of second distance "
     200      +toString(arguments[1].types.first)+" is not "+toString(getParticleTypes()[0]));
     201  ASSERT( arguments[1].types.second == getParticleTypes()[2],
     202      "PairPotential_Angle::parameter_derivative() - second charge of second distance "
     203      +toString(arguments[1].types.second)+" is not "+toString(getParticleTypes()[2]));
     204  ASSERT( arguments[2].types.first == getParticleTypes()[1],
     205      "PairPotential_Angle::parameter_derivative() - first charge of third distance "
     206      +toString(arguments[2].types.first)+" is not "+toString(getParticleTypes()[1]));
     207  ASSERT( arguments[2].types.second == getParticleTypes()[2],
     208      "PairPotential_Angle::parameter_derivative() - second charge of third distance "
     209      +toString(arguments[2].types.second)+" is not "+toString(getParticleTypes()[2]));
    156210  const argument_t &r_ij = arguments[0];
    157211  const argument_t &r_ik = arguments[1];
  • src/Potentials/Specifics/PairPotential_Harmonic.cpp

    rb3eabc r55fe788  
    100100  ASSERT( arguments.size() == 1,
    101101      "PairPotential_Harmonic::operator() - requires exactly one argument.");
     102  ASSERT( arguments[0].types.first == getParticleTypes()[0],
     103      "PairPotential_Harmonic::operator() - first charge "
     104      +toString(arguments[0].types.first)+" is not "+toString(getParticleTypes()[0]));
     105  ASSERT( arguments[0].types.second == getParticleTypes()[1],
     106      "PairPotential_Harmonic::operator() - second charge "
     107      +toString(arguments[0].types.second)+" is not "+toString(getParticleTypes()[1]));
    102108  const argument_t &r_ij = arguments[0];
    103109  const result_t result =
     
    115121  ASSERT( arguments.size() == 1,
    116122      "PairPotential_Harmonic::operator() - requires exactly one argument.");
     123  ASSERT( arguments[0].types.first == getParticleTypes()[0],
     124      "PairPotential_Harmonic::derivative() - first charge "
     125      +toString(arguments[0].types.first)+" is not "+toString(getParticleTypes()[0]));
     126  ASSERT( arguments[0].types.second == getParticleTypes()[1],
     127      "PairPotential_Harmonic::derivative() - second charge "
     128      +toString(arguments[0].types.second)+" is not "+toString(getParticleTypes()[1]));
    117129  derivative_components_t result;
    118130  const argument_t &r_ij = arguments[0];
     
    131143  ASSERT( arguments.size() == 1,
    132144      "PairPotential_Harmonic::parameter_derivative() - requires exactly one argument.");
     145  ASSERT( arguments[0].types.first == getParticleTypes()[0],
     146      "PairPotential_Harmonic::parameter_derivative() - first charge "
     147      +toString(arguments[0].types.first)+" is not "+toString(getParticleTypes()[0]));
     148  ASSERT( arguments[0].types.second == getParticleTypes()[1],
     149      "PairPotential_Harmonic::parameter_derivative() - second charge "
     150      +toString(arguments[0].types.second)+" is not "+toString(getParticleTypes()[1]));
    133151  const argument_t &r_ij = arguments[0];
    134152  switch (index) {
  • src/Potentials/Specifics/PairPotential_Morse.cpp

    rb3eabc r55fe788  
    105105  ASSERT( arguments.size() == 1,
    106106      "PairPotential_Morse::operator() - requires exactly one argument.");
     107  ASSERT( arguments[0].types.first == getParticleTypes()[0],
     108      "PairPotential_Morse::operator() - first charge "
     109      +toString(arguments[0].types.first)+" is not "+toString(getParticleTypes()[0]));
     110  ASSERT( arguments[0].types.second == getParticleTypes()[1],
     111      "PairPotential_Morse::operator() - second charge "
     112      +toString(arguments[0].types.second)+" is not "+toString(getParticleTypes()[1]));
    107113  const argument_t &r_ij = arguments[0];
    108114  // Maple: f(r,D,k,R,c) := D * (1 - exp(-k*(r-R)))^(2)+c
     
    121127  ASSERT( arguments.size() == 1,
    122128      "PairPotential_Morse::operator() - requires exactly one argument.");
     129  ASSERT( arguments[0].types.first == getParticleTypes()[0],
     130      "PairPotential_Morse::derivative() - first charge "
     131      +toString(arguments[0].types.first)+" is not "+toString(getParticleTypes()[0]));
     132  ASSERT( arguments[0].types.second == getParticleTypes()[1],
     133      "PairPotential_Morse::derivative() - second charge "
     134      +toString(arguments[0].types.second)+" is not "+toString(getParticleTypes()[1]));
    123135  derivative_components_t result;
    124136  const argument_t &r_ij = arguments[0];
     
    142154  ASSERT( arguments.size() == 1,
    143155      "PairPotential_Morse::parameter_derivative() - requires exactly one argument.");
     156  ASSERT( arguments[0].types.first == getParticleTypes()[0],
     157      "PairPotential_Morse::parameter_derivative() - first charge "
     158      +toString(arguments[0].types.first)+" is not "+toString(getParticleTypes()[0]));
     159  ASSERT( arguments[0].types.second == getParticleTypes()[1],
     160      "PairPotential_Morse::parameter_derivative() - second charge "
     161      +toString(arguments[0].types.second)+" is not "+toString(getParticleTypes()[1]));
    144162  const argument_t &r_ij = arguments[0];
    145163  switch (index) {
  • src/Potentials/Specifics/unittests/ManyBodyPotential_TersoffUnitTest.cpp

    rb3eabc r55fe788  
    294294        argument_t arg;
    295295        arg.indices = std::make_pair(i,j);
     296        arg.types = std::make_pair(0,1);
    296297        arg.distance = CurrentConfiguration[i].distance(CurrentConfiguration[j]);
    297298        arg.globalid = index; // this is needed for the triplefunction to the configuration
  • src/Potentials/Specifics/unittests/PairPotential_AngleUnitTest.cpp

    rb3eabc r55fe788  
    7171  angles += -0.5, -.4, -.3, -.2, -.1, 0., .1, .2, .3, .4, .5;
    7272  FunctionModel::arguments_t tempvector(3);
    73   tempvector[0] = argument_t( std::make_pair(0,1), std::make_pair(1,1), 1.);
    74   tempvector[1] = argument_t( std::make_pair(0,2), std::make_pair(1,1), 1.);
     73  tempvector[0] = argument_t( std::make_pair(0,1), std::make_pair(0,1), 1.);
     74  tempvector[1] = argument_t( std::make_pair(0,2), std::make_pair(0,1), 1.);
    7575  tempvector[2] = argument_t( std::make_pair(1,2), std::make_pair(1,1), 0.);
    7676  for (angles_t::const_iterator iter = angles.begin(); iter != angles.end(); ++iter) {
  • src/Potentials/Specifics/unittests/PairPotential_HarmonicUnitTest.cpp

    rb3eabc r55fe788  
    9797  PairPotential_Harmonic harmonic(types, .5,1.,.1);
    9898  for (size_t index = 0; index < input.size(); ++index) {
     99    argument_t arg(argument_t::indices_t(0,1), argument_t::types_t(0,1), input[index]);
    99100    CPPUNIT_ASSERT(
    100101        Helpers::isEqual(
    101102            output[index],
    102             harmonic( FunctionModel::arguments_t(1,argument_t(input[index])) )[0]
     103            harmonic( FunctionModel::arguments_t(1,arg) )[0]
    103104        )
    104105    );
     
    115116      ;
    116117  PairPotential_Harmonic harmonic(types, .5,1.,.1);
     118  argument_t arg(argument_t::indices_t(0,1), argument_t::types_t(0,1), 1.);
    117119  CPPUNIT_ASSERT(
    118120      Helpers::isEqual(
    119121          0.,
    120122          harmonic.derivative(
    121               FunctionModel::arguments_t(1,argument_t(1.))
     123              FunctionModel::arguments_t(1,arg)
    122124          )[0]
    123125      )
     
    135137      ;
    136138  PairPotential_Harmonic harmonic(types, .5,1.,.1);
     139  argument_t arg(argument_t::indices_t(0,1), argument_t::types_t(0,1), 1.);
    137140  CPPUNIT_ASSERT(
    138141      Helpers::isEqual(
    139142          0.,
    140143          harmonic.parameter_derivative(
    141               FunctionModel::arguments_t(1,argument_t(1.)),
     144              FunctionModel::arguments_t(1,arg),
    142145              0
    143146          )[0]
     
    148151          0.,
    149152          harmonic.parameter_derivative(
    150               FunctionModel::arguments_t(1,argument_t(1.)),
     153              FunctionModel::arguments_t(1,arg),
    151154              1
    152155          )[0]
     
    157160          1.,
    158161          harmonic.parameter_derivative(
    159               FunctionModel::arguments_t(1,argument_t(1.)),
     162              FunctionModel::arguments_t(1,arg),
    160163              2
    161164          )[0]
  • src/Potentials/Specifics/unittests/PairPotential_MorseUnitTest.cpp

    rb3eabc r55fe788  
    113113  PairPotential_Morse Morse(types, a,c,D,d);
    114114  for (size_t index = 0; index < input.size(); ++index) {
     115    argument_t arg(argument_t::indices_t(0,1), argument_t::types_t(0,1), input[index]);
    115116    CPPUNIT_ASSERT(
    116117        Helpers::isEqual(
    117118            output[index],
    118             Morse( FunctionModel::arguments_t(1,argument_t(input[index])) )[0],
     119            Morse( FunctionModel::arguments_t(1,arg) )[0],
    119120            1.e-4/std::numeric_limits<double>::epsilon() // only compare four digits
    120121        )
     
    132133      ;
    133134  PairPotential_Morse Morse(types, a,c,D,d);
     135  argument_t arg(argument_t::indices_t(0,1), argument_t::types_t(0,1), c);
    134136  CPPUNIT_ASSERT(
    135137      Helpers::isEqual(
    136138          0.,
    137139          Morse.derivative(
    138               FunctionModel::arguments_t(1,argument_t(c))
     140              FunctionModel::arguments_t(1,arg)
    139141          )[0],
    140142          1.e+6
     
    153155      ;
    154156  PairPotential_Morse Morse(types, a,c,D,d);
     157  argument_t arg(argument_t::indices_t(0,1), argument_t::types_t(0,1), c);
    155158  CPPUNIT_ASSERT(
    156159      Helpers::isEqual(
    157160          0.,
    158161          Morse.parameter_derivative(
    159               FunctionModel::arguments_t(1,argument_t(c)),
     162              FunctionModel::arguments_t(1,arg),
    160163              0
    161164          )[0],
     
    167170          0.,
    168171          Morse.parameter_derivative(
    169               FunctionModel::arguments_t(1,argument_t(c)),
     172              FunctionModel::arguments_t(1,arg),
    170173              1
    171174          )[0],
     
    177180          0.,
    178181          Morse.parameter_derivative(
    179               FunctionModel::arguments_t(1,argument_t(c)),
     182              FunctionModel::arguments_t(1,arg),
    180183              2
    181184          )[0],
     
    187190          1.,
    188191          Morse.parameter_derivative(
    189               FunctionModel::arguments_t(1,argument_t(c)),
     192              FunctionModel::arguments_t(1,arg),
    190193              3
    191194          )[0],
Note: See TracChangeset for help on using the changeset viewer.