375 |
|
which_node = AtomToProcMap[i]; |
376 |
|
|
377 |
|
if (which_node == mpiSim->getMyNode()) { |
378 |
< |
|
379 |
< |
sprintf( tempBuffer, |
380 |
< |
"%s\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t", |
381 |
< |
atoms[i]->getType(), |
382 |
< |
atoms[i]->getX(), |
383 |
< |
atoms[i]->getY(), |
384 |
< |
atoms[i]->getZ(), |
385 |
< |
atoms[i]->get_vx(), |
386 |
< |
atoms[i]->get_vy(), |
387 |
< |
atoms[i]->get_vz()); |
388 |
< |
strcpy( writeLine, tempBuffer ); |
389 |
< |
|
390 |
< |
if( atoms[i]->isDirectional() ){ |
391 |
< |
|
392 |
< |
dAtom = (DirectionalAtom *)atoms[i]; |
393 |
< |
dAtom->getQ( q ); |
394 |
< |
|
395 |
< |
sprintf( tempBuffer, |
396 |
< |
"%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\n", |
397 |
< |
q[0], |
398 |
< |
q[1], |
399 |
< |
q[2], |
400 |
< |
q[3], |
401 |
< |
dAtom->getJx(), |
402 |
< |
dAtom->getJy(), |
403 |
< |
dAtom->getJz()); |
404 |
< |
strcat( writeLine, tempBuffer ); |
378 |
> |
|
379 |
> |
which_atom = i; |
380 |
> |
local_index=-1; |
381 |
> |
for (j=0; (j<mpiSim->getMyNlocal()) && (local_index < 0); j++) { |
382 |
> |
if (atoms[j]->getGlobalIndex() == which_atom) local_index = j; |
383 |
|
} |
384 |
< |
else |
385 |
< |
strcat( writeLine, "0.0\t0.0\t0.0\t0.0\t0.0\t0.0\t0.0\n" ); |
386 |
< |
|
384 |
> |
if (local_index != -1) { |
385 |
> |
sprintf( tempBuffer, |
386 |
> |
"%s\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t", |
387 |
> |
atoms[local_index]->getType(), |
388 |
> |
atoms[local_index]->getX(), |
389 |
> |
atoms[local_index]->getY(), |
390 |
> |
atoms[local_index]->getZ(), |
391 |
> |
atoms[local_index]->get_vx(), |
392 |
> |
atoms[local_index]->get_vy(), |
393 |
> |
atoms[local_index]->get_vz()); |
394 |
> |
strcpy( writeLine, tempBuffer ); |
395 |
> |
|
396 |
> |
if( atoms[local_index]->isDirectional() ){ |
397 |
> |
|
398 |
> |
dAtom = (DirectionalAtom *)atoms[local_index]; |
399 |
> |
dAtom->getQ( q ); |
400 |
> |
|
401 |
> |
sprintf( tempBuffer, |
402 |
> |
"%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\n", |
403 |
> |
q[0], |
404 |
> |
q[1], |
405 |
> |
q[2], |
406 |
> |
q[3], |
407 |
> |
dAtom->getJx(), |
408 |
> |
dAtom->getJy(), |
409 |
> |
dAtom->getJz()); |
410 |
> |
strcat( writeLine, tempBuffer ); |
411 |
> |
} |
412 |
> |
else |
413 |
> |
strcat( writeLine, "0.0\t0.0\t0.0\t0.0\t0.0\t0.0\t0.0\n" ); |
414 |
> |
} |
415 |
> |
else { |
416 |
> |
strcpy( writeLine, "ATOM NOT FOUND ON THIS PROCESSOR"); |
417 |
> |
} |
418 |
> |
|
419 |
|
} else { |
420 |
|
|
421 |
|
MPI::COMM_WORLD.Send(&i, 1, MPI_INT, which_node, TAKE_THIS_TAG_INT); |