PSCF v1.3
EnvironmentBase.h
1#ifndef PSCF_ENVIRONMENT_BASE_H
2#define PSCF_ENVIRONMENT_BASE_H
3
4/*
5* PSCF - Polymer Self-Consistent Field
6*
7* Copyright 2015 - 2025, The Regents of the University of Minnesota
8* Distributed under the terms of the GNU General Public License.
9*/
10
11#include <util/param/ParamComposite.h> // base class
12#include <pscf/sweep/ParameterModifier.h> // base class
13
14namespace Pscf {
15
16 using namespace Util;
17
54 {
55
56 public:
57
62
67
82 virtual void generate() = 0;
83
101 virtual void reset();
102
106 bool needsUpdate() const;
107
111 bool generatesMask() const;
112
116 bool generatesExternalFields() const;
117
119
120 protected:
121
127 void setNeedsUpdateFalse();
128
138 void setGenerateBools(bool generatesMask, bool generatesExt);
139
140 private:
141
143 bool needsUpdate_;
144
146 bool generatesMask_;
147
149 bool generatesExternalFields_;
150
152 bool boolsSet_;
153
154 };
155
156 // Member functions
157
158 // Constructor
160 : needsUpdate_(true),
161 generatesMask_(false),
162 generatesExternalFields_(false),
163 boolsSet_(false)
164 { setClassName("EnvironmentBase"); }
165
166 // Destructor
169
170 // Sets needsUpdate() to true.
172 { needsUpdate_ = true; }
173
174 // Does this Environment need to be updated?
176 { return needsUpdate_; }
177
178 // Does this Environment generate a mask?
180 { return generatesMask_; }
181
182 // Does this Environment generate external fields?
184 { return generatesExternalFields_; }
185
186 // Set needsUpdate to false.
188 {
189 if (!boolsSet_) {
190 UTIL_THROW("Must call setGenerateBools before generating fields.");
191 }
192 needsUpdate_ = false;
193 }
194
195 // Set generatesMask and generatesExternalFields.
197 bool generatesExt)
198 {
199 UTIL_CHECK(!boolsSet_);
200 generatesMask_ = generatesMask;
201 generatesExternalFields_ = generatesExt;
202 boolsSet_ = true;
203 }
204
205} // namespace Pscf
206#endif
bool generatesExternalFields() const
Does this Environment generate external fields?
bool needsUpdate() const
Does this Environment need to be updated?
bool generatesMask() const
Does this Environment generate a mask?
virtual void generate()=0
Checks if fields need to be (re)generated.
void setNeedsUpdateFalse()
Set needsUpdate to false.
void setClassName(const char *className)
Set class name string.
virtual void reset()
Sets needsUpdate() to true.
EnvironmentBase()
Constructor.
void setGenerateBools(bool generatesMask, bool generatesExt)
Set generatesMask and generatesExternalFields.
~EnvironmentBase()
Destructor.
void setClassName(const char *className)
Set class name string.
ParamComposite()
Constructor.
#define UTIL_CHECK(condition)
Assertion macro suitable for serial or parallel production code.
Definition global.h:68
#define UTIL_THROW(msg)
Macro for throwing an Exception, reporting function, file and line number.
Definition global.h:49
PSCF package top-level namespace.
Definition param_pc.dox:1