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 1153 by gezelter, Tue May 11 04:21:52 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 260 | Line 261 | int MakeStamps::rigidBodyAssign( event* the_event ){
261    return 0;
262   }
263  
264 < int MakeStamps::rigidBodyMember( event* the_event ){
264 > int MakeStamps::rigidBodyMembers( event* the_event ){
265  
266 <  current_member = new MemberStamp;
267 <  
268 <  the_event->err_msg = current_rigidbody->addMember( current_member,
269 <                                                     the_event->evt.blk_index );
270 <  
266 >  int i;
267 >
268 >  if( the_event->evt.mbrs.nMembers > 0 ){
269 >
270 >    for (i = 0; i < the_event->evt.mbrs.nMembers; i++) {      
271 >      current_rigidbody->addMember(the_event->evt.mbrs.memberList[i]);
272 >    }
273 >    
274 >    return 1;
275 >    
276 >  } else {
277 >    the_event->err_msg = strdup( "MakeStamp error. No members in memberList "
278 >                                 " for this rigidBody.");
279 >    return 0;
280 >
281 >  }
282 > }
283 >
284 > int MakeStamps::rigidBodyEnd( event* the_event ){
285 >
286 >  the_event->err_msg = current_rigidbody->checkMe();
287    if( the_event->err_msg != NULL ) return 0;
288 +  
289    return 1;
290 + }
291 +
292 + int MakeStamps::newCutoffGroup( event* the_event ){
293    
294 +  current_cutoffgroup = new CutoffGroupStamp;
295 +  
296 +  the_event->err_msg = current_mol->addCutoffGroup( current_cutoffgroup,
297 +                                                    the_event->evt.blk_index );
298 +  if( the_event->err_msg != NULL ) return 0;
299 +  return 1;
300   }
301  
302 < int MakeStamps::rigidBodyEnd( event* the_event ){
302 > int MakeStamps::cutoffGroupAssign( event* the_event ){
303 >  
304 >  switch( the_event->evt.asmt.asmt_type ){
305 >    
306 >  case STRING:
307 >    the_event->err_msg =
308 >      current_cutoffgroup->assignString( the_event->evt.asmt.lhs,
309 >                                         the_event->evt.asmt.rhs.sval );
310 >    if( the_event->err_msg != NULL ) return 0;
311 >    return 1;
312 >    break;
313 >    
314 >  case DOUBLE:
315 >    the_event->err_msg =
316 >      current_cutoffgroup->assignDouble( the_event->evt.asmt.lhs,
317 >                                         the_event->evt.asmt.rhs.dval );
318 >    if( the_event->err_msg != NULL ) return 0;
319 >    return 1;    
320 >    break;
321 >    
322 >  case INT:
323 >    the_event->err_msg =
324 >      current_cutoffgroup->assignInt( the_event->evt.asmt.lhs,
325 >                                      the_event->evt.asmt.rhs.ival );
326 >    if( the_event->err_msg != NULL ) return 0;
327 >    return 1;
328 >    break;
329 >    
330 >  default:
331 >    the_event->err_msg = strdup( "MakeStamp error. Invalid CutoffGroup"
332 >                                 " assignment type" );
333 >    return 0;
334 >    break;
335 >  }
336 >  return 0;
337 > }
338  
339 <  the_event->err_msg = current_rigidbody->checkMe();
339 > int MakeStamps::cutoffGroupMembers( event* the_event ){
340 >
341 >  int i;
342 >  
343 >  if( the_event->evt.mbrs.nMembers > 0 ){
344 >    
345 >    for (i = 0; i < the_event->evt.mbrs.nMembers; i++) {      
346 >      current_cutoffgroup->addMember(the_event->evt.mbrs.memberList[i]);
347 >    }
348 >    
349 >    return 1;
350 >    
351 >  } else {
352 >    the_event->err_msg = strdup( "MakeStamp error. No members in memberList "
353 >                                 " for this CutoffGroup.");
354 >    return 0;
355 >
356 >  }
357 > }
358 >
359 > int MakeStamps::cutoffGroupEnd( event* the_event ){
360 >  
361 >  the_event->err_msg = current_cutoffgroup->checkMe();
362    if( the_event->err_msg != NULL ) return 0;
363    
364    return 1;
# Line 302 | Line 386 | int MakeStamps::atomOrientation( event* the_event ){
386  
387   int MakeStamps::atomOrientation( event* the_event ){
388    
389 <  current_atom->setOrientation( the_event->evt.ornt.x,
390 <                                the_event->evt.ornt.y,
391 <                                the_event->evt.ornt.z );
389 >  current_atom->setOrientation( the_event->evt.ornt.phi,
390 >                                the_event->evt.ornt.theta,
391 >                                the_event->evt.ornt.psi );
392    return 1;
393   }
394  
# Line 396 | Line 480 | int MakeStamps::bondMembers( event* the_event ){
480   }
481  
482   int MakeStamps::bondMembers( event* the_event ){
483 +  
484 +  if( the_event->evt.mbrs.nMembers == 2 ){
485 +    
486 +    current_bond->members( the_event->evt.mbrs.memberList[0],
487 +                           the_event->evt.mbrs.memberList[1] );
488 +    return 1;
489  
490 <  current_bond->members( the_event->evt.mbrs.a,
491 <                         the_event->evt.mbrs.b );
492 <  return 1;
490 >  } else {
491 >    the_event->err_msg = strdup( "MakeStamp error. Wrong number of members "
492 >                                 " in bond");
493 >    return 0;
494 >
495 >  }
496 >
497   }
498  
499   int MakeStamps::bondConstraint( event* the_event ){
# Line 460 | Line 554 | int MakeStamps::bendMembers( event* the_event ){
554  
555   int MakeStamps::bendMembers( event* the_event ){
556  
557 <  current_bend->members( the_event->evt.mbrs.a,
558 <                         the_event->evt.mbrs.b,
559 <                         the_event->evt.mbrs.c );
560 <  return 1;
557 >
558 >  switch( the_event->evt.mbrs.nMembers ) {
559 >  case 3:
560 >    current_bend->members( the_event->evt.mbrs.memberList[0],
561 >                           the_event->evt.mbrs.memberList[1],
562 >                           the_event->evt.mbrs.memberList[2]);
563 >    return 1;
564 >    break;
565 >  case 2:
566 >    current_bend->members( the_event->evt.mbrs.memberList[0],
567 >                           the_event->evt.mbrs.memberList[1],
568 >                           0 );
569 >    return 1;
570 >    break;
571 >  default:      
572 >    the_event->err_msg = strdup( "MakeStamp error. Wrong number of members "
573 >                                 "in bend.");
574 >    return 0;
575 >    break;
576 >  }
577 >  return 0;
578   }
579  
580   int MakeStamps::bendConstraint( event* the_event ){
# Line 524 | Line 635 | int MakeStamps::torsionMembers( event* the_event ){
635  
636   int MakeStamps::torsionMembers( event* the_event ){
637  
638 <  current_torsion->members( the_event->evt.mbrs.a,
639 <                            the_event->evt.mbrs.b,
640 <                            the_event->evt.mbrs.c,
641 <                            the_event->evt.mbrs.d );
642 <  return 1;
638 >  if( the_event->evt.mbrs.nMembers == 4 ){
639 >    
640 >    current_torsion->members( the_event->evt.mbrs.memberList[0],
641 >                              the_event->evt.mbrs.memberList[1],
642 >                              the_event->evt.mbrs.memberList[2],
643 >                              the_event->evt.mbrs.memberList[3]);
644 >    return 1;
645 >    
646 >  } else {
647 >    the_event->err_msg = strdup( "MakeStamp error. Wrong number of members "
648 >                                 " in torsion");
649 >    return 0;
650 >
651 >  }
652   }
653  
654   int MakeStamps::torsionConstraint( event* the_event ){
# Line 544 | Line 664 | int MakeStamps::torsionEnd( event* the_event ){
664    
665    return 1;
666   }
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