https://mooseframework.inl.gov
Loading...
Searching...
No Matches
INSFVVariableTest.C
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
3//*
4//* All rights reserved, see COPYRIGHT for full restrictions
5//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6//*
7//* Licensed under LGPL 2.1, please see LICENSE for details
8//* https://www.gnu.org/licenses/lgpl-2.1.html
9
10#include "gtest/gtest.h"
11
12#include "MooseMain.h"
13#include "AppFactory.h"
14#include "FEProblem.h"
15#include "MooseMesh.h"
18#include "INSFVVariable.h"
19
20class INSFVVariableTest : public ::testing::Test
21{
22public:
24 : _app(Moose::createMooseApp("NavierStokesUnitApp", 0, nullptr)), _factory(_app->getFactory())
25 {
27 }
28
29protected:
31 {
32 InputParameters mesh_params = _factory.getValidParams("GeneratedMesh");
33 mesh_params.set<MooseEnum>("dim") = "2";
34 mesh_params.set<unsigned int>("nx") = 2;
35 mesh_params.set<unsigned int>("ny") = 2;
36 _mesh = _factory.createUnique<MooseMesh>("GeneratedMesh", "moose_mesh", mesh_params);
37 _mesh->setMeshBase(_mesh->buildMeshBaseObject());
38 _mesh->buildMesh();
39
40 InputParameters problem_params = _factory.getValidParams("FEProblem");
41 problem_params.set<MooseMesh *>("mesh") = _mesh.get();
42 problem_params.set<std::string>(MooseBase::name_param) = "problem";
43 _fe_problem = _factory.create<FEProblem>("FEProblem", "problem", problem_params);
45 _app->actionWarehouse().problemBase() = _fe_problem;
46 }
47
48 // Add an INSFVPressureVariable to the default nonlinear system
50 {
51 InputParameters params = _factory.getValidParams("INSFVPressureVariable");
52 _fe_problem->addVariable("INSFVPressureVariable", name, params);
53 return _fe_problem->getVariable(0, name);
54 }
55
56 std::unique_ptr<MooseMesh> _mesh;
57 std::shared_ptr<MooseApp> _app;
59 std::shared_ptr<FEProblem> _fe_problem;
60};
61
62// INSFVVariable default does not compute QP data
63TEST_F(INSFVVariableTest, INSFVVariableDefaultNoQpData)
64{
65 auto & var = addINSFVVar("p");
66 EXPECT_FALSE(var.supportsQpBasedLoops());
67}
68
69// INSFVVariable opts in via requireQpComputations()
70TEST_F(INSFVVariableTest, INSFVVariableOptsInViaRequireQpComputations)
71{
72 auto & var = addINSFVVar("p");
73 dynamic_cast<INSFVVariable &>(var).requireQpComputations();
74 EXPECT_TRUE(var.supportsQpBasedLoops());
75}
76
77// INSFVVariable supports geometric-info loops
78TEST_F(INSFVVariableTest, INSFVVariableSupportsGeometricInfoLoops)
79{
80 auto & var = addINSFVVar("p");
81 EXPECT_TRUE(var.supportsGeometricInfoBasedLoops());
82}
83
84// supportsGeometricInfoBasedLoops() on INSFVVariable is unaffected by requireQpComputations()
85TEST_F(INSFVVariableTest, INSFVVariableGeometricInfoLoopSupportUnaffectedByRequireQp)
86{
87 auto & var = addINSFVVar("p");
88 dynamic_cast<INSFVVariable &>(var).requireQpComputations();
89 EXPECT_TRUE(var.supportsGeometricInfoBasedLoops());
90}
TEST_F(INSFVVariableTest, INSFVVariableDefaultNoQpData)
const std::string name
Definition Setup.h:21
virtual void createQRules(libMesh::QuadratureType type, libMesh::Order order, libMesh::Order volume_order=libMesh::INVALID_ORDER, libMesh::Order face_order=libMesh::INVALID_ORDER, SubdomainID block=Moose::ANY_BLOCK_ID, bool allow_negative_qweights=true)
std::shared_ptr< MooseObject > create(const std::string &obj_name, const std::string &name, const InputParameters &parameters, THREAD_ID tid=0, bool print_deprecated=true)
InputParameters getValidParams(const std::string &name) const
std::unique_ptr< MooseObject > createUnique(const std::string &obj_name, const std::string &name, const InputParameters &parameters, THREAD_ID tid=0, bool print_deprecated=true)
std::shared_ptr< FEProblem > _fe_problem
MooseVariableFieldBase & addINSFVVar(const std::string &name)
std::unique_ptr< MooseMesh > _mesh
std::shared_ptr< MooseApp > _app
T & set(const std::string &name, bool quiet_mode=false)
static const std::string name_param