20 #ifndef GEOS_MESH_MESHFORLOOPINTERFACE_HPP
21 #define GEOS_MESH_MESHFORLOOPINTERFACE_HPP
23 #include "finiteElement/FiniteElementDiscretization.hpp"
24 #include "finiteElement/FiniteElementDiscretizationManager.hpp"
25 #include "common/GEOS_RAJA_Interface.hpp"
40 template<
class POLICY=serialPolicy,
typename LAMBDA=
void >
50 forAll< POLICY >( subRegion.size(), [&](
localIndex const k ) { lambda( er, esr, k ); } );
60 template<
typename LAMBDA >
64 using NUMBER = decltype( lambda( 0, 0, 0 ) );
66 NUMBER minVal = std::numeric_limits< NUMBER >::max();
67 localIndex minReg = -1, minSubreg = -1, minIndex = -1;
80 NUMBER
const val = lambda( er, esr, k );
92 return std::make_pair( minVal, std::make_tuple( minReg, minSubreg, minIndex ));
101 template<
typename LAMBDA >
105 using NUMBER = decltype( lambda( 0, 0 ) );
107 NUMBER minVal = std::numeric_limits< NUMBER >::max();
115 NUMBER
const val = lambda( esr, k );
125 return std::make_pair( minVal, std::make_tuple( minSubreg, minIndex ));
134 template<
typename LAMBDA >
138 using NUMBER = decltype( lambda( 0 ) );
140 NUMBER minVal = std::numeric_limits< NUMBER >::max();
146 NUMBER
const val = lambda( k );
154 return std::make_pair( minVal, minIndex );
The ElementRegionBase is the base class to manage the data stored at the element level.
void forElementSubRegionsIndex(LAMBDA &&lambda) const
Apply LAMBDA to the subregions, loop using subregion indices.
The ElementRegionManager class provides an interface to ObjectManagerBase in order to manage ElementR...
localIndex numRegions() const
Get number of the regions.
void forElementSubRegionsComplete(LAMBDA &&lambda) const
This const function is used to launch kernel function over the element subregions of all subregion ty...
T const & getRegion(KEY_TYPE const &key) const
Get a element region.
Class facilitating the representation of a multi-level discretization of a MeshBody.
ElementRegionManager const & getElemManager() const
Get the element region manager.
localIndex size() const
Get the "size" of the group, which determines the number of elements in resizable wrappers.
void forAllElemsInMesh(MeshLevel const &mesh, LAMBDA &&lambda)
Loop over all elements in a geos::MeshLevel.
GEOS_LOCALINDEX_TYPE localIndex
Local index type (for indexing objects within an MPI partition).
auto minLocOverElemsInRegion(ElementRegionBase const ®ion, LAMBDA &&lambda)
auto minLocOverElemsInSubRegion(ElementSubRegionBase const &subRegion, LAMBDA &&lambda)
auto minLocOverElemsInMesh(MeshLevel const &mesh, LAMBDA &&lambda)