53 #include <Emarkwd3d.h>
63IntElLine1 :: IntElLine1(
int n,
Domain *aDomain) :
79 answer.
at(1, 1) = answer.
at(2, 2) = -
N.at(1);
80 answer.
at(1, 3) = answer.
at(2, 4) = -
N.at(2);
82 answer.
at(1, 5) = answer.
at(2, 6) =
N.at(1);
83 answer.
at(1, 7) = answer.
at(2, 8) =
N.at(2);
88IntElLine1 :: computeGaussPoints()
111 double X1_i = 0.5 * ( this->
giveNode(i)->giveCoordinate(1) + this->
giveNode(i + numNodes / 2)->giveCoordinate(1) );
112 double X2_i = 0.5 * ( this->
giveNode(i)->giveCoordinate(2) + this->
giveNode(i + numNodes / 2)->giveCoordinate(2) );
113 G.
at(1) += dNdxi.
at(i, 1) * X1_i;
114 G.
at(2) += dNdxi.
at(i, 1) * X2_i;
125 double ds =
norm(G) * weight;
131 for (
int i = 1; i <=
N.giveSize(); i++ ) {
132 double X_i = 0.5 * ( this->
giveNode(i)->giveCoordinate(1) + this->
giveNode(i + numNodes / 2)->giveCoordinate(1) );
138 return ds * thickness;
146 StructuralInterfaceElement :: initializeFrom(ir, priority);
153 StructuralInterfaceElement :: postInitialize();
156 int arrayInd1 =
domain->giveDofManPlaceInArray(nodeInd1);
162 int arrayInd2 =
domain->giveDofManPlaceInArray(nodeInd2);
168 int arrayInd3 =
domain->giveDofManPlaceInArray(nodeInd3);
177 printf(
"Renumbering element %d\n.\n", this->
giveNumber());
183IntElLine1 :: giveDofManDofIDMask(
int inode,
IntArray &answer)
const
202 answer.
at(1, 1) = -G.at(2);
203 answer.
at(2, 1) = G.at(1);
204 answer.
at(1, 2) = G.at(1);
205 answer.
at(2, 2) = G.at(2);
209IntElLine1 :: giveInterpolation()
const
241 if ( (node == 1 ) || (node == 3) ) {
243 }
else if ( (node == 2 ) || (node == 4) ) {
247 nodeMap.
at(1) = 1/locCoord.
at(1);
251 answer.
at(1)=
N.at(1)*gpValsA.
at(1) +
N.at(2)*gpValsB.
at(1);
252 answer.
at(2)=
N.at(1)*gpValsA.
at(2) +
N.at(2)*gpValsB.
at(2);
253 answer.
at(3)=
N.at(1)*gpValsA.
at(3) +
N.at(2)*gpValsB.
at(3);
263 if ( !
gc.testElementGraphicActivity(
this) ) {
268 EASValsSetColor(
gc.getElementColor() );
270 p [ 0 ].x = ( FPNum ) this->
giveNode(1)->giveCoordinate(1);
271 p [ 0 ].y = ( FPNum ) this->
giveNode(1)->giveCoordinate(2);
273 p [ 1 ].x = ( FPNum ) this->
giveNode(2)->giveCoordinate(1);
274 p [ 1 ].y = ( FPNum ) this->
giveNode(2)->giveCoordinate(2);
276 go = CreateLine3D(p);
277 EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | LAYER_MASK, go);
278 EGAttachObject(go, ( EObjectP )
this);
279 EMAddGraphicsToModel(ESIModel(), go);
288 if ( !
gc.testElementGraphicActivity(
this) ) {
292 double defScale =
gc.getDefScale();
295 EASValsSetColor(
gc.getDeformedElementColor() );
297 p [ 0 ].x = ( FPNum ) this->
giveNode(1)->giveUpdatedCoordinate(1, tStep, defScale);
298 p [ 0 ].y = ( FPNum ) this->
giveNode(1)->giveUpdatedCoordinate(2, tStep, defScale);
300 p [ 1 ].x = ( FPNum ) this->
giveNode(2)->giveUpdatedCoordinate(1, tStep, defScale);
301 p [ 1 ].y = ( FPNum ) this->
giveNode(2)->giveUpdatedCoordinate(2, tStep, defScale);
303 go = CreateLine3D(p);
304 EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | LAYER_MASK, go);
305 EMAddGraphicsToModel(ESIModel(), go);
307 p [ 0 ].x = ( FPNum ) this->
giveNode(3)->giveUpdatedCoordinate(1, tStep, defScale);
308 p [ 0 ].y = ( FPNum ) this->
giveNode(3)->giveUpdatedCoordinate(2, tStep, defScale);
310 p [ 1 ].x = ( FPNum ) this->
giveNode(4)->giveUpdatedCoordinate(1, tStep, defScale);
311 p [ 1 ].y = ( FPNum ) this->
giveNode(4)->giveUpdatedCoordinate(2, tStep, defScale);
313 go = CreateLine3D(p);
314 EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | LAYER_MASK, go);
315 EMAddGraphicsToModel(ESIModel(), go);
321 int indx, result = 0;
328 if ( !
gc.testElementGraphicActivity(
this) ) {
343 indx =
gc.giveIntVarIndx();
347 p [ 0 ].x = ( FPNum ) gcoord.at(1);
348 p [ 0 ].y = ( FPNum ) gcoord.at(2);
351 val [ 0 ] = v1.
at(indx);
352 gc.updateFringeTableMinMax(val, 1);
356 EASValsSetMType(FILLED_CIRCLE_MARKER);
357 go = CreateMarkerWD3D(p, val [ 0 ]);
358 EGWithMaskChangeAttributes(LAYER_MASK | FILL_MASK | MTYPE_MASK, go);
359 EMAddGraphicsToModel(ESIModel(), go);
#define REGISTER_Element(class)
const FloatArray & giveCoordinates() const
Node * giveNode(int i) const
IntArray dofManArray
Array containing dofmanager numbers.
virtual int giveNumberOfNodes() const
int numberOfDofMans
Number of dofmanagers.
std::vector< std ::unique_ptr< IntegrationRule > > integrationRulesArray
CrossSection * giveCrossSection()
virtual IntegrationRule * giveDefaultIntegrationRulePtr()
int giveDofManagerNumber(int i) const
Domain * domain
Link to domain object, useful for communicating with other FEM components.
int number
Component number.
double & at(std::size_t i)
Index giveSize() const
Returns the size of receiver.
void resize(Index rows, Index cols)
void zero()
Zeroes all coefficient of receiver.
int giveNumberOfRows() const
Returns number of rows of receiver.
double at(std::size_t i, std::size_t j) const
const FloatArray & giveNaturalCoordinates() const
Returns coordinate array of receiver.
double giveWeight()
Returns integration weight of receiver.
virtual FloatArrayF< 2 > computeCovarBaseVectorAt(GaussPoint *gp) const
static ParamKey IPK_IntElLine1_axisymmode
void NodalAveragingRecoveryMI_computeNodalValue(FloatArray &answer, int node, InternalStateType type, TimeStep *tStep) override
bool axisymmode
Flag controlling axisymmetric mode (integration over unit circumferential angle).
Interface * giveInterface(InterfaceType interface) override
static FEI2dLineLin interp
FEInterpolation * giveInterpolation() const override
void postInitialize() override
Performs post initialization steps.
NodalAveragingRecoveryModelInterface()
Constructor.
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
StructuralInterfaceElement(int n, Domain *d)
int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords) override
double norm(const FloatArray &x)
GaussPoint IntegrationPoint
@ NodalAveragingRecoveryModelInterfaceType
double distance_square(const FloatArray &x, const FloatArray &y)
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]
#define OOFEG_VARPLOT_PATTERN_LAYER
#define OOFEG_DEFORMED_GEOMETRY_LAYER
#define OOFEG_DEFORMED_GEOMETRY_WIDTH
#define OOFEG_RAW_GEOMETRY_WIDTH
#define OOFEG_RAW_GEOMETRY_LAYER
#define PM_UPDATE_PARAMETER(_val, _pm, _ir, _componentnum, _paramkey, _prio)