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 747 by gezelter, Fri Sep 5 21:28:52 2003 UTC vs.
Revision 998 by gezelter, Thu Jan 29 23:01:17 2004 UTC

# Line 1 | Line 1
1 < #include <cstdlib>
2 < #include <cstdio>
1 > #include <stdlib.h>
2 > #include <stdio.h>
3 > #include <string.h>
4  
5   #include "MakeStamps.hpp"
6   #include "MoleculeStamp.hpp"
7 + #include "RigidBodyStamp.hpp"
8   #include "simError.h"
9   #ifdef IS_MPI
10   #include "mpiBASS.h"
# Line 208 | Line 210 | int MakeStamps::moleculeEnd( event* the_event ){
210    if( the_event->err_msg != NULL ) return 0;
211  
212    addMolStamp( current_mol );
213 +  return 1;
214 + }
215 +
216 + int MakeStamps::newRigidBody( event* the_event ){
217 +  
218 +  current_rigidbody = new RigidBodyStamp;
219 +  
220 +  the_event->err_msg = current_mol->addRigidBody( current_rigidbody,
221 +                                                  the_event->evt.blk_index );
222 +  if( the_event->err_msg != NULL ) return 0;
223 +  return 1;
224 + }
225 +
226 + int MakeStamps::rigidBodyAssign( event* the_event ){
227 +
228 +  switch( the_event->evt.asmt.asmt_type ){
229 +    
230 +  case STRING:
231 +    the_event->err_msg =
232 +      current_rigidbody->assignString( the_event->evt.asmt.lhs,
233 +                                       the_event->evt.asmt.rhs.sval );
234 +    if( the_event->err_msg != NULL ) return 0;
235 +    return 1;
236 +    break;
237 +    
238 +  case DOUBLE:
239 +    the_event->err_msg =
240 +      current_rigidbody->assignDouble( the_event->evt.asmt.lhs,
241 +                                       the_event->evt.asmt.rhs.dval );
242 +    if( the_event->err_msg != NULL ) return 0;
243 +    return 1;    
244 +    break;
245 +
246 +  case INT:
247 +    the_event->err_msg =
248 +      current_rigidbody->assignInt( the_event->evt.asmt.lhs,
249 +                                    the_event->evt.asmt.rhs.ival );
250 +    if( the_event->err_msg != NULL ) return 0;
251 +    return 1;
252 +    break;
253 +    
254 +  default:
255 +    the_event->err_msg = strdup( "MakeStamp error. Invalid rigidBody"
256 +                                 " assignment type" );
257 +    return 0;
258 +    break;
259 +  }
260 +  return 0;
261 + }
262 +
263 + int MakeStamps::rigidBodyMembers( event* the_event ){
264 +
265 +  int i;
266 +
267 +  if( the_event->evt.mbrs.nMembers > 0 ){
268 +
269 +    for (i = 0; i < the_event->evt.mbrs.nMembers; i++) {
270 +      current_rigidbody->addMember( the_event->evt.mbrs.memberList[i]);
271 +    }
272 +    
273 +    return 1;
274 +    
275 +  } else {
276 +    the_event->err_msg = strdup( "MakeStamp error. No members in memberList "
277 +                                 " for this rigidBody.");
278 +    return 0;
279 +
280 +  }
281 + }
282 +
283 + int MakeStamps::rigidBodyEnd( event* the_event ){
284 +
285 +  the_event->err_msg = current_rigidbody->checkMe();
286 +  if( the_event->err_msg != NULL ) return 0;
287 +  
288    return 1;
289   }
290  
# Line 217 | Line 294 | int MakeStamps::newAtom( event* the_event ){
294    
295    the_event->err_msg = current_mol->addAtom( current_atom,
296                                               the_event->evt.blk_index );
297 +  
298    if( the_event->err_msg != NULL ) return 0;
299    return 1;
300   }
# Line 232 | Line 310 | int MakeStamps::atomOrientation( event* the_event ){
310  
311   int MakeStamps::atomOrientation( event* the_event ){
312    
313 <  current_atom->setOrientation( the_event->evt.ornt.x,
314 <                                the_event->evt.ornt.y,
315 <                                the_event->evt.ornt.z );
313 >  current_atom->setOrientation( the_event->evt.ornt.phi,
314 >                                the_event->evt.ornt.theta,
315 >                                the_event->evt.ornt.psi );
316    return 1;
317   }
318  
# Line 325 | Line 403 | int MakeStamps::bondMember( event* the_event ){
403    return 0;
404   }
405  
406 < int MakeStamps::bondMember( event* the_event ){
406 > int MakeStamps::bondMembers( event* the_event ){
407 >  
408 >  if( the_event->evt.mbrs.nMembers == 2 ){
409 >    
410 >    current_bond->members( the_event->evt.mbrs.memberList[0],
411 >                           the_event->evt.mbrs.memberList[1] );
412 >    return 1;
413  
414 <  current_bond->members( the_event->evt.mbr.a,
415 <                         the_event->evt.mbr.b );
416 <  return 1;
414 >  } else {
415 >    the_event->err_msg = strdup( "MakeStamp error. Wrong number of members "
416 >                                 " in bond");
417 >    return 0;
418 >
419 >  }
420 >
421   }
422  
423   int MakeStamps::bondConstraint( event* the_event ){
# Line 388 | Line 476 | int MakeStamps::bendMember( event* the_event ){
476    return 0;
477   }
478  
479 < int MakeStamps::bendMember( event* the_event ){
479 > int MakeStamps::bendMembers( event* the_event ){
480  
481 <  current_bend->members( the_event->evt.mbr.a,
482 <                         the_event->evt.mbr.b,
483 <                         the_event->evt.mbr.c );
484 <  return 1;
481 >
482 >  switch( the_event->evt.mbrs.nMembers ) {
483 >  case 3:
484 >    current_bend->members( the_event->evt.mbrs.memberList[0],
485 >                           the_event->evt.mbrs.memberList[1],
486 >                           the_event->evt.mbrs.memberList[2]);
487 >    return 1;
488 >    break;
489 >  case 2:
490 >    current_bend->members( the_event->evt.mbrs.memberList[0],
491 >                           the_event->evt.mbrs.memberList[1],
492 >                           0 );
493 >    return 1;
494 >    break;
495 >  default:      
496 >    the_event->err_msg = strdup( "MakeStamp error. Wrong number of members "
497 >                                 "in bend.");
498 >    return 0;
499 >    break;
500 >  }
501 >  return 0;
502   }
503  
504   int MakeStamps::bendConstraint( event* the_event ){
# Line 452 | Line 557 | int MakeStamps::torsionMember( event* the_event ){
557    return 0;
558   }
559  
560 < int MakeStamps::torsionMember( event* the_event ){
560 > int MakeStamps::torsionMembers( event* the_event ){
561  
562 <  current_torsion->members( the_event->evt.mbr.a,
563 <                            the_event->evt.mbr.b,
564 <                            the_event->evt.mbr.c,
565 <                            the_event->evt.mbr.d );
566 <  return 1;
562 >  if( the_event->evt.mbrs.nMembers == 4 ){
563 >    
564 >    current_torsion->members( the_event->evt.mbrs.memberList[0],
565 >                              the_event->evt.mbrs.memberList[1],
566 >                              the_event->evt.mbrs.memberList[2],
567 >                              the_event->evt.mbrs.memberList[3]);
568 >    return 1;
569 >    
570 >  } else {
571 >    the_event->err_msg = strdup( "MakeStamp error. Wrong number of members "
572 >                                 " in torsion");
573 >    return 0;
574 >
575 >  }
576   }
577  
578   int MakeStamps::torsionConstraint( event* the_event ){

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines