Skip to content

Commit 0f5ce40

Browse files
authored
Merge pull request #490 from cse-sim/perfmap
Add performance map based RSYS systems
2 parents 23f7360 + 19def19 commit 0f5ce40

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

111 files changed

+57332
-39321
lines changed

cmake/BuildFlags.cmake

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,9 @@ target_compile_options(cse_common_interface INTERFACE
7272
# /MTd # Creates a debug multithreaded executable file using LIBCMTD.lib. (set through CMAKE_MSVC_RUNTIME_LIBRARY)
7373
>
7474
>
75-
$<$<CXX_COMPILER_ID:GNU>:
76-
-Wall
77-
>
78-
$<$<CXX_COMPILER_ID:Clang,AppleClang>:
75+
$<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:
7976
-Wall
77+
-Wno-invalid-offsetof # "offsetof" is essential to CSE, though it's use isn't guaranteed to be safe for non-POD structures in C++ implementations. See https://stackoverflow.com/questions/1129894/why-cant-you-use-offsetof-on-non-pod-structures-in-c.
8078
>
8179
)
8280

doc/src/cse-user-manual.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ sections:
7979
- [2, "records/doas.md"]
8080
- [2, "records/rsys.md"]
8181
- [2, "records/ductseg.md"]
82+
- [2, "records/performancemap.md"]
8283
- [2, "records/dhwdayuse.md"]
8384
- [2, "records/dhwuse.md"]
8485
- [2, "records/dhwsys.md"]

doc/src/records/glazetype.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ GLAZETYPE constructs an object of class GLAZETYPE that represents a glazing type
44

55
**gtName**
66

7-
Name of glazetype. Required for reference fromWINDOW objects, below.
7+
Name of glazetype. Required for reference from WINDOW objects, below.
88

