Changeset 14c57a for src/ThermoStatContainer.cpp
- Timestamp:
- Aug 25, 2010, 12:04:11 PM (15 years ago)
- Branches:
- 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
- Children:
- 51c3e4
- Parents:
- 8d1dd4
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/ThermoStatContainer.cpp
r8d1dd4 r14c57a 21 21 #include "Helpers/Verbose.hpp" 22 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 23 30 /** Constructor for class ThermoStatContainer. 24 31 * 25 32 */ 26 33 ThermoStatContainer::ThermoStatContainer() : 27 Thermostat(4), 28 ThermostatImplemented(NULL), 29 ThermostatNames(NULL), 30 TempFrequency(2.5), 31 alpha(0.), 32 HooverMass(0.), 33 TargetTemp(0.00095004455), 34 ScaleTempStep(25) 34 activeThermostat(0), 35 TargetTemp(0.00095004455) 35 36 { 36 ThermostatImplemented = new int[MaxThermostats]; 37 ThermostatNames = new char *[MaxThermostats]; 38 for (int j=0;j<MaxThermostats;j++) 39 ThermostatNames[j] = new char[12]; 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 } 40 55 41 strcpy(ThermostatNames[0],"None"); 42 ThermostatImplemented[0] = 1; 43 strcpy(ThermostatNames[1],"Woodcock"); 44 ThermostatImplemented[1] = 1; 45 strcpy(ThermostatNames[2],"Gaussian"); 46 ThermostatImplemented[2] = 1; 47 strcpy(ThermostatNames[3],"Langevin"); 48 ThermostatImplemented[3] = 1; 49 strcpy(ThermostatNames[4],"Berendsen"); 50 ThermostatImplemented[4] = 1; 51 strcpy(ThermostatNames[5],"NoseHoover"); 52 ThermostatImplemented[5] = 1; 56 ThermostatTraits<Thermostat> *ThermoStatContainer::getTraitByName(const std::string name){ 57 if(!availThermostats.count(name)) 58 return 0; 59 return availThermostats[name]; 60 } 61 62 Thermostat *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 74 void 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 84 void ThermoStatContainer::chooseNone(){ 85 if(activeThermostat){ 86 delete activeThermostat; 87 } 88 activeThermostat = new NoThermostat(); 53 89 } 54 90 … … 58 94 ThermoStatContainer::~ThermoStatContainer() 59 95 { 60 delete[](ThermostatImplemented); 61 for (int j=0;j<MaxThermostats;j++) 62 delete[](ThermostatNames[j]); 63 delete[](ThermostatNames); 96 if(activeThermostat){ 97 delete activeThermostat; 98 } 99 for(traitsMap::iterator iter= availThermostats.begin();iter!=availThermostats.end();++iter){ 100 delete (iter->second); 101 } 64 102 } 65 103
Note:
See TracChangeset
for help on using the changeset viewer.