本文整理汇总了C++中LinearSOE::addB方法的典型用法代码示例。如果您正苦于以下问题:C++ LinearSOE::addB方法的具体用法?C++ LinearSOE::addB怎么用?C++ LinearSOE::addB使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LinearSOE
的用法示例。
在下文中一共展示了LinearSOE::addB方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: formElementResidual
int AlphaOSGeneralized::formElementResidual(void)
{
// calculate Residual Force
AnalysisModel *theModel = this->getAnalysisModel();
LinearSOE *theSOE = this->getLinearSOE();
// loop through the FE_Elements and add the residual
FE_Element *elePtr;
FE_EleIter &theEles = theModel->getFEs();
while((elePtr = theEles()) != 0) {
if (theSOE->addB(elePtr->getResidual(this), elePtr->getID()) < 0) {
opserr << "WARNING AlphaOSGeneralized::formElementResidual -";
opserr << " failed in addB for ID " << elePtr->getID();
return -1;
}
if (alphaF < 1.0) {
if (statusFlag == CURRENT_TANGENT) {
if (theSOE->addB(elePtr->getK_Force(*Ut-*Upt), elePtr->getID(), alphaF-1.0) < 0) {
opserr << "WARNING AlphaOSGeneralized::formElementResidual -";
opserr << " failed in addB for ID " << elePtr->getID();
return -2;
}
} else if (statusFlag == INITIAL_TANGENT) {
if (theSOE->addB(elePtr->getKi_Force(*Ut-*Upt), elePtr->getID(), alphaF-1.0) < 0) {
opserr << "WARNING AlphaOSGeneralized::formElementResidual -";
opserr << " failed in addB for ID " << elePtr->getID();
return -2;
}
}
}
}
return 0;
}
示例2: while
int
PFEMIntegrator::formSensitivityRHS(int passedGradNumber)
{
sensitivityFlag = 1;
// Set a couple of data members
gradNumber = passedGradNumber;
// Get pointer to the SOE
LinearSOE *theSOE = this->getLinearSOE();
// Get the analysis model
AnalysisModel *theModel = this->getAnalysisModel();
// Randomness in external load (including randomness in time series)
// Get domain
Domain *theDomain = theModel->getDomainPtr();
// Loop through nodes to zero the unbalaced load
Node *nodePtr;
NodeIter &theNodeIter = theDomain->getNodes();
while ((nodePtr = theNodeIter()) != 0)
nodePtr->zeroUnbalancedLoad();
// Loop through load patterns to add external load sensitivity
LoadPattern *loadPatternPtr;
LoadPatternIter &thePatterns = theDomain->getLoadPatterns();
double time;
while((loadPatternPtr = thePatterns()) != 0) {
time = theDomain->getCurrentTime();
loadPatternPtr->applyLoadSensitivity(time);
}
// Randomness in element/material contributions
// Loop through FE elements
FE_Element *elePtr;
FE_EleIter &theEles = theModel->getFEs();
while((elePtr = theEles()) != 0) {
theSOE->addB( elePtr->getResidual(this), elePtr->getID() );
}
// Loop through DOF groups (IT IS IMPORTANT THAT THIS IS DONE LAST!)
DOF_Group *dofPtr;
DOF_GrpIter &theDOFs = theModel->getDOFs();
while((dofPtr = theDOFs()) != 0) {
theSOE->addB( dofPtr->getUnbalance(this), dofPtr->getID() );
}
// Reset the sensitivity flag
sensitivityFlag = 0;
return 0;
}