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 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 220 | Line 221 | int MakeStamps::newRigidBody( event* the_event ){
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;
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 );
224    return 1;
225   }
226  
# Line 275 | 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 ){
# Line 285 | Line 289 | int MakeStamps::rigidBodyEnd( event* the_event ){
289    return 1;
290   }
291  
292 < int MakeStamps::newAtomInMolecule( event* the_event ){
292 > int MakeStamps::newCutoffGroup( event* the_event ){
293    
294 <  current_atom = new AtomStamp;
294 >  current_cutoffgroup = new CutoffGroupStamp;
295    
296 <  the_event->err_msg = current_mol->addAtom( current_atom,
297 <                                             the_event->evt.blk_index );
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::newAtomInRigidBody( event* the_event ){
367 > int MakeStamps::newAtom( event* the_event ){
368    
369    current_atom = new AtomStamp;
370    
371 <  the_event->err_msg = current_rigidbody->addAtom( current_atom,
372 <                                                   the_event->evt.blk_index );
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;
# Line 318 | 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 411 | 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 474 | 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 538 | 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