本文整理汇总了C++中Dof::__givePrescribedEquationNumber方法的典型用法代码示例。如果您正苦于以下问题:C++ Dof::__givePrescribedEquationNumber方法的具体用法?C++ Dof::__givePrescribedEquationNumber怎么用?C++ Dof::__givePrescribedEquationNumber使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Dof
的用法示例。
在下文中一共展示了Dof::__givePrescribedEquationNumber方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: packDofManagers
int
StructuralEngngModel :: packDofManagers(FloatArray *src, ProcessCommunicator &processComm, bool prescribedEquations)
{
int result = 1;
int i, size;
int j, ndofs, eqNum;
Domain *domain = this->giveDomain(1);
IntArray const *toSendMap = processComm.giveToSendMap();
ProcessCommunicatorBuff *pcbuff = processComm.giveProcessCommunicatorBuff();
DofManager *dman;
Dof *jdof;
size = toSendMap->giveSize();
for ( i = 1; i <= size; i++ ) {
dman = domain->giveDofManager( toSendMap->at(i) );
ndofs = dman->giveNumberOfDofs();
for ( j = 1; j <= ndofs; j++ ) {
jdof = dman->giveDof(j);
if ( prescribedEquations ) {
eqNum = jdof->__givePrescribedEquationNumber();
} else {
eqNum = jdof->__giveEquationNumber();
}
if ( jdof->isPrimaryDof() && eqNum ) {
result &= pcbuff->packDouble( src->at(eqNum) );
}
}
}
return result;
}
示例2: unpackDofManagers
int
StructuralEngngModel :: unpackDofManagers(FloatArray *dest, ProcessCommunicator &processComm, bool prescribedEquations)
{
int result = 1;
int i, size;
int j, ndofs, eqNum;
Domain *domain = this->giveDomain(1);
dofManagerParallelMode dofmanmode;
IntArray const *toRecvMap = processComm.giveToRecvMap();
ProcessCommunicatorBuff *pcbuff = processComm.giveProcessCommunicatorBuff();
DofManager *dman;
Dof *jdof;
double value;
size = toRecvMap->giveSize();
for ( i = 1; i <= size; i++ ) {
dman = domain->giveDofManager( toRecvMap->at(i) );
ndofs = dman->giveNumberOfDofs();
dofmanmode = dman->giveParallelMode();
for ( j = 1; j <= ndofs; j++ ) {
jdof = dman->giveDof(j);
if ( prescribedEquations ) {
eqNum = jdof->__givePrescribedEquationNumber();
} else {
eqNum = jdof->__giveEquationNumber();
}
if ( jdof->isPrimaryDof() && eqNum ) {
result &= pcbuff->unpackDouble(value);
if ( dofmanmode == DofManager_shared ) {
dest->at(eqNum) += value;
} else if ( dofmanmode == DofManager_remote ) {
dest->at(eqNum) = value;
} else {
_error("unpackReactions: unknown dof namager parallel mode");
}
}
}
}
return result;
}
示例3: buildReactionTable
void
StructuralEngngModel :: buildReactionTable(IntArray &restrDofMans, IntArray &restrDofs,
IntArray &eqn, TimeStep *tStep, int di)
{
// determine number of restrained dofs
Domain *domain = this->giveDomain(di);
int numRestrDofs = this->giveNumberOfPrescribedDomainEquations(di, EID_MomentumBalance);
int ndofMan = domain->giveNumberOfDofManagers();
int i, j, indofs, rindex, count = 0;
DofManager *inode;
Dof *jdof;
// initialize corresponding dofManagers and dofs for each restrained dof
restrDofMans.resize(numRestrDofs);
restrDofs.resize(numRestrDofs);
eqn.resize(numRestrDofs);
for ( i = 1; i <= ndofMan; i++ ) {
inode = domain->giveDofManager(i);
indofs = inode->giveNumberOfDofs();
for ( j = 1; j <= indofs; j++ ) {
jdof = inode->giveDof(j);
if ( ( jdof->giveClassID() != SimpleSlaveDofClass ) && ( jdof->hasBc(tStep) ) ) { // skip slave dofs
rindex = jdof->__givePrescribedEquationNumber();
if ( rindex ) {
count++;
restrDofMans.at(count) = i;
restrDofs.at(count) = j;
eqn.at(count) = rindex;
} else {
// NullDof has no equation number and no prescribed equation number
//_error ("No prescribed equation number assigned to supported DOF");
}
}
}
}
}