本文整理汇总了C++中StructuralElement::createMaterialStatus方法的典型用法代码示例。如果您正苦于以下问题:C++ StructuralElement::createMaterialStatus方法的具体用法?C++ StructuralElement::createMaterialStatus怎么用?C++ StructuralElement::createMaterialStatus使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StructuralElement
的用法示例。
在下文中一共展示了StructuralElement::createMaterialStatus方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: elemSet
void
XFEMStatic :: terminate(TimeStep *tStep)
{
this->doStepOutput(tStep);
this->printReactionForces(tStep, 1);
// update load vectors before storing context
fflush( this->giveOutputStream() );
this->updateLoadVectors(tStep);
this->saveStepContext(tStep);
// Propagate fronts
for ( auto &domain: domainList ) {
XfemManager *xMan = domain->giveXfemManager();
xMan->propagateFronts();
}
// Update element subdivisions if necessary
// (e.g. if a crack has moved and cut a new element)
for ( int domInd = 1; domInd <= this->giveNumberOfDomains(); domInd++ ) {
Domain *domain = this->giveDomain(domInd);
// create a new set containing all elements
Set elemSet(0, domain);
elemSet.addAllElements();
if ( domain->giveXfemManager()->hasPropagatingFronts() || mForceRemap ) {
// If domain cloning is performed, there is no need to
// set values from the dof map.
mSetValsFromDofMap = false;
// Take copy of the domain to allow mapping of state variables
// to the new Gauss points.
Domain *dNew = domain->Clone();
bool deallocateOld = false;
setDomain(1, dNew, deallocateOld);
forceEquationNumbering();
// Map primary variables
LSPrimaryVariableMapper primMapper;
FloatArray u;
primMapper.mapPrimaryVariables(u, * domain, * dNew, VM_Total, * tStep);
if ( totalDisplacement.giveSize() == u.giveSize() ) {
FloatArray diff;
diff.beDifferenceOf(totalDisplacement, u);
printf( "diff norm: %e\n", diff.computeNorm() );
}
totalDisplacement = u;
primMapper.mapPrimaryVariables(incrementOfDisplacement, * domain, * dNew, VM_Incremental, * tStep);
int numEl = dNew->giveNumberOfElements();
for ( int i = 1; i <= numEl; i++ ) {
////////////////////////////////////////////////////////
// Map state variables for regular Gauss points
StructuralElement *el = dynamic_cast< StructuralElement * >( dNew->giveElement(i) );
el->createMaterialStatus();
el->mapStateVariables(* domain, * tStep);
////////////////////////////////////////////////////////
// Map state variables for cohesive zone if applicable
XfemStructuralElementInterface *xFemEl = dynamic_cast< XfemStructuralElementInterface * >(el);
if ( xFemEl != NULL ) {
if ( xFemEl->mpCZMat != NULL ) {
size_t numCzRules = xFemEl->mpCZIntegrationRules.size();
for ( size_t czIndex = 0; czIndex < numCzRules; czIndex++ ) {
if ( xFemEl->mpCZIntegrationRules [ czIndex ] != NULL ) {
for ( GaussPoint *gp: *xFemEl->mpCZIntegrationRules [ czIndex ] ) {
MaterialStatus *ms = xFemEl->mpCZMat->giveStatus(gp);
if ( ms == NULL ) {
OOFEM_ERROR("Failed to fetch material status.");
}
MaterialStatusMapperInterface *interface = dynamic_cast< MaterialStatusMapperInterface * >
( xFemEl->mpCZMat->giveStatus(gp) );
if ( interface == NULL ) {
OOFEM_ERROR("Failed to fetch MaterialStatusMapperInterface.");
}
MaterialStatus *matStat = dynamic_cast< MaterialStatus * >( xFemEl->mpCZMat->giveStatus(gp) );
StructuralInterfaceMaterialStatus *siMatStat = dynamic_cast< StructuralInterfaceMaterialStatus * >(matStat);
if ( siMatStat == NULL ) {
OOFEM_ERROR("Failed to cast to StructuralInterfaceMaterialStatus.");
}
interface->MSMI_map_cz(* gp, * domain, elemSet, * tStep, * siMatStat);
}
}
//.........这里部分代码省略.........