40 |
|
*/ |
41 |
|
|
42 |
|
#include <cmath> |
43 |
< |
#include "integrators/RNEMD.hpp" |
43 |
> |
#include "rnemd/RNEMD.hpp" |
44 |
|
#include "math/Vector3.hpp" |
45 |
|
#include "math/Vector.hpp" |
46 |
|
#include "math/SquareMatrix3.hpp" |
70 |
|
|
71 |
|
int seedValue; |
72 |
|
Globals * simParams = info->getSimParams(); |
73 |
+ |
RNEMDParameters* rnemdParams = simParams->getRNEMDParameters(); |
74 |
|
|
75 |
|
stringToEnumMap_["KineticSwap"] = rnemdKineticSwap; |
76 |
|
stringToEnumMap_["KineticScale"] = rnemdKineticScale; |
86 |
|
stringToEnumMap_["ShiftScaleVAM"] = rnemdShiftScaleVAM; |
87 |
|
stringToEnumMap_["Unknown"] = rnemdUnknown; |
88 |
|
|
89 |
< |
rnemdObjectSelection_ = simParams->getRNEMD_objectSelection(); |
89 |
> |
runTime_ = simParams->getRunTime(); |
90 |
> |
statusTime_ = simParams->getStatusTime(); |
91 |
> |
|
92 |
> |
rnemdObjectSelection_ = rnemdParams->getObjectSelection(); |
93 |
|
evaluator_.loadScriptString(rnemdObjectSelection_); |
94 |
|
seleMan_.setSelectionSet(evaluator_.evaluate()); |
95 |
|
|
114 |
|
simError(); |
115 |
|
} |
116 |
|
|
117 |
< |
const string st = simParams->getRNEMD_exchangeType(); |
117 |
> |
const string st = rnemdParams->getExchangeType(); |
118 |
|
|
119 |
|
map<string, RNEMDTypeEnum>::iterator i; |
120 |
|
i = stringToEnumMap_.find(st); |
131 |
|
} |
132 |
|
|
133 |
|
outputTemp_ = false; |
134 |
< |
if (simParams->haveRNEMD_outputTemperature()) { |
135 |
< |
outputTemp_ = simParams->getRNEMD_outputTemperature(); |
134 |
> |
if (rnemdParams->haveOutputTemperature()) { |
135 |
> |
outputTemp_ = rnemdParams->getOutputTemperature(); |
136 |
|
} else if ((rnemdType_ == rnemdKineticSwap) || |
137 |
|
(rnemdType_ == rnemdKineticScale) || |
138 |
|
(rnemdType_ == rnemdKineticScaleVAM) || |
140 |
|
outputTemp_ = true; |
141 |
|
} |
142 |
|
outputVx_ = false; |
143 |
< |
if (simParams->haveRNEMD_outputVx()) { |
144 |
< |
outputVx_ = simParams->getRNEMD_outputVx(); |
143 |
> |
if (rnemdParams->haveOutputVx()) { |
144 |
> |
outputVx_ = rnemdParams->getOutputVx(); |
145 |
|
} else if ((rnemdType_ == rnemdPx) || (rnemdType_ == rnemdPxScale)) { |
146 |
|
outputVx_ = true; |
147 |
|
} |
148 |
|
outputVy_ = false; |
149 |
< |
if (simParams->haveRNEMD_outputVy()) { |
150 |
< |
outputVy_ = simParams->getRNEMD_outputVy(); |
149 |
> |
if (rnemdParams->haveOutputVy()) { |
150 |
> |
outputVy_ = rnemdParams->getOutputVy(); |
151 |
|
} else if ((rnemdType_ == rnemdPy) || (rnemdType_ == rnemdPyScale)) { |
152 |
|
outputVy_ = true; |
153 |
|
} |
154 |
|
output3DTemp_ = false; |
155 |
< |
if (simParams->haveRNEMD_outputXyzTemperature()) { |
156 |
< |
output3DTemp_ = simParams->getRNEMD_outputXyzTemperature(); |
155 |
> |
if (rnemdParams->haveOutputXyzTemperature()) { |
156 |
> |
output3DTemp_ = rnemdParams->getOutputXyzTemperature(); |
157 |
|
} |
158 |
|
outputRotTemp_ = false; |
159 |
< |
if (simParams->haveRNEMD_outputRotTemperature()) { |
160 |
< |
outputRotTemp_ = simParams->getRNEMD_outputRotTemperature(); |
159 |
> |
if (rnemdParams->haveOutputRotTemperature()) { |
160 |
> |
outputRotTemp_ = rnemdParams->getOutputRotTemperature(); |
161 |
|
} |
162 |
+ |
// James put this in. |
163 |
+ |
outputDen_ = false; |
164 |
+ |
if (rnemdParams->haveOutputDen()) { |
165 |
+ |
outputDen_ = rnemdParams->getOutputDen(); |
166 |
+ |
} |
167 |
+ |
outputAh_ = false; |
168 |
+ |
if (rnemdParams->haveOutputAh()) { |
169 |
+ |
outputAh_ = rnemdParams->getOutputAh(); |
170 |
+ |
} |
171 |
+ |
outputVz_ = false; |
172 |
+ |
if (rnemdParams->haveOutputVz()) { |
173 |
+ |
outputVz_ = rnemdParams->getOutputVz(); |
174 |
+ |
} else if ((rnemdType_ == rnemdPz) || (rnemdType_ == rnemdPzScale)) { |
175 |
+ |
outputVz_ = true; |
176 |
+ |
} |
177 |
+ |
|
178 |
|
|
179 |
|
#ifdef IS_MPI |
180 |
|
if (worldRank == 0) { |
208 |
|
rnemdFileName = "temperatureR.log"; |
209 |
|
rotTempLog_.open(rnemdFileName.c_str()); |
210 |
|
} |
211 |
< |
|
211 |
> |
|
212 |
> |
//James put this in |
213 |
> |
if (outputDen_) { |
214 |
> |
rnemdFileName = "Density.log"; |
215 |
> |
denLog_.open(rnemdFileName.c_str()); |
216 |
> |
} |
217 |
> |
if (outputAh_) { |
218 |
> |
rnemdFileName = "Ah.log"; |
219 |
> |
AhLog_.open(rnemdFileName.c_str()); |
220 |
> |
} |
221 |
> |
if (outputVz_) { |
222 |
> |
rnemdFileName = "velocityZ.log"; |
223 |
> |
vzzLog_.open(rnemdFileName.c_str()); |
224 |
> |
} |
225 |
> |
logFrameCount_ = 0; |
226 |
|
#ifdef IS_MPI |
227 |
|
} |
228 |
|
#endif |
229 |
|
|
230 |
< |
set_RNEMD_exchange_time(simParams->getRNEMD_exchangeTime()); |
231 |
< |
set_RNEMD_nBins(simParams->getRNEMD_nBins()); |
230 |
> |
set_RNEMD_exchange_time(rnemdParams->getExchangeTime()); |
231 |
> |
set_RNEMD_nBins(rnemdParams->getNbins()); |
232 |
|
midBin_ = nBins_ / 2; |
233 |
< |
if (simParams->haveRNEMD_binShift()) { |
234 |
< |
if (simParams->getRNEMD_binShift()) { |
233 |
> |
if (rnemdParams->haveBinShift()) { |
234 |
> |
if (rnemdParams->getBinShift()) { |
235 |
|
zShift_ = 0.5 / (RealType)(nBins_); |
236 |
|
} else { |
237 |
|
zShift_ = 0.0; |
242 |
|
//cerr << "I shift slabs by " << zShift_ << " Lz\n"; |
243 |
|
//shift slabs by half slab width, maybe useful in heterogeneous systems |
244 |
|
//set to 0.0 if not using it; N/A in status output yet |
245 |
< |
if (simParams->haveRNEMD_logWidth()) { |
246 |
< |
set_RNEMD_logWidth(simParams->getRNEMD_logWidth()); |
245 |
> |
if (rnemdParams->haveLogWidth()) { |
246 |
> |
set_RNEMD_logWidth(rnemdParams->getLogWidth()); |
247 |
|
/*arbitary rnemdLogWidth_, no checking; |
248 |
|
if (rnemdLogWidth_ != nBins_ && rnemdLogWidth_ != midBin_ + 1) { |
249 |
|
cerr << "WARNING! RNEMD_logWidth has abnormal value!\n"; |
267 |
|
xyzTempCount_.resize(rnemdLogWidth_, 0); |
268 |
|
rotTempHist_.resize(rnemdLogWidth_, 0.0); |
269 |
|
rotTempCount_.resize(rnemdLogWidth_, 0); |
270 |
+ |
// James put this in |
271 |
+ |
DenHist_.resize(rnemdLogWidth_, 0.0); |
272 |
+ |
pzzHist_.resize(rnemdLogWidth_, 0.0); |
273 |
|
|
274 |
|
set_RNEMD_exchange_total(0.0); |
275 |
< |
if (simParams->haveRNEMD_targetFlux()) { |
276 |
< |
set_RNEMD_target_flux(simParams->getRNEMD_targetFlux()); |
275 |
> |
if (rnemdParams->haveTargetFlux()) { |
276 |
> |
set_RNEMD_target_flux(rnemdParams->getTargetFlux()); |
277 |
|
} else { |
278 |
|
set_RNEMD_target_flux(0.0); |
279 |
|
} |
280 |
< |
if (simParams->haveRNEMD_targetJzKE()) { |
281 |
< |
set_RNEMD_target_JzKE(simParams->getRNEMD_targetJzKE()); |
280 |
> |
if (rnemdParams->haveTargetJzKE()) { |
281 |
> |
set_RNEMD_target_JzKE(rnemdParams->getTargetJzKE()); |
282 |
|
} else { |
283 |
|
set_RNEMD_target_JzKE(0.0); |
284 |
|
} |
285 |
< |
if (simParams->haveRNEMD_targetJzpx()) { |
286 |
< |
set_RNEMD_target_jzpx(simParams->getRNEMD_targetJzpx()); |
285 |
> |
if (rnemdParams->haveTargetJzpx()) { |
286 |
> |
set_RNEMD_target_jzpx(rnemdParams->getTargetJzpx()); |
287 |
|
} else { |
288 |
|
set_RNEMD_target_jzpx(0.0); |
289 |
|
} |
290 |
|
jzp_.x() = targetJzpx_; |
291 |
|
njzp_.x() = -targetJzpx_; |
292 |
< |
if (simParams->haveRNEMD_targetJzpy()) { |
293 |
< |
set_RNEMD_target_jzpy(simParams->getRNEMD_targetJzpy()); |
292 |
> |
if (rnemdParams->haveTargetJzpy()) { |
293 |
> |
set_RNEMD_target_jzpy(rnemdParams->getTargetJzpy()); |
294 |
|
} else { |
295 |
|
set_RNEMD_target_jzpy(0.0); |
296 |
|
} |
297 |
|
jzp_.y() = targetJzpy_; |
298 |
|
njzp_.y() = -targetJzpy_; |
299 |
< |
if (simParams->haveRNEMD_targetJzpz()) { |
300 |
< |
set_RNEMD_target_jzpz(simParams->getRNEMD_targetJzpz()); |
299 |
> |
if (rnemdParams->haveTargetJzpz()) { |
300 |
> |
set_RNEMD_target_jzpz(rnemdParams->getTargetJzpz()); |
301 |
|
} else { |
302 |
|
set_RNEMD_target_jzpz(0.0); |
303 |
|
} |
334 |
|
painCave.isFatal = 0; |
335 |
|
painCave.severity = OPENMD_INFO; |
336 |
|
simError(); |
337 |
< |
|
337 |
> |
|
338 |
|
if (outputTemp_) tempLog_.close(); |
339 |
|
if (outputVx_) vxzLog_.close(); |
340 |
|
if (outputVy_) vyzLog_.close(); |
354 |
|
zTempLog_.close(); |
355 |
|
} |
356 |
|
if (outputRotTemp_) rotTempLog_.close(); |
357 |
< |
|
357 |
> |
// James put this in |
358 |
> |
if (outputDen_) denLog_.close(); |
359 |
> |
if (outputAh_) AhLog_.close(); |
360 |
> |
if (outputVz_) vzzLog_.close(); |
361 |
> |
|
362 |
|
#ifdef IS_MPI |
363 |
|
} |
364 |
|
#endif |
495 |
|
RealType val; |
496 |
|
int rank; |
497 |
|
} max_vals, min_vals; |
498 |
< |
|
498 |
> |
|
499 |
|
if (my_min_found) { |
500 |
|
min_vals.val = min_val; |
501 |
|
} else { |
801 |
|
Kcz *= 0.5; |
802 |
|
Kcw *= 0.5; |
803 |
|
|
804 |
< |
std::cerr << "Khx= " << Khx << "\tKhy= " << Khy << "\tKhz= " << Khz |
805 |
< |
<< "\tKhw= " << Khw << "\tKcx= " << Kcx << "\tKcy= " << Kcy |
806 |
< |
<< "\tKcz= " << Kcz << "\tKcw= " << Kcw << "\n"; |
807 |
< |
std::cerr << "Phx= " << Phx << "\tPhy= " << Phy << "\tPhz= " << Phz |
808 |
< |
<< "\tPcx= " << Pcx << "\tPcy= " << Pcy << "\tPcz= " <<Pcz<<"\n"; |
804 |
> |
// std::cerr << "Khx= " << Khx << "\tKhy= " << Khy << "\tKhz= " << Khz |
805 |
> |
// << "\tKhw= " << Khw << "\tKcx= " << Kcx << "\tKcy= " << Kcy |
806 |
> |
// << "\tKcz= " << Kcz << "\tKcw= " << Kcw << "\n"; |
807 |
> |
// std::cerr << "Phx= " << Phx << "\tPhy= " << Phy << "\tPhz= " << Phz |
808 |
> |
// << "\tPcx= " << Pcx << "\tPcy= " << Pcy << "\tPcz= " <<Pcz<<"\n"; |
809 |
|
|
810 |
|
#ifdef IS_MPI |
811 |
|
MPI::COMM_WORLD.Allreduce(MPI::IN_PLACE, &Phx, 1, MPI::REALTYPE, MPI::SUM); |
1146 |
|
void RNEMD::doShiftScale() { |
1147 |
|
|
1148 |
|
Snapshot* currentSnap_ = info_->getSnapshotManager()->getCurrentSnapshot(); |
1149 |
+ |
RealType time = currentSnap_->getTime(); |
1150 |
|
Mat3x3d hmat = currentSnap_->getHmat(); |
1151 |
|
|
1152 |
|
seleMan_.setSelectionSet(evaluator_.evaluate()); |
1163 |
|
Vector3d Pc(V3Zero); |
1164 |
|
RealType Mc = 0.0; |
1165 |
|
RealType Kc = 0.0; |
1166 |
+ |
|
1167 |
|
|
1168 |
|
for (sd = seleMan_.beginSelected(selei); sd != NULL; |
1169 |
|
sd = seleMan_.nextSelected(selei)) { |
1241 |
|
Kh *= 0.5; |
1242 |
|
Kc *= 0.5; |
1243 |
|
|
1244 |
< |
std::cerr << "Mh= " << Mh << "\tKh= " << Kh << "\tMc= " << Mc |
1245 |
< |
<< "\tKc= " << Kc << endl; |
1246 |
< |
std::cerr << "Ph= " << Ph << "\tPc= " << Pc << endl; |
1247 |
< |
|
1244 |
> |
// std::cerr << "Mh= " << Mh << "\tKh= " << Kh << "\tMc= " << Mc |
1245 |
> |
// << "\tKc= " << Kc << endl; |
1246 |
> |
// std::cerr << "Ph= " << Ph << "\tPc= " << Pc << endl; |
1247 |
> |
|
1248 |
|
#ifdef IS_MPI |
1249 |
|
MPI::COMM_WORLD.Allreduce(MPI::IN_PLACE, &Ph[0], 3, MPI::REALTYPE, MPI::SUM); |
1250 |
|
MPI::COMM_WORLD.Allreduce(MPI::IN_PLACE, &Pc[0], 3, MPI::REALTYPE, MPI::SUM); |
1258 |
|
if ((Mh > 0.0) && (Mc > 0.0)) {//both slabs are not empty |
1259 |
|
Vector3d vc = Pc / Mc; |
1260 |
|
Vector3d ac = njzp_ / Mc + vc; |
1261 |
+ |
Vector3d acrec = njzp_ / Mc; |
1262 |
|
RealType cNumerator = Kc - targetJzKE_ - 0.5 * Mc * ac.lengthSquare(); |
1263 |
|
if (cNumerator > 0.0) { |
1264 |
|
RealType cDenominator = Kc - 0.5 * Mc * vc.lengthSquare(); |
1267 |
|
if ((c > 0.9) && (c < 1.1)) {//restrict scaling coefficients |
1268 |
|
Vector3d vh = Ph / Mh; |
1269 |
|
Vector3d ah = jzp_ / Mh + vh; |
1270 |
+ |
Vector3d ahrec = jzp_ / Mh; |
1271 |
|
RealType hNumerator = Kh + targetJzKE_ |
1272 |
|
- 0.5 * Mh * ah.lengthSquare(); |
1273 |
|
if (hNumerator > 0.0) { |
1275 |
|
if (hDenominator > 0.0) { |
1276 |
|
RealType h = sqrt(hNumerator / hDenominator); |
1277 |
|
if ((h > 0.9) && (h < 1.1)) { |
1278 |
< |
std::cerr << "cold slab scaling coefficient: " << c << "\n"; |
1279 |
< |
std::cerr << "hot slab scaling coefficient: " << h << "\n"; |
1278 |
> |
// std::cerr << "cold slab scaling coefficient: " << c << "\n"; |
1279 |
> |
// std::cerr << "hot slab scaling coefficient: " << h << "\n"; |
1280 |
|
vector<StuntDouble*>::iterator sdi; |
1281 |
|
Vector3d vel; |
1282 |
|
for (sdi = coldBin.begin(); sdi != coldBin.end(); sdi++) { |
1306 |
|
// this is a redundant variable for doShiftScale() so that |
1307 |
|
// RNEMD can output one exchange quantity needed in a job. |
1308 |
|
// need a better way to do this. |
1309 |
+ |
//cerr << "acx =" << ac.x() << "ahx =" << ah.x() << '\n'; |
1310 |
+ |
//cerr << "acy =" << ac.y() << "ahy =" << ah.y() << '\n'; |
1311 |
+ |
//cerr << "acz =" << ac.z() << "ahz =" << ah.z() << '\n'; |
1312 |
+ |
Asum_ += (ahrec.z() - acrec.z()); |
1313 |
+ |
Jsum_ += (jzp_.z()*((1/Mh)+(1/Mc))); |
1314 |
+ |
AhCount_ = ahrec.z(); |
1315 |
+ |
if (outputAh_) { |
1316 |
+ |
AhLog_ << time << " "; |
1317 |
+ |
AhLog_ << AhCount_; |
1318 |
+ |
AhLog_ << endl; |
1319 |
+ |
} |
1320 |
|
} |
1321 |
|
} |
1322 |
|
} |
1325 |
|
} |
1326 |
|
} |
1327 |
|
if (successfulExchange != true) { |
1328 |
< |
sprintf(painCave.errMsg, |
1329 |
< |
"RNEMD: exchange NOT performed!\n"); |
1330 |
< |
painCave.isFatal = 0; |
1331 |
< |
painCave.severity = OPENMD_INFO; |
1332 |
< |
simError(); |
1328 |
> |
// sprintf(painCave.errMsg, |
1329 |
> |
// "RNEMD: exchange NOT performed!\n"); |
1330 |
> |
// painCave.isFatal = 0; |
1331 |
> |
// painCave.severity = OPENMD_INFO; |
1332 |
> |
// simError(); |
1333 |
|
failTrialCount_++; |
1334 |
|
} |
1335 |
|
} |
1372 |
|
StuntDouble* sd; |
1373 |
|
int idx; |
1374 |
|
|
1375 |
+ |
logFrameCount_++; |
1376 |
+ |
|
1377 |
|
// alternative approach, track all molecules instead of only those |
1378 |
|
// selected for scaling/swapping: |
1379 |
|
/* |
1382 |
|
Molecule* mol; |
1383 |
|
StuntDouble* integrableObject; |
1384 |
|
for (mol = info_->beginMolecule(miter); mol != NULL; |
1385 |
< |
mol = info_->nextMolecule(miter)) |
1385 |
> |
mol = info_->nextMolecule(miter)) |
1386 |
|
integrableObject is essentially sd |
1387 |
|
for (integrableObject = mol->beginIntegrableObject(iiter); |
1388 |
|
integrableObject != NULL; |
1485 |
|
/ PhysicalConstants::kb;//may move to getStatus() |
1486 |
|
rotTempHist_[binNo] += value; |
1487 |
|
} |
1488 |
< |
|
1488 |
> |
// James put this in. |
1489 |
> |
if (outputDen_) { |
1490 |
> |
//value = 1.0; |
1491 |
> |
DenHist_[binNo] += 1; |
1492 |
> |
} |
1493 |
> |
if (outputVz_) { |
1494 |
> |
value = mass * vel[2]; |
1495 |
> |
//vyzCount_[binNo]++; |
1496 |
> |
pzzHist_[binNo] += value; |
1497 |
> |
} |
1498 |
|
} |
1499 |
|
} |
1500 |
|
|
1512 |
|
void RNEMD::getStatus() { |
1513 |
|
|
1514 |
|
Snapshot* currentSnap_ = info_->getSnapshotManager()->getCurrentSnapshot(); |
1448 |
– |
Stats& stat = currentSnap_->statData; |
1515 |
|
RealType time = currentSnap_->getTime(); |
1450 |
– |
|
1451 |
– |
stat[Stats::RNEMD_EXCHANGE_TOTAL] = exchangeSum_; |
1516 |
|
//or to be more meaningful, define another item as exchangeSum_ / time |
1517 |
|
int j; |
1518 |
|
|
1557 |
|
MPI::COMM_WORLD.Allreduce(MPI::IN_PLACE, &rotTempCount_[0], |
1558 |
|
rnemdLogWidth_, MPI::INT, MPI::SUM); |
1559 |
|
} |
1560 |
< |
|
1560 |
> |
// James put this in |
1561 |
> |
if (outputDen_) { |
1562 |
> |
MPI::COMM_WORLD.Allreduce(MPI::IN_PLACE, &DenHist_[0], |
1563 |
> |
rnemdLogWidth_, MPI::REALTYPE, MPI::SUM); |
1564 |
> |
} |
1565 |
> |
if (outputAh_) { |
1566 |
> |
MPI::COMM_WORLD.Allreduce(MPI::IN_PLACE, &AhCount_, |
1567 |
> |
1, MPI::REALTYPE, MPI::SUM); |
1568 |
> |
} |
1569 |
> |
if (outputVz_) { |
1570 |
> |
MPI::COMM_WORLD.Allreduce(MPI::IN_PLACE, &pzzHist_[0], |
1571 |
> |
rnemdLogWidth_, MPI::REALTYPE, MPI::SUM); |
1572 |
> |
} |
1573 |
> |
|
1574 |
|
// If we're the root node, should we print out the results |
1575 |
|
int worldRank = MPI::COMM_WORLD.Get_rank(); |
1576 |
|
if (worldRank == 0) { |
1627 |
|
} |
1628 |
|
rotTempLog_ << endl; |
1629 |
|
} |
1630 |
< |
|
1630 |
> |
// James put this in. |
1631 |
> |
Mat3x3d hmat = currentSnap_->getHmat(); |
1632 |
> |
if (outputDen_) { |
1633 |
> |
denLog_ << time; |
1634 |
> |
for (j = 0; j < rnemdLogWidth_; j++) { |
1635 |
> |
|
1636 |
> |
RealType binVol = hmat(0,0) * hmat(1,1) * (hmat(2,2) / float(nBins_)); |
1637 |
> |
denLog_ << "\t" << DenHist_[j] / (float(logFrameCount_) * binVol); |
1638 |
> |
} |
1639 |
> |
denLog_ << endl; |
1640 |
> |
} |
1641 |
> |
if (outputVz_) { |
1642 |
> |
vzzLog_ << time; |
1643 |
> |
for (j = 0; j < rnemdLogWidth_; j++) { |
1644 |
> |
vzzLog_ << "\t" << pzzHist_[j] / mHist_[j]; |
1645 |
> |
} |
1646 |
> |
vzzLog_ << endl; |
1647 |
> |
} |
1648 |
|
#ifdef IS_MPI |
1649 |
|
} |
1650 |
|
#endif |
1680 |
|
rotTempCount_[j] = 0; |
1681 |
|
rotTempHist_[j] = 0.0; |
1682 |
|
} |
1683 |
+ |
// James put this in |
1684 |
+ |
if (outputDen_) |
1685 |
+ |
for (j = 0; j < rnemdLogWidth_; j++) { |
1686 |
+ |
//pyzCount_[j] = 0; |
1687 |
+ |
DenHist_[j] = 0.0; |
1688 |
+ |
} |
1689 |
+ |
if (outputVz_) |
1690 |
+ |
for (j = 0; j < rnemdLogWidth_; j++) { |
1691 |
+ |
//pyzCount_[j] = 0; |
1692 |
+ |
pzzHist_[j] = 0.0; |
1693 |
+ |
} |
1694 |
+ |
// reset the counter |
1695 |
+ |
|
1696 |
+ |
Numcount_++; |
1697 |
+ |
if (Numcount_ > int(runTime_/statusTime_)) |
1698 |
+ |
cerr << "time =" << time << " Asum =" << Asum_ << '\n'; |
1699 |
+ |
if (Numcount_ > int(runTime_/statusTime_)) |
1700 |
+ |
cerr << "time =" << time << " Jsum =" << Jsum_ << '\n'; |
1701 |
+ |
|
1702 |
+ |
logFrameCount_ = 0; |
1703 |
|
} |
1704 |
|
} |
1705 |
|
|