|
OOFEM 3.0
|
Protected Member Functions | |
| virtual int | giveNumberOfSharedElements () const =0 |
| void | giveCharacteristicMatrix (FloatMatrix &answer, CharType type, TimeStep *tStep) override |
| void | giveCharacteristicVector (FloatArray &answer, CharType type, ValueModeType mode, TimeStep *tStep) override |
| void | giveCharacteristicMatrixFromBC (FloatMatrix &answer, CharType type, TimeStep *tStep, GeneralBoundaryCondition *bc, int boundaryID) override |
| Protected Member Functions inherited from oofem::SADGElement | |
| virtual int | giveNumberOfSDofs () const =0 |
| virtual const Variable * | getScalarVariable () const =0 |
| virtual void | computeGaussPoints () |
Additional Inherited Members | |
| Public Member Functions inherited from oofem::SADGElement | |
| SADGElement (int n, Domain *d) | |
| void | getDofManLocalCodeNumbers (IntArray &answer, const Variable::VariableQuantity q, int num) const override |
| void | getInternalDofManLocalCodeNumbers (IntArray &answer, const Variable::VariableQuantity q, int num) const override |
| void | giveCharacteristicMatrix (FloatMatrix &answer, CharType type, TimeStep *tStep) override |
| void | giveCharacteristicVector (FloatArray &answer, CharType type, ValueModeType mode, TimeStep *tStep) override |
| void | giveCharacteristicMatrixFromBC (FloatMatrix &answer, CharType type, TimeStep *tStep, GeneralBoundaryCondition *bc, int boundaryID) override |
| virtual void | giveCharacteristicVectorFromBC (FloatArray &answer, CharType type, ValueModeType mode, TimeStep *tStep, GeneralBoundaryCondition *bc, int boundaryID) override |
| void | computeBoundarySurfaceLoadVector (FloatArray &answer, BoundaryLoad *load, int boundary, CharType type, ValueModeType mode, TimeStep *tStep, bool global=true) override |
| void | computeBoundaryEdgeLoadVector (FloatArray &answer, BoundaryLoad *load, int boundary, CharType type, ValueModeType mode, TimeStep *tStep, bool global=true) override |
| void | computeLoadVector (FloatArray &answer, BodyLoad *load, CharType type, ValueModeType mode, TimeStep *tStep) override |
| int | computeFluxLBToLRotationMatrix (FloatMatrix &answer, int iSurf, const FloatArray &lc, const Variable::VariableQuantity q, char btype) override |
| Public Member Functions inherited from oofem::MPElement | |
| MPElement (int n, Domain *aDomain) | |
| void | initialize () |
| void | integrateTerm_dw (FloatMatrix &answer, const Term &term, IntegrationRule *iRule, TimeStep *tstep) |
| void | integrateTerm_c (FloatArray &answer, const Term &term, IntegrationRule *iRule, TimeStep *tstep) |
| void | integrateSurfaceTerm_dw (FloatMatrix &answer, const Term &term, IntegrationRule *iRule, int isurf, TimeStep *tstep) |
| void | integrateSurfaceTerm_c (FloatArray &answer, const Term &term, IntegrationRule *iRule, int isurf, TimeStep *tstep) |
| void | integrateEdgeTerm_dw (FloatMatrix &answer, const Term &term, IntegrationRule *iRule, int iedge, TimeStep *tstep) |
| void | integrateEdgeTerm_c (FloatArray &answer, const Term &term, IntegrationRule *iRule, int iedge, TimeStep *tstep) |
| virtual void | getLocalCodeNumbers (IntArray &answer, const Variable::VariableQuantity q) const |
| virtual int | getNumberOfSurfaceDOFs () const =0 |
| virtual int | getNumberOfEdgeDOFs () const =0 |
| virtual void | getSurfaceLocalCodeNumbers (IntArray &answer, const Variable::VariableQuantity q) const =0 |
| virtual void | getEdgeLocalCodeNumbers (IntArray &answer, const Variable::VariableQuantity q) const =0 |
| virtual void | getSurfaceElementCodeNumbers (IntArray &answer, const Variable::VariableQuantity q, int isurf) const |
| Returns element code numbers of the unknowns associated with given boundary entity. | |
| virtual void | getEdgeElementCodeNumbers (IntArray &answer, const Variable::VariableQuantity q, int isurf) const |
| virtual void | getBoundaryUnknownVector (FloatArray &answer, const Variable *field, ValueModeType mode, int ibc, char bt, TimeStep *tStep) |
| void | assembleTermContribution (FloatMatrix &answer, FloatMatrix &contrib, const Term &t) |
| Assembles the partial element contribution into local element matrix. | |
| void | assembleTermContributionT (FloatMatrix &answer, FloatMatrix &contrib, const Term &t) |
| void | assembleTermContribution (FloatArray &answer, FloatArray &contrib, const Term &t) |
| virtual const void | getUnknownVector (FloatArray &answer, const Variable *field, ValueModeType mode, TimeStep *tstep) |
| Returns vector of nodal unknowns for given Variable. | |
| virtual double | computeSurfaceVolumeAround (GaussPoint *igp, int iSurf) |
| virtual double | computeEdgeVolumeAround (GaussPoint *igp, int iEdge) |
| virtual double | computeVolumeAround (GaussPoint *igp) override |
| FEInterpolation * | giveInterpolation () const override |
| IntArray | giveBoundarySurfaceNodes (int boundary, bool includeHierarchical=false) const override |
| IntArray | giveBoundaryEdgeNodes (int boundary, bool includeHierarchical=false) const override |
| Public Member Functions inherited from oofem::Element | |
| Element (int n, Domain *aDomain) | |
| Element (const Element &src)=delete | |
| Element & | operator= (const Element &src)=delete |
| virtual | ~Element () |
| Virtual destructor. | |
| void | giveLocationArray (IntArray &locationArray, const UnknownNumberingScheme &s, IntArray *dofIds=NULL) const |
| void | giveLocationArray (IntArray &locationArray, const IntArray &dofIDMask, const UnknownNumberingScheme &s, IntArray *dofIds=NULL) const |
| virtual void | giveBoundaryLocationArray (IntArray &locationArray, const IntArray &bNodes, const UnknownNumberingScheme &s, IntArray *dofIds=NULL) |
| virtual void | giveBoundaryLocationArray (IntArray &locationArray, const IntArray &bNodes, const IntArray &dofIDMask, const UnknownNumberingScheme &s, IntArray *dofIds=NULL) |
| virtual int | giveNumberOfDofs () |
| virtual int | giveNumberOfInternalDofManagers () const |
| virtual DofManager * | giveInternalDofManager (int i) const |
| virtual void | setInternalDofManager (int num, std::unique_ptr< DofManager > dm) |
| virtual double | giveCharacteristicValue (CharType type, TimeStep *tStep) |
| virtual void | computeTangentFromSurfaceLoad (FloatMatrix &answer, BoundaryLoad *load, int boundary, MatResponseMode rmode, TimeStep *tStep) |
| virtual void | computeTangentFromEdgeLoad (FloatMatrix &answer, BoundaryLoad *load, int boundary, MatResponseMode rmode, TimeStep *tStep) |
| const IntArray & | giveBodyLoadList () const |
| const IntArray & | giveBoundaryLoadList () const |
| void | computeVectorOf (ValueModeType u, TimeStep *tStep, FloatArray &answer) |
| void | computeVectorOf (const IntArray &dofIDMask, ValueModeType u, TimeStep *tStep, FloatArray &answer, bool padding=false) |
| void | computeBoundaryVectorOf (const IntArray &bNodes, const IntArray &dofIDMask, ValueModeType u, TimeStep *tStep, FloatArray &answer, bool padding=false) |
| void | computeVectorOf (PrimaryField &field, const IntArray &dofIDMask, ValueModeType u, TimeStep *tStep, FloatArray &answer, bool padding=false) |
| void | computeVectorOfPrescribed (ValueModeType u, TimeStep *tStep, FloatArray &answer) |
| void | computeVectorOfPrescribed (const IntArray &dofIDMask, ValueModeType type, TimeStep *tStep, FloatArray &answer) |
| virtual int | computeNumberOfDofs () |
| virtual int | computeNumberOfGlobalDofs () |
| int | computeNumberOfPrimaryMasterDofs () |
| virtual bool | computeGtoLRotationMatrix (FloatMatrix &answer) |
| virtual bool | giveRotationMatrix (FloatMatrix &answer) |
| virtual bool | computeDofTransformationMatrix (FloatMatrix &answer, const IntArray &nodes, bool includeInternal) |
| virtual void | giveDofManDofIDMask (int inode, IntArray &answer) const |
| virtual void | giveInternalDofManDofIDMask (int inode, IntArray &answer) const |
| virtual void | giveElementDofIDMask (IntArray &answer) const |
| virtual void | computeField (ValueModeType mode, TimeStep *tStep, const FloatArray &lcoords, FloatArray &answer) |
| virtual double | computeVolumeAreaOrLength () |
| Computes the volume, area or length of the element depending on its spatial dimension. | |
| double | computeMeanSize () |
| virtual double | computeVolume () |
| virtual double | computeArea () |
| virtual double | computeLength () |
| virtual IntArray | giveBoundaryNodes (int boundary) const |
| virtual std::unique_ptr< IntegrationRule > | giveBoundaryEdgeIntegrationRule (int order, int boundary) |
| virtual std::unique_ptr< IntegrationRule > | giveBoundarySurfaceIntegrationRule (int order, int boundary) |
| int | giveDofManagerNumber (int i) const |
| const IntArray & | giveDofManArray () const |
| void | addDofManager (DofManager *dMan) |
| DofManager * | giveDofManager (int i) const |
| Node * | giveNode (int i) const |
| virtual ElementSide * | giveSide (int i) const |
| virtual FEInterpolation * | giveInterpolation (DofIDItem id) const |
| virtual const FEInterpolation * | getGeometryInterpolation () const |
| virtual Material * | giveMaterial () |
| int | giveMaterialNumber () const |
| CrossSection * | giveCrossSection () |
| int | getActivityTimeFunctionNumber () |
| void | setActivityTimeFunctionNumber (int funcIndx) |
| void | setMaterial (int matIndx) |
| virtual void | setCrossSection (int csIndx) |
| virtual int | giveNumberOfDofManagers () const |
| void | setNumberOfDofManagers (int i) |
| Sets number of element dof managers. | |
| virtual int | giveNumberOfNodes () const |
| void | setDofManagers (const IntArray &dmans) |
| void | setDofManager (int id, int dm) |
| void | setBodyLoads (const IntArray &bodyLoads) |
| void | setIntegrationRules (std ::vector< std ::unique_ptr< IntegrationRule > > irlist) |
| virtual integrationDomain | giveIntegrationDomain () const |
| virtual MaterialMode | giveMaterialMode () |
| virtual int | giveIntegrationRuleLocalCodeNumbers (IntArray &answer, IntegrationRule &ie) |
| int | giveRegionNumber () |
| virtual void | updateInternalState (TimeStep *tStep) |
| virtual void | updateYourself (TimeStep *tStep) |
| virtual void | initializeYourself (TimeStep *timeStepWhenICApply) |
| int | checkConsistency () override |
| virtual bool | isActivated (TimeStep *tStep) |
| virtual bool | isCast (TimeStep *tStep) |
| virtual void | initForNewStep () |
| virtual Element_Geometry_Type | giveGeometryType () const =0 |
| virtual Element_Geometry_Type | giveEdgeGeometryType (int id) const |
| Returns the receiver edge geometry type. | |
| virtual Element_Geometry_Type | giveSurfaceGeometryType (int id) const |
| Returns the receiver surface geometry type. | |
| virtual int | giveSpatialDimension () |
| virtual int | giveNumberOfBoundarySides () |
| Returns number of boundaries (entities of element_dimension-1: points, edges, surfaces). | |
| virtual int | giveNumberOfEdges () const |
| virtual int | giveNumberOfSurfaces () const |
| virtual int | giveDefaultIntegrationRule () const |
| virtual IntegrationRule * | giveDefaultIntegrationRulePtr () |
| int | giveNumberOfIntegrationRules () |
| virtual IntegrationRule * | giveIntegrationRule (int i) |
| std::vector< std ::unique_ptr< IntegrationRule > > & | giveIntegrationRulesArray () |
| virtual int | testElementExtension (ElementExtension ext) |
| virtual int | giveIPValue (FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) |
| int | giveGlobalIPValue (FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) |
| virtual double | giveLengthInDir (const FloatArray &normalToCrackPlane) |
| virtual double | giveCharacteristicLength (const FloatArray &normalToCrackPlane) |
| double | giveCharacteristicLengthForPlaneElements (const FloatArray &normalToCrackPlane) |
| double | giveCharacteristicLengthForAxisymmElements (const FloatArray &normalToCrackPlane) |
| virtual double | giveCharacteristicSize (GaussPoint *gp, FloatArray &normalToCrackPlane, ElementCharSizeMethod method) |
| virtual double | giveParentElSize () const |
| virtual void | updateBeforeNonlocalAverage (TimeStep *tStep) |
| virtual int | computeGlobalCoordinates (FloatArray &answer, const FloatArray &lcoords) |
| virtual bool | computeLocalCoordinates (FloatArray &answer, const FloatArray &gcoords) |
| virtual int | giveLocalCoordinateSystem (FloatMatrix &answer) |
| virtual void | giveLocalCoordinateSystemVector (InternalStateType isttype, FloatArray &answer) |
| virtual void | computeMidPlaneNormal (FloatArray &answer, const GaussPoint *gp) |
| virtual int | adaptiveMap (Domain *oldd, TimeStep *tStep) |
| virtual int | mapStateVariables (Domain &iOldDom, const TimeStep &iTStep) |
| virtual int | adaptiveUpdate (TimeStep *tStep) |
| virtual int | adaptiveFinish (TimeStep *tStep) |
| void | updateLocalNumbering (EntityRenumberingFunctor &f) override |
| template<class T> | |
| void | ipEvaluator (T *src, void(T ::*f)(GaussPoint *gp)) |
| Integration point evaluator, loops over receiver IP's and calls given function (passed as f parameter) on them. The IP is parameter to function f. | |
| template<class T, class S> | |
| void | ipEvaluator (T *src, void(T ::*f)(GaussPoint *, S &), S &_val) |
| Integration point evaluator, loops over receiver IP's and calls given function (passed as f parameter) on them. The IP is parameter to function f as well as additional array. | |
| virtual void | drawYourself (oofegGraphicContext &gc, TimeStep *tStep) |
| virtual void | drawAnnotation (oofegGraphicContext &gc, TimeStep *tStep) |
| virtual void | drawRawGeometry (oofegGraphicContext &gc, TimeStep *tStep) |
| virtual void | drawDeformedGeometry (oofegGraphicContext &gc, TimeStep *tStep, UnknownType) |
| virtual void | drawScalar (oofegGraphicContext &gc, TimeStep *tStep) |
| virtual void | drawSpecial (oofegGraphicContext &gc, TimeStep *tStep) |
| virtual void | giveLocalIntVarMaxMin (oofegGraphicContext &gc, TimeStep *tStep, double &emin, double &emax) |
| virtual int | giveInternalStateAtNode (FloatArray &answer, InternalStateType type, InternalStateMode mode, int node, TimeStep *tStep) |
| virtual int | giveInternalStateAtSide (FloatArray &answer, InternalStateType type, InternalStateMode mode, int side, TimeStep *tStep) |
| virtual void | showSparseMtrxStructure (CharType mtrx, oofegGraphicContext &gc, TimeStep *tStep) |
| Shows sparse structure. | |
| virtual void | showExtendedSparseMtrxStructure (CharType mtrx, oofegGraphicContext &gc, TimeStep *tStep) |
| Shows extended sparse structure (for example, due to nonlocal interactions for tangent stiffness). | |
| int | giveLabel () const |
| int | giveGlobalNumber () const |
| void | setGlobalNumber (int num) |
| elementParallelMode | giveParallelMode () const |
| void | setParallelMode (elementParallelMode _mode) |
| Sets parallel mode of element. | |
| virtual elementParallelMode | giveKnotSpanParallelMode (int) const |
| int | packUnknowns (DataStream &buff, TimeStep *tStep) |
| int | unpackAndUpdateUnknowns (DataStream &buff, TimeStep *tStep) |
| int | estimatePackSize (DataStream &buff) |
| const IntArray * | givePartitionList () const |
| void | setPartitionList (IntArray &pl) |
| virtual double | predictRelativeComputationalCost () |
| virtual double | giveRelativeSelfComputationalCost () |
| virtual double | predictRelativeRedistributionCost () |
| IntArray * | giveBodyLoadArray () |
| Returns array containing load numbers of loads acting on element. | |
| IntArray * | giveBoundaryLoadArray () |
| Returns array containing load numbers of boundary loads acting on element. | |
| void | initializeFrom (InputRecord &ir, int priority) override |
| void | initializeFinish () override |
| void | postInitialize () override |
| Performs post initialization steps. | |
| void | giveInputRecord (DynamicInputRecord &input) override |
| void | saveContext (DataStream &stream, ContextMode mode) override |
| void | restoreContext (DataStream &stream, ContextMode mode) override |
| const char * | giveClassName () const override |
| void | printOutputAt (FILE *file, TimeStep *tStep) override |
| virtual const IntArray | giveLocation () |
| virtual void | recalculateCoordinates (int nodeNumber, FloatArray &coords) |
| void | setSharedEdgeID (int iedge, int globalID) |
| void | setSharedSurfaceID (int isurf, int globalID) |
| const IntArray * | giveSharedEdgeIDs () const |
| const IntArray * | giveSharedSurfaceIDs () const |
| Public Member Functions inherited from oofem::FEMComponent | |
| FEMComponent (int n, Domain *d) | |
| virtual | ~FEMComponent ()=default |
| Virtual destructor. | |
| virtual const char * | giveInputRecordName () const =0 |
| Domain * | giveDomain () const |
| virtual void | setDomain (Domain *d) |
| int | giveNumber () const |
| void | setNumber (int num) |
| virtual void | initializeFrom (InputRecord &ir) |
| virtual void | printYourself () |
| Prints receiver state on stdout. Useful for debugging. | |
| virtual Interface * | giveInterface (InterfaceType t) |
| std::string | errorInfo (const char *func) const |
| Returns string for prepending output (used by error reporting macros). | |
| Static Public Attributes inherited from oofem::Element | |
| static ParamKey | IPK_Element_mat |
| static ParamKey | IPK_Element_crosssect |
| static ParamKey | IPK_Element_nodes |
| static ParamKey | IPK_Element_bodyload |
| static ParamKey | IPK_Element_boundaryload |
| static ParamKey | IPK_Element_lcs |
| static ParamKey | IPK_Element_partitions |
| static ParamKey | IPK_Element_remote |
| static ParamKey | IPK_Element_activityTimeFunction |
| static ParamKey | IPK_Element_nip |
| Protected Attributes inherited from oofem::SADGElement | |
| std ::vector< ElementDofManager * > | internalDofManagers |
| Protected Attributes inherited from oofem::Element | |
| int | numberOfDofMans |
| Number of dofmanagers. | |
| IntArray | dofManArray |
| Array containing dofmanager numbers. | |
| int | material |
| Number of associated material. | |
| int | crossSection |
| Number of associated cross section. | |
| IntArray | bodyLoadArray |
| IntArray | boundaryLoadArray |
| std::vector< std ::unique_ptr< IntegrationRule > > | integrationRulesArray |
| FloatMatrix | elemLocalCS |
| Transformation material matrix, used in orthotropic and anisotropic materials, global->local transformation. | |
| int | activityTimeFunction |
| Element activity time function. If defined, nonzero value indicates active receiver, zero value inactive element. | |
| int | globalNumber |
| int | numberOfGaussPoints |
| elementParallelMode | parallel_mode |
| Determines the parallel mode of the element. | |
| IntArray | partitions |
| IntArray | globalEdgeIDs |
| IntArray | globalSurfaceIDs |
| Protected Attributes inherited from oofem::FEMComponent | |
| int | number |
| Component number. | |
| Domain * | domain |
| Link to domain object, useful for communicating with other FEM components. | |
|
inlineoverrideprotectedvirtual |
Computes characteristic matrix of receiver of requested type in given time step.
| answer | Requested characteristic matrix (stiffness, tangent, ...). If element has no capability to compute requested type of characteristic matrix error function is invoked. |
| type | Id of characteristic component requested. |
| tStep | Time step when answer is computed. |
Reimplemented from oofem::Element.
Definition at line 198 of file sadg.C.
References oofem::FloatMatrix::assemble(), oofem::IntArray::at(), oofem::FloatMatrix::beDyadicProductOf(), oofem::FEInterpolation::boundaryEvalNormal(), oofem::FloatMatrix::clear(), oofem::FloatArray::dotProduct(), oofem::FEInterpolation::evalN(), gc, oofem::IntegrationRule::getIntegrationPoint(), oofem::Element::giveDefaultIntegrationRulePtr(), oofem::FEMComponent::giveDomain(), oofem::Domain::giveEngngModel(), oofem::EngngModel::giveField(), oofem::Element::giveGeometryType(), oofem::MPElement::giveInterpolation(), oofem::GaussPoint::giveNaturalCoordinates(), oofem::FEInterpolation::giveNsd(), oofem::Element::giveNumberOfDofManagers(), oofem::IntegrationRule::giveNumberOfIntegrationPoints(), giveNumberOfSharedElements(), oofem::GaussPoint::giveWeight(), oofem::FEInterpolation::local2global(), N, OOFEM_ERROR, oofem::FloatArray::resize(), oofem::FloatMatrix::resize(), oofem::IntArray::resize(), oofem::FloatMatrix::times(), and oofem::FloatMatrix::zero().
|
inlineoverrideprotectedvirtual |
Reimplemented from oofem::MPElement.
Definition at line 279 of file sadg.C.
References oofem::FloatMatrix::clear().
|
inlineoverrideprotectedvirtual |
Computes characteristic vector of receiver of requested type in given time step. If element has no capability to compute requested type of characteristic vector error function is invoked.
| answer | Requested characteristic vector. |
| type | Id of characteristic component requested. |
| mode | Determines mode of answer. |
| tStep | Time step when answer is computed. |
Reimplemented from oofem::Element.
Definition at line 275 of file sadg.C.
References OOFEM_ERROR.
|
protectedpure virtual |
Node numbers of dofs on shared edges/surfaces They are supposed to be stored for each neighbor boundary in matching order So for example for 2D triangle element:
and matching codeNumbers for the neighbor element are {5,4} The numbering should be such that the normal vector points from the first element to the second element so the normal vector should point outwards.
3|\ \4``|6 | \ \ | | A\ \B| | \ | 1-—2 5 */ public: SADGBoundaryElement(int n, Domain* d): SADGElement(n,d) {} /* this->neighbors = neighbors; this->boundaryIDs = boundaryIDs;
attempt to determine matching internal node numbers assuming that i-th internal DofNMan is matching the i-th node
for (int i=1; i<=neighbors.giveSize(); i++) { Element* neighbor = d->giveElement(neighbors.at(i)); IntArray bnodes; if (i==1) { bnodes = neighbor->giveInterpolation()->boundaryGiveNodes(boundaryIDs.at(i), neighbor->giveGeometryType()); // local numbers internalNodeNumbers.push_back(bnodes); } else { // need to find matching node numbers on opposite edge/surface IntArray neighborNodes = neighbor->giveDofManArray(); loop over nodes of first element and find matching node for (int j=1; j<=internalNodeNumbers[0].giveSize(); j++) { int node = d->giveElement(neighbors.at(1))->giveDofManagerNumber(internalNodeNumbers[0].at(j)); int indx; if ((indx = neighborNodes.findFirstIndexOf(node))) { bnodes.followedBy(indx); continue; } OOFEM_ERROR("Matching node not found"); } internalNodeNumbers.push_back(bnodes); } } }
Implemented in oofem::SADGBLine1.
Referenced by giveCharacteristicMatrix().