ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libBASS/MakeStamps.cpp
(Generate patch)

Comparing:
branches/mmeineke/OOPSE/libBASS/MakeStamps.cpp (file contents), Revision 377 by mmeineke, Fri Mar 21 17:42:12 2003 UTC vs.
trunk/OOPSE/libBASS/MakeStamps.cpp (file contents), Revision 1153 by gezelter, Tue May 11 04:21:52 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 "CutoffGroupStamp.hpp"
9   #include "simError.h"
10   #ifdef IS_MPI
11   #include "mpiBASS.h"
# Line 89 | Line 92 | MakeStamps::MakeStamps(){
92   MakeStamps::MakeStamps(){
93    
94    int i;
95 +
96 +  hash_size = 47;
97 +  hash_shift = 4;
98    
99    my_mols = new LinkedMolStamp*[hash_size];
100    for( i=0; i<hash_size; i++ ){
# Line 205 | Line 211 | int MakeStamps::moleculeEnd( event* the_event ){
211    if( the_event->err_msg != NULL ) return 0;
212  
213    addMolStamp( current_mol );
214 +  return 1;
215 + }
216 +
217 + int MakeStamps::newRigidBody( event* the_event ){
218 +  
219 +  current_rigidbody = new RigidBodyStamp;
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;
224 +  return 1;
225 + }
226 +
227 + int MakeStamps::rigidBodyAssign( event* the_event ){
228 +
229 +  switch( the_event->evt.asmt.asmt_type ){
230 +    
231 +  case STRING:
232 +    the_event->err_msg =
233 +      current_rigidbody->assignString( the_event->evt.asmt.lhs,
234 +                                       the_event->evt.asmt.rhs.sval );
235 +    if( the_event->err_msg != NULL ) return 0;
236 +    return 1;
237 +    break;
238 +    
239 +  case DOUBLE:
240 +    the_event->err_msg =
241 +      current_rigidbody->assignDouble( the_event->evt.asmt.lhs,
242 +                                       the_event->evt.asmt.rhs.dval );
243 +    if( the_event->err_msg != NULL ) return 0;
244 +    return 1;    
245 +    break;
246 +
247 +  case INT:
248 +    the_event->err_msg =
249 +      current_rigidbody->assignInt( the_event->evt.asmt.lhs,
250 +                                    the_event->evt.asmt.rhs.ival );
251 +    if( the_event->err_msg != NULL ) return 0;
252 +    return 1;
253 +    break;
254 +    
255 +  default:
256 +    the_event->err_msg = strdup( "MakeStamp error. Invalid rigidBody"
257 +                                 " assignment type" );
258 +    return 0;
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 229 | 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 322 | 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 385 | 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 449 | 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