virtual void RK_CALL load(ReaK::serialization::iarchive& A, unsigned int) { named_object::load(A,named_object::getStaticObjectType()->TypeVersion()); A & RK_SERIAL_LOAD_WITH_NAME(mMass) & RK_SERIAL_LOAD_WITH_NAME(mInertiaMoment) & RK_SERIAL_LOAD_WITH_NAME(mDt); if((mInertiaMoment.get_row_count() != 3) || (mMass < std::numeric_limits< double >::epsilon())) throw system_incoherency("Inertial information is improper in satellite3D_lin_dt_system's definition"); try { invert_Cholesky(mInertiaMoment,mInertiaMomentInv); } catch(singularity_error&) { throw system_incoherency("Inertial tensor is singular in satellite3D_lin_dt_system's definition"); }; };
airship2D_lin_system(const std::string& aName = "", double aMass = 1.0, double aInertiaMoment = 1.0) : named_object(), mMass(aMass), mInertiaMoment(aInertiaMoment) { setName(aName); if((mInertiaMoment < std::numeric_limits< double >::epsilon()) || (mMass < std::numeric_limits< double >::epsilon())) throw system_incoherency("Inertial information are singular in airship2D_lin_system's definition"); };