2#ifndef STORMM_NML_MINIMIZE_H
3#define STORMM_NML_MINIMIZE_H
6#include "Constants/behavior.h"
7#include "Parsing/textfile.h"
8#include "Potential/energy_enumerators.h"
10#include "namelist_common.h"
11#include "namelist_emulator.h"
16using energy::VdwSumMethod;
17using parse::WrapTextSearch;
21constexpr int default_minimize_maxcyc = 200;
22constexpr int default_minimize_ncyc = 50;
23constexpr int default_minimize_cdcyc = 25;
24constexpr int default_minimize_ntpr = 50;
25constexpr char default_minimize_checkpoint[] =
"true";
26constexpr double default_minimize_cut = 8.0;
27constexpr double default_minimize_dx0 = 0.01;
28constexpr double default_minimize_drms = 0.0001;
29constexpr double default_minimize_clash_r0 = 0.2;
30constexpr double default_minimize_clash_ratio = 0.5;
53 WrapTextSearch wrap = WrapTextSearch::NO);
55 ExceptionResponse policy_in = ExceptionResponse::DIE,
56 WrapTextSearch wrap = WrapTextSearch::NO);
177 ExceptionResponse policy;
184 int steepest_descent_cycles;
187 int clash_damping_cycles;
197 bool produce_checkpoint;
201 double electrostatic_cutoff;
204 double lennard_jones_cutoff;
205 VdwSumMethod lj_style;
211 double convergence_target;
213 double clash_minimum_distance;
215 double clash_vdw_ratio;
223 void validateTotalCycles();
232 void validateAuxiliaryCycles(
int *cycles_in,
int default_cycles);
235 void validatePrintFrequency();
240 void validateCheckpointProduction(
const std::string &directive)
const;
243 void validateInitialStep();
246 void validateConvergenceTarget();
264 ExceptionResponse policy = ExceptionResponse::DIE,
265 WrapTextSearch wrap = WrapTextSearch::NO);
MinimizeControls(ExceptionResponse policy_in=ExceptionResponse::DIE, WrapTextSearch wrap=WrapTextSearch::NO)
The constructor can prepare an object with default settings or read the corresponding namelist to acc...
Definition nml_minimize.cpp:19
bool getCheckpointProduction() const
Get the directive on whether to produce a checkpoint file for the final state of each energy minimiza...
Definition nml_minimize.cpp:91
double getVdwClashRatio() const
Get the minimum ratio of inter-particle distance to the pairwise van-der Waals sigma parameter,...
Definition nml_minimize.cpp:126
int getTotalCycles() const
Get the total number of minimization cycles.
Definition nml_minimize.cpp:71
MinimizeControls(ExceptionResponse policy_in=ExceptionResponse::DIE, WrapTextSearch wrap=WrapTextSearch::NO)
The constructor can prepare an object with default settings or read the corresponding namelist to acc...
Definition nml_minimize.cpp:19
int getDiagnosticPrintFrequency() const
Get the diagnostic output printing frequency, akin to the major contribution to pmemd and sander mdou...
Definition nml_minimize.cpp:86
void setClashDampingCycles(int cycles_in)
Set the number of clash damping cycles.
Definition nml_minimize.cpp:148
const NamelistEmulator & getTranscript() const
Get the original namelist emulator object as a transcript of the user input.
Definition nml_minimize.cpp:131
int getSteepestDescentCycles() const
Get the number of steepest descent cycles.
Definition nml_minimize.cpp:76
void setInitialStep(double step_size_in)
Set the initial step length.
Definition nml_minimize.cpp:195
MinimizeControls(const MinimizeControls &original)=default
As with other control objects, copy and move constructors, plus copy and move assignment operators,...
void setLennardJonesCutoff(double cutoff_in)
Set the Lennard-Jones cutoff.
Definition nml_minimize.cpp:180
int getClashDampingCycles() const
Get the number of clash-relaxation cycles.
Definition nml_minimize.cpp:81
double getElectrostaticCutoff() const
Get the electrostatic cutoff.
Definition nml_minimize.cpp:96
void setSteepestDescentCycles(int cycles_in)
Set the number of steepest descent cycles.
Definition nml_minimize.cpp:142
void setElectrostaticCutoff(double cutoff_in)
Set the electrostatic cutoff.
Definition nml_minimize.cpp:175
double getLennardJonesCutoff() const
Get the Lennard-Jones cutoff.
Definition nml_minimize.cpp:101
void setTotalCycles(int cycles_in)
Set the total number of minimization cycles.
Definition nml_minimize.cpp:136
double getConvergenceTarget() const
Get the convergence criterion.
Definition nml_minimize.cpp:116
void setConvergenceTarget(double target_in)
Set the convergence criterion, the target for the root mean squared value of all gradients obtained a...
Definition nml_minimize.cpp:201
void setDiagnosticPrintFrequency(int frequency_in)
Set the diagnostic printing frequency.
Definition nml_minimize.cpp:164
double getInitialStep() const
Get the initial step length.
Definition nml_minimize.cpp:111
void setVdwSummation(const std::string &vdw_method_in)
Set the strategy for evaluating the tails of van-der Waals (Lennard-Jones) interactions.
Definition nml_minimize.cpp:185
void setCheckpointProduction(bool produce_in)
Set the checkpoint production flag.
Definition nml_minimize.cpp:170
VdwSumMethod getVdwSummation() const
Get the manner in which the van-der Waals (Lennard-Jones) function vanishes.
Definition nml_minimize.cpp:106
void setVdwClashRatio(double clash_vdw_ratio_in)
Set the minimum ratio of inter-particle separation to Lennard-Jones sigma defining a van-der Waals cl...
Definition nml_minimize.cpp:159
void setAbsoluteClashDistance(double clash_minimum_distance_in)
Set the minimum inter-particle separation defining an electrostatic clash.
Definition nml_minimize.cpp:154
double getAbsoluteClashDistance() const
Get the absolute clash distance, below which two particles will be deemed colliding.
Definition nml_minimize.cpp:121
Collection of variables to transcribe information contained within a namelist.
Definition namelist_emulator.h:30
Structure for translating a text file into a compact, rapidly parsable vector of characters in CPU RA...
Definition textfile.h:45