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