本文整理汇总了C++中BasisCachePtr::getCellSideParities方法的典型用法代码示例。如果您正苦于以下问题:C++ BasisCachePtr::getCellSideParities方法的具体用法?C++ BasisCachePtr::getCellSideParities怎么用?C++ BasisCachePtr::getCellSideParities使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BasisCachePtr
的用法示例。
在下文中一共展示了BasisCachePtr::getCellSideParities方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: values
void SideParityFunction::values(Intrepid::FieldContainer<double> &values, BasisCachePtr sideBasisCache)
{
this->CHECK_VALUES_RANK(values);
int numCells = values.dimension(0);
int numPoints = values.dimension(1);
int sideIndex = sideBasisCache->getSideIndex();
if (sideIndex == -1)
{
TEUCHOS_TEST_FOR_EXCEPTION(true, std::invalid_argument, "non-sideBasisCache passed into SideParityFunction");
}
if (sideBasisCache->getCellSideParities().size() > 0)
{
// then we'll use this, and won't require that mesh and cellIDs are set
if (sideBasisCache->getCellSideParities().dimension(0) != numCells)
{
TEUCHOS_TEST_FOR_EXCEPTION(true, std::invalid_argument, "sideBasisCache->getCellSideParities() is non-empty, but the cell dimension doesn't match that of the values FieldContainer.");
}
for (int cellOrdinal=0; cellOrdinal<numCells; cellOrdinal++)
{
int parity = sideBasisCache->getCellSideParities()(cellOrdinal,sideIndex);
for (int ptOrdinal=0; ptOrdinal<numPoints; ptOrdinal++)
{
values(cellOrdinal,ptOrdinal) = parity;
}
}
}
else
{
vector<GlobalIndexType> cellIDs = sideBasisCache->cellIDs();
if (cellIDs.size() != numCells)
{
TEUCHOS_TEST_FOR_EXCEPTION(true, std::invalid_argument, "cellIDs.size() != numCells");
}
Teuchos::RCP<Mesh> mesh = sideBasisCache->mesh();
if (! mesh.get())
{
TEUCHOS_TEST_FOR_EXCEPTION(true, std::invalid_argument, "mesh unset in BasisCache.");
}
for (int cellIndex=0; cellIndex<numCells; cellIndex++)
{
int parity = mesh->cellSideParitiesForCell(cellIDs[cellIndex])(0,sideIndex);
for (int ptIndex=0; ptIndex<numPoints; ptIndex++)
{
values(cellIndex,ptIndex) = parity;
}
}
}
}