void XZHydrostatic_GeoPotential<EvalT, Traits>:: evaluateFields(typename Traits::EvalData workset) { #ifndef ALBANY_KOKKOS_UNDER_DEVELOPMENT for (int cell=0; cell < workset.numCells; ++cell) { for (int node=0; node < numNodes; ++node) { for (int level=0; level < numLevels; ++level) { ScalarT sum = PhiSurf(cell,node) + 0.5 * Pi(cell,node,level) * E.delta(level) / density(cell,node,level); for (int j=level+1; j < numLevels; ++j) sum += Pi(cell,node,j) * E.delta(j) / density(cell,node,j); Phi(cell,node,level) = sum; //std::cout <<"Inside GeoP, cell, node, PhiSurf(cell,node)="<<cell<< //", "<<node<<", "<<PhiSurf(cell,node) <<std::endl; } } } /* OG Debugging statements std::cout << "Printing PHI at level 0 ----------------------------------------- \n"; //for(int level=0; level < numLevels; ++level){ for (int node=0; node < numNodes; ++node) { //std::cout << "lev= " << level << ", phi = " << Phi(23,0,level) <<"\n"; std::cout << "node = " << node << ", phi = " << Phi(23,node,0) <<"\n"; } //}*/ #else Kokkos::parallel_for(XZHydrostatic_GeoPotential_Policy(0,workset.numCells),*this); cudaCheckError(); #endif }
KOKKOS_INLINE_FUNCTION void XZHydrostatic_GeoPotential<EvalT, Traits>:: operator() (const XZHydrostatic_GeoPotential_Tag& tag, const int& cell) const{ for (int node=0; node < numNodes; ++node) { for (int level=0; level < numLevels; ++level) { ScalarT sum = PhiSurf(cell,node) + 0.5 * Pi(cell,node,level) * delta(level) / density(cell,node,level); for (int j=level+1; j < numLevels; ++j) sum += Pi(cell,node,j) * delta(j) / density(cell,node,j); Phi(cell,node,level) = sum; } } }
void XZHydrostatic_GeoPotential<EvalT, Traits>:: evaluateFields(typename Traits::EvalData workset) { const Eta<EvalT> &E = Eta<EvalT>::self(); ScalarT sum; for (int cell=0; cell < workset.numCells; ++cell) { for (int node=0; node < numNodes; ++node) { for (int level=0; level < numLevels; ++level) { sum = PhiSurf(cell,node) + 0.5 * Pi(cell,node,level) * E.delta(level) / density(cell,node,level); for (int j=level+1; j < numLevels; ++j) sum += Pi(cell,node,j) * E.delta(j) / density(cell,node,j); Phi(cell,node,level) = sum; //std::cout <<"Inside GeoP, cell, node, PhiSurf(cell,node)="<<cell<< //", "<<node<<", "<<PhiSurf(cell,node) <<std::endl; } } } }