OOFEM
2.4
OOFEM.org - Object Oriented Finite Element Solver
|
Base class for all structural interface cross section models. More...
#include <structuralinterfacecrosssection.h>
Public Member Functions | |
StructuralInterfaceCrossSection (int n, Domain *d) | |
Constructor. More... | |
virtual | ~StructuralInterfaceCrossSection () |
Destructor. More... | |
virtual IRResultType | initializeFrom (InputRecord *ir) |
Initializes receiver according to object description stored in input record. More... | |
virtual int | testCrossSectionExtension (CrossSectExtension ext) |
Returns nonzero, if receiver implements required extension. More... | |
StructuralInterfaceMaterial * | giveInterfaceMaterial () |
const FloatArray & | giveTraction (IntegrationPoint *ip) |
virtual int | checkConsistency () |
Allows programmer to test some internal data, before computation begins. More... | |
virtual int | giveIPValue (FloatArray &answer, GaussPoint *ip, InternalStateType type, TimeStep *tStep) |
Returns the integration point corresponding value in Reduced form. More... | |
virtual Material * | giveMaterial (IntegrationPoint *ip) |
Returns the material associated with the GP. More... | |
int | giveMaterialNumber () const |
void | setMaterialNumber (int matNum) |
virtual int | packUnknowns (DataStream &buff, TimeStep *tStep, GaussPoint *gp) |
Pack all necessary data of integration point (according to element parallel_mode) into given communication buffer. More... | |
virtual int | unpackAndUpdateUnknowns (DataStream &buff, TimeStep *tStep, GaussPoint *gp) |
Unpack and updates all necessary data of given integration point (according to element parallel_mode) into given communication buffer. More... | |
virtual int | estimatePackSize (DataStream &buff, GaussPoint *gp) |
Estimates the necessary pack size to hold all packed data of receiver. More... | |
virtual const char * | giveClassName () const |
virtual const char * | giveInputRecordName () const |
void | giveFirstPKTraction_1d (FloatArray &answer, GaussPoint *gp, const FloatArray &jump, const FloatMatrix &F, TimeStep *tStep) |
Computes the real stress vector for given strain and integration point. More... | |
void | giveFirstPKTraction_2d (FloatArray &answer, GaussPoint *gp, const FloatArray &jump, const FloatMatrix &F, TimeStep *tStep) |
void | giveFirstPKTraction_3d (FloatArray &answer, GaussPoint *gp, const FloatArray &jump, const FloatMatrix &F, TimeStep *tStep) |
void | giveEngTraction_1d (FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep) |
void | giveEngTraction_2d (FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep) |
void | giveEngTraction_3d (FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep) |
void | give1dStiffnessMatrix_dTdj (FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) |
void | give2dStiffnessMatrix_dTdj (FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) |
void | give3dStiffnessMatrix_dTdj (FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) |
void | give1dStiffnessMatrix_Eng (FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) |
void | give2dStiffnessMatrix_Eng (FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) |
void | give3dStiffnessMatrix_Eng (FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) |
Public Member Functions inherited from oofem::CrossSection | |
CrossSection (int n, Domain *d) | |
Constructor. More... | |
virtual | ~CrossSection () |
Destructor. More... | |
int | giveSetNumber () const |
virtual bool | hasProperty (CrossSectionProperty a) |
Returns true if the dictionary contains the requested property. More... | |
virtual double | give (CrossSectionProperty a, GaussPoint *gp) |
Returns the value of cross section property at given point. More... | |
virtual double | give (CrossSectionProperty a, const FloatArray &coords, Element *elem, bool local=true) |
Returns the value of cross section property at given point (belonging to given element). More... | |
virtual double | give (int aProperty, GaussPoint *gp) |
Returns the value of cross section property. More... | |
virtual bool | isCharacteristicMtrxSymmetric (MatResponseMode rMode) |
Check for symmetry of stiffness matrix. More... | |
virtual void | printYourself () |
Prints receiver state on stdout. Useful for debugging. More... | |
virtual int | setupIntegrationPoints (IntegrationRule &irule, int npoints, Element *element) |
Sets up integration rule for the given element. More... | |
virtual int | setupIntegrationPoints (IntegrationRule &irule, int npointsXY, int npointsZ, Element *element) |
Sets up integration rule for the given element. More... | |
virtual double | predictRelativeComputationalCost (GaussPoint *ip) |
Returns the weight representing relative computational cost of receiver The reference cross section is integral model in plane stress. More... | |
virtual double | giveRelativeSelfComputationalCost () |
Returns the weight representing relative computational cost of receiver The reference element is integral model in plane stress. More... | |
virtual double | predictRelativeRedistributionCost (GaussPoint *gp) |
virtual void | giveInputRecord (DynamicInputRecord &input) |
Setups the input record string of receiver. More... | |
virtual contextIOResultType | saveIPContext (DataStream &stream, ContextMode mode, GaussPoint *gp) |
Stores integration point state to output stream. More... | |
virtual contextIOResultType | restoreIPContext (DataStream &stream, ContextMode mode, GaussPoint *gp) |
Reads integration point state to output stream. More... | |
Public Member Functions inherited from oofem::FEMComponent | |
FEMComponent (int n, Domain *d) | |
Regular constructor, creates component with given number and belonging to given domain. More... | |
virtual | ~FEMComponent () |
Virtual destructor. More... | |
Domain * | giveDomain () const |
virtual void | setDomain (Domain *d) |
Sets associated Domain. More... | |
int | giveNumber () const |
void | setNumber (int num) |
Sets number of receiver. More... | |
virtual void | updateLocalNumbering (EntityRenumberingFunctor &f) |
Local renumbering support. More... | |
virtual contextIOResultType | saveContext (DataStream &stream, ContextMode mode, void *obj=NULL) |
Stores receiver state to output stream. More... | |
virtual contextIOResultType | restoreContext (DataStream &stream, ContextMode mode, void *obj=NULL) |
Restores the receiver state previously written in stream. More... | |
virtual void | printOutputAt (FILE *file, TimeStep *tStep) |
Prints output of receiver to stream, for given time step. More... | |
virtual Interface * | giveInterface (InterfaceType t) |
Interface requesting service. More... | |
std::string | errorInfo (const char *func) const |
Returns string for prepending output (used by error reporting macros). More... | |
Public Attributes | |
CrossSectExtension | crossSectionType |
Private Attributes | |
int | materialNum |
Additional Inherited Members | |
Protected Attributes inherited from oofem::CrossSection | |
Dictionary | propertyDictionary |
Dictionary for storing cross section parameters (like dimensions). More... | |
int | setNumber |
Protected Attributes inherited from oofem::FEMComponent | |
int | number |
Component number. More... | |
Domain * | domain |
Link to domain object, useful for communicating with other FEM components. More... | |
Base class for all structural interface cross section models.
Keeps track of the interface material, the geometric thickness (for 2d elements) and possibly (in the future) the integration rule (Gauss, Lobatto etc)
Definition at line 61 of file structuralinterfacecrosssection.h.
|
inline |
Constructor.
Creates cross section with given number, belonging to given domain.
n | Cross section number. |
d | Domain to which new cross section will belong. |
Definition at line 69 of file structuralinterfacecrosssection.h.
References crossSectionType, oofem::CS_StructuralInterfaceCapability, and materialNum.
|
inlinevirtual |
Destructor.
Definition at line 75 of file structuralinterfacecrosssection.h.
References initializeFrom().
|
virtual |
Allows programmer to test some internal data, before computation begins.
For example, one may use this function, to ensure that element has material with required capabilities is assigned to element. This must be done after all mesh components are instanciated.
Reimplemented from oofem::FEMComponent.
Definition at line 61 of file structuralinterfacecrosssection.C.
References oofem::FEMComponent::giveClassName(), oofem::FEMComponent::giveDomain(), oofem::Domain::giveMaterial(), materialNum, and OOFEM_WARNING.
Referenced by oofem::StructuralInterfaceElement::checkConsistency(), and giveEngTraction_3d().
|
virtual |
Estimates the necessary pack size to hold all packed data of receiver.
The corresponding material model service is invoked. The nature of packed data is typically material model dependent.
buff | Communication buffer. |
ip | Integration point. |
Implements oofem::CrossSection.
Definition at line 209 of file structuralinterfacecrosssection.C.
References oofem::Material::estimatePackSize(), and giveInterfaceMaterial().
Referenced by setMaterialNumber().
void oofem::StructuralInterfaceCrossSection::give1dStiffnessMatrix_dTdj | ( | FloatMatrix & | answer, |
MatResponseMode | rMode, | ||
GaussPoint * | gp, | ||
TimeStep * | tStep | ||
) |
Definition at line 134 of file structuralinterfacecrosssection.C.
References oofem::StructuralInterfaceMaterial::give1dStiffnessMatrix_dTdj(), oofem::StructuralInterfaceMaterial::give1dStiffnessMatrix_dTdj_Num(), giveInterfaceMaterial(), oofem::StructuralInterfaceMaterial::hasAnalyticalTangentStiffness(), OOFEM_ERROR, and oofem::StructuralInterfaceMaterial::useNumericalTangent.
Referenced by giveEngTraction_3d().
void oofem::StructuralInterfaceCrossSection::give1dStiffnessMatrix_Eng | ( | FloatMatrix & | answer, |
MatResponseMode | rMode, | ||
GaussPoint * | gp, | ||
TimeStep * | tStep | ||
) |
Definition at line 92 of file structuralinterfacecrosssection.C.
References oofem::StructuralInterfaceMaterial::give1dStiffnessMatrix_Eng(), oofem::StructuralInterfaceMaterial::give1dStiffnessMatrix_Eng_Num(), giveInterfaceMaterial(), oofem::StructuralInterfaceMaterial::hasAnalyticalTangentStiffness(), OOFEM_ERROR, and oofem::StructuralInterfaceMaterial::useNumericalTangent.
Referenced by giveEngTraction_3d(), and oofem::IntElPoint::giveStiffnessMatrix_Eng().
void oofem::StructuralInterfaceCrossSection::give2dStiffnessMatrix_dTdj | ( | FloatMatrix & | answer, |
MatResponseMode | rMode, | ||
GaussPoint * | gp, | ||
TimeStep * | tStep | ||
) |
Definition at line 147 of file structuralinterfacecrosssection.C.
References oofem::StructuralInterfaceMaterial::give2dStiffnessMatrix_dTdj(), oofem::StructuralInterfaceMaterial::give2dStiffnessMatrix_dTdj_Num(), giveInterfaceMaterial(), oofem::StructuralInterfaceMaterial::hasAnalyticalTangentStiffness(), OOFEM_ERROR, and oofem::StructuralInterfaceMaterial::useNumericalTangent.
Referenced by giveEngTraction_3d().
void oofem::StructuralInterfaceCrossSection::give2dStiffnessMatrix_Eng | ( | FloatMatrix & | answer, |
MatResponseMode | rMode, | ||
GaussPoint * | gp, | ||
TimeStep * | tStep | ||
) |
Definition at line 105 of file structuralinterfacecrosssection.C.
References oofem::StructuralInterfaceMaterial::give2dStiffnessMatrix_Eng(), oofem::StructuralInterfaceMaterial::give2dStiffnessMatrix_Eng_Num(), giveInterfaceMaterial(), oofem::StructuralInterfaceMaterial::hasAnalyticalTangentStiffness(), OOFEM_ERROR, and oofem::StructuralInterfaceMaterial::useNumericalTangent.
Referenced by giveEngTraction_3d(), oofem::IntElLine1PhF::giveStiffnessMatrix_Eng(), oofem::IntElLine1PF::giveStiffnessMatrix_Eng(), oofem::IntElLine1::giveStiffnessMatrix_Eng(), and oofem::IntElPoint::giveStiffnessMatrix_Eng().
void oofem::StructuralInterfaceCrossSection::give3dStiffnessMatrix_dTdj | ( | FloatMatrix & | answer, |
MatResponseMode | rMode, | ||
GaussPoint * | gp, | ||
TimeStep * | tStep | ||
) |
Definition at line 161 of file structuralinterfacecrosssection.C.
References oofem::StructuralInterfaceMaterial::give3dStiffnessMatrix_dTdj(), oofem::StructuralInterfaceMaterial::give3dStiffnessMatrix_dTdj_Num(), giveInterfaceMaterial(), oofem::StructuralInterfaceMaterial::hasAnalyticalTangentStiffness(), OOFEM_ERROR, and oofem::StructuralInterfaceMaterial::useNumericalTangent.
Referenced by giveEngTraction_3d().
void oofem::StructuralInterfaceCrossSection::give3dStiffnessMatrix_Eng | ( | FloatMatrix & | answer, |
MatResponseMode | rMode, | ||
GaussPoint * | gp, | ||
TimeStep * | tStep | ||
) |
Definition at line 118 of file structuralinterfacecrosssection.C.
References oofem::StructuralInterfaceMaterial::give3dStiffnessMatrix_Eng(), oofem::StructuralInterfaceMaterial::give3dStiffnessMatrix_Eng_Num(), giveInterfaceMaterial(), oofem::StructuralInterfaceMaterial::hasAnalyticalTangentStiffness(), OOFEM_ERROR, and oofem::StructuralInterfaceMaterial::useNumericalTangent.
Referenced by giveEngTraction_3d(), oofem::IntElSurfTr1::giveStiffnessMatrix_Eng(), and oofem::IntElPoint::giveStiffnessMatrix_Eng().
|
inlinevirtual |
Implements oofem::FEMComponent.
Definition at line 144 of file structuralinterfacecrosssection.h.
|
inline |
Definition at line 105 of file structuralinterfacecrosssection.h.
References oofem::StructuralInterfaceMaterial::giveEngTraction_1d(), and giveInterfaceMaterial().
Referenced by oofem::IntElPoint::giveEngTraction().
|
inline |
Definition at line 109 of file structuralinterfacecrosssection.h.
References oofem::StructuralInterfaceMaterial::giveEngTraction_2d(), and giveInterfaceMaterial().
Referenced by oofem::IntElLine1PF::giveEngTraction(), oofem::IntElLine1::giveEngTraction(), and oofem::IntElPoint::giveEngTraction().
|
inline |
Definition at line 113 of file structuralinterfacecrosssection.h.
References checkConsistency(), give1dStiffnessMatrix_dTdj(), give1dStiffnessMatrix_Eng(), give2dStiffnessMatrix_dTdj(), give2dStiffnessMatrix_Eng(), give3dStiffnessMatrix_dTdj(), give3dStiffnessMatrix_Eng(), oofem::StructuralInterfaceMaterial::giveEngTraction_3d(), giveInterfaceMaterial(), giveIPValue(), giveMaterial(), and giveTraction().
Referenced by oofem::IntElSurfTr1::giveEngTraction(), and oofem::IntElPoint::giveEngTraction().
|
inline |
Computes the real stress vector for given strain and integration point.
The service should use previously reached equilibrium history variables. Also it should update temporary history variables in status according to newly reached state. The temporary history variables are moved into equilibrium ones after global structure equilibrium has been reached by iteration process. Elements should always pass their requests to their cross section model, which performs necessary integration over its volume and invokes necessary material services for corresponding material model defined for given integration point.
answer | Contains result. |
gp | Integration point. |
reducedF | Deformation gradient in reduced form. |
tStep | Current time step (most models are able to respond only when tStep is current time step). |
Definition at line 97 of file structuralinterfacecrosssection.h.
References oofem::StructuralInterfaceMaterial::giveFirstPKTraction_1d(), and giveInterfaceMaterial().
|
inline |
Definition at line 99 of file structuralinterfacecrosssection.h.
References oofem::StructuralInterfaceMaterial::giveFirstPKTraction_2d(), and giveInterfaceMaterial().
|
inline |
Definition at line 101 of file structuralinterfacecrosssection.h.
References oofem::StructuralInterfaceMaterial::giveFirstPKTraction_3d(), and giveInterfaceMaterial().
|
inlinevirtual |
Implements oofem::FEMComponent.
Definition at line 145 of file structuralinterfacecrosssection.h.
References _IFT_StructuralInterfaceCrossSection_Name.
StructuralInterfaceMaterial * oofem::StructuralInterfaceCrossSection::giveInterfaceMaterial | ( | ) |
Definition at line 46 of file structuralinterfacecrosssection.C.
References oofem::FEMComponent::giveDomain(), oofem::Domain::giveMaterial(), and materialNum.
Referenced by oofem::StructuralInterfaceElementPhF::computeStiffnessMatrix_dd(), estimatePackSize(), give1dStiffnessMatrix_dTdj(), give1dStiffnessMatrix_Eng(), give2dStiffnessMatrix_dTdj(), give2dStiffnessMatrix_Eng(), give3dStiffnessMatrix_dTdj(), give3dStiffnessMatrix_Eng(), oofem::IntElLine1PhF::giveEngTraction(), giveEngTraction_1d(), giveEngTraction_2d(), giveEngTraction_3d(), giveFirstPKTraction_1d(), giveFirstPKTraction_2d(), giveFirstPKTraction_3d(), oofem::StructuralInterfaceElementPhF::giveInternalForcesVector_d(), giveIPValue(), giveTraction(), packUnknowns(), and unpackAndUpdateUnknowns().
|
virtual |
Returns the integration point corresponding value in Reduced form.
answer | contain corresponding ip value, zero sized if not available |
ip | Integration point. |
type | Determines the type of internal variable. |
tStep | Time step. |
Reimplemented from oofem::CrossSection.
Definition at line 175 of file structuralinterfacecrosssection.C.
References oofem::FloatArray::at(), giveInterfaceMaterial(), oofem::StructuralInterfaceMaterial::giveIPValue(), oofem::FEMComponent::giveNumber(), and oofem::FloatArray::resize().
Referenced by giveEngTraction_3d().
|
virtual |
Returns the material associated with the GP.
Default implementation uses gp->giveMaterial() for backwards compatibility, but it should be overloaded in each specialized cross-section.
Implements oofem::CrossSection.
Definition at line 186 of file structuralinterfacecrosssection.C.
References oofem::FEMComponent::giveDomain(), oofem::GaussPoint::giveElement(), oofem::Domain::giveMaterial(), oofem::Element::giveMaterial(), and giveMaterialNumber().
Referenced by giveEngTraction_3d().
|
inline |
Definition at line 136 of file structuralinterfacecrosssection.h.
References materialNum.
Referenced by giveMaterial().
const FloatArray & oofem::StructuralInterfaceCrossSection::giveTraction | ( | IntegrationPoint * | ip | ) |
Definition at line 52 of file structuralinterfacecrosssection.C.
References giveInterfaceMaterial(), and oofem::Material::giveStatus().
Referenced by giveEngTraction_3d().
|
virtual |
Initializes receiver according to object description stored in input record.
This function is called immediately after creating object using constructor. Input record can be imagined as data record in component database belonging to receiver. Receiver may use value-name extracting functions to extract particular field from record.
ir | Input record to initialize from. |
Reimplemented from oofem::CrossSection.
Definition at line 74 of file structuralinterfacecrosssection.C.
References _IFT_StructuralInterfaceCrossSection_Material, _IFT_StructuralInterfaceCrossSection_thickness, oofem::Dictionary::add(), oofem::CS_Thickness, oofem::InputRecord::hasField(), oofem::CrossSection::initializeFrom(), IR_GIVE_FIELD, IR_GIVE_OPTIONAL_FIELD, oofem::IRRT_OK, materialNum, and oofem::CrossSection::propertyDictionary.
Referenced by ~StructuralInterfaceCrossSection().
|
virtual |
Pack all necessary data of integration point (according to element parallel_mode) into given communication buffer.
The corresponding material model service for particular integration point is invoked. The nature of packed data is material model dependent. Typically, for material of "local" response (response depends only on integration point local state) no data are exchanged. For "nonlocal" constitutive models the send/receive of local values which undergo averaging is performed between local and corresponding remote elements.
buff | Communication buffer. |
tStep | Solution step. |
ip | Integration point. |
Implements oofem::CrossSection.
Definition at line 197 of file structuralinterfacecrosssection.C.
References giveInterfaceMaterial(), and oofem::Material::packUnknowns().
Referenced by setMaterialNumber().
|
inline |
Definition at line 137 of file structuralinterfacecrosssection.h.
References estimatePackSize(), materialNum, packUnknowns(), and unpackAndUpdateUnknowns().
|
inlinevirtual |
Returns nonzero, if receiver implements required extension.
ext | Required extension. |
Reimplemented from oofem::CrossSection.
Definition at line 79 of file structuralinterfacecrosssection.h.
References crossSectionType.
|
virtual |
Unpack and updates all necessary data of given integration point (according to element parallel_mode) into given communication buffer.
buff | Communication buffer. |
tStep | Solution step. |
ip | Integration point. |
Implements oofem::CrossSection.
Definition at line 203 of file structuralinterfacecrosssection.C.
References giveInterfaceMaterial(), and oofem::Material::unpackAndUpdateUnknowns().
Referenced by setMaterialNumber().
CrossSectExtension oofem::StructuralInterfaceCrossSection::crossSectionType |
Definition at line 147 of file structuralinterfacecrosssection.h.
Referenced by StructuralInterfaceCrossSection(), and testCrossSectionExtension().
|
private |
Definition at line 149 of file structuralinterfacecrosssection.h.
Referenced by checkConsistency(), giveInterfaceMaterial(), giveMaterialNumber(), initializeFrom(), setMaterialNumber(), and StructuralInterfaceCrossSection().