Definition at line 168 of file ComputeExt.C.
References Lattice::a(), Lattice::a_p(), Lattice::b(), Lattice::b_p(), Lattice::c(), Lattice::c_p(), ComputeExtAtom::charge, ExtCoordMsg::coord, ExtForceMsg::energy, ExtForceMsg::force, ExtForce::force, ComputeExtAtom::id, ExtCoordMsg::lattice, Node::molecule, NAMD_die(), ExtCoordMsg::numAtoms, Molecule::numAtoms, PatchMap::Object(), Node::Object(), ComputeExtAtom::position, ExtForce::replace, Node::simParameters, simParams, ExtCoordMsg::sourceNode, ExtForceMsg::virial, Vector::x, Vector::y, and Vector::z.
  169   if ( ! numSources ) {
   172     for ( 
int i=0; i<numSources; ++i ) { coordMsgs[i] = 0; }
   180   for ( i=0; i < msg->
numAtoms; ++i ) {
   184   coordMsgs[numArrived] = msg;
   187   if ( numArrived < numSources ) 
return;
   198   file = fopen(
simParams->extCoordFilename,
"w");
   199   if ( ! file ) { 
NAMD_die(strerror(errno)); }
   200   for ( i=0; i<numAtoms; ++i ) {
   201     int id = coord[i].
id + 1;
   202     double charge = coord[i].
charge;
   206     iret = fprintf(file,
"%d %f %f %f %f\n",
id,charge,x,y,z);
   207     if ( iret < 0 ) { 
NAMD_die(strerror(errno)); }
   213   iret = fprintf(file,
"%f %f %f\n%f %f %f\n%f %f %f\n",
   214                  a.
x, a.
y, a.
z, b.
x, b.
y, b.
z, c.
x, c.
y, c.
z);
   215   if ( iret < 0 ) { 
NAMD_die(strerror(errno)); }
   220   iret = system(
simParams->extForcesCommand);
   221   if ( iret == -1 ) { 
NAMD_die(strerror(errno)); }
   222   if ( iret ) { 
NAMD_die(
"Error running command for external forces."); }
   225   iret = 
remove(
simParams->extCoordFilename);
   226   if ( iret ) { 
NAMD_die(strerror(errno)); }
   230   file = fopen(
simParams->extForceFilename,
"r");
   231   if ( ! file ) { 
NAMD_die(strerror(errno)); }
   232   for ( i=0; i<numAtoms; ++i ) {
   235     iret = fscanf(file,
"%d %d %lf %lf %lf\n", &
id, &replace, &x, &y, &z);
   236     if ( iret != 5 ) { 
NAMD_die(
"Error reading external forces file."); }
   237     if ( 
id != i + 1 ) { 
NAMD_die(
"Atom ID error in external forces file."); }
   246   iret = fscanf(file,
"%lf\n", &energy);
   249     for ( 
int k=0; k<3; ++k ) 
for ( 
int l=0; l<3; ++l ) virial[k][l] = 0;
   251     iret = fscanf(file,
"%lf %lf %lf\n%lf %lf %lf\n%lf %lf %lf\n",
   252       &virial[0][0], &virial[0][1], &virial[0][2],
   253       &virial[1][0], &virial[1][1], &virial[1][2],
   254       &virial[2][0], &virial[2][1], &virial[2][2]);
   256       for ( 
int k=0; k<3; ++k ) 
for ( 
int l=0; l<3; ++l ) virial[k][l] = 0;
   259       for ( 
int k=0; k<3; ++k ) 
for ( 
int l=0; l<3; ++l ) virial[k][l] *= -1.0;
   265   iret = 
remove(
simParams->extForceFilename);
   266   if ( iret ) { 
NAMD_die(strerror(errno)); }
   270   for ( 
int j=0; j < numSources; ++j ) {
   274     for ( 
int i=0; i < cmsg->
numAtoms; ++i ) {
   279       for ( 
int k=0; k<3; ++k ) 
for ( 
int l=0; l<3; ++l )
   280         fmsg->
virial[k][l] = virial[k][l];
   283       for ( 
int k=0; k<3; ++k ) 
for ( 
int l=0; l<3; ++l )
 
NAMD_HOST_DEVICE Vector c() const
 
NAMD_HOST_DEVICE int c_p() const
 
static PatchMap * Object()
 
SimParameters * simParameters
 
NAMD_HOST_DEVICE int b_p() const
 
NAMD_HOST_DEVICE int a_p() const
 
void NAMD_die(const char *err_msg)
 
NAMD_HOST_DEVICE Vector b() const
 
NAMD_HOST_DEVICE Vector a() const