83 |
|
char *eof_test; // ptr to see when we reach the end of the file |
84 |
|
char *parseErr; |
85 |
|
int procIndex; |
86 |
+ |
double currTime; |
87 |
|
double boxMat[9]; |
88 |
|
double theBoxMat3[3][3]; |
89 |
|
|
124 |
|
simError(); |
125 |
|
} |
126 |
|
|
127 |
< |
parseErr = parseBoxLine( read_buffer, boxMat ); |
127 |
> |
parseErr = parseBoxLine( read_buffer, boxMat, currTime ); |
128 |
|
if( parseErr != NULL ){ |
129 |
|
strcpy( painCave.errMsg, parseErr ); |
130 |
|
painCave.isFatal = 1; |
135 |
|
for(j=0;j<3;j++) theBoxMat3[i][j] = boxMat[3*j+i]; |
136 |
|
|
137 |
|
simnfo->setBoxM( theBoxMat3 ); |
138 |
+ |
simnfo->setTime( currTime ); |
139 |
|
|
140 |
|
|
141 |
|
for( i=0; i < n_atoms; i++){ |
212 |
|
simError(); |
213 |
|
} |
214 |
|
|
215 |
< |
parseErr = parseBoxLine( read_buffer, boxMat ); |
215 |
> |
parseErr = parseBoxLine( read_buffer, boxMat, currTime ); |
216 |
|
if( parseErr != NULL ){ |
217 |
|
strcpy( painCave.errMsg, parseErr ); |
218 |
|
haveError = 1; |
220 |
|
} |
221 |
|
|
222 |
|
MPI_Bcast(boxMat, 9, MPI_DOUBLE, 0, MPI_COMM_WORLD ); |
223 |
+ |
MPI_Bcast(&currTime, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD ); |
224 |
|
|
225 |
|
if(haveError) nodeZeroError(); |
226 |
|
|
275 |
|
} else { |
276 |
|
|
277 |
|
MPI_Bcast(boxMat, 9, MPI_DOUBLE, 0, MPI_COMM_WORLD); |
278 |
+ |
MPI_Bcast(&currTime, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD); |
279 |
|
|
280 |
|
done = 0; |
281 |
|
while (!done) { |
313 |
|
for(j=0;j<3;j++) theBoxMat3[i][j] = boxMat[3*j+i]; |
314 |
|
|
315 |
|
simnfo->setBoxM( theBoxMat3 ); |
316 |
+ |
simnfo->setTime( currTime ); |
317 |
|
|
318 |
|
|
319 |
|
#endif |
323 |
|
|
324 |
|
char *foo; // the pointer to the current string token |
325 |
|
|
326 |
< |
double rx, ry, rz; // position place holders |
327 |
< |
double vx, vy, vz; // velocity placeholders |
326 |
> |
double pos[3]; // position place holders |
327 |
> |
double vel[3]; // velocity placeholders |
328 |
|
double q[4]; // the quaternions |
329 |
|
double jx, jy, jz; // angular velocity placeholders; |
330 |
|
double qSqr, qLength; // needed to normalize the quaternion vector. |
377 |
|
c_in_name, n_atoms, atomIndex ); |
378 |
|
return strdup( painCave.errMsg ); |
379 |
|
} |
380 |
< |
rx = atof( foo ); |
380 |
> |
pos[0] = atof( foo ); |
381 |
|
|
382 |
|
foo = strtok(NULL, " ,;\t"); |
383 |
|
if(foo == NULL){ |
387 |
|
c_in_name, n_atoms, atomIndex ); |
388 |
|
return strdup( painCave.errMsg ); |
389 |
|
} |
390 |
< |
ry = atof( foo ); |
390 |
> |
pos[1] = atof( foo ); |
391 |
|
|
392 |
|
foo = strtok(NULL, " ,;\t"); |
393 |
|
if(foo == NULL){ |
397 |
|
c_in_name, n_atoms, atomIndex ); |
398 |
|
return strdup( painCave.errMsg ); |
399 |
|
} |
400 |
< |
rz = atof( foo ); |
400 |
> |
pos[2] = atof( foo ); |
401 |
|
|
402 |
|
|
403 |
|
// get the velocities |
410 |
|
c_in_name, n_atoms, atomIndex ); |
411 |
|
return strdup( painCave.errMsg ); |
412 |
|
} |
413 |
< |
vx = atof( foo ); |
413 |
> |
vel[0] = atof( foo ); |
414 |
|
|
415 |
|
foo = strtok(NULL, " ,;\t"); |
416 |
|
if(foo == NULL){ |
420 |
|
c_in_name, n_atoms, atomIndex ); |
421 |
|
return strdup( painCave.errMsg ); |
422 |
|
} |
423 |
< |
vy = atof( foo ); |
423 |
> |
vel[1] = atof( foo ); |
424 |
|
|
425 |
|
foo = strtok(NULL, " ,;\t"); |
426 |
|
if(foo == NULL){ |
430 |
|
c_in_name, n_atoms, atomIndex ); |
431 |
|
return strdup( painCave.errMsg ); |
432 |
|
} |
433 |
< |
vz = atof( foo ); |
433 |
> |
vel[2] = atof( foo ); |
434 |
|
|
435 |
|
|
436 |
|
// get the quaternions |
532 |
|
|
533 |
|
// add the positions and velocities to the atom |
534 |
|
|
535 |
< |
atoms[atomIndex]->setX( rx ); |
536 |
< |
atoms[atomIndex]->setY( ry ); |
532 |
< |
atoms[atomIndex]->setZ( rz ); |
533 |
< |
|
534 |
< |
atoms[atomIndex]->set_vx( vx ); |
535 |
< |
atoms[atomIndex]->set_vy( vy ); |
536 |
< |
atoms[atomIndex]->set_vz( vz ); |
535 |
> |
atoms[atomIndex]->setPos( pos ); |
536 |
> |
atoms[atomIndex]->setVel( vel ); |
537 |
|
|
538 |
|
return NULL; |
539 |
|
} |
540 |
|
|
541 |
|
|
542 |
< |
char* InitializeFromFile::parseBoxLine(char* readLine, double boxMat[9]){ |
542 |
> |
char* InitializeFromFile::parseBoxLine(char* readLine, double boxMat[9], |
543 |
> |
double &time ){ |
544 |
|
|
545 |
|
char *foo; // the pointer to the current string token |
546 |
|
int j; |
556 |
|
c_in_name ); |
557 |
|
return strdup( painCave.errMsg ); |
558 |
|
} |
559 |
< |
simnfo->setTime( atof( foo ) ); |
559 |
> |
time = atof( foo ); |
560 |
|
|
561 |
|
// get the Hx vector |
562 |
|
|