80 |
|
|
81 |
|
if( !strcmp( info.name, name ) ){ |
82 |
|
sprintf( painCave.errMsg, |
83 |
< |
"Duplicate LJ atom type \"%s\" found in " |
84 |
< |
"the LJ_FF param file./n", |
83 |
> |
"Duplicate EAM atom type \"%s\" found in " |
84 |
> |
"the EAM_FF param file./n", |
85 |
|
name ); |
86 |
|
painCave.isFatal = 1; |
87 |
|
simError(); |
155 |
|
// begins the actual forcefield stuff. |
156 |
|
//**************************************************************** |
157 |
|
|
158 |
+ |
EAM_FF::EAM_FF() { |
159 |
+ |
EAM_FF(""); |
160 |
+ |
} |
161 |
|
|
162 |
< |
EAM_FF::EAM_FF(){ |
162 |
> |
EAM_FF::EAM_FF(char* the_variant){ |
163 |
|
|
164 |
|
char fileName[200]; |
165 |
|
char* ffPath_env = "FORCE_PARAM_PATH"; |
204 |
|
if( worldRank == 0 ){ |
205 |
|
#endif |
206 |
|
|
207 |
< |
// generate the force file name |
207 |
> |
// generate the force file name |
208 |
> |
|
209 |
> |
strcpy( fileName, "EAM" ); |
210 |
> |
|
211 |
> |
if (strlen(the_variant) > 0) { |
212 |
> |
has_variant = 1; |
213 |
> |
strcpy( variant, the_variant); |
214 |
> |
strcat( fileName, "."); |
215 |
> |
strcat( fileName, variant ); |
216 |
> |
|
217 |
> |
sprintf( painCave.errMsg, |
218 |
> |
"Using %s variant of EAM force field.\n", |
219 |
> |
variant ); |
220 |
> |
painCave.severity = OOPSE_INFO; |
221 |
> |
painCave.isFatal = 0; |
222 |
> |
simError(); |
223 |
> |
} |
224 |
> |
strcat( fileName, ".frc"); |
225 |
> |
|
226 |
> |
//fprintf( stderr,"Trying to open %s\n", fileName ); |
227 |
|
|
206 |
– |
strcpy( fileName, "EAM_FF.frc" ); |
207 |
– |
// fprintf( stderr,"Trying to open %s\n", fileName ); |
208 |
– |
|
228 |
|
// attempt to open the file in the current directory first. |
229 |
|
|
230 |
|
frcFile = fopen( fileName, "r" ); |
247 |
|
frcFile = fopen( fileName, "r" ); |
248 |
|
|
249 |
|
if( frcFile == NULL ){ |
250 |
< |
|
250 |
> |
|
251 |
|
sprintf( painCave.errMsg, |
252 |
< |
"Error opening the force field parameter file: %s\n" |
253 |
< |
"Have you tried setting the FORCE_PARAM_PATH environment " |
254 |
< |
"vairable?\n", |
252 |
> |
"Error opening the force field parameter file:\n" |
253 |
> |
"\t%s\n" |
254 |
> |
"\tHave you tried setting the FORCE_PARAM_PATH environment " |
255 |
> |
"variable?\n", |
256 |
|
fileName ); |
257 |
+ |
painCave.severity = OOPSE_ERROR; |
258 |
|
painCave.isFatal = 1; |
259 |
|
simError(); |
260 |
|
} |
261 |
|
} |
262 |
+ |
|
263 |
|
|
264 |
|
#ifdef IS_MPI |
265 |
|
} |
289 |
|
|
290 |
|
void EAM_FF::calcRcut( void ){ |
291 |
|
|
292 |
< |
#ifdef IS_MPI |
292 |
> |
#ifdef IS_MPI |
293 |
|
double tempEamRcut = eamRcut; |
294 |
|
MPI_Allreduce( &tempEamRcut, &eamRcut, 1, MPI_DOUBLE, MPI_MAX, |
295 |
|
MPI_COMM_WORLD); |
296 |
|
#endif //is_mpi |
297 |
< |
entry_plug->setRcut(eamRcut); |
297 |
> |
entry_plug->setDefaultRcut(eamRcut); |
298 |
|
} |
299 |
|
|
300 |
|
|
339 |
|
// read in the atom types. |
340 |
|
|
341 |
|
headAtomType = new LinkedAtomType; |
342 |
< |
|
342 |
> |
|
343 |
|
fastForward( "AtomTypes", "eam atom readParams" ); |
344 |
|
|
345 |
|
// we are now at the AtomTypes section. |
429 |
|
MPIcheckPoint(); |
430 |
|
|
431 |
|
headAtomType = new LinkedAtomType; |
432 |
< |
recieveFrcStruct( &info, mpiAtomStructType ); |
432 |
> |
receiveFrcStruct( &info, mpiAtomStructType ); |
433 |
|
|
434 |
|
while( !info.last ){ |
435 |
|
|
455 |
|
|
456 |
|
MPIcheckPoint(); |
457 |
|
|
458 |
< |
recieveFrcStruct( &info, mpiAtomStructType ); |
458 |
> |
receiveFrcStruct( &info, mpiAtomStructType ); |
459 |
|
|
460 |
|
|
461 |
|
} |
471 |
|
int isDipole = 0; |
472 |
|
int isSSD = 0; |
473 |
|
int isGB = 0; |
474 |
< |
int isEAM= 1; |
474 |
> |
int isEAM = 1; |
475 |
> |
int isCharge = 0; |
476 |
|
double dipole = 0.0; |
477 |
+ |
double charge = 0.0; |
478 |
|
double eamSigma = 0.0; |
479 |
|
double eamEpslon = 0.0; |
480 |
|
|
489 |
|
&isDipole, |
490 |
|
&isGB, |
491 |
|
&isEAM, |
492 |
+ |
&isCharge, |
493 |
|
&eamEpslon, |
494 |
|
&eamSigma, |
495 |
+ |
&charge, |
496 |
|
&dipole, |
497 |
|
&isError ); |
498 |
|
if( isError ){ |
570 |
|
|
571 |
|
the_atoms[i]->setMass( currentAtomType->mass ); |
572 |
|
the_atoms[i]->setIdent( currentAtomType->ident ); |
547 |
– |
the_atoms[i]->setEAM(); |
548 |
– |
the_atoms[i]->setEamRcut( currentAtomType->eam_rcut); |
573 |
|
|
574 |
|
if (eamRcut < currentAtomType->eam_rcut) eamRcut = currentAtomType->eam_rcut; |
575 |
< |
|
575 |
> |
|
576 |
|
} |
577 |
|
} |
578 |
|
|
749 |
|
sprintf( painCave.errMsg, |
750 |
|
"Error opening the EAM force parameter file: %s\n" |
751 |
|
"Have you tried setting the FORCE_PARAM_PATH environment " |
752 |
< |
"vairable?\n", |
752 |
> |
"variable?\n", |
753 |
|
eamPotFile ); |
754 |
|
painCave.isFatal = 1; |
755 |
|
simError(); |