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 981 by gezelter, Mon Jan 26 18:52:42 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 );
225    if( the_event->err_msg != NULL ) return 0;
223  return 1;
224 }
225
226 int MakeStamps::rigidBodyPosition( event* the_event ){
227  
228  current_rigidbody->setPosition( the_event->evt.pos.x,
229                                  the_event->evt.pos.y,
230                                  the_event->evt.pos.z );
231  return 1;
232 }
233
234
235 int MakeStamps::rigidBodyOrientation( event* the_event ){
236  
237  current_rigidbody->setOrientation( the_event->evt.ornt.x,
238                                     the_event->evt.ornt.y,
239                                     the_event->evt.ornt.z );
226    return 1;
227   }
228  
# Line 275 | 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 285 | Line 291 | int MakeStamps::rigidBodyEnd( event* the_event ){
291    return 1;
292   }
293  
294 < int MakeStamps::newAtomInMolecule( event* the_event ){
294 > int MakeStamps::newCutoffGroup( event* the_event ){
295    
296 <  current_atom = new AtomStamp;
296 >  current_cutoffgroup = new CutoffGroupStamp;
297    
298 <  the_event->err_msg = current_mol->addAtom( current_atom,
299 <                                             the_event->evt.blk_index );
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::newAtomInRigidBody( event* the_event ){
369 > int MakeStamps::newAtom( event* the_event ){
370    
371    current_atom = new AtomStamp;
372    
373 <  the_event->err_msg = current_rigidbody->addAtom( current_atom,
374 <                                                   the_event->evt.blk_index );
373 >  the_event->err_msg = current_mol->addAtom( current_atom,
374 >                                             the_event->evt.blk_index );
375    
376    if( the_event->err_msg != NULL ) return 0;
377    return 1;
# Line 318 | 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 411 | Line 481 | int MakeStamps::bondAssign( event* the_event ){
481    return 0;
482   }
483  
484 < int MakeStamps::bondMember( event* the_event ){
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.mbr.a,
493 <                         the_event->evt.mbr.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 474 | Line 554 | int MakeStamps::bendAssign( event* the_event ){
554    return 0;
555   }
556  
557 < int MakeStamps::bendMember( event* the_event ){
557 > int MakeStamps::bendMembers( event* the_event ){
558  
559 <  current_bend->members( the_event->evt.mbr.a,
560 <                         the_event->evt.mbr.b,
561 <                         the_event->evt.mbr.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 538 | Line 635 | int MakeStamps::torsionAssign( event* the_event ){
635    return 0;
636   }
637  
638 < int MakeStamps::torsionMember( event* the_event ){
638 > int MakeStamps::torsionMembers( event* the_event ){
639  
640 <  current_torsion->members( the_event->evt.mbr.a,
641 <                            the_event->evt.mbr.b,
642 <                            the_event->evt.mbr.c,
643 <                            the_event->evt.mbr.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 ){

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines