237 |
|
stat[Stats::PRESSURE_TENSOR_ZX] = tensor(2, 0); |
238 |
|
stat[Stats::PRESSURE_TENSOR_ZY] = tensor(2, 1); |
239 |
|
stat[Stats::PRESSURE_TENSOR_ZZ] = tensor(2, 2); |
240 |
+ |
|
241 |
+ |
|
242 |
+ |
Globals* simParams = info_->getSimParams(); |
243 |
+ |
|
244 |
+ |
if (simParams->haveTaggedAtomPair() && |
245 |
+ |
simParams->havePrintTaggedPairDistance()) { |
246 |
+ |
if ( simParams->getPrintTaggedPairDistance()) { |
247 |
+ |
|
248 |
+ |
std::pair<int, int> tap = simParams->getTaggedAtomPair(); |
249 |
+ |
Vector3d pos1, pos2, rab; |
250 |
+ |
|
251 |
+ |
#ifdef IS_MPI |
252 |
+ |
std::cerr << "tap = " << tap.first << " " << tap.second << std::endl; |
253 |
+ |
|
254 |
+ |
int mol1 = info_->getGlobalMolMembership(tap.first); |
255 |
+ |
int mol2 = info_->getGlobalMolMembership(tap.second); |
256 |
+ |
std::cerr << "mols = " << mol1 << " " << mol2 << std::endl; |
257 |
+ |
|
258 |
+ |
int proc1 = info_->getMolToProc(mol1); |
259 |
+ |
int proc2 = info_->getMolToProc(mol2); |
260 |
+ |
|
261 |
+ |
std::cerr << " procs = " << proc1 << " " <<proc2 <<std::endl; |
262 |
+ |
|
263 |
+ |
RealType data[3]; |
264 |
+ |
if (proc1 == worldRank) { |
265 |
+ |
StuntDouble* sd1 = info_->getIOIndexToIntegrableObject(tap.first); |
266 |
+ |
std::cerr << " on proc " << proc1 << ", sd1 has global index= " << sd1->getGlobalIndex() << std::endl; |
267 |
+ |
pos1 = sd1->getPos(); |
268 |
+ |
data[0] = pos1.x(); |
269 |
+ |
data[1] = pos1.y(); |
270 |
+ |
data[2] = pos1.z(); |
271 |
+ |
MPI_Bcast(data, 3, MPI_REALTYPE, proc1, MPI_COMM_WORLD); |
272 |
+ |
} else { |
273 |
+ |
MPI_Bcast(data, 3, MPI_REALTYPE, proc1, MPI_COMM_WORLD); |
274 |
+ |
pos1 = Vector3d(data); |
275 |
+ |
} |
276 |
|
|
277 |
|
|
278 |
+ |
if (proc2 == worldRank) { |
279 |
+ |
StuntDouble* sd2 = info_->getIOIndexToIntegrableObject(tap.second); |
280 |
+ |
std::cerr << " on proc " << proc2 << ", sd2 has global index= " << sd2->getGlobalIndex() << std::endl; |
281 |
+ |
pos2 = sd2->getPos(); |
282 |
+ |
data[0] = pos2.x(); |
283 |
+ |
data[1] = pos2.y(); |
284 |
+ |
data[2] = pos2.z(); |
285 |
+ |
MPI_Bcast(data, 3, MPI_REALTYPE, proc2, MPI_COMM_WORLD); |
286 |
+ |
} else { |
287 |
+ |
MPI_Bcast(data, 3, MPI_REALTYPE, proc2, MPI_COMM_WORLD); |
288 |
+ |
pos2 = Vector3d(data); |
289 |
+ |
} |
290 |
+ |
#else |
291 |
+ |
StuntDouble* at1 = info_->getIOIndexToIntegrableObject(tap.first); |
292 |
+ |
StuntDouble* at2 = info_->getIOIndexToIntegrableObject(tap.second); |
293 |
+ |
pos1 = at1->getPos(); |
294 |
+ |
pos2 = at2->getPos(); |
295 |
+ |
#endif |
296 |
+ |
rab = pos2 - pos1; |
297 |
+ |
currSnapshot->wrapVector(rab); |
298 |
+ |
stat[Stats::TAGGED_PAIR_DISTANCE] = rab.length(); |
299 |
+ |
} |
300 |
+ |
} |
301 |
+ |
|
302 |
|
/**@todo need refactorying*/ |
303 |
|
//Conserved Quantity is set by integrator and time is set by setTime |
304 |
|
|