80 double x01, y01, z01, x02, y02, z02;
106 Bloc.
at(1, 6) = -y01;
107 Bloc.
at(2, 4) = -z01;
110 Bloc.
at(3, 5) = -x01;
116 Bloc.
at(1, 11) = -z02;
117 Bloc.
at(1, 12) = y02;
118 Bloc.
at(2, 10) = z02;
119 Bloc.
at(2, 12) = -x02;
120 Bloc.
at(3, 10) = -y02;
121 Bloc.
at(3, 11) = x02;
154 Bloc.
at(1, 6) = -y01;
155 Bloc.
at(2, 4) = -z01;
158 Bloc.
at(3, 5) = -x01;
164 Bloc.
at(1, 11) = -z02;
165 Bloc.
at(1, 12) = y02;
166 Bloc.
at(2, 10) = z02;
167 Bloc.
at(2, 12) = -x02;
168 Bloc.
at(3, 10) = -y02;
169 Bloc.
at(3, 11) = x02;
195 Tper.
at(10, 10) = 1.;
196 Tper.
at(11, 11) = 1.;
197 Tper.
at(12, 12) = 1.;
199 Tper.
at(7, 13) =
kxa;
200 Tper.
at(8, 14) =
kyb;
201 Tper.
at(9, 15) =
kzc;
202 Tper.
at(7, 16) =
kyb;
203 Tper.
at(8, 17) =
kzc;
204 Tper.
at(9, 18) =
kxa;
215void CohesiveSurface3d :: computeGaussPoints()
234CohesiveSurface3d :: giveDofManDofIDMask(
int inode,
IntArray &answer)
const
236 answer = {D_u, D_v, D_w, R_u, R_v, R_w};
255CohesiveSurface3d :: giveLength()
269 length = sqrt(dx * dx + dy * dy + dz * dz);
281 length = sqrt(dx * dx + dy * dy + dz * dz);
293CohesiveSurface3d :: evaluateCenter()
296 double RA, RB, L, aux;
303 aux = 0.5 + ( RA - RB ) / ( 2. * L );
308 for (
int i = 1; i <= 3; i++ ) {
325CohesiveSurface3d :: evaluateLocalCoordinateSystem()
353 if ( fabs( lx.at(1) ) > fabs( lx.at(2) ) ) {
361 ly.beVectorProductOf(lz, lx);
365 for (
int i = 1; i <= 3; i++ ) {
366 lcs.at(1, i) = lx.at(i);
367 lcs.at(2, i) = ly.at(i);
368 lcs.at(3, i) = lz.
at(i);
377 StructuralElement :: initializeFrom(ir, priority);
386CohesiveSurface3d :: postInitialize()
389 StructuralElement :: postInitialize();
440 if ( !
gc.testElementGraphicActivity(
this) ) {
454 EASValsSetColor(
gc.getElementColor() );
455 EASValsSetEdgeColor(
gc.getElementEdgeColor() );
456 EASValsSetEdgeFlag(
true);
476 go = CreateLine3D(pl);
477 EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | LAYER_MASK, go);
478 EGAttachObject(go, ( EObjectP )
this);
479 EMAddGraphicsToModel(ESIModel(), go);
484 GraphicObj *go1, *go2;
486 if ( !
gc.testElementGraphicActivity(
this) ) {
490 double defScale =
gc.getDefScale();
493 EASValsSetColor(
gc.getDeformedElementColor() );
508 EASValsSetMType(FILLED_CIRCLE_MARKER);
509 EASValsSetColor(
gc.getNodeColor() );
513 go1 = CreateMarker3D(p);
514 EGWithMaskChangeAttributes(COLOR_MASK | LAYER_MASK | MTYPE_MASK | MSIZE_MASK, go1);
515 EMAddGraphicsToModel(ESIModel(), go1);
520 p [ 1 ].x +=
kxa +
kxa * defScale * ( nodeC->
giveDofWithID(D_u)->giveUnknown(VM_Total, tStep) ) +
kyb * defScale * ( nodeC->
giveDofWithID(R_u)->giveUnknown(VM_Total, tStep) );
521 p [ 1 ].y +=
kyb +
kyb * defScale * ( nodeC->
giveDofWithID(D_v)->giveUnknown(VM_Total, tStep) ) +
kzc * defScale * ( nodeC->
giveDofWithID(R_v)->giveUnknown(VM_Total, tStep) );
522 p [ 1 ].z +=
kzc +
kzc * defScale * ( nodeC->
giveDofWithID(D_w)->giveUnknown(VM_Total, tStep) ) +
kxa * defScale * ( nodeC->
giveDofWithID(R_w)->giveUnknown(VM_Total, tStep) );
523 EASValsSetMType(CIRCLE_MARKER);
527 go2 = CreateMarker3D(p + 1);
528 EGWithMaskChangeAttributes(COLOR_MASK | LAYER_MASK | MTYPE_MASK | MSIZE_MASK, go2);
529 EMAddGraphicsToModel(ESIModel(), go2);
536 if ( !
gc.testElementGraphicActivity(
this) ) {
546 int indx =
gc.giveIntVarIndx();
549 for (
int i = 0; i < 8; i++ ) {
550 s [ i ] = val.
at(indx);
553 gc.updateFringeTableMinMax(s, 1);
558 if (
gc.getInternalVarsDefGeoFlag() ) {
560 double defScale =
gc.getDefScale();
570 p [ 2 ].x +=
kxa +
kxa * defScale * ( nodeC->
giveDofWithID(D_u)->giveUnknown(VM_Total, tStep) ) +
kyb * defScale * ( nodeC->
giveDofWithID(R_u)->giveUnknown(VM_Total, tStep) );
571 p [ 2 ].y +=
kyb +
kyb * defScale * ( nodeC->
giveDofWithID(D_v)->giveUnknown(VM_Total, tStep) ) +
kzc * defScale * ( nodeC->
giveDofWithID(R_v)->giveUnknown(VM_Total, tStep) );
572 p [ 2 ].z +=
kzc +
kzc * defScale * ( nodeC->
giveDofWithID(D_w)->giveUnknown(VM_Total, tStep) ) +
kxa * defScale * ( nodeC->
giveDofWithID(R_w)->giveUnknown(VM_Total, tStep) );
593 double d = 0.1 * ( r1 + r2 );
594 p [ 1 ].x = 0.5 * ( p [ 0 ].x + p [ 2 ].x - d *
lcs.at(2, 1) - d *
lcs.at(3, 1) );
595 p [ 1 ].y = 0.5 * ( p [ 0 ].y + p [ 2 ].y - d *
lcs.at(2, 2) - d *
lcs.at(3, 2) );
596 p [ 1 ].z = 0.5 * ( p [ 0 ].z + p [ 2 ].z - d *
lcs.at(2, 3) - d *
lcs.at(3, 3) );
597 p [ 3 ].x = p [ 1 ].x + d *
lcs.at(2, 1);
598 p [ 3 ].y = p [ 1 ].y + d *
lcs.at(2, 2);
599 p [ 3 ].z = p [ 1 ].z + d *
lcs.at(2, 3);
601 for (
int i = 5; i < 8; i += 2 ) {
602 p [ i ].x = p [ i - 4 ].x + d *
lcs.at(3, 1);
603 p [ i ].y = p [ i - 4 ].y + d *
lcs.at(3, 2);
604 p [ i ].z = p [ i - 4 ].z + d *
lcs.at(3, 3);
610 GraphicObj *go = CreateHexahedronWD(p, s);
614 EASValsSetFillStyle(FILL_SOLID);
617 EGWithMaskChangeAttributes(WIDTH_MASK | FILL_MASK | LAYER_MASK, go);
618 EMAddGraphicsToModel(ESIModel(), go);
#define REGISTER_Element(class)
static ParamKey IPK_CohesiveSurface3d_area
static ParamKey IPK_CohesiveSurface3d_ky
static ParamKey IPK_CohesiveSurface3d_kx
void evaluateLocalCoordinateSystem()
FloatArray center
Coordinates of the center of the cohesive surface.
FloatMatrix lcs
Matrix defining the local coordinate system.
static ParamKey IPK_CohesiveSurface3d_kz
double giveCoordinate(int i) const
Dof * giveDofWithID(int dofID) const
Node * giveNode(int i) const
IntArray dofManArray
Array containing dofmanager numbers.
static ParamKey IPK_Element_nodes
virtual int giveNumberOfNodes() const
int numberOfDofMans
Number of dofmanagers.
std::vector< std ::unique_ptr< IntegrationRule > > integrationRulesArray
CrossSection * giveCrossSection()
Domain * giveDomain() const
int number
Component number.
void beVectorProductOf(const FloatArray &v1, const FloatArray &v2)
void resize(Index rows, Index cols)
void beProductOf(const FloatMatrix &a, const FloatMatrix &b)
void zero()
Zeroes all coefficient of receiver.
double at(std::size_t i, std::size_t j) const
virtual double giveUpdatedCoordinate(int ic, TimeStep *tStep, double scale=1.)
double giveRadius() const
Returns the radius of the particle.
StructuralElement(int n, Domain *d)
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
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_ELEMENT_ERROR_IFNOTSET(_pm, _componentnum, _paramkey)
#define PM_UPDATE_PARAMETER(_val, _pm, _ir, _componentnum, _paramkey, _prio)