source: src/Thermostats/ThermoStatContainer.cpp@ aec098

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 aec098 was 0aa122, checked in by Frederik Heber <heber@…>, 13 years ago

Updated all source files's copyright note to current year 2012.

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