STORMM Source Documentation
Loading...
Searching...
No Matches
nml_solvent.h
1// -*-c++-*-
2#ifndef STORMM_NML_SOLVENT_H
3#define STORMM_NML_SOLVENT_H
4
5#include "copyright.h"
6#include "Constants/behavior.h"
7#include "Parsing/textfile.h"
8#include "Topology/atomgraph_enumerators.h"
9#include "input.h"
10#include "namelist_emulator.h"
11
12namespace stormm {
13namespace namelist {
14
15using constants::ExceptionResponse;
16using parse::WrapTextSearch;
17using topology::ImplicitSolventModel;
18using topology::AtomicRadiusSet;
19
22constexpr int default_solvent_igb = 0;
23constexpr double default_solvent_rgbmax = 1000.0;
24constexpr double default_solvent_intdiel = 1.0;
25constexpr double default_solvent_extdiel = 78.5;
26constexpr double default_solvent_saltcon = 0.0;
27constexpr double default_surface_area_energy = 0.0;
28constexpr char default_solvent_pbradii[] = "none";
30
36public:
37
49 SolventControls(ExceptionResponse policy_in = ExceptionResponse::DIE,
50 WrapTextSearch wrap = WrapTextSearch::NO);
51 SolventControls(const TextFile &tf, int *start_line, bool *found_nml,
52 ExceptionResponse policy_in = ExceptionResponse::DIE,
53 WrapTextSearch wrap = WrapTextSearch::NO);
55
59 SolventControls(const SolventControls &original) = default;
60 SolventControls(SolventControls &&original) = default;
61 SolventControls& operator=(const SolventControls &original) = default;
62 SolventControls& operator=(SolventControls &&original) = default;
64
66 ImplicitSolventModel getImplicitSolventModel() const;
67
69 double getBornRadiiCutoff() const;
70
72 double getInternalDielectric() const;
73
75 double getExternalDielectric() const;
76
78 double getSaltConcentration() const;
79
81 AtomicRadiusSet getPBRadiiSet() const;
82
84 double getSurfaceAreaScalingFactor() const;
85
87 const NamelistEmulator& getTranscript() const;
88
97 void setImplicitSolventModel(int ism_in);
98 void setImplicitSolventModel(ImplicitSolventModel ism_in);
100
104 void setBornRadiiCutoff(double rgbmax_in);
105
109 void setInternalDielectric(double idiel_in);
110
114 void setExternalDielectric(double ediel_in);
115
120 void setSaltConcentration(double saltcon_in);
121
130 void choosePBRadiiSet(const std::string &pbrad_in);
131 void choosePBRadiiSet(AtomicRadiusSet pbrad_in);
133
138 void setSurfaceAreaScalingFactor(double sa_scaling_in);
139
140private:
141 ExceptionResponse policy;
146 ImplicitSolventModel gb_style;
148 double born_radii_cutoff;
150 double internal_dielectric;
154 double external_dielectric;
156 double salt_concentration;
158 AtomicRadiusSet pb_radii;
161 double sa_scaling;
163
165 NamelistEmulator nml_transcript;
166
168 void validateBornRadiiCutoff();
169
171 void validateInternalDielectric();
172
174 void validateExternalDielectric();
175
177 void validateSaltConcentration();
178};
179
193NamelistEmulator solventInput(const TextFile &tf, int *start_line, bool *found,
194 ExceptionResponse policy = ExceptionResponse::DIE,
195 WrapTextSearch wrap = WrapTextSearch::NO);
196
197} // namespace namelist
198} // namespace stormm
199
200#endif
Collection of variables to transcribe information contained within a namelist.
Definition namelist_emulator.h:30
void setSaltConcentration(double saltcon_in)
Set the salt concentration, the concentration of 1:1 monovalent ion pairs in the implicit solvent.
Definition nml_solvent.cpp:145
double getSurfaceAreaScalingFactor() const
Get the surface area scaling factor, in units of kcal/mol per square Angstrom.
Definition nml_solvent.cpp:107
AtomicRadiusSet getPBRadiiSet() const
Get the Poisson-Boltzmann radii set.
Definition nml_solvent.cpp:102
double getBornRadiiCutoff() const
Get the Born radius calculation cutoff.
Definition nml_solvent.cpp:82
double getSaltConcentration() const
Get the salt concentration.
Definition nml_solvent.cpp:97
void setSurfaceAreaScalingFactor(double sa_scaling_in)
Set the surface area scaling factor. Any value is accepted, even negative values, as it may be favora...
Definition nml_solvent.cpp:161
double getInternalDielectric() const
Get the internal dielectric constant.
Definition nml_solvent.cpp:87
ImplicitSolventModel getImplicitSolventModel() const
Get the type of implicit solvent (some flavor of Generalized Born).
Definition nml_solvent.cpp:77
SolventControls(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_solvent.cpp:17
void setInternalDielectric(double idiel_in)
Set the internal dielectric.
Definition nml_solvent.cpp:133
void setBornRadiiCutoff(double rgbmax_in)
Set the Born radius calculation cutoff.
Definition nml_solvent.cpp:127
void setImplicitSolventModel(int ism_in)
Set the implicit solvent model.
Definition nml_solvent.cpp:117
double getExternalDielectric() const
Get the external dielectric constant.
Definition nml_solvent.cpp:92
void choosePBRadiiSet(const std::string &pbrad_in)
Choose the Poisson-Boltzmann radii set.
Definition nml_solvent.cpp:151
SolventControls(const SolventControls &original)=default
As with other control objects, copy and move constructors, plus copy and move assignment operators,...
void setExternalDielectric(double ediel_in)
Set the external dielectric.
Definition nml_solvent.cpp:139
const NamelistEmulator & getTranscript() const
Get the original namelist emulator object as a transcript of the user input.
Definition nml_solvent.cpp:112
Structure for translating a text file into a compact, rapidly parsable vector of characters in CPU RA...
Definition textfile.h:45