76 void writeOutputFile();
78 bool failedLastKick()
const {
return failedLastTrial_; }
81 enum RNEMDPrivilegedAxis { rnemdX = 0, rnemdY = 1, rnemdZ = 2 };
112 std::string rnemdObjectSelection_;
116 RealType slabACenter_;
117 RealType slabBCenter_;
119 RNEMDPrivilegedAxis rnemdPrivilegedAxis_;
120 RNEMDFluxType rnemdFluxType_;
122 std::string rnemdFluxTypeLabel_;
123 std::string rnemdMethodLabel_;
125 bool doRNEMD_ {
false};
126 bool usePeriodicBoundaryConditions_ {
false};
131 RealType kineticTarget_ {0.0};
132 RealType particleTarget_ {0.0};
134 Vector3d angularMomentumTarget_ {V3Zero};
137 RealType kineticExchange_ {0.0};
138 RealType particleExchange_ {0.0};
139 Vector3d momentumExchange_ {V3Zero};
140 Vector3d angularMomentumExchange_ {V3Zero};
142 unsigned int trialCount_ {0};
143 unsigned int failTrialCount_ {0};
144 unsigned int failRootCount_ {0};
146 bool failedLastTrial_ {
false};
148 void setKineticFlux(RealType kineticFlux);
149 void setParticleFlux(RealType particleFlux);
150 void setMomentumFluxVector(
const std::vector<RealType>& momentumFluxVector);
151 void setAngularMomentumFluxVector(
152 const std::vector<RealType>& angularMomentumFluxVector);
165 ELECTROSTATICPOTENTIAL,
172 std::vector<std::unique_ptr<Utils::BaseAccumulator>> accumulator;
175 using OutputBitSet = std::bitset<ENDINDEX - BEGININDEX>;
176 using OutputMapType = std::map<std::string, OutputFields>;
178 std::string rnemdAxisLabel_;
185 std::string selectionA_;
186 std::string selectionB_;
191 bool hasSelectionA_ {
false};
192 bool hasSelectionB_ {
false};
195 std::string outputSelection_;
199 unsigned int nBins_ {0};
203 RealType sphereARadius_;
204 RealType sphereBRadius_;
210 bool hasData_ {
false};
211 bool hasDividingArea_ {
false};
213 RealType dividingArea_;
216 RealType kineticFlux_ {0.0};
217 RealType particleFlux_ {0.0};
218 Vector3d momentumFluxVector_ {V3Zero};
219 Vector3d angularMomentumFluxVector_ {V3Zero};
221 RealType exchangeTime_ {}, runTime_ {}, statusTime_ {};
223 std::string rnemdFileName_;
224 std::ofstream rnemdFile_ {};
226 OutputBitSet outputMask_;
227 OutputMapType outputMap_;
228 std::vector<OutputData> data_;
229 std::vector<AtomType*> outputTypes_;
233 void parseOutputFileFormat(
const std::string& format);
234 std::string setSelection(RealType& slabCenter);
235 RealType getDefaultDividingArea();