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 957 by gezelter, Mon Jan 19 16:08:21 2004 UTC vs.
Revision 1257 by gezelter, Thu Jun 10 15:00:56 2004 UTC

# Line 4 | Line 4
4  
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 215 | Line 217 | int MakeStamps::newRigidBody( event* the_event ){
217   int MakeStamps::newRigidBody( event* the_event ){
218    
219    current_rigidbody = new RigidBodyStamp;
220 <  
220 >
221    the_event->err_msg = current_mol->addRigidBody( current_rigidbody,
222                                                    the_event->evt.blk_index );
223    if( the_event->err_msg != NULL ) return 0;
222  return 1;
223 }
224
225 int MakeStamps::rigidBodyPosition( event* the_event ){
226  
227  current_rigidbody->setPosition( the_event->evt.pos.x,
228                                  the_event->evt.pos.y,
229                                  the_event->evt.pos.z );
230  return 1;
231 }
232
233
234 int MakeStamps::rigidBodyOrientation( event* the_event ){
235  
236  current_rigidbody->setOrientation( the_event->evt.ornt.x,
237                                     the_event->evt.ornt.y,
238                                     the_event->evt.ornt.z );
224    return 1;
225   }
226  
# Line 274 | 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;
365 + }
366 +
367   int MakeStamps::newAtom( event* the_event ){
368    
369    current_atom = new AtomStamp;
370    
371    the_event->err_msg = current_mol->addAtom( current_atom,
372                                               the_event->evt.blk_index );
373 +  
374    if( the_event->err_msg != NULL ) return 0;
375    return 1;
376   }
# Line 305 | 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 398 | Line 479 | int MakeStamps::bondAssign( event* the_event ){
479    return 0;
480   }
481  
482 < int MakeStamps::bondMember( event* the_event ){
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.mbr.a,
491 <                         the_event->evt.mbr.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 461 | Line 552 | int MakeStamps::bendAssign( event* the_event ){
552    return 0;
553   }
554  
555 < int MakeStamps::bendMember( event* the_event ){
555 > int MakeStamps::bendMembers( event* the_event ){
556  
557 <  current_bend->members( the_event->evt.mbr.a,
558 <                         the_event->evt.mbr.b,
559 <                         the_event->evt.mbr.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 525 | Line 633 | int MakeStamps::torsionAssign( event* the_event ){
633    return 0;
634   }
635  
636 < int MakeStamps::torsionMember( event* the_event ){
636 > int MakeStamps::torsionMembers( event* the_event ){
637  
638 <  current_torsion->members( the_event->evt.mbr.a,
639 <                            the_event->evt.mbr.b,
640 <                            the_event->evt.mbr.c,
641 <                            the_event->evt.mbr.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 ){

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines