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 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 258 | Line 259 | int MakeStamps::rigidBodyAssign( event* the_event ){
259      break;
260    }
261    return 0;
262 + }
263 +
264 + int MakeStamps::rigidBodyMembers( event* the_event ){
265 +
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::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 + 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 290 | 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 384 | 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 448 | 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 512 | 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 532 | Line 664 | int MakeStamps::torsionEnd( event* the_event ){
664    
665    return 1;
666   }
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