| 454 |  |  | 
| 455 |  | DUFF::DUFF(){ | 
| 456 |  |  | 
| 457 | < | char fileName[200]; | 
| 458 | < | char* ffPath_env = "FORCE_PARAM_PATH"; | 
| 459 | < | char* ffPath; | 
| 460 | < | char temp[200]; | 
| 457 | > | string fileName; | 
| 458 | > | string tempString; | 
| 459 |  |  | 
| 460 |  | headAtomType       = NULL; | 
| 461 |  | currentAtomType    = NULL; | 
| 565 |  |  | 
| 566 |  | // generate the force file name | 
| 567 |  |  | 
| 568 | < | strcpy( fileName, "DUFF.frc" ); | 
| 568 | > | fileName = "DUFF.frc"; | 
| 569 |  | //    fprintf( stderr,"Trying to open %s\n", fileName ); | 
| 570 |  |  | 
| 571 |  | // attempt to open the file in the current directory first. | 
| 572 |  |  | 
| 573 | < | frcFile = fopen( fileName, "r" ); | 
| 573 | > | frcFile = fopen( fileName.c_str(), "r" ); | 
| 574 |  |  | 
| 575 |  | if( frcFile == NULL ){ | 
| 576 |  |  | 
| 577 |  | // next see if the force path enviorment variable is set | 
| 578 | < |  | 
| 579 | < | ffPath = getenv( ffPath_env ); | 
| 580 | < | if( ffPath == NULL ) { | 
| 581 | < | STR_DEFINE(ffPath, FRC_PATH ); | 
| 582 | < | } | 
| 578 | > |  | 
| 579 | > | tempString = ffPath + "/" + fileName; | 
| 580 | > | fileName = tempString; | 
| 581 | > |  | 
| 582 | > | frcFile = fopen( fileName.c_str(), "r" ); | 
| 583 |  |  | 
| 586 | – |  | 
| 587 | – | strcpy( temp, ffPath ); | 
| 588 | – | strcat( temp, "/" ); | 
| 589 | – | strcat( temp, fileName ); | 
| 590 | – | strcpy( fileName, temp ); | 
| 591 | – |  | 
| 592 | – | frcFile = fopen( fileName, "r" ); | 
| 593 | – |  | 
| 584 |  | if( frcFile == NULL ){ | 
| 585 |  |  | 
| 586 |  | sprintf( painCave.errMsg, | 
| 588 |  | "\t%s\n" | 
| 589 |  | "\tHave you tried setting the FORCE_PARAM_PATH environment " | 
| 590 |  | "variable?\n", | 
| 591 | < | fileName ); | 
| 591 | > | fileName.c_str() ); | 
| 592 |  | painCave.severity = OOPSE_ERROR; | 
| 593 |  | painCave.isFatal = 1; | 
| 594 |  | simError(); | 
| 647 |  | initFortran( entry_plug->useReactionField ); | 
| 648 |  | } | 
| 649 |  |  | 
| 660 | – | double DUFF::getAtomTypeMass (char* atomType) { | 
| 650 |  |  | 
| 662 | – | currentAtomType = headAtomType->find( atomType ); | 
| 663 | – | if( currentAtomType == NULL ){ | 
| 664 | – | sprintf( painCave.errMsg, | 
| 665 | – | "AtomType error, %s not found in force file.\n", | 
| 666 | – | atomType ); | 
| 667 | – | painCave.isFatal = 1; | 
| 668 | – | simError(); | 
| 669 | – | } | 
| 670 | – |  | 
| 671 | – | return currentAtomType->mass; | 
| 672 | – | } | 
| 673 | – |  | 
| 651 |  | void DUFF::readParams( void ){ | 
| 652 |  |  | 
| 653 |  | int identNum, isError; | 
| 767 |  | if( currentAtomType->name[0] != '\0' ){ | 
| 768 |  |  | 
| 769 |  | if (currentAtomType->isSSD || currentAtomType->isDipole) | 
| 770 | < | DirectionalAtomType* at = new DirectionalAtomType(); | 
| 770 | > | at = new DirectionalAtomType(); | 
| 771 |  | else | 
| 772 | < | AtomType* at = new AtomType(); | 
| 772 | > | at = new AtomType(); | 
| 773 |  |  | 
| 774 |  | if (currentAtomType->isSSD) { | 
| 775 |  | ((DirectionalAtomType*)at)->setSticky(); | 
| 799 | – | entry_plug->useSticky = 1; | 
| 776 |  | } | 
| 777 |  |  | 
| 778 |  | if (currentAtomType->isDipole) { | 
| 779 |  | ((DirectionalAtomType*)at)->setDipole(); | 
| 804 | – | entry_plug->useDipoles = 1; | 
| 780 |  | } | 
| 781 |  |  | 
| 782 |  | at->setIdent(currentAtomType->ident); | 
| 1083 |  | MPIcheckPoint(); | 
| 1084 |  |  | 
| 1085 |  | #endif // is_mpi | 
| 1111 | – |  | 
| 1112 | – | entry_plug->useLennardJones = 1; | 
| 1086 |  | } | 
| 1087 |  |  | 
| 1088 |  |  | 
| 1142 |  | the_atoms[i]->setMass( currentAtomType->mass ); | 
| 1143 |  | the_atoms[i]->setIdent( currentAtomType->ident ); | 
| 1144 |  |  | 
| 1145 | + | if (currentAtomType->isSSD) entry_plug->useSticky = 1; | 
| 1146 | + | if (currentAtomType->isDipole) entry_plug->useDipoles = 1; | 
| 1147 | + | // Fix this later.  We'll set it a bunch of times. | 
| 1148 | + | entry_plug->useLennardJones = 1; | 
| 1149 | + |  | 
| 1150 | + |  | 
| 1151 |  | if( bigSigma < currentAtomType->sigma ) bigSigma = currentAtomType->sigma; | 
| 1152 |  |  | 
| 1153 |  | if( currentAtomType->isDipole ){ |