ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/mdtools/interface_implementation/LJ_FF.cpp
(Generate patch)

Comparing trunk/mdtools/interface_implementation/LJ_FF.cpp (file contents):
Revision 240 by chuckv, Wed Jan 22 21:45:20 2003 UTC vs.
Revision 252 by chuckv, Tue Jan 28 22:16:55 2003 UTC

# Line 64 | Line 64 | void (*initLJfortran) ( int *nLocal, int *identArray,
64   void (*newLJtype)( int* ident, double* mass, double* epslon, double* sigma,
65                     int* status );
66  
67 < void (*initLJfortran) ( int *nLocal, int *identArray, int *isError )
67 > void (*initLJfortran) ( int *nLocal, int *identArray, int *isError );
68  
69   LJ_FF* currentLJwrap;
70  
# Line 207 | Line 207 | void LJfunctionWrapper( void (*p1)( int* ident, double
207  
208   void LJfunctionWrapper( void (*p1)( int* ident, double* mass, double* epslon,
209                                     double* sigma, int* status ),
210 <                        void (*p2)( void ),
210 >                        void (*p2)( int*, int*, int* ),
211                          void (*p3)( double* positionArray,double* forceArray,
212                                      double* potentialEnergy,
213                                      short int* doPotentialCalc ) ){
214    
215    
216 <  p1 = newLJtype;
217 <  p2 = initLJfortran;
218 <  this->setLJfortran( p3 );
216 >  newLJtype = p1;
217 >  initLJfortran = p2;
218 >  currentLJwrap->setLJfortran( p3 );
219   }
220  
221  
# Line 242 | Line 242 | void LJ_FF::initializeAtoms( void ){
242        // check for duplicates
243        
244        if( !strcmp( info.name, name ) ){
245 <        sprintf( simError.painCave,
245 >        sprintf( painCave.errMsg,
246                   "Duplicate LJ atom type \"%s\" found in "
247                   "the LJ_FF param file./n",
248                   name );
# Line 307 | Line 307 | void LJ_FF::initializeAtoms( void ){
307  
308      headAtomType = new LinkedType;
309      
310 <    fastFoward( "AtomTypes", "initializeAtoms" );
310 >    fastForward( "AtomTypes", "initializeAtoms" );
311  
312      // we are now at the AtomTypes section.
313      
# Line 386 | Line 386 | void LJ_FF::initializeAtoms( void ){
386      
387      if( currentAtomType->name[0] != '\0' ){
388        isError = 0;
389 <      newLJtype( &(currentAtomType->ident),
389 >          newLJtype( &(currentAtomType->ident),
390                   &(currentAtomType->mass),
391                   &(currentAtomType->epslon),
392                   &(currentAtomType->sigma),
# Line 412 | Line 412 | void LJ_FF::initializeAtoms( void ){
412  
413    // initialize the atoms
414    
415 +  double bigSigma = 0.0;
416    Atom* thisAtom;
417  
418    for( i=0; i<nAtoms; i++ ){
# Line 430 | Line 431 | void LJ_FF::initializeAtoms( void ){
431      the_atoms[i]->setSigma( currentAtomType->sigma );
432      the_atoms[i]->setIdent( currentAtomType->ident );
433      the_atoms[i]->setLJ();
434 +
435 +    if( bigSigma < currentAtomType->sigma ) bigSigma = currentAtomType->sigma;
436    }
437  
438 +  
439 + #ifdef IS_MPI
440 +  double tempBig = bigSigma;
441 +  MPI::COMM_WORLD::Allreduce( &tempBig, &bigSigma, 1, MPI_DOUBLE, MPI_MAX );
442 + #endif  //is_mpi
443  
444 +  //calc rCut and rList
445 +
446 +  entry_plug->rCut = 2.5 * bigSigma;
447 +  if(entry_plug->rCut > (entry_plug->box_x / 2.0)) entry_plug->rCut = entry_plug->box_x / 2.0;
448 +  if(entry_plug->rCut > (entry_plug->box_y / 2.0)) entry_plug->rCut = entry_plug->box_y / 2.0;
449 +  if(entry_plug->rCut > (entry_plug->box_z / 2.0)) entry_plug->rCut = entry_plug->box_z / 2.0;
450 +
451 +  entry_plug->rList = entry_plug->rCut + 1.0;
452 +
453    // clean up the memory
454    
455    delete headAtomType;
# Line 443 | Line 460 | void LJ_FF::initializeAtoms( void ){
460   #endif // is_mpi
461  
462    initFortran();
463 +  entry_plug->refreshSim();
464  
465   }
466  
# Line 592 | Line 610 | void LJ_FF::doForces( void ){
610    int i;
611    double* frc;
612    double* pos;
613 <  double potE;
596 <  short int calcPot = 0;
613 >  short int calcPot = 1;
614  
615    // forces are zeroed here, before any are acumulated.
616    // NOTE: do not rezero the forces in Fortran.
# Line 605 | Line 622 | void LJ_FF::doForces( void ){
622    frc = Atom::getFrcArray();
623    pos = Atom::getPosArray();
624  
625 <  doLJfortran( pos, frc, potE, calcPot );
625 >  doLJfortran( pos, frc, &(entry_plug->lrPot), &calcPot );
626   }
627    
628   void LJ_FF::initFortran( void ){
# Line 618 | Line 635 | void LJ_FF::initFortran( void ){
635    ident = new int[nLocal];
636  
637    for(i=0; i<nLocal; i++){
638 <    ident[i] = entryplug->atoms[i]->getIdent();
638 >    ident[i] = entry_plug->atoms[i]->getIdent();
639    }
640  
641    isError = 0;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines