35 #include "../sm/Elements/Shells/tr2shell7.h" 36 #include "../sm/Materials/structuralms.h" 53 IntArray
Tr2Shell7 :: orderingDofTypes = {1, 2, 3, 8, 9, 10, 15, 16, 17, 22, 23, 24, 29, 30, 31, 36, 37, 38,
54 4, 5, 6, 11, 12, 13, 18, 19, 20, 25, 26, 27, 32, 33, 34, 39, 40, 41,
55 7, 14, 21, 28, 35, 42};
56 IntArray
Tr2Shell7 :: orderingNodes = {1, 2, 3, 19, 20, 21, 37, 4, 5, 6, 22, 23, 24, 38, 7, 8, 9, 25, 26, 27, 39,
57 10, 11, 12, 28, 29, 30, 40, 13, 14, 15, 31, 32, 33, 41, 16, 17, 18,
59 IntArray
Tr2Shell7 :: orderingEdgeNodes = {1, 2, 3, 10, 11, 12, 19, 4, 5, 6, 13, 14, 15, 20, 7, 8, 9, 16, 17, 18, 21};
98 if ( layeredCS == NULL ) {
99 OOFEM_ERROR(
"Tr2Shell7 only supports layered cross section");
116 if (bNodes.
at(1)==1 && bNodes.
at(2)==2 && bNodes.
at(3)==4) {
119 }
else if (bNodes.
at(1)==2 && bNodes.
at(2)==3 && bNodes.
at(3)==5) {
122 }
else if (bNodes.
at(1)==3 && bNodes.
at(2)==1 && bNodes.
at(3)==6) {
128 }
else if (bNodes.
giveSize() == 6) {
137 for (
int i=1; i<=localloc.
giveSize(); i++) {
138 locationArray.
at(i)=eloc.
at(localloc.
at(i));
139 dofIdArray->
at(i) = dofID.
at(localloc.
at(i));
153 answer = {1, 2, 3, 8, 9, 10, 22, 23, 24, 4, 5, 6, 11, 12, 13, 25, 26, 27, 7, 14, 28};
154 }
else if ( iEdge == 2 ) {
155 answer = { 8, 9, 10, 15, 16, 17, 29, 30, 31, 11, 12, 13, 18, 19, 20, 32, 33, 34, 14, 21, 35};
156 }
else if ( iEdge == 3 ) {
157 answer = { 15, 16, 17, 1, 2, 3, 36, 37, 38, 18, 19, 20, 4, 5, 6, 39, 40, 41, 21, 7, 42};
168 for (
int i = 1; i <= 42; i++ ) {
210 answer.
resize(ndofs, ndofs);
211 for (
int i = 1; i <= ndofs; i++ ) {
212 for (
int j = 1; j <= 18; j++ ) {
213 if ( fabs( matrix1.
at(i, j) ) > 1.0e-12 ) {
214 double diff = ( matrix1.
at(i, j) - matrix2.
at(i, j) );
215 double relDiff = diff / matrix1.
at(i, j);
216 if ( fabs(relDiff) < 1.0e-4 ) {
217 answer.
at(i, j) = 0.0;
218 }
else if ( fabs(diff) < 1.0e3 ) {
219 answer.
at(i, j) = 0.0;
221 answer.
at(i, j) = relDiff;
224 answer.
at(i, j) = -1.0;
double giveDeterminant() const
Returns the trace (sum of diagonal components) of the receiver.
CrossSection * giveCrossSection()
void beVectorProductOf(const FloatArray &v1, const FloatArray &v2)
Computes vector product (or cross product) of vectors given as parameters, , and stores the result in...
virtual double computeAreaAround(GaussPoint *gp, double xi)
double & at(int i)
Coefficient access function.
virtual const IntArray & giveOrderingEdgeNodes() const
LayeredCrossSection * layeredCS
static IntArray orderingEdgeNodes
virtual FEInterpolation * giveInterpolation() const
Class implementing an array of integers.
int & at(int i)
Coefficient access function.
This class implements a layered cross section in a finite element problem.
void beColumnOf(const FloatMatrix &mat, int col)
Reciever will be set to a given column in a matrix.
Class representing a general abstraction for finite element interpolation class.
void evalInitialCovarBaseVectorsAt(const FloatArray &lCoords, FloatMatrix &Gcov)
double giveNaturalCoordinate(int i) const
Returns i-th natural element coordinate of receiver.
virtual const IntArray & giveOrderingDofTypes() const
void giveEdgeDofMapping(IntArray &answer, int iEdge) const
Assembles edge dof mapping mask, which provides mapping between edge local DOFs and "global" element ...
double giveLayerThickness(int layer)
void setupLayeredIntegrationRule(std::vector< std::unique_ptr< IntegrationRule > > &layerIntegrationRulesArray, Element *el, int numInPlanePoints)
virtual double giveWeight()
Returns integration weight of receiver.
void giveLocationArray(IntArray &locationArray, const UnknownNumberingScheme &s, IntArray *dofIds=NULL) const
Returns the location array (array of code numbers) of receiver for given numbering scheme...
Abstract base class allowing to control the way, how equations are assigned to individual DOFs...
virtual void giveBoundaryLocationArray(IntArray &locationArray, const IntArray &bNodes, const UnknownNumberingScheme &s, IntArray *dofIdArray)
Returns the location array for the boundary of the element.
Tr2Shell7(int n, Domain *d)
void giveSurfaceDofMapping(IntArray &answer, int iSurf) const
Assembles surface dof mapping mask, which provides mapping between surface local DOFs and "global" el...
double at(int i, int j) const
Coefficient access function.
void resize(int n)
Checks size of receiver towards requested bounds.
int numberOfGaussPoints
Number of integration points as specified by nip.
Class representing vector of real numbers.
virtual void computeGaussPoints()
Initializes the array of integration rules member variable.
Implementation of matrix containing floating point numbers.
void compareMatrices(const FloatMatrix &matrix1, const FloatMatrix &matrix2, FloatMatrix &answer)
virtual const IntArray & giveOrderingNodes() const
This class represent a 7 parameter shell element.
double computeNorm() const
Computes the norm (or length) of the vector.
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
static IntArray orderingNodes
std::vector< std::unique_ptr< IntegrationRule > > integrationRulesArray
List of integration rules of receiver (each integration rule contains associated integration points a...
static IntArray orderingDofTypes
int giveNumIntegrationPointsInLayer()
the oofem namespace is to define a context or scope in which all oofem names are defined.
Class representing integration point in finite element program.
static FEI3dTrQuad interpolation
int numberOfDofMans
Number of dofmanagers.
virtual double computeVolumeAroundLayer(GaussPoint *mastergp, int layer)
const FloatArray & giveNaturalCoordinates()
Returns coordinate array of receiver.