From 9ba69882381e7388e6fb2cca3b7d3a478442c146 Mon Sep 17 00:00:00 2001 From: Oliver Sander <oliver.sander@tu-dresden.de> Date: Mon, 21 Oct 2019 16:52:02 +0200 Subject: [PATCH] Fix cosseratenergytest * Do not test with configurations that result in zero-area elements (because the energy is inf in these cases). * Test for the relative energy difference, rather than the absolute one, because the energy values can get very large. --- test/cosseratenergytest.cc | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/test/cosseratenergytest.cc b/test/cosseratenergytest.cc index d6d2f5e2..05dc2011 100644 --- a/test/cosseratenergytest.cc +++ b/test/cosseratenergytest.cc @@ -197,10 +197,7 @@ void testEnergy(const GridType* grid, const std::vector<TargetSpace>& coefficien double energy = assembler.energy(localView, rotatedCoefficients); - - assert(std::fabs(energy-referenceEnergy) < 1e-4); - - //std::cout << "energy: " << energy << std::endl; + assert(std::fabs(energy-referenceEnergy)/std::fabs(energy) < 1e-4); } @@ -234,6 +231,16 @@ void testFrameInvariance() for (int i=0; i<numIndices; i++, ++index) { + // Discard all configurations that deform the element to zero area + bool identicalPoints = false; + for (int j=0; j<domainDim+1; j++) + for (int k=0; k<domainDim+1; k++) + if (j!=k and (testPoints[index[j]].r - testPoints[index[k]].r).two_norm() < 1e-5) + identicalPoints = true; + + if (identicalPoints) + continue; + for (int j=0; j<domainDim+1; j++) coefficients[j] = testPoints[index[j]]; -- GitLab