Changeset 9bb977
- Timestamp:
- May 18, 2016, 10:04:49 PM (9 years ago)
- Branches:
- CombiningParticlePotentialParsing
- Children:
- 928f65
- Parents:
- 8dcfb9
- git-author:
- Frederik Heber <heber@…> (03/10/16 11:58:53)
- git-committer:
- Frederik Heber <heber@…> (05/18/16 22:04:49)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Actions/PotentialAction/ParsePotentialsAction.cpp
r8dcfb9 r9bb977 47 47 #include "CodePatterns/Log.hpp" 48 48 49 #include "Potentials/EmpiricalPotential.hpp" 50 #include "Potentials/Exceptions.hpp" 51 #include "Potentials/PotentialFactory.hpp" 52 #include "Potentials/PotentialRegistry.hpp" 53 #include "Potentials/RegistryDeserializer.hpp" 49 #include "Potentials/TremoloPotentialFileParser.hpp" 54 50 55 51 using namespace MoleCuilder; … … 65 61 std::ifstream returnstream(params.potential_file.get().string().c_str()); 66 62 if (returnstream.good()) { 67 std::string linestring; 68 std::string token; 69 while (returnstream.good()) { 70 getline(returnstream, linestring); 71 const std::string comment("#"); 72 if (linestring.find(comment) != std::string::npos) { 73 LOG(4, "DEBUG: Skippeing comment line:"+linestring); 74 continue; 75 } 76 const std::string whitespace(" \t"); 77 const size_t strBegin = linestring.find_first_not_of(whitespace); 78 const size_t curlyopenpos = linestring.find("{"); 79 const size_t curlyclosedpos = linestring.find("}"); 80 if (curlyopenpos != std::string::npos) { 81 // begin of new type section 82 token = linestring.substr(strBegin, curlyopenpos); 83 const size_t tokenEnd = token.find_first_of(whitespace); 84 token = token.substr(0, tokenEnd); 85 LOG(1, "INFO: Token is " << token); 86 const type_name_map_t::right_const_iterator tokeniter = TypeNameMap.right.find(token); 87 ASSERT( tokeniter != TypeNameMap.right.end(), 88 "PotentialParsePotentialsAction::performCall() - could not find type to " 89 +toString(token)+"."); 90 const tokentype_t tokentype = tokeniter->second; 91 // get either particles {} or potentials {} 92 switch (tokentype) { 93 case particles: 94 { 95 if (!parseItems<Particle>( 96 returnstream, 97 ParticleFactory::getInstance(), 98 ParticleRegistry::getInstance(), 99 std::string("particle"))) 100 return Action::failure; 101 break; 102 } 103 case bonds: 104 case angles: 105 case torsions: 106 case impropers: 107 case nonbonded_2body_potentials: 108 { 109 if (!parseItems<EmpiricalPotential>( 110 returnstream, 111 PotentialFactory::getInstance(), 112 PotentialRegistry::getInstance(), 113 std::string("potential"))) 114 return Action::failure; 115 break; 116 } 117 default: 118 ASSERT( 0, 119 "PotentialParsePotentialsAction::performCall() - token type " 120 +toString(tokentype)+" is unknown."); 121 } 122 } else if (curlyclosedpos != std::string::npos) { 123 // section end encountered, just read next line 124 } else { 125 ELOG(0, "Parser confused, neither curly open nor curly closed on line " 126 << linestring); 127 return Action::failure; 128 } 129 } 63 if (!TremoloPotentialFileParser::parsePotentials(returnstream)) 64 return Action::failure; 130 65 } else { 131 66 STATUS("Failed to parse from "+params.potential_file.get().string()+".");
Note:
See TracChangeset
for help on using the changeset viewer.