--- trunk/OOPSE/libBASS/MakeStamps.cpp 2003/09/05 21:28:52 747 +++ trunk/OOPSE/libBASS/MakeStamps.cpp 2004/01/27 19:37:48 988 @@ -1,8 +1,10 @@ -#include -#include +#include +#include +#include #include "MakeStamps.hpp" #include "MoleculeStamp.hpp" +#include "RigidBodyStamp.hpp" #include "simError.h" #ifdef IS_MPI #include "mpiBASS.h" @@ -208,15 +210,83 @@ int MakeStamps::moleculeEnd( event* the_event ){ if( the_event->err_msg != NULL ) return 0; addMolStamp( current_mol ); + return 1; +} + +int MakeStamps::newRigidBody( event* the_event ){ + + current_rigidbody = new RigidBodyStamp; + + the_event->err_msg = current_mol->addRigidBody( current_rigidbody, + the_event->evt.blk_index ); + if( the_event->err_msg != NULL ) return 0; + return 1; +} + +int MakeStamps::rigidBodyAssign( event* the_event ){ + + switch( the_event->evt.asmt.asmt_type ){ + + case STRING: + the_event->err_msg = + current_rigidbody->assignString( the_event->evt.asmt.lhs, + the_event->evt.asmt.rhs.sval ); + if( the_event->err_msg != NULL ) return 0; + return 1; + break; + + case DOUBLE: + the_event->err_msg = + current_rigidbody->assignDouble( the_event->evt.asmt.lhs, + the_event->evt.asmt.rhs.dval ); + if( the_event->err_msg != NULL ) return 0; + return 1; + break; + + case INT: + the_event->err_msg = + current_rigidbody->assignInt( the_event->evt.asmt.lhs, + the_event->evt.asmt.rhs.ival ); + if( the_event->err_msg != NULL ) return 0; + return 1; + break; + + default: + the_event->err_msg = strdup( "MakeStamp error. Invalid rigidBody" + " assignment type" ); + return 0; + break; + } + return 0; +} + +int MakeStamps::rigidBodyMember( event* the_event ){ + + current_member = new MemberStamp; + + the_event->err_msg = current_rigidbody->addMember( current_member, + the_event->evt.blk_index ); + + if( the_event->err_msg != NULL ) return 0; return 1; + } +int MakeStamps::rigidBodyEnd( event* the_event ){ + + the_event->err_msg = current_rigidbody->checkMe(); + if( the_event->err_msg != NULL ) return 0; + + return 1; +} + int MakeStamps::newAtom( event* the_event ){ current_atom = new AtomStamp; the_event->err_msg = current_mol->addAtom( current_atom, the_event->evt.blk_index ); + if( the_event->err_msg != NULL ) return 0; return 1; } @@ -325,10 +395,10 @@ int MakeStamps::bondMember( event* the_event ){ return 0; } -int MakeStamps::bondMember( event* the_event ){ +int MakeStamps::bondMembers( event* the_event ){ - current_bond->members( the_event->evt.mbr.a, - the_event->evt.mbr.b ); + current_bond->members( the_event->evt.mbrs.a, + the_event->evt.mbrs.b ); return 1; } @@ -388,11 +458,11 @@ int MakeStamps::bendMember( event* the_event ){ return 0; } -int MakeStamps::bendMember( event* the_event ){ +int MakeStamps::bendMembers( event* the_event ){ - current_bend->members( the_event->evt.mbr.a, - the_event->evt.mbr.b, - the_event->evt.mbr.c ); + current_bend->members( the_event->evt.mbrs.a, + the_event->evt.mbrs.b, + the_event->evt.mbrs.c ); return 1; } @@ -452,12 +522,12 @@ int MakeStamps::torsionMember( event* the_event ){ return 0; } -int MakeStamps::torsionMember( event* the_event ){ +int MakeStamps::torsionMembers( event* the_event ){ - current_torsion->members( the_event->evt.mbr.a, - the_event->evt.mbr.b, - the_event->evt.mbr.c, - the_event->evt.mbr.d ); + current_torsion->members( the_event->evt.mbrs.a, + the_event->evt.mbrs.b, + the_event->evt.mbrs.c, + the_event->evt.mbrs.d ); return 1; } @@ -474,3 +544,53 @@ int MakeStamps::torsionEnd( event* the_event ){ return 1; } + +int MakeStamps::newMember( event* the_event ){ + + current_member = new MemberStamp; + + the_event->err_msg = current_rigidbody->addMember( current_member, + the_event->evt.blk_index ); + if( the_event->err_msg != NULL ) return 0; + + return 1; +} + +int MakeStamps::memberAssign( event* the_event ){ + + switch( the_event->evt.asmt.asmt_type ){ + + case STRING: + current_member->assignString( the_event->evt.asmt.lhs, + the_event->evt.asmt.rhs.sval ); + return 1; + break; + + case DOUBLE: + current_member->assignDouble( the_event->evt.asmt.lhs, + the_event->evt.asmt.rhs.dval ); + return 1; + break; + + case INT: + current_member->assignInt( the_event->evt.asmt.lhs, + the_event->evt.asmt.rhs.ival ); + return 1; + break; + + default: + the_event->err_msg = strdup( "MakeStamp error. Invalid member" + " assignment type" ); + return 0; + break; + } + return 0; +} + +int MakeStamps::memberEnd( event* the_event ){ + + the_event->err_msg = current_member->checkMe(); + if( the_event->err_msg != NULL ) return 0; + + return 1; +}