source: src/Parser/TremoloParser.hpp@ 4151b0

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
Last change on this file since 4151b0 was 4151b0, checked in by Frederik Heber <heber@…>, 13 years ago

FIX: Parser's dstor were not virtual despite inheritance.

  • Property mode set to 100644
File size: 2.3 KB
RevLine 
[6bc51d]1/*
2 * TremoloParser.hpp
3 *
4 * Created on: Mar 2, 2010
5 * Author: metzler
6 */
7
8#ifndef TREMOLOPARSER_HPP_
9#define TREMOLOPARSER_HPP_
10
[56f73b]11// include config.h
12#ifdef HAVE_CONFIG_H
13#include <config.h>
14#endif
15
16
[9131f3]17#include <string>
[a1e929]18#include "Parser/FormatParser.hpp"
[6bc51d]19
[031e2c6]20#include "TremoloKey.hpp"
21#include "TremoloAtomInfoContainer.hpp"
[b8d4a3]22
[031e2c6]23class molecule;
[4415da]24
25/**
26 * Loads a tremolo file into the World and saves the World as a tremolo file.
27 */
[b8d4a3]28class TremoloParser : public FormatParser
[9131f3]29{
[6bc51d]30public:
[9131f3]31 TremoloParser();
[4151b0]32 virtual ~TremoloParser();
[9131f3]33 void load(std::istream* file);
[73916f]34 void save(std::ostream* file, const std::vector<atom *> &atoms);
[b8d4a3]35 void setFieldsForSave(std::string atomDataLine);
36
[4d4d33]37 void parseKnownTypes(std::istream &file);
38 void createKnownTypesByIdentity();
[81c980b]39 void setAtomData(const std::string &atomdata_string);
[6bc51d]40
[6bc86c]41protected:
42 void AtomInserted(atomId_t);
43 void AtomRemoved(atomId_t);
44
[6bc51d]45private:
[9131f3]46 void readAtomDataLine(string line);
[dc1d9e]47 void readAtomDataLine(string line, molecule *newmol);
[9131f3]48 void parseAtomDataKeysLine(string line, int offset);
[b8d4a3]49 void readNeighbors(std::stringstream* line, int numberOfNeighbors, int atomId);
50 void processNeighborInformation();
51 void adaptImprData();
52 void adaptTorsion();
53 std::string adaptIdDependentDataString(std::string data);
54 bool isUsedField(std::string fieldName);
55 void writeNeighbors(std::ostream* file, int numberOfNeighbors, atom* currentAtom);
56 void saveLine(std::ostream* file, atom* currentAtom);
[9131f3]57
[4d4d33]58 /**
[305e7e]59 * Map to associate the elements with stuff in "type", e.g. OC2 -> O.
[4d4d33]60 */
61 std::map<std::string, std::string> knownTypes;
62
[9131f3]63 /**
64 * Map to associate the known keys with numbers.
65 */
[b8d4a3]66 std::map<std::string, TremoloKey::atomDataKey> knownKeys;
[9131f3]67
[4d4d33]68 /**
69 * Inverse Map to have a name to each known keys.
70 */
71 std::map<TremoloKey::atomDataKey, std::string> knownKeyNames;
72
[9131f3]73 /**
74 * Fields used in the tremolo file.
75 */
76 std::vector<std::string> usedFields;
77
78 /**
79 * Data which is currently not stored in atoms but was provided by the input
80 * file.
81 */
[b8d4a3]82 std::map<int, TremoloAtomInfoContainer> additionalAtomData;
83
84 /**
85 * Default additional atom data.
86 */
87 TremoloAtomInfoContainer defaultAdditionalData;
88
89 /**
90 * Maps original atom IDs received from the parsed file to atom IDs in the
91 * world.
92 */
93 std::map<int, int> atomIdMap;
[6bc51d]94};
95
96#endif /* TREMOLOPARSER_HPP_ */
Note: See TracBrowser for help on using the repository browser.