source: src/ThermoStatContainer.cpp@ 111387

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 111387 was ad011c, checked in by Frederik Heber <heber@…>, 14 years ago

CodePatterns places all includes now in subfolder CodePatterns/.

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