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 : #include "ConnectorBase.h" 13 : 14 : class ClosuresBase; 15 : 16 : /** 17 : * Base class for heat transfer connections 18 : */ 19 : class HeatTransferBase : public ConnectorBase 20 : { 21 : public: 22 : HeatTransferBase(const InputParameters & parameters); 23 : 24 : virtual void addVariables() override; 25 : virtual void addMooseObjects() override; 26 0 : virtual Convergence * getNonlinearConvergence() const override { return nullptr; } 27 : 28 : /** 29 : * Returns heated perimeter name 30 : * 31 : * @return The name of heated perimeter variable 32 : */ 33 : const VariableName & getHeatedPerimeterName() const; 34 : /** 35 : * Returns wall temperature name 36 : * 37 : * @return The name of wall temperature variable 38 : */ 39 : const VariableName & getWallTemperatureName() const; 40 : 41 : /** 42 : * Returns wall temperature name 43 : * 44 : * @return The name of wall temperature material 45 : */ 46 : const MaterialPropertyName & getWallTemperatureMatName() const; 47 : 48 : /** 49 : * Returns wall heat flux name 50 : * 51 : * @return The name of wall heat flux material property 52 : */ 53 : const MaterialPropertyName & getWallHeatFluxName() const; 54 : 55 : /** 56 : * Returns whether this heat transfer is specified by temperature, rather than heat flux 57 : * 58 : * @return true if the heat transfer is specified by temperature, false otherwise 59 : */ 60 : virtual bool isTemperatureType() const = 0; 61 : 62 : /** 63 : * Get the list of the subdomain names associated with the flow channel 64 : * 65 : * @return List of subdomain names associated with the flow channel 66 : */ 67 : const std::vector<SubdomainName> & getFlowChannelSubdomains() const 68 : { 69 : return _flow_channel_subdomains; 70 : } 71 : 72 : const UserObjectName & getFluidPropertiesName() const; 73 : 74 : /** 75 : * Get the name of the connected flow channel 76 : */ 77 : const std::string & getFlowChannelName() const { return _flow_channel_name; } 78 : 79 : protected: 80 : virtual void init() override; 81 : virtual void initSecondary() override; 82 : virtual void check() const override; 83 : 84 : /** 85 : * Adds heated perimeter variable and objects 86 : */ 87 : void addHeatedPerimeter(); 88 : 89 : /// name of the connected flow channel 90 : const std::string _flow_channel_name; 91 : 92 : /// flag that heated perimeter is transferred from another application 93 : const bool _P_hf_transferred; 94 : /// flag that the heated perimeter was specified via an input parameter 95 : const bool _P_hf_provided; 96 : 97 : /// Used closures object(s) 98 : std::vector<std::shared_ptr<ClosuresBase>> _closures_objects; 99 : 100 : /// heated perimeter name 101 : VariableName _P_hf_name; 102 : /// wall temperature name 103 : VariableName _T_wall_name; 104 : /// wall temperature material name 105 : MaterialPropertyName _T_wall_mat_name; 106 : /// wall heat flux name 107 : MaterialPropertyName _q_wall_name; 108 : 109 : /// Subdomains corresponding to the connected flow channel 110 : std::vector<SubdomainName> _flow_channel_subdomains; 111 : /// flow model type 112 : THM::FlowModelID _model_type; 113 : /// fluid properties object name 114 : UserObjectName _fp_name; 115 : /// area function name for the connected flow channel 116 : FunctionName _A_fn_name; 117 : /// heated perimeter function name 118 : FunctionName _P_hf_fn_name; 119 : 120 : public: 121 : static InputParameters validParams(); 122 : };