--- trunk/OOPSE/libmdtools/EAM_FF.cpp 2003/11/10 21:50:36 859 +++ trunk/OOPSE/libmdtools/EAM_FF.cpp 2004/06/11 14:14:10 1261 @@ -80,8 +80,8 @@ namespace EAM_NS{ if( !strcmp( info.name, name ) ){ sprintf( painCave.errMsg, - "Duplicate LJ atom type \"%s\" found in " - "the LJ_FF param file./n", + "Duplicate EAM atom type \"%s\" found in " + "the EAM_FF param file./n", name ); painCave.isFatal = 1; simError(); @@ -155,8 +155,11 @@ using namespace EAM_NS; // begins the actual forcefield stuff. //**************************************************************** +EAM_FF::EAM_FF() { + EAM_FF(""); +} -EAM_FF::EAM_FF(){ +EAM_FF::EAM_FF(char* the_variant){ char fileName[200]; char* ffPath_env = "FORCE_PARAM_PATH"; @@ -201,11 +204,27 @@ EAM_FF::EAM_FF(){ if( worldRank == 0 ){ #endif - // generate the force file name + // generate the force file name + + strcpy( fileName, "EAM" ); + + if (strlen(the_variant) > 0) { + has_variant = 1; + strcpy( variant, the_variant); + strcat( fileName, "."); + strcat( fileName, variant ); + + sprintf( painCave.errMsg, + "Using %s variant of EAM force field.\n", + variant ); + painCave.severity = OOPSE_INFO; + painCave.isFatal = 0; + simError(); + } + strcat( fileName, ".frc"); + + //fprintf( stderr,"Trying to open %s\n", fileName ); - strcpy( fileName, "EAM_FF.frc" ); - // fprintf( stderr,"Trying to open %s\n", fileName ); - // attempt to open the file in the current directory first. frcFile = fopen( fileName, "r" ); @@ -228,16 +247,19 @@ EAM_FF::EAM_FF(){ frcFile = fopen( fileName, "r" ); if( frcFile == NULL ){ - + sprintf( painCave.errMsg, - "Error opening the force field parameter file: %s\n" - "Have you tried setting the FORCE_PARAM_PATH environment " - "vairable?\n", + "Error opening the force field parameter file:\n" + "\t%s\n" + "\tHave you tried setting the FORCE_PARAM_PATH environment " + "variable?\n", fileName ); + painCave.severity = OOPSE_ERROR; painCave.isFatal = 1; simError(); } } + #ifdef IS_MPI } @@ -267,7 +289,7 @@ void EAM_FF::calcRcut( void ){ void EAM_FF::calcRcut( void ){ - #ifdef IS_MPI +#ifdef IS_MPI double tempEamRcut = eamRcut; MPI_Allreduce( &tempEamRcut, &eamRcut, 1, MPI_DOUBLE, MPI_MAX, MPI_COMM_WORLD); @@ -317,7 +339,7 @@ void EAM_FF::readParams( void ){ // read in the atom types. headAtomType = new LinkedAtomType; - + fastForward( "AtomTypes", "eam atom readParams" ); // we are now at the AtomTypes section. @@ -407,7 +429,7 @@ void EAM_FF::readParams( void ){ MPIcheckPoint(); headAtomType = new LinkedAtomType; - recieveFrcStruct( &info, mpiAtomStructType ); + receiveFrcStruct( &info, mpiAtomStructType ); while( !info.last ){ @@ -433,7 +455,7 @@ void EAM_FF::readParams( void ){ MPIcheckPoint(); - recieveFrcStruct( &info, mpiAtomStructType ); + receiveFrcStruct( &info, mpiAtomStructType ); } @@ -449,8 +471,10 @@ void EAM_FF::readParams( void ){ int isDipole = 0; int isSSD = 0; int isGB = 0; - int isEAM= 1; + int isEAM = 1; + int isCharge = 0; double dipole = 0.0; + double charge = 0.0; double eamSigma = 0.0; double eamEpslon = 0.0; @@ -465,8 +489,10 @@ void EAM_FF::readParams( void ){ &isDipole, &isGB, &isEAM, + &isCharge, &eamEpslon, &eamSigma, + &charge, &dipole, &isError ); if( isError ){ @@ -544,11 +570,9 @@ void EAM_FF::initializeAtoms( int nAtoms, Atom** the_a the_atoms[i]->setMass( currentAtomType->mass ); the_atoms[i]->setIdent( currentAtomType->ident ); - the_atoms[i]->setEAM(); - the_atoms[i]->setEamRcut( currentAtomType->eam_rcut); if (eamRcut < currentAtomType->eam_rcut) eamRcut = currentAtomType->eam_rcut; - + } } @@ -725,7 +749,7 @@ int EAM_NS::parseEAM(atomStruct &info, char *eamPotFil sprintf( painCave.errMsg, "Error opening the EAM force parameter file: %s\n" "Have you tried setting the FORCE_PARAM_PATH environment " - "vairable?\n", + "variable?\n", eamPotFile ); painCave.isFatal = 1; simError();