Changeset c98620
- Timestamp:
- May 19, 2021, 7:06:29 PM (4 years ago)
- Branches:
- Candidate_v1.7.0, stable
- Children:
- 9b0dcd
- Parents:
- 698185
- git-author:
- Frederik Heber <frederik.heber@…> (05/19/21 11:00:24)
- git-committer:
- Frederik Heber <frederik.heber@…> (05/19/21 19:06:29)
- Files:
-
- 7 edited
-
src/Potentials/BindingModel.cpp (modified) (2 diffs)
-
src/Potentials/BindingModel.hpp (modified) (1 diff)
-
src/Potentials/CompoundPotential.cpp (modified) (3 diffs)
-
src/Potentials/StreamFactory_EmpiricalPotential.cpp (modified) (1 diff)
-
src/Potentials/StreamFactory_EmpiricalPotential.hpp (modified) (2 diffs)
-
tests/regression/Potential/FitCompoundPotential/pre/water.potentials (modified) (1 diff)
-
tests/regression/Potential/FitCompoundPotential/testsuite-potential-fit-compound-potential.at (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/Potentials/BindingModel.cpp
r698185 rc98620 37 37 38 38 #include "Potentials/BindingModel.hpp" 39 40 #include <iostream> 41 42 #include "CodePatterns/toString.hpp" 39 43 40 44 static HomologyGraph::nodes_t getMapOfNodes(const BindingModel::vector_nodes_t &_nodes) … … 79 83 } 80 84 85 std::ostream& operator<<(std::ostream& ost, const BindingModel &model) { 86 model.getGraph().printEdges(ost); 87 ost << ", " << model.getNodes(); 88 return ost; 89 } -
src/Potentials/BindingModel.hpp
r698185 rc98620 71 71 }; 72 72 73 74 std::ostream& operator<<(std::ostream& ost, const BindingModel &model); 75 76 73 77 #endif /* POTENTIALS_BINDINGMODEL_HPP_ */ -
src/Potentials/CompoundPotential.cpp
r698185 rc98620 62 62 // look though graph and place all matching FunctionModel's in 63 63 // PotentialRegistry in models 64 PotentialRegistry::const_iterator potentialiter = 65 PotentialRegistry::getInstance().getBeginIter(); 66 while (potentialiter != PotentialRegistry::getInstance().getEndIter()) { 64 for(PotentialRegistry::const_iterator potentialiter = PotentialRegistry::getInstance().getBeginIter(); 65 potentialiter != PotentialRegistry::getInstance().getEndIter(); ++potentialiter) { 67 66 // get model and types 68 67 EmpiricalPotential * const potential = potentialiter->second; … … 73 72 Extractors::elementcounts_t counts_per_element = 74 73 Extractors::_detail::getElementCounts(types); 75 // ASSERT( !counts_per_element.empty(),76 // "getFirstGraphwithSpecifiedElements() - element counts are empty?");77 74 LOG(2, "DEBUG: counts_per_element is " << counts_per_element << "."); 78 75 79 76 // check whether graph contains suitable types 80 Extractors::elementcounts_t::const_iterator countiter = counts_per_element.begin(); 81 for (; countiter != counts_per_element.end(); ++countiter) 82 if (!graph.hasGreaterEqualTimesAtomicNumber( 77 bool status = true; 78 for (Extractors::elementcounts_t::const_iterator countiter = counts_per_element.begin(); 79 (countiter != counts_per_element.end()) && (status); ++countiter) 80 status = status & (graph.hasGreaterEqualTimesAtomicNumber( 83 81 static_cast<size_t>(countiter->first), 84 82 static_cast<size_t>(countiter->second)) 85 ) 86 break; 87 // if we have a match for every count, store model 88 if( countiter == counts_per_element.end()) { 89 LOG(1, "INFO: Potential " << potentialiter->first << " matches with fragment."); 83 ); 84 // check whether graph contains all necessary edges 85 status &= graph.contains(potential->getBindingModel().getGraph()); 86 87 // if we have a matched all nodes and edges, store model 88 if( status) { 89 LOG(1, "INFO: Potential " << potential->getName() << " matches with fragment."); 90 90 models.push_back(static_cast<FunctionModel*>(potential)); 91 91 particletypes_per_model.push_back(types); 92 92 } 93 ++potentialiter;94 93 } 95 94 … … 430 429 ASSERT(!returnresults.empty(), 431 430 "CompoundPotential::parameter_derivative() - could not determine derivative for index " 432 +toString(index)+". This typically indicates that the derivative of the parameterof "433 +" a model should be evaluated which has notarguments in the partial argument list.");431 +toString(index)+". This typically indicates that a parameter derivative of " 432 +"a model is evaluated which has no arguments in the partial argument list."); 434 433 return returnresults; 435 434 } -
src/Potentials/StreamFactory_EmpiricalPotential.cpp
r698185 rc98620 49 49 std::istream &serialized) const 50 50 { 51 EmpiricalPotential * const potential = getDefaultPotential(potentialtype);51 EmpiricalPotential * full_potential; 52 52 // now stream in types and parameters 53 53 try { 54 EmpiricalPotential * const potential = getDefaultPotential(potentialtype); 54 55 potential->stream_from(serialized); 56 // also need to generate the binding model 57 full_potential = createInstance(potentialtype, potential->getParticleTypes()); 58 delete potential; 55 59 } catch (SerializerMissingValueException &e) { 56 60 ELOG(1, "Missing value for potential in line " << e.what()); 57 61 } 58 62 59 return potential;63 return full_potential; 60 64 } -
src/Potentials/StreamFactory_EmpiricalPotential.hpp
r698185 rc98620 16 16 17 17 #include "StreamFactory.hpp" 18 19 #include <string> 18 20 19 21 #include "Potentials/EmpiricalPotential.hpp" … … 48 50 */ 49 51 virtual EmpiricalPotential* getDefaultPotential(const std::string &_name) const=0; 52 53 virtual EmpiricalPotential *createInstance( 54 const std::string &potentialtype, 55 const SerializablePotential::ParticleTypes_t &charges) const=0; 56 50 57 }; 51 58 -
tests/regression/Potential/FitCompoundPotential/pre/water.potentials
r698185 rc98620 1 constant: energy_offset=0.1; 2 harmonic_angle: particle_type1=1, particle_type2=8, particle_type3=1, spring_constant=1, equilibrium_distance=0.1; 3 harmonic_bond: particle_type1=1, particle_type2=8, spring_constant=1, equilibrium_distance=1; 4 lennardjones: particle_type1=1, particle_type2=1, epsilon=1e-05, sigma=8.2; 5 lennardjones: particle_type1=1, particle_type2=8, epsilon=1e-05, sigma=8.2; 6 lennardjones: particle_type1=8, particle_type2=1, epsilon=1e-05, sigma=8.2; 7 morse: particle_type1=1, particle_type2=8, spring_constant=1, equilibrium_distance=1, dissociation_energy=0.1; 8 tersoff: particle_type1=1, particle_type2=8, A=3000, B=300, lambda=5, mu=3, beta=2, n=1, c=0.01, d=1, h=0.01; 1 constant: energy_offset=-75.8415; 2 harmonic_angle: particle_type1=1, particle_type2=8, particle_type3=1, spring_constant=0.742411, equilibrium_distance=-0.300325; 3 harmonic_bond: particle_type1=1, particle_type2=8, spring_constant=0.0372108, equilibrium_distance=1.33548; -
tests/regression/Potential/FitCompoundPotential/testsuite-potential-fit-compound-potential.at
r698185 rc98620 36 36 --fit-compound-potential \ 37 37 --fragment-charges 1 8 1 \ 38 -- set-threshold 5e-6\38 --take-best-of 3 \ 39 39 --save-potentials water.potentials], 0, [stdout], [ignore]) 40 # check that L_2 error is below 1e-641 AT_CHECK([grep "Best parameters with L2 error" stdout | awk '{if ($8 > 5e-6) exit 1}'], 0, [ignore], [ignore])40 # check that L_2 error 41 AT_CHECK([grep "Best parameters with L2 error" stdout | awk '{if ($8 > 0.34) exit 1}'], 0, [ignore], [ignore]) 42 42 # check parameters to printed precision 43 AT_CHECK([grep " morse:.*particle_type1=8,.*particle_type2=1,.*spring_constant=1.3.*,.*equilibrium_distance=1.7.*,.*dissociation_energy=0.19.*;" length.potentials], 0, [ignore], [ignore])43 AT_CHECK([grep "harmonic_angle:.*particle_type1=1,.*particle_type2=8,.*particle_type3=1,.*spring_constant=0.7.*,.*equilibrium_distance=-0.3.*" water.potentials], 0, [ignore], [ignore]) 44 44 45 45 AT_CLEANUP
Note:
See TracChangeset
for help on using the changeset viewer.
