20#ifndef _FLEXIBLE_FFR_BODY_H_
21#define _FLEXIBLE_FFR_BODY_H_
23#include "mbsimFlexibleBody/flexible_body/generic_flexible_ffr_body.h"
24#include <openmbvcppinterface/flexiblebody.h>
25#include <openmbvcppinterface/objectfactory.h>
26#include <openmbvcppinterface/group.h>
32namespace MBSimFlexibleBody {
50 void setPositionIntegral(
const fmatvec::Vec3 &rdm_) { rdm = rdm_; }
51 void setPositionPositionIntegral(
const fmatvec::SymMat3& rrdm_) { rrdm = rrdm_; }
52 void setShapeFunctionIntegral(
const fmatvec::Mat3xV &Pdm_) { Pdm <<= Pdm_; }
54 void setPositionShapeFunctionIntegralArray(
const std::vector<fmatvec::Mat3xV> &rPdm_) { rPdm = rPdm_; }
56 void setShapeFunctionShapeFunctionIntegralArray(
const std::vector<std::vector<fmatvec::SqrMatV>> &PPdm_) { PPdm = PPdm_; }
58 void setStiffnessMatrix(
const fmatvec::SymMatV &Ke0_) { Ke0 <<= Ke0_; }
59 void setDampingMatrix(
const fmatvec::SymMatV &De0_) { De0 <<= De0_; }
60 void setModalDamping(
const fmatvec::VecV &mDamping_) { mDamping <<= mDamping_; }
61 void setProportionalDamping(
const fmatvec::Vec2 &beta_) { beta = beta_; }
65 void setNonlinearStiffnessMatrixOfFirstOrderArray(
const std::vector<fmatvec::SqrMatV> &Knl1_) { Knl1 = Knl1_; }
67 void setNonlinearStiffnessMatrixOfSecondOrderArray(
const std::vector<std::vector<fmatvec::SqrMatV>> &Knl2_) { Knl2 = Knl2_; }
71 void setInitialStressIntegral(
const fmatvec::VecV &ksigma0_) { ksigma0 <<= ksigma0_; }
72 void setNonlinearInitialStressIntegral(
const fmatvec::SqrMatV &ksigma1_) { ksigma1 <<= ksigma1_; }
76 void setGeometricStiffnessMatrixDueToAccelerationArray(
const std::vector<fmatvec::SqrMatV> &K0t_) { K0t = K0t_; }
78 void setGeometricStiffnessMatrixDueToAngularAccelerationArray(
const std::vector<fmatvec::SqrMatV> &K0r_) { K0r = K0r_; }
80 void setGeometricStiffnessMatrixDueToAngularVelocityArray(
const std::vector<fmatvec::SqrMatV> &K0om_) { K0om = K0om_; }
83 void setNodeNumbers(
const std::vector<int> &nodeNumbers_) { nodeNumbers = nodeNumbers_; }
85 void setNodalRelativePositionArray(
const std::vector<fmatvec::Vec3> &r) { KrKP = r; }
87 void setNodalRelativeOrientationArray(
const std::vector<fmatvec::SqrMat3> &A) { ARP = A; }
89 void setNodalShapeMatrixOfTranslationArray(
const std::vector<fmatvec::Mat3xV> &Phi_) { Phi = Phi_; }
91 void setNodalShapeMatrixOfRotationArray(
const std::vector<fmatvec::Mat3xV> &Psi_) { Psi = Psi_; }
93 void setNodalStressMatrixArray(
const std::vector<fmatvec::Matrix<fmatvec::General, fmatvec::Fixed<6>, fmatvec::Var,
double>> &sigmahel_) { sigmahel = sigmahel_; }
95 void setNodalNonlinearStressMatrixArray(
const std::vector<std::vector<fmatvec::Matrix<fmatvec::General, fmatvec::Fixed<6>, fmatvec::Var,
double>> > &sigmahen_) { sigmahen = sigmahen_; }
97 void setNodalInitialStressArray(
const std::vector<fmatvec::Vector<fmatvec::Fixed<6>,
double>> &sigma0_) { sigma0 = sigma0_; }
99 void setNodalGeometricStiffnessMatrixDueToForceArray(
const std::vector<std::vector<fmatvec::SqrMatV>> &K0F_) { K0F = K0F_; }
101 void setNodalGeometricStiffnessMatrixDueToMomentArray(
const std::vector<std::vector<fmatvec::SqrMatV>> &K0M_) { K0M = K0M_; }
103 void init(
InitStage stage,
const MBSim::InitConfigSet &config)
override;
104 void initializeUsingXML(xercesc::DOMElement *element)
override;
106 void setOpenMBVFlexibleBody(
const std::shared_ptr<OpenMBV::FlexibleBody> &body);
107 void setOpenMBVNodeNumbers(
const std::vector<int> &visuNodes_) { visuNodes = visuNodes_; }
108 void setOpenMBVColorRepresentation(OpenMBVFlexibleBody::ColorRepresentation ombvColorRepresentation_) { ombvColorRepresentation = ombvColorRepresentation_; }
109 void setPlotNodeNumbers(
const std::vector<int> &plotNodes_) { plotNodes = plotNodes_; }
113 fmatvec::VecV mDamping;
Flexible body using a floating frame of reference formulation.
Definition: flexible_ffr_body.h:38
void setMass(double m_)
Set mass.
Definition: flexible_ffr_body.h:49
Generic flexible body using a floating frame of reference formulation.
Definition: generic_flexible_ffr_body.h:62