Changeset 484e2a for src/Potentials/Specifics
- Timestamp:
- Aug 9, 2013, 2:20:37 PM (12 years ago)
- 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:
- e2037e
- Parents:
- 1413f4
- git-author:
- Frederik Heber <heber@…> (07/08/13 07:20:55)
- git-committer:
- Frederik Heber <heber@…> (08/09/13 14:20:37)
- Location:
- src/Potentials/Specifics
- Files:
-
- 1 edited
- 4 moved
Legend:
- Unmodified
- Added
- Removed
-
src/Potentials/Specifics/ThreeBodyPotential_Angle.cpp
r1413f4 r484e2a 24 24 25 25 /* 26 * PairPotential_Angle.cpp26 * ThreeBodyPotential_Angle.cpp 27 27 * 28 28 * Created on: Oct 11, 2012 … … 38 38 #include "CodePatterns/MemDebug.hpp" 39 39 40 #include " PairPotential_Angle.hpp"40 #include "ThreeBodyPotential_Angle.hpp" 41 41 42 42 #include <boost/assign/list_of.hpp> // for 'map_list_of()' … … 55 55 56 56 // static definitions 57 const PairPotential_Angle::ParameterNames_t58 PairPotential_Angle::ParameterNames =57 const ThreeBodyPotential_Angle::ParameterNames_t 58 ThreeBodyPotential_Angle::ParameterNames = 59 59 boost::assign::list_of<std::string> 60 60 ("spring_constant") 61 61 ("equilibrium_distance") 62 62 ; 63 const std::string PairPotential_Angle::potential_token("harmonic_angle");64 65 PairPotential_Angle::PairPotential_Angle() :63 const std::string ThreeBodyPotential_Angle::potential_token("harmonic_angle"); 64 65 ThreeBodyPotential_Angle::ThreeBodyPotential_Angle() : 66 66 EmpiricalPotential(), 67 67 params(parameters_t(MAXPARAMS, 0.)) … … 72 72 } 73 73 74 PairPotential_Angle::PairPotential_Angle(74 ThreeBodyPotential_Angle::ThreeBodyPotential_Angle( 75 75 const ParticleTypes_t &_ParticleTypes 76 76 ) : … … 83 83 } 84 84 85 PairPotential_Angle::PairPotential_Angle(85 ThreeBodyPotential_Angle::ThreeBodyPotential_Angle( 86 86 const ParticleTypes_t &_ParticleTypes, 87 87 const double _spring_constant, … … 94 94 } 95 95 96 void PairPotential_Angle::setParameters(const parameters_t &_params)96 void ThreeBodyPotential_Angle::setParameters(const parameters_t &_params) 97 97 { 98 98 const size_t paramsDim = _params.size(); 99 99 ASSERT( paramsDim <= getParameterDimension(), 100 " PairPotential_Angle::setParameters() - we need not more than "100 "ThreeBodyPotential_Angle::setParameters() - we need not more than " 101 101 +toString(getParameterDimension())+" parameters."); 102 102 for(size_t i=0;i<paramsDim;++i) … … 107 107 check_params.resize(paramsDim); // truncate to same size 108 108 ASSERT( check_params == _params, 109 " PairPotential_Angle::setParameters() - failed, mismatch in to be set "109 "ThreeBodyPotential_Angle::setParameters() - failed, mismatch in to be set " 110 110 +toString(_params)+" and set "+toString(check_params)+" params."); 111 111 #endif 112 112 } 113 113 114 PairPotential_Angle::result_t115 PairPotential_Angle::function_theta(114 ThreeBodyPotential_Angle::result_t 115 ThreeBodyPotential_Angle::function_theta( 116 116 const double &r_ij, 117 117 const double &r_jk, … … 130 130 } 131 131 132 PairPotential_Angle::results_t133 PairPotential_Angle::operator()(132 ThreeBodyPotential_Angle::results_t 133 ThreeBodyPotential_Angle::operator()( 134 134 const arguments_t &arguments 135 135 ) const 136 136 { 137 137 ASSERT( arguments.size() == 3, 138 " PairPotential_Angle::operator() - requires exactly three arguments.");138 "ThreeBodyPotential_Angle::operator() - requires exactly three arguments."); 139 139 ASSERT( ParticleTypeChecker::checkArgumentsAgainstParticleTypes( 140 140 arguments, getParticleTypes()), 141 " PairPotential_Angle::operator() - types don't match with ones in arguments.");141 "ThreeBodyPotential_Angle::operator() - types don't match with ones in arguments."); 142 142 const argument_t &r_ij = arguments[0]; // 01 143 143 const argument_t &r_jk = arguments[2]; // 12 … … 149 149 } 150 150 151 PairPotential_Angle::derivative_components_t152 PairPotential_Angle::derivative(151 ThreeBodyPotential_Angle::derivative_components_t 152 ThreeBodyPotential_Angle::derivative( 153 153 const arguments_t &arguments 154 154 ) const 155 155 { 156 156 ASSERT( arguments.size() == 3, 157 " PairPotential_Angle::operator() - requires exactly three arguments.");157 "ThreeBodyPotential_Angle::operator() - requires exactly three arguments."); 158 158 ASSERT( ParticleTypeChecker::checkArgumentsAgainstParticleTypes( 159 159 arguments, getParticleTypes()), 160 " PairPotential_Angle::operator() - types don't match with ones in arguments.");160 "ThreeBodyPotential_Angle::operator() - types don't match with ones in arguments."); 161 161 derivative_components_t result; 162 162 const argument_t &r_ij = arguments[0]; //01 … … 165 165 result.push_back( 2. * params[spring_constant] * ( function_theta(r_ij.distance, r_jk.distance, r_ik.distance) - params[equilibrium_distance]) ); 166 166 ASSERT( result.size() == 1, 167 " PairPotential_Angle::operator() - we did not create exactly one component.");167 "ThreeBodyPotential_Angle::operator() - we did not create exactly one component."); 168 168 return result; 169 169 } 170 170 171 PairPotential_Angle::results_t172 PairPotential_Angle::parameter_derivative(171 ThreeBodyPotential_Angle::results_t 172 ThreeBodyPotential_Angle::parameter_derivative( 173 173 const arguments_t &arguments, 174 174 const size_t index … … 176 176 { 177 177 ASSERT( arguments.size() == 3, 178 " PairPotential_Angle::parameter_derivative() - requires exactly three arguments.");178 "ThreeBodyPotential_Angle::parameter_derivative() - requires exactly three arguments."); 179 179 ASSERT( ParticleTypeChecker::checkArgumentsAgainstParticleTypes( 180 180 arguments, getParticleTypes()), 181 " PairPotential_Angle::operator() - types don't match with ones in arguments.");181 "ThreeBodyPotential_Angle::operator() - types don't match with ones in arguments."); 182 182 const argument_t &r_ij = arguments[0]; //01 183 183 const argument_t &r_jk = arguments[2]; //12 … … 200 200 } 201 201 default: 202 ASSERT(0, " PairPotential_Angle::parameter_derivative() - derivative to unknown parameter desired.");202 ASSERT(0, "ThreeBodyPotential_Angle::parameter_derivative() - derivative to unknown parameter desired."); 203 203 break; 204 204 } … … 206 206 207 207 FunctionModel::extractor_t 208 PairPotential_Angle::getSpecificExtractor() const208 ThreeBodyPotential_Angle::getSpecificExtractor() const 209 209 { 210 210 Fragment::charges_t charges; … … 221 221 } 222 222 223 FunctionModel::filter_t PairPotential_Angle::getSpecificFilter() const223 FunctionModel::filter_t ThreeBodyPotential_Angle::getSpecificFilter() const 224 224 { 225 225 FunctionModel::filter_t returnfunction = … … 234 234 235 235 void 236 PairPotential_Angle::setParametersToRandomInitialValues(236 ThreeBodyPotential_Angle::setParametersToRandomInitialValues( 237 237 const TrainingData &data) 238 238 { 239 params[ PairPotential_Angle::spring_constant] = 1e+0*rand()/(double)RAND_MAX;// 0.2;240 params[ PairPotential_Angle::equilibrium_distance] = -0.3;//2e+0*rand()/(double)RAND_MAX - 1.;// 1.;241 } 242 239 params[ThreeBodyPotential_Angle::spring_constant] = 1e+0*rand()/(double)RAND_MAX;// 0.2; 240 params[ThreeBodyPotential_Angle::equilibrium_distance] = -0.3;//2e+0*rand()/(double)RAND_MAX - 1.;// 1.; 241 } 242 -
src/Potentials/Specifics/ThreeBodyPotential_Angle.hpp
r1413f4 r484e2a 1 1 /* 2 * PairPotential_Angle.hpp2 * ThreeBodyPotential_Angle.hpp 3 3 * 4 4 * Created on: Oct 11, 2012 … … 6 6 */ 7 7 8 #ifndef PAIRPOTENTIAL_ANGLE_HPP_9 #define PAIRPOTENTIAL_ANGLE_HPP_8 #ifndef THREEBODYPOTENTIAL_ANGLE_HPP_ 9 #define THREEBODYPOTENTIAL_ANGLE_HPP_ 10 10 11 11 … … 27 27 * 28 28 */ 29 class PairPotential_Angle :29 class ThreeBodyPotential_Angle : 30 30 public EmpiricalPotential 31 31 { 32 32 //!> grant unit test access to internal parts 33 friend class PairPotential_AngleTest;33 friend class ThreeBodyPotential_AngleTest; 34 34 //!> grant PotentialFactory access to default cstor 35 35 friend class PotentialFactory; … … 48 48 * 49 49 */ 50 PairPotential_Angle();50 ThreeBodyPotential_Angle(); 51 51 52 52 public: 53 PairPotential_Angle(const ParticleTypes_t &_ParticleTypes);54 PairPotential_Angle(53 ThreeBodyPotential_Angle(const ParticleTypes_t &_ParticleTypes); 54 ThreeBodyPotential_Angle( 55 55 const ParticleTypes_t &_ParticleTypes, 56 56 const double _spring_constant, 57 57 const double _equilibrium_distance); 58 virtual ~ PairPotential_Angle() {}58 virtual ~ThreeBodyPotential_Angle() {} 59 59 60 60 /** Setter for parameters as required by FunctionModel interface. … … 204 204 }; 205 205 206 #endif /* PAIRPOTENTIAL_ANGLE_HPP_ */206 #endif /* THREEBODYPOTENTIAL_ANGLE_HPP_ */ -
src/Potentials/Specifics/unittests/Makefile.am
r1413f4 r484e2a 5 5 ../Potentials/Specifics/unittests/ConstantPotentialUnitTest.cpp \ 6 6 ../Potentials/Specifics/unittests/ManyBodyPotential_TersoffUnitTest.cpp \ 7 ../Potentials/Specifics/unittests/PairPotential_AngleUnitTest.cpp \8 7 ../Potentials/Specifics/unittests/PairPotential_HarmonicUnitTest.cpp \ 9 8 ../Potentials/Specifics/unittests/PairPotential_LennardJonesUnitTest.cpp \ 10 ../Potentials/Specifics/unittests/PairPotential_MorseUnitTest.cpp 9 ../Potentials/Specifics/unittests/PairPotential_MorseUnitTest.cpp \ 10 ../Potentials/Specifics/unittests/ThreeBodyPotential_AngleUnitTest.cpp 11 11 12 12 POTENTIALSSPECIFICSTESTSHEADERS = \ 13 13 ../Potentials/Specifics/unittests/ConstantPotentialUnitTest.hpp \ 14 14 ../Potentials/Specifics/unittests/ManyBodyPotential_TersoffUnitTest.hpp \ 15 ../Potentials/Specifics/unittests/PairPotential_AngleUnitTest.hpp \16 15 ../Potentials/Specifics/unittests/PairPotential_HarmonicUnitTest.hpp \ 17 16 ../Potentials/Specifics/unittests/PairPotential_LennardJonesUnitTest.hpp \ 18 ../Potentials/Specifics/unittests/PairPotential_MorseUnitTest.hpp 17 ../Potentials/Specifics/unittests/PairPotential_MorseUnitTest.hpp \ 18 ../Potentials/Specifics/unittests/ThreeBodyPotential_AngleUnitTest.hpp 19 19 20 20 POTENTIALSSPECIFICSTESTS = \ 21 21 ConstantPotentialUnitTest \ 22 22 ManyBodyPotential_TersoffUnitTest \ 23 PairPotential_AngleUnitTest \24 23 PairPotential_HarmonicUnitTest \ 25 24 PairPotential_LennardJonesUnitTest \ 26 PairPotential_MorseUnitTest 25 PairPotential_MorseUnitTest \ 26 ThreeBodyPotential_AngleUnitTest 27 27 28 28 TESTS += $(POTENTIALSSPECIFICSTESTS) … … 50 50 ManyBodyPotential_TersoffUnitTest_LDADD = ${POTENTIALSSPECIFICSLIBS} 51 51 52 PairPotential_AngleUnitTest_SOURCES = $(top_srcdir)/src/unittests/UnitTestMain.cpp \53 ../Potentials/Specifics/unittests/PairPotential_AngleUnitTest.cpp \54 ../Potentials/Specifics/unittests/PairPotential_AngleUnitTest.hpp55 PairPotential_AngleUnitTest_LDADD = ${POTENTIALSSPECIFICSLIBS}56 57 52 PairPotential_HarmonicUnitTest_SOURCES = $(top_srcdir)/src/unittests/UnitTestMain.cpp \ 58 53 ../Potentials/Specifics/unittests/PairPotential_HarmonicUnitTest.cpp \ … … 70 65 PairPotential_MorseUnitTest_LDADD = ${POTENTIALSSPECIFICSLIBS} 71 66 67 ThreeBodyPotential_AngleUnitTest_SOURCES = $(top_srcdir)/src/unittests/UnitTestMain.cpp \ 68 ../Potentials/Specifics/unittests/ThreeBodyPotential_AngleUnitTest.cpp \ 69 ../Potentials/Specifics/unittests/ThreeBodyPotential_AngleUnitTest.hpp 70 ThreeBodyPotential_AngleUnitTest_LDADD = ${POTENTIALSSPECIFICSLIBS} 71 72 72 73 73 #AUTOMAKE_OPTIONS = parallel-tests -
src/Potentials/Specifics/unittests/ThreeBodyPotential_AngleUnitTest.cpp
r1413f4 r484e2a 23 23 24 24 /* 25 * PairPotential_AngleUnitTest.cpp25 * ThreeBodyPotential_AngleUnitTest.cpp 26 26 * 27 27 * Created on: Oct 16, 2012 … … 40 40 #include <cppunit/ui/text/TestRunner.h> 41 41 42 #include " PairPotential_AngleUnitTest.hpp"42 #include "ThreeBodyPotential_AngleUnitTest.hpp" 43 43 44 44 #include <boost/assign.hpp> … … 47 47 48 48 #include "FunctionApproximation/FunctionArgument.hpp" 49 #include "Potentials/Specifics/ PairPotential_Angle.hpp"49 #include "Potentials/Specifics/ThreeBodyPotential_Angle.hpp" 50 50 #include "Potentials/helpers.hpp" 51 51 … … 59 59 60 60 // Registers the fixture into the 'registry' 61 CPPUNIT_TEST_SUITE_REGISTRATION( PairPotential_AngleTest );61 CPPUNIT_TEST_SUITE_REGISTRATION( ThreeBodyPotential_AngleTest ); 62 62 63 63 const double spring_constant = .5; 64 64 65 void PairPotential_AngleTest::setUp()65 void ThreeBodyPotential_AngleTest::setUp() 66 66 { 67 67 // failing asserts should be thrown … … 97 97 98 98 99 void PairPotential_AngleTest::tearDown()99 void ThreeBodyPotential_AngleTest::tearDown() 100 100 { 101 101 } … … 103 103 /** UnitTest for operator() 104 104 */ 105 void PairPotential_AngleTest::operatorTest()105 void ThreeBodyPotential_AngleTest::operatorTest() 106 106 { 107 PairPotential_Angle::ParticleTypes_t types =108 boost::assign::list_of< PairPotential_Angle::ParticleType_t>107 ThreeBodyPotential_Angle::ParticleTypes_t types = 108 boost::assign::list_of<ThreeBodyPotential_Angle::ParticleType_t> 109 109 (0)(1)(1) 110 110 ; 111 PairPotential_Angle angle(types, spring_constant,0.);111 ThreeBodyPotential_Angle angle(types, spring_constant,0.); 112 112 for (size_t index = 0; index < input.size(); ++index) { 113 const PairPotential_Angle::results_t result =113 const ThreeBodyPotential_Angle::results_t result = 114 114 angle( input[index] ); 115 115 CPPUNIT_ASSERT( … … 124 124 /** UnitTest for derivative() 125 125 */ 126 void PairPotential_AngleTest::derivativeTest()126 void ThreeBodyPotential_AngleTest::derivativeTest() 127 127 { 128 PairPotential_Angle::ParticleTypes_t types =129 boost::assign::list_of< PairPotential_Angle::ParticleType_t>128 ThreeBodyPotential_Angle::ParticleTypes_t types = 129 boost::assign::list_of<ThreeBodyPotential_Angle::ParticleType_t> 130 130 (0)(1)(1) 131 131 ; 132 PairPotential_Angle angle(types, spring_constant,0.);132 ThreeBodyPotential_Angle angle(types, spring_constant,0.); 133 133 CPPUNIT_ASSERT( 134 134 Helpers::isEqual( … … 145 145 /** UnitTest for parameter_derivative() 146 146 */ 147 void PairPotential_AngleTest::parameter_derivativeTest()147 void ThreeBodyPotential_AngleTest::parameter_derivativeTest() 148 148 { 149 PairPotential_Angle::ParticleTypes_t types =150 boost::assign::list_of< PairPotential_Angle::ParticleType_t>149 ThreeBodyPotential_Angle::ParticleTypes_t types = 150 boost::assign::list_of<ThreeBodyPotential_Angle::ParticleType_t> 151 151 (0)(1)(1) 152 152 ; 153 PairPotential_Angle angle(types, spring_constant,0.);153 ThreeBodyPotential_Angle angle(types, spring_constant,0.); 154 154 CPPUNIT_ASSERT( 155 155 Helpers::isEqual( -
src/Potentials/Specifics/unittests/ThreeBodyPotential_AngleUnitTest.hpp
r1413f4 r484e2a 1 1 /* 2 * PairPotential_AngleUnitTest.hpp2 * ThreeBodyPotential_AngleUnitTest.hpp 3 3 * 4 4 * Created on: Oct 16, 2012 … … 6 6 */ 7 7 8 #ifndef PAIRPOTENTIAL_ANGLEUNITTEST_HPP_9 #define PAIRPOTENTIAL_ANGLEUNITTEST_HPP_8 #ifndef THREEBODYPOTENTIAL_ANGLEUNITTEST_HPP_ 9 #define THREEBODYPOTENTIAL_ANGLEUNITTEST_HPP_ 10 10 11 11 // include config.h … … 19 19 #include "FunctionApproximation/FunctionModel.hpp" 20 20 21 class PairPotential_Angle;21 class ThreeBodyPotential_Angle; 22 22 23 23 /********************************************** Test classes **************************************/ 24 24 25 class PairPotential_AngleTest : public CppUnit::TestFixture25 class ThreeBodyPotential_AngleTest : public CppUnit::TestFixture 26 26 { 27 CPPUNIT_TEST_SUITE( PairPotential_AngleTest) ;27 CPPUNIT_TEST_SUITE( ThreeBodyPotential_AngleTest) ; 28 28 CPPUNIT_TEST ( operatorTest ); 29 29 CPPUNIT_TEST ( derivativeTest ); … … 44 44 }; 45 45 46 #endif /* PAIRPOTENTIAL_ANGLEUNITTEST_HPP_ */46 #endif /* THREEBODYPOTENTIAL_ANGLEUNITTEST_HPP_ */
Note:
See TracChangeset
for help on using the changeset viewer.