From 47f29d3dfc52ad0889ead5666d49529efd536abb Mon Sep 17 00:00:00 2001 From: AntoineGautier Date: Thu, 15 Jan 2026 11:35:32 +0100 Subject: [PATCH 1/9] Support ! operator in interpreter --- client/src/interpreter/interpreter.ts | 12 ++++++++++++ client/tests/interpreter/interpreter.test.ts | 5 +++++ 2 files changed, 17 insertions(+) diff --git a/client/src/interpreter/interpreter.ts b/client/src/interpreter/interpreter.ts index 014e306a..ecc16050 100644 --- a/client/src/interpreter/interpreter.ts +++ b/client/src/interpreter/interpreter.ts @@ -284,6 +284,7 @@ export function resolvePaths( type Comparator = ">" | ">=" | "<" | "<="; export type OperatorType = | "none" + | "!" | "==" | "!=" | "&&" @@ -433,6 +434,17 @@ export const evaluate = ( val = expression.operator.includes("!") ? !isEqual : isEqual; break; } + case "!": { + if (expression.operands.length !== 1) { + throw new Error("Invalid number of operands for ! operator"); + } + const operand = expression.operands[0]; + const resolvedOperand = isExpression(operand) + ? evaluate(operand, context, scope) + : resolveToValue(operand, context, scope); + val = !resolvedOperand; + break; + } case "||": { val = expression.operands.reduce( (acc, cur) => !!(evaluate(cur, context, scope) || acc), diff --git a/client/tests/interpreter/interpreter.test.ts b/client/tests/interpreter/interpreter.test.ts index 595b10a3..2c5cf3a8 100644 --- a/client/tests/interpreter/interpreter.test.ts +++ b/client/tests/interpreter/interpreter.test.ts @@ -219,6 +219,11 @@ describe("Test set", () => { expect(evaluate(buildExpression("<=", [5, 4]))).toBeFalsy(); }); + it("Handles !", () => { + expect(evaluate(buildExpression("!", [true]))).toBeFalsy(); + expect(evaluate(buildExpression("!", [buildExpression(">=", [2, 3])]))).toBeTruthy(); + }); + it("Handles == and !=", () => { expect(evaluate(buildExpression("==", [1, 1, 1, 1]))).toBeTruthy(); expect(evaluate(buildExpression("==", [3]))).toBeTruthy(); From ef115a92df7d25301d55fdea7019b2c86dfe0b72 Mon Sep 17 00:00:00 2001 From: AntoineGautier Date: Thu, 15 Jan 2026 11:36:09 +0100 Subject: [PATCH 2/9] Bump modelica-json version --- server/bin/install-modelica-dependencies.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/bin/install-modelica-dependencies.sh b/server/bin/install-modelica-dependencies.sh index a6f8f3d7..ca648b56 100755 --- a/server/bin/install-modelica-dependencies.sh +++ b/server/bin/install-modelica-dependencies.sh @@ -2,7 +2,7 @@ set -x MODELICA_BUILDINGS_COMMIT=b399379315641da39b231033b0660100fd6489a5 -MODELICA_JSON_COMMIT=a46a361c3047c0a2b3d1cfc9bc8b0a4ced16006a +MODELICA_JSON_COMMIT=71b45ba6af2a7534c9d62abecf79e62240671e38 parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P ) From 68a9d4acbb621c0fadfbc773591bb13c946b7357 Mon Sep 17 00:00:00 2001 From: AntoineGautier Date: Thu, 15 Jan 2026 11:37:13 +0100 Subject: [PATCH 3/9] Refactor with stored_class_definitions instead of class_definition --- server/src/parser/loader.ts | 4 ++-- server/src/parser/parser.ts | 6 +++--- server/tests/static-data/modelica.ts | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/server/src/parser/loader.ts b/server/src/parser/loader.ts index 043a9116..3b056043 100644 --- a/server/src/parser/loader.ts +++ b/server/src/parser/loader.ts @@ -47,7 +47,7 @@ export function getClassNameFromRelativePath(filePath: string) { export function getClassNameFromJson(json: any): string { return ( (json.within ? json.within + "." : "") + - json.class_definition[0].class_specifier.long_class_specifier.identifier + json.stored_class_definitions[0].class_specifier.long_class_specifier.identifier ); } @@ -57,7 +57,7 @@ export function getClassNameFromJson(json: any): string { * @returns A TemplateNode object with class information */ function createTemplateNode(json: any): TemplateNode { - const classDefinition = json.class_definition[0]; + const classDefinition = json.stored_class_definitions[0]; return { className: getClassNameFromJson(json), description: diff --git a/server/src/parser/parser.ts b/server/src/parser/parser.ts index 28bec873..127061a8 100644 --- a/server/src/parser/parser.ts +++ b/server/src/parser/parser.ts @@ -1021,7 +1021,7 @@ export class Import extends Element { /** * Given a list of elements, discovers and returns the formatted type * - * @param definition - Object from class_definition array or from element_list array + * @param definition - Object from stored_class_definitions array or from element_list array * @param basePath - Class name from 'within' clause if parsing a class, or class name if parsing an element * @returns An Element instance or undefined if element type cannot be determined */ @@ -1074,7 +1074,7 @@ function _constructElement( case "record": case "package": const classSpecifier = - definition.class_specifier ?? // object from class_definition array + definition.class_specifier ?? // object from stored_class_definitions array definition.class_definition.class_specifier; // object from element_list array if (classSpecifier.hasOwnProperty("long_class_specifier")) { element = new LongClass(definition, basePath, elementType); @@ -1126,7 +1126,7 @@ export class File { }); } - obj.class_definition.map((cd: any) => { + obj.stored_class_definitions.map((cd: any) => { const element = _constructElement(cd, this.package); if (element) { this.elementList.push(element); diff --git a/server/tests/static-data/modelica.ts b/server/tests/static-data/modelica.ts index 5c83d190..0374bf5b 100644 --- a/server/tests/static-data/modelica.ts +++ b/server/tests/static-data/modelica.ts @@ -23,7 +23,7 @@ end Bus;`; export const BUS_JSON = { "within": "Buildings.BoundaryConditions.WeatherData", - "class_definition": [ + "stored_class_definitions": [ { "class_prefixes": "expandable connector", "class_specifier": { From c344dc4e9b293b4e78456e2b36fc186f1e768c9c Mon Sep 17 00:00:00 2001 From: AntoineGautier Date: Thu, 15 Jan 2026 11:39:43 +0100 Subject: [PATCH 4/9] Refactor for new schema and expansion of simple_expression --- server/src/parser/expression.ts | 242 +++++++++++++++++++++++++++++--- 1 file changed, 220 insertions(+), 22 deletions(-) diff --git a/server/src/parser/expression.ts b/server/src/parser/expression.ts index 45f1e654..1ded0536 100644 --- a/server/src/parser/expression.ts +++ b/server/src/parser/expression.ts @@ -18,28 +18,35 @@ export type Expression = { operands: Array; }; +function expandOperand( + operand: any, + basePath: string, + baseType: string, +): Literal | Expression { + if (typeof operand === "string") { + // Attempt to expand operand as a type + const element = + typeStore.get(operand, basePath) || typeStore.get(operand, baseType); + return element ? element.modelicaPath : operand; + } + // If operand is not a string, process it as an expression + return getExpression(operand, basePath, baseType); +} + function buildArithmeticExpression( expression: any, operator: any, basePath: string, baseType: string, ): Expression { - // TODO: attempt to expand operands as types const arithmetic_expression: Expression = { operator: operator === "<>" ? "!=" : operator, - operands: [expression[0].name, expression[1].name], + operands: [ + expandOperand(expression[0], basePath, baseType), + expandOperand(expression[1], basePath, baseType), + ], }; - // arithmetic_expression.operands = arithmetic_expression.operands.map((o, i) => { - // // if (typeof o === "string") { - // // // left hand side of expression is most likely a variable reference - favor basePath first - // // const element = (i === 0) ? typeStore.get(o, basePath) || typeStore.get(o, baseType) - // // : typeStore.get(o, baseType) || typeStore.get(o, basePath); - // // return (element) ? element.modelicaPath : o; - // // } - // return o; - // }); - return arithmetic_expression; } @@ -54,12 +61,33 @@ function buildLogicalExpression( }; if (expression.arithmetic_expressions) { - return buildArithmeticExpression( - expression.arithmetic_expressions, - expression.relation_operator, - basePath, - baseType, - ); + let result: Expression; + // Single arithmetic_expression without relation_operator is a boolean reference + if ( + expression.arithmetic_expressions.length === 1 && + !expression.relation_operator + ) { + result = buildSimpleExpression( + expression.arithmetic_expressions[0], + basePath, + baseType, + ); + } else { + result = buildArithmeticExpression( + expression.arithmetic_expressions, + expression.relation_operator, + basePath, + baseType, + ); + } + // Include ! operator if "not": true + if (expression.not) { + return { + operator: "!", + operands: [result], + }; + } + return result; } if (expression.logical_or?.length === 1) { @@ -221,6 +249,119 @@ function buildIfExpression( return if_expression; } +function buildTermExpression( + term: any, + basePath: string, + baseType: string, +): Expression { + // A term can be a string literal, or an object with operators and factors + if (typeof term === "string") { + return buildSimpleExpression(term, basePath, baseType); + } + + if (typeof term === "object" && term.factors) { + // term: { operators: ["*", "/"], factors: [...] } + // operators may be absent if there's only one factor + // Build a nested expression for multiplication/division + const factors = term.factors.map((factor: any) => + buildFactorExpression(factor, basePath, baseType), + ); + + if (factors.length === 1) { + return factors[0]; + } + + // Build left-associative expression: ((a * b) / c) + // Per grammar: term = factor { mul-operator factor } + // So operators.length === factors.length - 1 + const operators: string[] = term.operators || []; + let result = factors[0]; + for (let i = 0; i < operators.length; i++) { + result = { + operator: operators[i], + operands: [result, factors[i + 1]], + }; + } + return result; + } + + // Fallback: treat as simple expression + return buildSimpleExpression(term, basePath, baseType); +} + +function buildPrimaryExpression( + primary: any, + basePath: string, + baseType: string, +): Expression { + // primary can be a string or an array of expression objects + // expression: { simple_expression?: ..., if_expression?: ... } + if (typeof primary === "string") { + return buildSimpleExpression(primary, basePath, baseType); + } + + if (Array.isArray(primary)) { + // Array of expression objects + const expressions = primary.map((expr: any) => { + // Each expr is an expression object with simple_expression and/or if_expression + // Use getExpression which handles both cases + return getExpression(expr, basePath, baseType); + }); + + if (expressions.length === 1) { + return expressions[0]; + } + + // Multiple expressions - return as array expression + return { + operator: "primary_array", + operands: expressions, + }; + } + + // Single object - use getExpression to handle simple_expression or if_expression + return getExpression(primary, basePath, baseType); +} + +function buildFactorExpression( + factor: any, + basePath: string, + baseType: string, +): Expression { + // A factor can be: + // - a string literal + // - an object with { primary1, operator?, primary2? } for exponentiation + if (typeof factor === "string") { + return buildSimpleExpression(factor, basePath, baseType); + } + + if (typeof factor === "object" && factor.primary1 !== undefined) { + const primary1Expr = buildPrimaryExpression( + factor.primary1, + basePath, + baseType, + ); + + // Check for exponentiation: { primary1, operator: "^" or ".^", primary2 } + if (factor.operator && factor.primary2 !== undefined) { + const primary2Expr = buildPrimaryExpression( + factor.primary2, + basePath, + baseType, + ); + return { + operator: factor.operator, // "^" or ".^" + operands: [primary1Expr, primary2Expr], + }; + } + + return primary1Expr; + } + + // Fallback + return buildSimpleExpression(factor, basePath, baseType); +} + function buildSimpleExpression( expression: any, basePath: string, @@ -228,8 +369,65 @@ function buildSimpleExpression( ): Expression { let operand = expression; - if (typeof expression === "object") - console.log("Unknown Expression: ", expression); + // Handle object-type simple_expression with terms and addOps + if (typeof expression === "object" && expression !== null) { + if (expression.terms) { + // simple_expression: { addOps: ["+", "-"], terms: [...] } + const terms = expression.terms.map((term: any) => + buildTermExpression(term, basePath, baseType), + ); + + if (terms.length === 1 && !expression.addOps) { + return terms[0]; + } + + const addOps: string[] = expression.addOps || []; + // Determine if there's a leading unary operator + // If addOps.length === terms.length, the first addOp is a leading unary operator + const hasLeadingOp = addOps.length === terms.length; + + if (terms.length === 1 && hasLeadingOp) { + // Single term with unary operator (e.g., "-x") + return { + operator: addOps[0] === "-" ? "unary_minus" : "unary_plus", + operands: [terms[0]], + }; + } + + // Build left-associative expression for addition/subtraction + let result: Expression; + let opIndex = 0; + + if (hasLeadingOp) { + // First operator is unary + if (addOps[0] === "-") { + result = { + operator: "unary_minus", + operands: [terms[0]], + }; + } else { + result = terms[0]; + } + opIndex = 1; + } else { + result = terms[0]; + } + + for (let i = 1; i < terms.length; i++) { + result = { + operator: addOps[opIndex], + operands: [result, terms[i]], + }; + opIndex++; + } + + return result; + } + + // Unknown object structure - log for debugging + console.log("Unknown Expression: ", JSON.stringify(expression, null, 2)); + } + if (typeof expression === "string") { try { operand = JSON.parse(expression as string); @@ -237,9 +435,9 @@ function buildSimpleExpression( /** deserialization failed */ } if (typeof operand === "string") { - // Attempt to expand operand as a type + // Attempt to expand string operand as a type const element = - typeStore.get(operand, basePath) || typeStore.get(operand, baseType); // TODO: may only need to check basePath + typeStore.get(operand, basePath) || typeStore.get(operand, baseType); operand = element ? element.modelicaPath : operand; } } From 5bfaaaae80da62068a53aac2cfa3974629b5c929 Mon Sep 17 00:00:00 2001 From: AntoineGautier Date: Thu, 15 Jan 2026 11:40:22 +0100 Subject: [PATCH 5/9] Patch against rdflib failing to compile with tsc --- server/Dockerfile | 4 ++++ server/tsconfig.json | 3 ++- server/webpack.config.js | 3 +++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/server/Dockerfile b/server/Dockerfile index 988db320..fbce8db7 100644 --- a/server/Dockerfile +++ b/server/Dockerfile @@ -57,6 +57,10 @@ RUN npx webpack ARG PORT +# Needed to keep rdflib (modelica-json dep) out of project's dependencies +# but Node still requires it at runtime for some reason. +ENV NODE_PATH=/dependencies/modelica-json/node_modules + # For when image is run CMD ["node", "dist/index.js"] EXPOSE ${PORT} diff --git a/server/tsconfig.json b/server/tsconfig.json index e8a19c8f..967dd6fe 100644 --- a/server/tsconfig.json +++ b/server/tsconfig.json @@ -7,6 +7,7 @@ "strict": true, "allowJs": true, "sourceMap": true, - "resolveJsonModule": true + "resolveJsonModule": true, + "skipLibCheck": true } } diff --git a/server/webpack.config.js b/server/webpack.config.js index 5531d558..f5b9021e 100644 --- a/server/webpack.config.js +++ b/server/webpack.config.js @@ -7,4 +7,7 @@ module.exports = { path: path.resolve(__dirname, "dist"), }, target: "node", + externals: { + rdflib: "commonjs rdflib", + }, }; From 0cb21c93e1ec193541584477ff6af839dc606a21 Mon Sep 17 00:00:00 2001 From: AntoineGautier Date: Thu, 15 Jan 2026 11:40:45 +0100 Subject: [PATCH 6/9] Adapt to new getJsons signature --- server/src/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/server/src/index.ts b/server/src/index.ts index 848f54c5..e53df578 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -69,7 +69,6 @@ app.post("/api/modelicatojson", async (req, res) => { // To get around this read from the file that gets output during parsing parser.getJsons( [modelicaFile.name], - parseMode, format, tempDirPath, prettyPrint, From 693001408bfaf4991939d5a9802e857525636009 Mon Sep 17 00:00:00 2001 From: AntoineGautier Date: Thu, 15 Jan 2026 19:03:21 +0100 Subject: [PATCH 7/9] Fix for literal strings (# 483) --- server/src/parser/expression.ts | 48 +++++++++++++++++---------------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/server/src/parser/expression.ts b/server/src/parser/expression.ts index 1ded0536..95929af6 100644 --- a/server/src/parser/expression.ts +++ b/server/src/parser/expression.ts @@ -18,19 +18,30 @@ export type Expression = { operands: Array; }; -function expandOperand( - operand: any, +function expandStringOperand( + operand: string, basePath: string, baseType: string, ): Literal | Expression { - if (typeof operand === "string") { - // Attempt to expand operand as a type + let myoperand = operand; + try { + myoperand = JSON.parse(operand as string); + } catch { + /** deserialization failed */ + } + /* + * After try and catch above: + * "Buildings.Type" → "Buildings.Type" + * "\"String literal\"" → "String literal" + * "false" → false + * Only attempt to expand as a type if still a string, and original operand not literal + */ + if (typeof myoperand === "string" && !/^".*"$/.test(operand)) { const element = - typeStore.get(operand, basePath) || typeStore.get(operand, baseType); - return element ? element.modelicaPath : operand; + typeStore.get(myoperand, basePath) || typeStore.get(myoperand, baseType); + myoperand = element ? element.modelicaPath : myoperand; } - // If operand is not a string, process it as an expression - return getExpression(operand, basePath, baseType); + return myoperand; } function buildArithmeticExpression( @@ -41,10 +52,11 @@ function buildArithmeticExpression( ): Expression { const arithmetic_expression: Expression = { operator: operator === "<>" ? "!=" : operator, - operands: [ - expandOperand(expression[0], basePath, baseType), - expandOperand(expression[1], basePath, baseType), - ], + operands: expression.map((operand: any) => + typeof operand === "string" + ? expandStringOperand(operand, basePath, baseType) + : getExpression(operand, basePath, baseType), + ), }; return arithmetic_expression; @@ -429,17 +441,7 @@ function buildSimpleExpression( } if (typeof expression === "string") { - try { - operand = JSON.parse(expression as string); - } catch { - /** deserialization failed */ - } - if (typeof operand === "string") { - // Attempt to expand string operand as a type - const element = - typeStore.get(operand, basePath) || typeStore.get(operand, baseType); - operand = element ? element.modelicaPath : operand; - } + operand = expandStringOperand(expression, basePath, baseType); } const simple_expression: Expression = { From 1b3751cfd5e44bfceb639e97f602b76b65b0d86f Mon Sep 17 00:00:00 2001 From: AntoineGautier Date: Thu, 15 Jan 2026 19:07:12 +0100 Subject: [PATCH 8/9] Update templates in client --- client/src/data/templates.json | 3332 +++++++++++++++++++++++++------- 1 file changed, 2661 insertions(+), 671 deletions(-) diff --git a/client/src/data/templates.json b/client/src/data/templates.json index 610eb235..7d000935 100644 --- a/client/src/data/templates.json +++ b/client/src/data/templates.json @@ -115,7 +115,7 @@ ] }, "name": "Set to true if building static pressure sensor is used", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": false, "enable": true, @@ -130,7 +130,7 @@ "type": "Buildings.Templates.AirHandlersFans.Components.OutdoorReliefReturnSection.MixedAirWithDamper", "value": "Buildings.Templates.AirHandlersFans.Components.OutdoorReliefReturnSection.MixedAirWithDamper", "name": "Outdoor/relief/return air section", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "modifiers": {}, @@ -148,7 +148,7 @@ "type": "Buildings.Templates.AirHandlersFans.Components.OutdoorSection.SingleDamper", "value": "Buildings.Templates.AirHandlersFans.Components.OutdoorSection.SingleDamper", "name": "Outdoor air section", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "modifiers": { @@ -238,7 +238,7 @@ "expression": { "operator": "!=", "operands": [ - "energyDynamics", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorSection.energyDynamics", "Modelica.Fluid.Types.Dynamics.SteadyState" ] }, @@ -422,7 +422,7 @@ "enable": { "operator": "!=", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Damper.typ", "Buildings.Templates.Components.Types.Damper.None" ] }, @@ -464,7 +464,7 @@ "enable": { "operator": "!=", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Damper.typ", "Buildings.Templates.Components.Types.Damper.None" ] }, @@ -499,7 +499,7 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Damper.typ", "Buildings.Templates.Components.Types.Damper.None" ] }, @@ -517,7 +517,7 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Damper.typ", "Buildings.Templates.Components.Types.Damper.PressureIndependent" ] }, @@ -632,7 +632,7 @@ "enable": { "operator": "!=", "operands": [ - "typ", + "Buildings.Templates.Components.Actuators.Damper.typ", "Buildings.Templates.Components.Types.Damper.None" ] }, @@ -656,10 +656,21 @@ "tab": "Dynamics", "visible": false, "enable": { - "operator": "!=", + "operator": "&&", "operands": [ - "typ", - "Buildings.Templates.Components.Types.Damper.None" + { + "operator": "none", + "operands": [ + "Buildings.Templates.Components.Actuators.Damper.use_strokeTime" + ] + }, + { + "operator": "!=", + "operands": [ + "Buildings.Templates.Components.Actuators.Damper.typ", + "Buildings.Templates.Components.Types.Damper.None" + ] + } ] }, "modifiers": {}, @@ -682,10 +693,21 @@ "tab": "Dynamics", "visible": false, "enable": { - "operator": "!=", + "operator": "&&", "operands": [ - "typ", - "Buildings.Templates.Components.Types.Damper.None" + { + "operator": "none", + "operands": [ + "Buildings.Templates.Components.Actuators.Damper.use_strokeTime" + ] + }, + { + "operator": "!=", + "operands": [ + "Buildings.Templates.Components.Actuators.Damper.typ", + "Buildings.Templates.Components.Types.Damper.None" + ] + } ] }, "modifiers": {}, @@ -708,10 +730,21 @@ "tab": "Dynamics", "visible": true, "enable": { - "operator": "!=", + "operator": "&&", "operands": [ - "typ", - "Buildings.Templates.Components.Types.Damper.None" + { + "operator": "none", + "operands": [ + "Buildings.Templates.Components.Actuators.Damper.use_strokeTime" + ] + }, + { + "operator": "!=", + "operands": [ + "Buildings.Templates.Components.Actuators.Damper.typ", + "Buildings.Templates.Components.Types.Damper.None" + ] + } ] }, "modifiers": {}, @@ -736,7 +769,7 @@ "enable": { "operator": "!=", "operands": [ - "typ", + "Buildings.Templates.Components.Actuators.Damper.typ", "Buildings.Templates.Components.Types.Damper.None" ] }, @@ -765,14 +798,14 @@ { "operator": "!=", "operands": [ - "typ", + "Buildings.Templates.Components.Actuators.Damper.typ", "Buildings.Templates.Components.Types.Damper.None" ] }, { "operator": "!=", "operands": [ - "typ", + "Buildings.Templates.Components.Actuators.Damper.typ", "Buildings.Templates.Components.Types.Damper.PressureIndependent" ] } @@ -796,7 +829,7 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Actuators.Damper.typ", "Buildings.Templates.Components.Types.Damper.TwoPosition" ] }, @@ -814,7 +847,7 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Actuators.Damper.typ", "Buildings.Templates.Components.Types.Damper.PressureIndependent" ] }, @@ -1201,9 +1234,20 @@ "modelicaPath": "Buildings.Fluid.Actuators.BaseClasses.PartialDamperExponential.v_nominal", "type": "Modelica.Units.SI.Velocity", "value": { - "operator": "none", + "operator": "^", "operands": [ - "(2/rho_default/k1*dpDamper_nominal)^0.5" + { + "operator": "none", + "operands": [ + "2/rho_default/k1*dpDamper_nominal" + ] + }, + { + "operator": "none", + "operands": [ + 0.5 + ] + } ] }, "name": "Nominal face velocity", @@ -1251,9 +1295,14 @@ "tab": "", "visible": true, "enable": { - "operator": "none", + "operator": "!", "operands": [ - "not use_deltaM" + { + "operator": "none", + "operands": [ + "Buildings.Fluid.Actuators.BaseClasses.PartialDamperExponential.use_deltaM" + ] + } ] }, "modifiers": {}, @@ -1276,9 +1325,14 @@ "tab": "", "visible": true, "enable": { - "operator": "none", + "operator": "!", "operands": [ - "not use_deltaM" + { + "operator": "none", + "operands": [ + "Buildings.Fluid.Actuators.BaseClasses.PartialDamperExponential.use_deltaM" + ] + } ] }, "modifiers": {}, @@ -1371,9 +1425,42 @@ "modelicaPath": "Buildings.Fluid.Actuators.BaseClasses.PartialDamperExponential.k0", "type": "Real", "value": { - "operator": "none", + "operator": "*", "operands": [ - "2*rho_default*(A/kDamMin)^2" + { + "operator": "*", + "operands": [ + { + "operator": "none", + "operands": [ + 2 + ] + }, + { + "operator": "none", + "operands": [ + "rho_default" + ] + } + ] + }, + { + "operator": "^", + "operands": [ + { + "operator": "none", + "operands": [ + "A/kDamMin" + ] + }, + { + "operator": "none", + "operands": [ + 2 + ] + } + ] + } ] }, "name": "Loss coefficient for y=0 (pressure drop divided by dynamic pressure)", @@ -1473,7 +1560,7 @@ { "operator": ">", "operands": [ - "dpFixed_nominal", + "Buildings.Fluid.Actuators.BaseClasses.PartialDamperExponential.dpFixed_nominal", "Modelica.Constants.eps" ] }, @@ -2492,9 +2579,31 @@ "modelicaPath": "Buildings.Fluid.Actuators.Dampers.PressureIndependent.phi", "type": "Real", "value": { - "operator": "none", + "operator": "+", "operands": [ - "l +y_internal*(1 -l)" + { + "operator": "none", + "operands": [ + "Buildings.Fluid.Actuators.BaseClasses.PartialDamperExponential.l" + ] + }, + { + "operator": "*", + "operands": [ + { + "operator": "none", + "operands": [ + "y_internal" + ] + }, + { + "operator": "none", + "operands": [ + "1 -l" + ] + } + ] + } ] }, "name": "Ratio actual to nominal mass flow rate of damper, phi=kDam(y)/kDam(y=1)", @@ -3511,7 +3620,7 @@ "expression": { "operator": "none", "operands": [ - "Buildings.Fluid.Sensors.VolumeFlowRate" + "VolumeFlowRate" ] }, "final": true, @@ -4405,14 +4514,14 @@ { "operator": "==", "operands": [ - "typCtlEco", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorSection.typCtlEco", "Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedEnthalpyWithFixedDryBulb" ] }, { "operator": "==", "operands": [ - "typCtlEco", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorSection.typCtlEco", "Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialEnthalpyWithFixedDryBulb" ] } @@ -4665,7 +4774,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorSection.typ", "type": "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection", "name": "Outdoor air section type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -4751,21 +4860,21 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorSection.typ", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.SingleDamper" ] }, { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorSection.typ", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow" ] }, { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorSection.typ", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure" ] } @@ -4793,7 +4902,7 @@ ] }, "name": "Outdoor air damper type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": false, "enable": true, @@ -4820,7 +4929,7 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorSection.typ", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.SingleDamper" ] }, @@ -4838,7 +4947,7 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorSection.typ", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow" ] }, @@ -4856,7 +4965,7 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorSection.typ", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure" ] }, @@ -4882,7 +4991,7 @@ ] }, "name": "Minimum outdoor air damper type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": false, "enable": true, @@ -5050,7 +5159,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Data.OutdoorReliefReturnSection.typDamOut", "type": "Buildings.Templates.Components.Types.Damper", "name": "Outdoor air damper type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": { @@ -5074,7 +5183,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Data.OutdoorReliefReturnSection.typDamOutMin", "type": "Buildings.Templates.Components.Types.Damper", "name": "Minimum outdoor air damper type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": { @@ -5098,7 +5207,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Data.OutdoorReliefReturnSection.typDamRel", "type": "Buildings.Templates.Components.Types.Damper", "name": "Relief damper type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": { @@ -5122,7 +5231,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Data.OutdoorReliefReturnSection.typDamRet", "type": "Buildings.Templates.Components.Types.Damper", "name": "Return damper type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": { @@ -5146,7 +5255,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Data.OutdoorReliefReturnSection.typFanRel", "type": "Buildings.Templates.Components.Types.Fan", "name": "Type of relief fan", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": { @@ -5241,7 +5350,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Data.OutdoorReliefReturnSection.typFanRet", "type": "Buildings.Templates.Components.Types.Fan", "name": "Type of return fan", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": { @@ -5266,7 +5375,7 @@ "type": "Integer", "value": "", "name": "Number of return fans", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": { @@ -5286,7 +5395,7 @@ { "operator": "==", "operands": [ - "typFanRet", + "Buildings.Templates.AirHandlersFans.Components.Data.OutdoorReliefReturnSection.typFanRet", "Buildings.Templates.Components.Types.Fan.None" ] }, @@ -5325,7 +5434,7 @@ "type": "Integer", "value": "", "name": "Number of relief fans", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": { @@ -5345,7 +5454,7 @@ { "operator": "==", "operands": [ - "typFanRel", + "Buildings.Templates.AirHandlersFans.Components.Data.OutdoorReliefReturnSection.typFanRel", "Buildings.Templates.Components.Types.Fan.None" ] }, @@ -5390,7 +5499,7 @@ "enable": { "operator": "!=", "operands": [ - "typDamOutMin", + "Buildings.Templates.AirHandlersFans.Components.Data.OutdoorReliefReturnSection.typDamOutMin", "Buildings.Templates.Components.Types.Damper.None" ] }, @@ -5432,7 +5541,7 @@ "enable": { "operator": "!=", "operands": [ - "typDamOut", + "Buildings.Templates.AirHandlersFans.Components.Data.OutdoorReliefReturnSection.typDamOut", "Buildings.Templates.Components.Types.Damper.None" ] }, @@ -5469,7 +5578,7 @@ "enable": { "operator": "!=", "operands": [ - "typDamOutMin", + "Buildings.Templates.AirHandlersFans.Components.Data.OutdoorReliefReturnSection.typDamOutMin", "Buildings.Templates.Components.Types.Damper.None" ] }, @@ -5506,7 +5615,7 @@ "enable": { "operator": "!=", "operands": [ - "typDamRel", + "Buildings.Templates.AirHandlersFans.Components.Data.OutdoorReliefReturnSection.typDamRel", "Buildings.Templates.Components.Types.Damper.None" ] }, @@ -5543,7 +5652,7 @@ "enable": { "operator": "!=", "operands": [ - "typDamRet", + "Buildings.Templates.AirHandlersFans.Components.Data.OutdoorReliefReturnSection.typDamRet", "Buildings.Templates.Components.Types.Damper.None" ] }, @@ -5574,13 +5683,13 @@ "type": "Buildings.Templates.Components.Data.Fan", "value": "", "name": "Relief fan", - "group": "Buildings.Templates.Components.Fans", + "group": "Fans", "tab": "", "visible": false, "enable": { "operator": "!=", "operands": [ - "typFanRel", + "Buildings.Templates.AirHandlersFans.Components.Data.OutdoorReliefReturnSection.typFanRel", "Buildings.Templates.Components.Types.Fan.None" ] }, @@ -5652,7 +5761,7 @@ "enable": { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Fan.typ", "Buildings.Templates.Components.Types.Fan.ArrayVariable" ] }, @@ -5677,7 +5786,7 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Fan.typ", "Buildings.Templates.Components.Types.Fan.None" ] }, @@ -5722,7 +5831,7 @@ "enable": { "operator": "!=", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Fan.typ", "Buildings.Templates.Components.Types.Fan.None" ] }, @@ -5764,7 +5873,7 @@ "enable": { "operator": "!=", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Fan.typ", "Buildings.Templates.Components.Types.Fan.None" ] }, @@ -5799,7 +5908,7 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Fan.typ", "Buildings.Templates.Components.Types.Fan.None" ] }, @@ -5845,7 +5954,7 @@ "enable": { "operator": "!=", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Fan.typ", "Buildings.Templates.Components.Types.Fan.None" ] }, @@ -5992,9 +6101,42 @@ ] }, { - "operator": "none", + "operator": "-", "operands": [ - "(pressure.V_flow[end] -(pressure.V_flow[end] -pressure.V_flow[end -1])/(pressure.dp[end] -pressure.dp[end -1])*pressure.dp[end])" + { + "operator": "none", + "operands": [ + "pressure.V_flow[end]" + ] + }, + { + "operator": "*", + "operands": [ + { + "operator": "/", + "operands": [ + { + "operator": "none", + "operands": [ + "pressure.V_flow[end] -pressure.V_flow[end -1]" + ] + }, + { + "operator": "none", + "operands": [ + "pressure.dp[end] -pressure.dp[end -1]" + ] + } + ] + }, + { + "operator": "none", + "operands": [ + "pressure.dp[end]" + ] + } + ] + } ] } ] @@ -6039,9 +6181,42 @@ ] }, { - "operator": "none", + "operator": "-", "operands": [ - "(pressure.dp[1] -(pressure.dp[1] -pressure.dp[2])/(pressure.V_flow[1] -pressure.V_flow[2])*pressure.V_flow[1])" + { + "operator": "none", + "operands": [ + "pressure.dp[1]" + ] + }, + { + "operator": "*", + "operands": [ + { + "operator": "/", + "operands": [ + { + "operator": "none", + "operands": [ + "pressure.dp[1] -pressure.dp[2]" + ] + }, + { + "operator": "none", + "operands": [ + "pressure.V_flow[1] -pressure.V_flow[2]" + ] + } + ] + }, + { + "operator": "none", + "operands": [ + "pressure.V_flow[1]" + ] + } + ] + } ] } ] @@ -6203,9 +6378,20 @@ "operator": "if", "operands": [ { - "operator": "none", + "operator": "&&", "operands": [ - "powerOrEfficiencyIsHydraulic and havePressureCurve" + { + "operator": "none", + "operands": [ + "powerOrEfficiencyIsHydraulic" + ] + }, + { + "operator": "none", + "operands": [ + "havePressureCurve" + ] + } ] }, { @@ -6365,7 +6551,7 @@ "enable": { "operator": "==", "operands": [ - "etaHydMet", + "Buildings.Fluid.Movers.Data.Generic.etaHydMet", "Buildings.Fluid.Movers.BaseClasses.Types.HydraulicEfficiencyMethod.Efficiency_VolumeFlowRate" ] }, @@ -6480,7 +6666,7 @@ "enable": { "operator": "==", "operands": [ - "etaMotMet", + "Buildings.Fluid.Movers.Data.Generic.etaMotMet", "Buildings.Fluid.Movers.BaseClasses.Types.MotorEfficiencyMethod.Efficiency_VolumeFlowRate" ] }, @@ -6525,7 +6711,7 @@ "enable": { "operator": "==", "operands": [ - "etaMotMet", + "Buildings.Fluid.Movers.Data.Generic.etaMotMet", "Buildings.Fluid.Movers.BaseClasses.Types.MotorEfficiencyMethod.Efficiency_MotorPartLoadRatio" ] }, @@ -6640,7 +6826,7 @@ "enable": { "operator": "==", "operands": [ - "etaHydMet", + "Buildings.Fluid.Movers.Data.Generic.etaHydMet", "Buildings.Fluid.Movers.BaseClasses.Types.HydraulicEfficiencyMethod.Power_VolumeFlowRate" ] }, @@ -6755,7 +6941,7 @@ "enable": { "operator": "==", "operands": [ - "etaHydMet", + "Buildings.Fluid.Movers.Data.Generic.etaHydMet", "Buildings.Fluid.Movers.BaseClasses.Types.HydraulicEfficiencyMethod.EulerNumber" ] }, @@ -6913,7 +7099,7 @@ { "operator": "==", "operands": [ - "etaHydMet", + "Buildings.Fluid.Movers.Data.Generic.etaHydMet", "Buildings.Fluid.Movers.BaseClasses.Types.HydraulicEfficiencyMethod.EulerNumber" ] }, @@ -7131,14 +7317,14 @@ { "operator": "==", "operands": [ - "etaMotMet", + "Buildings.Fluid.Movers.Data.Generic.etaMotMet", "Buildings.Fluid.Movers.BaseClasses.Types.MotorEfficiencyMethod.Efficiency_MotorPartLoadRatio" ] }, { "operator": "==", "operands": [ - "etaMotMet", + "Buildings.Fluid.Movers.Data.Generic.etaMotMet", "Buildings.Fluid.Movers.BaseClasses.Types.MotorEfficiencyMethod.GenericCurve" ] } @@ -7166,7 +7352,7 @@ "enable": { "operator": "==", "operands": [ - "etaMotMet", + "Buildings.Fluid.Movers.Data.Generic.etaMotMet", "Buildings.Fluid.Movers.BaseClasses.Types.MotorEfficiencyMethod.GenericCurve" ] }, @@ -7220,7 +7406,7 @@ "value": { "operator": ">", "operands": [ - "WMot_nominal", + "Buildings.Fluid.Movers.Data.Generic.WMot_nominal", "Modelica.Constants.eps" ] }, @@ -7391,13 +7577,13 @@ "type": "Buildings.Templates.Components.Data.Fan", "value": "", "name": "Return fan", - "group": "Buildings.Templates.Components.Fans", + "group": "Fans", "tab": "", "visible": false, "enable": { "operator": "!=", "operands": [ - "typFanRet", + "Buildings.Templates.AirHandlersFans.Components.Data.OutdoorReliefReturnSection.typFanRet", "Buildings.Templates.Components.Types.Fan.None" ] }, @@ -8109,7 +8295,7 @@ "expression": { "operator": "!=", "operands": [ - "energyDynamics", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorSection.energyDynamics", "Modelica.Fluid.Types.Dynamics.SteadyState" ] }, @@ -8166,7 +8352,7 @@ "expression": { "operator": "!=", "operands": [ - "energyDynamics", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorSection.energyDynamics", "Modelica.Fluid.Types.Dynamics.SteadyState" ] }, @@ -8269,7 +8455,7 @@ "expression": { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorSection.typ", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow" ] }, @@ -8329,14 +8515,14 @@ { "operator": "==", "operands": [ - "typCtlEco", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorSection.typCtlEco", "Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedEnthalpyWithFixedDryBulb" ] }, { "operator": "==", "operands": [ - "typCtlEco", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorSection.typCtlEco", "Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialEnthalpyWithFixedDryBulb" ] } @@ -8375,7 +8561,7 @@ "expression": { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorSection.typ", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure" ] }, @@ -8753,9 +8939,14 @@ "tab": "", "visible": true, "enable": { - "operator": "none", + "operator": "!", "operands": [ - "not linearized" + { + "operator": "none", + "operands": [ + "linearized" + ] + } ] }, "modifiers": {}, @@ -8822,9 +9013,10 @@ "operator": "if", "operands": [ { - "operator": "none", + "operator": "==", "operands": [ - "([object Object])" + "portFlowDirection_1", + "Modelica.Fluid.Types.PortFlowDirection.Entering" ] }, { @@ -8859,9 +9051,10 @@ "operator": "if", "operands": [ { - "operator": "none", + "operator": "==", "operands": [ - "([object Object])" + "portFlowDirection_1", + "Modelica.Fluid.Types.PortFlowDirection.Leaving" ] }, { @@ -8932,9 +9125,10 @@ "operator": "if", "operands": [ { - "operator": "none", + "operator": "==", "operands": [ - "([object Object])" + "portFlowDirection_2", + "Modelica.Fluid.Types.PortFlowDirection.Entering" ] }, { @@ -8969,9 +9163,10 @@ "operator": "if", "operands": [ { - "operator": "none", + "operator": "==", "operands": [ - "([object Object])" + "portFlowDirection_2", + "Modelica.Fluid.Types.PortFlowDirection.Leaving" ] }, { @@ -9042,9 +9237,10 @@ "operator": "if", "operands": [ { - "operator": "none", + "operator": "==", "operands": [ - "([object Object])" + "portFlowDirection_3", + "Modelica.Fluid.Types.PortFlowDirection.Entering" ] }, { @@ -9079,9 +9275,10 @@ "operator": "if", "operands": [ { - "operator": "none", + "operator": "==", "operands": [ - "([object Object])" + "portFlowDirection_3", + "Modelica.Fluid.Types.PortFlowDirection.Leaving" ] }, { @@ -9128,10 +9325,15 @@ "tab": "Dynamics", "visible": false, "enable": { - "operator": "==", + "operator": "!", "operands": [ - "energyDynamics", - "Modelica.Fluid.Types.Dynamics.SteadyState" + { + "operator": "==", + "operands": [ + "Buildings.Fluid.Interfaces.LumpedVolumeDeclarations.energyDynamics", + "Modelica.Fluid.Types.Dynamics.SteadyState" + ] + } ] }, "modifiers": {}, @@ -9148,10 +9350,15 @@ "tab": "Dynamics", "visible": false, "enable": { - "operator": "==", + "operator": "!", "operands": [ - "energyDynamics", - "Modelica.Fluid.Types.Dynamics.SteadyState" + { + "operator": "==", + "operands": [ + "Buildings.Fluid.Interfaces.LumpedVolumeDeclarations.energyDynamics", + "Modelica.Fluid.Types.Dynamics.SteadyState" + ] + } ] }, "modifiers": {}, @@ -9292,7 +9499,7 @@ "expression": { "operator": "==", "operands": [ - "portFlowDirection_1", + "Buildings.Fluid.BaseClasses.PartialThreeWayResistance.portFlowDirection_1", "Modelica.Fluid.Types.PortFlowDirection.Bidirectional" ] }, @@ -9322,7 +9529,7 @@ "expression": { "operator": "==", "operands": [ - "portFlowDirection_2", + "Buildings.Fluid.BaseClasses.PartialThreeWayResistance.portFlowDirection_2", "Modelica.Fluid.Types.PortFlowDirection.Bidirectional" ] }, @@ -9352,7 +9559,7 @@ "expression": { "operator": "==", "operands": [ - "portFlowDirection_3", + "Buildings.Fluid.BaseClasses.PartialThreeWayResistance.portFlowDirection_3", "Modelica.Fluid.Types.PortFlowDirection.Bidirectional" ] }, @@ -9569,9 +9776,14 @@ "modelicaPath": "Buildings.Fluid.MixingVolumes.BaseClasses.PartialMixingVolume.initialize_p", "type": "Boolean", "value": { - "operator": "none", + "operator": "!", "operands": [ - "not Medium.singleState" + { + "operator": "none", + "operands": [ + "Medium.singleState" + ] + } ] }, "name": "= true to set up initial equations for pressure", @@ -9819,8 +10031,8 @@ { "operator": ">", "operands": [ - "nPorts", - "0" + "Buildings.Fluid.MixingVolumes.BaseClasses.PartialMixingVolume.nPorts", + 0 ] }, { @@ -10110,7 +10322,7 @@ "operator": ">", "operands": [ "Medium.nXi", - "0" + 0 ] }, "modifiers": {}, @@ -10152,7 +10364,7 @@ "operator": ">", "operands": [ "Medium.nC", - "0" + 0 ] }, "modifiers": {}, @@ -10194,7 +10406,7 @@ "operator": ">", "operands": [ "Medium.nC", - "0" + 0 ] }, "modifiers": {}, @@ -10301,9 +10513,14 @@ "modifiers": { "Buildings.Fluid.MixingVolumes.BaseClasses.PartialMixingVolume.initialize_p": { "expression": { - "operator": "none", + "operator": "!", "operands": [ - "not Medium.singleState" + { + "operator": "none", + "operands": [ + "Medium.singleState" + ] + } ] }, "final": true, @@ -10879,7 +11096,7 @@ "type": "Buildings.Templates.AirHandlersFans.Components.ReliefReturnSection.ReturnFan", "value": "Buildings.Templates.AirHandlersFans.Components.ReliefReturnSection.ReturnFan", "name": "Relief/return air section", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "modifiers": { @@ -10989,7 +11206,7 @@ "expression": { "operator": "!=", "operands": [ - "energyDynamics", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection.energyDynamics", "Modelica.Fluid.Types.Dynamics.SteadyState" ] }, @@ -11065,7 +11282,7 @@ "expression": { "operator": "==", "operands": [ - "typCtlFanRet", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection.typCtlFanRet", "Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.AirflowMeasured" ] }, @@ -11147,7 +11364,7 @@ "expression": { "operator": "!=", "operands": [ - "energyDynamics", + "Buildings.Templates.Components.Interfaces.PartialFan.energyDynamics", "Modelica.Fluid.Types.Dynamics.SteadyState" ] }, @@ -11336,7 +11553,7 @@ "enable": { "operator": "==", "operands": [ - "inputType", + "Buildings.Fluid.Movers.BaseClasses.PartialFlowMachine.inputType", "Buildings.Fluid.Types.InputType.Constant" ] }, @@ -11356,7 +11573,7 @@ "enable": { "operator": "==", "operands": [ - "inputType", + "Buildings.Fluid.Movers.BaseClasses.PartialFlowMachine.inputType", "Buildings.Fluid.Types.InputType.Stages" ] }, @@ -11436,7 +11653,7 @@ "enable": { "operator": "!=", "operands": [ - "energyDynamics", + "Buildings.Fluid.Interfaces.LumpedVolumeDeclarations.energyDynamics", "Modelica.Fluid.Types.Dynamics.SteadyState" ] }, @@ -12356,7 +12573,7 @@ "enable": { "operator": "!=", "operands": [ - "typ", + "Buildings.Templates.Components.Interfaces.PartialFan.typ", "Buildings.Templates.Components.Types.Fan.None" ] }, @@ -12589,7 +12806,7 @@ "enable": { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Interfaces.PartialFan.typ", "Buildings.Templates.Components.Types.Fan.ArrayVariable" ] }, @@ -12841,7 +13058,7 @@ "expression": { "operator": "!=", "operands": [ - "energyDynamics", + "Buildings.Templates.Components.Interfaces.PartialFan.energyDynamics", "Modelica.Fluid.Types.Dynamics.SteadyState" ] }, @@ -12988,9 +13205,14 @@ "tab": "", "visible": true, "enable": { - "operator": "none", + "operator": "!", "operands": [ - "not use_input" + { + "operator": "none", + "operands": [ + "Buildings.Fluid.BaseClasses.MassFlowRateMultiplier.use_input" + ] + } ] }, "modifiers": {}, @@ -13778,7 +14000,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection.typ", "type": "Buildings.Templates.AirHandlersFans.Types.ReliefReturnSection", "name": "Relief/return air section type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -13883,7 +14105,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection.typDamRel", "type": "Buildings.Templates.Components.Types.Damper", "name": "Relief damper type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -13902,7 +14124,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection.typFanRel", "type": "Buildings.Templates.Components.Types.Fan", "name": "Relief fan type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -13921,7 +14143,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection.typFanRet", "type": "Buildings.Templates.Components.Types.Fan", "name": "Return fan type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -13947,7 +14169,7 @@ "enable": { "operator": "==", "operands": [ - "typFanRet", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection.typFanRet", "Buildings.Templates.Components.Types.Fan.ArrayVariable" ] }, @@ -13962,7 +14184,7 @@ { "operator": "==", "operands": [ - "typFanRet", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection.typFanRet", "Buildings.Templates.Components.Types.Fan.None" ] }, @@ -14007,7 +14229,7 @@ "enable": { "operator": "==", "operands": [ - "typFanRel", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection.typFanRel", "Buildings.Templates.Components.Types.Fan.ArrayVariable" ] }, @@ -14022,7 +14244,7 @@ { "operator": "==", "operands": [ - "typFanRel", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection.typFanRel", "Buildings.Templates.Components.Types.Fan.None" ] }, @@ -14192,7 +14414,7 @@ { "operator": "!=", "operands": [ - "typFanRet", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection.typFanRet", "Buildings.Templates.Components.Types.Fan.None" ] }, @@ -14210,7 +14432,7 @@ { "operator": "!=", "operands": [ - "typFanRel", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection.typFanRel", "Buildings.Templates.Components.Types.Fan.None" ] }, @@ -14228,7 +14450,7 @@ { "operator": "!=", "operands": [ - "typDamRel", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection.typDamRel", "Buildings.Templates.Components.Types.Damper.None" ] }, @@ -14276,7 +14498,7 @@ { "operator": "!=", "operands": [ - "typFanRel", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection.typFanRel", "Buildings.Templates.Components.Types.Fan.None" ] }, @@ -14294,7 +14516,7 @@ { "operator": "!=", "operands": [ - "typFanRet", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection.typFanRet", "Buildings.Templates.Components.Types.Fan.None" ] }, @@ -14329,14 +14551,14 @@ { "operator": "!=", "operands": [ - "typFanRel", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection.typFanRel", "Buildings.Templates.Components.Types.Fan.None" ] }, { "operator": "!=", "operands": [ - "typFanRet", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection.typFanRet", "Buildings.Templates.Components.Types.Fan.None" ] } @@ -14982,14 +15204,14 @@ { "operator": "!=", "operands": [ - "typFanRet", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection.typFanRet", "Buildings.Templates.Components.Types.Fan.None" ] }, { "operator": "==", "operands": [ - "typCtlFanRet", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection.typCtlFanRet", "Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.BuildingPressure" ] } @@ -15165,7 +15387,7 @@ "expression": { "operator": "!=", "operands": [ - "energyDynamics", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection.energyDynamics", "Modelica.Fluid.Types.Dynamics.SteadyState" ] }, @@ -15413,7 +15635,7 @@ "expression": { "operator": "!=", "operands": [ - "energyDynamics", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection.energyDynamics", "Modelica.Fluid.Types.Dynamics.SteadyState" ] }, @@ -15590,7 +15812,7 @@ "expression": { "operator": "!=", "operands": [ - "energyDynamics", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorReliefReturnSection.energyDynamics", "Modelica.Fluid.Types.Dynamics.SteadyState" ] }, @@ -15666,7 +15888,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialHeatRecovery.typ", "type": "Buildings.Templates.AirHandlersFans.Types.HeatRecovery", "name": "Equipment type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -16147,7 +16369,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorReliefReturnSection.typ", "type": "Buildings.Templates.AirHandlersFans.Types.OutdoorReliefReturnSection", "name": "Outdoor/relief/return air section type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -16237,7 +16459,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorReliefReturnSection.typSecOut", "type": "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection", "name": "Outdoor air section type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -16255,7 +16477,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorReliefReturnSection.typSecRel", "type": "Buildings.Templates.AirHandlersFans.Types.ReliefReturnSection", "name": "Relief/return air section type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -16275,7 +16497,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorReliefReturnSection.typDamOut", "type": "Buildings.Templates.Components.Types.Damper", "name": "Outdoor air damper type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -16294,7 +16516,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorReliefReturnSection.typDamOutMin", "type": "Buildings.Templates.Components.Types.Damper", "name": "Minimum outdoor air damper type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -16313,7 +16535,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorReliefReturnSection.typDamRel", "type": "Buildings.Templates.Components.Types.Damper", "name": "Relief damper type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -16332,7 +16554,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorReliefReturnSection.typDamRet", "type": "Buildings.Templates.Components.Types.Damper", "name": "Return damper type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -16351,7 +16573,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorReliefReturnSection.typFanRel", "type": "Buildings.Templates.Components.Types.Fan", "name": "Relief fan type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -16370,7 +16592,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorReliefReturnSection.typFanRet", "type": "Buildings.Templates.Components.Types.Fan", "name": "Return fan type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -16396,7 +16618,7 @@ "enable": { "operator": "==", "operands": [ - "typFanRet", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorReliefReturnSection.typFanRet", "Buildings.Templates.Components.Types.Fan.ArrayVariable" ] }, @@ -16411,7 +16633,7 @@ { "operator": "==", "operands": [ - "typFanRet", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorReliefReturnSection.typFanRet", "Buildings.Templates.Components.Types.Fan.None" ] }, @@ -16456,7 +16678,7 @@ "enable": { "operator": "==", "operands": [ - "typFanRel", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorReliefReturnSection.typFanRel", "Buildings.Templates.Components.Types.Fan.ArrayVariable" ] }, @@ -16471,7 +16693,7 @@ { "operator": "==", "operands": [ - "typFanRel", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorReliefReturnSection.typFanRel", "Buildings.Templates.Components.Types.Fan.None" ] }, @@ -16509,7 +16731,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorReliefReturnSection.have_eco", "type": "Boolean", "name": "Set to true in case of economizer function", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -16529,7 +16751,7 @@ ] }, "name": "Set to true in case of heat recovery", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -16549,7 +16771,7 @@ ] }, "name": "Return fan control type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": false, @@ -16569,7 +16791,7 @@ ] }, "name": "Economizer control type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": false, @@ -17465,7 +17687,7 @@ "type": "Buildings.Templates.Components.Fans.None", "value": "Buildings.Templates.Components.Fans.None", "name": "Supply fan - Blow through", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "modifiers": { @@ -17718,7 +17940,7 @@ "type": "Buildings.Templates.Components.Fans.SingleVariable", "value": "Buildings.Templates.Components.Fans.SingleVariable", "name": "Supply fan - Draw through", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "modifiers": { @@ -17949,10 +18171,26 @@ "tab": "", "visible": false, "enable": { - "operator": ">", + "operator": "&&", "operands": [ - "Medium.nC", - "0" + { + "operator": "!", + "operands": [ + { + "operator": "none", + "operands": [ + "Buildings.Fluid.Sources.BaseClasses.Outside.use_C_in" + ] + } + ] + }, + { + "operator": ">", + "operands": [ + "Medium.nC", + 0 + ] + } ] }, "modifiers": {}, @@ -18800,9 +19038,14 @@ "tab": "", "visible": false, "enable": { - "operator": "none", + "operator": "!", "operands": [ - "not use_p_in" + { + "operator": "none", + "operands": [ + "Buildings.Fluid.Sources.Boundary_pT.use_p_in" + ] + } ] }, "modifiers": {}, @@ -18845,9 +19088,14 @@ "tab": "", "visible": false, "enable": { - "operator": "none", + "operator": "!", "operands": [ - "not use_T_in" + { + "operator": "none", + "operands": [ + "Buildings.Fluid.Sources.Boundary_pT.use_T_in" + ] + } ] }, "modifiers": {}, @@ -18992,10 +19240,26 @@ "tab": "", "visible": false, "enable": { - "operator": ">", + "operator": "&&", "operands": [ - "Medium.nXi", - "0" + { + "operator": "!", + "operands": [ + { + "operator": "none", + "operands": [ + "Buildings.Fluid.Sources.BaseClasses.PartialSource_Xi_C.use_X_in" + ] + } + ] + }, + { + "operator": ">", + "operands": [ + "Medium.nXi", + 0 + ] + } ] }, "modifiers": {}, @@ -19034,10 +19298,26 @@ "tab": "", "visible": false, "enable": { - "operator": ">", + "operator": "&&", "operands": [ - "Medium.nC", - "0" + { + "operator": "!", + "operands": [ + { + "operator": "none", + "operands": [ + "Buildings.Fluid.Sources.BaseClasses.PartialSource_Xi_C.use_C_in" + ] + } + ] + }, + { + "operator": ">", + "operands": [ + "Medium.nC", + 0 + ] + } ] }, "modifiers": {}, @@ -19389,9 +19669,33 @@ }, "Buildings.Templates.Components.Interfaces.PartialSensor.have_sen": { "expression": { - "operator": "none", + "operator": "&&", "operands": [ - "secOutRel.have_eco and ([object Object])" + { + "operator": "none", + "operands": [ + "secOutRel.have_eco" + ] + }, + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "ctl.typCtlEco", + "Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialDryBulb" + ] + }, + { + "operator": "==", + "operands": [ + "ctl.typCtlEco", + "Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedDryBulbWithDifferentialDryBulb" + ] + } + ] + } ] }, "final": true, @@ -19445,10 +19749,21 @@ }, "Buildings.Templates.Components.Interfaces.PartialSensor.have_sen": { "expression": { - "operator": "==", + "operator": "&&", "operands": [ - "ctl.typCtlEco", - "Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialEnthalpyWithFixedDryBulb" + { + "operator": "none", + "operands": [ + "secOutRel.have_eco" + ] + }, + { + "operator": "==", + "operands": [ + "ctl.typCtlEco", + "Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialEnthalpyWithFixedDryBulb" + ] + } ] }, "final": true, @@ -19501,7 +19816,7 @@ "type": "Buildings.Templates.Components.Coils.WaterBasedHeating", "value": "Buildings.Templates.Components.Coils.WaterBasedHeating", "name": "Heating coil in preheat position", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "modifiers": { @@ -19820,14 +20135,14 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Interfaces.PartialCoil.typ", "Buildings.Templates.Components.Types.Coil.WaterBasedHeating" ] }, { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Interfaces.PartialCoil.typ", "Buildings.Templates.Components.Types.Coil.WaterBasedCooling" ] } @@ -19853,14 +20168,14 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Interfaces.PartialCoil.typ", "Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage" ] }, { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Interfaces.PartialCoil.typ", "Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed" ] } @@ -20002,21 +20317,21 @@ { "operator": "!=", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.None" ] }, { "operator": "!=", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage" ] }, { "operator": "!=", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed" ] } @@ -20046,14 +20361,14 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage" ] }, { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed" ] } @@ -20100,7 +20415,7 @@ "enable": { "operator": "!=", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.None" ] }, @@ -20135,7 +20450,7 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.None" ] }, @@ -20204,7 +20519,7 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.WaterBasedHeating" ] }, @@ -20222,7 +20537,7 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.WaterBasedCooling" ] }, @@ -20301,7 +20616,7 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.WaterBasedHeating" ] }, @@ -20319,7 +20634,7 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.WaterBasedCooling" ] }, @@ -20362,10 +20677,21 @@ "tab": "", "visible": false, "enable": { - "operator": "!=", + "operator": "&&", "operands": [ - "typVal", - "Buildings.Templates.Components.Types.Valve.None" + { + "operator": "none", + "operands": [ + "Buildings.Templates.Components.Data.Coil.have_sou" + ] + }, + { + "operator": "!=", + "operands": [ + "Buildings.Templates.Components.Data.Coil.typVal", + "Buildings.Templates.Components.Types.Valve.None" + ] + } ] }, "modifiers": { @@ -20399,7 +20725,7 @@ { "operator": "==", "operands": [ - "typVal", + "Buildings.Templates.Components.Data.Coil.typVal", "Buildings.Templates.Components.Types.Valve.None" ] }, @@ -20447,21 +20773,21 @@ { "operator": "!=", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.None" ] }, { "operator": "!=", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage" ] }, { "operator": "!=", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed" ] } @@ -20478,7 +20804,7 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.None" ] }, @@ -20499,14 +20825,14 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage" ] }, { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed" ] } @@ -20526,7 +20852,7 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.WaterBasedCooling" ] }, @@ -20575,14 +20901,14 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.WaterBasedHeating" ] }, { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.ElectricHeating" ] } @@ -20675,7 +21001,7 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.WaterBasedHeating" ] }, @@ -20693,7 +21019,7 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.WaterBasedCooling" ] }, @@ -20772,7 +21098,7 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.WaterBasedCooling" ] }, @@ -20817,7 +21143,7 @@ "enable": { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.WaterBasedCooling" ] }, @@ -20863,14 +21189,14 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage" ] }, { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Coil.typ", "Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed" ] } @@ -21444,7 +21770,7 @@ "expression": { "operator": "!=", "operands": [ - "energyDynamics", + "Buildings.Templates.Components.Interfaces.PartialCoil.energyDynamics", "Modelica.Fluid.Types.Dynamics.SteadyState" ] }, @@ -21516,14 +21842,14 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Actuators.Valve.typ", "Buildings.Templates.Components.Types.Valve.TwoWayModulating" ] }, { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Actuators.Valve.typ", "Buildings.Templates.Components.Types.Valve.TwoWayTwoPosition" ] } @@ -21549,14 +21875,14 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Actuators.Valve.typ", "Buildings.Templates.Components.Types.Valve.ThreeWayModulating" ] }, { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Actuators.Valve.typ", "Buildings.Templates.Components.Types.Valve.ThreeWayTwoPosition" ] } @@ -21582,14 +21908,14 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Actuators.Valve.typ", "Buildings.Templates.Components.Types.Valve.TwoWayTwoPosition" ] }, { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Actuators.Valve.typ", "Buildings.Templates.Components.Types.Valve.ThreeWayTwoPosition" ] } @@ -21615,14 +21941,14 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Actuators.Valve.typ", "Buildings.Templates.Components.Types.Valve.ThreeWayModulating" ] }, { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Actuators.Valve.typ", "Buildings.Templates.Components.Types.Valve.TwoWayModulating" ] } @@ -21871,10 +22197,34 @@ "visible": true, "modifiers": {}, "enable": { - "operator": "==", + "operator": "&&", "operands": [ - "chaTwo", - "Buildings.Templates.Components.Types.ValveCharacteristicTwoWay.Table" + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Templates.Components.Actuators.Valve.typ", + "Buildings.Templates.Components.Types.Valve.TwoWayModulating" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Templates.Components.Actuators.Valve.typ", + "Buildings.Templates.Components.Types.Valve.TwoWayTwoPosition" + ] + } + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Templates.Components.Actuators.Valve.chaTwo", + "Buildings.Templates.Components.Types.ValveCharacteristicTwoWay.Table" + ] + } ] }, "choiceModifiers": {}, @@ -21985,10 +22335,34 @@ "visible": true, "modifiers": {}, "enable": { - "operator": "==", + "operator": "&&", "operands": [ - "chaThr", - "Buildings.Templates.Components.Types.ValveCharacteristicThreeWay.Table" + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Templates.Components.Actuators.Valve.typ", + "Buildings.Templates.Components.Types.Valve.ThreeWayModulating" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Templates.Components.Actuators.Valve.typ", + "Buildings.Templates.Components.Types.Valve.ThreeWayTwoPosition" + ] + } + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Templates.Components.Actuators.Valve.chaThr", + "Buildings.Templates.Components.Types.ValveCharacteristicThreeWay.Table" + ] + } ] }, "choiceModifiers": {}, @@ -22009,10 +22383,34 @@ "visible": true, "modifiers": {}, "enable": { - "operator": "==", + "operator": "&&", "operands": [ - "chaThr", - "Buildings.Templates.Components.Types.ValveCharacteristicThreeWay.Table" + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Templates.Components.Actuators.Valve.typ", + "Buildings.Templates.Components.Types.Valve.ThreeWayModulating" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Templates.Components.Actuators.Valve.typ", + "Buildings.Templates.Components.Types.Valve.ThreeWayTwoPosition" + ] + } + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Templates.Components.Actuators.Valve.chaThr", + "Buildings.Templates.Components.Types.ValveCharacteristicThreeWay.Table" + ] + } ] }, "choiceModifiers": {}, @@ -22105,7 +22503,7 @@ "enable": { "operator": "!=", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Valve.typ", "Buildings.Templates.Components.Types.Valve.None" ] }, @@ -22147,7 +22545,7 @@ "enable": { "operator": "!=", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Valve.typ", "Buildings.Templates.Components.Types.Valve.None" ] }, @@ -22204,7 +22602,7 @@ "enable": { "operator": "!=", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Valve.typ", "Buildings.Templates.Components.Types.Valve.None" ] }, @@ -22233,14 +22631,14 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Valve.typ", "Buildings.Templates.Components.Types.Valve.ThreeWayTwoPosition" ] }, { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.Components.Data.Valve.typ", "Buildings.Templates.Components.Types.Valve.ThreeWayModulating" ] } @@ -22469,7 +22867,7 @@ "enable": { "operator": "!=", "operands": [ - "typ", + "Buildings.Templates.Components.Actuators.Valve.typ", "Buildings.Templates.Components.Types.Valve.None" ] }, @@ -22493,10 +22891,50 @@ "tab": "Advanced", "visible": true, "enable": { - "operator": "!=", + "operator": "&&", "operands": [ - "typ", - "Buildings.Templates.Components.Types.Valve.None" + { + "operator": "!=", + "operands": [ + "Buildings.Templates.Components.Actuators.Valve.typ", + "Buildings.Templates.Components.Types.Valve.None" + ] + }, + { + "operator": "if_elseif", + "operands": [ + { + "operator": "if", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Templates.Components.Actuators.Valve.typ", + "Buildings.Templates.Components.Types.Valve.TwoWayModulating" + ] + }, + { + "operator": "!=", + "operands": [ + "Buildings.Templates.Components.Actuators.Valve.chaTwo", + "Buildings.Templates.Components.Types.ValveCharacteristicTwoWay.PressureIndependent" + ] + } + ] + }, + { + "operator": "else", + "operands": [ + { + "operator": "none", + "operands": [ + true + ] + } + ] + } + ] + } ] }, "modifiers": {}, @@ -23035,7 +23473,7 @@ { "operator": ">", "operands": [ - "dpFixed_nominal", + "Buildings.Fluid.Actuators.BaseClasses.PartialTwoWayValve.dpFixed_nominal", "Modelica.Constants.eps" ] }, @@ -25845,9 +26283,31 @@ "modelicaPath": "Buildings.Fluid.HeatExchangers.BaseClasses.HADryCoil.hA_nominal_w", "type": "Modelica.Units.SI.ThermalConductance", "value": { - "operator": "none", + "operator": "/", "operands": [ - "UA_nominal*(r_nominal +1)/r_nominal" + { + "operator": "*", + "operands": [ + { + "operator": "none", + "operands": [ + "Buildings.Fluid.HeatExchangers.BaseClasses.HADryCoil.UA_nominal" + ] + }, + { + "operator": "none", + "operands": [ + "r_nominal +1" + ] + } + ] + }, + { + "operator": "none", + "operands": [ + "Buildings.Fluid.HeatExchangers.BaseClasses.HADryCoil.r_nominal" + ] + } ] }, "name": "Water side convective heat transfer coefficient", @@ -26253,17 +26713,27 @@ "tab": "", "visible": true, "enable": { - "operator": "none", + "operator": "!", "operands": [ - "not use_Q_flow_nominal" + { + "operator": "none", + "operands": [ + "Buildings.Fluid.HeatExchangers.BaseClasses.PartialEffectivenessNTU.use_Q_flow_nominal" + ] + } ] }, "modifiers": { "Buildings.Fluid.HeatExchangers.BaseClasses.PartialEffectivenessNTU.fixed": { "expression": { - "operator": "none", + "operator": "!", "operands": [ - "not use_Q_flow_nominal" + { + "operator": "none", + "operands": [ + "Buildings.Fluid.HeatExchangers.BaseClasses.PartialEffectivenessNTU.use_Q_flow_nominal" + ] + } ] }, "final": false, @@ -26505,9 +26975,57 @@ "modelicaPath": "Buildings.Fluid.HeatExchangers.BaseClasses.PartialEffectiveness.C1_flow", "type": "Modelica.Units.SI.ThermalConductance", "value": { - "operator": "none", + "operator": "*", "operands": [ - "abs(m1_flow)*(if allowFlowReversal1 then fra_a1*Medium1.specificHeatCapacityCp(state_a1_inflow) +fra_b1*Medium1.specificHeatCapacityCp(state_b1_inflow) else [object Object])" + { + "operator": "none", + "operands": [ + "abs(m1_flow)" + ] + }, + { + "operator": "if_elseif", + "operands": [ + { + "operator": "if", + "operands": [ + { + "operator": "none", + "operands": [ + "Buildings.Fluid.Interfaces.PartialFourPort.allowFlowReversal1" + ] + }, + { + "operator": "none", + "operands": [ + "fra_a1*Medium1.specificHeatCapacityCp(state_a1_inflow) +fra_b1*Medium1.specificHeatCapacityCp(state_b1_inflow)" + ] + } + ] + }, + { + "operator": "else", + "operands": [ + { + "operator": "function_call", + "operands": [ + { + "operator": "Medium1.specificHeatCapacityCp", + "operands": [ + { + "operator": "none", + "operands": [ + "Medium1.specificHeatCapacityCp" + ] + } + ] + } + ] + } + ] + } + ] + } ] }, "name": "Heat capacity flow rate medium 1", @@ -26525,9 +27043,57 @@ "modelicaPath": "Buildings.Fluid.HeatExchangers.BaseClasses.PartialEffectiveness.C2_flow", "type": "Modelica.Units.SI.ThermalConductance", "value": { - "operator": "none", + "operator": "*", "operands": [ - "abs(m2_flow)*(if allowFlowReversal2 then fra_a2*Medium2.specificHeatCapacityCp(state_a2_inflow) +fra_b2*Medium2.specificHeatCapacityCp(state_b2_inflow) else [object Object])" + { + "operator": "none", + "operands": [ + "abs(m2_flow)" + ] + }, + { + "operator": "if_elseif", + "operands": [ + { + "operator": "if", + "operands": [ + { + "operator": "none", + "operands": [ + "Buildings.Fluid.Interfaces.PartialFourPort.allowFlowReversal2" + ] + }, + { + "operator": "none", + "operands": [ + "fra_a2*Medium2.specificHeatCapacityCp(state_a2_inflow) +fra_b2*Medium2.specificHeatCapacityCp(state_b2_inflow)" + ] + } + ] + }, + { + "operator": "else", + "operands": [ + { + "operator": "function_call", + "operands": [ + { + "operator": "Medium2.specificHeatCapacityCp", + "operands": [ + { + "operator": "none", + "operands": [ + "Medium2.specificHeatCapacityCp" + ] + } + ] + } + ] + } + ] + } + ] + } ] }, "name": "Heat capacity flow rate medium 2", @@ -26581,9 +27147,20 @@ "modelicaPath": "Buildings.Fluid.HeatExchangers.BaseClasses.PartialEffectiveness.QMax_flow", "type": "Modelica.Units.SI.HeatFlowRate", "value": { - "operator": "none", + "operator": "*", "operands": [ - "CMin_flow*(T_in2 -T_in1)" + { + "operator": "none", + "operands": [ + "Buildings.Fluid.HeatExchangers.BaseClasses.PartialEffectiveness.CMin_flow" + ] + }, + { + "operator": "none", + "operands": [ + "T_in2 -T_in1" + ] + } ] }, "name": "Maximum heat flow rate into medium 1", @@ -27903,9 +28480,20 @@ "modifiers": { "Buildings.Fluid.HeatExchangers.BaseClasses.PartialEffectivenessNTU.UA": { "expression": { - "operator": "none", + "operator": "/", "operands": [ - "1/(1/hA.hA_1 +1/hA.hA_2)" + { + "operator": "none", + "operands": [ + 1 + ] + }, + { + "operator": "none", + "operands": [ + "1/hA.hA_1 +1/hA.hA_2" + ] + } ] }, "final": false, @@ -28496,7 +29084,7 @@ "operator": ">", "operands": [ "Medium.nXi", - "0" + 0 ] }, "modifiers": {}, @@ -28538,7 +29126,7 @@ "operator": ">", "operands": [ "Medium.nC", - "0" + 0 ] }, "modifiers": {}, @@ -28786,9 +29374,14 @@ "tab": "", "visible": true, "enable": { - "operator": "none", + "operator": "!", "operands": [ - "not linearized" + { + "operator": "none", + "operands": [ + "Buildings.Fluid.BaseClasses.PartialResistance.linearized" + ] + } ] }, "modifiers": {}, @@ -29083,7 +29676,7 @@ "type": "Buildings.Templates.Components.Coils.WaterBasedCooling", "value": "Buildings.Templates.Components.Coils.WaterBasedCooling", "name": "Cooling coil", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "modifiers": { @@ -29255,7 +29848,7 @@ "expression": { "operator": "!=", "operands": [ - "energyDynamics", + "Buildings.Templates.Components.Interfaces.PartialCoil.energyDynamics", "Modelica.Fluid.Types.Dynamics.SteadyState" ] }, @@ -29696,17 +30289,27 @@ "tab": "", "visible": false, "enable": { - "operator": "none", + "operator": "!", "operands": [ - "not use_Q_flow_nominal" + { + "operator": "none", + "operands": [ + "Buildings.Fluid.HeatExchangers.WetCoilEffectivenessNTU.use_Q_flow_nominal" + ] + } ] }, "modifiers": { "Buildings.Fluid.HeatExchangers.WetCoilEffectivenessNTU.fixed": { "expression": { - "operator": "none", + "operator": "!", "operands": [ - "not use_Q_flow_nominal" + { + "operator": "none", + "operands": [ + "Buildings.Fluid.HeatExchangers.WetCoilEffectivenessNTU.use_Q_flow_nominal" + ] + } ] }, "final": false, @@ -29724,9 +30327,20 @@ }, "Buildings.Fluid.HeatExchangers.WetCoilEffectivenessNTU.start": { "expression": { - "operator": "none", + "operator": "/", "operands": [ - "1/(1/10 +1/20)" + { + "operator": "none", + "operands": [ + 1 + ] + }, + { + "operator": "none", + "operands": [ + "1/10 +1/20" + ] + } ] }, "final": false, @@ -29844,7 +30458,7 @@ "value": { "operator": "none", "operands": [ - "QSen2_flow/noEvent(if ([object Object]) then Q2_flow else 1)" + "QSen2_flow/noEvent(if (Q2_flow > 0.000001 or Q2_flow < -0.000001) then Q2_flow else 1)" ] }, "name": "Sensible to total heat ratio", @@ -30211,7 +30825,7 @@ "type": "Buildings.Templates.Components.Coils.None", "value": "Buildings.Templates.Components.Coils.None", "name": "Heating coil in reheat position", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "modifiers": { @@ -30646,7 +31260,7 @@ "type": "Buildings.Templates.AirHandlersFans.Components.Controls.G36VAVMultiZone", "value": "Buildings.Templates.AirHandlersFans.Components.Controls.G36VAVMultiZone", "name": "Control selections", - "group": "Buildings.Templates.AirHandlersFans.Components.Controls", + "group": "Controls", "tab": "", "visible": true, "modifiers": { @@ -30744,7 +31358,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Controls.G36VAVMultiZone.idZon", "type": "String", "name": "Zone (or terminal unit) names", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -30758,7 +31372,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Controls.G36VAVMultiZone.namGro", "type": "String", "name": "Name of zone groups", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -30772,7 +31386,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Controls.G36VAVMultiZone.namGroZon", "type": "String", "name": "Name of group which each zone belongs to", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -30808,7 +31422,7 @@ ] }, "name": "Number of zone groups", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": false, "enable": true, @@ -30828,7 +31442,7 @@ ] }, "name": "ASHRAE climate zone", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": false, "enable": true, @@ -31134,7 +31748,7 @@ ] }, "name": "California Title 24 climate zone", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": false, "enable": true, @@ -31917,7 +32531,7 @@ ] }, "name": "Set to true if there are any VAV-reheat boxes on perimeter zones", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -32709,7 +33323,7 @@ "enable": { "operator": "==", "operands": [ - "eneStd", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.eneStd", "Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1" ] }, @@ -32754,7 +33368,7 @@ "enable": { "operator": "==", "operands": [ - "eneStd", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.eneStd", "Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24" ] }, @@ -33039,7 +33653,7 @@ "enable": { "operator": "==", "operands": [ - "buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.buiPreCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefFan" ] }, @@ -33159,7 +33773,7 @@ "enable": { "operator": "==", "operands": [ - "venStd", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.venStd", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" ] }, @@ -33185,7 +33799,7 @@ "enable": { "operator": "==", "operands": [ - "venStd", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.venStd", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" ] }, @@ -33211,7 +33825,7 @@ "enable": { "operator": "==", "operands": [ - "venStd", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.venStd", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24" ] }, @@ -33237,7 +33851,7 @@ "enable": { "operator": "==", "operands": [ - "venStd", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.venStd", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24" ] }, @@ -33562,14 +34176,14 @@ { "operator": "==", "operands": [ - "fanSpeCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.fanSpeCon", "Buildings.Controls.OBC.CDL.Types.SimpleController.PI" ] }, { "operator": "==", "operands": [ - "fanSpeCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.fanSpeCon", "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" ] } @@ -33600,14 +34214,14 @@ { "operator": "==", "operands": [ - "fanSpeCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.fanSpeCon", "Buildings.Controls.OBC.CDL.Types.SimpleController.PD" ] }, { "operator": "==", "operands": [ - "fanSpeCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.fanSpeCon", "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" ] } @@ -33963,14 +34577,14 @@ { "operator": "==", "operands": [ - "valCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.valCon", "Buildings.Controls.OBC.CDL.Types.SimpleController.PI" ] }, { "operator": "==", "operands": [ - "valCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.valCon", "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" ] } @@ -34001,14 +34615,14 @@ { "operator": "==", "operands": [ - "valCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.valCon", "Buildings.Controls.OBC.CDL.Types.SimpleController.PD" ] }, { "operator": "==", "operands": [ - "valCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.valCon", "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" ] } @@ -34079,14 +34693,14 @@ { "operator": "==", "operands": [ - "minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.minOADes", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow" ] }, { "operator": "==", "operands": [ - "minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.minOADes", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.SingleDamper" ] } @@ -34122,14 +34736,14 @@ { "operator": "==", "operands": [ - "minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.minOADes", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow" ] }, { "operator": "==", "operands": [ - "minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.minOADes", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.SingleDamper" ] } @@ -34155,9 +34769,46 @@ "tab": "Economizer", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "([object Object]) and ([object Object])" + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.SingleDamper" + ] + } + ] + }, + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.minOAConTyp", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PI" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.minOAConTyp", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" + ] + } + ] + } ] }, "modifiers": {}, @@ -34180,9 +34831,46 @@ "tab": "Economizer", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "([object Object]) and ([object Object])" + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.SingleDamper" + ] + } + ] + }, + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.minOAConTyp", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PD" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.minOAConTyp", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" + ] + } + ] + } ] }, "modifiers": {}, @@ -34205,9 +34893,22 @@ "tab": "Economizer", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "([object Object])" + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.venStd", + "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24" + ] + } ] }, "modifiers": {}, @@ -34230,9 +34931,22 @@ "tab": "Economizer", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "([object Object])" + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.venStd", + "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure" + ] + } ] }, "modifiers": {}, @@ -34257,7 +34971,7 @@ "enable": { "operator": "==", "operands": [ - "minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.minOADes", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure" ] }, @@ -34283,7 +34997,7 @@ "enable": { "operator": "==", "operands": [ - "minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.minOADes", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure" ] }, @@ -34314,7 +35028,7 @@ "enable": { "operator": "==", "operands": [ - "minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.minOADes", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure" ] }, @@ -34338,9 +35052,34 @@ "tab": "Economizer", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "([object Object]) and ([object Object])" + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure" + ] + }, + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.dpConTyp", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PI" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.dpConTyp", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" + ] + } + ] + } ] }, "modifiers": {}, @@ -34363,9 +35102,34 @@ "tab": "Economizer", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "([object Object]) and ([object Object])" + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure" + ] + }, + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.dpConTyp", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PD" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.dpConTyp", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" + ] + } + ] + } ] }, "modifiers": {}, @@ -34390,7 +35154,7 @@ "enable": { "operator": "==", "operands": [ - "minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.minOADes", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.SingleDamper" ] }, @@ -34439,14 +35203,14 @@ { "operator": "==", "operands": [ - "ecoHigLimCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.ecoHigLimCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialEnthalpyWithFixedDryBulb" ] }, { "operator": "==", "operands": [ - "ecoHigLimCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.ecoHigLimCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedEnthalpyWithFixedDryBulb" ] } @@ -34594,7 +35358,7 @@ "enable": { "operator": "==", "operands": [ - "minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.minOADes", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow" ] }, @@ -34620,7 +35384,7 @@ "enable": { "operator": "==", "operands": [ - "minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.minOADes", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow" ] }, @@ -34764,9 +35528,33 @@ "tab": "Freeze protection", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "have_frePro and ([object Object])" + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.have_frePro" + ] + }, + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.freProHeaCoiCon", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PI" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.freProHeaCoiCon", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" + ] + } + ] + } ] }, "modifiers": {}, @@ -34789,9 +35577,33 @@ "tab": "Freeze protection", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "have_frePro and ([object Object])" + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.have_frePro" + ] + }, + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.freProHeaCoiCon", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PD" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.freProHeaCoiCon", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" + ] + } + ] + } ] }, "modifiers": {}, @@ -34869,21 +35681,21 @@ { "operator": "==", "operands": [ - "buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.buiPreCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefDamper" ] }, { "operator": "==", "operands": [ - "buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.buiPreCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefFan" ] }, { "operator": "==", "operands": [ - "buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.buiPreCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanDp" ] } @@ -34911,7 +35723,7 @@ "enable": { "operator": "==", "operands": [ - "buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.buiPreCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefDamper" ] }, @@ -34937,7 +35749,7 @@ "enable": { "operator": "==", "operands": [ - "buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.buiPreCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanMeasuredAir" ] }, @@ -34966,14 +35778,14 @@ { "operator": "==", "operands": [ - "buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.buiPreCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanMeasuredAir" ] }, { "operator": "==", "operands": [ - "buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.buiPreCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanDp" ] } @@ -35009,14 +35821,14 @@ { "operator": "==", "operands": [ - "buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.buiPreCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanMeasuredAir" ] }, { "operator": "==", "operands": [ - "buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.buiPreCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanDp" ] } @@ -35042,9 +35854,46 @@ "tab": "Pressure control", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "([object Object]) and ([object Object])" + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanMeasuredAir" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanDp" + ] + } + ] + }, + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.retFanCon", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PI" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.retFanCon", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" + ] + } + ] + } ] }, "modifiers": {}, @@ -35067,9 +35916,46 @@ "tab": "Pressure control", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "([object Object]) and ([object Object])" + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanMeasuredAir" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanDp" + ] + } + ] + }, + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.retFanCon", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PD" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.retFanCon", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" + ] + } + ] + } ] }, "modifiers": {}, @@ -35092,9 +35978,22 @@ "tab": "Pressure control", "visible": false, "enable": { - "operator": "none", + "operator": "||", "operands": [ - "([object Object])" + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanMeasuredAir" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanDp" + ] + } ] }, "modifiers": {}, @@ -35117,9 +36016,22 @@ "tab": "Pressure control", "visible": true, "enable": { - "operator": "none", + "operator": "||", "operands": [ - "([object Object])" + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanMeasuredAir" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanDp" + ] + } ] }, "modifiers": {}, @@ -35144,7 +36056,7 @@ "enable": { "operator": "==", "operands": [ - "buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.buiPreCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanDp" ] }, @@ -35170,7 +36082,7 @@ "enable": { "operator": "==", "operands": [ - "buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.buiPreCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanDp" ] }, @@ -35194,10 +36106,21 @@ "tab": "Pressure control", "visible": true, "enable": { - "operator": "==", + "operator": "&&", "operands": [ - "buiPreCon", - "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefFan" + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefFan" + ] + }, + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.have_ahuRelFan" + ] + } ] }, "modifiers": {}, @@ -35220,10 +36143,21 @@ "tab": "Pressure control", "visible": true, "enable": { - "operator": "==", + "operator": "&&", "operands": [ - "buiPreCon", - "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefFan" + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefFan" + ] + }, + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.have_ahuRelFan" + ] + } ] }, "modifiers": {}, @@ -37467,10 +38401,21 @@ "tab": "", "visible": true, "enable": { - "operator": "==", + "operator": "&&", "operands": [ - "heaCoi", - "Buildings.Controls.OBC.ASHRAE.G36.Types.HeatingCoil.WaterBased" + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection.heaCoi", + "Buildings.Controls.OBC.ASHRAE.G36.Types.HeatingCoil.WaterBased" + ] + }, + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection.have_frePro" + ] + } ] }, "modifiers": {}, @@ -37493,9 +38438,33 @@ "tab": "", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "([object Object]) and have_frePro" + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection.heaCoi", + "Buildings.Controls.OBC.ASHRAE.G36.Types.HeatingCoil.WaterBased" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection.heaCoi", + "Buildings.Controls.OBC.ASHRAE.G36.Types.HeatingCoil.Electric" + ] + } + ] + }, + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection.have_frePro" + ] + } ] }, "modifiers": {}, @@ -37523,9 +38492,33 @@ "tab": "", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "([object Object]) and have_frePro" + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection.heaCoi", + "Buildings.Controls.OBC.ASHRAE.G36.Types.HeatingCoil.WaterBased" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection.heaCoi", + "Buildings.Controls.OBC.ASHRAE.G36.Types.HeatingCoil.Electric" + ] + } + ] + }, + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection.have_frePro" + ] + } ] }, "modifiers": {}, @@ -37548,9 +38541,52 @@ "tab": "", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "([object Object]) and have_frePro and ([object Object])" + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection.heaCoi", + "Buildings.Controls.OBC.ASHRAE.G36.Types.HeatingCoil.WaterBased" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection.heaCoi", + "Buildings.Controls.OBC.ASHRAE.G36.Types.HeatingCoil.Electric" + ] + } + ] + }, + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection.have_frePro" + ] + }, + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection.heaCoiCon", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PI" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection.heaCoiCon", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" + ] + } + ] + } ] }, "modifiers": {}, @@ -37573,9 +38609,52 @@ "tab": "", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "([object Object]) and have_frePro and ([object Object])" + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection.heaCoi", + "Buildings.Controls.OBC.ASHRAE.G36.Types.HeatingCoil.WaterBased" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection.heaCoi", + "Buildings.Controls.OBC.ASHRAE.G36.Types.HeatingCoil.Electric" + ] + } + ] + }, + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection.have_frePro" + ] + }, + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection.heaCoiCon", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PD" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection.heaCoiCon", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" + ] + } + ] + } ] }, "modifiers": {}, @@ -37598,9 +38677,33 @@ "tab": "", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "([object Object]) and have_frePro" + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection.heaCoi", + "Buildings.Controls.OBC.ASHRAE.G36.Types.HeatingCoil.WaterBased" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection.heaCoi", + "Buildings.Controls.OBC.ASHRAE.G36.Types.HeatingCoil.Electric" + ] + } + ] + }, + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection.have_frePro" + ] + } ] }, "modifiers": {}, @@ -37623,9 +38726,33 @@ "tab": "", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "([object Object]) and have_frePro" + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection.heaCoi", + "Buildings.Controls.OBC.ASHRAE.G36.Types.HeatingCoil.WaterBased" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection.heaCoi", + "Buildings.Controls.OBC.ASHRAE.G36.Types.HeatingCoil.Electric" + ] + } + ] + }, + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.FreezeProtection.have_frePro" + ] + } ] }, "modifiers": {}, @@ -39529,9 +40656,20 @@ }, "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.uOutDamMax": { "expression": { - "operator": "none", + "operator": "/", "operands": [ - "(uHeaMax +uCooMin)/2" + { + "operator": "none", + "operands": [ + "uHeaMax +uCooMin" + ] + }, + { + "operator": "none", + "operands": [ + 2 + ] + } ] }, "final": true, @@ -39539,9 +40677,20 @@ }, "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.uRetDamMin": { "expression": { - "operator": "none", + "operator": "/", "operands": [ - "(uHeaMax +uCooMin)/2" + { + "operator": "none", + "operands": [ + "uHeaMax +uCooMin" + ] + }, + { + "operator": "none", + "operands": [ + 2 + ] + } ] }, "final": true, @@ -39664,7 +40813,7 @@ "enable": { "operator": "==", "operands": [ - "eneStd", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.eneStd", "Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1" ] }, @@ -39709,7 +40858,7 @@ "enable": { "operator": "==", "operands": [ - "eneStd", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.eneStd", "Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24" ] }, @@ -39756,14 +40905,14 @@ { "operator": "==", "operands": [ - "minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.minOADes", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow" ] }, { "operator": "==", "operands": [ - "minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.minOADes", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure" ] } @@ -39794,14 +40943,14 @@ { "operator": "==", "operands": [ - "minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.minOADes", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow" ] }, { "operator": "==", "operands": [ - "minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.minOADes", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.SingleDamper" ] } @@ -39837,14 +40986,14 @@ { "operator": "==", "operands": [ - "minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.minOADes", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow" ] }, { "operator": "==", "operands": [ - "minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.minOADes", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.SingleDamper" ] } @@ -39870,9 +41019,46 @@ "tab": "Limits", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "([object Object]) and ([object Object])" + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.SingleDamper" + ] + } + ] + }, + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.minOAConTyp", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PI" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.minOAConTyp", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" + ] + } + ] + } ] }, "modifiers": {}, @@ -39895,9 +41081,46 @@ "tab": "Limits", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "([object Object]) and ([object Object])" + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.SingleDamper" + ] + } + ] + }, + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.minOAConTyp", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PD" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.minOAConTyp", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" + ] + } + ] + } ] }, "modifiers": {}, @@ -39922,7 +41145,7 @@ "enable": { "operator": "==", "operands": [ - "minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.minOADes", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure" ] }, @@ -39949,9 +41172,22 @@ "tab": "Limits", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "([object Object])" + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.venStd", + "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24" + ] + } ] }, "modifiers": {}, @@ -39974,9 +41210,22 @@ "tab": "Limits", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "([object Object])" + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.venStd", + "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure" + ] + } ] }, "modifiers": {}, @@ -40001,7 +41250,7 @@ "enable": { "operator": "==", "operands": [ - "minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.minOADes", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure" ] }, @@ -40027,7 +41276,7 @@ "enable": { "operator": "==", "operands": [ - "minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.minOADes", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure" ] }, @@ -40058,7 +41307,7 @@ "enable": { "operator": "==", "operands": [ - "minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.minOADes", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure" ] }, @@ -40082,9 +41331,34 @@ "tab": "Limits", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "([object Object]) and ([object Object])" + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure" + ] + }, + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.dpConTyp", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PI" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.dpConTyp", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" + ] + } + ] + } ] }, "modifiers": {}, @@ -40107,9 +41381,34 @@ "tab": "Limits", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "([object Object]) and ([object Object])" + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure" + ] + }, + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.dpConTyp", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PD" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.dpConTyp", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" + ] + } + ] + } ] }, "modifiers": {}, @@ -40134,7 +41433,7 @@ "enable": { "operator": "==", "operands": [ - "minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.minOADes", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.SingleDamper" ] }, @@ -40183,14 +41482,14 @@ { "operator": "==", "operands": [ - "ecoHigLimCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.ecoHigLimCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialEnthalpyWithFixedDryBulb" ] }, { "operator": "==", "operands": [ - "ecoHigLimCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.ecoHigLimCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedEnthalpyWithFixedDryBulb" ] } @@ -40338,7 +41637,7 @@ "enable": { "operator": "==", "operands": [ - "minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.minOADes", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow" ] }, @@ -40364,7 +41663,7 @@ "enable": { "operator": "==", "operands": [ - "minOADes", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.minOADes", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow" ] }, @@ -40418,9 +41717,20 @@ "modelicaPath": "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.uOutDamMax", "type": "Real", "value": { - "operator": "none", + "operator": "/", "operands": [ - "(uHeaMax +uCooMin)/2" + { + "operator": "none", + "operands": [ + "uHeaMax +uCooMin" + ] + }, + { + "operator": "none", + "operands": [ + 2 + ] + } ] }, "name": "Maximum loop signal for the OA damper to be fully open", @@ -40433,14 +41743,14 @@ { "operator": "==", "operands": [ - "buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.buiPreCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefDamper" ] }, { "operator": "==", "operands": [ - "buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.buiPreCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefFan" ] } @@ -40456,9 +41766,20 @@ "modelicaPath": "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.uRetDamMin", "type": "Real", "value": { - "operator": "none", + "operator": "/", "operands": [ - "(uHeaMax +uCooMin)/2" + { + "operator": "none", + "operands": [ + "uHeaMax +uCooMin" + ] + }, + { + "operator": "none", + "operands": [ + 2 + ] + } ] }, "name": "Minimum loop signal for the RA damper to be fully open", @@ -40471,14 +41792,14 @@ { "operator": "==", "operands": [ - "buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.buiPreCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefDamper" ] }, { "operator": "==", "operands": [ - "buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.buiPreCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefFan" ] } @@ -41408,14 +42729,14 @@ { "operator": "==", "operands": [ - "minOAConTyp", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Limits.SeparateWithAFMS.minOAConTyp", "Buildings.Controls.OBC.CDL.Types.SimpleController.PI" ] }, { "operator": "==", "operands": [ - "minOAConTyp", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Limits.SeparateWithAFMS.minOAConTyp", "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" ] } @@ -41446,14 +42767,14 @@ { "operator": "==", "operands": [ - "minOAConTyp", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Limits.SeparateWithAFMS.minOAConTyp", "Buildings.Controls.OBC.CDL.Types.SimpleController.PD" ] }, { "operator": "==", "operands": [ - "minOAConTyp", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Limits.SeparateWithAFMS.minOAConTyp", "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" ] } @@ -42187,14 +43508,14 @@ { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PIDWithReset.controllerType", "CDL.Types.SimpleController.PI" ] }, { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PIDWithReset.controllerType", "CDL.Types.SimpleController.PID" ] } @@ -42225,14 +43546,14 @@ { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PIDWithReset.controllerType", "CDL.Types.SimpleController.PD" ] }, { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PIDWithReset.controllerType", "CDL.Types.SimpleController.PID" ] } @@ -42323,14 +43644,14 @@ { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PIDWithReset.controllerType", "CDL.Types.SimpleController.PI" ] }, { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PIDWithReset.controllerType", "CDL.Types.SimpleController.PID" ] } @@ -42361,14 +43682,14 @@ { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PIDWithReset.controllerType", "CDL.Types.SimpleController.PD" ] }, { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PIDWithReset.controllerType", "CDL.Types.SimpleController.PID" ] } @@ -42399,14 +43720,14 @@ { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PIDWithReset.controllerType", "CDL.Types.SimpleController.PI" ] }, { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PIDWithReset.controllerType", "CDL.Types.SimpleController.PID" ] } @@ -42437,14 +43758,14 @@ { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PIDWithReset.controllerType", "CDL.Types.SimpleController.PD" ] }, { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PIDWithReset.controllerType", "CDL.Types.SimpleController.PID" ] } @@ -42495,14 +43816,14 @@ { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PIDWithReset.controllerType", "CDL.Types.SimpleController.PI" ] }, { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PIDWithReset.controllerType", "CDL.Types.SimpleController.PID" ] } @@ -43464,7 +44785,7 @@ "enable": { "operator": "==", "operands": [ - "venStd", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Limits.SeparateWithDP.venStd", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24" ] }, @@ -43490,7 +44811,7 @@ "enable": { "operator": "==", "operands": [ - "venStd", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Limits.SeparateWithDP.venStd", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24" ] }, @@ -43610,14 +44931,14 @@ { "operator": "==", "operands": [ - "dpCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Limits.SeparateWithDP.dpCon", "Buildings.Controls.OBC.CDL.Types.SimpleController.PI" ] }, { "operator": "==", "operands": [ - "dpCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Limits.SeparateWithDP.dpCon", "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" ] } @@ -43648,14 +44969,14 @@ { "operator": "==", "operands": [ - "dpCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Limits.SeparateWithDP.dpCon", "Buildings.Controls.OBC.CDL.Types.SimpleController.PD" ] }, { "operator": "==", "operands": [ - "dpCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Limits.SeparateWithDP.dpCon", "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" ] } @@ -44492,7 +45813,7 @@ ] }, "name": "Type of controller", - "group": "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller", + "group": "Controller", "tab": "", "visible": true, "enable": true, @@ -44517,7 +45838,7 @@ ] }, "name": "Gain of damper limit controller", - "group": "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller", + "group": "Controller", "tab": "", "visible": true, "enable": true, @@ -44537,7 +45858,7 @@ ] }, "name": "Time constant of damper limit controller integrator block", - "group": "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller", + "group": "Controller", "tab": "", "visible": true, "enable": { @@ -44546,14 +45867,14 @@ { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Limits.Common.controllerType", "Buildings.Controls.OBC.CDL.Types.SimpleController.PI" ] }, { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Limits.Common.controllerType", "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" ] } @@ -44575,7 +45896,7 @@ ] }, "name": "Time constant of damper limit controller derivative block", - "group": "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller", + "group": "Controller", "tab": "", "visible": true, "enable": { @@ -44584,14 +45905,14 @@ { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Limits.Common.controllerType", "Buildings.Controls.OBC.CDL.Types.SimpleController.PD" ] }, { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Limits.Common.controllerType", "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" ] } @@ -44613,7 +45934,7 @@ ] }, "name": "Loop signal value to start decreasing the maximum return air damper position", - "group": "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller", + "group": "Controller", "tab": "Commissioning", "visible": true, "enable": true, @@ -45155,14 +46476,14 @@ { "operator": "==", "operands": [ - "ecoHigLimCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.ecoHigLimCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialEnthalpyWithFixedDryBulb" ] }, { "operator": "==", "operands": [ - "ecoHigLimCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.ecoHigLimCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedEnthalpyWithFixedDryBulb" ] } @@ -46135,7 +47456,7 @@ "expression": { "operator": "==", "operands": [ - "buiPreCon", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller.buiPreCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanDp" ] }, @@ -46198,7 +47519,7 @@ ] }, "name": "Lower limit of controller input when outdoor damper opens (see diagram)", - "group": "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller", + "group": "Controller", "tab": "Commissioning", "visible": true, "enable": true, @@ -46218,7 +47539,7 @@ ] }, "name": "Upper limit of controller input when return damper is closed (see diagram)", - "group": "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller", + "group": "Controller", "tab": "Commissioning", "visible": true, "enable": true, @@ -46574,7 +47895,7 @@ ] }, "name": "Lower limit of controller input when outdoor damper opens (see diagram)", - "group": "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller", + "group": "Controller", "tab": "Commissioning", "visible": true, "enable": true, @@ -46594,7 +47915,7 @@ ] }, "name": "Upper limit of controller input when return damper is closed (see diagram)", - "group": "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller", + "group": "Controller", "tab": "Commissioning", "visible": true, "enable": true, @@ -46608,13 +47929,24 @@ "modelicaPath": "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Modulations.Reliefs.uOutDamMax", "type": "Real", "value": { - "operator": "none", + "operator": "/", "operands": [ - "(uMin +uMax)/2" + { + "operator": "none", + "operands": [ + "uMin +uMax" + ] + }, + { + "operator": "none", + "operands": [ + 2 + ] + } ] }, "name": "Maximum loop signal for the OA damper to be fully open", - "group": "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller", + "group": "Controller", "tab": "Commissioning", "visible": true, "enable": true, @@ -46628,13 +47960,24 @@ "modelicaPath": "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Subsequences.Modulations.Reliefs.uRetDamMin", "type": "Real", "value": { - "operator": "none", + "operator": "/", "operands": [ - "(uMin +uMax)/2" + { + "operator": "none", + "operands": [ + "uMin +uMax" + ] + }, + { + "operator": "none", + "operands": [ + 2 + ] + } ] }, "name": "Minimum loop signal for the RA damper to be fully open", - "group": "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Economizers.Controller", + "group": "Controller", "tab": "Commissioning", "visible": true, "enable": true, @@ -47081,7 +48424,7 @@ "enable": { "operator": "==", "operands": [ - "eneStd", + "Buildings.Controls.OBC.ASHRAE.G36.Generic.AirEconomizerHighLimits.eneStd", "Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1" ] }, @@ -47126,7 +48469,7 @@ "enable": { "operator": "==", "operands": [ - "eneStd", + "Buildings.Controls.OBC.ASHRAE.G36.Generic.AirEconomizerHighLimits.eneStd", "Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24" ] }, @@ -47885,14 +49228,14 @@ { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.SupplyFan.controllerType", "Buildings.Controls.OBC.CDL.Types.SimpleController.PI" ] }, { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.SupplyFan.controllerType", "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" ] } @@ -47923,14 +49266,14 @@ { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.SupplyFan.controllerType", "Buildings.Controls.OBC.CDL.Types.SimpleController.PD" ] }, { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.SupplyFan.controllerType", "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" ] } @@ -49393,14 +50736,14 @@ { "operator": "==", "operands": [ - "heaCoi", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.heaCoi", "Buildings.Controls.OBC.ASHRAE.G36.Types.HeatingCoil.WaterBased" ] }, { "operator": "==", "operands": [ - "heaCoi", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.heaCoi", "Buildings.Controls.OBC.ASHRAE.G36.Types.HeatingCoil.Electric" ] } @@ -49416,14 +50759,14 @@ { "operator": "==", "operands": [ - "cooCoi", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.cooCoi", "Buildings.Controls.OBC.ASHRAE.G36.Types.CoolingCoil.WaterBased" ] }, { "operator": "==", "operands": [ - "cooCoi", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.Controller.cooCoi", "Buildings.Controls.OBC.ASHRAE.G36.Types.CoolingCoil.DXCoil" ] } @@ -49602,14 +50945,14 @@ { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.SupplySignals.controllerType", "Buildings.Controls.OBC.CDL.Types.SimpleController.PI" ] }, { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.SupplySignals.controllerType", "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" ] } @@ -49640,14 +50983,14 @@ { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.SupplySignals.controllerType", "Buildings.Controls.OBC.CDL.Types.SimpleController.PD" ] }, { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.SupplySignals.controllerType", "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" ] } @@ -52233,14 +53576,14 @@ { "operator": "==", "operands": [ - "conTyp", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReturnFanDirectPressure.conTyp", "Buildings.Controls.OBC.CDL.Types.SimpleController.PI" ] }, { "operator": "==", "operands": [ - "conTyp", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReturnFanDirectPressure.conTyp", "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" ] } @@ -52271,14 +53614,14 @@ { "operator": "==", "operands": [ - "conTyp", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReturnFanDirectPressure.conTyp", "Buildings.Controls.OBC.CDL.Types.SimpleController.PD" ] }, { "operator": "==", "operands": [ - "conTyp", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReturnFanDirectPressure.conTyp", "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" ] } @@ -52780,14 +54123,14 @@ { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PID.controllerType", "CDL.Types.SimpleController.PI" ] }, { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PID.controllerType", "CDL.Types.SimpleController.PID" ] } @@ -52818,14 +54161,14 @@ { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PID.controllerType", "CDL.Types.SimpleController.PD" ] }, { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PID.controllerType", "CDL.Types.SimpleController.PID" ] } @@ -52916,14 +54259,14 @@ { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PID.controllerType", "CDL.Types.SimpleController.PI" ] }, { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PID.controllerType", "CDL.Types.SimpleController.PID" ] } @@ -52954,14 +54297,14 @@ { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PID.controllerType", "CDL.Types.SimpleController.PD" ] }, { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PID.controllerType", "CDL.Types.SimpleController.PID" ] } @@ -52992,14 +54335,14 @@ { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PID.controllerType", "CDL.Types.SimpleController.PI" ] }, { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PID.controllerType", "CDL.Types.SimpleController.PID" ] } @@ -53030,14 +54373,14 @@ { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PID.controllerType", "CDL.Types.SimpleController.PD" ] }, { "operator": "==", "operands": [ - "controllerType", + "Buildings.Controls.OBC.CDL.Reals.PID.controllerType", "CDL.Types.SimpleController.PID" ] } @@ -53816,14 +55159,14 @@ { "operator": "==", "operands": [ - "conTyp", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReturnFanAirflowTracking.conTyp", "Buildings.Controls.OBC.CDL.Types.SimpleController.PI" ] }, { "operator": "==", "operands": [ - "conTyp", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReturnFanAirflowTracking.conTyp", "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" ] } @@ -53854,14 +55197,14 @@ { "operator": "==", "operands": [ - "conTyp", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReturnFanAirflowTracking.conTyp", "Buildings.Controls.OBC.CDL.Types.SimpleController.PD" ] }, { "operator": "==", "operands": [ - "conTyp", + "Buildings.Controls.OBC.ASHRAE.G36.AHUs.MultiZone.VAV.SetPoints.ReturnFanAirflowTracking.conTyp", "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" ] } @@ -62414,13 +63757,13 @@ ] }, "name": "Return fan control type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": { "operator": "!=", "operands": [ - "typFanRet", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialController.typFanRet", "Buildings.Templates.Components.Types.Fan.None" ] }, @@ -62452,7 +63795,7 @@ { "operator": "!=", "operands": [ - "typ", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialController.typ", "Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone" ] }, @@ -62606,10 +63949,9 @@ "operator": "if", "operands": [ { - "operator": "==", + "operator": "none", "operands": [ - "typCtlFanRet", - "Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.AirflowMeasured" + "typCtlFanRet == Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.AirflowMeasured" ] }, { @@ -62624,10 +63966,9 @@ "operator": "else_if", "operands": [ { - "operator": "==", + "operator": "none", "operands": [ - "typCtlFanRet", - "Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.BuildingPressure" + "typCtlFanRet == Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.BuildingPressure" ] }, { @@ -62701,7 +64042,7 @@ "enable": { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialController.typ", "Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone" ] }, @@ -62730,7 +64071,7 @@ "enable": { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialController.typ", "Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone" ] }, @@ -62753,7 +64094,7 @@ ] }, "name": "Set to true if there are zones with CO2 sensor", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": { @@ -62762,21 +64103,21 @@ { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialController.typ", "Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone" ] }, { "operator": "==", "operands": [ - "typSecOut", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialControllerVAVMultizone.typSecOut", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure" ] }, { "operator": "==", "operands": [ - "stdVen", + "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialControllerVAVMultizone.stdVen", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24" ] } @@ -62792,7 +64133,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialController.typ", "type": "Buildings.Templates.AirHandlersFans.Types.Controller", "name": "Type of controller", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -63218,7 +64559,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Data.PartialController.typ", "type": "Buildings.Templates.AirHandlersFans.Types.Controller", "name": "Type of controller", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": { @@ -63240,7 +64581,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Data.PartialController.typFanSup", "type": "Buildings.Templates.Components.Types.Fan", "name": "Type of supply fan", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": { @@ -63264,7 +64605,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Data.PartialController.typFanRel", "type": "Buildings.Templates.Components.Types.Fan", "name": "Type of relief fan", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": { @@ -63288,7 +64629,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Data.PartialController.typFanRet", "type": "Buildings.Templates.Components.Types.Fan", "name": "Type of return fan", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": { @@ -63631,7 +64972,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Interfaces.PartialAirHandler.typ", "type": "Buildings.Templates.AirHandlersFans.Types.Configuration", "name": "Type of system", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -63822,7 +65163,7 @@ "enable": { "operator": "==", "operands": [ - "typFanSup", + "Buildings.Templates.AirHandlersFans.Configuration.PartialAirHandler.typFanSup", "Buildings.Templates.Components.Types.Fan.ArrayVariable" ] }, @@ -63837,7 +65178,7 @@ { "operator": "==", "operands": [ - "typFanSup", + "Buildings.Templates.AirHandlersFans.Configuration.PartialAirHandler.typFanSup", "Buildings.Templates.Components.Types.Fan.None" ] }, @@ -63882,7 +65223,7 @@ "enable": { "operator": "==", "operands": [ - "typFanRet", + "Buildings.Templates.AirHandlersFans.Configuration.PartialAirHandler.typFanRet", "Buildings.Templates.Components.Types.Fan.ArrayVariable" ] }, @@ -63897,7 +65238,7 @@ { "operator": "==", "operands": [ - "typFanRet", + "Buildings.Templates.AirHandlersFans.Configuration.PartialAirHandler.typFanRet", "Buildings.Templates.Components.Types.Fan.None" ] }, @@ -63942,7 +65283,7 @@ "enable": { "operator": "==", "operands": [ - "typFanRel", + "Buildings.Templates.AirHandlersFans.Configuration.PartialAirHandler.typFanRel", "Buildings.Templates.Components.Types.Fan.ArrayVariable" ] }, @@ -63957,7 +65298,7 @@ { "operator": "==", "operands": [ - "typFanRel", + "Buildings.Templates.AirHandlersFans.Configuration.PartialAirHandler.typFanRel", "Buildings.Templates.Components.Types.Fan.None" ] }, @@ -64067,7 +65408,7 @@ "type": "Integer", "value": "", "name": "Number of served zones", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -64204,7 +65545,7 @@ "type": "Buildings.Templates.AirHandlersFans.Components.Data.PartialController", "value": "Buildings.Templates.AirHandlersFans.Components.Data.PartialController", "name": "Controller", - "group": "Buildings.Templates.AirHandlersFans.Components.Controls", + "group": "Controls", "tab": "", "visible": true, "modifiers": {}, @@ -64290,7 +65631,7 @@ ] }, "name": "System tag", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": false, "enable": true, @@ -64306,12 +65647,12 @@ "value": { "operator": "==", "operands": [ - "typ", + "Buildings.Templates.AirHandlersFans.Interfaces.PartialAirHandler.typ", "Buildings.Templates.AirHandlersFans.Types.Configuration.ExhaustOnly" ] }, "name": "Set to true for relief (exhaust) fluid port", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": { @@ -64330,7 +65671,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Interfaces.PartialAirHandler.have_souChiWat", "type": "Boolean", "name": "Set to true if system uses CHW", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -64344,7 +65685,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Interfaces.PartialAirHandler.have_souHeaWat", "type": "Boolean", "name": "Set to true if system uses HHW", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -64358,7 +65699,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Interfaces.PartialAirHandler.typFanSup", "type": "Buildings.Templates.Components.Types.Fan", "name": "Type of supply fan", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -64377,7 +65718,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Interfaces.PartialAirHandler.typFanRet", "type": "Buildings.Templates.Components.Types.Fan", "name": "Type of return fan", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -64396,7 +65737,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Interfaces.PartialAirHandler.typFanRel", "type": "Buildings.Templates.Components.Types.Fan", "name": "Type of relief fan", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -64415,7 +65756,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Interfaces.PartialAirHandler.nFanSup", "type": "Integer", "name": "Number of supply fans", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -64429,7 +65770,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Interfaces.PartialAirHandler.nFanRet", "type": "Integer", "name": "Number of return fans", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -64443,7 +65784,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Interfaces.PartialAirHandler.nFanRel", "type": "Integer", "name": "Number of relief fans", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -65772,9 +67113,20 @@ }, "Buildings.Templates.AirHandlersFans.Interfaces.PartialAirHandler.have_souHeaWat": { "expression": { - "operator": "none", + "operator": "||", "operands": [ - "coiHeaPre.have_sou or coiHeaReh.have_sou" + { + "operator": "none", + "operands": [ + "coiHeaPre.have_sou" + ] + }, + { + "operator": "none", + "operands": [ + "coiHeaReh.have_sou" + ] + } ] }, "final": true, @@ -65971,9 +67323,74 @@ }, "Buildings.Templates.AirHandlersFans.Interfaces.PartialAirHandler.mHeaWat_flow_nominal": { "expression": { - "operator": "none", + "operator": "+", "operands": [ - "(if coiHeaPre.have_sou then dat.coiHeaPre.mWat_flow_nominal else 0) +(if coiHeaReh.have_sou then dat.coiHeaReh.mWat_flow_nominal else 0)" + { + "operator": "if_elseif", + "operands": [ + { + "operator": "if", + "operands": [ + { + "operator": "none", + "operands": [ + "coiHeaPre.have_sou" + ] + }, + { + "operator": "none", + "operands": [ + "dat.coiHeaPre.mWat_flow_nominal" + ] + } + ] + }, + { + "operator": "else", + "operands": [ + { + "operator": "none", + "operands": [ + 0 + ] + } + ] + } + ] + }, + { + "operator": "if_elseif", + "operands": [ + { + "operator": "if", + "operands": [ + { + "operator": "none", + "operands": [ + "coiHeaReh.have_sou" + ] + }, + { + "operator": "none", + "operands": [ + "dat.coiHeaReh.mWat_flow_nominal" + ] + } + ] + }, + { + "operator": "else", + "operands": [ + { + "operator": "none", + "operands": [ + 0 + ] + } + ] + } + ] + } ] }, "final": true, @@ -66018,9 +67435,74 @@ }, "Buildings.Templates.AirHandlersFans.Interfaces.PartialAirHandler.QHeaWat_flow_nominal": { "expression": { - "operator": "none", + "operator": "+", "operands": [ - "(if coiHeaPre.have_sou then dat.coiHeaPre.Q_flow_nominal else 0) +(if coiHeaReh.have_sou then dat.coiHeaReh.Q_flow_nominal else 0)" + { + "operator": "if_elseif", + "operands": [ + { + "operator": "if", + "operands": [ + { + "operator": "none", + "operands": [ + "coiHeaPre.have_sou" + ] + }, + { + "operator": "none", + "operands": [ + "dat.coiHeaPre.Q_flow_nominal" + ] + } + ] + }, + { + "operator": "else", + "operands": [ + { + "operator": "none", + "operands": [ + 0 + ] + } + ] + } + ] + }, + { + "operator": "if_elseif", + "operands": [ + { + "operator": "if", + "operands": [ + { + "operator": "none", + "operands": [ + "coiHeaReh.have_sou" + ] + }, + { + "operator": "none", + "operands": [ + "dat.coiHeaReh.Q_flow_nominal" + ] + } + ] + }, + { + "operator": "else", + "operands": [ + { + "operator": "none", + "operands": [ + 0 + ] + } + ] + } + ] + } ] }, "final": true, @@ -66142,7 +67624,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Data.VAVMultiZoneController.typSecOut", "type": "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection", "name": "Type of outdoor air section", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": { @@ -66165,7 +67647,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Components.Data.VAVMultiZoneController.buiPreCon", "type": "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl", "name": "Type of building pressure control system", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": { @@ -66333,7 +67815,7 @@ { "operator": "==", "operands": [ - "stdVen", + "Buildings.Templates.AirHandlersFans.Components.Data.VAVMultiZoneController.stdVen", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" ] } @@ -66377,7 +67859,7 @@ { "operator": "==", "operands": [ - "stdVen", + "Buildings.Templates.AirHandlersFans.Components.Data.VAVMultiZoneController.stdVen", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" ] } @@ -66421,7 +67903,7 @@ { "operator": "==", "operands": [ - "stdVen", + "Buildings.Templates.AirHandlersFans.Components.Data.VAVMultiZoneController.stdVen", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24" ] } @@ -66465,7 +67947,7 @@ { "operator": "==", "operands": [ - "stdVen", + "Buildings.Templates.AirHandlersFans.Components.Data.VAVMultiZoneController.stdVen", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24" ] } @@ -66561,14 +68043,14 @@ { "operator": "==", "operands": [ - "stdVen", + "Buildings.Templates.AirHandlersFans.Components.Data.VAVMultiZoneController.stdVen", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24" ] }, { "operator": "==", "operands": [ - "typSecOut", + "Buildings.Templates.AirHandlersFans.Components.Data.VAVMultiZoneController.typSecOut", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure" ] } @@ -66632,7 +68114,7 @@ { "operator": "==", "operands": [ - "typSecOut", + "Buildings.Templates.AirHandlersFans.Components.Data.VAVMultiZoneController.typSecOut", "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure" ] } @@ -66701,7 +68183,7 @@ { "operator": "==", "operands": [ - "buiPreCon", + "Buildings.Templates.AirHandlersFans.Components.Data.VAVMultiZoneController.buiPreCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanDp" ] } @@ -66739,7 +68221,7 @@ { "operator": "==", "operands": [ - "buiPreCon", + "Buildings.Templates.AirHandlersFans.Components.Data.VAVMultiZoneController.buiPreCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanDp" ] } @@ -66772,7 +68254,7 @@ { "operator": "==", "operands": [ - "buiPreCon", + "Buildings.Templates.AirHandlersFans.Components.Data.VAVMultiZoneController.buiPreCon", "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanMeasuredAir" ] } @@ -67087,7 +68569,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Configuration.VAVMultiZone.typDamOut", "type": "Buildings.Templates.Components.Types.Damper", "name": "Outdoor air damper type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": { @@ -67111,7 +68593,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Configuration.VAVMultiZone.typDamOutMin", "type": "Buildings.Templates.Components.Types.Damper", "name": "Minimum outdoor air damper type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": { @@ -67135,7 +68617,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Configuration.VAVMultiZone.typDamRel", "type": "Buildings.Templates.Components.Types.Damper", "name": "Relief damper type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": { @@ -67159,7 +68641,7 @@ "modelicaPath": "Buildings.Templates.AirHandlersFans.Configuration.VAVMultiZone.typDamRet", "type": "Buildings.Templates.Components.Types.Damper", "name": "Return damper type", - "group": "Buildings.Templates.AirHandlersFans.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": { @@ -67279,7 +68761,7 @@ "type": "Buildings.Templates.Components.Data.Fan", "value": "", "name": "Supply fan", - "group": "Buildings.Templates.Components.Fans", + "group": "Fans", "tab": "", "visible": false, "enable": { @@ -67327,7 +68809,7 @@ "type": "Buildings.Templates.Components.Data.Coil", "value": "", "name": "Heating coil in preheat position", - "group": "Buildings.Templates.Components.Coils", + "group": "Coils", "tab": "", "visible": false, "enable": { @@ -67404,7 +68886,7 @@ "type": "Buildings.Templates.Components.Data.Coil", "value": "", "name": "Cooling coil", - "group": "Buildings.Templates.Components.Coils", + "group": "Coils", "tab": "", "visible": false, "enable": { @@ -67481,7 +68963,7 @@ "type": "Buildings.Templates.Components.Data.Coil", "value": "", "name": "Heating coil in reheat position", - "group": "Buildings.Templates.Components.Coils", + "group": "Coils", "tab": "", "visible": false, "enable": { @@ -67749,7 +69231,7 @@ "type": "Buildings.Templates.Components.Coils.WaterBasedHeating", "value": "Buildings.Templates.Components.Coils.WaterBasedHeating", "name": "Heating coil", - "group": "Buildings.Templates.ZoneEquipment.Configuration", + "group": "Configuration", "tab": "", "visible": true, "modifiers": { @@ -67832,7 +69314,7 @@ "type": "Buildings.Templates.Components.Actuators.Damper", "value": "", "name": "VAV damper", - "group": "Buildings.Templates.ZoneEquipment.Configuration", + "group": "Configuration", "tab": "", "visible": false, "enable": false, @@ -67851,7 +69333,7 @@ "expression": { "operator": "!=", "operands": [ - "energyDynamics", + "Buildings.Templates.ZoneEquipment.Interfaces.PartialAirTerminal.energyDynamics", "Modelica.Fluid.Types.Dynamics.SteadyState" ] }, @@ -67995,7 +69477,7 @@ ] }, "name": "Set to true if the zone has CO2 sensor", - "group": "Buildings.Templates.ZoneEquipment.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -68050,7 +69532,7 @@ "modelicaPath": "Buildings.Templates.ZoneEquipment.Components.Interfaces.PartialController.typ", "type": "Buildings.Templates.ZoneEquipment.Types.Controller", "name": "Type of controller", - "group": "Buildings.Templates.ZoneEquipment.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -68143,7 +69625,7 @@ "modelicaPath": "Buildings.Templates.ZoneEquipment.Components.Data.PartialController.typ", "type": "Buildings.Templates.ZoneEquipment.Types.Controller", "name": "Type of controller", - "group": "Buildings.Templates.ZoneEquipment.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": { @@ -68460,7 +69942,7 @@ "modelicaPath": "Buildings.Templates.ZoneEquipment.Interfaces.PartialAirTerminal.typ", "type": "Buildings.Templates.ZoneEquipment.Types.Configuration", "name": "Type of system", - "group": "Buildings.Templates.ZoneEquipment.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -68675,7 +70157,7 @@ ] }, "name": "System tag", - "group": "Buildings.Templates.ZoneEquipment.Configuration", + "group": "Configuration", "tab": "", "visible": false, "enable": true, @@ -68689,7 +70171,7 @@ "modelicaPath": "Buildings.Templates.ZoneEquipment.Interfaces.PartialAirTerminal.have_souChiWat", "type": "Boolean", "name": "Set to true if system uses CHW", - "group": "Buildings.Templates.ZoneEquipment.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -68703,7 +70185,7 @@ "modelicaPath": "Buildings.Templates.ZoneEquipment.Interfaces.PartialAirTerminal.have_souHeaWat", "type": "Boolean", "name": "Set to true if system uses HHW", - "group": "Buildings.Templates.ZoneEquipment.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -68885,7 +70367,7 @@ "type": "Buildings.Templates.ZoneEquipment.Components.Data.PartialController", "value": "Buildings.Templates.ZoneEquipment.Components.Data.PartialController", "name": "Controller", - "group": "Buildings.Templates.ZoneEquipment.Components.Controls", + "group": "Controls", "tab": "", "visible": true, "modifiers": {}, @@ -69993,10 +71475,34 @@ "tab": "", "visible": false, "enable": { - "operator": "==", + "operator": "&&", "operands": [ - "stdVen", - "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24" + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "typ", + "Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat" + ] + }, + { + "operator": "==", + "operands": [ + "typ", + "Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxCoolingOnly" + ] + } + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Templates.ZoneEquipment.Components.Data.VAVBoxController.stdVen", + "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24" + ] + } ] }, "modifiers": { @@ -70035,10 +71541,34 @@ "tab": "", "visible": false, "enable": { - "operator": "==", + "operator": "&&", "operands": [ - "stdVen", - "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24" + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "typ", + "Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat" + ] + }, + { + "operator": "==", + "operands": [ + "typ", + "Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxCoolingOnly" + ] + } + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Templates.ZoneEquipment.Components.Data.VAVBoxController.stdVen", + "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24" + ] + } ] }, "modifiers": { @@ -70077,10 +71607,34 @@ "tab": "", "visible": true, "enable": { - "operator": "==", + "operator": "&&", "operands": [ - "stdVen", - "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "typ", + "Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat" + ] + }, + { + "operator": "==", + "operands": [ + "typ", + "Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxCoolingOnly" + ] + } + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Templates.ZoneEquipment.Components.Data.VAVBoxController.stdVen", + "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" + ] + } ] }, "modifiers": { @@ -70119,10 +71673,34 @@ "tab": "", "visible": true, "enable": { - "operator": "==", + "operator": "&&", "operands": [ - "stdVen", - "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "typ", + "Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat" + ] + }, + { + "operator": "==", + "operands": [ + "typ", + "Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxCoolingOnly" + ] + } + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Templates.ZoneEquipment.Components.Data.VAVBoxController.stdVen", + "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" + ] + } ] }, "modifiers": { @@ -70166,10 +71744,34 @@ "tab": "", "visible": true, "enable": { - "operator": "==", + "operator": "&&", "operands": [ - "stdVen", - "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "typ", + "Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat" + ] + }, + { + "operator": "==", + "operands": [ + "typ", + "Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxCoolingOnly" + ] + } + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Templates.ZoneEquipment.Components.Data.VAVBoxController.stdVen", + "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" + ] + } ] }, "modifiers": {}, @@ -70192,10 +71794,34 @@ "tab": "", "visible": true, "enable": { - "operator": "==", + "operator": "&&", "operands": [ - "stdVen", - "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" + { + "operator": "||", + "operands": [ + { + "operator": "==", + "operands": [ + "typ", + "Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat" + ] + }, + { + "operator": "==", + "operands": [ + "typ", + "Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxCoolingOnly" + ] + } + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Templates.ZoneEquipment.Components.Data.VAVBoxController.stdVen", + "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" + ] + } ] }, "modifiers": {}, @@ -70311,9 +71937,22 @@ "tab": "", "visible": false, "enable": { - "operator": "none", + "operator": "||", "operands": [ - "([object Object])" + { + "operator": "==", + "operands": [ + "typ", + "Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxCoolingOnly" + ] + }, + { + "operator": "==", + "operands": [ + "typ", + "Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat" + ] + } ] }, "modifiers": { @@ -70696,7 +72335,7 @@ ] }, "name": "Set to true if the zone has occupancy sensor", - "group": "Buildings.Templates.ZoneEquipment.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -70716,7 +72355,7 @@ ] }, "name": "Set to true if the zone has window status sensor", - "group": "Buildings.Templates.ZoneEquipment.Configuration", + "group": "Configuration", "tab": "", "visible": true, "enable": true, @@ -70863,7 +72502,7 @@ "enable": { "operator": "==", "operands": [ - "stdVen", + "Buildings.Templates.ZoneEquipment.Components.Interfaces.PartialControllerVAVBox.stdVen", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24" ] }, @@ -70889,7 +72528,7 @@ "enable": { "operator": "==", "operands": [ - "stdVen", + "Buildings.Templates.ZoneEquipment.Components.Interfaces.PartialControllerVAVBox.stdVen", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24" ] }, @@ -70915,7 +72554,7 @@ "enable": { "operator": "==", "operands": [ - "stdVen", + "Buildings.Templates.ZoneEquipment.Components.Interfaces.PartialControllerVAVBox.stdVen", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" ] }, @@ -70941,7 +72580,7 @@ "enable": { "operator": "==", "operands": [ - "stdVen", + "Buildings.Templates.ZoneEquipment.Components.Interfaces.PartialControllerVAVBox.stdVen", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" ] }, @@ -71278,10 +72917,21 @@ "tab": "", "visible": true, "enable": { - "operator": "==", + "operator": "&&", "operands": [ - "venStd", - "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Controller.venStd", + "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" + ] + }, + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Controller.have_occSen" + ] + } ] }, "modifiers": {}, @@ -71301,7 +72951,7 @@ "enable": { "operator": "==", "operands": [ - "venStd", + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Controller.venStd", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24" ] }, @@ -71333,7 +72983,7 @@ "enable": { "operator": "==", "operands": [ - "venStd", + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Controller.venStd", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24" ] }, @@ -71365,7 +73015,7 @@ "enable": { "operator": "==", "operands": [ - "venStd", + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Controller.venStd", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" ] }, @@ -71397,7 +73047,7 @@ "enable": { "operator": "==", "operands": [ - "venStd", + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Controller.venStd", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" ] }, @@ -71706,14 +73356,14 @@ { "operator": "==", "operands": [ - "controllerTypeVal", + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Controller.controllerTypeVal", "Buildings.Controls.OBC.CDL.Types.SimpleController.PI" ] }, { "operator": "==", "operands": [ - "controllerTypeVal", + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Controller.controllerTypeVal", "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" ] } @@ -71744,14 +73394,14 @@ { "operator": "==", "operands": [ - "controllerTypeVal", + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Controller.controllerTypeVal", "Buildings.Controls.OBC.CDL.Types.SimpleController.PD" ] }, { "operator": "==", "operands": [ - "controllerTypeVal", + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Controller.controllerTypeVal", "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" ] } @@ -71822,9 +73472,22 @@ "tab": "Damper and valve control", "visible": true, "enable": { - "operator": "none", + "operator": "||", "operands": [ - "([object Object])" + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Controller.controllerTypeDam", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PI" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Controller.controllerTypeDam", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" + ] + } ] }, "modifiers": {}, @@ -71847,9 +73510,22 @@ "tab": "Damper and valve control", "visible": true, "enable": { - "operator": "none", + "operator": "||", "operands": [ - "([object Object])" + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Controller.controllerTypeDam", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PD" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Controller.controllerTypeDam", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" + ] + } ] }, "modifiers": {}, @@ -72404,7 +74080,7 @@ "enable": { "operator": "==", "operands": [ - "venStd", + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Controller.venStd", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" ] }, @@ -72430,7 +74106,7 @@ "enable": { "operator": "==", "operands": [ - "venStd", + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.Reheat.Controller.venStd", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" ] }, @@ -73684,10 +75360,21 @@ "tab": "", "visible": true, "enable": { - "operator": "==", + "operator": "&&", "operands": [ - "venStd", - "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.CoolingOnly.Controller.venStd", + "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" + ] + }, + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.CoolingOnly.Controller.have_occSen" + ] + } ] }, "modifiers": {}, @@ -73707,7 +75394,7 @@ "enable": { "operator": "==", "operands": [ - "venStd", + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.CoolingOnly.Controller.venStd", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24" ] }, @@ -73739,7 +75426,7 @@ "enable": { "operator": "==", "operands": [ - "venStd", + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.CoolingOnly.Controller.venStd", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24" ] }, @@ -73771,7 +75458,7 @@ "enable": { "operator": "==", "operands": [ - "venStd", + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.CoolingOnly.Controller.venStd", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" ] }, @@ -73803,7 +75490,7 @@ "enable": { "operator": "==", "operands": [ - "venStd", + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.CoolingOnly.Controller.venStd", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" ] }, @@ -73966,7 +75653,7 @@ ] }, "name": "Type of controller", - "group": "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.CoolingOnly.Controller", + "group": "Controller", "tab": "Damper control", "visible": true, "enable": true, @@ -73991,7 +75678,7 @@ ] }, "name": "Gain of controller for damper control", - "group": "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.CoolingOnly.Controller", + "group": "Controller", "tab": "Damper control", "visible": true, "enable": true, @@ -74011,13 +75698,26 @@ ] }, "name": "Time constant of integrator block for damper control", - "group": "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.CoolingOnly.Controller", + "group": "Controller", "tab": "Damper control", "visible": true, "enable": { - "operator": "none", + "operator": "||", "operands": [ - "([object Object])" + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.CoolingOnly.Controller.damCon", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PI" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.CoolingOnly.Controller.damCon", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" + ] + } ] }, "modifiers": {}, @@ -74036,13 +75736,26 @@ ] }, "name": "Time constant of derivative block for damper control", - "group": "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.CoolingOnly.Controller", + "group": "Controller", "tab": "Damper control", "visible": true, "enable": { - "operator": "none", + "operator": "||", "operands": [ - "([object Object])" + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.CoolingOnly.Controller.damCon", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PD" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.CoolingOnly.Controller.damCon", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" + ] + } ] }, "modifiers": {}, @@ -74427,7 +76140,7 @@ "enable": { "operator": "==", "operands": [ - "venStd", + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.CoolingOnly.Controller.venStd", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" ] }, @@ -74453,7 +76166,7 @@ "enable": { "operator": "==", "operands": [ - "venStd", + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.CoolingOnly.Controller.venStd", "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1" ] }, @@ -79159,9 +80872,36 @@ "tab": "", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "have_CO2Sen and not have_SZVAV and not have_parFanPowUni" + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.VentilationZones.ASHRAE62_1.Setpoints.have_CO2Sen" + ] + }, + { + "operator": "!", + "operands": [ + { + "operator": "none", + "operands": [ + "have_SZVAV" + ] + } + ] + }, + { + "operator": "!", + "operands": [ + { + "operator": "none", + "operands": [ + "have_parFanPowUni" + ] + } + ] + } ] }, "modifiers": {}, @@ -79184,9 +80924,36 @@ "tab": "", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "have_CO2Sen and not have_SZVAV and not have_typTerUni" + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.VentilationZones.ASHRAE62_1.Setpoints.have_CO2Sen" + ] + }, + { + "operator": "!", + "operands": [ + { + "operator": "none", + "operands": [ + "have_SZVAV" + ] + } + ] + }, + { + "operator": "!", + "operands": [ + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.VentilationZones.ASHRAE62_1.Setpoints.have_typTerUni" + ] + } + ] + } ] }, "modifiers": {}, @@ -79209,9 +80976,36 @@ "tab": "", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "have_CO2Sen and not have_parFanPowUni and not have_typTerUni" + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.VentilationZones.ASHRAE62_1.Setpoints.have_CO2Sen" + ] + }, + { + "operator": "!", + "operands": [ + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.VentilationZones.ASHRAE62_1.Setpoints.have_parFanPowUni" + ] + } + ] + }, + { + "operator": "!", + "operands": [ + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.VentilationZones.ASHRAE62_1.Setpoints.have_typTerUni" + ] + } + ] + } ] }, "modifiers": {}, @@ -79326,9 +81120,14 @@ "tab": "", "visible": true, "enable": { - "operator": "none", + "operator": "!", "operands": [ - "not have_SZVAV" + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.VentilationZones.ASHRAE62_1.Setpoints.have_SZVAV" + ] + } ] }, "modifiers": { @@ -79372,9 +81171,25 @@ "tab": "", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "have_CO2Sen and not have_SZVAV" + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.VentilationZones.ASHRAE62_1.Setpoints.have_CO2Sen" + ] + }, + { + "operator": "!", + "operands": [ + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.VentilationZones.ASHRAE62_1.Setpoints.have_SZVAV" + ] + } + ] + } ] }, "modifiers": {}, @@ -80038,9 +81853,22 @@ "tab": "", "visible": true, "enable": { - "operator": "none", + "operator": "||", "operands": [ - "([object Object])" + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.CoolingOnly.Subsequences.Dampers.damCon", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PI" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.CoolingOnly.Subsequences.Dampers.damCon", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" + ] + } ] }, "modifiers": {}, @@ -80063,9 +81891,22 @@ "tab": "", "visible": true, "enable": { - "operator": "none", + "operator": "||", "operands": [ - "([object Object])" + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.CoolingOnly.Subsequences.Dampers.damCon", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PD" + ] + }, + { + "operator": "==", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.TerminalUnits.CoolingOnly.Subsequences.Dampers.damCon", + "Buildings.Controls.OBC.CDL.Types.SimpleController.PID" + ] + } ] }, "modifiers": {}, @@ -80859,9 +82700,36 @@ "tab": "", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "have_CO2Sen and not (have_SZVAV or have_parFanPowUni)" + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.VentilationZones.Title24.Setpoints.have_CO2Sen" + ] + }, + { + "operator": "!", + "operands": [ + { + "operator": "||", + "operands": [ + { + "operator": "none", + "operands": [ + "have_SZVAV" + ] + }, + { + "operator": "none", + "operands": [ + "have_parFanPowUni" + ] + } + ] + } + ] + } ] }, "modifiers": {}, @@ -80884,9 +82752,36 @@ "tab": "", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "have_CO2Sen and not (have_SZVAV or have_typTerUni)" + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.VentilationZones.Title24.Setpoints.have_CO2Sen" + ] + }, + { + "operator": "!", + "operands": [ + { + "operator": "||", + "operands": [ + { + "operator": "none", + "operands": [ + "have_SZVAV" + ] + }, + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.VentilationZones.Title24.Setpoints.have_typTerUni" + ] + } + ] + } + ] + } ] }, "modifiers": {}, @@ -80909,9 +82804,36 @@ "tab": "", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "have_CO2Sen and not (have_parFanPowUni or have_typTerUni)" + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.VentilationZones.Title24.Setpoints.have_CO2Sen" + ] + }, + { + "operator": "!", + "operands": [ + { + "operator": "||", + "operands": [ + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.VentilationZones.Title24.Setpoints.have_parFanPowUni" + ] + }, + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.VentilationZones.Title24.Setpoints.have_typTerUni" + ] + } + ] + } + ] + } ] }, "modifiers": {}, @@ -80981,9 +82903,25 @@ "tab": "", "visible": true, "enable": { - "operator": "none", + "operator": "!", "operands": [ - "not (have_CO2Sen and have_SZVAV)" + { + "operator": "&&", + "operands": [ + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.VentilationZones.Title24.Setpoints.have_CO2Sen" + ] + }, + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.VentilationZones.Title24.Setpoints.have_SZVAV" + ] + } + ] + } ] }, "modifiers": { @@ -81017,9 +82955,31 @@ "tab": "", "visible": true, "enable": { - "operator": "none", + "operator": "&&", "operands": [ - "have_CO2Sen and (have_parFanPowUni or have_typTerUni)" + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.VentilationZones.Title24.Setpoints.have_CO2Sen" + ] + }, + { + "operator": "||", + "operands": [ + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.VentilationZones.Title24.Setpoints.have_parFanPowUni" + ] + }, + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.VentilationZones.Title24.Setpoints.have_typTerUni" + ] + } + ] + } ] }, "modifiers": {}, @@ -81718,9 +83678,14 @@ "tab": "Demand control", "visible": true, "enable": { - "operator": "none", + "operator": "!", "operands": [ - "not ignDemLim" + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.ThermalZones.Setpoints.ignDemLim" + ] + } ] }, "modifiers": {}, @@ -81743,9 +83708,14 @@ "tab": "Demand control", "visible": true, "enable": { - "operator": "none", + "operator": "!", "operands": [ - "not ignDemLim" + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.ThermalZones.Setpoints.ignDemLim" + ] + } ] }, "modifiers": {}, @@ -81768,9 +83738,14 @@ "tab": "Demand control", "visible": true, "enable": { - "operator": "none", + "operator": "!", "operands": [ - "not ignDemLim" + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.ThermalZones.Setpoints.ignDemLim" + ] + } ] }, "modifiers": {}, @@ -81793,9 +83768,14 @@ "tab": "Demand control", "visible": true, "enable": { - "operator": "none", + "operator": "!", "operands": [ - "not ignDemLim" + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.ThermalZones.Setpoints.ignDemLim" + ] + } ] }, "modifiers": {}, @@ -81818,9 +83798,14 @@ "tab": "Demand control", "visible": true, "enable": { - "operator": "none", + "operator": "!", "operands": [ - "not ignDemLim" + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.ThermalZones.Setpoints.ignDemLim" + ] + } ] }, "modifiers": {}, @@ -81843,9 +83828,14 @@ "tab": "Demand control", "visible": true, "enable": { - "operator": "none", + "operator": "!", "operands": [ - "not ignDemLim" + { + "operator": "none", + "operands": [ + "Buildings.Controls.OBC.ASHRAE.G36.ThermalZones.Setpoints.ignDemLim" + ] + } ] }, "modifiers": {}, From 8f5f0d0049d113803cbfc8c914d5c7e253446c3b Mon Sep 17 00:00:00 2001 From: AntoineGautier Date: Fri, 16 Jan 2026 16:14:39 +0100 Subject: [PATCH 9/9] Add tests, remove nesting level for none operator --- client/src/data/templates.json | 280 +++--------------- server/src/parser/expression.ts | 33 ++- .../integration/parser/expression.test.ts | 125 +++++++- 3 files changed, 179 insertions(+), 259 deletions(-) diff --git a/client/src/data/templates.json b/client/src/data/templates.json index 7d000935..0d0c568d 100644 --- a/client/src/data/templates.json +++ b/client/src/data/templates.json @@ -1236,18 +1236,8 @@ "value": { "operator": "^", "operands": [ - { - "operator": "none", - "operands": [ - "2/rho_default/k1*dpDamper_nominal" - ] - }, - { - "operator": "none", - "operands": [ - 0.5 - ] - } + "2/rho_default/k1*dpDamper_nominal", + 0.5 ] }, "name": "Nominal face velocity", @@ -1430,35 +1420,15 @@ { "operator": "*", "operands": [ - { - "operator": "none", - "operands": [ - 2 - ] - }, - { - "operator": "none", - "operands": [ - "rho_default" - ] - } + 2, + "rho_default" ] }, { "operator": "^", "operands": [ - { - "operator": "none", - "operands": [ - "A/kDamMin" - ] - }, - { - "operator": "none", - "operands": [ - 2 - ] - } + "A/kDamMin", + 2 ] } ] @@ -2581,27 +2551,12 @@ "value": { "operator": "+", "operands": [ - { - "operator": "none", - "operands": [ - "Buildings.Fluid.Actuators.BaseClasses.PartialDamperExponential.l" - ] - }, + "Buildings.Fluid.Actuators.BaseClasses.PartialDamperExponential.l", { "operator": "*", "operands": [ - { - "operator": "none", - "operands": [ - "y_internal" - ] - }, - { - "operator": "none", - "operands": [ - "1 -l" - ] - } + "y_internal", + "1 -l" ] } ] @@ -6103,38 +6058,18 @@ { "operator": "-", "operands": [ - { - "operator": "none", - "operands": [ - "pressure.V_flow[end]" - ] - }, + "pressure.V_flow[end]", { "operator": "*", "operands": [ { "operator": "/", "operands": [ - { - "operator": "none", - "operands": [ - "pressure.V_flow[end] -pressure.V_flow[end -1]" - ] - }, - { - "operator": "none", - "operands": [ - "pressure.dp[end] -pressure.dp[end -1]" - ] - } + "pressure.V_flow[end] -pressure.V_flow[end -1]", + "pressure.dp[end] -pressure.dp[end -1]" ] }, - { - "operator": "none", - "operands": [ - "pressure.dp[end]" - ] - } + "pressure.dp[end]" ] } ] @@ -6183,38 +6118,18 @@ { "operator": "-", "operands": [ - { - "operator": "none", - "operands": [ - "pressure.dp[1]" - ] - }, + "pressure.dp[1]", { "operator": "*", "operands": [ { "operator": "/", "operands": [ - { - "operator": "none", - "operands": [ - "pressure.dp[1] -pressure.dp[2]" - ] - }, - { - "operator": "none", - "operands": [ - "pressure.V_flow[1] -pressure.V_flow[2]" - ] - } + "pressure.dp[1] -pressure.dp[2]", + "pressure.V_flow[1] -pressure.V_flow[2]" ] }, - { - "operator": "none", - "operands": [ - "pressure.V_flow[1]" - ] - } + "pressure.V_flow[1]" ] } ] @@ -26288,26 +26203,11 @@ { "operator": "*", "operands": [ - { - "operator": "none", - "operands": [ - "Buildings.Fluid.HeatExchangers.BaseClasses.HADryCoil.UA_nominal" - ] - }, - { - "operator": "none", - "operands": [ - "r_nominal +1" - ] - } + "Buildings.Fluid.HeatExchangers.BaseClasses.HADryCoil.UA_nominal", + "r_nominal +1" ] }, - { - "operator": "none", - "operands": [ - "Buildings.Fluid.HeatExchangers.BaseClasses.HADryCoil.r_nominal" - ] - } + "Buildings.Fluid.HeatExchangers.BaseClasses.HADryCoil.r_nominal" ] }, "name": "Water side convective heat transfer coefficient", @@ -26977,12 +26877,7 @@ "value": { "operator": "*", "operands": [ - { - "operator": "none", - "operands": [ - "abs(m1_flow)" - ] - }, + "abs(m1_flow)", { "operator": "if_elseif", "operands": [ @@ -27045,12 +26940,7 @@ "value": { "operator": "*", "operands": [ - { - "operator": "none", - "operands": [ - "abs(m2_flow)" - ] - }, + "abs(m2_flow)", { "operator": "if_elseif", "operands": [ @@ -27149,18 +27039,8 @@ "value": { "operator": "*", "operands": [ - { - "operator": "none", - "operands": [ - "Buildings.Fluid.HeatExchangers.BaseClasses.PartialEffectiveness.CMin_flow" - ] - }, - { - "operator": "none", - "operands": [ - "T_in2 -T_in1" - ] - } + "Buildings.Fluid.HeatExchangers.BaseClasses.PartialEffectiveness.CMin_flow", + "T_in2 -T_in1" ] }, "name": "Maximum heat flow rate into medium 1", @@ -28482,18 +28362,8 @@ "expression": { "operator": "/", "operands": [ - { - "operator": "none", - "operands": [ - 1 - ] - }, - { - "operator": "none", - "operands": [ - "1/hA.hA_1 +1/hA.hA_2" - ] - } + 1, + "1/hA.hA_1 +1/hA.hA_2" ] }, "final": false, @@ -30329,18 +30199,8 @@ "expression": { "operator": "/", "operands": [ - { - "operator": "none", - "operands": [ - 1 - ] - }, - { - "operator": "none", - "operands": [ - "1/10 +1/20" - ] - } + 1, + "1/10 +1/20" ] }, "final": false, @@ -40658,18 +40518,8 @@ "expression": { "operator": "/", "operands": [ - { - "operator": "none", - "operands": [ - "uHeaMax +uCooMin" - ] - }, - { - "operator": "none", - "operands": [ - 2 - ] - } + "uHeaMax +uCooMin", + 2 ] }, "final": true, @@ -40679,18 +40529,8 @@ "expression": { "operator": "/", "operands": [ - { - "operator": "none", - "operands": [ - "uHeaMax +uCooMin" - ] - }, - { - "operator": "none", - "operands": [ - 2 - ] - } + "uHeaMax +uCooMin", + 2 ] }, "final": true, @@ -41719,18 +41559,8 @@ "value": { "operator": "/", "operands": [ - { - "operator": "none", - "operands": [ - "uHeaMax +uCooMin" - ] - }, - { - "operator": "none", - "operands": [ - 2 - ] - } + "uHeaMax +uCooMin", + 2 ] }, "name": "Maximum loop signal for the OA damper to be fully open", @@ -41768,18 +41598,8 @@ "value": { "operator": "/", "operands": [ - { - "operator": "none", - "operands": [ - "uHeaMax +uCooMin" - ] - }, - { - "operator": "none", - "operands": [ - 2 - ] - } + "uHeaMax +uCooMin", + 2 ] }, "name": "Minimum loop signal for the RA damper to be fully open", @@ -47931,18 +47751,8 @@ "value": { "operator": "/", "operands": [ - { - "operator": "none", - "operands": [ - "uMin +uMax" - ] - }, - { - "operator": "none", - "operands": [ - 2 - ] - } + "uMin +uMax", + 2 ] }, "name": "Maximum loop signal for the OA damper to be fully open", @@ -47962,18 +47772,8 @@ "value": { "operator": "/", "operands": [ - { - "operator": "none", - "operands": [ - "uMin +uMax" - ] - }, - { - "operator": "none", - "operands": [ - 2 - ] - } + "uMin +uMax", + 2 ] }, "name": "Minimum loop signal for the RA damper to be fully open", diff --git a/server/src/parser/expression.ts b/server/src/parser/expression.ts index 95929af6..0d27c508 100644 --- a/server/src/parser/expression.ts +++ b/server/src/parser/expression.ts @@ -31,7 +31,7 @@ function expandStringOperand( } /* * After try and catch above: - * "Buildings.Type" → "Buildings.Type" + * "Buildings.Type" → "Buildings.Type" (deserialization failed) * "\"String literal\"" → "String literal" * "false" → false * Only attempt to expand as a type if still a string, and original operand not literal @@ -265,10 +265,10 @@ function buildTermExpression( term: any, basePath: string, baseType: string, -): Expression { - // A term can be a string literal, or an object with operators and factors +): Expression | Literal { + // A term can be a string, or an object with operators and factors if (typeof term === "string") { - return buildSimpleExpression(term, basePath, baseType); + return expandStringOperand(term, basePath, baseType); } if (typeof term === "object" && term.factors) { @@ -305,11 +305,11 @@ function buildPrimaryExpression( primary: any, basePath: string, baseType: string, -): Expression { +): Expression | Literal { // primary can be a string or an array of expression objects // expression: { simple_expression?: ..., if_expression?: ... } if (typeof primary === "string") { - return buildSimpleExpression(primary, basePath, baseType); + return expandStringOperand(primary, basePath, baseType); } if (Array.isArray(primary)) { @@ -321,10 +321,19 @@ function buildPrimaryExpression( }); if (expressions.length === 1) { - return expressions[0]; + if (expressions[0].operator === "none") { + // We avoid the additional nesting level + // { operator: 'none', operands: ['string'] } + return expressions[0].operands[0]; + } else { + return expressions[0]; + } } // Multiple expressions - return as array expression + // This construct is not well understood, probably used to cover the case + // PRIMARY = "[" expression-list { ";" expression-list } "]" from the grammar + // This is a noop in the client interpreter. return { operator: "primary_array", operands: expressions, @@ -339,12 +348,12 @@ function buildFactorExpression( factor: any, basePath: string, baseType: string, -): Expression { +): Expression | Literal { // A factor can be: - // - a string literal + // - a string // - an object with { primary1, operator?, primary2? } for exponentiation if (typeof factor === "string") { - return buildSimpleExpression(factor, basePath, baseType); + return expandStringOperand(factor, basePath, baseType); } if (typeof factor === "object" && factor.primary1 !== undefined) { @@ -401,7 +410,7 @@ function buildSimpleExpression( if (terms.length === 1 && hasLeadingOp) { // Single term with unary operator (e.g., "-x") return { - operator: addOps[0] === "-" ? "unary_minus" : "unary_plus", + operator: addOps[0], operands: [terms[0]], }; } @@ -414,7 +423,7 @@ function buildSimpleExpression( // First operator is unary if (addOps[0] === "-") { result = { - operator: "unary_minus", + operator: "-", operands: [terms[0]], }; } else { diff --git a/server/tests/integration/parser/expression.test.ts b/server/tests/integration/parser/expression.test.ts index d7a0dc50..b7545452 100644 --- a/server/tests/integration/parser/expression.test.ts +++ b/server/tests/integration/parser/expression.test.ts @@ -1,5 +1,6 @@ import { ModifiersN, getTemplates } from "../../../src/parser/template"; import { loadPackage, Template } from "../../../src/parser/"; +import { getExpression } from "../../../src/parser/expression"; import { initializeTestModelicaJson } from "./utils"; import * as parser from "../../../src/parser/parser"; const testModelicaFile = "TestPackage.Template.TestTemplate"; @@ -10,7 +11,7 @@ let template: Template | undefined; describe("Expression", () => { beforeAll(() => { initializeTestModelicaJson(); - loadPackage('TestPackage'); + loadPackage("TestPackage"); const templates = getTemplates(); template = templates.find( (t) => t.modelicaPath === templatePath, @@ -26,7 +27,7 @@ describe("Expression", () => { }); }); -let inputs: {[key: string]: parser.TemplateInput} = {}; +let inputs: { [key: string]: parser.TemplateInput } = {}; function getInputs() { const file = parser.getFile(testModelicaFile) as parser.File; @@ -41,7 +42,7 @@ describe("Template Input visible/enable expressions", () => { }); it("no enable sets true", () => { - const truthyPath = 'TestPackage.Template.TestTemplate.test_real'; + const truthyPath = "TestPackage.Template.TestTemplate.test_real"; const truthyInput = inputs[truthyPath]; // implicit 'true' if no 'enable' is specified @@ -49,24 +50,134 @@ describe("Template Input visible/enable expressions", () => { }); it("'final' param sets false", () => { - const falsyPath = 'TestPackage.Template.TestTemplate.should_ignore'; + const falsyPath = "TestPackage.Template.TestTemplate.should_ignore"; const falsyInput = inputs[falsyPath]; expect(falsyInput.visible).toBeFalsy(); }); it("'outer' prefix sets false", () => { - const falsyPath = 'TestPackage.Component.SecondComponent.inner_outer_param'; + const falsyPath = "TestPackage.Component.SecondComponent.inner_outer_param"; const falsyInput = inputs[falsyPath]; expect(falsyInput.visible).toBeFalsy(); }); it("'connectorSizing' handled correctly", () => { - const falsyPath = 'TestPackage.Template.TestTemplate.connector_param'; + const falsyPath = "TestPackage.Template.TestTemplate.connector_param"; const falsyInput = inputs[falsyPath]; expect(falsyInput.visible).toBeFalsy(); - const truthyPath = 'TestPackage.Template.TestTemplate.connector_param_false'; + const truthyPath = + "TestPackage.Template.TestTemplate.connector_param_false"; const truthyInput = inputs[truthyPath]; expect(truthyInput.visible).toBeTruthy(); }); }); + +describe("Parses expressions according to modelica-json schema", () => { + it("Parses simple expression with primary1", () => { + const simpleExpression = { + simple_expression: { + terms: [ + { + factors: [ + { + primary1: [ + { + simple_expression: { + logical_expression: { + logical_or: [ + { + logical_and: [ + { + arithmetic_expressions: ["Test.param", "0"], + relation_operator: ">", + }, + ], + }, + ], + }, + }, + }, + ], + }, + ], + }, + ], + }, + }; + const parsedExpression = { operator: ">", operands: ["Test.param", 0] }; + expect(getExpression(simpleExpression)).toEqual(parsedExpression); + }); + it("Parses factors with primary1 and primary2", () => { + const simpleExpression = { + simple_expression: { + terms: [ + { + factors: [ + { + operator: "^", + primary1: [ + { + simple_expression: "Te -Ta1", + }, + ], + primary2: "2", + }, + ], + }, + ], + }, + }; + const parsedExpression = { + operator: "^", + operands: [ + "Te -Ta1", + 2, + ], + }; + expect(getExpression(simpleExpression)).toEqual(parsedExpression); + }); + it("Parses addOps with leading -", () => { + const simpleExpression = { + simple_expression: { + addOps: ["-", "-", "+"], + terms: [ + "Modelica.Math.atan(TDryBul_degC +rh_per)", + "Modelica.Math.atan(rh_per -1.676331)", + { + operators: ["*"], + factors: [ + "0.00391838", + "Modelica.Math.atan(0.023101*rh_per)", + ], + }, + ], + }, + }; + const parsedExpression = { + operator: "+", + operands: [ + { + operator: "-", + operands: [ + { + operator: "-", + operands: [ + "Modelica.Math.atan(TDryBul_degC +rh_per)" + ] + }, + "Modelica.Math.atan(rh_per -1.676331)" + ] + }, + { + operator: "*", + operands: [ + 0.00391838, + "Modelica.Math.atan(0.023101*rh_per)" + ] + } + ] + }; + expect(getExpression(simpleExpression)).toEqual(parsedExpression); + }); +});