From 17cd58c6debb1648add406d0512162bcf346b8b4 Mon Sep 17 00:00:00 2001 From: john bowen Date: Tue, 24 Sep 2024 14:33:10 -0700 Subject: [PATCH] Fix link error --- .../functional/element_restriction.cpp | 4 +-- src/serac/numerics/functional/functional.hpp | 25 +++---------------- 2 files changed, 5 insertions(+), 24 deletions(-) diff --git a/src/serac/numerics/functional/element_restriction.cpp b/src/serac/numerics/functional/element_restriction.cpp index 15bd30a241..bac205aabe 100644 --- a/src/serac/numerics/functional/element_restriction.cpp +++ b/src/serac/numerics/functional/element_restriction.cpp @@ -430,8 +430,8 @@ uint64_t ElementRestriction::ESize() const { return esize; } uint64_t ElementRestriction::LSize() const { return lsize; } -SERAC_DEVICE DoF ElementRestriction::GetVDofDevice(DoF node, mfem::Ordering::Type ordering_, uint64_t component, - uint64_t num_nodes_, uint64_t components_) +SERAC_HOST_DEVICE DoF ElementRestriction::GetVDofDevice(DoF node, mfem::Ordering::Type ordering_, uint64_t component, + uint64_t num_nodes_, uint64_t components_) { if (ordering_ == mfem::Ordering::Type::byNODES) { return DoF{component * num_nodes_ + node.index(), (node.sign() == 1) ? 0ull : 1ull, node.orientation()}; diff --git a/src/serac/numerics/functional/functional.hpp b/src/serac/numerics/functional/functional.hpp index 7b8302cc16..6fa1269da0 100644 --- a/src/serac/numerics/functional/functional.hpp +++ b/src/serac/numerics/functional/functional.hpp @@ -293,12 +293,6 @@ class Functional { { if (domain.GetNE() == 0) return; - // Check that Integrand is not a generic lambda. - class DummyArgumentType {}; - static_assert(!std::is_invocable::value); - static_assert(!std::is_invocable::value); - static_assert(!std::is_invocable::value); - SLIC_ERROR_ROOT_IF(dim != domain.Dimension(), "invalid mesh dimension for domain integral"); check_for_unsupported_elements(domain); @@ -341,12 +335,6 @@ class Functional { auto num_bdr_elements = domain.GetNBE(); if (num_bdr_elements == 0) return; - // Check that Integrand is not a generic lambda. - class DummyArgumentType {}; - static_assert(!std::is_invocable::value); - static_assert(!std::is_invocable::value); - static_assert(!std::is_invocable::value); - check_for_missing_nodal_gridfunc(domain); using signature = test(decltype(serac::type(trial_spaces))...); @@ -623,8 +611,7 @@ class Functional { integral.ComputeElementGradients(K_elem, which_argument); } - int nr = 0; - int nc = 0; + for (auto type : {Domain::Type::Elements, Domain::Type::BoundaryElements}) { auto& K_elem = element_gradients[type]; auto& test_restrictions = form_.G_test_[type].restrictions; @@ -643,8 +630,7 @@ class Functional { #else auto elem_matrices_host = elem_matrices; #endif - nr = elem_matrices.shape()[1]; - nc = elem_matrices.shape()[2]; + for (uint32_t i = 0; i < uint32_t(elem_matrices.shape()[1]); i++) { int col = int(trial_vdofs[i].index()); @@ -668,12 +654,7 @@ class Functional { // Copy the column indices to an auxilliary array as MFEM can mutate these during HypreParMatrix construction col_ind_copy_ = lookup_tables.col_ind; - for (uint32_t i = 0; i < uint32_t(nr); i++) { - for (uint32_t j = 0; j < uint32_t(nc); j++) { - std::cout << values[i * uint32_t(nr) + j] << " "; - } - std::cout << std::endl; - } + auto J_local = mfem::SparseMatrix(lookup_tables.row_ptr.data(), col_ind_copy_.data(), values, form_.output_L_.Size(), form_.input_L_[which_argument].Size(), sparse_matrix_frees_graph_ptrs,