From f4a4195bbcc415413822fa61f26d6b65893f5670 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carsten=20Gr=C3=A4ser?= <graeser@dune-project.org> Date: Wed, 4 Jan 2023 09:41:24 +0100 Subject: [PATCH] [test]Reenable test of SubgridL2FunctionalAssembler * Avoid nasty double assignment `a=b=0` * Provide `QuadratureRuleKey` with appropriate order to L2-assemblers * Provide appropriate order to H1-assemblers * Reenable test of `SubgridL2FunctionalAssembler` * Reenable test of `SubgridH1FunctionalAssembler` for `UGGrid` * Avoid short circuit evaluation of test results. This implicitly disabled checks if a previous one was failing. The checks for `ALUGrid<3,3, Dune::simplex, Dune::nonconforming>` are still disabled, because the failure mentioned in https://git.imp.fu-berlin.de/agnumpde/dune-fufem/-/issues/14 persists. --- .../test/subgridxyfunctionalassemblertest.cc | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/dune/fufem/test/subgridxyfunctionalassemblertest.cc b/dune/fufem/test/subgridxyfunctionalassemblertest.cc index 6c3775ef..246457cd 100644 --- a/dune/fufem/test/subgridxyfunctionalassemblertest.cc +++ b/dune/fufem/test/subgridxyfunctionalassemblertest.cc @@ -226,8 +226,10 @@ struct SubgridL2FunctionalAssemblerTestSuite FunctionalAssembler<Basis> assembler(basis); FunctionalAssembler<HostBasis> hostassembler(hostbasis); - SubgridL2FunctionalAssembler<GridType, typename Basis::LocalFiniteElement, Dune::FieldVector<double,block_size> > subgridl2functionalassembler(function,grid); - L2FunctionalAssembler<HostGridType, typename HostBasis::LocalFiniteElement, Dune::FieldVector<double,block_size> > l2functionalassembler(function); + auto quadKey = QuadratureRuleKey(HostGridType::dimension,2); + + SubgridL2FunctionalAssembler<GridType, typename Basis::LocalFiniteElement, Dune::FieldVector<double,block_size> > subgridl2functionalassembler(function,grid, quadKey); + L2FunctionalAssembler<HostGridType, typename HostBasis::LocalFiniteElement, Dune::FieldVector<double,block_size> > l2functionalassembler(function, quadKey); /* assemble l2 functionals */ assembler.assemble(subgridl2functionalassembler, g); @@ -332,15 +334,16 @@ struct SubgridH1FunctionalAssemblerTestSuite gsubcoeffs(basis.size()), ghost(hostbasis.size()); - g = gsubcoeffs = 0.0; + g = 0.0; + gsubcoeffs = 0.0; ghost = 0.0; /* create assemblers */ FunctionalAssembler<Basis> assembler(basis); FunctionalAssembler<HostBasis> hostassembler(hostbasis); - SubgridH1FunctionalAssembler<GridType, typename Basis::LocalFiniteElement, Dune::FieldVector<double,block_size> > subgridh1functionalassembler(function,grid); - H1FunctionalAssembler<HostGridType, typename HostBasis::LocalFiniteElement, Dune::FieldVector<double,block_size> > h1functionalassembler(function); + SubgridH1FunctionalAssembler<GridType, typename Basis::LocalFiniteElement, Dune::FieldVector<double,block_size> > subgridh1functionalassembler(function,grid,4); + H1FunctionalAssembler<HostGridType, typename HostBasis::LocalFiniteElement, Dune::FieldVector<double,block_size> > h1functionalassembler(function,4); /* assemble h1 functionals */ assembler.assemble(subgridh1functionalassembler, g); @@ -372,28 +375,28 @@ int main(int argc, char** argv) std::cout << "This is the SubgridXYFunctionalAssemblerTest" << std::endl; -// SubgridL2FunctionalAssemblerTestSuite l2tests; + SubgridL2FunctionalAssemblerTestSuite l2tests; SubgridH1FunctionalAssemblerTestSuite h1tests; bool passed = true; std::cout << "Testing SubgridL2FunctionalAssembler" << std::endl; #if HAVE_DUNE_UGGRID -// passed = passed and checkWithAdaptiveGrid<Dune::UGGrid<2> >(l2tests, 3, 3); -// passed = passed and checkWithAdaptiveGrid<Dune::UGGrid<3> >(l2tests, 1, 2); + passed &= checkWithAdaptiveGrid<Dune::UGGrid<2> >(l2tests, 3, 3); + passed &= checkWithAdaptiveGrid<Dune::UGGrid<3> >(l2tests, 1, 2); #endif #if HAVE_DUNE_ALUGRID -// passed = passed and checkWithAdaptiveGrid<Dune::ALUGrid<2,2, Dune::simplex, Dune::nonconforming> >(l2tests, 3, 3); -// passed = passed and checkWithAdaptiveGrid<Dune::ALUGrid<3,3, Dune::simplex, Dune::nonconforming> >(l2tests, 1, 2); + passed &= checkWithAdaptiveGrid<Dune::ALUGrid<2,2, Dune::simplex, Dune::nonconforming> >(l2tests, 3, 3); +// passed &= checkWithAdaptiveGrid<Dune::ALUGrid<3,3, Dune::simplex, Dune::nonconforming> >(l2tests, 1, 2); #endif std::cout << "Testing SubgridH1FunctionalAssembler" << std::endl; #if HAVE_DUNE_UGGRID - passed = passed and checkWithAdaptiveGrid<Dune::UGGrid<2> >(h1tests, 3, 3); - passed = passed and checkWithAdaptiveGrid<Dune::UGGrid<3> >(h1tests, 1, 2); + passed &= checkWithAdaptiveGrid<Dune::UGGrid<2> >(h1tests, 3, 3); + passed &= checkWithAdaptiveGrid<Dune::UGGrid<3> >(h1tests, 1, 2); #endif #if HAVE_DUNE_ALUGRID - passed = passed and checkWithAdaptiveGrid<Dune::ALUGrid<2,2, Dune::simplex, Dune::nonconforming> >(h1tests, 3, 3); -// passed = passed and checkWithAdaptiveGrid<Dune::ALUGrid<3,3, Dune::simplex, Dune::nonconforming> >(h1tests, 1, 2); + passed &= checkWithAdaptiveGrid<Dune::ALUGrid<2,2, Dune::simplex, Dune::nonconforming> >(h1tests, 3, 3); +// passed &= checkWithAdaptiveGrid<Dune::ALUGrid<3,3, Dune::simplex, Dune::nonconforming> >(h1tests, 1, 2); #endif return passed ? 0 : 1; -- GitLab