STORMM Source Documentation
Loading...
Searching...
No Matches
nml_minimize.h
1// -*-c++-*-
2#ifndef STORMM_NML_MINIMIZE_H
3#define STORMM_NML_MINIMIZE_H
4
5#include "copyright.h"
6#include "Constants/behavior.h"
7#include "Parsing/textfile.h"
8#include "Potential/energy_enumerators.h"
9#include "input.h"
10#include "namelist_common.h"
11#include "namelist_emulator.h"
12
13namespace stormm {
14namespace namelist {
15
16using energy::VdwSumMethod;
17using parse::WrapTextSearch;
18
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;
32
39public:
40
52 MinimizeControls(ExceptionResponse policy_in = ExceptionResponse::DIE,
53 WrapTextSearch wrap = WrapTextSearch::NO);
54 MinimizeControls(const TextFile &tf, int *start_line, bool *found_nml,
55 ExceptionResponse policy_in = ExceptionResponse::DIE,
56 WrapTextSearch wrap = WrapTextSearch::NO);
58
62 MinimizeControls(const MinimizeControls &original) = default;
63 MinimizeControls(MinimizeControls &&original) = default;
64 MinimizeControls& operator=(const MinimizeControls &original) = default;
65 MinimizeControls& operator=(MinimizeControls &&original) = default;
67
69 int getTotalCycles() const;
70
72 int getSteepestDescentCycles() const;
73
75 int getClashDampingCycles() const;
76
80
83 bool getCheckpointProduction() const;
84
86 double getElectrostaticCutoff() const;
87
89 double getLennardJonesCutoff() const;
90
92 VdwSumMethod getVdwSummation() const;
93
95 double getInitialStep() const;
96
98 double getConvergenceTarget() const;
99
101 double getAbsoluteClashDistance() const;
102
105 double getVdwClashRatio() const;
106
108 const NamelistEmulator& getTranscript() const;
109
113 void setTotalCycles(int cycles_in);
114
118 void setSteepestDescentCycles(int cycles_in);
119
123 void setClashDampingCycles(int cycles_in);
124
128 void setAbsoluteClashDistance(double clash_minimum_distance_in);
129
134 void setVdwClashRatio(double clash_vdw_ratio_in);
135
139 void setDiagnosticPrintFrequency(int frequency_in);
140
144 void setCheckpointProduction(bool produce_in);
145
147 void setElectrostaticCutoff(double cutoff_in);
148
150 void setLennardJonesCutoff(double cutoff_in);
151
161 void setVdwSummation(const std::string &vdw_method_in);
162 void setVdwSummation(const VdwSumMethod vdw_method_in);
164
168 void setInitialStep(double step_size_in);
169
174 void setConvergenceTarget(double target_in);
175
176private:
177 ExceptionResponse policy;
182 int total_cycles;
184 int steepest_descent_cycles;
187 int clash_damping_cycles;
194 int print_frequency;
197 bool produce_checkpoint;
201 double electrostatic_cutoff;
204 double lennard_jones_cutoff;
205 VdwSumMethod lj_style;
207 double initial_step;
211 double convergence_target;
213 double clash_minimum_distance;
215 double clash_vdw_ratio;
218
220 NamelistEmulator nml_transcript;
221
223 void validateTotalCycles();
224
232 void validateAuxiliaryCycles(int *cycles_in, int default_cycles);
233
235 void validatePrintFrequency();
236
240 void validateCheckpointProduction(const std::string &directive) const;
241
243 void validateInitialStep();
244
246 void validateConvergenceTarget();
247};
248
263NamelistEmulator minimizeInput(const TextFile &tf, int *start_line, bool *found,
264 ExceptionResponse policy = ExceptionResponse::DIE,
265 WrapTextSearch wrap = WrapTextSearch::NO);
266
267} // namespace namelist
268} // namespace stormm
269
270#endif
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