本文整理汇总了C++中StructuralElement::computeVolumeAround方法的典型用法代码示例。如果您正苦于以下问题:C++ StructuralElement::computeVolumeAround方法的具体用法?C++ StructuralElement::computeVolumeAround怎么用?C++ StructuralElement::computeVolumeAround使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StructuralElement
的用法示例。
在下文中一共展示了StructuralElement::computeVolumeAround方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
void
GradDpElement :: computeStiffnessMatrix_kk(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
{
StructuralElement *elem = this->giveStructuralElement();
double dV;
FloatMatrix lStiff;
FloatArray Nk;
FloatMatrix Bk, LBk;
StructuralCrossSection *cs = elem->giveStructuralCrossSection();
answer.clear();
for ( auto &gp: *elem->giveIntegrationRule(0) ) {
GradDpMaterialExtensionInterface *dpmat = dynamic_cast< GradDpMaterialExtensionInterface * >(
cs->giveMaterialInterface(GradDpMaterialExtensionInterfaceType, gp) );
if ( !dpmat ) {
OOFEM_ERROR("Material doesn't implement the required DpGrad interface!");
}
this->computeNkappaMatrixAt(gp, Nk);
this->computeBkappaMatrixAt(gp, Bk);
dV = elem->computeVolumeAround(gp);
dpmat->givePDGradMatrix_kk(lStiff, rMode, gp, tStep);
answer.plusProductUnsym(Nk, Nk, dV);
if ( dpmat->giveAveragingType() == 0 || dpmat->giveAveragingType() == 1 ) {
double l = lStiff.at(1, 1);
answer.plusProductUnsym(Bk, Bk, l * l * dV);
} else if ( dpmat->giveAveragingType() == 2 ) {
LBk.beProductOf(lStiff, Bk);
answer.plusProductUnsym(Bk, LBk, dV);
}
}
}