99
<%= member_table(
1010
units: "",

doc/src/records/performancemap.md

Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
# PERFORMANCEMAP
2+
3+
PERFORMANCEMAP defines a multiple-dimension table of values from which models can derive performance data via interpolation. Subordinate PMGRIDAXIS and PMLOOKUPDATA allow input of performance maps of a range of dimensions and granularity.
4+
5+
Following ASHRAE Standard 205 terminology, sets of "grid" values are the independent variables and sets of "lookup" values are the dependent variables.
6+
7+
The following example defines a 2D map based on grid variables outdoor dry-bulb temperature and (arbitrary) compressor speed. For each grid value combination, lookup values are provided for capacity ratio and COP.
8+
9+
PERFORMANCEMAP "PMClg"
10+
11+
PMGRIDAXIS "ClgOutdoorDBT" pmGXType="OutdoorDBT" pmGXValues=60,82,95,115 pmGXRefValue=95
12+
PMGRIDAXIS "ClgSpeed" pmGType="Speed" pmGXValues=1,2,3 pmGXRefValue=2
13+
14+
// Capacity ratio = net total capacity / net rated total capacity
15+
PMLOOKUPDATA LUClgCapRat pmLUType = "CapRat" pmLUValues =
16+
0.48, 1.13, 1.26, // 60F at min, mid, max speed
17+
0.42, 1.05, 1.17, // 82F
18+
0.39, 1.00, 1.12, // 95F
19+
0.34, 0.92, 1.04 // 115F
20+
21+
// COP = net total COP
22+
PMLOOKUPDATA LUClgCOP pmLUType = "COP" pmLUValues =
23+
14.22, 16.44, 15.00, // 60F at min, mid, max speed
24+
7.93, 7.59, 6.71, // 82F
25+
6.01, 5.58, 4.91, // 95F
26+
4.12, 3.82, 3.34 // 115F
27+
28+
endPERFORMANCEMAP
29+
30+
At OutdoorDBT=95 and Speed=2, this performance map would yield CapRat=1.00 and COP=5.58. At other (OutdoorDBT,Speed) combinations, suitable 2D interpolation is performed on each lookup variable. Lookup variables are extrapolated outside of PMGRIDAXIS ranges; adequate axis ranges must be provided to avoid unrealistic extrapolation.
31+
32+
**pmName**
33+
34+
Name of performance map; given after the word "PERFORMANCEMAP". Necessary to allow reference from e.g. RSYS.
35+
36+
<%= member_table(
37+
units: "",
38+
legal_range: "*63 characters*",
39+
default: "*none*",
40+
required: "Yes",
41+
variability: "constant")
42+
%>
43+
44+
**endPERFORMANCEMAP**
45+
46+
Optionally indicates the end of PERFORMANCEMAP definition. It is good practice to include *endPerformanceMap* after the associated PMGRIDAXIS and PMLOOKDATA.
47+
48+
<%= member_table(
49+
units: "",
50+
legal_range: "",
51+
default: "*none*",
52+
required: "No",
53+
variability: "constant") %>
54+
55+
56+
57+
# PMGRIDAXIS
58+
59+
Defines grid values for a single dimension of the parent (preceeding) PERFORMANCEMAP.
60+
61+
The order of PMGRIDAXIS commands fixes the order of PMLOOKUPDATA values -- later PMGRIDAXIS dimensions vary more quickly (see example above).
62+
63+
**pmGXName**
64+
65+
Name of grid axis; optionally given after the word "PMGRIDAXIS". Used in error messages.
66+
67+
<%= member_table(
68+
units: "",
69+
legal_range: "*63 characters*",
70+
default: "*none*",
71+
required: "No",
72+
variability: "constant")
73+
%>
74+
75+
**pmGXType=*string***
76+
77+
Documents the dimension of the axis, for example "OutdoorDBT", "Speed", or "AirFlow".
78+
79+
<%= member_table(
80+
units: "",
81+
legal_range: "*at least 1 char*",
82+
default: "*none*",
83+
required: "Yes",
84+
variability: "constant")
85+
%>
86+
87+
**pmGXValues=*float array***
88+
89+
1 to 10 comma-separated values specifying the data points of this axis. Must be in strictly ascending order.
90+
91+
<%= member_table(
92+
units: "various",
93+
legal_range: "",
94+
default: "*none*",
95+
required: "Yes",
96+
variability: "constant")
97+
%>
98+
99+
**pmGXRefValue=*float***
100+
101+
Defines the reference or nominal value of this PMGRIDAXIS. For example, when defining temperature points for a typical air conditioner, pmGXRefValue=95 might be used, since AC capacity is rated at 95 F.
102+
103+
<%= member_table(
104+
units: "same as pmGXValues",
105+
legal_range: "",
106+
default: "*none*",
107+
required: "Yes",
108+
variability: "constant")
109+
%>
110+
111+
**endPMGRIDAXIS**
112+
113+
Optionally indicates the end of PMGRIDAXIS definition.
114+
115+
<%= member_table(
116+
units: "",
117+
legal_range: "",
118+
default: "*none*",
119+
required: "No",
120+
variability: "constant") %>
121+
122+
123+
124+
# PMLOOKUPDATA
125+
126+
*pmLUName**
127+
128+
Name of lookup data; optionally given after the word "PMLOOKUPDATA". Used in error messages.
129+
130+
<%= member_table(
131+
units: "",
132+
legal_range: "*63 characters*",
133+
default: "*none*",
134+
required: "No",
135+
variability: "constant")
136+
%>
137+
138+
**pmLUType=*string***
139+
140+
Documents the current lookup value, e.g. "COP" or "CapacityRatio".
141+
142+
<%= member_table(
143+
units: "",
144+
legal_range: "*at least 1 char*",
145+
default: "*none*",
146+
required: "Yes",
147+
variability: "constant")
148+
%>
149+
150+
**pmLUValues=*float array***
151+
152+
Comma-separated values specifying the lookup data. The number of values required is the product of the size of all PMGRIDAXISs in the current PEFORMANCEMAP. In the example above, there are 4 OutdoorDBTs and 3 speeds, so 12 values must be provided.
153+
154+
<%= member_table(
155+
units: "various",
156+
legal_range: "",
157+
default: "*none*",
158+
required: "Yes",
159+
variability: "constant")
160+
%>
161+
162+
**endPMLOOKUPDATA**
163+
164+
Optionally indicates the end of PMLOOKUPDATA definition.
165+
166+
<%= member_table(
167+
units: "",
168+
legal_range: "",
169+
default: "*none*",
170+
required: "No",
171+
variability: "constant") %>

0 commit comments

Comments
 (0)