53 Teuchos::ArrayRCP<LO> VertLineId = Teuchos::arcp<LO>(0);
56 const ParameterList& pL = GetParameterList();
57 const std::string lineOrientation = pL.get<std::string>(
"orientation");
60 RCP<Matrix> A = Get<RCP<Matrix> >(currentLevel,
"A");
61 Array<LO> lNodesPerDir = Get<Array<LO> >(currentLevel,
"lNodesPerDim");
62 LO numNodes = lNodesPerDir[0] * lNodesPerDir[1] * lNodesPerDir[2];
63 VertLineId.resize(numNodes);
64 if (lineOrientation ==
"X") {
65 NumZDir = lNodesPerDir[0];
66 }
else if (lineOrientation ==
"Y") {
67 NumZDir = lNodesPerDir[1];
68 }
else if (lineOrientation ==
"Z") {
69 NumZDir = lNodesPerDir[2];
72 for (LO k = 0; k < lNodesPerDir[2]; ++k) {
73 for (LO j = 0; j < lNodesPerDir[1]; ++j) {
74 for (LO i = 0; i < lNodesPerDir[0]; ++i) {
75 if (lineOrientation ==
"X") {
76 VertLineId[k * lNodesPerDir[1] * lNodesPerDir[0] + j * lNodesPerDir[0] + i] = k * lNodesPerDir[1] + j;
77 }
else if (lineOrientation ==
"Y") {
78 VertLineId[k * lNodesPerDir[1] * lNodesPerDir[0] + j * lNodesPerDir[0] + i] = k * lNodesPerDir[0] + i;
79 }
else if (lineOrientation ==
"Z") {
80 VertLineId[k * lNodesPerDir[1] * lNodesPerDir[0] + j * lNodesPerDir[0] + i] = j * lNodesPerDir[0] + i;
86 Set(currentLevel,
"CoarseNumZLayers", NumZDir);
87 Set(currentLevel,
"LineDetection_VertLineIds", VertLineId);
void DeclareInput(const std::string &ename, const FactoryBase *factory, const FactoryBase *requestedBy=NoFactory::get())
Callback from FactoryBase::CallDeclareInput() and FactoryBase::DeclareInput()