92 Teuchos::ArrayRCP<LO> VertLineId = Teuchos::arcp<LO>(0);
95 const ParameterList& pL = GetParameterList();
96 const std::string lineOrientation = pL.get<std::string>(
"orientation");
99 RCP<Matrix> A = Get< RCP<Matrix> >(currentLevel,
"A");
100 Array<LO> lNodesPerDir = Get<Array<LO> > (currentLevel,
"lNodesPerDim");
101 LO numNodes = lNodesPerDir[0]*lNodesPerDir[1]*lNodesPerDir[2];
102 VertLineId.resize(numNodes);
103 if(lineOrientation ==
"X") {
104 NumZDir = lNodesPerDir[0];
105 }
else if(lineOrientation ==
"Y") {
106 NumZDir = lNodesPerDir[1];
107 }
else if(lineOrientation ==
"Z") {
108 NumZDir = lNodesPerDir[2];
111 for(LO k = 0; k < lNodesPerDir[2]; ++k) {
112 for(LO j = 0; j < lNodesPerDir[1]; ++j) {
113 for(LO i = 0; i < lNodesPerDir[0]; ++i) {
114 if(lineOrientation ==
"X") {
115 VertLineId[k*lNodesPerDir[1]*lNodesPerDir[0] + j*lNodesPerDir[0] + i] = k*lNodesPerDir[1] + j;
116 }
else if(lineOrientation ==
"Y") {
117 VertLineId[k*lNodesPerDir[1]*lNodesPerDir[0] + j*lNodesPerDir[0] + i] = k*lNodesPerDir[0] + i;
118 }
else if(lineOrientation ==
"Z") {
119 VertLineId[k*lNodesPerDir[1]*lNodesPerDir[0] + j*lNodesPerDir[0] + i] = j*lNodesPerDir[0] + i;
125 Set(currentLevel,
"CoarseNumZLayers", NumZDir);
126 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()