STORMM Source Documentation
Loading...
Searching...
No Matches
nml_ffmorph.h
1// -*-c++-*-
2#ifndef STORMM_NML_FFMORPH_H
3#define STORMM_NML_FFMORPH_H
4
5#include "copyright.h"
6#include "Constants/behavior.h"
7#include "ForceField/forcefield_element.h"
8#include "ForceField/forcefield_enumerators.h"
9#include "Parsing/textfile.h"
10#include "input.h"
11#include "namelist_emulator.h"
12
13namespace stormm {
14namespace namelist {
15
16using modeling::ForceFieldElement;
17using modeling::ParameterKind;
18using parse::WrapTextSearch;
19
24public:
25
37 FFMorphControls(ExceptionResponse policy_in = ExceptionResponse::DIE,
38 WrapTextSearch wrap = WrapTextSearch::NO);
39 FFMorphControls(const TextFile &tf, int *start_line, bool *found_nml,
40 ExceptionResponse policy_in = ExceptionResponse::DIE,
41 WrapTextSearch wrap = WrapTextSearch::NO);
43
47 FFMorphControls(const FFMorphControls &original) = default;
48 FFMorphControls(FFMorphControls &&original) = default;
49 FFMorphControls& operator=(const FFMorphControls &original) = default;
50 FFMorphControls& operator=(FFMorphControls &&original) = default;
52
56 int getEditCount(ParameterKind kind) const;
57
62 ForceFieldElement getModelEdit(ParameterKind kind, int index) const;
63
65 const NamelistEmulator& getTranscript() const;
66
67private:
68 ExceptionResponse policy;
73
75 std::vector<ForceFieldElement> harmonic_bonds;
76
79 std::vector<ForceFieldElement> harmonic_angles;
80
82 std::vector<ForceFieldElement> cosine_dihedrals;
83
86 std::vector<ForceFieldElement> urey_bradley_angles;
87
89 std::vector<ForceFieldElement> charmm_impropers;
90
92 std::vector<ForceFieldElement> cmap_surfaces;
93
95 std::vector<ForceFieldElement> attn14_scalings;
96
98 std::vector<ForceFieldElement> charge_properties;
99
101 std::vector<ForceFieldElement> van_der_waals_properties;
102
105 std::vector<ForceFieldElement> virtual_sites;
106
108 NamelistEmulator nml_transcript;
109};
110
123NamelistEmulator ffmorphInput(const TextFile &tf, int *start_line, bool *found,
124 ExceptionResponse policy = ExceptionResponse::DIE,
125 WrapTextSearch wrap = WrapTextSearch::NO);
126
127} // namespace namelist
128} // namespace stormm
129
130#endif
A versatile object for collecting the parameters and scope of applicability of any molecular mechanic...
Definition forcefield_element.h:24
const NamelistEmulator & getTranscript() const
Get the original namelist emulator object as a transcript of the user input.
Definition nml_ffmorph.cpp:430
ForceFieldElement getModelEdit(ParameterKind kind, int index) const
Get a specific edit from within the namelist's holdings.
Definition nml_ffmorph.cpp:392
int getEditCount(ParameterKind kind) const
Get the number of edits for a particular force field term.
Definition nml_ffmorph.cpp:362
FFMorphControls(const FFMorphControls &original)=default
As with other control objects, copy and move constructors, plus copy and move assignment operators,...
FFMorphControls(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_ffmorph.cpp:14
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