NANDRAD Data Model Library  Version 2.0
NANDRAD
NANDRAD_IdealPipeRegisterModel.h
1 /* The NANDRAD data model library.
2 
3  Copyright (c) 2012-today, Institut für Bauklimatik, TU Dresden, Germany
4 
5  Primary authors:
6  Andreas Nicolai <andreas.nicolai -[at]- tu-dresden.de>
7  Anne Paepcke <anne.paepcke -[at]- tu-dresden.de>
8 
9  This library is part of SIM-VICUS (https://github.com/ghorwin/SIM-VICUS)
10 
11  This library is free software: you can redistribute it and/or modify
12  it under the terms of the GNU General Public License as published by
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
16  This library is distributed in the hope that it will be useful,
17  but WITHOUT ANY WARRANTY; without even the implied warranty of
18  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  GNU General Public License for more details.
20 */
21 
22 #ifndef NANDRAD_IdealPipeRegisterModelH
23 #define NANDRAD_IdealPipeRegisterModelH
24 
25 #include <IBK_IntPara.h>
26 #include <IBK_Parameter.h>
27 
28 #include "NANDRAD_Constants.h"
29 #include "NANDRAD_CodeGenMacros.h"
30 #include "NANDRAD_LinearSplineParameter.h"
31 #include "NANDRAD_HydraulicFluid.h"
32 
33 namespace NANDRAD {
34 
35 class Zone;
36 
37 /*! An idealised pipe-register model inside a heated layer of a construction.
38  Supply temperature is fixed, mass flux is controlled based on heating/cooling requirements in
39  associated thermostat.
40 */
42 public:
43  /*! Different model variants for supply temperature. */
44  enum modelType_t {
45  /*! Supply temperature is given as constant parameter. */
46  MT_Constant, // Keyword: Constant 'Constant supply temperature'
47  /*! Supply temperature is provided as 'SupplyTemperatureSchedule' schedule parameter. */
48  MT_Scheduled, // Keyword: Scheduled 'Scheduled supply temperature'
49  NUM_MT
50  };
51 
52  /*! Model parameters. */
53  enum para_t {
54  P_SupplyTemperature, // Keyword: SupplyTemperature [C] 'Medium supply temperature'
55  P_MaxMassFlux, // Keyword: MaxMassFlux [kg/s] 'Maximum mass flux through the pipe'
56  P_PipeLength, // Keyword: PipeLength [m] 'Pipe length'
57  P_PipeInnerDiameter, // Keyword: PipeInnerDiameter [mm] 'Inner diameter of pipe'
58  P_UValuePipeWall, // Keyword: UValuePipeWall [W/mK] 'Length-specific U-Value of pipe wall incl. insulation'
59  NUM_P
60  };
61 
62  /*! Whole number parameters. */
63  enum intPara_t {
64  IP_NumberParallelPipes, // Keyword: NumberParallelPipes 'Number of parallel pipes'
65  NUM_IP
66  };
67 
68  NANDRAD_READWRITE
69  NANDRAD_COMPARE_WITH_ID
70 
71  /*! Checks parameters for valid values. */
72  void checkParameters(const std::vector<NANDRAD::Zone> &zones);
73 
74  /*! Comparies objects by physical parametrization (excluding ID and displayname and object list). */
75  bool equal(const IdealPipeRegisterModel & other) const;
76 
77  /*! Unique ID-number for this model. */
78  unsigned int m_id = NANDRAD::INVALID_ID; // XML:A:required
79  /*! Some display/comment name for this model (optional). */
80  std::string m_displayName; // XML:A
81 
82  /*! Model type. */
83  modelType_t m_modelType = NUM_MT; // XML:A:required
84 
85  /*! Fluid properties. */
86  HydraulicFluid m_fluid; // XML:E:required
87 
88  /*! Object list with zones that this model is to be apply to. */
89  std::string m_constructionObjectList; // XML:E:required
90 
91  /*! Id of zone whose thermostat is used for control. */
92  unsigned int m_thermostatZoneId; // XML:E:required
93 
94  /*! Parameters. */
95  IBK::Parameter m_para[NUM_P]; // XML:E
96  /*! Integaer parameters. */
97  IBK::IntPara m_intPara[NUM_IP]; // XML:E
98 };
99 
100 } // namespace NANDRAD
101 
102 #endif // NANDRAD_IdealPipeRegisterModelH
unsigned int m_id
Unique ID-number for this model.
HydraulicFluid m_fluid
Fluid properties.
Contains global constants for the Nandrad data model.
unsigned int m_thermostatZoneId
Id of zone whose thermostat is used for control.
std::string m_constructionObjectList
Object list with zones that this model is to be apply to.
modelType_t
Different model variants for supply temperature.
bool equal(const IdealPipeRegisterModel &other) const
Comparies objects by physical parametrization (excluding ID and displayname and object list)...
unsigned int INVALID_ID
defines an invalid id
std::string m_displayName
Some display/comment name for this model (optional).
IBK::Parameter m_para[NUM_P]
Parameters.
Supply temperature is provided as &#39;SupplyTemperatureSchedule&#39; schedule parameter. ...
Supply temperature is given as constant parameter.
Properties of a fluid within a network.
IBK::IntPara m_intPara[NUM_IP]
Integaer parameters.
An idealised pipe-register model inside a heated layer of a construction.
NANDRAD_READWRITE NANDRAD_COMPARE_WITH_ID void checkParameters(const std::vector< NANDRAD::Zone > &zones)
Checks parameters for valid values.
The namespace NANDRAD contains the data model classes that make up the NANDRAD solver input data...