diff --git a/modules/mol/mm/examples/gb_example.py b/modules/mol/mm/examples/gb_example.py index cad4e5e1dddf2d68e1fd7bbbbf8865ac5fbc95bc..24be5a298bc4e189c184ad218a451dc2381e8546 100644 --- a/modules/mol/mm/examples/gb_example.py +++ b/modules/mol/mm/examples/gb_example.py @@ -39,7 +39,7 @@ settings.platform = mm.Platform.CPU settings.nonbonded_method = mm.NonbondedMethod.CutoffNonPeriodic sim = mm.Simulation(prot,settings) -sim.MinimizeEnergy(type = "lbfgs",tolerance = 1.0, max_iterations = 200) +sim.ApplyLBFGS(tolerance = 1.0, max_iterations = 200) sim.UpdatePositions() ent = sim.GetEntity() diff --git a/modules/mol/mm/examples/gb_example_writing_trajectory.py b/modules/mol/mm/examples/gb_example_writing_trajectory.py index a6a18cd5e5836e38164d392e38dc3265b07c4f94..74e77ce41c5f866472c1e5e2622c49051865139c 100644 --- a/modules/mol/mm/examples/gb_example_writing_trajectory.py +++ b/modules/mol/mm/examples/gb_example_writing_trajectory.py @@ -14,7 +14,7 @@ settings.platform = Platform.CPU sim = Simulation(prot,settings) #minimize it -sim.MinimizeEnergy(type = "steep",tolerance = 1.0, max_iterations = 200) +sim.ApplySD(tolerance = 1.0, max_iterations = 200) #create a trajectory observer and register it to the simulation observer = TrajWriter(10,"gb_example_traj.pdb","gb_example_traj.dcd") diff --git a/modules/mol/mm/pymod/export_simulation.cc b/modules/mol/mm/pymod/export_simulation.cc index 1b358eed00b9a2517cc115f197bb5f14a4a97b44..edeee9faaeda79943ca29036233285bb087f5019 100644 --- a/modules/mol/mm/pymod/export_simulation.cc +++ b/modules/mol/mm/pymod/export_simulation.cc @@ -59,7 +59,8 @@ void export_Simulation() .def("SetPositions",&ost::mol::mm::Simulation::SetPositions,(arg("positions"),arg("in_angstrom")=true)) .def("SetVelocities",&ost::mol::mm::Simulation::SetVelocities) .def("GetEntity",&ost::mol::mm::Simulation::GetEntity) - .def("MinimizeEnergy",&ost::mol::mm::Simulation::MinimizeEnergy, (arg("type")="steep",arg("tolerance")=1.0,arg("max_iterations")=1000)) + .def("ApplySD",&ost::mol::mm::Simulation::ApplySD, (arg("tolerance")=100.0,arg("max_iterations")=1000)) + .def("ApplyLBFGS",&ost::mol::mm::Simulation::ApplyLBFGS,(arg("tolerance")=1.0,arg("max_iterations")=1000)) .def("GetEnergy",&ost::mol::mm::Simulation::GetEnergy) .def("GetPotentialEnergy",&ost::mol::mm::Simulation::GetPotentialEnergy) .def("GetKineticEnergy",&ost::mol::mm::Simulation::GetKineticEnergy) diff --git a/modules/mol/mm/src/simulation.cc b/modules/mol/mm/src/simulation.cc index d338b52e281e59ae49a09b0ac9c70f58075dd5fc..4e0fcece9b06fba78fc7e8e552d035f8c429eb71 100644 --- a/modules/mol/mm/src/simulation.cc +++ b/modules/mol/mm/src/simulation.cc @@ -388,14 +388,12 @@ void Simulation::UpdatePositions(bool enforce_periodic_box){ } } -void Simulation::MinimizeEnergy(const String& type, Real tolerance, int max_iterations){ - if(type == "lbfgs") OpenMM::LocalEnergyMinimizer::minimize(*context_, tolerance, max_iterations); - else if(type == "steep") Steep::Minimize(*context_,tolerance, max_iterations); - else{ - std::stringstream ss; - ss << "Unknown minimization function type \""<< type <<"\" observed"; - throw ost::Error(ss.str()); - } +bool Simulation::ApplySD(Real tolerance, int max_iterations){ + return Steep::Minimize(*context_,tolerance, max_iterations); +} + +void Simulation::ApplyLBFGS(Real tolerance, int max_iterations){ + OpenMM::LocalEnergyMinimizer::minimize(*context_, tolerance, max_iterations); } void Simulation::Steps(int steps){ diff --git a/modules/mol/mm/src/simulation.hh b/modules/mol/mm/src/simulation.hh index e1344c842dc8e0c8092b0e70cf7bad1dc25155ac..8996995254017beb1b3f5e4d56c9bdbc19c3cad8 100644 --- a/modules/mol/mm/src/simulation.hh +++ b/modules/mol/mm/src/simulation.hh @@ -64,7 +64,9 @@ public: void UpdatePositions(bool enforce_periodic_box = false); - void MinimizeEnergy(const String& type = "steep", Real tolerance = 1.0, int max_iterations = 1000); + bool ApplySD(Real tolerance = 100, int max_iterations = 1000); + + void ApplyLBFGS(Real tolerance = 1, int max_iterations = 1000); Real GetEnergy();