ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/DUFF.cpp
(Generate patch)

Comparing trunk/OOPSE/libmdtools/DUFF.cpp (file contents):
Revision 561 by mmeineke, Fri Jun 20 20:29:36 2003 UTC vs.
Revision 564 by mmeineke, Tue Jun 24 19:57:54 2003 UTC

# Line 15 | Line 15 | namespace TPE {  // restrict the access of the folowin
15   #include "mpiForceField.h"
16   #endif // is_mpi
17  
18 +
19 + // define some bond Types
20 +
21 + #define FIXED_BOND    0
22 + #define HARMONIC_BOND 1
23 +
24 +
25   namespace TPE {  // restrict the access of the folowing to this file only.
26  
27  
# Line 39 | Line 46 | namespace TPE {  // restrict the access of the folowin
46    typedef struct{
47      char nameA[15];
48      char nameB[15];
42    char type[30];
49      double d0;
50 +    double k0;
51      int last;      //  0  -> default
52                     //  1  -> tells nodes to stop listening
53 +    int type;
54    } bondStruct;
55    
56    
# Line 172 | Line 180 | namespace TPE {  // restrict the access of the folowin
180        next = NULL;
181        nameA[0] = '\0';
182        nameB[0] = '\0';
175      type[0] = '\0';
183      }
184      ~LinkedBondType(){ if( next != NULL ) delete next; }
185  
# Line 207 | Line 214 | namespace TPE {  // restrict the access of the folowin
214          next = new LinkedBondType();
215          strcpy(next->nameA, info.nameA);
216          strcpy(next->nameB, info.nameB);
217 <        strcpy(next->type,  info.type);
217 >        next->type = info.type;
218          next->d0 = info.d0;
219 +        next->k0 = info.k0;
220        }
221      }
222      
# Line 216 | Line 224 | namespace TPE {  // restrict the access of the folowin
224      void duplicate( bondStruct &info ){
225        strcpy(info.nameA, nameA);
226        strcpy(info.nameB, nameB);
227 <      strcpy(info.type,  type);
227 >      info.type = type;
228        info.d0   = d0;
229 +      info.k0   = k0;
230        info.last = 0;
231      }
232  
# Line 226 | Line 235 | namespace TPE {  // restrict the access of the folowin
235  
236      char nameA[15];
237      char nameB[15];
238 <    char type[30];
238 >    int type;
239      double d0;
240 +    double k0;
241  
242      LinkedBondType* next;
243    };
# Line 468 | Line 478 | DUFF::DUFF(){
478    // Init the bondStruct mpi type
479    
480    bondStruct bondProto; // mpiPrototype
481 <  int bondBC[3] = {60,1,1};  // block counts
481 >  int bondBC[3] = {30,2,2};  // block counts
482    MPI_Aint bondDspls[3];           // displacements
483    MPI_Datatype bondMbrTypes[3];    // member mpi types
484    
# Line 1189 | Line 1199 | void DUFF::initializeBonds( int nBonds, Bond** bondArr
1199        simError();
1200      }
1201      
1202 <    if( !strcmp( currentBondType->type, "fixed" ) ){
1203 <      
1202 >    switch( currentBondType->type ){
1203 >
1204 >    case FIXED_BOND:
1205 >            
1206        bondArray[i] = new ConstrainedBond( *the_atoms[a],
1207                                            *the_atoms[b],
1208                                            currentBondType->d0 );
1209        entry_plug->n_constraints++;
1210 +      break;
1211 +
1212 +    case HARMONIC_BOND:
1213 +      
1214 +      bondArray[i] = new HarmonicBond( *the_atoms[a],
1215 +                                       *the_atoms[b],
1216 +                                       currentBondType->d0,
1217 +                                       currentBondType->k0 );
1218 +      break;
1219 +      
1220 +    default:
1221 +
1222 +      break;
1223 +      // do nothing
1224      }
1225    }
1226   }
# Line 1479 | Line 1505 | int TPE::parseBond( char *lineBuffer, int lineNum, bon
1505   int TPE::parseBond( char *lineBuffer, int lineNum, bondStruct &info ){
1506  
1507    char* the_token;
1508 +  char bondType[30];
1509    
1510    the_token = strtok( lineBuffer, " \n\t,;" );
1511    if( the_token != NULL ){
# Line 1501 | Line 1528 | int TPE::parseBond( char *lineBuffer, int lineNum, bon
1528        simError();
1529      }
1530      
1531 <    strcpy( info.type, the_token );
1531 >    strcpy( bondType, the_token );
1532      
1533 <    if( !strcmp( info.type, "fixed" ) ){
1533 >    if( !strcmp( bondType, "fixed" ) ){
1534 >      info.type = FIXED_BOND;
1535 >      
1536 >      if( ( the_token = strtok( NULL, " \n\t,;" ) ) == NULL ){
1537 >        sprintf( painCave.errMsg,
1538 >                 "Error parseing BondTypes: line %d\n", lineNum );
1539 >        painCave.isFatal = 1;
1540 >        simError();
1541 >      }
1542 >      
1543 >      info.d0 = atof( the_token );
1544 >    }
1545 >    else if( !strcmp( bondType, "harmonic" ) ){
1546 >      info.type = HARMONIC_BOND;
1547 >      
1548        if( ( the_token = strtok( NULL, " \n\t,;" ) ) == NULL ){
1549          sprintf( painCave.errMsg,
1550                   "Error parseing BondTypes: line %d\n", lineNum );
# Line 1512 | Line 1553 | int TPE::parseBond( char *lineBuffer, int lineNum, bon
1553        }
1554        
1555        info.d0 = atof( the_token );
1556 +
1557 +      if( ( the_token = strtok( NULL, " \n\t,;" ) ) == NULL ){
1558 +        sprintf( painCave.errMsg,
1559 +                 "Error parseing BondTypes: line %d\n", lineNum );
1560 +        painCave.isFatal = 1;
1561 +        simError();
1562 +      }
1563 +      
1564 +      info.k0 = atof( the_token );
1565      }
1566 +
1567      else{
1568        sprintf( painCave.errMsg,
1569                 "Unknown DUFF bond type \"%s\" at line %d\n",

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines