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

Comparing trunk/OOPSE/libBASS/MoleculeStamp.cpp (file contents):
Revision 957 by gezelter, Mon Jan 19 16:08:21 2004 UTC vs.
Revision 1113 by tim, Thu Apr 15 16:18:26 2004 UTC

# Line 14 | Line 14 | MoleculeStamp::MoleculeStamp(){
14    n_bends = 0;
15    n_torsions = 0;
16    n_rigidbodies = 0;
17 +  n_integrable = 0;
18  
19    unhandled = NULL;
20    atoms = NULL;
# Line 81 | Line 82 | char* MoleculeStamp::assignDouble( char* lhs, double r
82      if( have_atoms ){
83        sprintf( errMsg,
84                 "MoleculeStamp error, n_atoms already declared"
85 <               "for molecule: %s\n",
85 >               " for molecule: %s\n",
86                 name);
87        return strdup( errMsg );
88      }
# Line 246 | Line 247 | char* MoleculeStamp::addAtom( AtomStamp* the_atom, int
247   char* MoleculeStamp::addAtom( AtomStamp* the_atom, int atomIndex ){
248    
249    if( have_atoms && atomIndex < n_atoms ) atoms[atomIndex] = the_atom;
250 <  else{
250 >  else {
251      if( have_atoms ){
252        sprintf( errMsg, "MoleculeStamp error, %d out of nAtoms range",
253                 atomIndex );
254        return strdup( errMsg );
255      }
256      else return strdup("MoleculeStamp error, nAtoms not given before"
257 <                       "first atom declaration." );
257 >                       " first atom declaration." );
258    }
259  
260    return NULL;
# Line 264 | Line 265 | char* MoleculeStamp::addRigidBody( RigidBodyStamp* the
265    
266    if( have_rigidbodies && rigidBodyIndex < n_rigidbodies )
267      rigidBodies[rigidBodyIndex] = the_rigidbody;
268 <  else{
268 >  else {
269      if( have_rigidbodies ){
270        sprintf( errMsg, "MoleculeStamp error, %d out of nRigidBodies range",
271                 rigidBodyIndex );
272        return strdup( errMsg );
273      }
274      else return strdup("MoleculeStamp error, nRigidBodies not given before"
275 <                       "first rigidBody declaration." );
275 >                       " first rigidBody declaration." );
276    }
277    
278    return NULL;
# Line 333 | Line 334 | char* MoleculeStamp::checkMe( void ){
334    
335    int i;
336    short int no_atom, no_rigidbody;
336
337  // Fix for Rigid Bodies!!!  Molecules may not have any atoms that
338  // they know about.  They might have only rigid bodies (which then
339  // know about the atoms!
340  
337  
338    if( !have_name ) return strdup( "MoleculeStamp error. Molecule's name"
339                                    " was not given.\n" );
340 <
341 <  if( !have_rigidbodies && !have_atoms ){
342 <    return strdup( "MoleculeStamp error. Molecule contains no atoms or RigidBodies." );
340 >  
341 >  if( !have_atoms ){
342 >    return strdup( "MoleculeStamp error. Molecule contains no atoms." );
343    }
344    
345    no_rigidbody = 0;
# Line 369 | Line 365 | char* MoleculeStamp::checkMe( void ){
365               " declared in molecule \"%s\".\n", name );
366      return strdup( errMsg );
367    }
372
373  return NULL;
374 }
368  
369  
370 < int MoleculeStamp::getTotAtoms() {
371 <  int total_atoms;
372 <  int i;
373 <
374 <  total_atoms = n_atoms;
375 <
376 <  if( rigidBodies != NULL ) {
377 <    for( i=0; i<n_rigidbodies; i++ )
378 <      total_atoms += rigidBodies[i]->getNAtoms();
370 >  n_integrable = n_atoms;
371 >  for (i = 0; i < n_rigidbodies; i++)
372 >    n_integrable = n_integrable - rigidBodies[i]->getNMembers() + 1; //rigidbody is an integrable object
373 >  
374 >  if (n_integrable <= 0 || n_integrable > n_atoms) {
375 >    sprintf( errMsg,
376 >             "MoleculeStamp error. n_integrable is either <= 0 or"
377 >             " greater than n_atoms in molecule \"%s\".\n", name );
378 >    return strdup( errMsg );
379    }
380  
381 <  return total_atoms;
382 < }
390 <  
381 >  return NULL;
382 > }  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines