| 1 |
< |
#include <cstdlib> |
| 2 |
< |
#include <cstdio> |
| 3 |
< |
#include <cstring> |
| 1 |
> |
#include <stdlib.h> |
| 2 |
> |
#include <stdio.h> |
| 3 |
> |
#include <string.h> |
| 4 |
|
|
| 5 |
|
#include <iostream> |
| 6 |
|
using namespace std; |
| 15 |
|
#include "mpiForceField.h" |
| 16 |
|
#endif // is_mpi |
| 17 |
|
|
| 18 |
– |
namespace TPE { // restrict the access of the folowing to this file only. |
| 18 |
|
|
| 19 |
+ |
// define some bond Types |
| 20 |
|
|
| 21 |
+ |
#define FIXED_BOND 0 |
| 22 |
+ |
#define HARMONIC_BOND 1 |
| 23 |
+ |
|
| 24 |
+ |
|
| 25 |
+ |
namespace DUFF_NS { // restrict the access of the folowing to this file only. |
| 26 |
+ |
|
| 27 |
+ |
|
| 28 |
|
// Declare the structures that will be passed by MPI |
| 29 |
|
|
| 30 |
|
typedef struct{ |
| 32 |
|
double mass; |
| 33 |
|
double epslon; |
| 34 |
|
double sigma; |
| 35 |
+ |
double charge; |
| 36 |
|
double dipole; |
| 37 |
|
double w0; |
| 38 |
|
double v0; |
| 39 |
+ |
double v0p; |
| 40 |
+ |
double rl; |
| 41 |
+ |
double ru; |
| 42 |
+ |
double rlp; |
| 43 |
+ |
double rup; |
| 44 |
|
int isSSD; |
| 45 |
+ |
int isCharge; |
| 46 |
|
int isDipole; |
| 47 |
|
int ident; |
| 48 |
|
int last; // 0 -> default |
| 53 |
|
typedef struct{ |
| 54 |
|
char nameA[15]; |
| 55 |
|
char nameB[15]; |
| 42 |
– |
char type[30]; |
| 56 |
|
double d0; |
| 57 |
+ |
double k0; |
| 58 |
|
int last; // 0 -> default |
| 59 |
|
// 1 -> tells nodes to stop listening |
| 60 |
+ |
int type; |
| 61 |
|
} bondStruct; |
| 62 |
|
|
| 63 |
|
|
| 126 |
|
|
| 127 |
|
if( !strcmp( info.name, name ) ){ |
| 128 |
|
sprintf( painCave.errMsg, |
| 129 |
< |
"Duplicate TraPPE_Ex atom type \"%s\" found in " |
| 130 |
< |
"the TraPPE_ExFF param file./n", |
| 129 |
> |
"Duplicate DUFF atom type \"%s\" found in " |
| 130 |
> |
"the DUFF param file./n", |
| 131 |
|
name ); |
| 132 |
|
painCave.isFatal = 1; |
| 133 |
|
simError(); |
| 145 |
|
next->dipole = info.dipole; |
| 146 |
|
next->w0 = info.w0; |
| 147 |
|
next->v0 = info.v0; |
| 148 |
+ |
next->v0p = info.v0p; |
| 149 |
+ |
next->rl = info.rl; |
| 150 |
+ |
next->ru = info.ru; |
| 151 |
+ |
next->rlp = info.rlp; |
| 152 |
+ |
next->rup = info.rup; |
| 153 |
|
next->ident = info.ident; |
| 154 |
|
} |
| 155 |
|
} |
| 166 |
|
info.dipole = dipole; |
| 167 |
|
info.w0 = w0; |
| 168 |
|
info.v0 = v0; |
| 169 |
+ |
info.v0p = v0p; |
| 170 |
+ |
info.rl = rl; |
| 171 |
+ |
info.ru = ru; |
| 172 |
+ |
info.rlp = rlp; |
| 173 |
+ |
info.rup = rup; |
| 174 |
|
info.ident = ident; |
| 175 |
|
info.last = 0; |
| 176 |
|
} |
| 187 |
|
double dipole; |
| 188 |
|
double w0; |
| 189 |
|
double v0; |
| 190 |
+ |
double v0p; |
| 191 |
+ |
double rl; |
| 192 |
+ |
double ru; |
| 193 |
+ |
double rlp; |
| 194 |
+ |
double rup; |
| 195 |
|
int ident; |
| 196 |
|
LinkedAtomType* next; |
| 197 |
|
}; |
| 202 |
|
next = NULL; |
| 203 |
|
nameA[0] = '\0'; |
| 204 |
|
nameB[0] = '\0'; |
| 175 |
– |
type[0] = '\0'; |
| 205 |
|
} |
| 206 |
|
~LinkedBondType(){ if( next != NULL ) delete next; } |
| 207 |
|
|
| 223 |
|
|
| 224 |
|
if(dup){ |
| 225 |
|
sprintf( painCave.errMsg, |
| 226 |
< |
"Duplicate TraPPE_Ex bond type \"%s - %s\" found in " |
| 227 |
< |
"the TraPPE_ExFF param file./n", |
| 226 |
> |
"Duplicate DUFF bond type \"%s - %s\" found in " |
| 227 |
> |
"the DUFF param file./n", |
| 228 |
|
nameA, nameB ); |
| 229 |
|
painCave.isFatal = 1; |
| 230 |
|
simError(); |
| 236 |
|
next = new LinkedBondType(); |
| 237 |
|
strcpy(next->nameA, info.nameA); |
| 238 |
|
strcpy(next->nameB, info.nameB); |
| 239 |
< |
strcpy(next->type, info.type); |
| 239 |
> |
next->type = info.type; |
| 240 |
|
next->d0 = info.d0; |
| 241 |
+ |
next->k0 = info.k0; |
| 242 |
|
} |
| 243 |
|
} |
| 244 |
|
|
| 246 |
|
void duplicate( bondStruct &info ){ |
| 247 |
|
strcpy(info.nameA, nameA); |
| 248 |
|
strcpy(info.nameB, nameB); |
| 249 |
< |
strcpy(info.type, type); |
| 249 |
> |
info.type = type; |
| 250 |
|
info.d0 = d0; |
| 251 |
+ |
info.k0 = k0; |
| 252 |
|
info.last = 0; |
| 253 |
|
} |
| 254 |
|
|
| 257 |
|
|
| 258 |
|
char nameA[15]; |
| 259 |
|
char nameB[15]; |
| 260 |
< |
char type[30]; |
| 260 |
> |
int type; |
| 261 |
|
double d0; |
| 262 |
+ |
double k0; |
| 263 |
|
|
| 264 |
|
LinkedBondType* next; |
| 265 |
|
}; |
| 296 |
|
|
| 297 |
|
if(dup){ |
| 298 |
|
sprintf( painCave.errMsg, |
| 299 |
< |
"Duplicate TraPPE_Ex bend type \"%s - %s - %s\" found in " |
| 300 |
< |
"the TraPPE_ExFF param file./n", |
| 299 |
> |
"Duplicate DUFF bend type \"%s - %s - %s\" found in " |
| 300 |
> |
"the DUFF param file./n", |
| 301 |
|
nameA, nameB, nameC ); |
| 302 |
|
painCave.isFatal = 1; |
| 303 |
|
simError(); |
| 381 |
|
|
| 382 |
|
if(dup){ |
| 383 |
|
sprintf( painCave.errMsg, |
| 384 |
< |
"Duplicate TraPPE_Ex torsion type \"%s - %s - %s - %s\" found in " |
| 385 |
< |
"the TraPPE_ExFF param file./n", nameA, nameB, nameC, nameD ); |
| 384 |
> |
"Duplicate DUFF torsion type \"%s - %s - %s - %s\" found in " |
| 385 |
> |
"the DUFF param file./n", nameA, nameB, nameC, nameD ); |
| 386 |
|
painCave.isFatal = 1; |
| 387 |
|
simError(); |
| 388 |
|
} |
| 442 |
|
|
| 443 |
|
} // namespace |
| 444 |
|
|
| 445 |
< |
using namespace TPE; |
| 445 |
> |
using namespace DUFF_NS; |
| 446 |
|
|
| 447 |
|
|
| 448 |
|
//**************************************************************** |
| 450 |
|
//**************************************************************** |
| 451 |
|
|
| 452 |
|
|
| 453 |
< |
TraPPE_ExFF::TraPPE_ExFF(){ |
| 453 |
> |
DUFF::DUFF(){ |
| 454 |
|
|
| 455 |
|
char fileName[200]; |
| 456 |
|
char* ffPath_env = "FORCE_PARAM_PATH"; |
| 457 |
|
char* ffPath; |
| 458 |
|
char temp[200]; |
| 427 |
– |
char errMsg[1000]; |
| 459 |
|
|
| 460 |
|
headAtomType = NULL; |
| 461 |
|
currentAtomType = NULL; |
| 477 |
|
// Init the atomStruct mpi type |
| 478 |
|
|
| 479 |
|
atomStruct atomProto; // mpiPrototype |
| 480 |
< |
int atomBC[3] = {15,6,4}; // block counts |
| 480 |
> |
int atomBC[3] = {15,12,5}; // block counts |
| 481 |
|
MPI_Aint atomDspls[3]; // displacements |
| 482 |
|
MPI_Datatype atomMbrTypes[3]; // member mpi types |
| 483 |
|
|
| 499 |
|
// Init the bondStruct mpi type |
| 500 |
|
|
| 501 |
|
bondStruct bondProto; // mpiPrototype |
| 502 |
< |
int bondBC[3] = {60,1,1}; // block counts |
| 502 |
> |
int bondBC[3] = {30,2,2}; // block counts |
| 503 |
|
MPI_Aint bondDspls[3]; // displacements |
| 504 |
|
MPI_Datatype bondMbrTypes[3]; // member mpi types |
| 505 |
|
|
| 568 |
|
|
| 569 |
|
// generate the force file name |
| 570 |
|
|
| 571 |
< |
strcpy( fileName, "TraPPE_Ex.frc" ); |
| 571 |
> |
strcpy( fileName, "DUFF.frc" ); |
| 572 |
|
// fprintf( stderr,"Trying to open %s\n", fileName ); |
| 573 |
|
|
| 574 |
|
// attempt to open the file in the current directory first. |
| 607 |
|
#ifdef IS_MPI |
| 608 |
|
} |
| 609 |
|
|
| 610 |
< |
sprintf( checkPointMsg, "TraPPE_ExFF file opened sucessfully." ); |
| 610 |
> |
sprintf( checkPointMsg, "DUFF file opened sucessfully." ); |
| 611 |
|
MPIcheckPoint(); |
| 612 |
|
|
| 613 |
|
#endif // is_mpi |
| 614 |
|
} |
| 615 |
|
|
| 616 |
|
|
| 617 |
< |
TraPPE_ExFF::~TraPPE_ExFF(){ |
| 617 |
> |
DUFF::~DUFF(){ |
| 618 |
|
|
| 619 |
|
if( headAtomType != NULL ) delete headAtomType; |
| 620 |
|
if( headBondType != NULL ) delete headBondType; |
| 632 |
|
#endif // is_mpi |
| 633 |
|
} |
| 634 |
|
|
| 635 |
< |
void TraPPE_ExFF::cleanMe( void ){ |
| 635 |
> |
void DUFF::cleanMe( void ){ |
| 636 |
|
|
| 637 |
|
#ifdef IS_MPI |
| 638 |
|
|
| 651 |
|
} |
| 652 |
|
|
| 653 |
|
|
| 654 |
< |
void TraPPE_ExFF::initForceField( int ljMixRule ){ |
| 654 |
> |
void DUFF::initForceField( int ljMixRule ){ |
| 655 |
|
|
| 656 |
|
initFortran( ljMixRule, entry_plug->useReactionField ); |
| 657 |
|
} |
| 658 |
|
|
| 659 |
|
|
| 660 |
< |
void TraPPE_ExFF::readParams( void ){ |
| 660 |
> |
void DUFF::readParams( void ){ |
| 661 |
|
|
| 631 |
– |
int i, a, b, c, d; |
| 662 |
|
int identNum; |
| 633 |
– |
char* atomA; |
| 634 |
– |
char* atomB; |
| 635 |
– |
char* atomC; |
| 636 |
– |
char* atomD; |
| 663 |
|
|
| 664 |
|
atomStruct atomInfo; |
| 665 |
|
bondStruct bondInfo; |
| 724 |
|
// send out the linked list to all the other processes |
| 725 |
|
|
| 726 |
|
sprintf( checkPointMsg, |
| 727 |
< |
"TraPPE_ExFF atom structures read successfully." ); |
| 727 |
> |
"DUFF atom structures read successfully." ); |
| 728 |
|
MPIcheckPoint(); |
| 729 |
|
|
| 730 |
|
currentAtomType = headAtomType->next; //skip the first element who is a place holder. |
| 731 |
|
while( currentAtomType != NULL ){ |
| 732 |
|
currentAtomType->duplicate( atomInfo ); |
| 733 |
|
|
| 708 |
– |
|
| 709 |
– |
|
| 734 |
|
sendFrcStruct( &atomInfo, mpiAtomStructType ); |
| 735 |
|
|
| 736 |
|
sprintf( checkPointMsg, |
| 737 |
< |
"successfully sent TraPPE_Ex force type: \"%s\"\n", |
| 737 |
> |
"successfully sent DUFF force type: \"%s\"\n", |
| 738 |
|
atomInfo.name ); |
| 739 |
|
MPIcheckPoint(); |
| 740 |
|
|
| 748 |
|
else{ |
| 749 |
|
|
| 750 |
|
// listen for node 0 to send out the force params |
| 751 |
< |
|
| 751 |
> |
|
| 752 |
|
MPIcheckPoint(); |
| 753 |
|
|
| 754 |
|
headAtomType = new LinkedAtomType; |
| 756 |
|
|
| 757 |
|
while( !atomInfo.last ){ |
| 758 |
|
|
| 735 |
– |
|
| 736 |
– |
|
| 759 |
|
headAtomType->add( atomInfo ); |
| 760 |
|
|
| 761 |
|
MPIcheckPoint(); |
| 776 |
|
|
| 777 |
|
int isGB = 0; |
| 778 |
|
int isLJ = 1; |
| 779 |
< |
double GB_dummy = 0.0; |
| 780 |
< |
|
| 781 |
< |
|
| 779 |
> |
int isEAM =0; |
| 780 |
> |
int isCharge = 0; |
| 781 |
> |
double charge=0.0; |
| 782 |
> |
|
| 783 |
|
currentAtomType = headAtomType->next;; |
| 784 |
|
while( currentAtomType != NULL ){ |
| 785 |
|
|
| 786 |
< |
if(currentAtomType->isDipole) entry_plug->useDipole = 1; |
| 786 |
> |
if(currentAtomType->isDipole) entry_plug->useDipoles = 1; |
| 787 |
|
if(currentAtomType->isSSD) { |
| 788 |
|
entry_plug->useSticky = 1; |
| 789 |
< |
set_sticky_params( &(currentAtomType->w0), &(currentAtomType->v0)); |
| 789 |
> |
set_sticky_params( &(currentAtomType->w0), &(currentAtomType->v0), |
| 790 |
> |
&(currentAtomType->v0p), |
| 791 |
> |
&(currentAtomType->rl), &(currentAtomType->ru), |
| 792 |
> |
&(currentAtomType->rlp), &(currentAtomType->rup)); |
| 793 |
|
} |
| 794 |
|
|
| 795 |
|
if( currentAtomType->name[0] != '\0' ){ |
| 799 |
|
&(currentAtomType->isSSD), |
| 800 |
|
&(currentAtomType->isDipole), |
| 801 |
|
&isGB, |
| 802 |
+ |
&isEAM, |
| 803 |
+ |
&isCharge, |
| 804 |
|
&(currentAtomType->epslon), |
| 805 |
|
&(currentAtomType->sigma), |
| 806 |
+ |
&charge, |
| 807 |
|
&(currentAtomType->dipole), |
| 808 |
|
&isError ); |
| 809 |
|
if( isError ){ |
| 819 |
|
|
| 820 |
|
#ifdef IS_MPI |
| 821 |
|
sprintf( checkPointMsg, |
| 822 |
< |
"TraPPE_ExFF atom structures successfully sent to fortran\n" ); |
| 822 |
> |
"DUFF atom structures successfully sent to fortran\n" ); |
| 823 |
|
MPIcheckPoint(); |
| 824 |
|
#endif // is_mpi |
| 825 |
|
|
| 873 |
|
// send out the linked list to all the other processes |
| 874 |
|
|
| 875 |
|
sprintf( checkPointMsg, |
| 876 |
< |
"TraPPE_Ex bond structures read successfully." ); |
| 876 |
> |
"DUFF bond structures read successfully." ); |
| 877 |
|
MPIcheckPoint(); |
| 878 |
|
|
| 879 |
|
currentBondType = headBondType->next; |
| 903 |
|
} |
| 904 |
|
|
| 905 |
|
sprintf( checkPointMsg, |
| 906 |
< |
"TraPPE_ExFF bond structures broadcast successfully." ); |
| 906 |
> |
"DUFF bond structures broadcast successfully." ); |
| 907 |
|
MPIcheckPoint(); |
| 908 |
|
|
| 909 |
|
#endif // is_mpi |
| 956 |
|
// send out the linked list to all the other processes |
| 957 |
|
|
| 958 |
|
sprintf( checkPointMsg, |
| 959 |
< |
"TraPPE_Ex bend structures read successfully." ); |
| 959 |
> |
"DUFF bend structures read successfully." ); |
| 960 |
|
MPIcheckPoint(); |
| 961 |
|
|
| 962 |
|
currentBendType = headBendType->next; |
| 986 |
|
} |
| 987 |
|
|
| 988 |
|
sprintf( checkPointMsg, |
| 989 |
< |
"TraPPE_ExFF bend structures broadcast successfully." ); |
| 989 |
> |
"DUFF bend structures broadcast successfully." ); |
| 990 |
|
MPIcheckPoint(); |
| 991 |
|
|
| 992 |
|
#endif // is_mpi |
| 1041 |
|
// send out the linked list to all the other processes |
| 1042 |
|
|
| 1043 |
|
sprintf( checkPointMsg, |
| 1044 |
< |
"TraPPE_Ex torsion structures read successfully." ); |
| 1044 |
> |
"DUFF torsion structures read successfully." ); |
| 1045 |
|
MPIcheckPoint(); |
| 1046 |
|
|
| 1047 |
|
currentTorsionType = headTorsionType->next; |
| 1071 |
|
} |
| 1072 |
|
|
| 1073 |
|
sprintf( checkPointMsg, |
| 1074 |
< |
"TraPPE_ExFF torsion structures broadcast successfully." ); |
| 1074 |
> |
"DUFF torsion structures broadcast successfully." ); |
| 1075 |
|
MPIcheckPoint(); |
| 1076 |
|
|
| 1077 |
|
#endif // is_mpi |
| 1081 |
|
|
| 1082 |
|
|
| 1083 |
|
|
| 1084 |
< |
void TraPPE_ExFF::initializeAtoms( int nAtoms, Atom** the_atoms ){ |
| 1084 |
> |
void DUFF::initializeAtoms( int nAtoms, Atom** the_atoms ){ |
| 1085 |
|
|
| 1086 |
|
|
| 1087 |
|
////////////////////////////////////////////////// |
| 1170 |
|
else{ |
| 1171 |
|
|
| 1172 |
|
sprintf( painCave.errMsg, |
| 1173 |
< |
"TraPPE_ExFF error: Atom \"%s\" is a dipole, yet no standard" |
| 1173 |
> |
"DUFF error: Atom \"%s\" is a dipole, yet no standard" |
| 1174 |
|
" orientation was specifed in the BASS file.\n", |
| 1175 |
|
currentAtomType->name ); |
| 1176 |
|
painCave.isFatal = 1; |
| 1180 |
|
else{ |
| 1181 |
|
if( the_atoms[i]->isDirectional() ){ |
| 1182 |
|
sprintf( painCave.errMsg, |
| 1183 |
< |
"TraPPE_ExFF error: Atom \"%s\" was given a standard" |
| 1183 |
> |
"DUFF error: Atom \"%s\" was given a standard" |
| 1184 |
|
"orientation in the BASS file, yet it is not a dipole.\n", |
| 1185 |
|
currentAtomType->name); |
| 1186 |
|
painCave.isFatal = 1; |
| 1190 |
|
} |
| 1191 |
|
} |
| 1192 |
|
|
| 1193 |
< |
void TraPPE_ExFF::initializeBonds( int nBonds, Bond** bondArray, |
| 1193 |
> |
void DUFF::initializeBonds( int nBonds, Bond** bondArray, |
| 1194 |
|
bond_pair* the_bonds ){ |
| 1195 |
|
int i,a,b; |
| 1196 |
|
char* atomA; |
| 1218 |
|
simError(); |
| 1219 |
|
} |
| 1220 |
|
|
| 1221 |
< |
if( !strcmp( currentBondType->type, "fixed" ) ){ |
| 1222 |
< |
|
| 1221 |
> |
switch( currentBondType->type ){ |
| 1222 |
> |
|
| 1223 |
> |
case FIXED_BOND: |
| 1224 |
> |
|
| 1225 |
|
bondArray[i] = new ConstrainedBond( *the_atoms[a], |
| 1226 |
|
*the_atoms[b], |
| 1227 |
|
currentBondType->d0 ); |
| 1228 |
|
entry_plug->n_constraints++; |
| 1229 |
+ |
break; |
| 1230 |
+ |
|
| 1231 |
+ |
case HARMONIC_BOND: |
| 1232 |
+ |
|
| 1233 |
+ |
bondArray[i] = new HarmonicBond( *the_atoms[a], |
| 1234 |
+ |
*the_atoms[b], |
| 1235 |
+ |
currentBondType->d0, |
| 1236 |
+ |
currentBondType->k0 ); |
| 1237 |
+ |
break; |
| 1238 |
+ |
|
| 1239 |
+ |
default: |
| 1240 |
+ |
|
| 1241 |
+ |
break; |
| 1242 |
+ |
// do nothing |
| 1243 |
|
} |
| 1244 |
|
} |
| 1245 |
|
} |
| 1246 |
|
|
| 1247 |
< |
void TraPPE_ExFF::initializeBends( int nBends, Bend** bendArray, |
| 1247 |
> |
void DUFF::initializeBends( int nBends, Bend** bendArray, |
| 1248 |
|
bend_set* the_bends ){ |
| 1249 |
|
|
| 1250 |
|
QuadraticBend* qBend; |
| 1304 |
|
} |
| 1305 |
|
|
| 1306 |
|
gBend = new GhostBend( *the_atoms[a], |
| 1307 |
< |
*the_atoms[b] ); |
| 1307 |
> |
*the_atoms[b]); |
| 1308 |
> |
|
| 1309 |
|
gBend->setConstants( currentBendType->k1, |
| 1310 |
|
currentBendType->k2, |
| 1311 |
|
currentBendType->k3, |
| 1321 |
|
currentBendType->k3, |
| 1322 |
|
currentBendType->t0 ); |
| 1323 |
|
bendArray[i] = qBend; |
| 1324 |
< |
} |
| 1324 |
> |
} |
| 1325 |
|
} |
| 1326 |
|
} |
| 1327 |
|
} |
| 1328 |
|
|
| 1329 |
< |
void TraPPE_ExFF::initializeTorsions( int nTorsions, Torsion** torsionArray, |
| 1329 |
> |
void DUFF::initializeTorsions( int nTorsions, Torsion** torsionArray, |
| 1330 |
|
torsion_set* the_torsions ){ |
| 1331 |
|
|
| 1332 |
|
int i, a, b, c, d; |
| 1373 |
|
} |
| 1374 |
|
} |
| 1375 |
|
|
| 1376 |
< |
void TraPPE_ExFF::fastForward( char* stopText, char* searchOwner ){ |
| 1376 |
> |
void DUFF::fastForward( char* stopText, char* searchOwner ){ |
| 1377 |
|
|
| 1378 |
|
int foundText = 0; |
| 1379 |
|
char* the_token; |
| 1428 |
|
} |
| 1429 |
|
|
| 1430 |
|
|
| 1431 |
< |
int TPE::parseAtom( char *lineBuffer, int lineNum, atomStruct &info ){ |
| 1431 |
> |
int DUFF_NS::parseAtom( char *lineBuffer, int lineNum, atomStruct &info ){ |
| 1432 |
|
|
| 1433 |
|
char* the_token; |
| 1434 |
|
|
| 1514 |
|
} |
| 1515 |
|
|
| 1516 |
|
info.v0 = atof( the_token ); |
| 1517 |
+ |
if( ( the_token = strtok( NULL, " \n\t,;" ) ) == NULL ){ |
| 1518 |
+ |
sprintf( painCave.errMsg, |
| 1519 |
+ |
"Error parseing AtomTypes: line %d\n", lineNum ); |
| 1520 |
+ |
painCave.isFatal = 1; |
| 1521 |
+ |
simError(); |
| 1522 |
+ |
} |
| 1523 |
+ |
|
| 1524 |
+ |
info.v0p = atof( the_token ); |
| 1525 |
+ |
|
| 1526 |
+ |
if( ( the_token = strtok( NULL, " \n\t,;" ) ) == NULL ){ |
| 1527 |
+ |
sprintf( painCave.errMsg, |
| 1528 |
+ |
"Error parseing AtomTypes: line %d\n", lineNum ); |
| 1529 |
+ |
painCave.isFatal = 1; |
| 1530 |
+ |
simError(); |
| 1531 |
+ |
} |
| 1532 |
+ |
|
| 1533 |
+ |
info.rl = atof( the_token ); |
| 1534 |
+ |
|
| 1535 |
+ |
if( ( the_token = strtok( NULL, " \n\t,;" ) ) == NULL ){ |
| 1536 |
+ |
sprintf( painCave.errMsg, |
| 1537 |
+ |
"Error parseing AtomTypes: line %d\n", lineNum ); |
| 1538 |
+ |
painCave.isFatal = 1; |
| 1539 |
+ |
simError(); |
| 1540 |
+ |
} |
| 1541 |
+ |
|
| 1542 |
+ |
info.ru = atof( the_token ); |
| 1543 |
+ |
|
| 1544 |
+ |
if( ( the_token = strtok( NULL, " \n\t,;" ) ) == NULL ){ |
| 1545 |
+ |
sprintf( painCave.errMsg, |
| 1546 |
+ |
"Error parseing AtomTypes: line %d\n", lineNum ); |
| 1547 |
+ |
painCave.isFatal = 1; |
| 1548 |
+ |
simError(); |
| 1549 |
+ |
} |
| 1550 |
+ |
|
| 1551 |
+ |
info.rlp = atof( the_token ); |
| 1552 |
+ |
|
| 1553 |
+ |
if( ( the_token = strtok( NULL, " \n\t,;" ) ) == NULL ){ |
| 1554 |
+ |
sprintf( painCave.errMsg, |
| 1555 |
+ |
"Error parseing AtomTypes: line %d\n", lineNum ); |
| 1556 |
+ |
painCave.isFatal = 1; |
| 1557 |
+ |
simError(); |
| 1558 |
+ |
} |
| 1559 |
+ |
|
| 1560 |
+ |
info.rup = atof( the_token ); |
| 1561 |
|
} |
| 1562 |
< |
else info.v0 = info.w0 = 0.0; |
| 1562 |
> |
else info.v0 = info.w0 = info.v0p = info.rl = info.ru = info.rlp = info.rup = 0.0; |
| 1563 |
|
|
| 1564 |
|
return 1; |
| 1565 |
|
} |
| 1566 |
|
else return 0; |
| 1567 |
|
} |
| 1568 |
|
|
| 1569 |
< |
int TPE::parseBond( char *lineBuffer, int lineNum, bondStruct &info ){ |
| 1569 |
> |
int DUFF_NS::parseBond( char *lineBuffer, int lineNum, bondStruct &info ){ |
| 1570 |
|
|
| 1571 |
|
char* the_token; |
| 1572 |
+ |
char bondType[30]; |
| 1573 |
|
|
| 1574 |
|
the_token = strtok( lineBuffer, " \n\t,;" ); |
| 1575 |
|
if( the_token != NULL ){ |
| 1592 |
|
simError(); |
| 1593 |
|
} |
| 1594 |
|
|
| 1595 |
< |
strcpy( info.type, the_token ); |
| 1595 |
> |
strcpy( bondType, the_token ); |
| 1596 |
|
|
| 1597 |
< |
if( !strcmp( info.type, "fixed" ) ){ |
| 1597 |
> |
if( !strcmp( bondType, "fixed" ) ){ |
| 1598 |
> |
info.type = FIXED_BOND; |
| 1599 |
> |
|
| 1600 |
> |
if( ( the_token = strtok( NULL, " \n\t,;" ) ) == NULL ){ |
| 1601 |
> |
sprintf( painCave.errMsg, |
| 1602 |
> |
"Error parseing BondTypes: line %d\n", lineNum ); |
| 1603 |
> |
painCave.isFatal = 1; |
| 1604 |
> |
simError(); |
| 1605 |
> |
} |
| 1606 |
> |
|
| 1607 |
> |
info.d0 = atof( the_token ); |
| 1608 |
> |
|
| 1609 |
> |
info.k0=0.0; |
| 1610 |
> |
} |
| 1611 |
> |
else if( !strcmp( bondType, "harmonic" ) ){ |
| 1612 |
> |
info.type = HARMONIC_BOND; |
| 1613 |
> |
|
| 1614 |
|
if( ( the_token = strtok( NULL, " \n\t,;" ) ) == NULL ){ |
| 1615 |
|
sprintf( painCave.errMsg, |
| 1616 |
|
"Error parseing BondTypes: line %d\n", lineNum ); |
| 1619 |
|
} |
| 1620 |
|
|
| 1621 |
|
info.d0 = atof( the_token ); |
| 1622 |
+ |
|
| 1623 |
+ |
if( ( the_token = strtok( NULL, " \n\t,;" ) ) == NULL ){ |
| 1624 |
+ |
sprintf( painCave.errMsg, |
| 1625 |
+ |
"Error parseing BondTypes: line %d\n", lineNum ); |
| 1626 |
+ |
painCave.isFatal = 1; |
| 1627 |
+ |
simError(); |
| 1628 |
+ |
} |
| 1629 |
+ |
|
| 1630 |
+ |
info.k0 = atof( the_token ); |
| 1631 |
|
} |
| 1632 |
+ |
|
| 1633 |
|
else{ |
| 1634 |
|
sprintf( painCave.errMsg, |
| 1635 |
< |
"Unknown TraPPE_Ex bond type \"%s\" at line %d\n", |
| 1636 |
< |
info.type, |
| 1635 |
> |
"Unknown DUFF bond type \"%s\" at line %d\n", |
| 1636 |
> |
bondType, |
| 1637 |
|
lineNum ); |
| 1638 |
|
painCave.isFatal = 1; |
| 1639 |
|
simError(); |
| 1645 |
|
} |
| 1646 |
|
|
| 1647 |
|
|
| 1648 |
< |
int TPE::parseBend( char *lineBuffer, int lineNum, bendStruct &info ){ |
| 1648 |
> |
int DUFF_NS::parseBend( char *lineBuffer, int lineNum, bendStruct &info ){ |
| 1649 |
|
|
| 1650 |
|
char* the_token; |
| 1651 |
|
|
| 1721 |
|
|
| 1722 |
|
else{ |
| 1723 |
|
sprintf( painCave.errMsg, |
| 1724 |
< |
"Unknown TraPPE_Ex bend type \"%s\" at line %d\n", |
| 1724 |
> |
"Unknown DUFF bend type \"%s\" at line %d\n", |
| 1725 |
|
info.type, |
| 1726 |
|
lineNum ); |
| 1727 |
|
painCave.isFatal = 1; |
| 1733 |
|
else return 0; |
| 1734 |
|
} |
| 1735 |
|
|
| 1736 |
< |
int TPE::parseTorsion( char *lineBuffer, int lineNum, torsionStruct &info ){ |
| 1736 |
> |
int DUFF_NS::parseTorsion( char *lineBuffer, int lineNum, torsionStruct &info ){ |
| 1737 |
|
|
| 1738 |
|
char* the_token; |
| 1739 |
|
|
| 1819 |
|
|
| 1820 |
|
else{ |
| 1821 |
|
sprintf( painCave.errMsg, |
| 1822 |
< |
"Unknown TraPPE_Ex torsion type \"%s\" at line %d\n", |
| 1822 |
> |
"Unknown DUFF torsion type \"%s\" at line %d\n", |
| 1823 |
|
info.type, |
| 1824 |
|
lineNum ); |
| 1825 |
|
painCave.isFatal = 1; |