#pragma once #include #include "Item.h" #include "FullColumn.h" #include "FullMatrix.h" namespace MbD { class System; class PartFrame; template class DiagonalMatrix; class Part : public Item { //ToDo: ipX ipE m aJ partFrame pX pXdot pE pEdot mX mE mEdot pTpE ppTpEpE ppTpEpEdot public: Part(); Part(const char* str); void initialize(); void initializeLocally() override; void initializeGlobally() override; void setqX(FColDsptr x); FColDsptr getqX(); void setqE(FColDsptr x); FColDsptr getqE(); void setqXdot(FColDsptr x); FColDsptr getqXdot(); void setomeOpO(FColDsptr x); FColDsptr getomeOpO(); void setSystem(System& sys); void asFixed(); void postInput() override; void calcPostDynCorrectorIteration() override; void prePosIC() override; void iqX(int eqnNo); void iqE(int eqnNo); void fillEssenConstraints(std::shared_ptr>> essenConstraints) override; void fillRedundantConstraints(std::shared_ptr>> redunConstraints) override; void fillqsu(FColDsptr col) override; void fillqsuWeights(std::shared_ptr> diagMat) override; void fillqsulam(FColDsptr col) override; void useEquationNumbers() override; void setqsu(FColDsptr col) override; void setqsulam(FColDsptr col) override; void postPosICIteration() override; void fillPosICError(FColDsptr col) override; void fillPosICJacob(SpMatDsptr mat) override; void removeRedundantConstraints(std::shared_ptr> redundantEqnNos) override; void reactivateRedundantConstraints() override; void constraintsReport() override; void postPosIC() override; void outputStates() override; void preDyn() override; int ipX = -1; int ipE = -1; double m = 0.0; std::shared_ptr> aJ; std::shared_ptr partFrame; FColDsptr pX; FColDsptr pXdot; FColDsptr pE; FColDsptr pEdot; std::shared_ptr> mX; std::shared_ptr> mE; FMatDsptr mEdot; FColDsptr pTpE; FMatDsptr ppTpEpE; FMatDsptr ppTpEpEdot; }; }