58Tr_Warp :: Tr_Warp(
int n,
Domain *aDomain) :
75 if ( mtrx == ExternalForcesVector ) {
85Tr_Warp :: computeGaussPoints()
100 StructuralElement :: initializeFrom(ir, priority);
126 answer.
resize(1, numNodes);
151 answer.
at(1, 1) = dN.
at(1, 1);
152 answer.
at(1, 2) = dN.
at(2, 1);
153 answer.
at(1, 3) = dN.
at(3, 1);
154 answer.
at(1, 4) = -tc.
at(2);
156 answer.
at(2, 1) = dN.
at(1, 2);
157 answer.
at(2, 2) = dN.
at(2, 2);
158 answer.
at(2, 3) = dN.
at(3, 2);
159 answer.
at(2, 4) = tc.
at(1);
171 answer.
at(1) = c.
at(1) - CG.
at(CGnumber, 1);
172 answer.
at(2) = c.
at(2) - CG.
at(CGnumber, 2);
196 double determinant, weight, volume;
199 volume = determinant * weight;
204Tr_Warp :: giveEdgeDofMapping(
IntArray &answer,
int iEdge)
const
215 }
else if ( iEdge == 2 ) {
218 }
else if ( iEdge == 3 ) {
236 for (
int iEdge = 1; iEdge < 4; iEdge++ ) {
241 const auto &coord1 =
giveNode( mask.
at(1) )->giveCoordinates();
242 const auto &coord2 =
giveNode( mask.
at(2) )->giveCoordinates();
244 double dx = coord2.at(1) - coord1.at(1);
245 double dy = coord2.at(2) - coord1.at(2);
247 double x1 = coord1.at(1);
248 double y1 = coord1.at(2);
250 double x2 = coord2.at(1);
251 double y2 = coord2.at(2);
267 double f1 = ( dx * x2 + dy * y2 ) / 3.0 + ( dx * x1 + dy * y1 ) / 6.0;
268 double f2 = ( dx * x1 + dy * y1 ) / 3.0 + ( dx * x2 + dy * y2 ) / 6.0;
271 double theta = this->
giveDofManager(4)->giveDofWithID(24)->giveUnknown(VM_Total, tStep);
276 reducedAnswer.
at(1) = f1 * theta;
277 reducedAnswer.
at(2) = f2 * theta;
300Tr_Warp :: giveDofManDofIDMask(
int inode,
IntArray &answer)
const
303 if ( inode > 0 && inode < 4 ) {
314Tr_Warp :: giveInternalDofManDofIDMask(
int inode,
IntArray &answer)
const
322Tr_Warp :: giveInternalDofManager(
int i)
const
343Tr_Warp :: SpatialLocalizerI_containsPoint(
const FloatArray &coords)
365 OOFEM_ERROR(
"ZZNodalRecoveryMI_computeNNMatrix: Element %d not providing interpolation", this->
giveNumber() );
369 fullAnswer.
resize(size, size);
373 for (
auto &gp : *iRule ) {
383 for (
int i = 1; i <= 3; i++ ) {
385 for (
int j = 1; j <= size; j++ ) {
386 sum += fullAnswer.
at(i, j);
405 for (
auto &gp : *iRule ) {
408 if ( !this->
giveIPValue(stressVector, gp, type, tStep) ) {
420 answer.
at(4, i) = 0.0;
426Tr_Warp :: postInitialize()
428 Element :: postInitialize();
#define REGISTER_Element(class)
Node * giveNode(int i) const
IntArray dofManArray
Array containing dofmanager numbers.
virtual int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords)
int numberOfDofMans
Number of dofmanagers.
std::vector< std ::unique_ptr< IntegrationRule > > integrationRulesArray
virtual int giveNumberOfDofManagers() const
DofManager * giveDofManager(int i) const
CrossSection * giveCrossSection()
virtual IntegrationRule * giveDefaultIntegrationRulePtr()
virtual bool computeLocalCoordinates(FloatArray &answer, const FloatArray &gcoords)
virtual void evalN(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const =0
Domain * giveDomain() const
void assemble(const FloatArray &fe, const IntArray &loc)
void zero()
Zeroes all coefficients of receiver.
void add(const FloatArray &src)
void resizeWithData(Index, Index)
void resize(Index rows, Index cols)
*Sets size of receiver to be an empty matrix It will have zero rows and zero columns size void clear()
int giveNumberOfColumns() const
Returns number of columns of receiver.
void beNMatrixOf(const FloatArray &n, int nsd)
void plusDyadUnsym(const FloatArray &a, const FloatArray &b, double dV)
void zero()
Zeroes all coefficient of receiver.
void plusDyadSymmUpper(const FloatArray &a, double dV)
double at(std::size_t i, std::size_t j) const
void getCenterOfGravity(FloatMatrix &answer)
const FloatArray & giveNaturalCoordinates() const
Returns coordinate array of receiver.
Element * giveElement()
Returns corresponding element to receiver.
double giveWeight()
Returns integration weight of receiver.
SpatialLocalizerInterface(Element *element)
void giveCharacteristicVector(FloatArray &answer, CharType type, ValueModeType mode, TimeStep *tStep) override
StructuralCrossSection * giveStructuralCrossSection()
Helper function which returns the structural cross-section for the element.
StructuralElement(int n, Domain *d)
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
void computeEdgeLoadVectorAt(FloatArray &answer, Load *load, TimeStep *tStep, ValueModeType mode)
void transformCoordinates(FloatArray &answer, FloatArray &c, const int CGnumber)
FEInterpolation * giveInterpolation() const override
double computeVolumeAround(GaussPoint *gp) override
void giveEdgeDofMapping(IntArray &answer, int iEdge) const override
int giveWarpingNodeNumber() const
ZZNodalRecoveryModelInterface(Element *element)
Constructor.
double sum(const FloatArray &x)
@ ZZNodalRecoveryModelInterfaceType
@ SpatialLocalizerInterfaceType