本文整理汇总了C++中StructuralMaterial::hasMaterialModeCapability方法的典型用法代码示例。如果您正苦于以下问题:C++ StructuralMaterial::hasMaterialModeCapability方法的具体用法?C++ StructuralMaterial::hasMaterialModeCapability怎么用?C++ StructuralMaterial::hasMaterialModeCapability使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StructuralMaterial
的用法示例。
在下文中一共展示了StructuralMaterial::hasMaterialModeCapability方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: giveEffectiveMaterialStiffnessMatrix
void
PerfectlyPlasticMaterial :: giveEffectiveMaterialStiffnessMatrix(FloatMatrix &answer,
MatResponseMode mode,
GaussPoint *gp,
TimeStep *tStep)
//
//
// for case of perfectly plastic material
// computes full elastic constitutive matrix for case of gp stress-strain state.
// if strainIncrement == NULL a loading is assumed
//
// we follow terminology based on paper from R. de Borst:
// "Smeared Cracking, plasticity, creep - Unified Aproach"
//
// if derived material would like to implement failure behaviour
// it must redefine basic Give3dMaterialStiffnessMatrix function
// in order to take possible failure (tension cracking) into account
//
{
// FloatMatrix *de; // elastic matrix respecting fracture or failure
StructuralMaterial *lMat = static_cast< StructuralMaterial * >( this->giveLinearElasticMaterial() );
if ( lMat->hasMaterialModeCapability( gp->giveMaterialMode() ) ) {
FloatMatrix stiff;
lMat->giveStiffnessMatrix(stiff, mode, gp, tStep);
this->giveFullSymMatrixForm( answer, stiff, gp->giveMaterialMode() );
} else {
OOFEM_ERROR("giveEffectiveMaterialStiffnessMatrix - unsupported material mode");
}
}
示例2: giveCharMaterialStiffnessMatrix
void
FiberedCrossSection :: giveCharMaterialStiffnessMatrix(FloatMatrix &answer,
MatResponseMode rMode,
GaussPoint *gp,
TimeStep *tStep)
{
MaterialMode mode = gp->giveMaterialMode();
if ( mode == _2dBeam ) {
this->give2dBeamStiffMtrx(answer, rMode, gp, tStep);
} else if ( mode == _3dBeam ) {
this->give3dBeamStiffMtrx(answer, rMode, gp, tStep);
} else if ( mode == _2dPlate ) {
this->give2dPlateStiffMtrx(answer, rMode, gp, tStep);
} else if ( mode == _3dShell ) {
this->give3dShellStiffMtrx(answer, rMode, gp, tStep);
} else {
OOFEM_ERROR("Not implemented for bulk materials.");
///@todo What about the fibers?! Rather give just an error message if the fibers aren't supported than to just silently ignore them.
#if 0
StructuralMaterial *mat = dynamic_cast< StructuralMaterial * >( gp->giveElement()->giveMaterial() );
if ( mat->hasMaterialModeCapability( gp->giveMaterialMode() ) ) {
mat->giveStiffnessMatrix(answer, rMode, gp, tStep);
} else {
OOFEM_ERROR("unsupported StressStrainMode");
}
#endif
}
}
示例3: giveRealStresses
void
StructuralCrossSection :: giveRealStresses(FloatArray &answer, GaussPoint *gp, const FloatArray &strain, TimeStep *tStep)
{
MaterialMode mode = gp->giveMaterialMode();
if ( mode == _2dBeam ) {
this->giveGeneralizedStress_Beam2d(answer, gp, strain, tStep);
} else if ( mode == _3dBeam ) {
this->giveGeneralizedStress_Beam3d(answer, gp, strain, tStep);
} else if ( mode == _2dPlate ) {
this->giveGeneralizedStress_Plate(answer, gp, strain, tStep);
} else if ( mode == _3dShell ) {
this->giveGeneralizedStress_Shell(answer, gp, strain, tStep);
} else if ( mode == _3dMat ) {
this->giveRealStress_3d(answer, gp, strain, tStep);
} else if ( mode == _PlaneStrain ) {
this->giveRealStress_PlaneStrain(answer, gp, strain, tStep);
} else if ( mode == _PlaneStress ) {
this->giveRealStress_PlaneStress(answer, gp, strain, tStep);
} else if ( mode == _1dMat ) {
this->giveRealStress_1d(answer, gp, strain, tStep);
} else if ( mode == _Warping ) {
this->giveRealStress_Warping(answer, gp, strain, tStep);
} else {
// This should never happen ?
///@todo this part only works for simple cross section and will be removed soon when new interface elements are done /JB
StructuralMaterial *mat = dynamic_cast< StructuralMaterial * >( this->giveMaterial(gp) );
if ( mat->hasMaterialModeCapability( gp->giveMaterialMode() ) ) {
mat->giveRealStressVector(answer, gp, strain, tStep);
} else {
OOFEM_ERROR("unsupported mode");
}
}
}
示例4: giveRealStresses
void
SimpleCrossSection :: giveRealStresses(FloatArray &answer, MatResponseForm form, GaussPoint *gp,
const FloatArray &totalStrain, TimeStep *tStep)
//
// this function returns a real stresses corresponding to
// given totalStrain according to stressStrain mode stored
// in each gp.
// IMPORTANT:
//
{
MaterialMode mode = gp->giveMaterialMode();
StructuralMaterial *mat = static_cast< StructuralMaterial * >( gp->giveElement()->giveMaterial() );
if ( mat->hasMaterialModeCapability(mode) ) {
StructuralCrossSection :: giveRealStresses(answer, form, gp, totalStrain, tStep);
return;
} else {
_error("giveRealStresses : unsupported mode");
}
}