Compare commits

...
2 Commits
Author SHA1 Message Date
Will Pazner 2b2870c5f6 Clean up determinism test 2022-07-26 13:18:06 -07:00
Will Pazner 0642df9f21 Add determinism test 2022-07-26 13:12:06 -07:00
+62
View File
@@ -0,0 +1,62 @@
// Copyright (c) 2010-2022, Lawrence Livermore National Security, LLC. Produced
// at the Lawrence Livermore National Laboratory. All Rights reserved. See files
// LICENSE and NOTICE for details. LLNL-CODE-806117.
//
// This file is part of the MFEM library. For more information and source code
// availability visit https://mfem.org.
//
// MFEM is free software; you can redistribute it and/or modify it under the
// terms of the BSD-3 license. We welcome feedback and contributions, see file
// CONTRIBUTING.md for details.
#include "mfem.hpp"
#include "unit_tests.hpp"
using namespace mfem;
TEST_CASE("FA Determinism", "[PartialAssembly][CUDA]")
{
const int order = 3;
const char *mesh_filename = "../../data/star-q3.mesh";
Mesh mesh = Mesh::LoadFromFile(mesh_filename);
const int dim = mesh.Dimension();
H1_FECollection fec(order, dim);
FiniteElementSpace fes(&mesh, &fec);
Vector x, b_reference;
const int ntrials = 100 + 1;
for (int i = 0; i < ntrials; ++i)
{
BilinearForm a(&fes);
a.AddDomainIntegrator(new DiffusionIntegrator);
a.SetAssemblyLevel(AssemblyLevel::FULL);
a.Assemble();
a.Finalize();
SparseMatrix &A = a.SpMat();
const int n = A.Height();
if (x.Size() == 0)
{
x.SetSize(n);
x.Randomize(1);
}
Vector b(n);
A.Mult(x, b);
if (b_reference.Size() == 0)
{
b_reference = b;
}
else
{
b -= b_reference;
REQUIRE(b.Normlinf() == 0.0);
}
}
}