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

Comparing trunk/OOPSE/libBASS/MakeStamps.cpp (file contents):
Revision 993 by gezelter, Tue Jan 27 20:34:11 2004 UTC vs.
Revision 1256 by gezelter, Thu Jun 10 14:59:14 2004 UTC

# Line 5 | Line 5
5   #include "MakeStamps.hpp"
6   #include "MoleculeStamp.hpp"
7   #include "RigidBodyStamp.hpp"
8 + #include "CutoffGroupStamp.hpp"
9   #include "simError.h"
10   #ifdef IS_MPI
11   #include "mpiBASS.h"
# Line 216 | Line 217 | int MakeStamps::newRigidBody( event* the_event ){
217   int MakeStamps::newRigidBody( event* the_event ){
218    
219    current_rigidbody = new RigidBodyStamp;
220 +
221 +  printf("makeStamps rb index = %d\n", the_event->evt.blk_index);
222    
223    the_event->err_msg = current_mol->addRigidBody( current_rigidbody,
224                                                    the_event->evt.blk_index );
# Line 258 | Line 261 | int MakeStamps::rigidBodyAssign( event* the_event ){
261      break;
262    }
263    return 0;
264 + }
265 +
266 + int MakeStamps::rigidBodyMembers( event* the_event ){
267 +
268 +  int i;
269 +
270 +  if( the_event->evt.mbrs.nMembers > 0 ){
271 +
272 +    for (i = 0; i < the_event->evt.mbrs.nMembers; i++) {      
273 +      current_rigidbody->addMember(the_event->evt.mbrs.memberList[i]);
274 +    }
275 +    
276 +    return 1;
277 +    
278 +  } else {
279 +    the_event->err_msg = strdup( "MakeStamp error. No members in memberList "
280 +                                 " for this rigidBody.");
281 +    return 0;
282 +
283 +  }
284   }
285  
286   int MakeStamps::rigidBodyEnd( event* the_event ){
# Line 268 | Line 291 | int MakeStamps::rigidBodyEnd( event* the_event ){
291    return 1;
292   }
293  
294 + int MakeStamps::newCutoffGroup( event* the_event ){
295 +  
296 +  current_cutoffgroup = new CutoffGroupStamp;
297 +  
298 +  the_event->err_msg = current_mol->addCutoffGroup( current_cutoffgroup,
299 +                                                    the_event->evt.blk_index );
300 +  if( the_event->err_msg != NULL ) return 0;
301 +  return 1;
302 + }
303 +
304 + int MakeStamps::cutoffGroupAssign( event* the_event ){
305 +  
306 +  switch( the_event->evt.asmt.asmt_type ){
307 +    
308 +  case STRING:
309 +    the_event->err_msg =
310 +      current_cutoffgroup->assignString( the_event->evt.asmt.lhs,
311 +                                         the_event->evt.asmt.rhs.sval );
312 +    if( the_event->err_msg != NULL ) return 0;
313 +    return 1;
314 +    break;
315 +    
316 +  case DOUBLE:
317 +    the_event->err_msg =
318 +      current_cutoffgroup->assignDouble( the_event->evt.asmt.lhs,
319 +                                         the_event->evt.asmt.rhs.dval );
320 +    if( the_event->err_msg != NULL ) return 0;
321 +    return 1;    
322 +    break;
323 +    
324 +  case INT:
325 +    the_event->err_msg =
326 +      current_cutoffgroup->assignInt( the_event->evt.asmt.lhs,
327 +                                      the_event->evt.asmt.rhs.ival );
328 +    if( the_event->err_msg != NULL ) return 0;
329 +    return 1;
330 +    break;
331 +    
332 +  default:
333 +    the_event->err_msg = strdup( "MakeStamp error. Invalid CutoffGroup"
334 +                                 " assignment type" );
335 +    return 0;
336 +    break;
337 +  }
338 +  return 0;
339 + }
340 +
341 + int MakeStamps::cutoffGroupMembers( event* the_event ){
342 +
343 +  int i;
344 +  
345 +  if( the_event->evt.mbrs.nMembers > 0 ){
346 +    
347 +    for (i = 0; i < the_event->evt.mbrs.nMembers; i++) {      
348 +      current_cutoffgroup->addMember(the_event->evt.mbrs.memberList[i]);
349 +    }
350 +    
351 +    return 1;
352 +    
353 +  } else {
354 +    the_event->err_msg = strdup( "MakeStamp error. No members in memberList "
355 +                                 " for this CutoffGroup.");
356 +    return 0;
357 +
358 +  }
359 + }
360 +
361 + int MakeStamps::cutoffGroupEnd( event* the_event ){
362 +  
363 +  the_event->err_msg = current_cutoffgroup->checkMe();
364 +  if( the_event->err_msg != NULL ) return 0;
365 +  
366 +  return 1;
367 + }
368 +
369   int MakeStamps::newAtom( event* the_event ){
370    
371    current_atom = new AtomStamp;
# Line 290 | Line 388 | int MakeStamps::atomOrientation( event* the_event ){
388  
389   int MakeStamps::atomOrientation( event* the_event ){
390    
391 <  current_atom->setOrientation( the_event->evt.ornt.x,
392 <                                the_event->evt.ornt.y,
393 <                                the_event->evt.ornt.z );
391 >  current_atom->setOrientation( the_event->evt.ornt.phi,
392 >                                the_event->evt.ornt.theta,
393 >                                the_event->evt.ornt.psi );
394    return 1;
395   }
396  
# Line 384 | Line 482 | int MakeStamps::bondMembers( event* the_event ){
482   }
483  
484   int MakeStamps::bondMembers( event* the_event ){
485 +  
486 +  if( the_event->evt.mbrs.nMembers == 2 ){
487 +    
488 +    current_bond->members( the_event->evt.mbrs.memberList[0],
489 +                           the_event->evt.mbrs.memberList[1] );
490 +    return 1;
491  
492 <  current_bond->members( the_event->evt.mbrs.a,
493 <                         the_event->evt.mbrs.b );
494 <  return 1;
492 >  } else {
493 >    the_event->err_msg = strdup( "MakeStamp error. Wrong number of members "
494 >                                 " in bond");
495 >    return 0;
496 >
497 >  }
498 >
499   }
500  
501   int MakeStamps::bondConstraint( event* the_event ){
# Line 448 | Line 556 | int MakeStamps::bendMembers( event* the_event ){
556  
557   int MakeStamps::bendMembers( event* the_event ){
558  
559 <  current_bend->members( the_event->evt.mbrs.a,
560 <                         the_event->evt.mbrs.b,
561 <                         the_event->evt.mbrs.c );
562 <  return 1;
559 >
560 >  switch( the_event->evt.mbrs.nMembers ) {
561 >  case 3:
562 >    current_bend->members( the_event->evt.mbrs.memberList[0],
563 >                           the_event->evt.mbrs.memberList[1],
564 >                           the_event->evt.mbrs.memberList[2]);
565 >    return 1;
566 >    break;
567 >  case 2:
568 >    current_bend->members( the_event->evt.mbrs.memberList[0],
569 >                           the_event->evt.mbrs.memberList[1],
570 >                           0 );
571 >    return 1;
572 >    break;
573 >  default:      
574 >    the_event->err_msg = strdup( "MakeStamp error. Wrong number of members "
575 >                                 "in bend.");
576 >    return 0;
577 >    break;
578 >  }
579 >  return 0;
580   }
581  
582   int MakeStamps::bendConstraint( event* the_event ){
# Line 512 | Line 637 | int MakeStamps::torsionMembers( event* the_event ){
637  
638   int MakeStamps::torsionMembers( event* the_event ){
639  
640 <  current_torsion->members( the_event->evt.mbrs.a,
641 <                            the_event->evt.mbrs.b,
642 <                            the_event->evt.mbrs.c,
643 <                            the_event->evt.mbrs.d );
644 <  return 1;
640 >  if( the_event->evt.mbrs.nMembers == 4 ){
641 >    
642 >    current_torsion->members( the_event->evt.mbrs.memberList[0],
643 >                              the_event->evt.mbrs.memberList[1],
644 >                              the_event->evt.mbrs.memberList[2],
645 >                              the_event->evt.mbrs.memberList[3]);
646 >    return 1;
647 >    
648 >  } else {
649 >    the_event->err_msg = strdup( "MakeStamp error. Wrong number of members "
650 >                                 " in torsion");
651 >    return 0;
652 >
653 >  }
654   }
655  
656   int MakeStamps::torsionConstraint( event* the_event ){
# Line 532 | Line 666 | int MakeStamps::torsionEnd( event* the_event ){
666    
667    return 1;
668   }
535
536 int MakeStamps::newMember( event* the_event ){
537  
538  current_member = new MemberStamp;
539  
540  the_event->err_msg = current_rigidbody->addMember( current_member,
541                                                     the_event->evt.blk_index );
542  if( the_event->err_msg != NULL ) return 0;
543  
544  return 1;
545 }
546
547 int MakeStamps::memberAssign( event* the_event ){
548  
549  switch( the_event->evt.asmt.asmt_type ){
550    
551  case STRING:
552    current_member->assignString( the_event->evt.asmt.lhs,
553                                  the_event->evt.asmt.rhs.sval );
554    return 1;
555    break;
556    
557  case DOUBLE:
558    current_member->assignDouble( the_event->evt.asmt.lhs,
559                                  the_event->evt.asmt.rhs.dval );
560    return 1;
561    break;
562    
563  case INT:
564    current_member->assignInt( the_event->evt.asmt.lhs,
565                               the_event->evt.asmt.rhs.ival );
566    return 1;
567    break;
568    
569  default:
570    the_event->err_msg = strdup( "MakeStamp error. Invalid member"
571                                 " assignment type" );
572    return 0;
573    break;
574  }
575  return 0;
576 }
577
578 int MakeStamps::memberEnd( event* the_event ){
579  
580  the_event->err_msg = current_member->checkMe();
581  if( the_event->err_msg != NULL ) return 0;
582  
583  return 1;
584 }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines