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" |
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 |
|
|
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 |
|
} |
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 |
|
|
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 ){ |
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 ){ |
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 ){ |