source: src/ThermoStatContainer.cpp@ 14c57a

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 Candidate_v1.7.0 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 14c57a was 14c57a, checked in by Tillmann Crueger <crueger@…>, 15 years ago

Made all parts of the programm use the new thermostat structure

  • Property mode set to 100644
File size: 3.0 KB
Line 
1/*
2 * ThermoStatContainer.cpp
3 *
4 * Created on: 12.06.2010
5 * Author: heber
6 */
7
8// include config.h
9#ifdef HAVE_CONFIG_H
10#include <config.h>
11#endif
12
13#include "Helpers/MemDebug.hpp"
14
15#include <cstring>
16
17#include "ConfigFileBuffer.hpp"
18#include "config.hpp"
19#include "Helpers/Log.hpp"
20#include "ThermoStatContainer.hpp"
21#include "Helpers/Verbose.hpp"
22
23#include <Thermostats/Berendsen.hpp>
24#include <Thermostats/GaussianThermostat.hpp>
25#include <Thermostats/Langevin.hpp>
26#include <Thermostats/NoseHoover.hpp>
27#include <Thermostats/NoThermostat.hpp>
28#include <Thermostats/Woodcock.hpp>
29
30/** Constructor for class ThermoStatContainer.
31 *
32 */
33ThermoStatContainer::ThermoStatContainer() :
34 activeThermostat(0),
35 TargetTemp(0.00095004455)
36{
37 ThermostatTraits<Thermostat> *BerendsenTrait = new ThermostatTraits<Berendsen>();
38 availThermostats[BerendsenTrait->getName()] = BerendsenTrait;
39 ThermostatTraits<Thermostat> *GaussianTrait = new ThermostatTraits<GaussianThermostat>();
40 availThermostats[GaussianTrait->getName()] = GaussianTrait;
41 ThermostatTraits<Thermostat> *LangevinTrait = new ThermostatTraits<Langevin>();
42 availThermostats[LangevinTrait->getName()] = LangevinTrait;
43 ThermostatTraits<Thermostat> *NoseHooverTrait = new ThermostatTraits<NoseHoover>();
44 availThermostats[NoseHooverTrait->getName()] = NoseHooverTrait;
45 ThermostatTraits<Thermostat> *NoThermostatTrait = new ThermostatTraits<NoThermostat>();
46 availThermostats[NoThermostatTrait->getName()] = NoThermostatTrait;
47 ThermostatTraits<Thermostat> *WoodcockTrait = new ThermostatTraits<Woodcock>();
48 availThermostats[WoodcockTrait->getName()] = WoodcockTrait;
49 for(traitsMap::iterator iter = availThermostats.begin();iter!=availThermostats.end();++iter){
50 cout << iter->first << endl;
51 }
52 ASSERT(availThermostats.size()==6,"Not all implemented thermostats referenced!\nDid you check the names in the traits?");
53 activeThermostat=new Berendsen();
54}
55
56ThermostatTraits<Thermostat> *ThermoStatContainer::getTraitByName(const std::string name){
57 if(!availThermostats.count(name))
58 return 0;
59 return availThermostats[name];
60}
61
62Thermostat *ThermoStatContainer::makeByName(const std::string name,class ConfigFileBuffer * const fb){
63 ThermostatTraits<Thermostat>* trait = getTraitByName(name);
64 if(trait){
65 Thermostat *res = trait->make(fb);
66 res->addToContainer(this);
67 return res;
68 }
69 else{
70 return 0;
71 }
72}
73
74void ThermoStatContainer::makeActive(const std::string name,class ConfigFileBuffer * const fb){
75 Thermostat* newThermostat = makeByName(name,fb);
76 if(newThermostat){
77 if(activeThermostat){
78 delete activeThermostat;
79 }
80 activeThermostat = newThermostat;
81 }
82}
83
84void ThermoStatContainer::chooseNone(){
85 if(activeThermostat){
86 delete activeThermostat;
87 }
88 activeThermostat = new NoThermostat();
89}
90
91/** Destructor for Class ThermoStatContainer.
92 *
93 */
94ThermoStatContainer::~ThermoStatContainer()
95{
96 if(activeThermostat){
97 delete activeThermostat;
98 }
99 for(traitsMap::iterator iter= availThermostats.begin();iter!=availThermostats.end();++iter){
100 delete (iter->second);
101 }
102}
103
104
Note: See TracBrowser for help on using the repository browser.