本文整理汇总了C++中MeshBuilder::leftNodeSetGlobalIds方法的典型用法代码示例。如果您正苦于以下问题:C++ MeshBuilder::leftNodeSetGlobalIds方法的具体用法?C++ MeshBuilder::leftNodeSetGlobalIds怎么用?C++ MeshBuilder::leftNodeSetGlobalIds使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MeshBuilder
的用法示例。
在下文中一共展示了MeshBuilder::leftNodeSetGlobalIds方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: applyBoundaryConditions
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void applyBoundaryConditions(const double& value,
const Epetra_Vector& x, Epetra_CrsMatrix& Jac,
Epetra_Vector& f, const MeshBuilder mb)
{
// This function assumes a serial run. It will not check process rank.
// Assumes two equations.
// Left edge includes global nodes 0 and 1, dofs 0,1,2,3
int num_nonzero_entries_in_row = 0;
int* row_indices;
double* row_values;
int num_eq = 2;
const std::vector<int>& left_nodes = mb.leftNodeSetGlobalIds();
for (std::size_t node = 0; node < left_nodes.size(); ++node) {
for (int eq = 0; eq < num_eq; ++eq) {
int lid = Jac.RowMap().LID(left_nodes[node] * num_eq + eq);
Jac.ExtractMyRowView(lid, num_nonzero_entries_in_row, row_values,
row_indices);
for (int col=0; col < num_nonzero_entries_in_row; ++col) {
if (row_indices[col] == lid)
row_values[col] = 1.0;
else
row_values[col] = 0.0;
}
f[lid] = value - x[lid];
}
}
}