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 988 by gezelter, Tue Jan 27 19:37:48 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 260 | Line 263 | int MakeStamps::rigidBodyAssign( event* the_event ){
263    return 0;
264   }
265  
266 < int MakeStamps::rigidBodyMember( event* the_event ){
266 > int MakeStamps::rigidBodyMembers( event* the_event ){
267  
268 <  current_member = new MemberStamp;
269 <  
270 <  the_event->err_msg = current_rigidbody->addMember( current_member,
271 <                                                     the_event->evt.blk_index );
272 <  
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 ){
287 >
288 >  the_event->err_msg = current_rigidbody->checkMe();
289    if( the_event->err_msg != NULL ) return 0;
290 +  
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::rigidBodyEnd( event* the_event ){
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 <  the_event->err_msg = current_rigidbody->checkMe();
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;
# Line 302 | 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 396 | 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 460 | 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 524 | 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 544 | Line 666 | int MakeStamps::torsionEnd( event* the_event ){
666    
667    return 1;
668   }
547
548 int MakeStamps::newMember( event* the_event ){
549  
550  current_member = new MemberStamp;
551  
552  the_event->err_msg = current_rigidbody->addMember( current_member,
553                                                     the_event->evt.blk_index );
554  if( the_event->err_msg != NULL ) return 0;
555  
556  return 1;
557 }
558
559 int MakeStamps::memberAssign( event* the_event ){
560  
561  switch( the_event->evt.asmt.asmt_type ){
562    
563  case STRING:
564    current_member->assignString( the_event->evt.asmt.lhs,
565                                  the_event->evt.asmt.rhs.sval );
566    return 1;
567    break;
568    
569  case DOUBLE:
570    current_member->assignDouble( the_event->evt.asmt.lhs,
571                                  the_event->evt.asmt.rhs.dval );
572    return 1;
573    break;
574    
575  case INT:
576    current_member->assignInt( the_event->evt.asmt.lhs,
577                               the_event->evt.asmt.rhs.ival );
578    return 1;
579    break;
580    
581  default:
582    the_event->err_msg = strdup( "MakeStamp error. Invalid member"
583                                 " assignment type" );
584    return 0;
585    break;
586  }
587  return 0;
588 }
589
590 int MakeStamps::memberEnd( event* the_event ){
591  
592  the_event->err_msg = current_member->checkMe();
593  if( the_event->err_msg != NULL ) return 0;
594  
595  return 1;
596 }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines