56 #ifndef ASDShellQ4Transformation_h    57 #define ASDShellQ4Transformation_h    59 #include "ASDShellQ4LocalCoordinateSystem.h"    60 #include "domain/mesh/node/Node.h"    61 #include "domain/domain/Domain.h"    81     typedef std::array<Node*, 4> NodeContainerType;
    85     NodeContainerType m_nodes= { {
nullptr, 
nullptr, 
nullptr, 
nullptr} };
    97     virtual bool isLinear(
void)
 const   100     virtual void revertToStart(
void)
   103     virtual void setDomain(
Domain *, 
const ID &);
   105     virtual void revertToLastCommit()
   108     virtual void commit()
   111     virtual void update(
const VectorType& globalDisplacements)
   119             Vector3Type(m_nodes[0]->getCrds()),
   120             Vector3Type(m_nodes[1]->getCrds()),
   121             Vector3Type(m_nodes[2]->getCrds()),
   122             Vector3Type(m_nodes[3]->getCrds())
   129         return createReferenceCoordinateSystem();
   132     virtual void computeGlobalDisplacements(VectorType& globalDisplacements)
 const   134         for (
int i = 0; i < 4; i++) {
   136             const VectorType& iU = m_nodes[i]->getTrialDisp();
   137             for (
int j = 0; j < 6; j++) {
   138                 globalDisplacements(index + j) = iU(j) - m_U0(index + j);
   145         static MatrixType R(24, 24);
   146         static MatrixType T(24, 24);
   147         static MatrixType W(24, 24);
   148         if (LCS.IsWarped()) {
   149             LCS.ComputeTotalRotationMatrix(R);
   150             LCS.ComputeTotalWarpageMatrix(W);
   151             T.addMatrixProduct(0.0, W, R, 1.0);
   154             LCS.ComputeTotalRotationMatrix(T);
   159     virtual void calculateLocalDisplacements(
   161         const VectorType& globalDisplacements,
   162         VectorType& localDisplacements)
   164         const MatrixType& R = computeTransformationMatrix(LCS);
   168     virtual void transformToGlobal(
   170         const VectorType& globalDisplacements,
   171         const VectorType& localDisplacements,
   176         static MatrixType RT_LHS(24, 24);
   177         static VectorType RHScopy(24);
   178         const MatrixType& R = computeTransformationMatrix(LCS);
   180         RHS.addMatrixTransposeVector(0.0, R, RHScopy, 1.0);
   182             RT_LHS.addMatrixTransposeProduct(0.0, R, LHS, 1.0);
   183             LHS.addMatrixProduct(0.0, RT_LHS, R, 1.0);
   187     virtual void transformToGlobal(
   193         static VectorType dummy;
   194         transformToGlobal(LCS, dummy, dummy, LHS, RHS, LHSrequired);
   197     virtual int internalDataSize()
 const   206     Vector retval(internalDataSize());
   207         for(
int i = 0; i < 24; i++)
   215         for(
int i = 0; i < 24; i++)
   221     inline const NodeContainerType& getNodes()
const { 
return m_nodes; }
   222     inline NodeContainerType& getNodes() { 
return m_nodes; }
   228 #endif // !ASDShellQ4Transformation_h Float vector abstraction. 
Definition: Vector.h:94
Vector of integers. 
Definition: ID.h:95
This class represent the local coordinate system of any element whose geometry is a 4-node Quadrilate...
Definition: ASDShellQ4LocalCoordinateSystem.h:41
Open source finite element program for structural analysis. 
Definition: ContinuaReprComponent.h:35
Matrix of floats. 
Definition: Matrix.h:111
Domain (mesh and boundary conditions) of the finite element model. 
Definition: Domain.h:117
int addMatrixVector(double factThis, const Matrix &m, const Vector &v, double factOther)
To add a factor fact times the Vector formed by the product of the matrix m and the Vector v to the c...
Definition: Vector.cpp:470
ASDQuaternion A simple class that implements the main features of quaternion algebra. 
Definition: ASDMath.h:328