8 #include <Eigen/Sparse> 9 #include <Eigen/SparseCholesky> 10 #include <Eigen/SparseLU> 17 using namespace Eigen;
24 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
53 void solveBendingMoments();
66 void applyShearFactor(MatrixXd &S, std::string);
67 std::string shearType;
83 void calculateMeshProperties();
91 void transformCoordinates();
97 void calculateSecondAreaMoments();
106 void calculateAnglePrincipalAxes();
107 double getAnglePrincipalAxes();
109 void calculateLineCenterNodes();
118 void solveEquations(SparseMatrix<double> &A, MatrixXd &b, MatrixXd &C);
119 void constrainDOF(SparseMatrix<double> &K, MatrixXd &R,
int nNumber);
120 void constrainNodeNearCenter(SparseMatrix<double> &K, MatrixXd &R);
122 Node getNodeAt(
int n);
125 int getNumNodes() {
return nodes.size(); }
126 int getNumElements() {
return elements.size(); }
140 MatrixXd torsion_displacement;
141 MatrixXd torsion_load;
143 MatrixXd shearX_load;
144 MatrixXd shearX_displacement;
146 MatrixXd shearY_load;
147 MatrixXd shearY_displacement;
152 void SetSmoothNodalTau();
162 void clean(MatrixXd &);
163 void printr(
int[],
int);
179 SparseMatrix<double> stiffness;
181 MatrixXd displacement;
199 void systemEquations(SparseMatrix<double> &K, MatrixXd &R);
201 void systemLoadVector(MatrixXd &R);
210 void addToGlobal2DMatrix(SparseMatrix<double> &, MatrixXd, std::vector<int>);
211 void addtoGlobalRowMatrix(MatrixXd &, MatrixXd, std::vector<int>);
213 void addLocalToGlobalSparse(SparseMatrix<double> &mat,
int e);
214 void addLocalToGlobalSparse(SparseMatrix<double> &mat);
215 void addLocalToGlobalVector(MatrixXd &mat,
int e);
216 void addLocalToGlobalVector(VectorXd &vec,
int e);
225 void addSubMatrix(SparseMatrix<double> &,
int,
int,
double);
227 int getNodeNearCenter();
double anglePrincipalAxes
Stores the angle of the principal axes in degrees.
Definition: MeshSTL.h:35
MatrixXd sigmaOfY
Stores all nodal stresses from moment about y-axis.
Definition: MeshSTL.h:58
Contains element data and relevant functions.
Definition: Element.h:12
Contains mesh data and has function to calculate and retrieve mesh properties.
Definition: MeshSTL.h:20
Struct that holds the x and y coordinate for each node.
Definition: Node.h:10
MatrixXd sigmaAxial
Stores nodal stress from axial force.
Definition: MeshSTL.h:55
std::vector< Element * > elements
List of all elements in mesh.
Definition: MeshSTL.h:45
MatrixXd tauXZtorsion
Stores nodal from torsional load.
Definition: MeshSTL.h:128
double anglePrincipalAxesRad
Stores the angle of the principal axes in radians.
Definition: MeshSTL.h:36
double Imax
Maximum second area moment for mesh along principal axis.
Definition: MeshSTL.h:34
MatrixXd tauYZshearY
Stores nodal from shear load in y-direction.
Definition: MeshSTL.h:137
double Ix
Second area moment for mesh in X-direction.
Definition: MeshSTL.h:31
MatrixXd sigmaOfX
Stores all nodal stresses from moment about x-axis.
Definition: MeshSTL.h:57
MatrixXd tauXZshearY
Stores nodal from shear load in y-direction.
Definition: MeshSTL.h:136
MatrixXd printTemp1
Used in testing to store desired value for printing.
Definition: MeshSTL.h:149
MatrixXd tauXZshearX
Stores nodal from shear load in x-direction.
Definition: MeshSTL.h:132
Contains material data such as Young's Modulus, Shear Modulus and Poisson's ratio, and if needed could include additional material properties.
Definition: Material.h:3
MatrixXd tauRshearY
Stores nodal from shear load in y-direction.
Definition: MeshSTL.h:138
double Ay
Area centre for mesh in Y-direction.
Definition: MeshSTL.h:27
MatrixXd tauYZtorsion
Stores nodal from torsional load.
Definition: MeshSTL.h:129
double totalArea
Total area of the mesh.
Definition: MeshSTL.h:28
double Iy
Second area moment for mesh in Y-direction.
Definition: MeshSTL.h:32
std::vector< Node > nodes
List of all nodes in mesh.
Definition: MeshSTL.h:46
double Ixy
Second area moment for mesh in XY-direction.
Definition: MeshSTL.h:33
MatrixXd tauRshearX
Stores nodal from shear load in x-direction.
Definition: MeshSTL.h:134
MatrixXd printTemp2
Used in testing to store desired value for printing.
Definition: MeshSTL.h:150
MatrixXd tauYZshearX
Stores nodal from shear load in x-direction.
Definition: MeshSTL.h:133
EIGEN_MAKE_ALIGNED_OPERATOR_NEW double Ax
< Neccessary for std::vector of objects with Eigen members.
Definition: MeshSTL.h:26
double areaStiffness
Sum of all Ai * Ei.
Definition: MeshSTL.h:29
MatrixXd tauRtorsion
Stores nodal from torsional load.
Definition: MeshSTL.h:130