Line data Source code
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 : #pragma once 11 : 12 : class THMProblem; 13 : class ThermalHydraulicsApp; 14 : class Factory; 15 : class HeatStructureInterface; 16 : class GeometricalComponent; 17 : 18 : #include "MooseObject.h" 19 : #include "NamingInterface.h" 20 : #include "libmesh/fe_type.h" 21 : 22 : /** 23 : * Provides functions to setup the heat conduction model. 24 : * 25 : * This is a proxy class for the MOOSE Modules' heat conduction model 26 : */ 27 : class HeatConductionModel : public MooseObject, public NamingInterface 28 : { 29 : public: 30 : HeatConductionModel(const InputParameters & params); 31 : 32 : /** 33 : * Add field variables used by this model 34 : */ 35 : virtual void addVariables(); 36 : 37 : /** 38 : * Add initial conditions 39 : */ 40 : virtual void addInitialConditions(); 41 : 42 : /** 43 : * Add materials used by this model 44 : */ 45 0 : virtual void addMaterials() {} 46 : 47 : /** 48 : * Add heat conduction equation for cartesian coordinate system 49 : */ 50 : virtual void addHeatEquationXYZ(); 51 : 52 : /** 53 : * Add heat conduction equation for RZ coordinate system 54 : */ 55 : virtual void addHeatEquationRZ(); 56 : 57 : /** 58 : * Get the FE type used for heat conduction 59 : * @return The finite element type 60 : */ 61 : static const libMesh::FEType & feType() { return _fe_type; } 62 : 63 : protected: 64 : THMProblem & _sim; 65 : /// The Factory associated with the MooseApp 66 : Factory & _factory; 67 : /// The heat structure interface that built this class 68 : HeatStructureInterface & _hs_interface; 69 : /// The geometrical component that built this class 70 : GeometricalComponent & _geometrical_component; 71 : /// Name of the component 72 : const std::string _comp_name; 73 : 74 : public: 75 : // variable names 76 : static const std::string DENSITY; 77 : static const std::string TEMPERATURE; 78 : static const std::string THERMAL_CONDUCTIVITY; 79 : static const std::string SPECIFIC_HEAT_CONSTANT_PRESSURE; 80 : 81 : static InputParameters validParams(); 82 : 83 : protected: 84 : // FE type used for heat conduction 85 : static libMesh::FEType _fe_type; 86 : 87 : friend class Simulation; 88 : };