{ \
if (distanceLaplacianMetric == "unweighted") { \
auto dist2 = DistanceLaplacian::UnweightedDistanceFunctor(*mergedA, coords);
\
} else if (distanceLaplacianMetric == "weighted") { \
auto k_dlap_weights_host = Kokkos::View<double*, Kokkos::HostSpace, Kokkos::MemoryTraits<Kokkos::Unmanaged>>(&dlap_weights[0], dlap_weights.size()); \
auto k_dlap_weights = Kokkos::View<double*>("dlap_weights", k_dlap_weights_host.extent(0)); \
Kokkos::deep_copy(k_dlap_weights, k_dlap_weights_host); \
auto dist2 = DistanceLaplacian::WeightedDistanceFunctor(*mergedA, coords, k_dlap_weights);
\
} else if (distanceLaplacianMetric == "block weighted") { \
auto k_dlap_weights_host = Kokkos::View<double*, Kokkos::HostSpace, Kokkos::MemoryTraits<Kokkos::Unmanaged>>(&dlap_weights[0], dlap_weights.size()); \
auto k_dlap_weights = Kokkos::View<double*>("dlap_weights", k_dlap_weights_host.extent(0)); \
Kokkos::deep_copy(k_dlap_weights, k_dlap_weights_host); \
auto dist2 = DistanceLaplacian::BlockWeightedDistanceFunctor(*mergedA, coords, k_dlap_weights, interleaved_blocksize);
\
} else if (distanceLaplacianMetric == "material") { \
auto material = GetMaterial(currentLevel, coords->getNumVectors()); \
if (material->getNumVectors() == 1) { \
auto dist2 = DistanceLaplacian::ScalarMaterialDistanceFunctor(*mergedA, coords, material);
\
} else { \
auto dist2 = DistanceLaplacian::TensorMaterialDistanceFunctor(*mergedA, coords, material);
\
} \
} \
}
#define MueLu_runDroppingFunctors_on_dlap_inner(SoC)