48#include "io/Globals.hpp"
55#include "io/ParamConstraint.hpp"
57#include "utils/simError.h"
61 flucQpars_ =
new FluctuatingChargeParameters();
62 rnemdPars_ =
new RNEMD::RNEMDParameters();
63 lightPars_ =
new Perturbations::LightParameters();
64 vfPars_ =
new Perturbations::VelocityFieldParameters();
65 minimizerPars_ =
new MinimizerParameters();
67 DefineParameter(ForceField,
"forceField");
69 DefineOptionalParameter(TargetTemp,
"targetTemp");
70 DefineOptionalParameter(Ensemble,
"ensemble");
71 DefineOptionalParameter(Dt,
"dt");
72 DefineOptionalParameter(RunTime,
"runTime");
73 DefineOptionalParameter(FinalConfig,
"finalConfig");
74 DefineOptionalParameter(SampleTime,
"sampleTime");
75 DefineOptionalParameter(ResetTime,
"resetTime");
76 DefineOptionalParameter(StatusTime,
"statusTime");
77 DefineOptionalParameter(CutoffRadius,
"cutoffRadius");
78 DefineOptionalParameter(SwitchingRadius,
"switchingRadius");
79 DefineOptionalParameter(TempSet,
"tempSet");
80 DefineOptionalParameter(ThermalTime,
"thermalTime");
81 DefineOptionalParameter(TargetPressure,
"targetPressure");
82 DefineOptionalParameter(TauThermostat,
"tauThermostat");
83 DefineOptionalParameter(TauBarostat,
"tauBarostat");
84 DefineOptionalParameter(LangevinPistonDrag,
"langevinPistonDrag");
85 DefineOptionalParameter(ZconsTime,
"zconsTime");
86 DefineOptionalParameter(ZconsTol,
"zconsTol");
87 DefineOptionalParameter(ZconsForcePolicy,
"zconsForcePolicy");
88 DefineOptionalParameter(Seed,
"seed");
89 DefineOptionalParameter(ZconsGap,
"zconsGap");
90 DefineOptionalParameter(ZconsFixtime,
"zconsFixtime");
91 DefineOptionalParameter(ZconsUsingSMD,
"zconsUsingSMD");
92 DefineOptionalParameter(ThermodynamicIntegrationLambda,
93 "thermodynamicIntegrationLambda");
94 DefineOptionalParameter(ThermodynamicIntegrationK,
95 "thermodynamicIntegrationK");
96 DefineOptionalParameter(ForceFieldVariant,
"forceFieldVariant");
97 DefineOptionalParameter(ForceFieldFileName,
"forceFieldFileName");
98 DefineOptionalParameter(DampingAlpha,
"dampingAlpha");
99 DefineOptionalParameter(SurfaceTension,
"surfaceTension");
100 DefineOptionalParameter(PrintPressureTensor,
"printPressureTensor");
101 DefineOptionalParameter(PrintVirialTensor,
"printVirialTensor");
102 DefineOptionalParameter(ElectricField,
"electricField");
103 DefineOptionalParameter(UniformField,
"uniformField");
105 DefineOptionalParameter(MagneticField,
"magneticField");
106 DefineOptionalParameter(UniformGradientStrength,
"uniformGradientStrength");
107 DefineOptionalParameter(UniformGradientDirection1,
108 "uniformGradientDirection1");
109 DefineOptionalParameter(UniformGradientDirection2,
110 "uniformGradientDirection2");
114 DefineOptionalParameter(TaggedAtomPair,
"taggedAtomPair");
115 DefineOptionalParameter(PrintTaggedPairDistance,
"printTaggedPairDistance");
116 DefineOptionalParameter(SwitchingFunctionType,
"switchingFunctionType");
117 DefineOptionalParameter(HydroPropFile,
"HydroPropFile");
118 DefineOptionalParameter(Viscosity,
"viscosity");
119 DefineOptionalParameter(BeadSize,
"beadSize");
120 DefineOptionalParameter(FrozenBufferRadius,
"frozenBufferRadius");
121 DefineOptionalParameter(LangevinBufferRadius,
"langevinBufferRadius");
122 DefineOptionalParameter(NeighborListNeighbors,
"NeighborListNeighbors");
123 DefineOptionalParameter(UseMultipleTemperatureMethod,
124 "useMultipleTemperatureMethod");
126 "electrostaticSummationMethod");
127 DefineOptionalParameter(MTM_Ce,
"MTM_Ce");
128 DefineOptionalParameter(MTM_G,
"MTM_G");
129 DefineOptionalParameter(MTM_Io,
"MTM_Io");
130 DefineOptionalParameter(MTM_Sigma,
"MTM_Sigma");
131 DefineOptionalParameter(MTM_R,
"MTM_R");
132 DefineOptionalParameter(Alpha,
"alpha");
133 DefineOptionalParameter(ConstraintTime,
"constraintTime");
135 DefineOptionalParameter(PotentialSelection,
"potentialSelection");
137 DefineOptionalParameterWithDefaultValue(SkipPairLoop,
"skipPairLoop",
139 DefineOptionalParameterWithDefaultValue(
140 UsePeriodicBoundaryConditions,
"usePeriodicBoundaryConditions",
true);
141 DefineOptionalParameterWithDefaultValue(ConserveLinearMomentum,
142 "conserveLinearMomentum",
true);
143 DefineOptionalParameterWithDefaultValue(ConserveAngularMomentum,
144 "conserveAngularMomentum",
true);
145 DefineOptionalParameterWithDefaultValue(UseAtomicVirial,
"useAtomicVirial",
147 DefineOptionalParameterWithDefaultValue(UseLongRangeCorrections,
148 "useLongRangeCorrections",
true);
149 DefineOptionalParameterWithDefaultValue(UseInitalTime,
"useInitialTime",
151 DefineOptionalParameterWithDefaultValue(
152 UseIntialExtendedSystemState,
"useInitialExtendedSystemState",
false);
153 DefineOptionalParameterWithDefaultValue(OrthoBoxTolerance,
154 "orthoBoxTolerance", 1E-6);
155 DefineOptionalParameterWithDefaultValue(CutoffMethod,
"cutoffMethod",
157 DefineOptionalParameterWithDefaultValue(
158 ElectrostaticScreeningMethod,
"electrostaticScreeningMethod",
"DAMPED");
159 DefineOptionalParameter(UseSurfaceTerm,
"useSurfaceTerm");
160 DefineOptionalParameter(UseSlabGeometry,
"useSlabGeometry");
161 DefineOptionalParameterWithDefaultValue(Dielectric,
"dielectric", 80.0);
162 DefineOptionalParameterWithDefaultValue(CompressDumpFile,
163 "compressDumpFile",
false);
164 DefineOptionalParameterWithDefaultValue(PrintHeatFlux,
"printHeatFlux",
166 DefineOptionalParameterWithDefaultValue(OutputForceVector,
167 "outputForceVector",
false);
168 DefineOptionalParameterWithDefaultValue(OutputParticlePotential,
169 "outputParticlePotential",
false);
170 DefineOptionalParameterWithDefaultValue(OutputElectricField,
171 "outputElectricField",
false);
172 DefineOptionalParameterWithDefaultValue(OutputFluctuatingCharges,
173 "outputFluctuatingCharges",
false);
174 DefineOptionalParameterWithDefaultValue(OutputSitePotential,
175 "outputSitePotential",
false);
176 DefineOptionalParameterWithDefaultValue(OutputDensity,
"outputDensity",
178 DefineOptionalParameterWithDefaultValue(SkinThickness,
"skinThickness",
180 DefineOptionalParameterWithDefaultValue(
181 StatFileFormat,
"statFileFormat",
182 "TIME|TOTAL_ENERGY|POTENTIAL_ENERGY|KINETIC_ENERGY|TEMPERATURE|"
185 "CONSERVED_QUANTITY");
186 DefineOptionalParameterWithDefaultValue(StatFilePrecision,
187 "statFilePrecision", 8);
188 DefineOptionalParameterWithDefaultValue(UseSphericalBoundaryConditions,
189 "useSphericalBoundaryConditions",
191 DefineOptionalParameterWithDefaultValue(AccumulateBoxDipole,
192 "accumulateBoxDipole",
false);
193 DefineOptionalParameterWithDefaultValue(AccumulateBoxQuadrupole,
194 "accumulateBoxQuadrupole",
false);
195 DefineOptionalParameterWithDefaultValue(UseRestraints,
"useRestraints",
197 DefineOptionalParameterWithDefaultValue(Restraint_file,
"Restraint_file",
199 DefineOptionalParameterWithDefaultValue(
200 UseThermodynamicIntegration,
"useThermodynamicIntegration",
false);
201 DefineOptionalParameterWithDefaultValue(HULL_Method,
"HULL_Method",
204 DefineOptionalParameterWithDefaultValue(PrivilegedAxis,
"privilegedAxis",
207 deprecatedKeywords_.insert(
"nComponents");
208 deprecatedKeywords_.insert(
"nZconstraints");
209 deprecatedKeywords_.insert(
"initialConfig");
210 deprecatedKeywords_.insert(
"thermIntDistSpringConst");
211 deprecatedKeywords_.insert(
"thermIntThetaSpringConst");
212 deprecatedKeywords_.insert(
"thermIntOmegaSpringConst");
213 deprecatedKeywords_.insert(
"useSolidThermInt");
214 deprecatedKeywords_.insert(
"useLiquidThermInt");
215 deprecatedKeywords_.insert(
"minimizerMaxIter");
216 deprecatedKeywords_.insert(
"minimizerWriteFreq");
217 deprecatedKeywords_.insert(
"minimizerStepSize");
218 deprecatedKeywords_.insert(
"minimizerFTol");
219 deprecatedKeywords_.insert(
"minimizerGTol");
220 deprecatedKeywords_.insert(
"minimizerLSTol");
221 deprecatedKeywords_.insert(
"minimizerLSMaxIter");
222 deprecatedKeywords_.insert(
"electricField");
223 deprecatedKeywords_.insert(
"cutoffPolicy");
224 deprecatedKeywords_.insert(
"beadSize");
227 Globals::~Globals() {
228 Utils::deletePointers(moleculeStamps_);
230 Utils::deletePointers(components_);
231 Utils::deletePointers(zconstraints_);
232 Utils::deletePointers(restraints_);
238 delete minimizerPars_;
241 void Globals::validate() {
242 DataHolder::validate();
244 CheckParameter(ForceField, isNotEmpty());
245 CheckParameter(TargetTemp, isPositive());
248 isEqualIgnoreCase(
"NVE") || isEqualIgnoreCase(
"NVT") ||
249 isEqualIgnoreCase(
"NPTi") || isEqualIgnoreCase(
"NPTf") ||
250 isEqualIgnoreCase(
"NPTxyz") || isEqualIgnoreCase(
"NPTsz") ||
251 isEqualIgnoreCase(
"NPAT") || isEqualIgnoreCase(
"NPA") ||
252 isEqualIgnoreCase(
"LANGEVINDYNAMICS") || isEqualIgnoreCase(
"LD") ||
253 isEqualIgnoreCase(
"NPRT") || isEqualIgnoreCase(
"NPGT") ||
254 isEqualIgnoreCase(
"NGammaT") || isEqualIgnoreCase(
"NGT") ||
255 isEqualIgnoreCase(
"LANGEVINHULL") || isEqualIgnoreCase(
"LHULL") ||
256 isEqualIgnoreCase(
"SMIPD") || isEqualIgnoreCase(
"LANGEVINPISTON") ||
257 isEqualIgnoreCase(
"RPY") || isEqualIgnoreCase(
"RPYDYNAMICS") ||
258 isEqualIgnoreCase(
"LHD") || isEqualIgnoreCase(
"LANGEVINHYDRODYNAMICS"));
260 CheckParameter(Dt, isPositive());
261 CheckParameter(RunTime, isPositive());
262 CheckParameter(FinalConfig, isNotEmpty());
263 CheckParameter(SampleTime, isNonNegative());
264 CheckParameter(ResetTime, isNonNegative());
265 CheckParameter(StatusTime, isNonNegative());
266 CheckParameter(CutoffRadius, isPositive());
267 CheckParameter(SwitchingRadius, isNonNegative());
268 CheckParameter(Dielectric, isPositive());
269 CheckParameter(ThermalTime, isNonNegative());
270 CheckParameter(TauThermostat, isPositive());
271 CheckParameter(TauBarostat, isPositive());
272 CheckParameter(ZconsTime, isPositive());
273 CheckParameter(ZconsTol, isPositive());
274 CheckParameter(Seed, isPositive());
275 CheckParameter(ZconsGap, isPositive());
276 CheckParameter(ZconsFixtime, isPositive());
277 CheckParameter(ThermodynamicIntegrationLambda, isNonNegative());
278 CheckParameter(ThermodynamicIntegrationK, isPositive());
279 CheckParameter(ForceFieldVariant, isNotEmpty());
280 CheckParameter(ForceFieldFileName, isNotEmpty());
281 CheckParameter(CutoffMethod, isEqualIgnoreCase(
"HARD") ||
282 isEqualIgnoreCase(
"SWITCHED") ||
283 isEqualIgnoreCase(
"SHIFTED_POTENTIAL") ||
284 isEqualIgnoreCase(
"SHIFTED_FORCE") ||
285 isEqualIgnoreCase(
"TAYLOR_SHIFTED") ||
286 isEqualIgnoreCase(
"EWALD_FULL"));
288 isEqualIgnoreCase(
"NONE") || isEqualIgnoreCase(
"HARD") ||
289 isEqualIgnoreCase(
"SWITCHED") ||
290 isEqualIgnoreCase(
"SHIFTED_POTENTIAL") ||
291 isEqualIgnoreCase(
"SHIFTED_FORCE") ||
292 isEqualIgnoreCase(
"REACTION_FIELD") ||
293 isEqualIgnoreCase(
"TAYLOR_SHIFTED") ||
294 isEqualIgnoreCase(
"EWALD_FULL"));
296 ElectrostaticScreeningMethod,
297 isEqualIgnoreCase(
"UNDAMPED") || isEqualIgnoreCase(
"DAMPED"));
298 CheckParameter(SwitchingFunctionType,
299 isEqualIgnoreCase(
"CUBIC") ||
300 isEqualIgnoreCase(
"FIFTH_ORDER_POLYNOMIAL"));
301 CheckParameter(OrthoBoxTolerance, isPositive());
302 CheckParameter(DampingAlpha, isNonNegative());
303 CheckParameter(SkinThickness, isPositive());
304 CheckParameter(Viscosity, isNonNegative());
305 CheckParameter(BeadSize, isPositive());
306 CheckParameter(FrozenBufferRadius, isPositive());
307 CheckParameter(LangevinBufferRadius, isPositive());
308 CheckParameter(NeighborListNeighbors, isPositive());
309 CheckParameter(HULL_Method, isEqualIgnoreCase(
"Convex") ||
310 isEqualIgnoreCase(
"AlphaShape"));
311 CheckParameter(Alpha, isPositive());
312 CheckParameter(StatFilePrecision, isPositive());
313 CheckParameter(PrivilegedAxis, isEqualIgnoreCase(
"x") ||
314 isEqualIgnoreCase(
"y") ||
315 isEqualIgnoreCase(
"z"));
317 for (std::vector<Component*>::iterator i = components_.begin();
318 i != components_.end(); ++i) {
319 if (!(*i)->findMoleculeStamp(moleculeStamps_)) {
320 std::ostringstream oss;
321 oss <<
"Globals Error: can not find molecule stamp for component "
322 << (*i)->getType() << std::endl;
323 throw OpenMDException(oss.str());
328 bool Globals::addComponent(
Component* comp) {
329 components_.push_back(comp);
333 bool Globals::addZConsStamp(
ZConsStamp* zcons) {
334 zconstraints_.push_back(zcons);
339 restraints_.push_back(rest);
343 bool Globals::addFluctuatingChargeParameters(
345 if (flucQpars_ != NULL)
delete flucQpars_;
352 if (rnemdPars_ != NULL)
delete rnemdPars_;
354 rnemdPars_ = rnemdPars;
359 if (lightPars_ != NULL)
delete lightPars_;
361 lightPars_ = lightPars;
366 if (vfPars_ != NULL)
delete vfPars_;
373 if (minimizerPars_ != NULL)
delete minimizerPars_;
375 minimizerPars_ = miniPars;
380 std::string molStampName = molStamp->getName();
381 std::map<std::string, MoleculeStamp*>::iterator i;
383 i = moleculeStamps_.find(molStampName);
384 if (i == moleculeStamps_.end()) {
385 moleculeStamps_.insert(std::map<std::string, MoleculeStamp*>::value_type(
386 molStampName, molStamp));
389 std::ostringstream oss;
390 oss <<
"Globals Error: Molecule Stamp " << molStamp->getName()
391 <<
"appears multiple times\n";
392 throw OpenMDException(oss.str());
398 std::string fragStampName = fragStamp->getName();
399 std::map<std::string, FragmentStamp*>::iterator i;
401 i = fragmentStamps_.find(fragStampName);
402 if (i == fragmentStamps_.end()) {
403 fragmentStamps_.insert(std::map<std::string, FragmentStamp*>::value_type(
404 fragStampName, fragStamp));
407 std::ostringstream oss;
408 oss <<
"Globals Error: Fragment Stamp " << fragStamp->getName()
409 <<
"appears multiple times\n";
410 throw OpenMDException(oss.str());
Parsed contents of the velocityField{ ... } block.
This basic Periodic Table class was originally taken from the data.cpp file in OpenBabel.
ElectrostaticSummationMethod