35 #include "../sm/Elements/Interfaces/cohsur3d.h" 44 #include "../sm/CrossSections/structuralinterfacecrosssection.h" 70 double x01, y01, z01, x02, y02, z02;
100 Bloc.
at(3, 5) = -x01;
106 Bloc.
at(1, 11) = -z02;
107 Bloc.
at(1, 12) = y02;
108 Bloc.
at(2, 10) = z02;
109 Bloc.
at(2, 12) = -x02;
110 Bloc.
at(3, 10) = -y02;
111 Bloc.
at(3, 11) = x02;
144 Bloc.
at(1, 6) = -y01;
145 Bloc.
at(2, 4) = -z01;
148 Bloc.
at(3, 5) = -x01;
154 Bloc.
at(1, 11) = -z02;
155 Bloc.
at(1, 12) = y02;
156 Bloc.
at(2, 10) = z02;
157 Bloc.
at(2, 12) = -x02;
158 Bloc.
at(3, 10) = -y02;
159 Bloc.
at(3, 11) = x02;
185 Tper.
at(10, 10) = 1.;
186 Tper.
at(11, 11) = 1.;
187 Tper.
at(12, 12) = 1.;
189 Tper.
at(7, 13) =
kxa;
190 Tper.
at(8, 14) =
kyb;
191 Tper.
at(9, 15) =
kzc;
192 Tper.
at(7, 16) =
kyb;
193 Tper.
at(8, 17) =
kzc;
194 Tper.
at(9, 18) =
kxa;
226 answer = {D_u, D_v, D_w, R_u, R_v, R_w};
259 length = sqrt(dx * dx + dy * dy + dz * dz);
271 length = sqrt(dx * dx + dy * dy + dz * dz);
286 double RA, RB, L, aux;
293 aux = 0.5 + ( RA - RB ) / ( 2. * L );
298 for (
int i = 1; i <= 3; i++ ) {
343 if ( fabs( lx.at(1) ) > fabs( lx.at(2) ) ) {
351 ly.beVectorProductOf(lz, lx);
355 for (
int i = 1; i <= 3; i++ ) {
356 lcs.
at(1, i) = lx.at(i);
357 lcs.
at(2, i) = ly.at(i);
452 EASValsSetEdgeFlag(
true);
472 go = CreateLine3D(pl);
473 EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | LAYER_MASK, go);
474 EGAttachObject(go, ( EObjectP )
this);
475 EMAddGraphicsToModel(ESIModel(), go);
480 GraphicObj *go1, *go2;
504 EASValsSetMType(FILLED_CIRCLE_MARKER);
509 go1 = CreateMarker3D(p);
510 EGWithMaskChangeAttributes(COLOR_MASK | LAYER_MASK | MTYPE_MASK | MSIZE_MASK, go1);
511 EMAddGraphicsToModel(ESIModel(), go1);
519 EASValsSetMType(CIRCLE_MARKER);
523 go2 = CreateMarker3D(p + 1);
524 EGWithMaskChangeAttributes(COLOR_MASK | LAYER_MASK | MTYPE_MASK | MSIZE_MASK, go2);
525 EMAddGraphicsToModel(ESIModel(), go2);
545 for (
int i = 0; i < 8; i++ ) {
546 s [ i ] = val.
at(indx);
589 double d = 0.1 * ( r1 + r2 );
590 p [ 1 ].x = 0.5 * ( p [ 0 ].x + p [ 2 ].x - d *
lcs.
at(2, 1) - d *
lcs.
at(3, 1) );
591 p [ 1 ].y = 0.5 * ( p [ 0 ].y + p [ 2 ].y - d *
lcs.
at(2, 2) - d *
lcs.
at(3, 2) );
592 p [ 1 ].z = 0.5 * ( p [ 0 ].z + p [ 2 ].z - d *
lcs.
at(2, 3) - d *
lcs.
at(3, 3) );
593 p [ 3 ].x = p [ 1 ].x + d *
lcs.
at(2, 1);
594 p [ 3 ].y = p [ 1 ].y + d *
lcs.
at(2, 2);
595 p [ 3 ].z = p [ 1 ].z + d *
lcs.
at(2, 3);
597 for (
int i = 5; i < 8; i += 2 ) {
598 p [ i ].x = p [ i - 4 ].x + d *
lcs.
at(3, 1);
599 p [ i ].y = p [ i - 4 ].y + d *
lcs.
at(3, 2);
600 p [ i ].z = p [ i - 4 ].z + d *
lcs.
at(3, 3);
606 GraphicObj *go = CreateHexahedronWD(p, s);
610 EASValsSetFillStyle(FILL_SOLID);
613 EGWithMaskChangeAttributes(WIDTH_MASK | FILL_MASK | LAYER_MASK, go);
614 EMAddGraphicsToModel(ESIModel(), go);
CrossSection * giveCrossSection()
int testElementGraphicActivity(Element *)
Test if particular element passed fulfills various filtering criteria for its graphics output...
IntArray dofManArray
Array containing dofmanager numbers.
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in full form.
void beVectorProductOf(const FloatArray &v1, const FloatArray &v2)
Computes vector product (or cross product) of vectors given as parameters, , and stores the result in...
FloatMatrix lcs
Matrix defining the local coordinate system.
double & at(int i)
Coefficient access function.
virtual void drawDeformedGeometry(oofegGraphicContext &gc, TimeStep *tStep, UnknownType)
#define OOFEG_RAW_GEOMETRY_LAYER
EPixel getElementEdgeColor()
double giveRadius() const
Returns the radius of the particle.
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]
virtual double giveUnknown(ValueModeType mode, TimeStep *tStep)=0
The key method of class Dof.
virtual void drawRawGeometry(oofegGraphicContext &gc, TimeStep *tStep)
virtual double giveCoordinate(int i)
Class implementing spherical particles as special nodes having a certain radius.
Class implementing an array of integers.
MatResponseMode
Describes the character of characteristic material matrix.
virtual double computeVolumeAround(GaussPoint *gp)
Returns volume related to given integration point.
#define OOFEG_DEFORMED_GEOMETRY_LAYER
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual int giveNumberOfNodes() const
Returns number of nodes of receiver.
int getInternalVarsDefGeoFlag()
EPixel getDeformedElementColor()
InternalStateType giveIntVarType()
Abstract base class for all "structural" finite elements.
virtual void computeStressVector(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep)
Computes the stress vector of receiver at given integration point, at time step tStep.
virtual void drawScalar(oofegGraphicContext &gc, TimeStep *tStep)
virtual int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords)
Computes the global coordinates from given element's local coordinates.
FloatArray center
Coordinates of the center of the cohesive surface.
virtual void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
Computes constitutive matrix of receiver.
#define OOFEG_RAW_GEOMETRY_WIDTH
UnknownType
Type representing particular unknown (its physical meaning).
void times(double f)
Multiplies receiver by factor f.
virtual double giveUpdatedCoordinate(int ic, TimeStep *tStep, double scale=1.)
Returns updated ic-th coordinate of receiver.
Base class for all structural interface cross section models.
double at(int i, int j) const
Coefficient access function.
virtual int setupIntegrationPoints(IntegrationRule &irule, int npoints, Element *element)
Sets up integration rule for the given element.
#define _IFT_CohSur3d_area
Class representing vector of real numbers.
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
void evaluateLocalCoordinateSystem()
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
Dof * giveDofWithID(int dofID) const
Returns DOF with given dofID; issues error if not present.
#define OOFEG_DEFORMED_GEOMETRY_WIDTH
std::vector< std::unique_ptr< IntegrationRule > > integrationRulesArray
List of integration rules of receiver (each integration rule contains associated integration points a...
void zero()
Zeroes all coefficient of receiver.
CohesiveSurface3d(int n, Domain *d)
virtual void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int li, int ui)
Computes the geometrical matrix of receiver in given integration point.
void updateFringeTableMinMax(double *s, int size)
virtual void giveDofManDofIDMask(int inode, IntArray &answer) const
Returns dofmanager dof mask for node.
void beProductOf(const FloatMatrix &a, const FloatMatrix &b)
Assigns to the receiver product of .
the oofem namespace is to define a context or scope in which all oofem names are defined.
Class implementing node in finite element mesh.
double normalize()
Normalizes receiver.
Node * giveNode(int i) const
Returns reference to the i-th node of element.
#define OOFEG_VARPLOT_PATTERN_LAYER
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Class representing integration point in finite element program.
virtual void computeGaussPoints()
Initializes the array of integration rules member variable.
#define OOFEM_WARNING(...)
Class representing solution step.
int numberOfDofMans
Number of dofmanagers.
Class representing Gaussian-quadrature integration rule.
void resize(int s)
Resizes receiver towards requested size.