From ca0039dec40834cf7f4528caa49046e948b47f6f Mon Sep 17 00:00:00 2001 From: AntoineGautier Date: Fri, 20 Feb 2026 15:33:09 +0100 Subject: [PATCH 01/16] Implement schedule builder - Technical debt (inherited): multiple extends statements not supported --- server/src/parser/index.ts | 2 + server/src/parser/loader.ts | 14 +- server/src/parser/parser.ts | 24 +- server/src/parser/schedule.ts | 693 + .../tests/integration/parser/schedule.test.ts | 267 + .../Data/OutdoorReliefReturnSection.json | 1 + .../Components/Data/PartialController.json | 1 + .../Data/VAVMultiZoneController.json | 1 + .../Components/Data/package.json | 1 + .../AirHandlersFans/Components/package.json | 1 + .../Configuration/PartialAirHandler.json | 1 + .../Configuration/VAVMultiZone.json | 1 + .../Configuration/package.json | 1 + .../Data/PartialAirHandler.json | 1 + .../AirHandlersFans/Data/VAVMultiZone.json | 1 + .../AirHandlersFans/Data/package.json | 1 + .../Templates/AirHandlersFans/Types.json | 1 + .../AirHandlersFans/VAVMultiZone.json | 1 + .../Templates/AirHandlersFans/package.json | 1 + .../Templates/Components/Data/Chiller.json | 1 + .../Templates/Components/Data/Coil.json | 1774 + .../Templates/Components/Data/Damper.json | 1 + .../Templates/Components/Data/Fan.json | 1 + .../Templates/Components/Data/HeatPump.json | 1 + .../Components/Data/PumpMultiple.json | 1 + .../Templates/Components/Data/PumpSingle.json | 1 + .../Templates/Components/Data/Valve.json | 1 + .../Templates/Components/Data/package.json | 1 + .../Buildings/Templates/Components/Types.json | 1 + .../Templates/Components/package.json | 1 + .../Buildings/Templates/Data/AllSystems.json | 1 + .../Buildings/Templates/Data/Defaults.json | 1 + .../Buildings/Templates/Data/package.json | 1 + .../json/Buildings/Templates/Types.json | 1 + .../json/Buildings/Templates/package.json | 1 + .../static-data/json/Modelica/Units.json | 28575 ++++++++++++++++ 36 files changed, 31367 insertions(+), 11 deletions(-) create mode 100644 server/src/parser/schedule.ts create mode 100644 server/tests/integration/parser/schedule.test.ts create mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/OutdoorReliefReturnSection.json create mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/PartialController.json create mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/VAVMultiZoneController.json create mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/package.json create mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/package.json create mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Configuration/PartialAirHandler.json create mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Configuration/VAVMultiZone.json create mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Configuration/package.json create mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Data/PartialAirHandler.json create mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Data/VAVMultiZone.json create mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Data/package.json create mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Types.json create mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/VAVMultiZone.json create mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/package.json create mode 100644 server/tests/static-data/json/Buildings/Templates/Components/Data/Chiller.json create mode 100644 server/tests/static-data/json/Buildings/Templates/Components/Data/Coil.json create mode 100644 server/tests/static-data/json/Buildings/Templates/Components/Data/Damper.json create mode 100644 server/tests/static-data/json/Buildings/Templates/Components/Data/Fan.json create mode 100644 server/tests/static-data/json/Buildings/Templates/Components/Data/HeatPump.json create mode 100644 server/tests/static-data/json/Buildings/Templates/Components/Data/PumpMultiple.json create mode 100644 server/tests/static-data/json/Buildings/Templates/Components/Data/PumpSingle.json create mode 100644 server/tests/static-data/json/Buildings/Templates/Components/Data/Valve.json create mode 100644 server/tests/static-data/json/Buildings/Templates/Components/Data/package.json create mode 100644 server/tests/static-data/json/Buildings/Templates/Components/Types.json create mode 100644 server/tests/static-data/json/Buildings/Templates/Components/package.json create mode 100644 server/tests/static-data/json/Buildings/Templates/Data/AllSystems.json create mode 100644 server/tests/static-data/json/Buildings/Templates/Data/Defaults.json create mode 100644 server/tests/static-data/json/Buildings/Templates/Data/package.json create mode 100644 server/tests/static-data/json/Buildings/Templates/Types.json create mode 100644 server/tests/static-data/json/Buildings/Templates/package.json create mode 100644 server/tests/static-data/json/Modelica/Units.json diff --git a/server/src/parser/index.ts b/server/src/parser/index.ts index b25fb965..2c1fad0e 100644 --- a/server/src/parser/index.ts +++ b/server/src/parser/index.ts @@ -2,7 +2,9 @@ import path from "path"; import * as loader from "./loader"; import * as parser from "./parser"; import * as templates from "./template"; +import * as schedule from "./schedule"; export { SystemTypeN as SystemType, Template } from "./template"; +export { buildParameterTable } from "./schedule"; /** * diff --git a/server/src/parser/loader.ts b/server/src/parser/loader.ts index c9a871b0..b50cb9a3 100644 --- a/server/src/parser/loader.ts +++ b/server/src/parser/loader.ts @@ -208,13 +208,13 @@ function getPathFromClassName( * @returns The loaded JSON object or undefined if not found */ export function loader(className: string): Object | undefined { - // TODO: allow modelica paths - if (!className.startsWith("Modelica")) { - for (const dir of MODELICA_JSON_PATH) { - const jsonFile = getPathFromClassName(className, dir); - if (jsonFile && fs.existsSync(jsonFile)) { - return require(jsonFile); - } + if (className.startsWith("Modelica") && !className.startsWith("Modelica.Units")) { + return undefined; + } + for (const dir of MODELICA_JSON_PATH) { + const jsonFile = getPathFromClassName(className, dir); + if (jsonFile && fs.existsSync(jsonFile)) { + return require(jsonFile); } } } diff --git a/server/src/parser/parser.ts b/server/src/parser/parser.ts index 9bf932e6..3d14f792 100644 --- a/server/src/parser/parser.ts +++ b/server/src/parser/parser.ts @@ -516,6 +516,14 @@ export class ShortClass extends Element { this.description = definition.description?.description_string; this.replaceable = definition.replaceable; + if (specifier.value?.class_modification) { + this.mods = getModificationList( + specifier.value, + this.modelicaPath, + this.type, + ); + } + if (this.replaceable) { initializeReplaceable(this, definition, basePath); } @@ -1068,12 +1076,20 @@ function _constructElement( let element: Element | undefined; switch (elementType) { - case "type": + case "type": { // May only be predefined types, enumerations, array of type, or classes extending from type. - // Synctatically, these are short class definitions, but they need to be treated specifically - // as they define enumerations that are used in the parameter dialogs. - element = new Enumeration(definition, basePath, elementType); + // Route to Enumeration only if the short class specifier has an enum_list; + // otherwise it's a type alias (e.g. MassFlowRate = Real(...)) and goes to ShortClass. + const typeSpecifier = + (definition.class_definition ?? definition).class_specifier + .short_class_specifier; + if (typeSpecifier?.value?.enum_list) { + element = new Enumeration(definition, basePath, elementType); + } else { + element = new ShortClass(definition, basePath, elementType); + } break; + } case "class": case "connector": case "model": diff --git a/server/src/parser/schedule.ts b/server/src/parser/schedule.ts new file mode 100644 index 00000000..feb88113 --- /dev/null +++ b/server/src/parser/schedule.ts @@ -0,0 +1,693 @@ +/** + * Schedule builder - creates hierarchical table structures from Modelica record classes + * + * This module traverses a Modelica record class hierarchy and extracts parameter + * information into a table structure suitable for UI rendering. + * + * ## Example Usage + * + * ```typescript + * import { buildParameterTable } from "./parser/schedule"; + * import * as parser from "./parser/parser"; + * + * // Load the record class first (recursively loads all referenced types) + * parser.getFile("Buildings.Templates.AirHandlersFans.Data.VAVMultiZone"); + * + * // Build a parameter table for the record + * const table = buildParameterTable("Buildings.Templates.AirHandlersFans.Data.VAVMultiZone"); + * + * // Access the hierarchical columns + * table.columns.forEach(column => { + * if (column.kind === "leaf") { + * console.log(`Parameter: ${column.label}`); + * console.log(` Key: ${column.key}`); // relative instance path, e.g. "ctl.k" + * console.log(` Unit: ${column.unit}`); + * console.log(` Display Unit: ${column.displayUnit}`); + * console.log(` Min: ${column.min}, Max: ${column.max}`); + * console.log(` Enable: ${column.enable}`); // undefined means always enabled + * } else { + * console.log(`Group: ${column.label} with ${column.children.length} children`); + * } + * }); + * + * // Add rows at runtime (keyed by the same relative instance paths as column keys) + * table.rows.push({ + * "ctl.k": { value: 1.5 }, + * "coiHeaReh.dpAir_nominal": { value: 250 }, + * }); + * ``` + * + * ## Column Structure + * + * - **LeafColumn**: Represents a single parameter (predefined or type-alias types). + * - `key`: instance path relative to the top-level record (e.g. `"ctl.k"`, `"dpAir_nominal"`) + * - `label`: description string or parameter name + * - `unit`, `displayUnit`: resolved by walking the type alias chain + * (e.g. `PressureDifference → Pressure → Real(unit="Pa")`) + * - `min`, `max`, `start`: numeric bounds or runtime Expression objects + * - `enable`: `false` or an Expression if conditionally disabled; absent means always enabled. + * Determined by `__ctrlFlow(enable=false)` (takes precedence) or `Dialog(enable=...)`. + * + * - **GroupColumn**: Represents a collection of parameters. + * - Created from `Dialog(group=...)` or `Dialog(tab=...)` annotations + * - Created for record-typed component instances (children are the record's parameters) + * - Can be nested arbitrarily deep + * + * ## Attribute Extraction + * + * For each leaf parameter, attributes are resolved in this order: + * 1. Component's own modifiers (declaration-level overrides) + * 2. Type's TemplateInput modifiers + * 3. Type chain: follows `ShortClass.type` aliases and `LongClass.extendElement` + * inheritance until a predefined MLS type is reached or all attributes are found + * + * ## Filtering + * + * The following parameters are excluded from the table: + * - `outer` parameters (references to outer scope) + * - `final` parameters (cannot be modified) + * - Parameters marked with `__ctrlFlow(enable=false)` at the class level (`deadEnd`) + * - Parameters with `connectorSizing=true` + */ + +import { + typeStore, + Element, + LongClass, + ShortClass, + Component, + MLS_PREDEFINED_TYPES, + isInputGroup, +} from "./parser"; +import { Modification } from "./modification"; +import { evaluateExpression, Expression, Literal } from "./expression"; + +// --- Header definitions --- + +export interface LeafColumn { + kind: "leaf"; + key: string; // unique identifier, e.g. "cooling_air_flow" + label: string; // display label, e.g. "Air flow rate" + value?: number | string | boolean | Expression; // default binding; absent if unset + final?: boolean; // true if the value is locked by a final modifier + unit?: string; + displayUnit?: string; + min?: number | Expression; + max?: number | Expression; + start?: number | Expression; + enable?: boolean | Expression; +} + +export interface GroupColumn { + kind: "group"; + label: string; // e.g. "Cooling coil" + children: Column[]; // can nest arbitrarily deep +} + +export type Column = LeafColumn | GroupColumn; + +// --- Cell value + conditional expression --- + +export interface Cell { + value: string | number | boolean | null; + /** Expression evaluated in the context of the current row's cells. + * References sibling cells by their column key, e.g. "cooling_enabled === true" + * When false, the cell is disabled/greyed out. */ + enableWhen?: string; // or a parsed AST node if you want to avoid runtime eval +} + +// --- Row --- + +/** Flat map from leaf column key → cell */ +export type Row = Record; + +// --- Full table --- + +export interface Table { + columns: Column[]; // tree of headers + rows: Row[]; +} + +/** + * Builds a parameter table from a Modelica class by traversing its + * inheritance and composition tree. + */ +export function buildParameterTable(className: string): Table { + const element = typeStore.get(className); + + if (!element) { + throw new Error(`Class ${className} not found in typeStore`); + } + + const columns = buildColumnsFromElement(element); + + return { + columns, + rows: [], // Empty rows - to be filled at UI runtime + }; +} + +/** + * Builds a modifier map from a component's mod.mods for propagation into nested records. + * Maps local param name (e.g. "typ") -> overriding value (Expression or Literal). + * Merges with any inherited map passed from the parent scope. + */ +function buildModifierMap( + mod: Modification | null | undefined, + inherited: ModifierMap, +): ModifierMap { + const map: ModifierMap = new Map(inherited); + if (!mod?.mods) return map; + for (const nestedMod of mod.mods) { + if (nestedMod.value !== undefined && nestedMod.name) { + map.set(nestedMod.name, nestedMod.value); + } + } + return map; +} + +type ModifierMap = Map; + +/** + * Recursively substitutes any string operand in an Expression that matches a + * key in the modifier map with the corresponding value. + * Also prepends the instance prefix to operands whose root name appears in + * the set of known local instance names (localNames). + */ +function applyModifiers( + value: Expression | Literal, + modMap: ModifierMap, + instancePrefix: string, + localNames: Set, +): Expression | Literal { + if (typeof value !== "object" || value === null) { + // Plain literal — if it's a string reference in the mod map, substitute + if (typeof value === "string") { + // Check top-level name (e.g. "typ") and dotted first segment (e.g. "cfg" in "cfg.typCoiCoo") + const topName = value.split(".")[0]; + if (modMap.has(value)) { + return modMap.get(value)!; + } + if (modMap.has(topName)) { + // e.g. "cfg.typCoiCoo" with map key "cfg" -> substitute cfg part + const replacement = modMap.get(topName)!; + const rest = value.slice(topName.length + 1); + if (rest && typeof replacement === "string") { + return `${replacement}.${rest}`; + } + return replacement; + } + // Only prepend instance prefix for operands whose root name is a known + // local component name in the enclosing record scope. + if (instancePrefix && localNames.has(topName) && !value.startsWith(instancePrefix)) { + return `${instancePrefix}.${value}`; + } + } + return value; + } + // Expression object — recurse into operands + return { + operator: (value as Expression).operator, + operands: (value as Expression).operands.map((op) => + applyModifiers(op, modMap, instancePrefix, localNames), + ), + }; +} + +/** + * Rebase a component's modelicaPath from its type root to the instance path. + * e.g. component.modelicaPath = "Buildings.Templates.Components.Data.Coil.mAir_flow_nominal" + * typeRootPath = "Buildings.Templates.Components.Data.Coil" + * instancePath = "coiCoo" + * -> "coiCoo.mAir_flow_nominal" + */ +function rebasePath( + modelicaPath: string, + typeRootPath: string, + instancePath: string, +): string { + if (modelicaPath.startsWith(typeRootPath + ".")) { + return instancePath + modelicaPath.slice(typeRootPath.length); + } + return modelicaPath; +} + +/** + * Recursively builds columns from a record, traversing both inheritance and + * composition trees. + * + * @param element - The record type definition to traverse + * @param instancePath - The dotted instance path relative to the top-level record + * (e.g. "coiCoo" or "coiCoo.dat"). Used to rebase keys. + * @param modMap - Modifier overrides propagated from parent declarations + * (e.g. coiCoo(typ=cfg.typCoiCoo) produces {typ -> cfg.typCoiCoo}) + */ +function buildColumnsFromElement( + element: Element, + instancePath = "", + modMap: ModifierMap = new Map(), +): Column[] { + const columns: Column[] = []; + const groupedColumns = new Map(); // group/tab name -> columns + + // Merge this element's extends mods (non-redeclare, value-bearing) into the modMap + // so that e.g. `extends Parent(x=someValue)` overrides are visible to all child columns. + for (const mod of (element as LongClass).mods ?? []) { + if (mod.value !== undefined && mod.name && !mod.redeclare && !modMap.has(mod.name)) { + modMap.set(mod.name, mod.value); + } + } + + // Get all child elements (includes inherited elements) + const childElements = element.elementType === "record" + ? (element as LongClass).getChildElements() + : []; + + // Build the set of local component names so applyModifiers can discriminate + // which expression operands are local references (and should be prefixed with + // instancePath) vs. absolute type paths / numeric literals. + const localNames = new Set( + childElements + .filter((c) => c.elementType === "component_clause") + .map((c) => (c as Component).name) + .filter(Boolean), + ); + + for (const child of childElements) { + // Skip non-component elements + if (child.elementType !== "component_clause") { + continue; + } + + const component = child as Component; + + // Skip outer, final, or invisible parameters + if (component.outer || component.final || component.deadEnd) { + continue; + } + + // Build the key as a relative path from the top-level record. + // For nested records, rebasePath strips the type-root prefix and replaces it + // with the instance path. For top-level components (instancePath="") and for + // inherited components whose modelicaPath is rooted at a parent class (not + // element.modelicaPath), we fall back to using component.name directly so + // the key is always a short relative name, never an absolute type path. + const rebasedName = instancePath + ? rebasePath(component.modelicaPath, element.modelicaPath, instancePath) + : component.name; + // If rebasePath couldn't strip the type prefix (inherited component from a + // parent class), fall back to composing the key from component.name directly. + const key = rebasedName.startsWith(instancePath) + ? rebasedName + : instancePath ? `${instancePath}.${component.name}` : component.name; + + // Check if this component is redeclared in the current element's extends mods. + // e.g. VAVMultiZone extends PartialAirHandler(redeclare VAVMultiZoneController ctl(...)) + // stores a Modification with name="ctl", redeclare="...VAVMultiZoneController" in element.mods. + const redeclareMod = (element as LongClass).mods?.find( + (m) => m.name === component.name && m.redeclare, + ); + const effectiveTypePath = redeclareMod?.redeclare ?? component.type; + + // Determine if this is a predefined (leaf) type or a record (group) type + const isPredefinedType = MLS_PREDEFINED_TYPES.includes(effectiveTypePath); + const componentType = typeStore.get(effectiveTypePath); + const isRecordType = + componentType && componentType.elementType === "record"; + + let column: Column; + + if (isPredefinedType || !isRecordType) { + // Create a leaf column for predefined types and non-record types + const attributes = extractAttributes(component, element, modMap, instancePath, localNames); + column = { + kind: "leaf", + key, + label: component.description || component.name, + ...attributes, + }; + } else { + // Build the nested instance path and inherit/merge modifiers from this component. + // If there's a redeclare, also merge its nested mods (e.g. ctl(typSecOut=cfg.typSecOut)). + const nestedInstancePath = instancePath + ? `${instancePath}.${component.name}` + : component.name; + let nestedModMap = buildModifierMap(component.mod, modMap); + if (redeclareMod?.mods?.length) { + nestedModMap = buildModifierMap(redeclareMod, nestedModMap); + } + + // Create a group column for record types, recursing with context + const recordColumns = buildColumnsFromElement( + componentType, + nestedInstancePath, + nestedModMap, + ); + column = { + kind: "group", + label: component.description || component.name, + children: recordColumns, + }; + } + + // Group by tab or group annotation if present + const groupKey = component.tab || component.group; + if (groupKey) { + if (!groupedColumns.has(groupKey)) { + groupedColumns.set(groupKey, []); + } + groupedColumns.get(groupKey)!.push(column); + } else { + columns.push(column); + } + } + + // Add grouped columns as GroupColumn entries + for (const [groupLabel, groupChildren] of groupedColumns.entries()) { + columns.push({ + kind: "group", + label: groupLabel, + children: groupChildren, + }); + } + + return columns; +} + +/** + * Extracts unit, displayUnit, min, max, start, enable attributes from a component. + * For non-predefined types, walks up the inheritance chain if attributes are missing. + * Applies modMap substitutions and rebases references to instancePrefix. + * + * @param localNames - Set of local component names in the enclosing record scope, + * used to safely discriminate which expression operands should + * be prefixed with instancePrefix. + */ +function extractAttributes( + component: Component, + element: Element, + modMap: ModifierMap = new Map(), + instancePrefix = "", + localNames: Set = new Set(), +): { + value?: number | string | boolean | Expression; + final?: boolean; + unit?: string; + displayUnit?: string; + min?: number | Expression; + max?: number | Expression; + start?: number | Expression; + enable?: boolean | Expression; +} { + const result: { + value?: number | string | boolean | Expression; + final?: boolean; + unit?: string; + displayUnit?: string; + min?: number | Expression; + max?: number | Expression; + start?: number | Expression; + enable?: boolean | Expression; + } = {}; + + // enable: __ctrlFlow.enable=false overrides Dialog.enable; otherwise use Dialog.enable + const ctrlFlowEnable = component.getLinkageKeywordValue(); + if (ctrlFlowEnable === false) { + result.enable = false; + } else if (component.enable !== undefined && component.enable !== true) { + result.enable = applyModifiersToAttr(component.enable, modMap, instancePrefix, localNames); + } + + // value: check modMap first (parent override), then component's own declaration binding. + // A modMap entry for component.name means an enclosing record has set this parameter. + const modMapValue = modMap.get(component.name); + const rawValue = modMapValue !== undefined ? modMapValue : component.value; + if (rawValue !== undefined) { + result.value = applyModifiersToAttr(rawValue, modMap, instancePrefix, localNames); + } + + // final: true if component.mod is marked final, or if a modifier in element.mods + // targets this component with final=true (e.g. extends Foo(final x=1)). + const parentFinalMod = (element as LongClass).mods?.find( + (m) => m.name === component.name && m.final, + ); + if (component.mod?.final || parentFinalMod) { + result.final = true; + } + + const isPredefinedType = MLS_PREDEFINED_TYPES.includes(component.type); + const isReal = component.type === "Real"; + + // Only retrieve quantity attributes for Real types or non-predefined types + if (!isReal && isPredefinedType) { + return result; + } + + // First try to get attributes from the type's TemplateInput modifiers + const typeElement = typeStore.get(component.type); + if (typeElement && !isPredefinedType) { + const typeInputs = typeElement.getInputs({}, false); + const typeInput = typeInputs[component.type]; + if (typeInput && typeInput.modifiers) { + extractFromTemplateInputModifiers(component.modelicaPath, typeInput.modifiers, result); + } + } + + // Also check component's own modifiers + if (component.mod) { + extractAttributesFromModifiers(component.modelicaPath, component.mod, result); + } + + // If type is not predefined and any attributes are still missing, walk up the + // type chain until all attributes are found or no parent remains. + if (!isPredefinedType && typeElement) { + let current: Element | undefined = typeElement; + while (current) { + if ( + result.unit !== undefined && + result.displayUnit !== undefined && + result.min !== undefined && + result.max !== undefined && + result.start !== undefined + ) { + break; + } + if ("mods" in current && (current as any).mods) { + const parentResult: typeof result = {}; + extractAttributesFromModifiers(current.modelicaPath, { mods: (current as any).mods }, parentResult); + result.unit = result.unit ?? parentResult.unit; + result.displayUnit = result.displayUnit ?? parentResult.displayUnit; + result.min = result.min ?? parentResult.min; + result.max = result.max ?? parentResult.max; + result.start = result.start ?? parentResult.start; + } + current = nextInTypeChain(current); + } + } + + // Apply modifier substitutions to numeric/expression attributes + if (result.min !== undefined) { + result.min = applyModifiersToAttr(result.min, modMap, instancePrefix, localNames); + } + if (result.max !== undefined) { + result.max = applyModifiersToAttr(result.max, modMap, instancePrefix, localNames); + } + if (result.start !== undefined) { + result.start = applyModifiersToAttr(result.start, modMap, instancePrefix, localNames); + } + + return result; +} + +/** + * Applies modifier substitutions to an attribute value (literal or Expression). + */ +function applyModifiersToAttr( + value: any, + modMap: ModifierMap, + instancePrefix: string, + localNames: Set, +): any { + if (typeof value !== "object") { + return value; + } + return applyModifiers(value as Expression, modMap, instancePrefix, localNames); +} + +/** + * Unwraps a mod value which may be a raw Literal or an Expression object. + * - If the value reduces to a scalar literal, returns it directly. + * - If it is a complex Expression that cannot be reduced, returns the Expression + * so the client can evaluate it at runtime. + * - Returns undefined for null/undefined values. + */ +function resolveModValue(value: any): string | number | boolean | Expression | undefined { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value !== "object") { + return value as string | number | boolean; + } + // Expression object — try to reduce to a literal + const evaluated = evaluateExpression(value as Expression); + if (evaluated === null) { + return undefined; + } + // Return the literal if simple, otherwise keep the full Expression for client eval + return evaluated as string | number | boolean | Expression; +} + +/** + * Extracts attributes from a component's modification object + */ +function extractAttributesFromModifiers( + modelicaPath: string, + mod: any, + result: { + unit?: string; + displayUnit?: string; + min?: number | Expression; + max?: number | Expression; + start?: number | Expression; + } +): void { + if (!mod || !mod.mods) { + return; + } + + // Look through nested modifiers for attribute modifiers + for (const nestedMod of mod.mods) { + const modPath = nestedMod.modelicaPath || ""; + const raw = resolveModValue(nestedMod.value); + + if (modPath.endsWith(".unit") && raw !== undefined && typeof raw !== "object") { + result.unit = String(raw); + } else if (modPath.endsWith(".displayUnit") && raw !== undefined && typeof raw !== "object") { + result.displayUnit = String(raw); + } else if (modPath.endsWith(".min") && raw !== undefined) { + result.min = typeof raw === "object" ? raw : Number(raw); + } else if (modPath.endsWith(".max") && raw !== undefined) { + result.max = typeof raw === "object" ? raw : Number(raw); + } else if (modPath.endsWith(".start") && raw !== undefined) { + result.start = typeof raw === "object" ? raw : Number(raw); + } + } +} + +/** + * Extracts attributes from a TemplateInput's modifiers array + */ +function extractFromTemplateInputModifiers( + modelicaPath: string, + modifiers: any[], + result: { + unit?: string; + displayUnit?: string; + min?: number | Expression; + max?: number | Expression; + start?: number | Expression; + } +): void { + if (!modifiers || !Array.isArray(modifiers)) { + return; + } + + // Iterate through the modifiers array + for (const mod of modifiers) { + if (!mod || !mod.mods || !Array.isArray(mod.mods)) { + continue; + } + + // Look through nested modifiers for attribute modifiers + for (const nestedMod of mod.mods) { + const modPath = nestedMod.modelicaPath || ""; + const raw = resolveModValue(nestedMod.value); + + if (modPath.endsWith(".unit") && raw !== undefined && typeof raw !== "object") { + result.unit = String(raw); + } else if (modPath.endsWith(".displayUnit") && raw !== undefined && typeof raw !== "object") { + result.displayUnit = String(raw); + } else if (modPath.endsWith(".min") && raw !== undefined) { + result.min = typeof raw === "object" ? raw : Number(raw); + } else if (modPath.endsWith(".max") && raw !== undefined) { + result.max = typeof raw === "object" ? raw : Number(raw); + } else if (modPath.endsWith(".start") && raw !== undefined) { + result.start = typeof raw === "object" ? raw : Number(raw); + } + } + } +} + +/** + * Returns the next element in the type chain: + * - LongClass: follows extendElement (explicit extends clause) + * - ShortClass: follows the aliased type (e.g. PressureDifference -> Pressure -> Real) + * - stops at predefined MLS types + */ +function nextInTypeChain(current: Element): Element | undefined { + if (current instanceof LongClass) { + return current.extendElement; + } + if (current instanceof ShortClass) { + const aliasedType = current.type; + if (aliasedType && aliasedType !== current.modelicaPath && !MLS_PREDEFINED_TYPES.includes(aliasedType)) { + return typeStore.get(aliasedType) ?? undefined; + } + } + return undefined; +} + +/** + * Recursively extracts attributes from a type definition, walking up the inheritance chain + */ +function extractAttributesFromType(element: Element): { + unit?: string; + displayUnit?: string; + min?: number | Expression; + max?: number | Expression; + start?: number | Expression; +} { + const result: { + unit?: string; + displayUnit?: string; + min?: number | Expression; + max?: number | Expression; + start?: number | Expression; + } = {}; + + // Walk up the type chain, filling in missing attributes + let current: Element | undefined = element; + while (current) { + if ("mods" in current && (current as any).mods) { + const levelResult: typeof result = {}; + extractAttributesFromModifiers(current.modelicaPath, { mods: (current as any).mods }, levelResult); + result.unit = result.unit ?? levelResult.unit; + result.displayUnit = result.displayUnit ?? levelResult.displayUnit; + result.min = result.min ?? levelResult.min; + result.max = result.max ?? levelResult.max; + result.start = result.start ?? levelResult.start; + } + current = nextInTypeChain(current); + } + + return result; +} + +/** + * Checks if all attributes are empty/undefined + */ +function hasEmptyAttributes(attrs: { + unit?: string; + displayUnit?: string; + min?: number | Expression; + max?: number | Expression; + start?: number | Expression; +}): boolean { + return ( + attrs.unit === undefined && + attrs.displayUnit === undefined && + attrs.min === undefined && + attrs.max === undefined && + attrs.start === undefined + ); +} diff --git a/server/tests/integration/parser/schedule.test.ts b/server/tests/integration/parser/schedule.test.ts new file mode 100644 index 00000000..39c92a7e --- /dev/null +++ b/server/tests/integration/parser/schedule.test.ts @@ -0,0 +1,267 @@ +import { buildParameterTable, Table } from "../../../src/parser/schedule"; +import * as parser from "../../../src/parser/parser"; +import { prependToModelicaJsonPath } from '../../../src/parser/loader'; +import * as fs from "fs"; + +const DEBUG = !!process.env.DEBUG_SCHEDULE; + +const jsonRecordPath = "tests/static-data/json"; +const testRecordName = "Buildings.Templates.AirHandlersFans.Data.VAVMultiZone"; + +describe("buildParameterTable", () => { + let table: Table; + + beforeAll(() => { + prependToModelicaJsonPath([jsonRecordPath]); + parser.getFile(testRecordName); // This populates parser.typeStore + table = buildParameterTable(testRecordName); + if (DEBUG) { + const keys: string[] = []; + const operands: string[] = []; + + const collect = (columns: any[]) => { + for (const col of columns) { + if (col.kind === "leaf") { + if (col.key) keys.push(col.key); + const collectOperands = (val: any) => { + if (val === null || val === undefined) return; + if (typeof val === "object" && "operands" in val) { + for (const op of val.operands) collectOperands(op); + } else if (typeof val === "string") { + operands.push(val); + } + }; + for (const attr of ["min", "max", "start", "enable"]) { + collectOperands((col as any)[attr]); + } + } else if (col.kind === "group" && col.children) { + collect(col.children); + } + } + }; + + collect(table.columns); + fs.writeFileSync("keys.log", keys.join("\n") + "\n"); + fs.writeFileSync("operands.log", operands.join("\n") + "\n"); + fs.writeFileSync("table.json", JSON.stringify(table, null, 2)); + } + }); + + it("should throw an error for non-existent class", () => { + expect(() => buildParameterTable("NonExistent.Class")).toThrow( + "Class NonExistent.Class not found in typeStore" + ); + }); + + it("should return a table with columns and empty rows", () => { +expect(table).toBeDefined(); + expect(table.columns).toBeDefined(); + expect(Array.isArray(table.columns)).toBe(true); + expect(table.rows).toBeDefined(); + expect(Array.isArray(table.rows)).toBe(true); + expect(table.rows.length).toBe(0); + }); + + it("should create leaf columns for predefined type parameters", () => { +// Find any leaf columns (should exist for String, Boolean, Real, Integer types) + const leafColumns = table.columns.filter((col) => col.kind === "leaf"); + expect(leafColumns.length).toBeGreaterThan(0); + + // Check structure of a leaf column + const firstLeaf = leafColumns[0] as any; + expect(firstLeaf.kind).toBe("leaf"); + expect(firstLeaf.key).toBeDefined(); + expect(typeof firstLeaf.key).toBe("string"); + expect(firstLeaf.label).toBeDefined(); + expect(typeof firstLeaf.label).toBe("string"); + }); + + it("should extract unit, displayUnit, min, max attributes for Real types", () => { + const allColumns = getAllColumns(table.columns); + const leafColumns = allColumns.filter((col: any) => col.kind === "leaf"); + + // At least some leaf columns should have these attributes defined + // (for Real types with modifiers) + const hasAttributeColumn = leafColumns.some((col: any) => + col.displayUnit !== undefined || + col.unit !== undefined || + col.min !== undefined || + col.max !== undefined + ); + expect(hasAttributeColumn).toBe(true); + + // For columns that do have these attributes, verify their types + leafColumns.forEach((col: any) => { + if (col.unit !== undefined) expect(typeof col.unit).toBe("string"); + if (col.displayUnit !== undefined) expect(typeof col.displayUnit).toBe("string"); + if (col.min !== undefined) expect(typeof col.min === "number" || typeof col.min === "object").toBe(true); + if (col.max !== undefined) expect(typeof col.max === "number" || typeof col.max === "object").toBe(true); + }); + }); + + it("should extract displayUnit from modifiers", () => { +const allColumns = getAllColumns(table.columns); + const leafColumns = allColumns.filter((col: any) => col.kind === "leaf"); + + // Check that displayUnit can be extracted when present + leafColumns.forEach((col: any) => { + if (col.displayUnit !== undefined) { + expect(typeof col.displayUnit).toBe("string"); + } + }); + }); + + it("should extract min and max from modifiers as numbers", () => { +const allColumns = getAllColumns(table.columns); + const leafColumns = allColumns.filter((col: any) => col.kind === "leaf"); + + // Check that min/max are numbers when present + leafColumns.forEach((col: any) => { + if (col.min !== undefined) { + expect(typeof col.min === "number" || typeof col.min === "object").toBe(true); + } + if (col.max !== undefined) { + expect(typeof col.max === "number" || typeof col.max === "object").toBe(true); + } + }); + }); + + it("should not extract attributes for non-Real predefined types", () => { + const allColumns = getAllColumns(table.columns); + const leafColumns = allColumns.filter((col: any) => col.kind === "leaf"); + + // String, Boolean, Integer types should not have unit/displayUnit/min/max set + const nonRealColumns = leafColumns.filter((col: any) => + col.key.toLowerCase().includes("string") || + col.key.toLowerCase().includes("bool") || + col.key.toLowerCase().includes("integer") + ); + + nonRealColumns.forEach((col: any) => { + expect(col.unit).toBeUndefined(); + expect(col.displayUnit).toBeUndefined(); + expect(col.min).toBeUndefined(); + expect(col.max).toBeUndefined(); + }); + }); + + it("should create group columns for parameters with Dialog group annotation", () => { +// Look for group columns + const groupColumns = table.columns.filter((col) => col.kind === "group"); + expect(groupColumns.length).toBeGreaterThan(0); + + // Check structure of a group column + const firstGroup = groupColumns[0] as any; + expect(firstGroup.kind).toBe("group"); + expect(firstGroup.label).toBeDefined(); + expect(typeof firstGroup.label).toBe("string"); + expect(firstGroup.children).toBeDefined(); + expect(Array.isArray(firstGroup.children)).toBe(true); + }); + + it("should create group columns for record type parameters", () => { +// The test template has a 'dat' parameter which is a record type + // This should be represented as a group column with nested children + const allColumns = getAllColumns(table.columns); + const recordColumn = allColumns.find( + (col: any) => + col.kind === "group" && + col.label && + col.children && + col.children.length > 0 + ); + + expect(recordColumn).toBeDefined(); + }); + + it("should not include outer, final, or deadEnd parameters", () => { +// Get all leaf columns + const allColumns = getAllColumns(table.columns); + const leafColumns = allColumns.filter((col: any) => col.kind === "leaf"); + + // Check that no final parameters are included + const hasFinalParam = leafColumns.some((col: any) => + col.key.includes("should_ignore") + ); + expect(hasFinalParam).toBe(false); + }); + + it("should handle nested group structures", () => { +// Find a group column and verify it can have children + const groupColumns = table.columns.filter((col) => col.kind === "group"); + if (groupColumns.length > 0) { + const group = groupColumns[0] as any; + expect(group.children).toBeDefined(); + expect(Array.isArray(group.children)).toBe(true); + } + }); + + it("should include parameters from inherited classes", () => { + // TestTemplate extends ExtendInterface which has parameters +const allColumns = getAllColumns(table.columns); + const leafColumns = allColumns.filter((col: any) => col.kind === "leaf"); + + // Should have parameters from both the class itself and inherited classes + expect(leafColumns.length).toBeGreaterThan(0); + }); + + it("should use parameter description as label", () => { +const allColumns = getAllColumns(table.columns); + const leafColumns = allColumns.filter((col: any) => col.kind === "leaf"); + + // At least some parameters should have meaningful labels + const hasDescriptiveLabel = leafColumns.some( + (col: any) => col.label && col.label.length > 0 + ); + expect(hasDescriptiveLabel).toBe(true); + }); + + it("should handle tab annotations", () => { +// The test data has a parameter with Dialog(tab="Tabby") + const allColumns = getAllColumns(table.columns); + const tabGroup = allColumns.find( + (col: any) => col.kind === "group" && col.label === "Tabby" + ); + + // Tab should create a group if parameters use it + if (tabGroup) { + expect(tabGroup).toBeDefined(); + } + }); + + it("should create unique keys for leaf columns", () => { +const allColumns = getAllColumns(table.columns); + const leafColumns = allColumns.filter((col: any) => col.kind === "leaf"); + const keys = leafColumns.map((col: any) => col.key); + + // All keys should be unique + const uniqueKeys = new Set(keys); + expect(uniqueKeys.size).toBe(keys.length); + }); + + it("should handle inheritance of attributes from parent types", () => { +const allColumns = getAllColumns(table.columns); + const leafColumns = allColumns.filter((col: any) => col.kind === "leaf"); + + // If a parameter has a custom type that extends Real, + // it should inherit attributes from the parent type + // This test just verifies the mechanism doesn't break + expect(leafColumns.length).toBeGreaterThan(0); + }); +}); + +/** + * Helper function to flatten all columns (including nested ones) into a single array + */ +function getAllColumns(columns: any[]): any[] { + const result: any[] = []; + + for (const col of columns) { + result.push(col); + if (col.kind === "group" && col.children) { + result.push(...getAllColumns(col.children)); + } + } + + return result; +} diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/OutdoorReliefReturnSection.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/OutdoorReliefReturnSection.json new file mode 100644 index 00000000..ac6db065 --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/OutdoorReliefReturnSection.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates.AirHandlersFans.Components.Data","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"OutdoorReliefReturnSection","description_string":"Record for outdoor/relief/return air section","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Record"}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Damper","component_list":[{"declaration":{"identifier":"typDamOut"},"description":{"description_string":"Outdoor air damper type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Damper","component_list":[{"declaration":{"identifier":"typDamOutMin"},"description":{"description_string":"Minimum outdoor air damper type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Damper","component_list":[{"declaration":{"identifier":"typDamRel"},"description":{"description_string":"Relief damper type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Damper","component_list":[{"declaration":{"identifier":"typDamRet"},"description":{"description_string":"Return damper type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Fan","component_list":[{"declaration":{"identifier":"typFanRel"},"description":{"description_string":"Type of relief fan","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Fan","component_list":[{"declaration":{"identifier":"typFanRet"},"description":{"description_string":"Type of return fan","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Integer","component_list":[{"declaration":{"identifier":"nFanRet","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typFanRet","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"0"}}],"else_expression":{"simple_expression":"1"}}}}}}}]}},"description":{"description_string":"Number of return fans","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Integer","component_list":[{"declaration":{"identifier":"nFanRel","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typFanRel","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"0"}}],"else_expression":{"simple_expression":"1"}}}}}}}]}},"description":{"description_string":"Number of relief fans","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"mOutMin_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0.2*damOut.m_flow_nominal"}}}}}]}},"description":{"description_string":"Minimum outdoor air mass flow rate at design conditions","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Dampers and economizers\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typDamOutMin","Buildings.Templates.Components.Types.Damper.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Data.Damper","component_list":[{"declaration":{"identifier":"damOut","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"typDamOut"}}}}}]}},"description":{"description_string":"Outdoor air damper","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Dampers and economizers\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typDamOut","Buildings.Templates.Components.Types.Damper.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Data.Damper","component_list":[{"declaration":{"identifier":"damOutMin","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"typDamOutMin"}}}}}]}},"description":{"description_string":"Minimum outdoor air damper","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Dampers and economizers\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typDamOutMin","Buildings.Templates.Components.Types.Damper.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Data.Damper","component_list":[{"declaration":{"identifier":"damRel","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"typDamRel"}}}}}]}},"description":{"description_string":"Relief damper","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Dampers and economizers\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typDamRel","Buildings.Templates.Components.Types.Damper.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Data.Damper","component_list":[{"declaration":{"identifier":"damRet","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"typDamRet"}}}}}]}},"description":{"description_string":"Return damper","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Dampers and economizers\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typDamRet","Buildings.Templates.Components.Types.Damper.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Data.Fan","component_list":[{"declaration":{"identifier":"fanRel","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"typFanRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFan","modification":{"equal":true,"expression":{"simple_expression":"nFanRel"}}}}}]}},"description":{"description_string":"Relief fan","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Fans\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typFanRel","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Data.Fan","component_list":[{"declaration":{"identifier":"fanRet","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"typFanRet"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFan","modification":{"equal":true,"expression":{"simple_expression":"nFanRet"}}}}}]}},"description":{"description_string":"Return fan","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Fans\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typFanRet","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of sizing and operating parameters for\nthe classes within\n\nBuildings.Templates.AirHandlersFans.Components.OutdoorReliefReturnSection.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/Components/Data/OutdoorReliefReturnSection.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/AirHandlersFans/Components/Data/OutdoorReliefReturnSection.mo","checksum":"7bb97d7ccc4b4bcb0743752c475c9503"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/PartialController.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/PartialController.json new file mode 100644 index 00000000..84426392 --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/PartialController.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates.AirHandlersFans.Components.Data","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"PartialController","description_string":"Record for controller interface class","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Record"}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.AirHandlersFans.Types.Controller","component_list":[{"declaration":{"identifier":"typ"},"description":{"description_string":"Type of controller","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Fan","component_list":[{"declaration":{"identifier":"typFanSup"},"description":{"description_string":"Type of supply fan","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Fan","component_list":[{"declaration":{"identifier":"typFanRel"},"description":{"description_string":"Type of relief fan","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Fan","component_list":[{"declaration":{"identifier":"typFanRet"},"description":{"description_string":"Type of return fan","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of sizing and operating parameters for the class\n\nBuildings.Templates.AirHandlersFans.Components.Controls.Interfaces.PartialController.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/Components/Data/PartialController.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/AirHandlersFans/Components/Data/PartialController.mo","checksum":"060096d5679fcb976503ff592f035825"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/VAVMultiZoneController.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/VAVMultiZoneController.json new file mode 100644 index 00000000..9a70a04a --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/VAVMultiZoneController.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates.AirHandlersFans.Components.Data","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"VAVMultiZoneController","description_string":"Record for multiple-zone VAV controller","composition":{"element_list":[{"extends_clause":{"name":"Buildings.Templates.AirHandlersFans.Components.Data.PartialController"}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection","component_list":[{"declaration":{"identifier":"typSecOut"},"description":{"description_string":"Type of outdoor air section","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl","component_list":[{"declaration":{"identifier":"buiPreCon"},"description":{"description_string":"Type of building pressure control system","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard","component_list":[{"declaration":{"identifier":"stdVen"},"description":{"description_string":"Ventilation standard","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Energy and ventilation standards\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TAirSupSet_min","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"273.15"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"degC\""}}}}}],"equal":true,"expression":{"simple_expression":"12 +273.15"}}},"description":{"description_string":"Lowest supply air temperature setpoint","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Temperature setpoints\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TAirSupSet_max","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"273.15"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"degC\""}}}}}],"equal":true,"expression":{"simple_expression":"18 +273.15"}}},"description":{"description_string":"Highest supply air temperature setpoint","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Temperature setpoints\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TOutRes_min","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"273.15"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"degC\""}}}}}],"equal":true,"expression":{"simple_expression":"16 +273.15"}}},"description":{"description_string":"Lowest value of the outdoor air temperature reset range","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Temperature setpoints\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TOutRes_max","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"273.15"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"degC\""}}}}}],"equal":true,"expression":{"simple_expression":"21 +273.15"}}},"description":{"description_string":"Highest value of the outdoor air temperature reset range","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Temperature setpoints\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.VolumeFlowRate","component_list":[{"declaration":{"identifier":"VOutUnc_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Uncorrected design outdoor air flow rate, including diversity where applicable","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Ventilation setpoints\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="},{"arithmetic_expressions":["stdVen","Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.VolumeFlowRate","component_list":[{"declaration":{"identifier":"VOutTot_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Design total outdoor air flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Ventilation setpoints\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="},{"arithmetic_expressions":["stdVen","Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.VolumeFlowRate","component_list":[{"declaration":{"identifier":"VOutAbsMin_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Design outdoor air flow rate when all zones with CO2 sensors or occupancy sensors are unpopulated","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Ventilation setpoints\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="},{"arithmetic_expressions":["stdVen","Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.VolumeFlowRate","component_list":[{"declaration":{"identifier":"VOutMin_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Design minimum outdoor air flow rate when all zones are occupied at their design population, including diversity","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Ventilation setpoints\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="},{"arithmetic_expressions":["stdVen","Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"pAirSupSet_rel_max","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"Pa\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"500"}}}}}]}},"description":{"description_string":"Duct design maximum static pressure","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Information provided by testing, adjusting, and balancing contractor\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpDamOutMinAbs","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"2.4"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"Pa\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"5"}}}}}]}},"description":{"description_string":"Differential pressure across the minimum outdoor air damper that provides the absolute minimum outdoor airflow","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Information provided by testing, adjusting, and balancing contractor\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="},{"arithmetic_expressions":["stdVen","Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24"],"relation_operator":"=="},{"arithmetic_expressions":["typSecOut","Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpDamOutMin_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"5"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"Pa\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"15"}}}}}]}},"description":{"description_string":"Differential pressure across the minimum outdoor air damper that provides the design minimum outdoor airflow","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Information provided by testing, adjusting, and balancing contractor\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="},{"arithmetic_expressions":["typSecOut","Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"pAirRetSet_rel_min","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"2.4"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"Pa\""}}}}}],"equal":true,"expression":{"simple_expression":"10"}}},"description":{"description_string":"Return fan minimum discharge static pressure setpoint","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Information provided by testing, adjusting, and balancing contractor\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="},{"arithmetic_expressions":["buiPreCon","Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanDp"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"pAirRetSet_rel_max","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"10"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"Pa\""}}}}}],"equal":true,"expression":{"simple_expression":"40"}}},"description":{"description_string":"Return fan maximum discharge static pressure setpoint","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Information provided by testing, adjusting, and balancing contractor\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="},{"arithmetic_expressions":["buiPreCon","Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanDp"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.VolumeFlowRate","component_list":[{"declaration":{"identifier":"dVFanRet_flow","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0.1"}}}}}]}},"description":{"description_string":"Airflow differential between supply and return fans to maintain building pressure at setpoint","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Information provided by testing, adjusting, and balancing contractor\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="},{"arithmetic_expressions":["buiPreCon","Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanMeasuredAir"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"yFanSup_min","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"1\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"max","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}}],"equal":true,"expression":{"simple_expression":"0.1"}}},"description":{"description_string":"Lowest allowed fan speed if fan is on","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Information provided by testing, adjusting, and balancing contractor\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="},{"arithmetic_expressions":["typFanSup","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"yFanRel_min","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"1\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"max","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}}],"equal":true,"expression":{"simple_expression":"0.1"}}},"description":{"description_string":"Minimum relief fan speed","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Information provided by testing, adjusting, and balancing contractor\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="},{"arithmetic_expressions":["typFanRel","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"yFanRet_min","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"1\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"max","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}}],"equal":true,"expression":{"simple_expression":"0.1"}}},"description":{"description_string":"Minimum return fan speed","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Information provided by testing, adjusting, and balancing contractor\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="},{"arithmetic_expressions":["typFanRet","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of sizing and operating parameters for\nmultiple-zone VAV controllers within\n\nBuildings.Templates.AirHandlersFans.Components.Controls.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/Components/Data/VAVMultiZoneController.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/AirHandlersFans/Components/Data/VAVMultiZoneController.mo","checksum":"542e73f5ff25acc60e72ee972984fa01"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/package.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/package.json new file mode 100644 index 00000000..4c34f4ff --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/package.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates.AirHandlersFans.Components","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"Data","description_string":"Records for design and operating parameters","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.MaterialPropertiesPackage"}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package provides records for design and operating parameters.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/Components/Data/package.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/AirHandlersFans/Components/Data/package.mo","checksum":"ae5b6133c15a0df1c978baccf7ba9ee4","order":["OutdoorReliefReturnSection","PartialController","VAVMultiZoneController"]} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/package.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/package.json new file mode 100644 index 00000000..371d41fb --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/package.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates.AirHandlersFans","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"Components","description_string":"Package with component models","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.VariantsPackage"}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package contains component models that are used in\n\nBuildings.Templates.AirHandlersFans.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/Components/package.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/AirHandlersFans/Components/package.mo","checksum":"d8932e3d0866bbf2302329a91501d61c","order":["Controls","HeatRecovery","OutdoorReliefReturnSection","OutdoorSection","ReliefReturnSection","Data","Interfaces"]} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Configuration/PartialAirHandler.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Configuration/PartialAirHandler.json new file mode 100644 index 00000000..c37703a8 --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Configuration/PartialAirHandler.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates.AirHandlersFans.Configuration","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"PartialAirHandler","description_string":"Configuration parameters for air handler interface class","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Record"}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.AirHandlersFans.Types.Configuration","component_list":[{"declaration":{"identifier":"typ"},"description":{"description_string":"Type of system","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Fan","component_list":[{"declaration":{"identifier":"typFanSup"},"description":{"description_string":"Type of supply fan","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Fan","component_list":[{"declaration":{"identifier":"typFanRet"},"description":{"description_string":"Type of return fan","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Fan","component_list":[{"declaration":{"identifier":"typFanRel"},"description":{"description_string":"Type of relief fan","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Integer","component_list":[{"declaration":{"identifier":"nFanSup","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typFanSup","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"0"}}],"else_expression":{"simple_expression":"1"}}}}}}}]}},"description":{"description_string":"Number of supply fans","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typFanSup","Buildings.Templates.Components.Types.Fan.ArrayVariable"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Integer","component_list":[{"declaration":{"identifier":"nFanRet","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typFanRet","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"0"}}],"else_expression":{"simple_expression":"1"}}}}}}}]}},"description":{"description_string":"Number of return fans","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typFanRet","Buildings.Templates.Components.Types.Fan.ArrayVariable"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Integer","component_list":[{"declaration":{"identifier":"nFanRel","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typFanRel","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"0"}}],"else_expression":{"simple_expression":"1"}}}}}}}]}},"description":{"description_string":"Number of relief fans","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typFanRel","Buildings.Templates.Components.Types.Fan.ArrayVariable"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Boolean","component_list":[{"declaration":{"identifier":"have_souChiWat"},"description":{"description_string":"Set to true if cooling coil requires fluid ports on the source side","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Boolean","component_list":[{"declaration":{"identifier":"have_souHeaWat"},"description":{"description_string":"Set to true if heating coil requires fluid ports on the source side","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.AirHandlersFans.Types.Controller","component_list":[{"declaration":{"identifier":"typCtl"},"description":{"description_string":"Type of controller","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of configuration parameters for the class\n\nBuildings.Templates.AirHandlersFans.Interfaces.PartialAirHandler.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/Configuration/PartialAirHandler.mo","fullMoFilePath":"/dependencies/modelica-buildings/Buildings/Templates/AirHandlersFans/Configuration/PartialAirHandler.mo","checksum":"768b75dcf0b07f9b6f36546ced02cbdc"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Configuration/VAVMultiZone.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Configuration/VAVMultiZone.json new file mode 100644 index 00000000..d69f656e --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Configuration/VAVMultiZone.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates.AirHandlersFans.Configuration","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"VAVMultiZone","description_string":"Configuration parameters for multiple-zone VAV","composition":{"element_list":[{"extends_clause":{"name":"Buildings.Templates.AirHandlersFans.Configuration.PartialAirHandler"}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Coil","component_list":[{"declaration":{"identifier":"typCoiHeaPre"},"description":{"description_string":"Type of heating coil in preheat position","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Coil","component_list":[{"declaration":{"identifier":"typCoiCoo"},"description":{"description_string":"Type of cooling coil","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Coil","component_list":[{"declaration":{"identifier":"typCoiHeaReh"},"description":{"description_string":"Type of heating coil in reheat position","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Valve","component_list":[{"declaration":{"identifier":"typValCoiHeaPre"},"description":{"description_string":"Type of valve for heating coil in preheat position","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Valve","component_list":[{"declaration":{"identifier":"typValCoiCoo"},"description":{"description_string":"Type of valve for cooling coil","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Valve","component_list":[{"declaration":{"identifier":"typValCoiHeaReh"},"description":{"description_string":"Type of valve for heating coil in reheat position","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Damper","component_list":[{"declaration":{"identifier":"typDamOut"},"description":{"description_string":"Outdoor air damper type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Damper","component_list":[{"declaration":{"identifier":"typDamOutMin"},"description":{"description_string":"Minimum outdoor air damper type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Damper","component_list":[{"declaration":{"identifier":"typDamRel"},"description":{"description_string":"Relief damper type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Damper","component_list":[{"declaration":{"identifier":"typDamRet"},"description":{"description_string":"Return damper type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection","component_list":[{"declaration":{"identifier":"typSecOut"},"description":{"description_string":"Type of outdoor air section","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl","component_list":[{"declaration":{"identifier":"buiPreCon"},"description":{"description_string":"Type of building pressure control system","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard","component_list":[{"declaration":{"identifier":"stdVen"},"description":{"description_string":"Ventilation standard","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentPrefixes","modification":{"equal":true,"expression":{"simple_expression":"\"parameter\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"cfg\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of configuration parameters for the class\n\nBuildings.Templates.AirHandlersFans.VAVMultiZone.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/Configuration/VAVMultiZone.mo","fullMoFilePath":"/dependencies/modelica-buildings/Buildings/Templates/AirHandlersFans/Configuration/VAVMultiZone.mo","checksum":"2272145067a3c30793d9bed566db428d"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Configuration/package.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Configuration/package.json new file mode 100644 index 00000000..df855ec2 --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Configuration/package.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates.AirHandlersFans","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"Configuration","description_string":"Records for configuration parameters","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.MaterialPropertiesPackage"}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package provides records for configuration parameters.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/Configuration/package.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/AirHandlersFans/Configuration/package.mo","checksum":"47796d3db1c1cf6609e330ecd17c7d70","order":["PartialAirHandler","VAVMultiZone"]} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Data/PartialAirHandler.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Data/PartialAirHandler.json new file mode 100644 index 00000000..fc176bc6 --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Data/PartialAirHandler.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates.AirHandlersFans.Data","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"PartialAirHandler","description_string":"Record for air handler interface class","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Record"}},{"replaceable":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.AirHandlersFans.Configuration.PartialAirHandler","component_list":[{"declaration":{"identifier":"cfg"},"description":{"description_string":"Configuration parameters","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"String","component_list":[{"declaration":{"identifier":"id","modification":{"equal":true,"expression":{"simple_expression":"\"\""}}},"description":{"description_string":"System tag","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"tab","modification":{"equal":true,"expression":{"simple_expression":"\"Advanced\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"String","component_list":[{"declaration":{"identifier":"id_souChiWat","modification":{"equal":true,"expression":{"simple_expression":"\"\""}}},"description":{"description_string":"CHW supply system tag","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"tab","modification":{"equal":true,"expression":{"simple_expression":"\"Advanced\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"cfg.have_souChiWat"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"String","component_list":[{"declaration":{"identifier":"id_souHeaWat","modification":{"equal":true,"expression":{"simple_expression":"\"\""}}},"description":{"description_string":"HHW supply system tag","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"tab","modification":{"equal":true,"expression":{"simple_expression":"\"Advanced\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"cfg.have_souHeaWat"}}}}}]}}}}]}}]}},{"replaceable":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.AirHandlersFans.Components.Data.PartialController","component_list":[{"declaration":{"identifier":"ctl","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typFanSup","modification":{"equal":true,"expression":{"simple_expression":"cfg.typFanSup"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typFanRel","modification":{"equal":true,"expression":{"simple_expression":"cfg.typFanRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typFanRet","modification":{"equal":true,"expression":{"simple_expression":"cfg.typFanRet"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"cfg.typCtl"}}}}}]}},"description":{"description_string":"Controller","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Controls\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"mAirSup_flow_nominal"},"description":{"description_string":"Supply air mass flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["cfg.typ","Buildings.Templates.AirHandlersFans.Types.Configuration.ExhaustOnly"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"mAirRet_flow_nominal"},"description":{"description_string":"Return air mass flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["cfg.typ","Buildings.Templates.AirHandlersFans.Types.Configuration.SupplyOnly"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of sizing and operating parameters for the class\n\nBuildings.Templates.AirHandlersFans.Interfaces.PartialAirHandler.\n

\n

\nThe tab Advanced contains some optional parameters that can be used \nfor workflow automation, but are not used for simulation.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/Data/PartialAirHandler.mo","fullMoFilePath":"/dependencies/modelica-buildings/Buildings/Templates/AirHandlersFans/Data/PartialAirHandler.mo","checksum":"8592adcfbf631eea2b8b202832614536"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Data/VAVMultiZone.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Data/VAVMultiZone.json new file mode 100644 index 00000000..df1a8d45 --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Data/VAVMultiZone.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates.AirHandlersFans.Data","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"VAVMultiZone","description_string":"Record for multiple-zone VAV","composition":{"element_list":[{"extends_clause":{"name":"Buildings.Templates.AirHandlersFans.Data.PartialAirHandler","class_modification":[{"element_redeclaration":{"component_clause1":{"type_specifier":"Buildings.Templates.AirHandlersFans.Configuration.VAVMultiZone","component_declaration1":{"declaration":{"identifier":"cfg"}}}}},{"element_redeclaration":{"component_clause1":{"type_specifier":"Buildings.Templates.AirHandlersFans.Components.Data.VAVMultiZoneController","component_declaration1":{"declaration":{"identifier":"ctl","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typSecOut","modification":{"equal":true,"expression":{"simple_expression":"cfg.typSecOut"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"buiPreCon","modification":{"equal":true,"expression":{"simple_expression":"cfg.buiPreCon"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"stdVen","modification":{"equal":true,"expression":{"simple_expression":"cfg.stdVen"}}}}}]}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"mAirSup_flow_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["cfg.typFanSup","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":"fanSup.m_flow_nominal"}}],"else_expression":{"simple_expression":"0"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"mAirRet_flow_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["cfg.typFanRet","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":"fanRet.m_flow_nominal"}},{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["cfg.typFanRel","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":"fanRel.m_flow_nominal"}},{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["cfg.typFanSup","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":"fanSup.m_flow_nominal"}}],"else_expression":{"simple_expression":"0"}}}}}}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Data.Fan","component_list":[{"declaration":{"identifier":"fanSup","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"cfg.typFanSup"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFan","modification":{"equal":true,"expression":{"simple_expression":"cfg.nFanSup"}}}}}]}},"description":{"description_string":"Supply fan","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Fans\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["cfg.typFanSup","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"extends_clause":{"name":"Buildings.Templates.AirHandlersFans.Components.Data.OutdoorReliefReturnSection","class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typDamOut","modification":{"equal":true,"expression":{"simple_expression":"cfg.typDamOut"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typDamOutMin","modification":{"equal":true,"expression":{"simple_expression":"cfg.typDamOutMin"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typDamRel","modification":{"equal":true,"expression":{"simple_expression":"cfg.typDamRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typDamRet","modification":{"equal":true,"expression":{"simple_expression":"cfg.typDamRet"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typFanRel","modification":{"equal":true,"expression":{"simple_expression":"cfg.typFanRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typFanRet","modification":{"equal":true,"expression":{"simple_expression":"cfg.typFanRet"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFanRel","modification":{"equal":true,"expression":{"simple_expression":"cfg.nFanRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFanRet","modification":{"equal":true,"expression":{"simple_expression":"cfg.nFanRet"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"fanRel"}}},{"element_modification_or_replaceable":{"element_modification":{"name":"fanRet"}}},{"element_modification_or_replaceable":{"element_modification":{"name":"damOut","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"m_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mAirSup_flow_nominal"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"damOutMin","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"m_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mOutMin_flow_nominal"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"damRel","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"m_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mAirRet_flow_nominal"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"damRet","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"m_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mAirRet_flow_nominal"}}}}}]}}}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Data.Coil","component_list":[{"declaration":{"identifier":"coiHeaPre","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"cfg.typCoiHeaPre"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typVal","modification":{"equal":true,"expression":{"simple_expression":"cfg.typValCoiHeaPre"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_sou","modification":{"equal":true,"expression":{"simple_expression":"cfg.have_souHeaWat"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"mAir_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mAirSup_flow_nominal"}}}}}]}},"description":{"description_string":"Heating coil in preheat position","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Coils\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["cfg.typCoiHeaPre","Buildings.Templates.Components.Types.Coil.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Data.Coil","component_list":[{"declaration":{"identifier":"coiCoo","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"cfg.typCoiCoo"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typVal","modification":{"equal":true,"expression":{"simple_expression":"cfg.typValCoiCoo"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_sou","modification":{"equal":true,"expression":{"simple_expression":"cfg.have_souChiWat"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"mAir_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mAirSup_flow_nominal"}}}}}]}},"description":{"description_string":"Cooling coil","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Coils\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["cfg.typCoiCoo","Buildings.Templates.Components.Types.Coil.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Data.Coil","component_list":[{"declaration":{"identifier":"coiHeaReh","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"cfg.typCoiHeaReh"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typVal","modification":{"equal":true,"expression":{"simple_expression":"cfg.typValCoiHeaReh"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_sou","modification":{"equal":true,"expression":{"simple_expression":"cfg.have_souHeaWat"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"mAir_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mAirSup_flow_nominal"}}}}}]}},"description":{"description_string":"Heating coil in reheat position","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Coils\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["cfg.typCoiHeaReh","Buildings.Templates.Components.Types.Coil.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentPrefixes","modification":{"equal":true,"expression":{"simple_expression":"\"parameter\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"dat\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of sizing and operating parameters for the class\n\nBuildings.Templates.AirHandlersFans.VAVMultiZone.\n

\n

\nThe tab Advanced contains some optional parameters that can be used \nfor workflow automation, but are not used for simulation.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/Data/VAVMultiZone.mo","fullMoFilePath":"/dependencies/modelica-buildings/Buildings/Templates/AirHandlersFans/Data/VAVMultiZone.mo","checksum":"b00b5ece0db1961cb0670fd2029e4115"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Data/package.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Data/package.json new file mode 100644 index 00000000..4967889f --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Data/package.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates.AirHandlersFans","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"Data","description_string":"Records for design and operating parameters","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.MaterialPropertiesPackage"}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package provides records for design and operating parameters.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/Data/package.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/AirHandlersFans/Data/package.mo","checksum":"7adc0970f29eec67d4dc50361e7107c7","order":["PartialAirHandler","VAVMultiZone"]} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Types.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Types.json new file mode 100644 index 00000000..444f2ef4 --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Types.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates.AirHandlersFans","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"Types","description_string":"Package with type definitions","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.TypesPackage"}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"Configuration","value":{"description":{"description_string":"Enumeration to configure the AHU"},"enum_list":[{"identifier":"SupplyOnly","description":{"description_string":"Supply only system"}},{"identifier":"ExhaustOnly","description":{"description_string":"Exhaust only system"}},{"identifier":"DualDuct","description":{"description_string":"Dual duct system with supply and return"}},{"identifier":"SingleDuct","description":{"description_string":"Single duct system with supply and return"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"Controller","value":{"description":{"description_string":"Enumeration to configure the AHU controller"},"enum_list":[{"identifier":"G36VAVMultiZone","description":{"description_string":"Guideline 36 controller for multiple-zone VAV"}},{"identifier":"OpenLoop","description":{"description_string":"Open loop controller"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"ControlFanReturn","value":{"description":{"description_string":"Enumeration to configure the return fan control"},"enum_list":[{"identifier":"AirflowMeasured","description":{"description_string":"Airflow tracking with airflow measurement stations"}},{"identifier":"BuildingPressure","description":{"description_string":"Building pressure (via discharge static pressure)"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"HeatRecovery","value":{"description":{"description_string":"Enumeration to configure the heat recovery"},"enum_list":[{"identifier":"None","description":{"description_string":"No heat recovery"}},{"identifier":"FlatPlate","description":{"description_string":"Flat plate heat exchanger"}},{"identifier":"EnthalpyWheel","description":{"description_string":"Enthalpy wheel"}},{"identifier":"RunAroundCoil","description":{"description_string":"Run-around coil"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"OutdoorReliefReturnSection","value":{"description":{"description_string":"Enumeration to configure the outdoor/relief/return air section"},"enum_list":[{"identifier":"HundredPctOutdoorAir","description":{"description_string":"100 % outdoor air system"}},{"identifier":"MixedAirWithDamper","description":{"description_string":"Mixed air system with return air damper - Optional economizer function"}},{"identifier":"MixedAirNoDamper","description":{"description_string":"Mixed air system without return air damper - No economizer function"}},{"identifier":"MixedAirNoRelief","description":{"description_string":"Mixed air system without relief branch - Optional economizer function"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"ReliefReturnSection","value":{"description":{"description_string":"Enumeration to configure the relief/return air section"},"enum_list":[{"identifier":"NoRelief","description":{"description_string":"No relief branch"}},{"identifier":"NoReturn","description":{"description_string":"No return branch"}},{"identifier":"ReliefDamper","description":{"description_string":"Modulating relief damper without fan"}},{"identifier":"ReliefFan","description":{"description_string":"Relief fan with two-position relief damper"}},{"identifier":"ReturnFan","description":{"description_string":"Return fan with modulating relief damper"}}]}}}}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package contains type definitions.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/Types.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/AirHandlersFans/Types.mo","checksum":"166b505954a94b96fd9c014cabebb043"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/VAVMultiZone.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/VAVMultiZone.json new file mode 100644 index 00000000..c0bcca8c --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/VAVMultiZone.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates.AirHandlersFans","stored_class_definitions":[{"class_prefixes":"model","class_specifier":{"long_class_specifier":{"identifier":"VAVMultiZone","description_string":"Multiple-zone VAV","composition":{"element_list":[{"extends_clause":{"name":"Buildings.Templates.AirHandlersFans.Interfaces.PartialAirHandler","class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"nZon","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"2"}}}}}]}}}},{"element_redeclaration":{"final":true,"component_clause1":{"type_specifier":"Buildings.Templates.AirHandlersFans.Configuration.VAVMultiZone","component_declaration1":{"declaration":{"identifier":"cfg","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFanSup","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["fanSupDra.typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":"fanSupDra.nFan"}},{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["fanSupBlo.typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":"fanSupBlo.nFan"}}],"else_expression":{"simple_expression":"0"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFanRet","modification":{"equal":true,"expression":{"simple_expression":"secOutRel.nFanRet"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFanRel","modification":{"equal":true,"expression":{"simple_expression":"secOutRel.nFanRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typCoiHeaPre","modification":{"equal":true,"expression":{"simple_expression":"coiHeaPre.typ"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typCoiCoo","modification":{"equal":true,"expression":{"simple_expression":"coiCoo.typ"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typCoiHeaReh","modification":{"equal":true,"expression":{"simple_expression":"coiHeaReh.typ"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typValCoiHeaPre","modification":{"equal":true,"expression":{"simple_expression":"coiHeaPre.typVal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typValCoiCoo","modification":{"equal":true,"expression":{"simple_expression":"coiCoo.typVal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typValCoiHeaReh","modification":{"equal":true,"expression":{"simple_expression":"coiHeaReh.typVal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typDamOut","modification":{"equal":true,"expression":{"simple_expression":"secOutRel.typDamOut"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typDamOutMin","modification":{"equal":true,"expression":{"simple_expression":"secOutRel.typDamOutMin"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typDamRet","modification":{"equal":true,"expression":{"simple_expression":"secOutRel.typDamRet"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typDamRel","modification":{"equal":true,"expression":{"simple_expression":"secOutRel.typDamRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typSecOut","modification":{"equal":true,"expression":{"simple_expression":"secOutRel.typSecOut"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typCtl","modification":{"equal":true,"expression":{"simple_expression":"ctl.typ"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"buiPreCon","modification":{"equal":true,"expression":{"simple_expression":"ctl.buiPreCon"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"stdVen","modification":{"equal":true,"expression":{"simple_expression":"ctl.stdVen"}}}}}]}}}}}},{"element_redeclaration":{"component_clause1":{"type_specifier":"Buildings.Templates.AirHandlersFans.Data.VAVMultiZone","component_declaration1":{"declaration":{"identifier":"dat"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.AirHandlersFans.Types.Configuration.SingleDuct"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_porRel","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["secOutRel.typ","Types.OutdoorReliefReturnSection.MixedAirNoRelief"],"relation_operator":"<>"}]}]}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_souChiWat","modification":{"equal":true,"expression":{"simple_expression":"coiCoo.have_sou"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_souHeaWat","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["coiHeaPre.have_sou"]}]},{"logical_and":[{"arithmetic_expressions":["coiHeaReh.have_sou"]}]}]}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typFanSup","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["fanSupDra.typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":"fanSupDra.typ"}},{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["fanSupBlo.typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":"fanSupBlo.typ"}}],"else_expression":{"simple_expression":"Buildings.Templates.Components.Types.Fan.None"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typFanRel","modification":{"equal":true,"expression":{"simple_expression":"secOutRel.typFanRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typFanRet","modification":{"equal":true,"expression":{"simple_expression":"secOutRel.typFanRet"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFanSup","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["fanSupDra.typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":"fanSupDra.nFan"}},{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["fanSupBlo.typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":"fanSupBlo.nFan"}}],"else_expression":{"simple_expression":"0"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFanRel","modification":{"equal":true,"expression":{"simple_expression":"secOutRel.nFanRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFanRet","modification":{"equal":true,"expression":{"simple_expression":"secOutRel.nFanRet"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"mChiWat_flow_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"coiCoo.have_sou"},"then":{"simple_expression":"dat.coiCoo.mWat_flow_nominal"}}],"else_expression":{"simple_expression":"0"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"mHeaWat_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":{"addOps":["+"],"terms":[{"factors":[{"primary1":[{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"coiHeaPre.have_sou"},"then":{"simple_expression":"dat.coiHeaPre.mWat_flow_nominal"}}],"else_expression":{"simple_expression":"0"}}}]}]},{"factors":[{"primary1":[{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"coiHeaReh.have_sou"},"then":{"simple_expression":"dat.coiHeaReh.mWat_flow_nominal"}}],"else_expression":{"simple_expression":"0"}}}]}]}]}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"QChiWat_flow_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"coiCoo.have_sou"},"then":{"simple_expression":"dat.coiCoo.Q_flow_nominal"}}],"else_expression":{"simple_expression":"0"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"QHeaWat_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":{"addOps":["+"],"terms":[{"factors":[{"primary1":[{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"coiHeaPre.have_sou"},"then":{"simple_expression":"dat.coiHeaPre.Q_flow_nominal"}}],"else_expression":{"simple_expression":"0"}}}]}]},{"factors":[{"primary1":[{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"coiHeaReh.have_sou"},"then":{"simple_expression":"dat.coiHeaReh.Q_flow_nominal"}}],"else_expression":{"simple_expression":"0"}}}]}]}]}}}}}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Boolean","component_list":[{"declaration":{"identifier":"have_senPreBui","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["secOutRel.typSecRel","Buildings.Templates.AirHandlersFans.Types.ReliefReturnSection.ReliefDamper"],"relation_operator":"=="}]},{"logical_and":[{"arithmetic_expressions":["secOutRel.typSecRel","Buildings.Templates.AirHandlersFans.Types.ReliefReturnSection.ReliefFan"],"relation_operator":"=="}]},{"logical_and":[{"arithmetic_expressions":["secOutRel.typSecRel","Buildings.Templates.AirHandlersFans.Types.ReliefReturnSection.ReturnFan"],"relation_operator":"=="},{"arithmetic_expressions":["secOutRel.typCtlFanRet","Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.BuildingPressure"],"relation_operator":"=="}]}]}}}}},"description":{"description_string":"Set to true if building static pressure sensor is used","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}}]}}}}]}}]}},{"inner":true,"replaceable":true,"component_clause":{"type_specifier":"Buildings.Templates.AirHandlersFans.Components.OutdoorReliefReturnSection.MixedAirWithDamper","component_list":[{"declaration":{"identifier":"secOutRel","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"MediumAir","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typCtlFanRet","modification":{"equal":true,"expression":{"simple_expression":"ctl.typCtlFanRet"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typCtlEco","modification":{"equal":true,"expression":{"simple_expression":"ctl.typCtlEco"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"energyDynamics","modification":{"equal":true,"expression":{"simple_expression":"energyDynamics"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversal","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalAir"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"dat","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"mOutMin_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"dat.mOutMin_flow_nominal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"damOut","modification":{"equal":true,"expression":{"simple_expression":"dat.damOut"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"damOutMin","modification":{"equal":true,"expression":{"simple_expression":"dat.damOutMin"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"damRel","modification":{"equal":true,"expression":{"simple_expression":"dat.damRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"damRet","modification":{"equal":true,"expression":{"simple_expression":"dat.damRet"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"fanRel","modification":{"equal":true,"expression":{"simple_expression":"dat.fanRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"fanRet","modification":{"equal":true,"expression":{"simple_expression":"dat.fanRet"}}}}}]}}}}]}},"description":{"description_string":"Outdoor/relief/return air section","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-280,"y":-220},{"x":-120,"y":-60}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Templates.Components.Sensors.Temperature","component_list":[{"declaration":{"identifier":"TAirMix","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_sen","modification":{"equal":true,"expression":{"simple_expression":"ctl.use_TMix"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Components.Types.SensorTemperature.Averaging"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"m_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mAirSup_flow_nominal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversal","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalAir"}}}}}]}},"description":{"description_string":"Mixed air temperature sensor","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-110,"y":-210},{"x":-90,"y":-190}]}}}}}]}}]}},{"inner":true,"replaceable":true,"constraining_clause":{"name":"Buildings.Templates.Components.Interfaces.PartialFan","class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"energyDynamics","modification":{"equal":true,"expression":{"simple_expression":"energyDynamics"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversal","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"dat","modification":{"equal":true,"expression":{"simple_expression":"dat.fanSup"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_senFlo","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["ctl.typCtlFanRet","Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.AirflowMeasured"],"relation_operator":"=="}]}]}}}}}}}]},"component_clause":{"type_specifier":"Buildings.Templates.Components.Fans.None","component_list":[{"declaration":{"identifier":"fanSupBlo"}}]},"description":{"description_string":"Supply fan - Blow through","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"choices","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Fans.None","component_declaration1":{"declaration":{"identifier":"fanSupBlo"},"description":{"description_string":"No fan"}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Fans.SingleVariable","component_declaration1":{"declaration":{"identifier":"fanSupBlo"},"description":{"description_string":"Single fan - Variable speed"}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Fans.ArrayVariable","component_declaration1":{"declaration":{"identifier":"fanSupBlo"},"description":{"description_string":"Fan array - Variable speed"}}}}}}]}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["fanSupDra.typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"=="}]}]}}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-50,"y":-210},{"x":-30,"y":-190}]}}}}}]}},{"component_clause":{"type_specifier":"Buildings.Templates.Components.Sensors.Temperature","component_list":[{"declaration":{"identifier":"TAirCoiHeaLvg","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_sen","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["coiHeaPre.typ","Buildings.Templates.Components.Types.Coil.None"],"relation_operator":"<>"},{"arithmetic_expressions":["coiCoo.typ","Buildings.Templates.Components.Types.Coil.None"],"relation_operator":"<>"}]}]}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Components.Types.SensorTemperature.Averaging"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"m_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mAirSup_flow_nominal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversal","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalAir"}}}}}]}},"description":{"description_string":"Heating coil leaving air temperature sensor","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":40,"y":-210},{"x":60,"y":-190}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Templates.Components.Sensors.Temperature","component_list":[{"declaration":{"identifier":"TAirCoiCooLvg","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_sen","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["coiCoo.typ","Buildings.Templates.Components.Types.Coil.None"],"relation_operator":"<>"},{"arithmetic_expressions":["coiHeaReh.typ","Buildings.Templates.Components.Types.Coil.None"],"relation_operator":"<>"}]}]}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Components.Types.SensorTemperature.Averaging"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"m_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mAirSup_flow_nominal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversal","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalAir"}}}}}]}},"description":{"description_string":"Cooling coil leaving air temperature sensor","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-210},{"x":120,"y":-190}]}}}}}]}}]}},{"inner":true,"replaceable":true,"constraining_clause":{"name":"Buildings.Templates.Components.Interfaces.PartialFan","class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"energyDynamics","modification":{"equal":true,"expression":{"simple_expression":"energyDynamics"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversal","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"dat","modification":{"equal":true,"expression":{"simple_expression":"dat.fanSup"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_senFlo","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["ctl.typCtlFanRet","Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.AirflowMeasured"],"relation_operator":"=="}]}]}}}}}}}]},"component_clause":{"type_specifier":"Buildings.Templates.Components.Fans.SingleVariable","component_list":[{"declaration":{"identifier":"fanSupDra"}}]},"description":{"description_string":"Supply fan - Draw through","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"choices","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Fans.None","component_declaration1":{"declaration":{"identifier":"fanSupDra"},"description":{"description_string":"No fan"}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Fans.SingleVariable","component_declaration1":{"declaration":{"identifier":"fanSupDra"},"description":{"description_string":"Single fan - Variable speed"}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Fans.ArrayVariable","component_declaration1":{"declaration":{"identifier":"fanSupDra"},"description":{"description_string":"Fan array - Variable speed"}}}}}}]}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["fanSupBlo.typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"=="}]}]}}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":172,"y":-210},{"x":192,"y":-190}]}}}}}]}},{"component_clause":{"type_specifier":"Buildings.Templates.Components.Sensors.Temperature","component_list":[{"declaration":{"identifier":"TAirSup","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_sen","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Components.Types.SensorTemperature.Standard"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"m_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mAirSup_flow_nominal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversal","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalAir"}}}}}]}},"description":{"description_string":"Supply air temperature sensor","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":210,"y":-210},{"x":230,"y":-190}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Templates.Components.Sensors.DifferentialPressure","component_list":[{"declaration":{"identifier":"pBui_rel","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_sen","modification":{"equal":true,"expression":{"simple_expression":"have_senPreBui"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"text_flip","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}},"description":{"description_string":"Building static pressure","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":10,"y":30},{"x":-10,"y":50}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Fluid.Sources.Outside","component_list":[{"declaration":{"identifier":"out","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nPorts","modification":{"equal":true,"expression":{"simple_expression":"3"}}}}}]}},"description":{"description_string":"Outdoor conditions","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"origin":{"x":-40,"y":90},"extent":[{"x":-10,"y":-10},{"x":10,"y":10}],"rotation":-90}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Fluid.Sources.Boundary_pT","component_list":[{"declaration":{"identifier":"bui","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"use_p_in","modification":{"equal":true,"expression":{"simple_expression":"have_senPreBui"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nPorts","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}}]}},"description":{"description_string":"Building absolute pressure in representative space","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"origin":{"x":40,"y":60},"extent":[{"x":-10,"y":-10},{"x":10,"y":10}],"rotation":-90}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Templates.Components.Sensors.Temperature","component_list":[{"declaration":{"identifier":"TAirRet","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversal","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_sen","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["secOutRel.have_eco"]},{"arithmetic_expressions":[{"terms":[{"factors":[{"primary1":[{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["ctl.typCtlEco","Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialDryBulb"],"relation_operator":"=="}]},{"logical_and":[{"arithmetic_expressions":["ctl.typCtlEco","Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedDryBulbWithDifferentialDryBulb"],"relation_operator":"=="}]}]}}}]}]}]}]}]}]}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Components.Types.SensorTemperature.Standard"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"m_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mAirRet_flow_nominal"}}}}}]}},"description":{"description_string":"Return air temperature sensor","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":220,"y":-90},{"x":200,"y":-70}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Templates.Components.Sensors.SpecificEnthalpy","component_list":[{"declaration":{"identifier":"hAirRet","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversal","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_sen","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["secOutRel.have_eco"]},{"arithmetic_expressions":["ctl.typCtlEco","Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialEnthalpyWithFixedDryBulb"],"relation_operator":"=="}]}]}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"m_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mAirRet_flow_nominal"}}}}}]}},"description":{"description_string":"Return air enthalpy sensor","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":250,"y":-90},{"x":230,"y":-70}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Templates.Components.Sensors.DifferentialPressure","component_list":[{"declaration":{"identifier":"pAirSup_rel","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_sen","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}},"description":{"description_string":"Duct static pressure sensor","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":250,"y":-230},{"x":270,"y":-210}]}}}}}]}}]}},{"inner":true,"replaceable":true,"constraining_clause":{"name":"Buildings.Templates.Components.Interfaces.PartialCoil","class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"dat","modification":{"equal":true,"expression":{"simple_expression":"dat.coiHeaPre"}}}}},{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"MediumAir","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"energyDynamics","modification":{"equal":true,"expression":{"simple_expression":"energyDynamics"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversalAir","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversalLiq","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalLiq"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"show_T","modification":{"equal":true,"expression":{"simple_expression":"show_T"}}}}}]},"component_clause":{"type_specifier":"Buildings.Templates.Components.Coils.WaterBasedHeating","component_list":[{"declaration":{"identifier":"coiHeaPre","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"MediumHeaWat","value":{"name":"MediumHeaWat"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typVal","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Components.Types.Valve.TwoWayModulating"}}}}}]}}}]},"description":{"description_string":"Heating coil in preheat position","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"choices","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Coils.None","component_declaration1":{"declaration":{"identifier":"coiHeaPre"},"description":{"description_string":"No coil"}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Coils.WaterBasedHeating","component_declaration1":{"declaration":{"identifier":"coiHeaPre","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"MediumHeaWat","value":{"name":"MediumHeaWat"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typVal","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Components.Types.Valve.TwoWayModulating"}}}}}]}},"description":{"description_string":"Hot water coil with two-way valve"}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Coils.ElectricHeating","component_declaration1":{"declaration":{"identifier":"coiHeaPre"},"description":{"description_string":"Modulating electric heating coil"}}}}}}]}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["coiHeaReh.typ","Buildings.Templates.Components.Types.Coil.None"],"relation_operator":"=="}]}]}}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":10,"y":-210},{"x":30,"y":-190}]}}}}}]}},{"inner":true,"replaceable":true,"constraining_clause":{"name":"Buildings.Templates.Components.Interfaces.PartialCoil","class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"dat","modification":{"equal":true,"expression":{"simple_expression":"dat.coiCoo"}}}}},{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"MediumAir","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"energyDynamics","modification":{"equal":true,"expression":{"simple_expression":"energyDynamics"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversalAir","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversalLiq","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalLiq"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"show_T","modification":{"equal":true,"expression":{"simple_expression":"show_T"}}}}}]},"component_clause":{"type_specifier":"Buildings.Templates.Components.Coils.WaterBasedCooling","component_list":[{"declaration":{"identifier":"coiCoo","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"MediumChiWat","value":{"name":"MediumChiWat"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typVal","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Components.Types.Valve.TwoWayModulating"}}}}}]}}}]},"description":{"description_string":"Cooling coil","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"choices","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Coils.None","component_declaration1":{"declaration":{"identifier":"coiCoo"},"description":{"description_string":"No coil"}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Coils.WaterBasedCooling","component_declaration1":{"declaration":{"identifier":"coiCoo","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"MediumChiWat","value":{"name":"MediumChiWat"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typVal","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Components.Types.Valve.TwoWayModulating"}}}}}]}},"description":{"description_string":"Chilled water coil with two-way valve"}}}}}}]}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":70,"y":-210},{"x":90,"y":-190}]}}}}}]}},{"inner":true,"replaceable":true,"constraining_clause":{"name":"Buildings.Templates.Components.Interfaces.PartialCoil","class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"dat","modification":{"equal":true,"expression":{"simple_expression":"dat.coiHeaReh"}}}}},{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"MediumAir","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"energyDynamics","modification":{"equal":true,"expression":{"simple_expression":"energyDynamics"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversalAir","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversalLiq","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalLiq"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"show_T","modification":{"equal":true,"expression":{"simple_expression":"show_T"}}}}}]},"component_clause":{"type_specifier":"Buildings.Templates.Components.Coils.None","component_list":[{"declaration":{"identifier":"coiHeaReh"}}]},"description":{"description_string":"Heating coil in reheat position","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"choices","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Coils.None","component_declaration1":{"declaration":{"identifier":"coiHeaReh"},"description":{"description_string":"No coil"}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Coils.WaterBasedHeating","component_declaration1":{"declaration":{"identifier":"coiHeaReh","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"MediumHeaWat","value":{"name":"MediumHeaWat"}}}}}]}},"description":{"description_string":"Hot water coil"}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Coils.ElectricHeating","component_declaration1":{"declaration":{"identifier":"coiHeaReh"},"description":{"description_string":"Modulating electric heating coil"}}}}}}]}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["coiHeaPre.typ","Buildings.Templates.Components.Types.Coil.None"],"relation_operator":"=="},{"arithmetic_expressions":["ctl.typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"<>"}]}]}}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":130,"y":-210},{"x":150,"y":-190}]}}}}}]}},{"component_clause":{"type_specifier":"Buildings.Fluid.FixedResistances.Junction","component_list":[{"declaration":{"identifier":"junHeaWatSup","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumHeaWat"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"m_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mHeaWat_flow_nominal*{1,-1,-1}"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"energyDynamics","modification":{"equal":true,"expression":{"simple_expression":"Modelica.Fluid.Types.Dynamics.FixedInitial"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"dp_nominal","modification":{"equal":true,"expression":{"simple_expression":{"function_call":{"name":"fill","arguments":[{"name":"0"},{"name":"3"}]}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"portFlowDirection_1","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"allowFlowReversalLiq"},"then":{"simple_expression":"Modelica.Fluid.Types.PortFlowDirection.Bidirectional"}}],"else_expression":{"simple_expression":"Modelica.Fluid.Types.PortFlowDirection.Entering"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"portFlowDirection_2","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"allowFlowReversalLiq"},"then":{"simple_expression":"Modelica.Fluid.Types.PortFlowDirection.Bidirectional"}}],"else_expression":{"simple_expression":"Modelica.Fluid.Types.PortFlowDirection.Leaving"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"portFlowDirection_3","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"allowFlowReversalLiq"},"then":{"simple_expression":"Modelica.Fluid.Types.PortFlowDirection.Bidirectional"}}],"else_expression":{"simple_expression":"Modelica.Fluid.Types.PortFlowDirection.Leaving"}}}}}}}]}},"condition_attribute":{"expression":{"simple_expression":"have_souHeaWat"}},"description":{"description_string":"HHW supply junction","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"origin":{"x":20,"y":-260},"extent":[{"x":-10,"y":-10},{"x":10,"y":10}],"rotation":90}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Fluid.FixedResistances.Junction","component_list":[{"declaration":{"identifier":"junHeaWatRet","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumHeaWat"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"m_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mHeaWat_flow_nominal*{1,-1,1}"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"energyDynamics","modification":{"equal":true,"expression":{"simple_expression":"Modelica.Fluid.Types.Dynamics.FixedInitial"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"dp_nominal","modification":{"equal":true,"expression":{"simple_expression":{"function_call":{"name":"fill","arguments":[{"name":"0"},{"name":"3"}]}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"portFlowDirection_1","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"allowFlowReversalLiq"},"then":{"simple_expression":"Modelica.Fluid.Types.PortFlowDirection.Bidirectional"}}],"else_expression":{"simple_expression":"Modelica.Fluid.Types.PortFlowDirection.Entering"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"portFlowDirection_2","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"allowFlowReversalLiq"},"then":{"simple_expression":"Modelica.Fluid.Types.PortFlowDirection.Bidirectional"}}],"else_expression":{"simple_expression":"Modelica.Fluid.Types.PortFlowDirection.Entering"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"portFlowDirection_3","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"allowFlowReversalLiq"},"then":{"simple_expression":"Modelica.Fluid.Types.PortFlowDirection.Bidirectional"}}],"else_expression":{"simple_expression":"Modelica.Fluid.Types.PortFlowDirection.Leaving"}}}}}}}]}},"condition_attribute":{"expression":{"simple_expression":"have_souHeaWat"}},"description":{"description_string":"HHW return junction","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"origin":{"x":-20,"y":-240},"extent":[{"x":10,"y":-10},{"x":-10,"y":10}],"rotation":90}}}}}]}}]}},{"inner":true,"replaceable":true,"constraining_clause":{"name":"Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialControllerVAVMultizone","class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"dat","modification":{"equal":true,"expression":{"simple_expression":"dat.ctl"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nZon","modification":{"equal":true,"expression":{"simple_expression":"nZon"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typFanSup","modification":{"equal":true,"expression":{"simple_expression":"typFanSup"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typFanRel","modification":{"equal":true,"expression":{"simple_expression":"typFanRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typFanRet","modification":{"equal":true,"expression":{"simple_expression":"typFanRet"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFanSup","modification":{"equal":true,"expression":{"simple_expression":"nFanSup"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFanRel","modification":{"equal":true,"expression":{"simple_expression":"nFanRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFanRet","modification":{"equal":true,"expression":{"simple_expression":"nFanRet"}}}}}]},"component_clause":{"type_specifier":"Buildings.Templates.AirHandlersFans.Components.Controls.G36VAVMultiZone","component_list":[{"declaration":{"identifier":"ctl"}}]},"description":{"description_string":"Control selections","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Controls\""}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-220,"y":-10},{"x":-200,"y":10}]}}}}}]}}],"element_sections":[{"equation_section":{"initial":true,"equation":[{"function_call_equation":{"function_name":"assert","function_call_args":{"function_argument":{"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typFanSup","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}}},"function_arguments":{"function_argument":{"expression":{"simple_expression":"\"In \" +getInstanceName() +\": \" +\"The template is configured with no supply fan, which is not supported.\""}}}}}},{"function_call_equation":{"function_name":"assert","function_call_args":{"function_argument":{"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":[{"terms":[{"factors":[{"primary1":[{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["fanSupBlo.typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"},{"arithmetic_expressions":["fanSupDra.typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}}]}]}]}]}]}]}}}},"function_arguments":{"function_argument":{"expression":{"simple_expression":"\"In \" +getInstanceName() +\": \" +\"The template is configured with both a blow-through fan and a draw-through fan, which is not supported.\""}}}}}}]}},{"equation_section":{"equation":[{"connect_clause":{"from":[{"dot_op":false,"identifier":"TAirMix"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"TAirMix"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"TAirCoiHeaLvg"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"TAirCoiHeaLvg"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"TAirSup"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"TAirSup"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"pAirSup_rel"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"pAirSup_rel"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"hAirRet"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"hAirRet"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"TAirRet"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"TAirRet"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"fanSupDra"},{"dot_op":true},{"dot_op":false,"identifier":"bus"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"fanSup"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"fanSupBlo"},{"dot_op":true},{"dot_op":false,"identifier":"bus"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"fanSup"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"coiHeaPre"},{"dot_op":true},{"dot_op":false,"identifier":"bus"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"coiHea"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"coiCoo"},{"dot_op":true},{"dot_op":false,"identifier":"bus"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"coiCoo"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"coiHeaReh"},{"dot_op":true},{"dot_op":false,"identifier":"bus"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"coiHea"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"secOutRel"},{"dot_op":true},{"dot_op":false,"identifier":"bus"}],"to":[{"dot_op":false,"identifier":"bus"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"bui"},{"dot_op":true},{"dot_op":false,"identifier":"p_in"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"pBui"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"pBui_rel"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"pBui_rel"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"port_aChiWat"}],"to":[{"dot_op":false,"identifier":"coiCoo"},{"dot_op":true},{"dot_op":false,"identifier":"port_aSou"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":100,"y":-280},{"x":100,"y":-268},{"x":85,"y":-268},{"x":85,"y":-210}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"coiCoo"},{"dot_op":true},{"dot_op":false,"identifier":"port_bSou"}],"to":[{"dot_op":false,"identifier":"port_bChiWat"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":75,"y":-210},{"x":75,"y":-268},{"x":60,"y":-268},{"x":60,"y":-280}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"busWea"}],"to":[{"dot_op":false,"identifier":"coiCoo"},{"dot_op":true},{"dot_op":false,"identifier":"busWea"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":0,"y":280},{"x":0,"y":100},{"x":76,"y":100},{"x":76,"y":-190}],"color":{"r":255,"g":204,"b":51},"thickness":0.5}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"TAirMix"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}],"to":[{"dot_op":false,"identifier":"fanSupBlo"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-90,"y":-200},{"x":-50,"y":-200}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"coiHeaReh"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}],"to":[{"dot_op":false,"identifier":"fanSupDra"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":150,"y":-200},{"x":172,"y":-200}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"busWea"}],"to":[{"dot_op":false,"identifier":"out"},{"dot_op":true},{"dot_op":false,"identifier":"weaBus"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":0,"y":280},{"x":0,"y":100},{"x":-39.8,"y":100}],"color":{"r":255,"g":204,"b":51},"thickness":0.5}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"pBui_rel"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}],"to":[{"dot_op":false,"identifier":"out"},{"dot_op":true},{"dot_op":false,"identifier":"ports","array_subscripts":[{"expression":{"simple_expression":"1"}}]}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-10,"y":40},{"x":-40,"y":40},{"x":-40,"y":80},{"x":-41.3333,"y":80}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"bui"},{"dot_op":true},{"dot_op":false,"identifier":"ports","array_subscripts":[{"expression":{"simple_expression":"1"}}]}],"to":[{"dot_op":false,"identifier":"pBui_rel"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":40,"y":50},{"x":40,"y":40},{"x":10,"y":40}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"ctl"},{"dot_op":true},{"dot_op":false,"identifier":"busTer"}],"to":[{"dot_op":false,"identifier":"busTer"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-200,"y":0},{"x":300,"y":0}],"color":{"r":255,"g":204,"b":51},"thickness":0.5}}}},{"element_modification_or_replaceable":{"element_modification":{"Text":{"extent":[{"x":6,"y":3},{"x":6,"y":3}],"horizontalAlignment":"TextAlignment.Left","string":"\"%second\"","index":1}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"ctl"},{"dot_op":true},{"dot_op":false,"identifier":"bus"}],"to":[{"dot_op":false,"identifier":"bus"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-220,"y":0},{"x":-300,"y":0}],"color":{"r":255,"g":204,"b":51},"thickness":0.5}}}},{"element_modification_or_replaceable":{"element_modification":{"Text":{"extent":[{"x":-6,"y":3},{"x":-6,"y":3}],"horizontalAlignment":"TextAlignment.Right","string":"\"%second\"","index":1}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"port_Ret"}],"to":[{"dot_op":false,"identifier":"hAirRet"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":300,"y":-80},{"x":250,"y":-80}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"hAirRet"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}],"to":[{"dot_op":false,"identifier":"TAirRet"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":230,"y":-80},{"x":220,"y":-80}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"coiHeaPre"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}],"to":[{"dot_op":false,"identifier":"TAirCoiHeaLvg"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":30,"y":-200},{"x":40,"y":-200}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"TAirCoiHeaLvg"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}],"to":[{"dot_op":false,"identifier":"coiCoo"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":60,"y":-200},{"x":70,"y":-200}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"coiCoo"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}],"to":[{"dot_op":false,"identifier":"TAirCoiCooLvg"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":90,"y":-200},{"x":100,"y":-200}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"TAirCoiCooLvg"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}],"to":[{"dot_op":false,"identifier":"coiHeaReh"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":120,"y":-200},{"x":130,"y":-200}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"secOutRel"},{"dot_op":true},{"dot_op":false,"identifier":"port_Sup"}],"to":[{"dot_op":false,"identifier":"TAirMix"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":-200},{"x":-110,"y":-200}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"secOutRel"},{"dot_op":true},{"dot_op":false,"identifier":"port_bPre"}],"to":[{"dot_op":false,"identifier":"out"},{"dot_op":true},{"dot_op":false,"identifier":"ports","array_subscripts":[{"expression":{"simple_expression":"2"}}]}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-162,"y":-60},{"x":-162,"y":80},{"x":-40,"y":80}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"port_Rel"}],"to":[{"dot_op":false,"identifier":"secOutRel"},{"dot_op":true},{"dot_op":false,"identifier":"port_Rel"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-300,"y":-80},{"x":-280,"y":-80}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"port_Out"}],"to":[{"dot_op":false,"identifier":"secOutRel"},{"dot_op":true},{"dot_op":false,"identifier":"port_Out"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-300,"y":-200},{"x":-280,"y":-200}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"TAirSup"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}],"to":[{"dot_op":false,"identifier":"port_Sup"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":230,"y":-200},{"x":300,"y":-200}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"TAirSup"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}],"to":[{"dot_op":false,"identifier":"pAirSup_rel"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":230,"y":-200},{"x":240,"y":-200},{"x":240,"y":-220},{"x":250,"y":-220}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"fanSupDra"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}],"to":[{"dot_op":false,"identifier":"TAirSup"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":192,"y":-200},{"x":210,"y":-200}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"port_aHeaWat"}],"to":[{"dot_op":false,"identifier":"junHeaWatSup"},{"dot_op":true},{"dot_op":false,"identifier":"port_1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":20,"y":-280},{"x":20,"y":-270}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"port_bHeaWat"}],"to":[{"dot_op":false,"identifier":"junHeaWatRet"},{"dot_op":true},{"dot_op":false,"identifier":"port_2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-20,"y":-280},{"x":-20,"y":-250}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"junHeaWatSup"},{"dot_op":true},{"dot_op":false,"identifier":"port_3"}],"to":[{"dot_op":false,"identifier":"coiHeaReh"},{"dot_op":true},{"dot_op":false,"identifier":"port_aSou"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":30,"y":-260},{"x":145,"y":-260},{"x":145,"y":-210}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"coiHeaReh"},{"dot_op":true},{"dot_op":false,"identifier":"port_bSou"}],"to":[{"dot_op":false,"identifier":"junHeaWatRet"},{"dot_op":true},{"dot_op":false,"identifier":"port_3"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":135,"y":-210},{"x":135,"y":-240},{"x":-10,"y":-240}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"coiHeaPre"},{"dot_op":true},{"dot_op":false,"identifier":"port_bSou"}],"to":[{"dot_op":false,"identifier":"junHeaWatRet"},{"dot_op":true},{"dot_op":false,"identifier":"port_1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":15,"y":-210},{"x":15,"y":-220},{"x":-20,"y":-220},{"x":-20,"y":-230}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"junHeaWatSup"},{"dot_op":true},{"dot_op":false,"identifier":"port_2"}],"to":[{"dot_op":false,"identifier":"coiHeaPre"},{"dot_op":true},{"dot_op":false,"identifier":"port_aSou"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":20,"y":-250},{"x":20,"y":-220},{"x":25,"y":-220},{"x":25,"y":-210}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"out"},{"dot_op":true},{"dot_op":false,"identifier":"ports","array_subscripts":[{"expression":{"simple_expression":"3"}}]}],"to":[{"dot_op":false,"identifier":"pAirSup_rel"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-38.6667,"y":80},{"x":280,"y":80},{"x":280,"y":-220},{"x":270,"y":-220}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"secOutRel"},{"dot_op":true},{"dot_op":false,"identifier":"port_Ret"}],"to":[{"dot_op":false,"identifier":"TAirRet"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":-80.2},{"x":40,"y":-80.2},{"x":40,"y":-80},{"x":200,"y":-80}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"fanSupBlo"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}],"to":[{"dot_op":false,"identifier":"coiHeaPre"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-30,"y":-200},{"x":10,"y":-200}],"color":{"r":0,"g":127,"b":255}}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"__ctrlFlow","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"routing","modification":{"equal":true,"expression":{"simple_expression":"\"template\""}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"VAV\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Icon","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"coordinateSystem":{"preserveAspectRatio":"false"}}}},{"element_modification_or_replaceable":{"element_modification":{"graphics":[{"name":"Rectangle","attribute":{"extent":[{"x":-200,"y":120},{"x":200,"y":80}],"lineColor":{"r":0,"g":127,"b":127},"fillColor":{"r":0,"g":127,"b":127},"pattern":"LinePattern.None","fillPattern":"FillPattern.Solid"}},{"name":"Rectangle","attribute":{"extent":[{"x":-200,"y":-80},{"x":200,"y":-120}],"lineColor":{"r":0,"g":127,"b":127},"fillColor":{"r":0,"g":127,"b":127},"pattern":"LinePattern.None","fillPattern":"FillPattern.Solid"}},{"name":"Ellipse","attribute":{"extent":[{"x":110,"y":-80},{"x":150,"y":-120}],"visible":"typFanSup <> Buildings.Templates.Components.Types.Fan.None","lineColor":{"r":0,"g":0,"b":0},"fillColor":{"r":0,"g":100,"b":199},"fillPattern":"FillPattern.Sphere"}},{"name":"Polygon","attribute":{"points":[{"x":130,"y":-81},{"x":130,"y":-119},{"x":149,"y":-100},{"x":130,"y":-81}],"visible":"typFanSup <> Buildings.Templates.Components.Types.Fan.None","lineColor":{"r":0,"g":0,"b":0},"fillColor":{"r":255,"g":255,"b":255},"pattern":"LinePattern.None","fillPattern":"FillPattern.HorizontalCylinder"}},{"name":"Ellipse","attribute":{"extent":[{"x":-20,"y":120},{"x":20,"y":80}],"visible":"typFanRet <> Buildings.Templates.Components.Types.Fan.None or typFanRel <> Buildings.Templates.Components.Types.Fan.None","lineColor":{"r":0,"g":0,"b":0},"fillColor":{"r":0,"g":100,"b":199},"fillPattern":"FillPattern.Sphere"}},{"name":"Polygon","attribute":{"points":[{"x":0,"y":119},{"x":0,"y":81},{"x":-19,"y":100},{"x":0,"y":119}],"visible":"typFanRet <> Buildings.Templates.Components.Types.Fan.None or typFanRel <> Buildings.Templates.Components.Types.Fan.None","lineColor":{"r":0,"g":0,"b":0},"fillColor":{"r":255,"g":255,"b":255},"pattern":"LinePattern.None","fillPattern":"FillPattern.HorizontalCylinder"}},{"name":"Rectangle","attribute":{"extent":[{"x":48,"y":-80},{"x":78,"y":-120}],"visible":"coiCoo.typ <> Buildings.Templates.Components.Types.Coil.None","lineColor":{"r":0,"g":0,"b":0},"fillColor":{"r":95,"g":95,"b":95},"fillPattern":"FillPattern.Solid","lineThickness":0.5}},{"name":"Line","attribute":{"points":[{"x":78,"y":-80},{"x":48,"y":-120}],"color":{"r":0,"g":0,"b":0},"thickness":0.5,"visible":"coiCoo.typ <> Buildings.Templates.Components.Types.Coil.None"}},{"name":"Rectangle","attribute":{"extent":[{"x":-78,"y":-80},{"x":-48,"y":-120}],"visible":"coiHeaPre.typ <> Buildings.Templates.Components.Types.Coil.None or coiHeaReh.typ <> Buildings.Templates.Components.Types.Coil.None","lineColor":{"r":0,"g":0,"b":0},"fillColor":{"r":95,"g":95,"b":95},"fillPattern":"FillPattern.Solid","lineThickness":0.5}},{"name":"Line","attribute":{"points":[{"x":-48,"y":-80},{"x":-78,"y":-120}],"color":{"r":0,"g":0,"b":0},"thickness":0.5,"visible":"coiHeaPre.typ <> Buildings.Templates.Components.Types.Coil.None or coiHeaReh.typ <> Buildings.Templates.Components.Types.Coil.None"}},{"name":"Line","attribute":{"points":[{"x":-160,"y":-80},{"x":-180,"y":-120}],"color":{"r":0,"g":0,"b":0},"thickness":0.5}},{"name":"Ellipse","attribute":{"extent":[{"x":-174,"y":-96},{"x":-166,"y":-104}],"lineColor":{"r":0,"g":0,"b":0},"fillColor":{"r":0,"g":0,"b":0},"fillPattern":"FillPattern.Solid"}},{"name":"Line","attribute":{"points":[{"x":-160,"y":120},{"x":-180,"y":80}],"color":{"r":0,"g":0,"b":0},"thickness":0.5}},{"name":"Ellipse","attribute":{"extent":[{"x":-174,"y":104},{"x":-166,"y":96}],"lineColor":{"r":0,"g":0,"b":0},"fillColor":{"r":0,"g":0,"b":0},"fillPattern":"FillPattern.Solid"}},{"name":"Rectangle","attribute":{"extent":[{"x":-80,"y":20},{"x":80,"y":-20}],"origin":{"x":-130,"y":0},"rotation":-90,"lineColor":{"r":0,"g":127,"b":127},"fillColor":{"r":0,"g":127,"b":127},"pattern":"LinePattern.None","fillPattern":"FillPattern.Solid"}},{"name":"Line","attribute":{"points":[{"x":20,"y":10},{"x":-20,"y":-10}],"color":{"r":0,"g":0,"b":0},"thickness":0.5}},{"name":"Ellipse","attribute":{"extent":[{"x":-134,"y":4},{"x":-126,"y":-4}],"lineColor":{"r":0,"g":0,"b":0},"fillColor":{"r":0,"g":0,"b":0},"fillPattern":"FillPattern.Solid"}},{"name":"Line","attribute":{"points":[{"x":50,"y":-200},{"x":50,"y":-120}],"color":{"r":28,"g":108,"b":200},"pattern":"LinePattern.Dash","thickness":5,"visible":"have_souChiWat"}},{"name":"Line","attribute":{"points":[{"x":-50,"y":-200},{"x":-50,"y":-120}],"color":{"r":238,"g":46,"b":47},"thickness":5,"visible":"have_souHeaWat"}},{"name":"Line","attribute":{"points":[{"x":130,"y":-200},{"x":130,"y":-194},{"x":76,"y":-194},{"x":76,"y":-120}],"color":{"r":28,"g":108,"b":200},"thickness":5,"visible":"have_souChiWat"}},{"name":"Line","attribute":{"points":[{"x":-130,"y":-200},{"x":-130,"y":-194},{"x":-76,"y":-194},{"x":-76,"y":-120}],"color":{"r":238,"g":46,"b":47},"pattern":"LinePattern.Dash","thickness":5,"visible":"have_souHeaWat"}}]}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Diagram","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"coordinateSystem":{"extent":[{"x":-300,"y":-280},{"x":300,"y":280}],"preserveAspectRatio":"false"}}}},{"element_modification_or_replaceable":{"element_modification":{"graphics":[{"name":"Line","attribute":{"points":[{"x":300,"y":-70},{"x":-120,"y":-70}],"color":{"r":0,"g":0,"b":0}}},{"name":"Line","attribute":{"points":[{"x":300,"y":-90},{"x":-120,"y":-90}],"color":{"r":0,"g":0,"b":0}}},{"name":"Line","attribute":{"points":[{"x":300,"y":-210},{"x":-120,"y":-210}],"color":{"r":0,"g":0,"b":0}}},{"name":"Line","attribute":{"points":[{"x":300,"y":-190},{"x":-120,"y":-190}],"color":{"r":0,"g":0,"b":0}}},{"name":"Line","attribute":{"points":[{"x":-16,"y":40},{"x":-10,"y":40}],"color":{"r":0,"g":0,"b":0},"thickness":1,"visible":"have_senPreBui"}},{"name":"Line","attribute":{"points":[{"x":16,"y":40},{"x":10,"y":40}],"color":{"r":0,"g":0,"b":0},"thickness":1,"visible":"have_senPreBui"}},{"name":"Text","attribute":{"extent":[{"x":18,"y":46},{"x":60,"y":34}],"textString":"\"REPRESENTATIVE SPACE INSIDE BUILDING\"","fontName":"\"sans-serif\"","textColor":{"r":0,"g":0,"b":0},"horizontalAlignment":"TextAlignment.Left","visible":"have_senPreBui"}},{"name":"Text","attribute":{"extent":[{"x":-60,"y":46},{"x":-18,"y":34}],"textString":"\"REFERENCE OUTSIDE BUILDING\"","fontName":"\"sans-serif\"","textColor":{"r":0,"g":0,"b":0},"horizontalAlignment":"TextAlignment.Right","visible":"have_senPreBui"}},{"name":"Polygon","attribute":{"points":[{"x":251,"y":-220},{"x":251,"y":-206},{"x":250,"y":-206},{"x":250,"y":-221},{"x":256,"y":-221},{"x":256,"y":-220},{"x":251,"y":-220}],"lineColor":{"r":0,"g":0,"b":0}}},{"name":"Rectangle","attribute":{"extent":[{"x":264,"y":-220},{"x":270,"y":-221}],"lineColor":{"r":0,"g":0,"b":0}}}]}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

Description

\n

\nThis template represents a multiple-zone VAV air handler for\na single duct system serving at least two terminal units.\n

\n

\nThe possible configuration options are enumerated in the table below.\nThe user may refer to ASHRAE (2021) for further details.\nThe first option displayed in bold characters corresponds to the default configuration.
\n

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Configuration parameterOptionsNotes
Outdoor air section\nSingle damper for ventilation and economizer, with airflow measurement station
\nSeparate dampers for ventilation and economizer, with airflow measurement station
\nSeparate dampers for ventilation and economizer, with differential pressure sensor\n
Relief/return air section\nReturn fan with modulating relief damper
\nModulating relief damper without fan
\nRelief fan with two-position relief damper\n
Nonactuated barometric relief is currently not supported.
Supply fan - Blow-through position\nNo fan
\nSingle fan - Variable speed
\nFan array - Variable speed\n
At least one supply fan must be specified, either in blow-through\nor draw-through position. Those two configurations are exclusive from\none another.
\nASHRAE Guideline 36 does not have any particular logic yet for handling fan arrays.\nIf a fan array is selected, all of the fans are currently controlled together at\nthe same speed, regardless of the number of VFDs.\n
Heating coil - Preheat position\nHot water coil with two-way valve
\nModulating electric heating coil
\nNo coil\n
Cooling coil\nChilled water coil with two-way valve
\nNo coil\n
Heating coil - Reheat position\nNo coil\n\nASHRAE Guideline 36 does not support heating coils in reheat position\nyet.\n
Supply fan - Draw-through position\nSingle fan - Variable speed
\nFan array - Variable speed
\nNo fan\n
At least one supply fan must be specified, either in blow-through\nor draw-through position. Those two configurations are exclusive from\none another.
\nASHRAE Guideline 36 does not have any particular logic yet for handling fan arrays.\nIf a fan array is selected, all of the fans are currently controlled together at\nthe same speed, regardless of the number of VFDs.\n
Return fan\nSingle fan - Variable speed
\nFan array - Variable speed
\nNo fan\n
The relief fan and the return fan are both optional and\nthey are exclusive from one another.
Relief fan\nNo fan
\nSingle fan - Variable speed
\nFan array - Variable speed\n
The relief fan and the return fan are both optional and\nthey are exclusive from one another.
Controller\nASHRAE Guideline 36 controller\n\nAn open loop controller is also available for validation purposes only.\n
Exhaust fan\nNot available: see note\nAll exhaust fans that normally operate with the air handler must\nbe configured separately, by means of a dedicated template.\n\n
Heat recovery\nNot available: see note\nCurrently no heat recovery equipment is supported.\n\n
\n

Simulation model assumptions and requirements

\n
Pressure reference
\n

\nThe duct static pressure sensors use the outdoor absolute pressure\nas an approximation of the reference pressure in the mechanical room\nwhere the air handler is located.\n

\n

\nWhen a building static pressure measurement is required by the control\nsequence\n(ctl.typCtlFanRet=AirHandlersFans.Types.ControlFanReturn.BuildingPressure),\nthe corresponding sensor pBui_rel is instantiated\nwithin the current class.\nIn this case, an additional variable pBui needs to be\nconnected to the control bus to pass in the value of the absolute pressure\nin a representative space of the building.\nThis is a modeling requirement, the actual control point remains the\nrelative building static pressure.\n

\n

References

\n
    \n
  • \nASHRAE, 2021. Guideline 36-2021, High-Performance Sequences of Operation\nfor HVAC Systems. Atlanta, GA.\n
  • \n
\n\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"revisions","modification":{"equal":true,"expression":{"simple_expression":"\"\n
    \n
  • \nSeptember 5, 2023, by Antoine Gautier:
    \nRefactored with a record class for configuration parameters.
    \nThis is for #3500.\n
  • \n
  • \nFebruary 11, 2022, by Antoine Gautier:
    \nFirst implementation.\n
  • \n
\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/VAVMultiZone.mo","fullMoFilePath":"/dependencies/modelica-buildings/Buildings/Templates/AirHandlersFans/VAVMultiZone.mo","checksum":"211c4e3c1ba5064677f31ec0aa99c69f"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/package.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/package.json new file mode 100644 index 00000000..d696af69 --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/package.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"AirHandlersFans","description_string":"Air handlers and fans","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Package"}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package contains templates for air handlers and fans.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/package.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/AirHandlersFans/package.mo","checksum":"dde239912f2abf4900a2de5009e0edff","order":["VAVMultiZone","Components","Configuration","Data","Types","Validation","Interfaces"]} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Components/Data/Chiller.json b/server/tests/static-data/json/Buildings/Templates/Components/Data/Chiller.json new file mode 100644 index 00000000..3251db82 --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/Components/Data/Chiller.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates.Components.Data","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"Chiller","description_string":"Record for chiller model","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Record"}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Boolean","component_list":[{"declaration":{"identifier":"use_datDes","modification":{"equal":true,"expression":{"simple_expression":"true"}}},"description":{"description_string":"Set to true to use specified design conditions, false to use data from performance record","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"__ctrlFlow","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Chiller","component_list":[{"declaration":{"identifier":"typ"},"description":{"description_string":"Type of chiller","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.SpecificHeatCapacity","component_list":[{"declaration":{"identifier":"cpChiWat_default","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Utilities.Psychrometrics.Constants.cpWatLiq"}}},"description":{"description_string":"CHW default specific heat capacity","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.SpecificHeatCapacity","component_list":[{"declaration":{"identifier":"cpCon_default","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.AirCooled"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"Buildings.Utilities.Psychrometrics.Constants.cpAir"}}],"else_expression":{"simple_expression":"Buildings.Utilities.Psychrometrics.Constants.cpWatLiq"}}}}},"description":{"description_string":"Condenser cooling fluid default specific heat capacity","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"mChiWat_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":"per.mEva_flow_nominal"}}],"else_expression":{"simple_expression":"0.001"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"CHW mass flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"mCon_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":"per.mCon_flow_nominal"}},{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.AirCooled"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"Buildings.Templates.Data.Defaults.mAirFloByCapChi*abs(cap_nominal)"}}],"else_expression":{"simple_expression":"0.001"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Condenser cooling fluid (e.g. CW) mass flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.WaterCooled"],"relation_operator":"=="},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.HeatFlowRate","component_list":[{"declaration":{"identifier":"cap_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":{"function_call":{"name":"abs","arguments":[{"name":"per.QEva_flow_nominal"}]}}}}],"else_expression":{"simple_expression":"0.001"}}}}}}}]}},"description":{"description_string":"Cooling capacity","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.HeatFlowRate","component_list":[{"declaration":{"identifier":"QCon_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}],"equal":true,"expression":{"simple_expression":{"terms":[{"operators":["*"],"factors":["abs(cap_nominal)",{"primary1":[{"simple_expression":"1/COP_nominal +1"}]}]}]}}}},"description":{"description_string":"Condenser heat flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"COP_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":"per.COP_nominal"}}],"else_expression":{"simple_expression":"Buildings.Templates.Data.Defaults.COPChiAirCoo"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"1\""}}}}}]}},"description":{"description_string":"Cooling COP","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpChiWat_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"0"}}],"else_expression":{"simple_expression":"Buildings.Templates.Data.Defaults.dpChiWatChi"}}}}}}}]}},"description":{"description_string":"CHW pressure drop","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpCon_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.WaterCooled"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"Buildings.Templates.Data.Defaults.dpConWatChi"}},{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.AirCooled"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"Buildings.Templates.Data.Defaults.dpAirChi"}}],"else_expression":{"simple_expression":"0"}}}}}}}]}},"description":{"description_string":"Condenser cooling fluid pressure drop","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.WaterCooled"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TChiWatSup_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":"per.TEvaLvg_nominal"}}],"else_expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TChiWatSup"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"260"}}}}}]}},"description":{"description_string":"CHW supply temperature","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TChiWatRet_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"260"}}}}}],"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"TChiWatSup_nominal"}}],"else_expression":{"simple_expression":"TChiWatSup_nominal +abs(cap_nominal)/cpChiWat_default/mChiWat_flow_nominal"}}}}},"description":{"description_string":"CHW return temperature","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TChiWatSup_min","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":"per.TEvaLvgMin"}}],"else_expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TChiWatSup_min"}}}}}}}],"equal":true,"expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TChiWatSup_min"}}},"description":{"description_string":"Minimum CHW supply temperature","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Operating limits\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TChiWatSup_max","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":"per.TEvaLvgMax"}}],"else_expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TChiWatSup_max"}}}}}}}],"equal":true,"expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TChiWatSup_max"}}},"description":{"description_string":"Maximum CHW supply temperature","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Operating limits\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TConEnt_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"273.15"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":"per.TConLvg_nominal -QCon_flow_nominal/mCon_flow_nominal/cpCon_default"}}],"else_expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TConEnt_max"}}}}}}}]}},"description":{"description_string":"Condenser entering fluid temperature (CW or air)","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TConLvg_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":"per.TConLvg_nominal"}}],"else_expression":{"simple_expression":"TConEnt_nominal +QCon_flow_nominal/mCon_flow_nominal/cpCon_default"}}}}},"description":{"description_string":"Condenser leaving fluid temperature (CW or air)","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TConLvg_min","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":"per.TConLvgMin"}}],"else_expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TConLvg_min"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"273.15"}}}}}],"equal":true,"expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TConLvg_min"}}},"description":{"description_string":"Minimum condenser leaving fluid temperature (CW or air)","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Operating limits\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TConLvg_max","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":"per.TConLvgMax"}}],"else_expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TConLvg_max"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"273.15"}}}}}],"equal":true,"expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TConLvg_max"}}},"description":{"description_string":"Maximum condenser leaving fluid temperature (CW or air)","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Operating limits\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"PLRUnl_min","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":"per.PLRMinUnl"}}],"else_expression":{"simple_expression":"0"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"PLR_min"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"max","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}}],"equal":true,"expression":{"simple_expression":"PLR_min"}}},"description":{"description_string":"Minimum unloading ratio (before engaging hot gas bypass, if any)","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"PLR_min","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":"per.PLRMin"}}],"else_expression":{"simple_expression":"0"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"max","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}}],"equal":true,"expression":{"simple_expression":"0.15"}}},"description":{"description_string":"Minimum part load ratio before cycling","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"replaceable":true,"constraining_clause":{"name":"Buildings.Fluid.Chillers.Data.ElectricReformulatedEIR.Generic"},"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Fluid.Chillers.Data.ElectricReformulatedEIR.Generic","component_list":[{"declaration":{"identifier":"per","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"TConLvg_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"use_datDes"},"then":{"simple_expression":"TConLvg_nominal"}}],"else_expression":{"simple_expression":"273.15"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"TConLvgMin","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"use_datDes"},"then":{"simple_expression":"TConLvg_min"}}],"else_expression":{"simple_expression":"273.15"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"TConLvgMax","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"use_datDes"},"then":{"simple_expression":"TConLvg_max"}}],"else_expression":{"simple_expression":"273.15"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"COP_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"use_datDes"},"then":{"simple_expression":"COP_nominal"}}],"else_expression":{"simple_expression":"1.1"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"QEva_flow_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"use_datDes"},"then":{"simple_expression":"-abs(cap_nominal)"}}],"else_expression":{"simple_expression":"0.001"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"TEvaLvg_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"use_datDes"},"then":{"simple_expression":"TChiWatSup_nominal"}}],"else_expression":{"simple_expression":"273.15"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"TEvaLvgMin","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"use_datDes"},"then":{"simple_expression":"TChiWatSup_nominal"}}],"else_expression":{"simple_expression":"273.15"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"TEvaLvgMax","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"use_datDes"},"then":{"simple_expression":"TChiWatSup_max"}}],"else_expression":{"simple_expression":"273.15"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"PLRMin","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"use_datDes"},"then":{"simple_expression":"PLR_min"}}],"else_expression":{"simple_expression":"0"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"PLRMinUnl","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"use_datDes"},"then":{"simple_expression":"PLRUnl_min"}}],"else_expression":{"simple_expression":"0"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"PLRMax","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"etaMotor","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"mEva_flow_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"use_datDes"},"then":{"simple_expression":"mChiWat_flow_nominal"}}],"else_expression":{"simple_expression":"0.001"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"mCon_flow_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"use_datDes"},"then":{"simple_expression":"mCon_flow_nominal"}}],"else_expression":{"simple_expression":"0.001"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"capFunT","modification":{"equal":true,"expression":{"simple_expression":"{1,0,0,0,0,0}"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"EIRFunT","modification":{"equal":true,"expression":{"simple_expression":"{1,0,0,0,0,0}"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"EIRFunPLR","modification":{"equal":true,"expression":{"simple_expression":"{1,0,0,0,0,0,0,0,0,0}"}}}}}]}}}]},"description":{"description_string":"Chiller performance data","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"choicesAllMatching","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"COPPer_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"1\""}}}}}],"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"per.COP_nominal"}}],"else_expression":{"simple_expression":"per.COP_nominal/Buildings.Utilities.Math.Functions.biquadratic(a=per.EIRFunT,x1=Modelica.Units.Conversions.to_degC(TChiWatSup_nominal),x2=Modelica.Units.Conversions.to_degC(TConLvg_nominal))/Buildings.Utilities.Math.Functions.bicubic(a=per.EIRFunPLR,x1=Modelica.Units.Conversions.to_degC(TConLvg_nominal),x2=1)"}}}}},"description":{"description_string":"Cooling COP computed from performance record","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}}]}}}}]}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.HeatFlowRate","component_list":[{"declaration":{"identifier":"capPer_flow_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":{"function_call":{"name":"abs","arguments":[{"name":"per.QEva_flow_nominal"}]}}}}],"else_expression":{"simple_expression":"abs(per.QEva_flow_nominal)*Buildings.Utilities.Math.Functions.biquadratic(a=per.capFunT,x1=Modelica.Units.Conversions.to_degC(TChiWatSup_nominal),x2=Modelica.Units.Conversions.to_degC(TConLvg_nominal))"}}}}},"description":{"description_string":"Cooling capacity computed from performance record","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}}]}}}}]}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Fluid.Chillers.Data.ElectricReformulatedEIR.Generic","component_list":[{"declaration":{"identifier":"perSca","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"COP_nominal","modification":{"equal":true,"expression":{"simple_expression":"per.COP_nominal*COP_nominal/COPPer_nominal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"QEva_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"per.QEva_flow_nominal*abs(cap_nominal)/capPer_flow_nominal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"EIRFunPLR","modification":{"equal":true,"expression":{"simple_expression":"per.EIRFunPLR"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"EIRFunT","modification":{"equal":true,"expression":{"simple_expression":"per.EIRFunT"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"PLRMax","modification":{"equal":true,"expression":{"simple_expression":"per.PLRMax"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"PLRMin","modification":{"equal":true,"expression":{"simple_expression":"per.PLRMin"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"PLRMinUnl","modification":{"equal":true,"expression":{"simple_expression":"per.PLRMinUnl"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"TConLvgMax","modification":{"equal":true,"expression":{"simple_expression":"per.TConLvgMax"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"TConLvgMin","modification":{"equal":true,"expression":{"simple_expression":"per.TConLvgMin"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"TConLvg_nominal","modification":{"equal":true,"expression":{"simple_expression":"per.TConLvg_nominal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"TEvaLvgMax","modification":{"equal":true,"expression":{"simple_expression":"per.TEvaLvgMax"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"TEvaLvgMin","modification":{"equal":true,"expression":{"simple_expression":"per.TEvaLvgMin"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"TEvaLvg_nominal","modification":{"equal":true,"expression":{"simple_expression":"per.TEvaLvg_nominal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"capFunT","modification":{"equal":true,"expression":{"simple_expression":"per.capFunT"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"etaMotor","modification":{"equal":true,"expression":{"simple_expression":"per.etaMotor"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"mCon_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"per.mCon_flow_nominal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"mEva_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"per.mEva_flow_nominal"}}}}}]}},"description":{"description_string":"Chiller performance data scaled to specified design capacity and COP","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"choicesAllMatching","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentPrefixes","modification":{"equal":true,"expression":{"simple_expression":"\"parameter\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"datChi\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of sizing and operating parameters for\nthe classes within\n\nBuildings.Templates.Components.Chillers.\nIt is composed of a set of parameters corresponding to the design\n(selection) conditions and a sub-record per corresponding\nto the rating conditions at which the performance curves are calculated.\n

\n

\nThe record allows two different parameterization logics, depending\non the value of the parameter use_datDes.\n(The user can refer to the valiation model\n\nBuildings.Templates.Components.Chillers.Validation.Compression\nfor an illustration of these two logics.)\n

\n
    \n
  • \nIf use_datDes=true – default setting that should be\nused in most cases: The performance data specified in the sub-record\nper are \\\"translated\\\" so that the capacity and COP\ncalculated at design conditions match the design values\ncap_nominal and COP_nominal.\nThe performance data that result from this translation are stored in\nthe sub-record perSca which is ultimately used by the chiller models within\n\nBuildings.Templates.Components.Chillers.
    \nNote that the performance data can be specified either by redeclaring\nthe sub-record per, or by simply assigning the performance\ncurves per.capFunT, per.EIRFunT and per.EIRFunPLR\nin case these curves were calculated based on the design conditions.\nTo support the latter, the design conditions are propagated \\\"down\\\" to\nthe sub-record per but these bindings do not persist\nafter redeclaration so that a record at different rating conditions can\nalso be used.\n
  • \n
  • \nIf use_datDes=false – non-default setting that should only be\nused if the rating conditions match the design conditions:\nThe rating conditions specified in the sub-record\nper are propagated \\\"up\\\" (via the start attribute)\nand used as design conditions.\nThe sub-record perSca which is ultimately used by the chiller models within\n\nBuildings.Templates.Components.Chillers\nis then identical to the sub-record per.\nWhen using this logic, no assignment shall be made for the design\nparameters, except for the design pressure drops dp*_nominal.\n
  • \n
\n

\nnote that placeholders values are assigned to the performance curves,\nthe reference source temperature and the input power in\ncooling mode to avoid assigning these parameters in case of non-reversible\nheat pumps.\nThese values are unrealistic and must be overwritten for reversible heat pumps, which\nis always the case when redeclaring or\nreassigning the performance record per.\nModels that use this record will issue a warning if these placeholders values\nare not overwritten in case of reversible heat pumps.\n

\n

\nNote that placeholders values are assigned to the chiller performance curves\n(per.capFunT , per.EIRFunT and per.EIRFunPLR)\nto avoid assigning these parameters if\ntyp=Buildings.Templates.Components.Types.Chiller.None.\nIf the chiller type is not None these values are unrealistic\nand must be overwritten, which is always the case when redeclaring or\nreassigning the performance record per.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Components/Data/Chiller.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/Components/Data/Chiller.mo","checksum":"256a3f04dddaf7aa538e7f85e01027b2"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Components/Data/Coil.json b/server/tests/static-data/json/Buildings/Templates/Components/Data/Coil.json new file mode 100644 index 00000000..1475a5ae --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/Components/Data/Coil.json @@ -0,0 +1,1774 @@ +{ + "within": "Buildings.Templates.Components.Data", + "stored_class_definitions": [ + { + "class_prefixes": "record", + "class_specifier": { + "long_class_specifier": { + "identifier": "Coil", + "description_string": "Record for coil model", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Record" + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Buildings.Templates.Components.Types.Coil", + "component_list": [ + { + "declaration": { + "identifier": "typ" + }, + "description": { + "description_string": "Equipment type", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Dialog", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "group", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Configuration\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enable", + "modification": { + "equal": true, + "expression": { + "simple_expression": "false" + } + } + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Evaluate", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Buildings.Templates.Components.Types.Valve", + "component_list": [ + { + "declaration": { + "identifier": "typVal" + }, + "description": { + "description_string": "Type of valve", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Dialog", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "group", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Configuration\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enable", + "modification": { + "equal": true, + "expression": { + "simple_expression": "false" + } + } + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Evaluate", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "have_sou" + }, + "description": { + "description_string": "Set to true for fluid ports on the source side", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Dialog", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "group", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Configuration\"" + } + } + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Evaluate", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Modelica.Units.SI.MassFlowRate", + "component_list": [ + { + "declaration": { + "identifier": "mAir_flow_nominal", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "start", + "modification": { + "equal": true, + "expression": { + "if_expression": { + "if_elseif": [ + { + "condition": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage" + ], + "relation_operator": "==" + } + ] + }, + { + "logical_and": [ + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed" + ], + "relation_operator": "==" + } + ] + } + ] + } + } + }, + "then": { + "simple_expression": "datCoi.sta[datCoi.nSta].nomVal.m_flow_nominal" + } + } + ], + "else_expression": { + "simple_expression": "1" + } + } + } + } + } + } + } + ] + } + }, + "description": { + "description_string": "Air mass flow rate", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Dialog", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "group", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Nominal condition\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enable", + "modification": { + "equal": true, + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.None" + ], + "relation_operator": "<>" + }, + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage" + ], + "relation_operator": "<>" + }, + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed" + ], + "relation_operator": "<>" + } + ] + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Modelica.Units.SI.PressureDifference", + "component_list": [ + { + "declaration": { + "identifier": "dpAir_nominal", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "displayUnit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Pa\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "start", + "modification": { + "equal": true, + "expression": { + "if_expression": { + "if_elseif": [ + { + "condition": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.None" + ], + "relation_operator": "==" + } + ] + } + ] + } + } + }, + "then": { + "simple_expression": "0" + } + } + ], + "else_expression": { + "simple_expression": "100" + } + } + } + } + } + } + } + ] + } + }, + "description": { + "description_string": "Air pressure drop", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Dialog", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "group", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Nominal condition\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enable", + "modification": { + "equal": true, + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.None" + ], + "relation_operator": "<>" + } + ] + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Modelica.Units.SI.MassFlowRate", + "component_list": [ + { + "declaration": { + "identifier": "mWat_flow_nominal", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "start", + "modification": { + "equal": true, + "expression": { + "if_expression": { + "if_elseif": [ + { + "condition": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.WaterBasedHeating" + ], + "relation_operator": "==" + } + ] + } + ] + } + } + }, + "then": { + "simple_expression": "Q_flow_nominal/4186/10" + } + }, + { + "condition": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.WaterBasedCooling" + ], + "relation_operator": "==" + } + ] + } + ] + } + } + }, + "then": { + "simple_expression": "-Q_flow_nominal/4186/5" + } + } + ], + "else_expression": { + "simple_expression": "0" + } + } + } + } + } + } + } + ] + } + }, + "description": { + "description_string": "Liquid mass flow rate", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Dialog", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "group", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Nominal condition\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enable", + "modification": { + "equal": true, + "expression": { + "simple_expression": "have_sou" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Modelica.Units.SI.PressureDifference", + "component_list": [ + { + "declaration": { + "identifier": "dpWat_nominal", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "displayUnit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Pa\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "start", + "modification": { + "equal": true, + "expression": { + "if_expression": { + "if_elseif": [ + { + "condition": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.WaterBasedHeating" + ], + "relation_operator": "==" + } + ] + } + ] + } + } + }, + "then": { + "simple_expression": "5000" + } + }, + { + "condition": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.WaterBasedCooling" + ], + "relation_operator": "==" + } + ] + } + ] + } + } + }, + "then": { + "simple_expression": "30000" + } + } + ], + "else_expression": { + "simple_expression": "0" + } + } + } + } + } + } + } + ] + } + }, + "description": { + "description_string": "Liquid pressure drop across coil", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Dialog", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "group", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Nominal condition\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enable", + "modification": { + "equal": true, + "expression": { + "simple_expression": "have_sou" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Modelica.Units.SI.PressureDifference", + "component_list": [ + { + "declaration": { + "identifier": "dpValve_nominal", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "displayUnit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Pa\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "start", + "modification": { + "equal": true, + "expression": { + "if_expression": { + "if_elseif": [ + { + "condition": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + "typVal", + "Buildings.Templates.Components.Types.Valve.None" + ], + "relation_operator": "==" + } + ] + } + ] + } + } + }, + "then": { + "simple_expression": "0" + } + } + ], + "else_expression": { + "simple_expression": "dpWat_nominal/2" + } + } + } + } + } + } + } + ] + } + }, + "description": { + "description_string": "Liquid pressure drop across fully open valve", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Dialog", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "group", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Nominal condition\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enable", + "modification": { + "equal": true, + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + "have_sou" + ] + }, + { + "arithmetic_expressions": [ + "typVal", + "Buildings.Templates.Components.Types.Valve.None" + ], + "relation_operator": "<>" + } + ] + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Modelica.Units.SI.HeatFlowRate", + "component_list": [ + { + "declaration": { + "identifier": "cap_nominal", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "start", + "modification": { + "equal": true, + "expression": { + "if_expression": { + "if_elseif": [ + { + "condition": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.None" + ], + "relation_operator": "==" + } + ] + } + ] + } + } + }, + "then": { + "simple_expression": "0" + } + }, + { + "condition": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage" + ], + "relation_operator": "==" + } + ] + }, + { + "logical_and": [ + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed" + ], + "relation_operator": "==" + } + ] + } + ] + } + } + }, + "then": { + "simple_expression": "datCoi.sta[datCoi.nSta].nomVal.Q_flow_nominal" + } + }, + { + "condition": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.WaterBasedCooling" + ], + "relation_operator": "==" + } + ] + } + ] + } + } + }, + "then": { + "simple_expression": "-10000" + } + } + ], + "else_expression": { + "simple_expression": "10000" + } + } + } + } + } + } + } + ] + } + }, + "description": { + "description_string": "Coil capacity", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Dialog", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "group", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Nominal condition\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enable", + "modification": { + "equal": true, + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.None" + ], + "relation_operator": "<>" + }, + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage" + ], + "relation_operator": "<>" + }, + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed" + ], + "relation_operator": "<>" + } + ] + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + ] + } + } + ] + } + }, + { + "final": true, + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Modelica.Units.SI.HeatFlowRate", + "component_list": [ + { + "declaration": { + "identifier": "Q_flow_nominal", + "modification": { + "equal": true, + "expression": { + "if_expression": { + "if_elseif": [ + { + "condition": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.WaterBasedHeating" + ], + "relation_operator": "==" + } + ] + }, + { + "logical_and": [ + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.ElectricHeating" + ], + "relation_operator": "==" + } + ] + } + ] + } + } + }, + "then": { + "simple_expression": { + "function_call": { + "name": "abs", + "arguments": [ + { + "name": "cap_nominal" + } + ] + } + } + } + } + ], + "else_expression": { + "simple_expression": "-1*abs(cap_nominal)" + } + } + } + } + }, + "description": { + "description_string": "Nominal heat flow rate", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Dialog", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "group", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Nominal condition\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Modelica.Units.SI.Temperature", + "component_list": [ + { + "declaration": { + "identifier": "TWatEnt_nominal", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "273.15" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "displayUnit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"degC\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "start", + "modification": { + "equal": true, + "expression": { + "if_expression": { + "if_elseif": [ + { + "condition": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.WaterBasedHeating" + ], + "relation_operator": "==" + } + ] + } + ] + } + } + }, + "then": { + "simple_expression": "50 +273.15" + } + }, + { + "condition": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.WaterBasedCooling" + ], + "relation_operator": "==" + } + ] + } + ] + } + } + }, + "then": { + "simple_expression": "7 +273.15" + } + } + ], + "else_expression": { + "simple_expression": "273.15" + } + } + } + } + } + } + } + ] + } + }, + "description": { + "description_string": "Nominal entering liquid temperature", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Dialog", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "group", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Nominal condition\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enable", + "modification": { + "equal": true, + "expression": { + "simple_expression": "have_sou" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Modelica.Units.SI.Temperature", + "component_list": [ + { + "declaration": { + "identifier": "TAirEnt_nominal", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "243.15" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "displayUnit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"degC\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "start", + "modification": { + "equal": true, + "expression": { + "if_expression": { + "if_elseif": [ + { + "condition": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.WaterBasedCooling" + ], + "relation_operator": "==" + } + ] + } + ] + } + } + }, + "then": { + "simple_expression": "30 +273.15" + } + } + ], + "else_expression": { + "simple_expression": "273.15" + } + } + } + } + } + } + } + ] + } + }, + "description": { + "description_string": "Nominal entering air temperature", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Dialog", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "group", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Nominal condition\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enable", + "modification": { + "equal": true, + "expression": { + "simple_expression": "have_sou" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Modelica.Units.SI.MassFraction", + "component_list": [ + { + "declaration": { + "identifier": "wAirEnt_nominal", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "start", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0.01" + } + } + } + } + } + ] + } + }, + "description": { + "description_string": "Nominal entering air humidity ratio", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Dialog", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "group", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Nominal condition\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enable", + "modification": { + "equal": true, + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.WaterBasedCooling" + ], + "relation_operator": "==" + } + ] + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + ] + } + } + ] + } + }, + { + "replaceable": true, + "constraining_clause": { + "name": "Buildings.Fluid.DXSystems.Cooling.AirSource.Data.Generic.DXCoil" + }, + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Buildings.Fluid.DXSystems.Cooling.AirSource.Data.SingleSpeed.Carrier_Centurion_50PG06", + "component_list": [ + { + "declaration": { + "identifier": "datCoi" + } + } + ] + }, + "description": { + "description_string": "Performance data record of evaporator coil", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "choicesAllMatching", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Dialog", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enable", + "modification": { + "equal": true, + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage" + ], + "relation_operator": "==" + } + ] + }, + { + "logical_and": [ + { + "arithmetic_expressions": [ + "typ", + "Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed" + ], + "relation_operator": "==" + } + ] + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "defaultComponentPrefixes", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"parameter\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "defaultComponentName", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"datCoi\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Documentation", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "info", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"\n

\nThis record provides the set of sizing parameters for\nthe classes within\n\nBuildings.Templates.Components.Coils.\n

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ], + "modelicaFile": "Buildings/Templates/Components/Data/Coil.mo", + "fullMoFilePath": "modelica-buildings/Buildings/Templates/Components/Data/Coil.mo", + "checksum": "623b9f296d008c4b85e9754da12e3698" +} diff --git a/server/tests/static-data/json/Buildings/Templates/Components/Data/Damper.json b/server/tests/static-data/json/Buildings/Templates/Components/Data/Damper.json new file mode 100644 index 00000000..86053025 --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/Components/Data/Damper.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates.Components.Data","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"Damper","description_string":"Record for damper model","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Record"}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Damper","component_list":[{"declaration":{"identifier":"typ"},"description":{"description_string":"Equipment type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"m_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}}]}},"description":{"description_string":"Air mass flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Mechanical\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Damper.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dp_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"Pa\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Damper.None"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"0"}},{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Damper.PressureIndependent"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"50"}}],"else_expression":{"simple_expression":"15"}}}}}}}]}},"description":{"description_string":"Air pressure drop","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Mechanical\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Damper.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpFixed_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"Pa\""}}}}}],"equal":true,"expression":{"simple_expression":"0"}}},"description":{"description_string":"Air pressure drop of fixed elements in series with damper","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Mechanical\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentPrefixes","modification":{"equal":true,"expression":{"simple_expression":"\"parameter\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"datDam\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of sizing parameters for\nthe class\n\nBuildings.Templates.Components.Actuators.Damper.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Components/Data/Damper.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/Components/Data/Damper.mo","checksum":"1a136e99bc336b306a6ec2efec3f7600"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Components/Data/Fan.json b/server/tests/static-data/json/Buildings/Templates/Components/Data/Fan.json new file mode 100644 index 00000000..5c6c48fe --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/Components/Data/Fan.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates.Components.Data","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"Fan","description_string":"Record for fan model","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Record"}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Fan","component_list":[{"declaration":{"identifier":"typ"},"description":{"description_string":"Equipment type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Integer","component_list":[{"declaration":{"identifier":"nFan","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"0"}}],"else_expression":{"simple_expression":"1"}}}}}}}]}},"description":{"description_string":"Number of fans","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Fan.ArrayVariable"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"m_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}}]}},"description":{"description_string":"Total air mass flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dp_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"Pa\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"1"}}],"else_expression":{"simple_expression":"500"}}}}}}}]}},"description":{"description_string":"Total pressure rise","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"replaceable":true,"constraining_clause":{"name":"Buildings.Fluid.Movers.Data.Generic"},"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Fluid.Movers.Data.Generic","component_list":[{"declaration":{"identifier":"per","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"pressure","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"V_flow","modification":{"equal":true,"expression":{"simple_expression":"{0,1,2}*m_flow_nominal/1.2/max(1,nFan)"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"dp","modification":{"equal":true,"expression":{"simple_expression":"{1.5,1,0}*dp_nominal"}}}}}]}}}}]}}}]},"description":{"description_string":"Performance data","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"choicesAllMatching","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-90,"y":-88},{"x":-70,"y":-68}]}}}}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentPrefixes","modification":{"equal":true,"expression":{"simple_expression":"\"parameter\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"datFan\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of sizing parameters for\nthe classes within\n\nBuildings.Templates.Components.Fans.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Components/Data/Fan.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/Components/Data/Fan.mo","checksum":"152ca514adecb919619ab5e3b7380439"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Components/Data/HeatPump.json b/server/tests/static-data/json/Buildings/Templates/Components/Data/HeatPump.json new file mode 100644 index 00000000..91ad53d8 --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/Components/Data/HeatPump.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates.Components.Data","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"HeatPump","description_string":"Record for heat pump model","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Record"}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.HeatPump","component_list":[{"declaration":{"identifier":"typ"},"description":{"description_string":"Equipment type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Boolean","component_list":[{"declaration":{"identifier":"is_rev"},"description":{"description_string":"Set to true for reversible heat pumps, false for heating only","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.HeatPumpModel","component_list":[{"declaration":{"identifier":"typMod"},"description":{"description_string":"Type of heat pump model","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.SpecificHeatCapacity","component_list":[{"declaration":{"identifier":"cpHeaWat_default","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Utilities.Psychrometrics.Constants.cpWatLiq"}}},"description":{"description_string":"HW default specific heat capacity","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.SpecificHeatCapacity","component_list":[{"declaration":{"identifier":"cpChiWat_default","modification":{"equal":true,"expression":{"simple_expression":"cpHeaWat_default"}}},"description":{"description_string":"CHW default specific heat capacity"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.SpecificHeatCapacity","component_list":[{"declaration":{"identifier":"cpSou_default","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.HeatPump.AirToWater"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"Buildings.Utilities.Psychrometrics.Constants.cpAir"}}],"else_expression":{"simple_expression":"Buildings.Utilities.Psychrometrics.Constants.cpWatLiq"}}}}},"description":{"description_string":"Source fluid default specific heat capacity","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"mHeaWat_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"HW mass flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpHeaWat_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Data.Defaults.dpChiWatChi"}}}}}]}},"description":{"description_string":"Pressure drop at design HW mass flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.HeatFlowRate","component_list":[{"declaration":{"identifier":"capHea_nominal"},"description":{"description_string":"Heating capacity","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"THeaWatSup_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"273.15"}}}}}]}},"description":{"description_string":"(Highest) HW supply temperature","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}}]}}}}]}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"THeaWatRet_nominal","modification":{"equal":true,"expression":{"simple_expression":"THeaWatSup_nominal -abs(capHea_nominal)/cpHeaWat_default/mHeaWat_flow_nominal"}}},"description":{"description_string":"HW return temperature","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"mChiWat_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"CHW mass flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"is_rev"}}}}}]}}}}]}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpChiWat_nominal","modification":{"equal":true,"expression":{"simple_expression":{"terms":[{"operators":["*"],"factors":["dpHeaWat_nominal",{"operator":"^","primary1":[{"simple_expression":"mChiWat_flow_nominal/mHeaWat_flow_nominal"}],"primary2":"2"}]}]}}}},"description":{"description_string":"Pressure drop at design CHW mass flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.HeatFlowRate","component_list":[{"declaration":{"identifier":"capCoo_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Cooling capacity","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"is_rev"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TChiWatSup_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TChiWatSup"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"253.15"}}}}}]}},"description":{"description_string":"(Lowest) CHW supply temperature","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"is_rev"}}}}}]}}}}]}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TChiWatRet_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"is_rev"},"then":{"simple_expression":"TChiWatSup_nominal +abs(capCoo_nominal)/cpChiWat_default/mChiWat_flow_nominal"}}],"else_expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TChiWatRet"}}}}},"description":{"description_string":"CHW return temperature","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"is_rev"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TSouHea_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TOutHpHeaLow"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"220"}}}}}]}},"description":{"description_string":"OAT or source fluid supply temperature (evaporator entering) in heating mode","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"mSouWwHea_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"mHeaWat_flow_nominal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Source fluid mass flow rate in heating mode","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.HeatPump.WaterToWater"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpSouWwHea_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Data.Defaults.dpChiWatChi"}}}}}]}},"description":{"description_string":"Source fluid pressure drop in heating mode","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.HeatPump.WaterToWater"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"mSouHea_flow_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.HeatPump.WaterToWater"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"mSouWwHea_flow_nominal"}}],"else_expression":{"simple_expression":"Buildings.Templates.Data.Defaults.mAirFloByCapChi*abs(capHea_nominal)"}}}}},"description":{"description_string":"Source fluid mass flow rate in heating mode"}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpSouHea_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.HeatPump.WaterToWater"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"dpSouWwHea_nominal"}}],"else_expression":{"simple_expression":"Buildings.Templates.Data.Defaults.dpAirChi"}}}}},"description":{"description_string":"Source fluid pressure drop in heating mode"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TSouCoo_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TOutHpCoo"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"273.15"}}}}}]}},"description":{"description_string":"OAT or source fluid supply temperature (condenser entering) in cooling mode","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"is_rev"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"mSouWwCoo_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"mChiWat_flow_nominal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Source fluid mass flow rate in cooling mode","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.HeatPump.WaterToWater"],"relation_operator":"=="},{"arithmetic_expressions":["is_rev"]}]}]}}}}}}}]}}}}]}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"mSouCoo_flow_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.HeatPump.WaterToWater"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"mSouWwCoo_flow_nominal"}}],"else_expression":{"simple_expression":"Buildings.Templates.Data.Defaults.mAirFloByCapChi*abs(capCoo_nominal)"}}}}},"description":{"description_string":"Source fluid mass flow rate in cooling mode"}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpSouCoo_nominal","modification":{"equal":true,"expression":{"simple_expression":{"terms":[{"operators":["*"],"factors":["dpSouHea_nominal",{"operator":"^","primary1":[{"simple_expression":"mSouCoo_flow_nominal/mSouHea_flow_nominal"}],"primary2":"2"}]}]}}}},"description":{"description_string":"Source fluid pressure drop in cooling mode"}}]}},{"replaceable":true,"constraining_clause":{"name":"Buildings.Fluid.HeatPumps.Data.EquationFitReversible.Generic"},"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Fluid.HeatPumps.Data.EquationFitReversible.Generic","component_list":[{"declaration":{"identifier":"perFit","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"dpHeaLoa_nominal","modification":{"equal":true,"expression":{"simple_expression":"dpHeaWat_nominal"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"dpHeaSou_nominal","modification":{"equal":true,"expression":{"simple_expression":"dpSouHea_nominal"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"hea","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"Q_flow","modification":{"equal":true,"expression":{"simple_expression":{"function_call":{"name":"abs","arguments":[{"name":"capHea_nominal"}]}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"P","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"mLoa_flow","modification":{"equal":true,"expression":{"simple_expression":"mHeaWat_flow_nominal"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"mSou_flow","modification":{"equal":true,"expression":{"simple_expression":"mSouHea_flow_nominal"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"coeQ","modification":{"equal":true,"expression":{"simple_expression":"{1,0,0,0,0}"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"coeP","modification":{"equal":true,"expression":{"simple_expression":"{1,0,0,0,0}"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"TRefLoa","modification":{"equal":true,"expression":{"simple_expression":"THeaWatRet_nominal"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"TRefSou","modification":{"equal":true,"expression":{"simple_expression":"TSouHea_nominal"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"coo","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"Q_flow","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"is_rev"},"then":{"simple_expression":"-abs(capCoo_nominal)"}}],"else_expression":{"simple_expression":"-1"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"P","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"mLoa_flow","modification":{"equal":true,"expression":{"simple_expression":"mChiWat_flow_nominal"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"mSou_flow","modification":{"equal":true,"expression":{"simple_expression":"mSouCoo_flow_nominal"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"coeQ","modification":{"equal":true,"expression":{"simple_expression":"{1,0,0,0,0}"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"coeP","modification":{"equal":true,"expression":{"simple_expression":"{1,0,0,0,0}"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"TRefLoa","modification":{"equal":true,"expression":{"simple_expression":"TChiWatRet_nominal"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"TRefSou","modification":{"equal":true,"expression":{"simple_expression":"TSouCoo_nominal"}}}}}]}}}}]}}}]},"description":{"description_string":"Performance data - Equation fit model","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typMod","Buildings.Templates.Components.Types.HeatPumpModel.EquationFit"],"relation_operator":"=="}]}]}}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"choicesAllMatching","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-8,"y":-40},{"x":8,"y":-24}]}}}}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentPrefixes","modification":{"equal":true,"expression":{"simple_expression":"\"parameter\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"datHp\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of sizing and operating parameters for\nheat pump models that can be found within\n\nBuildings.Templates.Components.HeatPumps.\n

\n

Performance data for the equation fit model

\n

When using\ntypMod=Buildings.Templates.Components.Types.HeatPumpModel.EquationFit,\nthe design values declared at the top-level\nare propagated by default to the performance data record per\nunder the assumption that the reference conditions used for assessing the\nperformance data match the design conditions.\nThis avoids duplicate parameter assignments when manually entering\nthe performance curve coefficients.\n

\n

\nNote that this propagation does not persist when redeclaring or\nreassigning the record.\nThis is because the equation fit method uses reference values that\nmust match the ones used to compute the performance curve coefficients.\n

\n

\nAlso note that placeholders values are assigned to the performance curves,\nthe reference source temperature and the input power in\ncooling mode to avoid assigning these parameters in case of non-reversible\nheat pumps.\nThese values are unrealistic and must be overwritten for reversible heat pumps, which\nis always the case when redeclaring or\nreassigning the performance record per.\nModels that use this record will issue a warning if these placeholders values\nare not overwritten in case of reversible heat pumps.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Components/Data/HeatPump.mo","fullMoFilePath":"/dependencies/modelica-buildings/Buildings/Templates/Components/Data/HeatPump.mo","checksum":"240b9915452c769fb2affb27355a3a77"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Components/Data/PumpMultiple.json b/server/tests/static-data/json/Buildings/Templates/Components/Data/PumpMultiple.json new file mode 100644 index 00000000..6e183365 --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/Components/Data/PumpMultiple.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates.Components.Data","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"PumpMultiple","description_string":"Record for multiple-pump models","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Record"}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Pump","component_list":[{"declaration":{"identifier":"typ"},"description":{"description_string":"Equipment type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Integer","component_list":[{"declaration":{"identifier":"nPum","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Number of pumps","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"m_flow_nominal","array_subscripts":[{"expression":{"simple_expression":"nPum"}}],"modification":{"class_modification":[{"element_modification_or_replaceable":{"each":true,"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}},{"element_modification_or_replaceable":{"each":true,"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Mass flow rate - Each pump","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Pump.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dp_nominal","array_subscripts":[{"expression":{"simple_expression":"nPum"}}],"modification":{"class_modification":[{"element_modification_or_replaceable":{"each":true,"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"each":true,"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Total pressure rise - Each pump","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Pump.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"replaceable":true,"constraining_clause":{"name":"Buildings.Fluid.Movers.Data.Generic"},"component_clause":{"type_prefix":"parameter","type_specifier":"Fluid.Movers.Data.Generic","component_list":[{"declaration":{"identifier":"per","array_subscripts":[{"expression":{"simple_expression":{"function_call":{"name":"max","arguments":[{"name":"nPum"},{"name":"1"}]}}}}],"modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"pressure","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"V_flow","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Pump.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":{"for_loop":{"expression":{"simple_expression":"{0,1,2}*m_flow_nominal[i]/rho_default"},"for_loop":[{"name":"i","range":"1:nPum"}]}}}}],"else_expression":{"simple_expression":"[0]"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"dp","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Pump.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":{"for_loop":{"expression":{"simple_expression":"{1.14,1,0.42}*dp_nominal[i]"},"for_loop":[{"name":"i","range":"1:nPum"}]}}}}],"else_expression":{"simple_expression":"[0]"}}}}}}}]}}}}]}}}]},"description":{"description_string":"Performance data - Each pump","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Pump.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Density","component_list":[{"declaration":{"identifier":"rho_default","modification":{"equal":true,"expression":{"simple_expression":"Modelica.Media.Water.ConstantPropertyLiquidWater.d_const"}}},"description":{"description_string":"Default medium density","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentPrefixes","modification":{"equal":true,"expression":{"simple_expression":"\"parameter\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"datPum\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of sizing and operating parameters for \nthe multiple-pump model\n\nBuildings.Templates.Components.Pumps.Multiple.\n

\n

\nA default flow characteristic is provided, which goes through\nthe design operating point and spans over\n0 and twice the design flow rate at maximum speed.\nThis default characteristic is based on a least squares\npolynomial fit of the characteristics from\n\nBuildings.Fluid.Movers.Data.Pumps.Wilo.\nThe user may refer to the documentation of \n\nBuildings.Fluid.HydronicConfigurations.UsersGuide.ModelParameters\nfor further details.\nNote that a default medium density is used to parameterize \nthe pump characteristic. So models that use this record should\noverwrite this default value with the density of the medium\nin use, especially in the case of a water/glycol mix. \n

\n

\nIn order to modify the default characteristic, one may use either\nof the following methods.\n

\n
    \n
  • Assign the whole subrecord per or\nonly its component per.pressure.\nIn this case the elements per[i] may differ one from another.\nThis is the recommended approach for unequally sized units \nsuch as dedicated pumps.
  • \n
  • Redeclare the component per.\nIn this case the elements per[i] are all equal to the redeclared\nrecord instance.\nThis is the recommended approach for equally sized units \nsuch as headered pumps.
  • \n
\n

\nThose various use cases are illustrated in\n\nBuildings.Templates.Components.Validation.PumpMultipleRecord.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Components/Data/PumpMultiple.mo","fullMoFilePath":"/dependencies/modelica-buildings/Buildings/Templates/Components/Data/PumpMultiple.mo","checksum":"64d1f56f617c015538c0bd222077fd2a"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Components/Data/PumpSingle.json b/server/tests/static-data/json/Buildings/Templates/Components/Data/PumpSingle.json new file mode 100644 index 00000000..e04a4773 --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/Components/Data/PumpSingle.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates.Components.Data","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"PumpSingle","description_string":"Record for single pump model","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Record"}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Pump","component_list":[{"declaration":{"identifier":"typ"},"description":{"description_string":"Equipment type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"m_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Mass flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Pump.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dp_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Total pressure rise","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Pump.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"replaceable":true,"constraining_clause":{"name":"Buildings.Fluid.Movers.Data.Generic"},"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Fluid.Movers.Data.Generic","component_list":[{"declaration":{"identifier":"per","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"pressure","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"V_flow","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Pump.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":"{0,1,2}*m_flow_nominal/rho_default"}}],"else_expression":{"simple_expression":"{0,0,0}"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"dp","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Pump.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":"{1.14,1,0.42}*dp_nominal"}}],"else_expression":{"simple_expression":"{0,0,0}"}}}}}}}]}}}}]}}}]},"description":{"description_string":"Performance data","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Pump.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Density","component_list":[{"declaration":{"identifier":"rho_default","modification":{"equal":true,"expression":{"simple_expression":"Modelica.Media.Water.ConstantPropertyLiquidWater.d_const"}}},"description":{"description_string":"Default medium density","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentPrefixes","modification":{"equal":true,"expression":{"simple_expression":"\"parameter\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"datPum\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of sizing and operating parameters for \nthe single pump model\n\nBuildings.Templates.Components.Pumps.Single.\n

\n

\nA default flow characteristic is provided and can be overwritten as\ndescribed in the documentation of \n\nBuildings.Templates.Components.Data.PumpMultiple\nin the more generic case of multiple units.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Components/Data/PumpSingle.mo","fullMoFilePath":"/dependencies/modelica-buildings/Buildings/Templates/Components/Data/PumpSingle.mo","checksum":"beab0fea46ac8a36b9b48e010b55eb34"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Components/Data/Valve.json b/server/tests/static-data/json/Buildings/Templates/Components/Data/Valve.json new file mode 100644 index 00000000..5e59f7c8 --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/Components/Data/Valve.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates.Components.Data","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"Valve","description_string":"Record for valve model","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Record"}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Valve","component_list":[{"declaration":{"identifier":"typ"},"description":{"description_string":"Equipment type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"m_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}}]}},"description":{"description_string":"Nominal mass flow rate of fully open valve","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Valve.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpValve_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"Pa\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Nominal pressure drop of fully open valve","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Valve.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpFixed_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"Pa\""}}}}}],"equal":true,"expression":{"simple_expression":"0"}}},"description":{"description_string":"Nominal pressure drop of pipes and other equipment in flow leg","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Valve.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpFixedByp_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"Pa\""}}}}}],"equal":true,"expression":{"simple_expression":"dpFixed_nominal"}}},"description":{"description_string":"Nominal pressure drop in the bypass line","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Valve.ThreeWayTwoPosition"],"relation_operator":"=="}]},{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Valve.ThreeWayModulating"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentPrefixes","modification":{"equal":true,"expression":{"simple_expression":"\"parameter\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"datVal\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of sizing parameters for\nthe class\n\nBuildings.Templates.Components.Actuators.Valve.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Components/Data/Valve.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/Components/Data/Valve.mo","checksum":"e16ef36264dbf6e8d067bdbcfb58fc55"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Components/Data/package.json b/server/tests/static-data/json/Buildings/Templates/Components/Data/package.json new file mode 100644 index 00000000..7a577a8a --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/Components/Data/package.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates.Components","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"Data","description_string":"Records for design and operating parameters","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.MaterialPropertiesPackage"}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package provides records for design and operating parameters.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Components/Data/package.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/Components/Data/package.mo","checksum":"48ae7e51df22781f1bd2c10ec31217c0","order":["Chiller","Coil","Damper","Fan","HeatPump","PumpMultiple","PumpSingle","Valve"]} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Components/Types.json b/server/tests/static-data/json/Buildings/Templates/Components/Types.json new file mode 100644 index 00000000..eddba5c3 --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/Components/Types.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates.Components","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"Types","description_string":"Package with type definitions","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.TypesPackage"}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"Chiller","value":{"description":{"description_string":"Enumeration to specify the type of chiller"},"enum_list":[{"identifier":"AirCooled","description":{"description_string":"Air-cooled compression chiller"}},{"identifier":"None","description":{"description_string":"No chiller"}},{"identifier":"WaterCooled","description":{"description_string":"Water-cooled compression chiller"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"Coil","value":{"description":{"description_string":"Enumeration to configure the coil"},"enum_list":[{"identifier":"ElectricHeating","description":{"description_string":"Modulating electric heating coil"}},{"identifier":"EvaporatorMultiStage","description":{"description_string":"Evaporator coil with multi-stage compressor"}},{"identifier":"EvaporatorVariableSpeed","description":{"description_string":"Evaporator coil with variable speed compressor"}},{"identifier":"None","description":{"description_string":"No coil"}},{"identifier":"WaterBasedCooling","description":{"description_string":"Chilled water coil"}},{"identifier":"WaterBasedHeating","description":{"description_string":"Hot water coil"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"Cooler","value":{"description":{"description_string":"Enumeration to configure the condenser water cooling equipment"},"enum_list":[{"identifier":"None","description":{"description_string":"No external cooler (typically for air-cooled chillers)"}},{"identifier":"CoolingTowerClosed","description":{"description_string":"Closed-circuit cooling tower"}},{"identifier":"CoolingTowerOpen","description":{"description_string":"Open-circuit cooling tower"}},{"identifier":"DryCooler","description":{"description_string":"Dry cooler"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"Damper","value":{"description":{"description_string":"Enumeration to configure the damper"},"enum_list":[{"identifier":"Modulating","description":{"description_string":"Modulating damper"}},{"identifier":"None","description":{"description_string":"No damper"}},{"identifier":"PressureIndependent","description":{"description_string":"Pressure independent damper"}},{"identifier":"TwoPosition","description":{"description_string":"Two-position damper"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"DamperBlades","value":{"description":{"description_string":"Enumeration to specify the type of damper blades"},"enum_list":[{"identifier":"Opposed","description":{"description_string":"Opposed blades"}},{"identifier":"Parallel","description":{"description_string":"Parallel blades"}},{"identifier":"VAV","description":{"description_string":"VAV damper"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"Fan","value":{"description":{"description_string":"Enumeration to configure the fan"},"enum_list":[{"identifier":"None","description":{"description_string":"No fan"}},{"identifier":"SingleConstant","description":{"description_string":"Single fan - Constant speed"}},{"identifier":"SingleVariable","description":{"description_string":"Single fan - Variable speed"}},{"identifier":"ArrayVariable","description":{"description_string":"Fan array - Variable speed"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"FanSingle","value":{"description":{"description_string":"Enumeration to specify the type of single fan"},"enum_list":[{"identifier":"Housed","description":{"description_string":"Housed centrifugal fan"}},{"identifier":"Plug","description":{"description_string":"Plug fan"}},{"identifier":"Propeller","description":{"description_string":"Propeller fan"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"HeatPump","value":{"description":{"description_string":"Enumeration to specify the type of heat pump"},"enum_list":[{"identifier":"AirToWater","description":{"description_string":"Air-to-water heat pump"}},{"identifier":"WaterToWater","description":{"description_string":"Water(or brine)-to-water heat pump"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"HeatPumpModel","value":{"description":{"description_string":"Enumeration to specify the heat pump model"},"enum_list":[{"identifier":"EquationFit","description":{"description_string":"Heat pump model based on the equation fit method"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"IntegrationPoint","value":{"description":{"description_string":"Enumeration to specify the integration point of equipment"},"enum_list":[{"identifier":"None","description":{"description_string":"None"}},{"identifier":"Return","description":{"description_string":"Return side"}},{"identifier":"Supply","description":{"description_string":"Supply side"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"Pump","value":{"description":{"description_string":"Enumeration to configure the pump"},"enum_list":[{"identifier":"None","description":{"description_string":"No pump"}},{"identifier":"Single","description":{"description_string":"Single pump"}},{"identifier":"Multiple","description":{"description_string":"Multiple pumps in parallel"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"PumpArrangement","value":{"description":{"description_string":"Enumeration to specify the pump arrangement"},"enum_list":[{"identifier":"Dedicated","description":{"description_string":"Dedicated pumps"}},{"identifier":"Headered","description":{"description_string":"Headered pumps"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"Sensor","value":{"description":{"description_string":"Enumeration to configure the sensor"},"enum_list":[{"identifier":"DifferentialPressure","description":{"description_string":"Differential pressure"}},{"identifier":"HumidityRatio","description":{"description_string":"Humidity ratio"}},{"identifier":"PPM","description":{"description_string":"PPM"}},{"identifier":"RelativeHumidity","description":{"description_string":"Relative humidity"}},{"identifier":"SpecificEnthalpy","description":{"description_string":"Specific enthalpy"}},{"identifier":"Temperature","description":{"description_string":"Temperature"}},{"identifier":"VolumeFlowRate","description":{"description_string":"Volume flow rate"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"SensorTemperature","value":{"description":{"description_string":"Enumeration to specify the type of temperature sensor"},"enum_list":[{"identifier":"Standard","description":{"description_string":"Standard sensor"}},{"identifier":"Averaging","description":{"description_string":"Averaging sensor"}},{"identifier":"InWell","description":{"description_string":"Sensor in well"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"SensorVolumeFlowRate","value":{"description":{"description_string":"Enumeration to specify the type of volume flow rate sensor"},"enum_list":[{"identifier":"AFMS","description":{"description_string":"Airflow measuring station"}},{"identifier":"FlowCross","description":{"description_string":"Flow cross"}},{"identifier":"FlowMeter","description":{"description_string":"Flow meter"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"Valve","value":{"description":{"description_string":"Enumeration to configure the valve"},"enum_list":[{"identifier":"None","description":{"description_string":"No valve"}},{"identifier":"ThreeWayModulating","description":{"description_string":"Three-way modulating valve"}},{"identifier":"ThreeWayTwoPosition","description":{"description_string":"Three-way two-position valve"}},{"identifier":"TwoWayModulating","description":{"description_string":"Two-way modulating valve"}},{"identifier":"TwoWayTwoPosition","description":{"description_string":"Two-way two-position valve"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"ValveCharacteristicTwoWay","value":{"description":{"description_string":"Enumeration to specify the characteristic of two-way valves","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nEnumeration that defines the characteristic of two-way valves.\n

\n\n\n \n\n \n\n \n\n \n\n \n
EnumerationDescription
EqualPercentageEqual percentage
LinearLinear
PressureIndependentPressure independent (mass flow rate only dependent of input signal)
TableTable-specified
\n\""}}}}}]}}}}]},"enum_list":[{"identifier":"EqualPercentage","description":{"description_string":"Equal percentage"}},{"identifier":"Linear","description":{"description_string":"Linear"}},{"identifier":"PressureIndependent","description":{"description_string":"Pressure independent (mass flow rate only dependent of input signal)"}},{"identifier":"Table","description":{"description_string":"Table-specified"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"ValveCharacteristicThreeWay","value":{"description":{"description_string":"Enumeration to specify the characteristic of the bypass valve","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nEnumeration that defines the characteristic of three-way valves.\n

\n\n\n \n\n \n\n \n\n\n
EnumerationDescription
EqualPercentageLinearEqual percentage (direct) and linear (bypass)
LinearLinear (both direct and bypass)
TableTable-specified (both direct and bypass)
\n\""}}}}}]}}}}]},"enum_list":[{"identifier":"EqualPercentageLinear","description":{"description_string":"Equal percentage (direct) and linear (bypass)"}},{"identifier":"Linear","description":{"description_string":"Linear (both direct and bypass)"}},{"identifier":"Table","description":{"description_string":"Table-specified (both direct and bypass)"}}]}}}}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package contains type definitions.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Components/Types.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/Components/Types.mo","checksum":"fc3a03a72dd41973dcf569c2b6e76374"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Components/package.json b/server/tests/static-data/json/Buildings/Templates/Components/package.json new file mode 100644 index 00000000..9641b772 --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/Components/package.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"Components","description_string":"Package with component models","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.VariantsPackage"}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package contains component models that are used in\n\nBuildings.Templates.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Components/package.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/Components/package.mo","checksum":"965580432e6cda4b1fb95c22cc92b325","order":["Actuators","Chillers","Coils","Controls","Fans","HeatPumps","Pumps","Routing","Sensors","Tanks","Data","Types","Validation","Interfaces"]} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Data/AllSystems.json b/server/tests/static-data/json/Buildings/Templates/Data/AllSystems.json new file mode 100644 index 00000000..70100c2d --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/Data/AllSystems.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates.Data","stored_class_definitions":[{"class_prefixes":"class","class_specifier":{"long_class_specifier":{"identifier":"AllSystems","description_string":"Top-level (whole building) system parameters","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Types.Units","component_list":[{"declaration":{"identifier":"sysUni"},"description":{"description_string":"Unit system"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard","component_list":[{"declaration":{"identifier":"stdEne"},"description":{"description_string":"Energy standard","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard","component_list":[{"declaration":{"identifier":"stdVen"},"description":{"description_string":"Ventilation standard","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone","component_list":[{"declaration":{"identifier":"ashCliZon","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_1A"}}}}}]}},"description":{"description_string":"ASHRAE climate zone","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["stdEne","Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone","component_list":[{"declaration":{"identifier":"tit24CliZon","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone.Zone_1"}}}}}]}},"description":{"description_string":"California Title 24 climate zone","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["stdEne","Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentPrefixes","modification":{"equal":true,"expression":{"simple_expression":"\"inner parameter\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"datAll\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis class provides the set of sizing and operating parameters for the whole HVAC system.\n

\n\""}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Icon","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"graphics":[{"name":"Text","attribute":{"extent":[{"x":-150,"y":60},{"x":150,"y":100}],"textString":"\"%name\"","textColor":{"r":0,"g":0,"b":255}}},{"name":"Rectangle","attribute":{"extent":[{"x":-100,"y":-75},{"x":100,"y":75}],"radius":25,"origin":{"x":0,"y":-25},"lineColor":{"r":64,"g":64,"b":64},"fillColor":{"r":85,"g":255,"b":255},"fillPattern":"FillPattern.Solid"}},{"name":"Line","attribute":{"points":[{"x":-100,"y":0},{"x":100,"y":0}],"color":{"r":64,"g":64,"b":64}}},{"name":"Line","attribute":{"points":[{"x":-100,"y":0},{"x":100,"y":0}],"color":{"r":64,"g":64,"b":64}}},{"name":"Line","attribute":{"points":[{"x":0,"y":75},{"x":0,"y":-75}],"color":{"r":64,"g":64,"b":64}}}]}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Data/AllSystems.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/Data/AllSystems.mo","checksum":"ada04a9cdaa64264f150318638d9eea8"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Data/Defaults.json b/server/tests/static-data/json/Buildings/Templates/Data/Defaults.json new file mode 100644 index 00000000..4bf0bf3a --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/Data/Defaults.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates.Data","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"Defaults","description_string":"Package with default sizing parameters","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.MaterialPropertiesPackage"}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TChiWatSup","modification":{"equal":true,"expression":{"simple_expression":"7 +273.15"}}},"description":{"description_string":"CHW supply temperature (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TChiWatSup_min","modification":{"equal":true,"expression":{"simple_expression":"3.3 +273.15"}}},"description":{"description_string":"Minimum CHW supply temperature (typical)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TChiWatSup_max","modification":{"equal":true,"expression":{"simple_expression":"16 +273.15"}}},"description":{"description_string":"Maximum CHW supply temperature (typical)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TChiWatRet","modification":{"equal":true,"expression":{"simple_expression":"12 +273.15"}}},"description":{"description_string":"CHW return temperature (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TConWatSup","modification":{"equal":true,"expression":{"simple_expression":"30 +273.15"}}},"description":{"description_string":"CW supply temperature (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TConWatRet","modification":{"equal":true,"expression":{"simple_expression":"35 +273.15"}}},"description":{"description_string":"CW return temperature (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TOutChi","modification":{"equal":true,"expression":{"simple_expression":"35 +273.15"}}},"description":{"description_string":"Outdoor air temperature for air-cooled chiller (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TConEnt_min","modification":{"equal":true,"expression":{"simple_expression":"13 +273.15"}}},"description":{"description_string":"Minimum condenser entering fluid temperature (air or water)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TConEnt_max","modification":{"equal":true,"expression":{"simple_expression":"45 +273.15"}}},"description":{"description_string":"Maximum condenser entering fluid temperature (air or water)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TConLvg_min","modification":{"equal":true,"expression":{"simple_expression":"16 +273.15"}}},"description":{"description_string":"Minimum condenser leaving fluid temperature (air or water)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TConLvg_max","modification":{"equal":true,"expression":{"simple_expression":"50 +273.15"}}},"description":{"description_string":"Maximum condenser leaving fluid temperature (air or water)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TChiWatEcoEnt","modification":{"equal":true,"expression":{"simple_expression":"18 +273.15"}}},"description":{"description_string":"WSE entering CHW temperature"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TChiWatEcoLvg","modification":{"equal":true,"expression":{"simple_expression":"11 +273.15"}}},"description":{"description_string":"WSE leaving CHW temperature"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TConWatEcoEnt","modification":{"equal":true,"expression":{"simple_expression":"9 +273.15"}}},"description":{"description_string":"WSE entering CW temperature"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TConWatEcoLvg","modification":{"equal":true,"expression":{"simple_expression":"16 +273.15"}}},"description":{"description_string":"WSE leaving CW temperature"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TOutChiWatLck","modification":{"equal":true,"expression":{"simple_expression":"16 +273.15"}}},"description":{"description_string":"Outdoor air lockout temperature below which the CHW system is prevented from operating"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.TemperatureDifference","component_list":[{"declaration":{"identifier":"dTLifChi_min","modification":{"equal":true,"expression":{"simple_expression":"5"}}},"description":{"description_string":"Minimum chiller lift at minimum load"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TOutDryCoo","modification":{"equal":true,"expression":{"simple_expression":"TOutChi"}}},"description":{"description_string":"Dry cooler entering air drybulb temperature"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TWetBulTowEnt","modification":{"equal":true,"expression":{"simple_expression":"24 +273.15"}}},"description":{"description_string":"CT entering air wetbulb temperature"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Real","component_list":[{"declaration":{"identifier":"PFanByFloConWatTow","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"W/(kg/s)\""}}}}}],"equal":true,"expression":{"simple_expression":"340"}}},"description":{"description_string":"CT fan power divided by CW mass flow rate"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Real","component_list":[{"declaration":{"identifier":"mConWatFloByAirTow","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"1\""}}}}}],"equal":true,"expression":{"simple_expression":"1.45"}}},"description":{"description_string":"CT CW mass flow rate divided by air mass flow rate"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpConWatFriTow","modification":{"equal":true,"expression":{"simple_expression":"10000"}}},"description":{"description_string":"CW flow-friction losses through open-circuit tower and piping only (without elevation head or valve)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpConWatStaTow","modification":{"equal":true,"expression":{"simple_expression":"30000"}}},"description":{"description_string":"CW elevation head (for open cooling towers only)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpConWatTowClo","modification":{"equal":true,"expression":{"simple_expression":"50000"}}},"description":{"description_string":"CW flow-friction losses through closed-circuit tower and piping only (without valve)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Real","component_list":[{"declaration":{"identifier":"mAirFloByCapChi","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"(kg/s)/W\""}}}}}],"equal":true,"expression":{"simple_expression":"0.0001"}}},"description":{"description_string":"Air mass flow rate divided by capacity for air-cooled chiller"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Real","component_list":[{"declaration":{"identifier":"COPChiAirCoo","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"1\""}}}}}],"equal":true,"expression":{"simple_expression":"2.99"}}},"description":{"description_string":"Air-cooled chiller COP (ASHRAE 90.1 2022 at 7 ?C CHWST, 35 ?C OAT)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Real","component_list":[{"declaration":{"identifier":"COPChiWatCoo","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"1\""}}}}}],"equal":true,"expression":{"simple_expression":"5.33"}}},"description":{"description_string":"Water-cooled chiller COP (ASHRAE 90.1 2022 at 7 ?C CHWST, 35 ?C source LWT)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpValIso","modification":{"equal":true,"expression":{"simple_expression":"1000"}}},"description":{"description_string":"Isolation or bypass valve pressure drop"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpValBypMin","modification":{"equal":true,"expression":{"simple_expression":"30000"}}},"description":{"description_string":"Minimum flow bypass valve pressure drop at design minimum flow for the largest chiller"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpValChe","modification":{"equal":true,"expression":{"simple_expression":"10000"}}},"description":{"description_string":"Check valve pressure drop"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpChiWatChi","modification":{"equal":true,"expression":{"simple_expression":"40000"}}},"description":{"description_string":"Chiller CHW pressure drop"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpChiWatSet_min","modification":{"equal":true,"expression":{"simple_expression":"5*6894"}}},"description":{"description_string":"Minimum CHW differential pressure setpoint used in CHW plant reset logic"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpChiWatRemSet_max","modification":{"equal":true,"expression":{"simple_expression":"50000"}}},"description":{"description_string":"Maximum CHW differential pressure setpoint remote from the CHW plant"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpChiWatLocSet_max","modification":{"equal":true,"expression":{"simple_expression":"150000"}}},"description":{"description_string":"Maximum CHW differential pressure setpoint local to the CHW plant"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpConWatChi","modification":{"equal":true,"expression":{"simple_expression":"40000"}}},"description":{"description_string":"Chiller CW pressure drop (water-cooled)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpAirChi","modification":{"equal":true,"expression":{"simple_expression":"500"}}},"description":{"description_string":"Chiller air pressure drop across condenser (air-cooled)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpChiWatEco","modification":{"equal":true,"expression":{"simple_expression":"30000"}}},"description":{"description_string":"WSE CHW pressure drop"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpConWatEco","modification":{"equal":true,"expression":{"simple_expression":"30000"}}},"description":{"description_string":"WSE CW pressure drop"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"pChiWat_rel_nominal","modification":{"equal":true,"expression":{"simple_expression":"100000"}}},"description":{"description_string":"CHW system gauge pressure at design conditions"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"pHeaWat_rel_nominal","modification":{"equal":true,"expression":{"simple_expression":"250000"}}},"description":{"description_string":"HHW system gauge pressure at design conditions"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpHeaWatBoi","modification":{"equal":true,"expression":{"simple_expression":"5000"}}},"description":{"description_string":"Boiler HW pressure drop"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"THeaWatSup","modification":{"equal":true,"expression":{"simple_expression":"80 +273.15"}}},"description":{"description_string":"HW supply temperature"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"THeaWatConSup","modification":{"equal":true,"expression":{"simple_expression":"65 +273.15"}}},"description":{"description_string":"HW supply temperature for condensing boilers"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"THeaWatRet","modification":{"equal":true,"expression":{"simple_expression":"55 +273.15"}}},"description":{"description_string":"HW return temperature"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TOutHeaWatLck","modification":{"equal":true,"expression":{"simple_expression":"21 +273.15"}}},"description":{"description_string":"Outdoor air lockout temperature above which the HW system is prevented from operating"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpHeaWatSet_min","modification":{"equal":true,"expression":{"simple_expression":"5*6894"}}},"description":{"description_string":"Minimum HW differential pressure setpoint used in HW plant reset logic"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpHeaWatRemSet_max","modification":{"equal":true,"expression":{"simple_expression":"50000"}}},"description":{"description_string":"Maximum HW differential pressure setpoint remote from the HW plant"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpHeaWatLocSet_max","modification":{"equal":true,"expression":{"simple_expression":"150000"}}},"description":{"description_string":"Maximum HW differential pressure setpoint local to the CHW plant"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpHeaWatHp","modification":{"equal":true,"expression":{"simple_expression":"30000"}}},"description":{"description_string":"Heat pump HW pressure drop across condenser barrel"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"THeaWatSupHig","modification":{"equal":true,"expression":{"simple_expression":"60 +273.15"}}},"description":{"description_string":"HW supply temperature - High temperature level (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"THeaWatRetHig","modification":{"equal":true,"expression":{"simple_expression":"50 +273.15"}}},"description":{"description_string":"HW return temperature - High temperature level (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"THeaWatSupMed","modification":{"equal":true,"expression":{"simple_expression":"50 +273.15"}}},"description":{"description_string":"HW supply temperature - Medium temperature level (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"THeaWatRetMed","modification":{"equal":true,"expression":{"simple_expression":"42 +273.15"}}},"description":{"description_string":"HW return temperature - Medium temperature level (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"THeaWatSupLow","modification":{"equal":true,"expression":{"simple_expression":"40 +273.15"}}},"description":{"description_string":"HW supply temperature - Low temperature level (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"THeaWatRetLow","modification":{"equal":true,"expression":{"simple_expression":"35 +273.15"}}},"description":{"description_string":"HW return temperature - Low temperature level (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TOutHpCoo","modification":{"equal":true,"expression":{"simple_expression":"TOutChi"}}},"description":{"description_string":"Outdoor air temperature for air-to-water heat pump rating - Cooling (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TOutHpHeaHig","modification":{"equal":true,"expression":{"simple_expression":"8 +273.15"}}},"description":{"description_string":"Outdoor air temperature for air-to-water heat pump rating - High heating (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TOutHpHeaLow","modification":{"equal":true,"expression":{"simple_expression":"-8 +273.15"}}},"description":{"description_string":"Outdoor air temperature for air-to-water heat pump rating - Low heating (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TSouHpCoo","modification":{"equal":true,"expression":{"simple_expression":"30 +273.15"}}},"description":{"description_string":"Source fluid entering temperature for water-to-water heat pump rating - Cooling (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TSouHpHea","modification":{"equal":true,"expression":{"simple_expression":"12 +273.15"}}},"description":{"description_string":"Source fluid entering temperature for water-to-water heat pump rating - Heating (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Real","component_list":[{"declaration":{"identifier":"COPHpAwHea","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"1\""}}}}}],"equal":true,"expression":{"simple_expression":"1.75"}}},"description":{"description_string":"Air-to-water heat pump heating COP (ASHRAE 90.1 2022 at 50 ?C HWST, -8 ?C OAT)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Real","component_list":[{"declaration":{"identifier":"COPHpAwCoo","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"1\""}}}}}],"equal":true,"expression":{"simple_expression":"2.84"}}},"description":{"description_string":"Air-to-water heat pump cooling COP (ASHRAE 90.1 2022 at 7 ?C CHWST, 35 ?C OAT)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Real","component_list":[{"declaration":{"identifier":"COPHpWwHea","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"1\""}}}}}],"equal":true,"expression":{"simple_expression":"3.61"}}},"description":{"description_string":"Water(brine)-to-water heat pump heating COP (ASHRAE 90.1 2022 at 50 ?C HWST, 7 ?C source LWT)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Real","component_list":[{"declaration":{"identifier":"COPHpWwCoo","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"1\""}}}}}],"equal":true,"expression":{"simple_expression":"5.07"}}},"description":{"description_string":"Water(brine)-to-water heat pump cooling COP (ASHRAE 90.1 2022 at 7 ?C CHWST, 35 ?C source LWT)"}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package defines some constants that are either\n

\n
    \n
  • \ntypical values used as default parameter values\nfor models inside the package\n\nBuildings.Templates, or\n
  • \n
  • \narbitrary values used for validation purposes only.\nThose are typically project-specific characteristics (e.g.,\nchiller COP at nominal conditions) and should not\nbe considered as generic default values.\n
  • \n
\n\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"revisions","modification":{"equal":true,"expression":{"simple_expression":"\"\n
    \n
  • \nNovember 18, 2022, by Antoine Gautier:
    \nFirst implementation.\n
  • \n
\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Data/Defaults.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/Data/Defaults.mo","checksum":"d8dfbad122d5e7bd56b72c16b81a0a8b"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Data/package.json b/server/tests/static-data/json/Buildings/Templates/Data/package.json new file mode 100644 index 00000000..42c6ecea --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/Data/package.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"Data","description_string":"Package with classes for storing system parameters","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.MaterialPropertiesPackage"}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package provides classes for storing system parameters\nat the top-level of a simulation model.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Data/package.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/Data/package.mo","checksum":"74f091cd84594342c9a953adcf786f68","order":["AllSystems","Defaults"]} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Types.json b/server/tests/static-data/json/Buildings/Templates/Types.json new file mode 100644 index 00000000..60796811 --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/Types.json @@ -0,0 +1 @@ +{"within":"Buildings.Templates","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"Types","description_string":"Package with type definitions","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.TypesPackage"}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"Buildings","value":{"description":{"description_string":"Enumeration to specify the building type"},"enum_list":[{"identifier":"Education","description":{"description_string":"Buildings used for academic or technical classroom instruction"}},{"identifier":"FoodSales","description":{"description_string":"Buildings used for retail or wholesale of food"}},{"identifier":"FoodServices","description":{"description_string":"Buildings used for preparation and sale of food and beverages for consumption"}},{"identifier":"HealthCare","description":{"description_string":"Buildings used as diagnostic and treatment facilities for inpatient care"}},{"identifier":"Lodging","description":{"description_string":"Buildings used to offer multiple accommodations for short-term or long-term residents"}},{"identifier":"MercantileRetail","description":{"description_string":"Buildings used for the sale and display of goods other than food"}},{"identifier":"MercantileMall","description":{"description_string":"Shopping malls comprised of multiple connected establishments"}},{"identifier":"Office","description":{"description_string":"Buildings used for general office space, professional office, or administrative offices"}},{"identifier":"PublicAssembly","description":{"description_string":"Buildings in which people gather for social or recreational activities"}},{"identifier":"PublicOrderSafety","description":{"description_string":"Buildings used for the preservation of law and order or public safety"}},{"identifier":"ReligiousWorkshop","description":{"description_string":"Buildings in which people gather for religious activities"}},{"identifier":"Service","description":{"description_string":"Buildings in which some types of services is provided"}},{"identifier":"WarehouseStorage","description":{"description_string":"Buildings used to store goods, manufactured products, merchandise, raw materials, or personal belongings"}},{"identifier":"Other","description":{"description_string":"All other miscellaneous buildings that do not fit into any other category"}},{"identifier":"Vacant","description":{"description_string":"Buildings in which more floor space was vacant than was used for any single commercial activity"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"Units","value":{"description":{"description_string":"Enumeration to specify the system of units"},"enum_list":[{"identifier":"SI","description":{"description_string":"SI - International units"}},{"identifier":"IP","description":{"description_string":"IP - Imperial units"}}]}}}}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package contains type definitions.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Types.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/Types.mo","checksum":"9fe7c9bfc8ee19cdc2d65153b9a65fc3"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/package.json b/server/tests/static-data/json/Buildings/Templates/package.json new file mode 100644 index 00000000..97ade449 --- /dev/null +++ b/server/tests/static-data/json/Buildings/Templates/package.json @@ -0,0 +1 @@ +{"within":"Buildings","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"Templates","description_string":"Package with templates for various HVAC systems","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Package"}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"__ctrlFlow","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"routing","modification":{"equal":true,"expression":{"simple_expression":"\"root\""}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package contains templates for common HVAC systems.\nA template is defined as a user-configurable model that can represent various\nconfigurations of the same system. The templates include closed-loop controls as\nimplemented within\n\nBuildings.Controls.OBC.\n

\n\""}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Icon","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"graphics":[{"name":"Text","attribute":{"extent":[{"x":-100,"y":100},{"x":100,"y":-100}],"textString":"\"T\"","fontName":"\"monospace\"","textColor":{"r":0,"g":0,"b":0}}}]}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/package.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/package.mo","checksum":"58c428da8279632197e7910aff778511","order":["UsersGuide","AirHandlersFans","Components","Plants","Utilities","ZoneEquipment","Data","Types"]} \ No newline at end of file diff --git a/server/tests/static-data/json/Modelica/Units.json b/server/tests/static-data/json/Modelica/Units.json new file mode 100644 index 00000000..8c5d763c --- /dev/null +++ b/server/tests/static-data/json/Modelica/Units.json @@ -0,0 +1,28575 @@ +{ + "within": "Modelica", + "stored_class_definitions": [ + { + "class_prefixes": "package", + "class_specifier": { + "long_class_specifier": { + "identifier": "Units", + "description_string": "Library of type and unit definitions", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Package" + } + }, + { + "class_definition": { + "class_prefixes": "package", + "class_specifier": { + "long_class_specifier": { + "identifier": "UsersGuide", + "description_string": "User's Guide of Units Library", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Information" + } + }, + { + "class_definition": { + "class_prefixes": "class", + "class_specifier": { + "long_class_specifier": { + "identifier": "HowToUseUnits", + "description_string": "How to use Units", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Information" + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "DocumentationClass", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Documentation", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "info", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"\n

\nWhen implementing a Modelica model, every variable needs to\nbe declared. Physical variables should be declared with a unit.\nThe basic approach in Modelica is that the unit attribute of\na variable is the unit in which the equations are written,\nfor example:\n

\n\n
\nmodel MassOnGround\n  parameter Real m(quantity=\\\"Mass\\\", unit=\\\"kg\\\") \\\"Mass\\\";\n  parameter Real f(quantity=\\\"Force\\\", unit=\\\"N\\\") \\\"Driving force\\\";\n  Real s(unit=\\\"m\\\") \\\"Position of mass\\\";\n  Real v(unit=\\\"m/s\\\") \\\"Velocity of mass\\\";\nequation\n  der(s) = v;\n  m*der(v) = f;\nend MassOnGround;\n
\n\n

\nThis means that the equations in the equation section are only correct\nfor the specified units. A different issue is the user interface, i.e.,\nin which unit the variable is presented to the user in graphical\nuser interfaces, both for input (e.g., parameter menu), as well as\nfor output (e.g., in the plot window). Preferably, the Modelica tool\nshould provide a list of units from which the user can select, e.g.,\n\\\"m\\\", \\\"cm\\\", \\\"km\\\", \\\"inch\\\" for quantity \\\"Length\\\". When storing the value in\nthe model as a Modelica modifier, it has to be converted to the unit defined\nin the declaration. Additionally, the unit used in the graphical\nuser interface has to be stored. In order to have a standardized way\nof doing this, Modelica provides the following three attributes\nfor a variable of type Real:\n

\n\n
    \n
  • quantity to define the physical quantity (e.g., \\\"Length\\\", or \\\"Energy\\\").
  • \n
  • unit to define the unit that has to be used\n in order that the equations are correct (e.g., \\\"N.m\\\").
  • \n
  • displayUnit to define the unit used in the graphical\n user interface as default display unit for input and/or output.
  • \n
\n\n

\nNote, a unit, such as \\\"N.m\\\", is not sufficient to define uniquely the\nphysical quantity, since, e.g., \\\"N.m\\\" might be either \\\"torque\\\" or\n\\\"energy\\\". The \\\"quantity\\\" attribute might therefore be used by a tool\nto select the corresponding menu from which the user can select\na unit for the corresponding variable.\n

\n\n

\nFor example, after providing a value for \\\"m\\\" and \\\"f\\\" in a parameter\nmenu of an instance of MassOnGround, a tool might generate the following code:\n

\n\n
\nMassOnGround myObject(m(displayUnit=\\\"g\\\")=2, f=3);\n
\n\n

\nThe meaning is that in the equations a value of \\\"2\\\" is used\nand that in the graphical user interface a value of \\\"2000\\\" should be used,\ntogether with the unit \\\"g\\\" from the unit set \\\"Mass\\\" (= the quantity name).\nNote, according to the Modelica specification\na tool might ignore the \\\"displayUnit\\\" attribute.\n

\n\n

\nIn order to help the Modelica model developer, the Modelica.Units\nlibrary provides about 450 predefined type names,\ntogether with values for the attributes quantity, unit and sometimes\ndisplayUnit and min. The unit is always selected as SI-unit according to the\nISO standard. The type and the quantity names are the\nquantity names used in the ISO standard. \\\"quantity\\\" and \\\"unit\\\" are defined\nas \\\"final\\\" in order that they cannot be modified. Attributes \\\"displayUnit\\\"\nand \\\"min\\\" can, however, be changed in a model via a modification. The example above,\nmight therefore be alternatively also defined as:\n

\n\n
\nmodel MassOnGround\n  parameter Modelica.Units.SI.Mass  m \\\"Mass\\\";\n  parameter Modelica.Units.SI.Force f \\\"Driving force\\\";\n  ...\nend MassOnGround;\n
\n\n

\nor in a short hand notation as\n

\n\n
\nmodel MassOnGround\n  import Modelica.Units.SI;\n  parameter SI.Mass  m \\\"Mass\\\";\n  parameter SI.Force f \\\"Driving force\\\";\n  ...\nend MassOnGround;\n
\n\n

\nFor some often\nused Non SI-units (like hour), some additional type definitions are\npresent as Modelica.Units.NonSI. If this is not sufficient,\nthe user has to define its own types or use the attributes directly\nin the declaration as in the example at the beginning.\n

\n\n

\nComplex units are also included in Modelica.Units.\nA complex unit is declared as:\n

\n
\nmodel QuasiStaticMachine\n  parameter Modelica.Units.SI.ComplexPower SNominal = Complex(10000,4400)\n     \\\"Nominal complex power\\\";\n  ...\nend QuasiStaticMachine;\n
\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "class", + "class_specifier": { + "long_class_specifier": { + "identifier": "Conventions", + "description_string": "Conventions", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Information" + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "DocumentationClass", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Documentation", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "info", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"\n

The following conventions are used in package Modelica.Units.SI:

\n
    \n
  • Modelica quantity names are defined according to the recommendations\n of ISO 31. Some of these name are rather long, such as\n \\\"ThermodynamicTemperature\\\". Shorter alias names are defined, e.g.,\n \\\"type Temperature = ThermodynamicTemperature;\\\".
  • \n
  • Modelica units are defined according to the SI base units without\n multiples (only exception \\\"kg\\\").
  • \n
  • For some quantities, more convenient units for an engineer are\n defined as \\\"displayUnit\\\", i.e., the default unit for display\n purposes (e.g., displayUnit=\\\"deg\\\" for quantity=\\\"Angle\\\").
  • \n
  • The type name is identical to the quantity name, following\n the convention of type names.
  • \n
  • All quantity and unit attributes are defined as final in order\n that they cannot be redefined to another value.
  • \n
  • Similar quantities, such as \\\"Length, Breadth, Height, Thickness,\n Radius\\\" are defined as the same quantity (here: \\\"Length\\\").
  • \n
  • The ordering of the type declarations in this package follows ISO 31:\n
    \nChapter  1: Space and Time\nChapter  2: Periodic and Related Phenomena\nChapter  3: Mechanics\nChapter  4: Heat\nChapter  5: Electricity and Magnetism\nChapter  6: Light and Related Electromagnetic Radiations\nChapter  7: Acoustics\nChapter  8: Physical Chemistry\nChapter  9: Atomic and Nuclear Physics\nChapter 10: Nuclear Reactions and Ionizing Radiations\nChapter 11: (not defined in ISO 31-1992)\nChapter 12: Characteristic Numbers\nChapter 13: Solid State Physics\n
    \n
  • \n
  • Conversion functions between SI and other units are available in the subpackage\n Conversions.
  • \n
\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "class", + "class_specifier": { + "long_class_specifier": { + "identifier": "Literature", + "description_string": "Literature", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.References" + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Documentation", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "info", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"\n

This package is based on the following references\n

\n\n
\n
ISO 31-1992:
\n
General principles concerning\n quantities, units and symbols.
 
\n\n
ISO 1000-1992:
\n
SI units and recommendations for the use\n of their multiples and of certain other units.
 
\n\n
Cardarelli F.:
\n
Scientific Unit Conversion - A Practical\n Guide to Metrication. Springer 1997.
\n
\n\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "class", + "class_specifier": { + "long_class_specifier": { + "identifier": "Contact", + "description_string": "Contact", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Contact" + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Documentation", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "info", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"\n

Main author

\n\n

\nMartin Otter
\nDeutsches Zentrum für Luft- und Raumfahrt e.V. (DLR)
\nInstitut für Systemdynamik und Regelungstechnik (DLR-SR)
\nForschungszentrum Oberpfaffenhofen
\nD-82234 Wessling
\nGermany
\nemail: Martin.Otter@dlr.de\n

\n\n

Acknowledgements

\n\n

\nAstrid Jaschinski, Hubertus Tummescheit and Christian Schweiger\ncontributed to the implementation of this package.\n

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "DocumentationClass", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Documentation", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "info", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"\n

\nLibrary Units is a free Modelica package providing\npredefined types, such as Mass,\nLength, Time.

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "package", + "class_specifier": { + "long_class_specifier": { + "identifier": "SI", + "description_string": "Library of SI unit definitions", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Package" + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Angle", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Angle\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"rad\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "displayUnit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"deg\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SolidAngle", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SolidAngle\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"sr\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Length", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Length\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "PathLength", + "value": { + "name": "Length" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Position", + "value": { + "name": "Length" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Distance", + "value": { + "name": "Length", + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Breadth", + "value": { + "name": "Length", + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Height", + "value": { + "name": "Length", + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Thickness", + "value": { + "name": "Length", + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Radius", + "value": { + "name": "Length", + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Diameter", + "value": { + "name": "Length", + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Area", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Area\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Volume", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Volume\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m3\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Time", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Time\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Duration", + "value": { + "name": "Time" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "AngularVelocity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AngularVelocity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"rad/s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "AngularAcceleration", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AngularAcceleration\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"rad/s2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "AngularJerk", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AngularJerk\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"rad/s3\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Velocity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Velocity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m/s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Acceleration", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Acceleration\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m/s2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Jerk", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Jerk\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m/s3\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Period", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Time\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Frequency", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Frequency\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Hz\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "AngularFrequency", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AngularFrequency\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"rad/s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Wavelength", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Wavelength\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "WaveNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"WaveNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m-1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "CircularWaveNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"CircularWaveNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"rad/m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "AmplitudeLevelDifference", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AmplitudeLevelDifference\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"dB\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "PowerLevelDifference", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"PowerLevelDifference\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"dB\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DampingCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"DampingCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"s-1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LogarithmicDecrement", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"LogarithmicDecrement\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1/S\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "AttenuationCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AttenuationCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m-1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "PhaseCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"PhaseCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m-1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "PropagationCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"PropagationCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m-1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Damping", + "value": { + "name": "DampingCoefficient" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Mass", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Mass\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"kg\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Density", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Density\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"kg/m3\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "displayUnit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"g/cm3\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "RelativeDensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"RelativeDensity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SpecificVolume", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SpecificVolume\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m3/kg\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LinearDensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"LinearDensity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"kg/m\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SurfaceDensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SurfaceDensity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"kg/m2\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Momentum", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Momentum\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"kg.m/s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Impulse", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Impulse\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"N.s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "AngularMomentum", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AngularMomentum\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"kg.m2/s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "AngularImpulse", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AngularImpulse\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"N.m.s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MomentOfInertia", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MomentOfInertia\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"kg.m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Inertia", + "value": { + "name": "MomentOfInertia" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Force", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Force\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"N\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "TranslationalSpringConstant", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"TranslationalSpringConstant\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"N/m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "TranslationalDampingConstant", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"TranslationalDampingConstant\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"N.s/m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Weight", + "value": { + "name": "Force" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Torque", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Torque\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"N.m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ElectricalTorqueConstant", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ElectricalTorqueConstant\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"N.m/A\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MomentOfForce", + "value": { + "name": "Torque" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ImpulseFlowRate", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ImpulseFlowRate\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"N\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "AngularImpulseFlowRate", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AngularImpulseFlowRate\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"N.m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "RotationalSpringConstant", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"RotationalSpringConstant\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"N.m/rad\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "RotationalDampingConstant", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"RotationalDampingConstant\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"N.m.s/rad\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Pressure", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Pressure\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Pa\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "displayUnit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"bar\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "AbsolutePressure", + "value": { + "name": "Pressure", + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "nominal", + "modification": { + "equal": true, + "expression": { + "simple_expression": "100000" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "PressureDifference", + "value": { + "name": "Pressure" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "BulkModulus", + "value": { + "name": "AbsolutePressure" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Stress", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Pa\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "NormalStress", + "value": { + "name": "Stress" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ShearStress", + "value": { + "name": "Stress" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Strain", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Strain\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LinearStrain", + "value": { + "name": "Strain" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ShearStrain", + "value": { + "name": "Strain" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "VolumeStrain", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"VolumeStrain\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "PoissonNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"PoissonNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ModulusOfElasticity", + "value": { + "name": "Stress" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ShearModulus", + "value": { + "name": "Stress" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SecondMomentOfArea", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SecondMomentOfArea\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m4\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SecondPolarMomentOfArea", + "value": { + "name": "SecondMomentOfArea" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SectionModulus", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SectionModulus\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m3\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "CoefficientOfFriction", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"CoefficientOfFriction\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DynamicViscosity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"DynamicViscosity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Pa.s\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "KinematicViscosity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"KinematicViscosity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m2/s\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SurfaceTension", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SurfaceTension\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"N/m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Work", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Work\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Energy", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Energy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "EnergyDensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"EnergyDensity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J/m3\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "PotentialEnergy", + "value": { + "name": "Energy" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "KineticEnergy", + "value": { + "name": "Energy" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Power", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Power\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"W\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "EnergyFlowRate", + "value": { + "name": "Power" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "EnthalpyFlowRate", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"EnthalpyFlowRate\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"W\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Efficiency", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Efficiency\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MassFlowRate", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MassFlowRate\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"kg/s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "VolumeFlowRate", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"VolumeFlowRate\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m3/s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MomentumFlux", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MomentumFlux\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"N\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "AngularMomentumFlux", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AngularMomentumFlux\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"N.m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ThermodynamicTemperature", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ThermodynamicTemperature\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"K\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "start", + "modification": { + "equal": true, + "expression": { + "simple_expression": "288.15" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "nominal", + "modification": { + "equal": true, + "expression": { + "simple_expression": "300" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "displayUnit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"degC\"" + } + } + } + } + } + ], + "description": { + "description_string": "Absolute temperature (use type TemperatureDifference for relative temperatures)", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "absoluteValue", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Temperature", + "value": { + "name": "ThermodynamicTemperature" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "TemperatureDifference", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ThermodynamicTemperature\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"K\"" + } + } + } + } + } + ], + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "absoluteValue", + "modification": { + "equal": true, + "expression": { + "simple_expression": "false" + } + } + } + } + } + ] + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "TemperatureSlope", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"TemperatureSlope\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"K/s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LinearTemperatureCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"LinearTemperatureCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1/K\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "QuadraticTemperatureCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"QuadraticTemperatureCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1/K2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LinearExpansionCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"LinearExpansionCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1/K\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "CubicExpansionCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"CubicExpansionCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1/K\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "RelativePressureCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"RelativePressureCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1/K\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "PressureCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"PressureCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Pa/K\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Compressibility", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Compressibility\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1/Pa\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "IsothermalCompressibility", + "value": { + "name": "Compressibility" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "IsentropicCompressibility", + "value": { + "name": "Compressibility" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Heat", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Energy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "HeatFlowRate", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Power\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"W\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "HeatFlux", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"HeatFlux\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"W/m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DensityOfHeatFlowRate", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"DensityOfHeatFlowRate\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"W/m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ThermalConductivity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ThermalConductivity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"W/(m.K)\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "CoefficientOfHeatTransfer", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"CoefficientOfHeatTransfer\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"W/(m2.K)\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SurfaceCoefficientOfHeatTransfer", + "value": { + "name": "CoefficientOfHeatTransfer" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ThermalInsulance", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ThermalInsulance\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m2.K/W\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ThermalResistance", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ThermalResistance\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"K/W\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ThermalConductance", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ThermalConductance\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"W/K\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ThermalDiffusivity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ThermalDiffusivity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m2/s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "HeatCapacity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"HeatCapacity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J/K\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SpecificHeatCapacity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SpecificHeatCapacity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J/(kg.K)\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SpecificHeatCapacityAtConstantPressure", + "value": { + "name": "SpecificHeatCapacity" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SpecificHeatCapacityAtConstantVolume", + "value": { + "name": "SpecificHeatCapacity" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SpecificHeatCapacityAtSaturation", + "value": { + "name": "SpecificHeatCapacity" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "RatioOfSpecificHeatCapacities", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"RatioOfSpecificHeatCapacities\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "IsentropicExponent", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"IsentropicExponent\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Entropy", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Entropy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J/K\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "EntropyFlowRate", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"EntropyFlowRate\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J/(K.s)\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SpecificEntropy", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SpecificEntropy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J/(kg.K)\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "InternalEnergy", + "value": { + "name": "Heat" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Enthalpy", + "value": { + "name": "Heat" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "HelmholtzFreeEnergy", + "value": { + "name": "Heat" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "GibbsFreeEnergy", + "value": { + "name": "Heat" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SpecificEnergy", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SpecificEnergy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J/kg\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SpecificInternalEnergy", + "value": { + "name": "SpecificEnergy" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SpecificEnthalpy", + "value": { + "name": "SpecificEnergy" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SpecificHelmholtzFreeEnergy", + "value": { + "name": "SpecificEnergy" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SpecificGibbsFreeEnergy", + "value": { + "name": "SpecificEnergy" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MassieuFunction", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MassieuFunction\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J/K\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "PlanckFunction", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"PlanckFunction\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J/K\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DerDensityByEnthalpy", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"kg.s2/m5\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DerDensityByPressure", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"s2/m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DerDensityByTemperature", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"kg/(m3.K)\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DerEnthalpyByPressure", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J.m.s2/kg2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DerEnergyByDensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J.m3/kg\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DerEnergyByPressure", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J.m.s2/kg\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DerPressureByDensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Pa.m3/kg\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DerPressureByTemperature", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Pa/K\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ElectricCurrent", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ElectricCurrent\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"A\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Current", + "value": { + "name": "ElectricCurrent" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "CurrentSlope", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"CurrentSlope\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"A/s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ElectricCharge", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ElectricCharge\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"C\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Charge", + "value": { + "name": "ElectricCharge" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "VolumeDensityOfCharge", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"VolumeDensityOfCharge\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"C/m3\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SurfaceDensityOfCharge", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SurfaceDensityOfCharge\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"C/m2\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ElectricFieldStrength", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ElectricFieldStrength\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"V/m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ElectricPotential", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ElectricPotential\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"V\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Voltage", + "value": { + "name": "ElectricPotential" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "PotentialDifference", + "value": { + "name": "ElectricPotential" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ElectromotiveForce", + "value": { + "name": "ElectricPotential" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "VoltageSecond", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"VoltageSecond\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"V.s\"" + } + } + } + } + } + ], + "description": { + "description_string": "Voltage second" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "VoltageSlope", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"VoltageSlope\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"V/s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ElectricFluxDensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ElectricFluxDensity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"C/m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ElectricFlux", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ElectricFlux\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"C\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Capacitance", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Capacitance\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"F\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "CapacitancePerArea", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"CapacitancePerArea\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"F/m2\"" + } + } + } + } + } + ], + "description": { + "description_string": "Capacitance per area" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Permittivity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Permittivity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"F/m\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "PermittivityOfVacuum", + "value": { + "name": "Permittivity" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "RelativePermittivity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"RelativePermittivity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ElectricSusceptibility", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ElectricSusceptibility\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ElectricPolarization", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ElectricPolarization\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"C/m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Electrization", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Electrization\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"V/m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ElectricDipoleMoment", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ElectricDipoleMoment\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"C.m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "CurrentDensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"CurrentDensity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"A/m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LinearCurrentDensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"LinearCurrentDensity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"A/m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MagneticFieldStrength", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MagneticFieldStrength\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"A/m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MagneticPotential", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MagneticPotential\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"A\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MagneticPotentialDifference", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MagneticPotential\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"A\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MagnetomotiveForce", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MagnetomotiveForce\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"A\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "CurrentLinkage", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"CurrentLinkage\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"A\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MagneticFluxDensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MagneticFluxDensity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"T\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MagneticFlux", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MagneticFlux\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Wb\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MagneticVectorPotential", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MagneticVectorPotential\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Wb/m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Inductance", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Inductance\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"H\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SelfInductance", + "value": { + "name": "Inductance", + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MutualInductance", + "value": { + "name": "Inductance" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "CouplingCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"CouplingCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LeakageCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"LeakageCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Permeability", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Permeability\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"H/m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "PermeabilityOfVacuum", + "value": { + "name": "Permeability" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "RelativePermeability", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"RelativePermeability\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MagneticSusceptibility", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MagneticSusceptibility\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ElectromagneticMoment", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ElectromagneticMoment\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"A.m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MagneticDipoleMoment", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MagneticDipoleMoment\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Wb.m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Magnetization", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Magnetization\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"A/m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MagneticPolarization", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MagneticPolarization\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"T\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ElectromagneticEnergyDensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"EnergyDensity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J/m3\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "PoyntingVector", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"PoyntingVector\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"W/m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Resistance", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Resistance\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Ohm\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Resistivity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Resistivity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Ohm.m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Conductivity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Conductivity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"S/m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Reluctance", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Reluctance\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"H-1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Permeance", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Permeance\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"H\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "PhaseDifference", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Angle\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"rad\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "displayUnit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"deg\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Impedance", + "value": { + "name": "Resistance" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ModulusOfImpedance", + "value": { + "name": "Resistance" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Reactance", + "value": { + "name": "Resistance" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "QualityFactor", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"QualityFactor\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LossAngle", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Angle\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"rad\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "displayUnit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"deg\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Conductance", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Conductance\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"S\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Admittance", + "value": { + "name": "Conductance" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ModulusOfAdmittance", + "value": { + "name": "Conductance" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Susceptance", + "value": { + "name": "Conductance" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "InstantaneousPower", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Power\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"W\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ActivePower", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Power\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"W\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ApparentPower", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Power\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"V.A\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ReactivePower", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Power\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"var\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "PowerFactor", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"PowerFactor\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LinearTemperatureCoefficientResistance", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"LinearTemperatureCoefficientResistance\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Ohm/K\"" + } + } + } + } + } + ], + "description": { + "description_string": "First order temperature coefficient" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "QuadraticTemperatureCoefficientResistance", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"QuadraticTemperatureCoefficientResistance\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Ohm/K2\"" + } + } + } + } + } + ], + "description": { + "description_string": "Second order temperature coefficient" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Transconductance", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Transconductance\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"A/V2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "InversePotential", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"InversePotential\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1/V\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ElectricalForceConstant", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ElectricalForceConstant\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"N/A\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "RadiantEnergy", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Energy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "RadiantEnergyDensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"EnergyDensity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J/m3\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SpectralRadiantEnergyDensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SpectralRadiantEnergyDensity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J/m4\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "RadiantPower", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Power\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"W\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "RadiantEnergyFluenceRate", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"RadiantEnergyFluenceRate\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"W/m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "RadiantIntensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"RadiantIntensity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"W/sr\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Radiance", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Radiance\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"W/(sr.m2)\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "RadiantExitance", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"RadiantExitance\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"W/m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Irradiance", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Irradiance\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"W/m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Emissivity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Emissivity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SpectralEmissivity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SpectralEmissivity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DirectionalSpectralEmissivity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"DirectionalSpectralEmissivity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LuminousIntensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"LuminousIntensity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"cd\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LuminousFlux", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"LuminousFlux\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"lm\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "QuantityOfLight", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"QuantityOfLight\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"lm.s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Luminance", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Luminance\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"cd/m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LuminousExitance", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"LuminousExitance\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"lm/m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Illuminance", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Illuminance\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"lx\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LightExposure", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"LightExposure\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"lx.s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LuminousEfficacy", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"LuminousEfficacy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"lm/W\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SpectralLuminousEfficacy", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SpectralLuminousEfficacy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"lm/W\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LuminousEfficiency", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"LuminousEfficiency\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SpectralLuminousEfficiency", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SpectralLuminousEfficiency\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "CIESpectralTristimulusValues", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"CIESpectralTristimulusValues\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ChromaticityCoordinates", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"CromaticityCoordinates\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SpectralAbsorptionFactor", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SpectralAbsorptionFactor\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SpectralReflectionFactor", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SpectralReflectionFactor\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SpectralTransmissionFactor", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SpectralTransmissionFactor\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SpectralRadianceFactor", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SpectralRadianceFactor\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LinearAttenuationCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AttenuationCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m-1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LinearAbsorptionCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"LinearAbsorptionCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m-1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MolarAbsorptionCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MolarAbsorptionCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m2/mol\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "RefractiveIndex", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"RefractiveIndex\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "StaticPressure", + "value": { + "name": "AbsolutePressure" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SoundPressure", + "value": { + "name": "StaticPressure" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SoundParticleDisplacement", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Length\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SoundParticleVelocity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Velocity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m/s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SoundParticleAcceleration", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Acceleration\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m/s2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "VelocityOfSound", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Velocity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m/s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SoundEnergyDensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"EnergyDensity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J/m3\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SoundPower", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Power\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"W\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SoundIntensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SoundIntensity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"W/m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "AcousticImpedance", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AcousticImpedance\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Pa.s/m3\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SpecificAcousticImpedance", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SpecificAcousticImpedance\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Pa.s/m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MechanicalImpedance", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MechanicalImpedance\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"N.s/m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SoundPressureLevel", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SoundPressureLevel\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"dB\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SoundPowerLevel", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SoundPowerLevel\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"dB\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DissipationCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"DissipationCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ReflectionCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ReflectionCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "TransmissionCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"TransmissionCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "AcousticAbsorptionCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AcousticAbsorptionCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SoundReductionIndex", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SoundReductionIndex\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"dB\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "EquivalentAbsorptionArea", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Area\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ReverberationTime", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Time\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LoudnessLevel", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"LoudnessLevel\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"phon\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Loudness", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Loudness\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"sone\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "RelativeAtomicMass", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"RelativeAtomicMass\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "RelativeMolecularMass", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"RelativeMolecularMass\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "NumberOfMolecules", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"NumberOfMolecules\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "AmountOfSubstance", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AmountOfSubstance\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"mol\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Molality", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Molality\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"mol/kg\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MolalConcentration", + "value": { + "name": "Molality" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MolarMass", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MolarMass\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"kg/mol\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MolarVolume", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MolarVolume\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m3/mol\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MolarDensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MolarDensity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"mol/m3\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Molarity", + "value": { + "name": "MolarDensity" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MolarConcentration", + "value": { + "name": "MolarDensity" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MolarEnergy", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MolarEnergy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J/mol\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "nominal", + "modification": { + "equal": true, + "expression": { + "simple_expression": "20000" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MolarInternalEnergy", + "value": { + "name": "MolarEnergy" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MolarHeatCapacity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MolarHeatCapacity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J/(mol.K)\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MolarEntropy", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MolarEntropy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J/(mol.K)\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MolarEnthalpy", + "value": { + "name": "MolarEnergy" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MolarFlowRate", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MolarFlowRate\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"mol/s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "NumberDensityOfMolecules", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"NumberDensityOfMolecules\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m-3\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MolecularConcentration", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MolecularConcentration\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m-3\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MassConcentration", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MassConcentration\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"kg/m3\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MassFraction", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MassFraction\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "max", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Concentration", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Concentration\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"mol/m3\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "VolumeFraction", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"VolumeFraction\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MoleFraction", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MoleFraction\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "max", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ChemicalPotential", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ChemicalPotential\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J/mol\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "AbsoluteActivity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AbsoluteActivity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "PartialPressure", + "value": { + "name": "AbsolutePressure" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Fugacity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Fugacity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Pa\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "StandardAbsoluteActivity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"StandardAbsoluteActivity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ActivityCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ActivityCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ActivityOfSolute", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ActivityOfSolute\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ActivityCoefficientOfSolute", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ActivityCoefficientOfSolute\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "StandardAbsoluteActivityOfSolute", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"StandardAbsoluteActivityOfSolute\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ActivityOfSolvent", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ActivityOfSolvent\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "OsmoticCoefficientOfSolvent", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"OsmoticCoefficientOfSolvent\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "StandardAbsoluteActivityOfSolvent", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"StandardAbsoluteActivityOfSolvent\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "OsmoticPressure", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Pressure\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Pa\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "displayUnit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"bar\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "StoichiometricNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"StoichiometricNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Affinity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Affinity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J/mol\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MassOfMolecule", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Mass\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"kg\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ElectricDipoleMomentOfMolecule", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ElectricDipoleMomentOfMolecule\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"C.m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ElectricPolarizabilityOfAMolecule", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ElectricPolarizabilityOfAMolecule\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"C.m2/V\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MicrocanonicalPartitionFunction", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MicrocanonicalPartitionFunction\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "CanonicalPartitionFunction", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"CanonicalPartitionFunction\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "GrandCanonicalPartitionFunction", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"GrandCanonicalPartitionFunction\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MolecularPartitionFunction", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MolecularPartitionFunction\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "StatisticalWeight", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"StatisticalWeight\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MeanFreePath", + "value": { + "name": "Length" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DiffusionCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"DiffusionCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m2/s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ThermalDiffusionRatio", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ThermalDiffusionRatio\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ThermalDiffusionFactor", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ThermalDiffusionFactor\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ThermalDiffusionCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ThermalDiffusionCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m2/s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ElementaryCharge", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ElementaryCharge\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"C\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ChargeNumberOfIon", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ChargeNumberOfIon\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "FaradayConstant", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"FaradayConstant\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"C/mol\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "IonicStrength", + "value": { + "name": "Molality" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DegreeOfDissociation", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"DegreeOfDissociation\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ElectrolyticConductivity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ElectrolyticConductivity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"S/m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MolarConductivity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MolarConductivity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"S.m2/mol\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "TransportNumberOfIonic", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"TransportNumberOfIonic\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ProtonNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ProtonNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "NeutronNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"NeutronNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "NucleonNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"NucleonNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "AtomicMassConstant", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Mass\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"kg\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MassOfElectron", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Mass\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"kg\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MassOfProton", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Mass\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"kg\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MassOfNeutron", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Mass\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"kg\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "HartreeEnergy", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Energy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MagneticMomentOfParticle", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MagneticMomentOfParticle\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"A.m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "BohrMagneton", + "value": { + "name": "MagneticMomentOfParticle" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "NuclearMagneton", + "value": { + "name": "MagneticMomentOfParticle" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "GyromagneticCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"GyromagneticCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"A.m2/(J.s)\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "GFactorOfAtom", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"GFactorOfAtom\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "GFactorOfNucleus", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"GFactorOfNucleus\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LarmorAngularFrequency", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AngularFrequency\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"s-1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "NuclearPrecessionAngularFrequency", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AngularFrequency\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"s-1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "CyclotronAngularFrequency", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AngularFrequency\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"s-1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "NuclearQuadrupoleMoment", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"NuclearQuadrupoleMoment\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "NuclearRadius", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Length\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ElectronRadius", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Length\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ComptonWavelength", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Length\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MassExcess", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Mass\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"kg\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MassDefect", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Mass\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"kg\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "RelativeMassExcess", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"RelativeMassExcess\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "RelativeMassDefect", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"RelativeMassDefect\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "PackingFraction", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"PackingFraction\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "BindingFraction", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"BindingFraction\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MeanLife", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Time\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LevelWidth", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"LevelWidth\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Activity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Activity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Bq\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SpecificActivity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SpecificActivity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Bq/kg\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DecayConstant", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"DecayConstant\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"s-1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "HalfLife", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Time\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "AlphaDisintegrationEnergy", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Energy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MaximumBetaParticleEnergy", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Energy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "BetaDisintegrationEnergy", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Energy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ReactionEnergy", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Energy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ResonanceEnergy", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Energy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "CrossSection", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Area\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "TotalCrossSection", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Area\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "AngularCrossSection", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AngularCrossSection\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m2/sr\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SpectralCrossSection", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SpectralCrossSection\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m2/J\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SpectralAngularCrossSection", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SpectralAngularCrossSection\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m2/(sr.J)\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MacroscopicCrossSection", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MacroscopicCrossSection\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m-1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "TotalMacroscopicCrossSection", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"TotalMacroscopicCrossSection\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m-1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ParticleFluence", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ParticleFluence\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m-2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ParticleFluenceRate", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ParticleFluenceRate\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"s-1.m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "EnergyFluence", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"EnergyFluence\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J/m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "EnergyFluenceRate", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"EnergyFluenceRate\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"W/m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "CurrentDensityOfParticles", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"CurrentDensityOfParticles\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m-2.s-1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MassAttenuationCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MassAttenuationCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m2/kg\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MolarAttenuationCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MolarAttenuationCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m2/mol\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "AtomicAttenuationCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AtomicAttenuationCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "HalfThickness", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Length\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "TotalLinearStoppingPower", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"TotalLinearStoppingPower\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J/m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "TotalAtomicStoppingPower", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"TotalAtomicStoppingPower\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J.m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "TotalMassStoppingPower", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"TotalMassStoppingPower\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J.m2/kg\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MeanLinearRange", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Length\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MeanMassRange", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MeanMassRange\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"kg/m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LinearIonization", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"LinearIonization\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m-1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "TotalIonization", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"TotalIonization\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Mobility", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Mobility\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m2/(V.s)\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "IonNumberDensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"IonNumberDensity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m-3\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "RecombinationCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"RecombinationCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m3/s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "NeutronNumberDensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"NeutronNumberDensity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m-3\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "NeutronSpeed", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Velocity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m/s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "NeutronFluenceRate", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"NeutronFluenceRate\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"s-1.m-2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "TotalNeutronSourceDensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"TotalNeutronSourceDensity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"s-1.m-3\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SlowingDownDensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SlowingDownDensity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"s-1.m-3\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ResonanceEscapeProbability", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ResonanceEscapeProbability\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Lethargy", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Lethargy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SlowingDownArea", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Area\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DiffusionArea", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Area\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MigrationArea", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Area\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SlowingDownLength", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SLength\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DiffusionLength", + "value": { + "name": "Length" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MigrationLength", + "value": { + "name": "Length" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "NeutronYieldPerFission", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"NeutronYieldPerFission\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "NeutronYieldPerAbsorption", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"NeutronYieldPerAbsorption\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "FastFissionFactor", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"FastFissionFactor\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ThermalUtilizationFactor", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ThermalUtilizationFactor\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "NonLeakageProbability", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"NonLeakageProbability\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Reactivity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Reactivity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ReactorTimeConstant", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Time\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "EnergyImparted", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Energy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MeanEnergyImparted", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Energy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SpecificEnergyImparted", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SpecificEnergy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Gy\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "AbsorbedDose", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AbsorbedDose\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Gy\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DoseEquivalent", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"DoseEquivalent\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Sv\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "AbsorbedDoseRate", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AbsorbedDoseRate\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Gy/s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LinearEnergyTransfer", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"LinearEnergyTransfer\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J/m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Kerma", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Kerma\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Gy\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "KermaRate", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"KermaRate\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Gy/s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MassEnergyTransferCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MassEnergyTransferCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m2/kg\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Exposure", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Exposure\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"C/kg\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ExposureRate", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ExposureRate\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"C/(kg.s)\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ReynoldsNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ReynoldsNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "EulerNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"EulerNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "FroudeNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"FroudeNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "GrashofNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"GrashofNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "WeberNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"WeberNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MachNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MachNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "KnudsenNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"KnudsenNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "StrouhalNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"StrouhalNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "FourierNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"FourierNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "PecletNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"PecletNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "RayleighNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"RayleighNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "NusseltNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"NusseltNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "BiotNumber", + "value": { + "name": "NusseltNumber" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "StantonNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"StantonNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "FourierNumberOfMassTransfer", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"FourierNumberOfMassTransfer\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "PecletNumberOfMassTransfer", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"PecletNumberOfMassTransfer\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "GrashofNumberOfMassTransfer", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"GrashofNumberOfMassTransfer\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "NusseltNumberOfMassTransfer", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"NusseltNumberOfMassTransfer\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "StantonNumberOfMassTransfer", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"StantonNumberOfMassTransfer\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "PrandtlNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"PrandtlNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SchmidtNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SchmidtNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LewisNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"LewisNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MagneticReynoldsNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MagneticReynoldsNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "AlfvenNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AlfvenNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "HartmannNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"HartmannNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "CowlingNumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"CowlingNumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "BraggAngle", + "value": { + "name": "Angle" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "OrderOfReflexion", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"OrderOfReflexion\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ShortRangeOrderParameter", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"RangeOrderParameter\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LongRangeOrderParameter", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"RangeOrderParameter\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DebyeWallerFactor", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"DebyeWallerFactor\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "CircularWavenumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"CircularWavenumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m-1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "FermiCircularWavenumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"FermiCircularWavenumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m-1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DebyeCircularWavenumber", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"DebyeCircularWavenumber\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m-1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DebyeCircularFrequency", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AngularFrequency\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"s-1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DebyeTemperature", + "value": { + "name": "ThermodynamicTemperature" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SpectralConcentration", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SpectralConcentration\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"s/m3\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "GrueneisenParameter", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"GrueneisenParameter\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MadelungConstant", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MadelungConstant\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DensityOfStates", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"DensityOfStates\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"J-1/m-3\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ResidualResistivity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ResidualResistivity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Ohm.m\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LorenzCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"LorenzCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"V2/K2\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "HallCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"HallCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m3/C\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ThermoelectromotiveForce", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ThermoelectromotiveForce\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"V\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SeebeckCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SeebeckCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"V/K\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "PeltierCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"PeltierCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"V\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ThomsonCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ThomsonCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"V/K\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "RichardsonConstant", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"RichardsonConstant\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"A/(m2.K2)\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "FermiEnergy", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Energy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"eV\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "GapEnergy", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Energy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"eV\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DonorIonizationEnergy", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Energy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"eV\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "AcceptorIonizationEnergy", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Energy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"eV\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ActivationEnergy", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Energy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"eV\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "FermiTemperature", + "value": { + "name": "ThermodynamicTemperature" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ElectronNumberDensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ElectronNumberDensity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m-3\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "HoleNumberDensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"HoleNumberDensity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m-3\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "IntrinsicNumberDensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"IntrinsicNumberDensity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m-3\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DonorNumberDensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"DonorNumberDensity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m-3\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "AcceptorNumberDensity", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AcceptorNumberDensity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"m-3\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "EffectiveMass", + "value": { + "name": "Mass" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MobilityRatio", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MobilityRatio\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "RelaxationTime", + "value": { + "name": "Time" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "CarrierLifeTime", + "value": { + "name": "Time" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ExchangeIntegral", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Energy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"eV\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "CurieTemperature", + "value": { + "name": "ThermodynamicTemperature" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "NeelTemperature", + "value": { + "name": "ThermodynamicTemperature" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LondonPenetrationDepth", + "value": { + "name": "Length" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "CoherenceLength", + "value": { + "name": "Length" + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "LandauGinzburgParameter", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"LandauGinzburgParameter\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "FluxoidQuantum", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"FluxoidQuantum\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Wb\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "TimeAging", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1/Modelica.Units.SI.Time\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1/s\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ChargeAging", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1/Modelica.Units.SI.ElectricCharge\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1/(A.s)\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "PerUnit", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "DimensionlessRatio", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "operator record", + "class_specifier": { + "short_class_specifier": { + "identifier": "ComplexCurrent", + "value": { + "name": "Complex", + "class_modification": [ + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.Current", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex current" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.Current", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Imaginary part of complex current" + } + } + } + } + } + ], + "description": { + "description_string": "Complex electric current" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "operator record", + "class_specifier": { + "short_class_specifier": { + "identifier": "ComplexCurrentSlope", + "value": { + "name": "Complex", + "class_modification": [ + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.CurrentSlope", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex current slope" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.CurrentSlope", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Imaginary part of complex current slope" + } + } + } + } + } + ], + "description": { + "description_string": "Complex current slope" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "operator record", + "class_specifier": { + "short_class_specifier": { + "identifier": "ComplexCurrentDensity", + "value": { + "name": "Complex", + "class_modification": [ + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.CurrentDensity", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex current density" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.CurrentDensity", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Imaginary part of complex current density" + } + } + } + } + } + ], + "description": { + "description_string": "Complex electric current density" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "operator record", + "class_specifier": { + "short_class_specifier": { + "identifier": "ComplexElectricPotential", + "value": { + "name": "Complex", + "class_modification": [ + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.ElectricPotential", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Imaginary part of complex electric potential" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.ElectricPotential", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Real part of complex electric potential" + } + } + } + } + } + ], + "description": { + "description_string": "Complex electric potential" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "operator record", + "class_specifier": { + "short_class_specifier": { + "identifier": "ComplexPotentialDifference", + "value": { + "name": "Complex", + "class_modification": [ + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.PotentialDifference", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex potential difference" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.PotentialDifference", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Imaginary part of complex potential difference" + } + } + } + } + } + ], + "description": { + "description_string": "Complex electric potential difference" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "operator record", + "class_specifier": { + "short_class_specifier": { + "identifier": "ComplexVoltage", + "value": { + "name": "Complex", + "class_modification": [ + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.Voltage", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Imaginary part of complex voltage" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.Voltage", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Real part of complex voltage" + } + } + } + } + } + ], + "description": { + "description_string": "Complex electric voltage" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "operator record", + "class_specifier": { + "short_class_specifier": { + "identifier": "ComplexVoltageSlope", + "value": { + "name": "Complex", + "class_modification": [ + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.VoltageSlope", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex voltage slope" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.VoltageSlope", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Imaginary part of complex voltage slope" + } + } + } + } + } + ], + "description": { + "description_string": "Complex voltage slope" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "operator record", + "class_specifier": { + "short_class_specifier": { + "identifier": "ComplexElectricFieldStrength", + "value": { + "name": "Complex", + "class_modification": [ + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.ElectricFieldStrength", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex electric field strength" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.ElectricFieldStrength", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Imaginary part of complex electric field strength" + } + } + } + } + } + ], + "description": { + "description_string": "Complex electric field strength" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "operator record", + "class_specifier": { + "short_class_specifier": { + "identifier": "ComplexElectricFluxDensity", + "value": { + "name": "Complex", + "class_modification": [ + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.ElectricFluxDensity", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex electric flux density" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.ElectricFluxDensity", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Imaginary part of complex electric flux density" + } + } + } + } + } + ], + "description": { + "description_string": "Complex electric flux density" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "operator record", + "class_specifier": { + "short_class_specifier": { + "identifier": "ComplexElectricFlux", + "value": { + "name": "Complex", + "class_modification": [ + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.ElectricFlux", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex electric flux" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.ElectricFlux", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Imaginary part of complex electric flux" + } + } + } + } + } + ], + "description": { + "description_string": "Complex electric flux" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "operator record", + "class_specifier": { + "short_class_specifier": { + "identifier": "ComplexMagneticFieldStrength", + "value": { + "name": "Complex", + "class_modification": [ + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.MagneticFieldStrength", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex magnetic field strength" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.MagneticFieldStrength", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Imaginary part of complex magnetic field strength" + } + } + } + } + } + ], + "description": { + "description_string": "Complex magnetic field strength" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "operator record", + "class_specifier": { + "short_class_specifier": { + "identifier": "ComplexMagneticPotential", + "value": { + "name": "Complex", + "class_modification": [ + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.MagneticPotential", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex magnetic potential" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.MagneticPotential", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Imaginary part of complex magnetic potential" + } + } + } + } + } + ], + "description": { + "description_string": "Complex magnetic potential" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "operator record", + "class_specifier": { + "short_class_specifier": { + "identifier": "ComplexMagneticPotentialDifference", + "value": { + "name": "Complex", + "class_modification": [ + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.MagneticPotentialDifference", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex magnetic potential difference" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.MagneticPotentialDifference", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Imaginary part of complex magnetic potential difference" + } + } + } + } + } + ], + "description": { + "description_string": "Complex magnetic potential difference" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "operator record", + "class_specifier": { + "short_class_specifier": { + "identifier": "ComplexMagnetomotiveForce", + "value": { + "name": "Complex", + "class_modification": [ + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.MagnetomotiveForce", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex magnetomotive force" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.MagnetomotiveForce", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Imaginary part of complex magnetomotive force" + } + } + } + } + } + ], + "description": { + "description_string": "Complex magnetomotive force" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "operator record", + "class_specifier": { + "short_class_specifier": { + "identifier": "ComplexMagneticFluxDensity", + "value": { + "name": "Complex", + "class_modification": [ + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.MagneticFluxDensity", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex magnetic flux density" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.MagneticFluxDensity", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Imaginary part of complex magnetic flux density" + } + } + } + } + } + ], + "description": { + "description_string": "Complex magnetic flux density" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "operator record", + "class_specifier": { + "short_class_specifier": { + "identifier": "ComplexMagneticFlux", + "value": { + "name": "Complex", + "class_modification": [ + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.MagneticFlux", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex magnetic flux" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.MagneticFlux", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Imaginary part of complex magnetic flux" + } + } + } + } + } + ], + "description": { + "description_string": "Complex magnetic flux" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "operator record", + "class_specifier": { + "short_class_specifier": { + "identifier": "ComplexReluctance", + "value": { + "name": "Complex", + "class_modification": [ + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.Reluctance", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex reluctance" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.Units.SI.Reluctance", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Imaginary part of complex reluctance" + } + } + } + } + } + ], + "description": { + "description_string": "Complex reluctance", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Documentation", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "info", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"\n

\nSince magnetic material properties like reluctance and permeance often are anisotropic resp. salient,\na special operator instead of multiplication (compare: tensor vs. vector) is required.\nModelica.Magnetic.FundamentalWave uses a\nspecial record Salient\nwhich is only valid in the rotor-fixed coordinate system.\n

\n

\nNote: To avoid confusion, no magnetic material properties should be defined as Complex units.\n

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "operator record", + "class_specifier": { + "short_class_specifier": { + "identifier": "ComplexImpedance", + "value": { + "name": "Complex", + "class_modification": [ + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Resistance", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex impedance (resistance)" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Reactance", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Imaginary part of complex impedance (reactance)" + } + } + } + } + } + ], + "description": { + "description_string": "Complex impedance" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "operator record", + "class_specifier": { + "short_class_specifier": { + "identifier": "ComplexAdmittance", + "value": { + "name": "Complex", + "class_modification": [ + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Conductance", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex admittance (conductance)" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Susceptance", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Imaginary part of complex admittance (susceptance)" + } + } + } + } + } + ], + "description": { + "description_string": "Complex admittance" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "operator record", + "class_specifier": { + "short_class_specifier": { + "identifier": "ComplexPower", + "value": { + "name": "Complex", + "class_modification": [ + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "ActivePower", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex apparent power (active power)" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "ReactivePower", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Imaginary part of complex apparent power (reactive power)" + } + } + } + } + } + ], + "description": { + "description_string": "Complex apparent power" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "operator record", + "class_specifier": { + "short_class_specifier": { + "identifier": "ComplexPerUnit", + "value": { + "name": "Complex", + "class_modification": [ + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "PerUnit", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex per unit quantity" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "PerUnit", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Imaginary part of complex per unit quantity" + } + } + } + } + } + ], + "description": { + "description_string": "Complex per unit" + } + } + } + } + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -80, + "y": 80 + }, + { + "x": 80, + "y": -78 + } + ], + "textString": "\"SI\"", + "fontName": "\"serif\"", + "textColor": { + "r": 128, + "g": 128, + "b": 128 + }, + "fillColor": { + "r": 128, + "g": 128, + "b": 128 + }, + "fillPattern": "FillPattern.None" + } + } + ] + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Documentation", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "info", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"\n

This package provides predefined types based on the international standard\non units.\n

\n

\nFor an introduction to the conventions used in this package, have a look at:\nConventions.\n

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "package", + "class_specifier": { + "long_class_specifier": { + "identifier": "NonSI", + "description_string": "Type definitions of non SI and other units", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Package" + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Temperature_degC", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ThermodynamicTemperature\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"degC\"" + } + } + } + } + } + ], + "description": { + "description_string": "Absolute temperature in degree Celsius (for relative temperature use Modelica.Units.SI.TemperatureDifference)", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "absoluteValue", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Temperature_degF", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ThermodynamicTemperature\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"degF\"" + } + } + } + } + } + ], + "description": { + "description_string": "Absolute temperature in degree Fahrenheit (for relative temperature use Modelica.Units.SI.TemperatureDifference)", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "absoluteValue", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Temperature_degRk", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ThermodynamicTemperature\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"degRk\"" + } + } + } + } + } + ], + "description": { + "description_string": "Absolute temperature in degree Rankine (for relative temperature use Modelica.Units.SI.TemperatureDifference)", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "absoluteValue", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Angle_deg", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Angle\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"deg\"" + } + } + } + } + } + ], + "description": { + "description_string": "Angle in degree" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "AngularVelocity_rpm", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AngularVelocity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"rev/min\"" + } + } + } + } + } + ], + "description": { + "description_string": "Angular velocity in revolutions per minute. Alias unit names that are outside of the SI system: rpm, r/min, rev/min" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Velocity_kmh", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Velocity\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"km/h\"" + } + } + } + } + } + ], + "description": { + "description_string": "Velocity in kilometres per hour" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Time_day", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Time\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"d\"" + } + } + } + } + } + ], + "description": { + "description_string": "Time in days" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Time_hour", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Time\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"h\"" + } + } + } + } + } + ], + "description": { + "description_string": "Time in hours" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Time_minute", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Time\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"min\"" + } + } + } + } + } + ], + "description": { + "description_string": "Time in minutes" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Volume_litre", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Volume\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"l\"" + } + } + } + } + } + ], + "description": { + "description_string": "Volume in litres" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "ElectricCharge_Ah", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"ElectricCharge\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"A.h\"" + } + } + } + } + } + ], + "description": { + "description_string": "Electric charge in Ampere hours" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Energy_Wh", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Energy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"W.h\"" + } + } + } + } + } + ], + "description": { + "description_string": "Energy in Watt hours" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Energy_kWh", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Energy\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"kW.h\"" + } + } + } + } + } + ], + "description": { + "description_string": "Energy in kilo watt hours" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Pressure_bar", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Pressure\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"bar\"" + } + } + } + } + } + ], + "description": { + "description_string": "Absolute pressure in bar" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "MassFlowRate_gps", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"MassFlowRate\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"g/s\"" + } + } + } + } + } + ], + "description": { + "description_string": "Mass flow rate in gram per second" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Area_cm", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Area\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"cm2\"" + } + } + } + } + } + ], + "description": { + "description_string": "Area in cm" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "PerArea_cm", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"PerArea\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1/cm2\"" + } + } + } + } + } + ], + "description": { + "description_string": "Per Area in cm" + } + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Area_cmPerVoltageSecond", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"AreaPerVoltageSecond\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"cm2/(V.s)\"" + } + } + } + } + } + ], + "description": { + "description_string": "Area in cm per voltage second" + } + } + } + } + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Documentation", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "info", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"\n

\nThis package provides predefined types, such as Angle_deg (angle in\ndegree), AngularVelocity_rpm (angular velocity in revolutions per\nminute) or Temperature_degF (temperature in degree Fahrenheit),\nwhich are in common use but are not part of the international standard on\nunits according to ISO 31-1992 \\\"General principles concerning quantities,\nunits and symbols\\\" and ISO 1000-1992 \\\"SI units and recommendations for\nthe use of their multiples and of certain other units\\\".

\n

If possible, the types in this package should not be used. Use instead\ntypes of package Modelica.Units.SI. For more information on units, see also\nthe book of Francois Cardarelli Scientific Unit Conversion - A\nPractical Guide to Metrication (Springer 1997).

\n\"" + } + } + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -10, + "y": 10 + }, + { + "x": 10, + "y": -10 + } + ], + "lineColor": { + "r": 128, + "g": 128, + "b": 128 + }, + "fillColor": { + "r": 128, + "g": 128, + "b": 128 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -60, + "y": 10 + }, + { + "x": -40, + "y": -10 + } + ], + "lineColor": { + "r": 128, + "g": 128, + "b": 128 + }, + "fillColor": { + "r": 128, + "g": 128, + "b": 128 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": 40, + "y": 10 + }, + { + "x": 60, + "y": -10 + } + ], + "lineColor": { + "r": 128, + "g": 128, + "b": 128 + }, + "fillColor": { + "r": 128, + "g": 128, + "b": 128 + }, + "fillPattern": "FillPattern.Solid" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "package", + "class_specifier": { + "long_class_specifier": { + "identifier": "Conversions", + "description_string": "Conversion functions to/from non SI units and type definitions of non SI units", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Package" + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "to_unit1", + "description_string": "Change the unit of a Real number to unit=\\\"1\\\"", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Real", + "component_list": [ + { + "declaration": { + "identifier": "r" + }, + "description": { + "description_string": "Real number" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Real", + "component_list": [ + { + "declaration": { + "identifier": "result", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"1\"" + } + } + } + } + } + ] + } + }, + "description": { + "description_string": "Real number r with unit=\\\"1\\\"" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "result" + } + ], + "value": { + "simple_expression": "r" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Documentation", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "info", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"\n

Syntax

\n
\nModelica.Units.Conversions.to_unit1(r);\n
\n

Description

\n

\nThe function call \\\"Conversions.to_unit1(r)\\\" returns r with unit=\\\"1\\\".\n

\n

Example

\n
\nModelica.Units.SI.Velocity v = {3,2,1};\nReal direction[3](unit=\\\"1\\\") = to_unit1(v);   // Automatically vectorized call of to_unit1\n
\n\"" + } + } + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -90, + "y": 86 + }, + { + "x": 32, + "y": 50 + } + ], + "textString": "\"any\"", + "horizontalAlignment": "TextAlignment.Left" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -36, + "y": -52 + }, + { + "x": 86, + "y": -88 + } + ], + "textString": "\"1\"", + "horizontalAlignment": "TextAlignment.Right" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "to_degC", + "description_string": "Convert from kelvin to degree Celsius", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "SI.Temperature", + "component_list": [ + { + "declaration": { + "identifier": "Kelvin" + }, + "description": { + "description_string": "Value in kelvin" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Modelica.Units.NonSI.Temperature_degC", + "component_list": [ + { + "declaration": { + "identifier": "Celsius" + }, + "description": { + "description_string": "Value in degree Celsius" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "Celsius" + } + ], + "value": { + "simple_expression": "Kelvin +Modelica.Constants.T_zero" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -20, + "y": 100 + }, + { + "x": -100, + "y": 20 + } + ], + "textString": "\"K\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -20 + }, + { + "x": 20, + "y": -100 + } + ], + "textString": "\"degC\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "from_degC", + "description_string": "Convert from degree Celsius to kelvin", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Modelica.Units.NonSI.Temperature_degC", + "component_list": [ + { + "declaration": { + "identifier": "Celsius" + }, + "description": { + "description_string": "Value in degree Celsius" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "SI.Temperature", + "component_list": [ + { + "declaration": { + "identifier": "Kelvin" + }, + "description": { + "description_string": "Value in kelvin" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "Kelvin" + } + ], + "value": { + "simple_expression": "Celsius -Modelica.Constants.T_zero" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -20, + "y": 100 + }, + { + "x": -100, + "y": 20 + } + ], + "textString": "\"degC\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -20 + }, + { + "x": 20, + "y": -100 + } + ], + "textString": "\"K\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "to_degF", + "description_string": "Convert from kelvin to degree Fahrenheit", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "SI.Temperature", + "component_list": [ + { + "declaration": { + "identifier": "Kelvin" + }, + "description": { + "description_string": "Value in kelvin" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Modelica.Units.NonSI.Temperature_degF", + "component_list": [ + { + "declaration": { + "identifier": "Fahrenheit" + }, + "description": { + "description_string": "Value in degree Fahrenheit" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "Fahrenheit" + } + ], + "value": { + "simple_expression": { + "addOps": [ + "+" + ], + "terms": [ + { + "operators": [ + "*" + ], + "factors": [ + { + "primary1": [ + { + "simple_expression": "Kelvin +Modelica.Constants.T_zero" + } + ] + }, + { + "primary1": [ + { + "simple_expression": "9/5" + } + ] + } + ] + }, + "32" + ] + } + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -20, + "y": 100 + }, + { + "x": -100, + "y": 20 + } + ], + "textString": "\"K\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -20 + }, + { + "x": 20, + "y": -100 + } + ], + "textString": "\"degF\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "from_degF", + "description_string": "Convert from degree Fahrenheit to kelvin", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Modelica.Units.NonSI.Temperature_degF", + "component_list": [ + { + "declaration": { + "identifier": "Fahrenheit" + }, + "description": { + "description_string": "Value in degree Fahrenheit" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "SI.Temperature", + "component_list": [ + { + "declaration": { + "identifier": "Kelvin" + }, + "description": { + "description_string": "Value in kelvin" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "Kelvin" + } + ], + "value": { + "simple_expression": { + "addOps": [ + "-" + ], + "terms": [ + { + "operators": [ + "*" + ], + "factors": [ + { + "primary1": [ + { + "simple_expression": "Fahrenheit -32" + } + ] + }, + { + "primary1": [ + { + "simple_expression": "5/9" + } + ] + } + ] + }, + "Modelica.Constants.T_zero" + ] + } + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -20, + "y": 100 + }, + { + "x": -100, + "y": 20 + } + ], + "textString": "\"degF\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -20 + }, + { + "x": 20, + "y": -100 + } + ], + "textString": "\"K\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -20, + "y": 100 + }, + { + "x": -100, + "y": 20 + } + ], + "textString": "\"degF\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "to_degRk", + "description_string": "Convert from kelvin to degree Rankine", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "SI.Temperature", + "component_list": [ + { + "declaration": { + "identifier": "Kelvin" + }, + "description": { + "description_string": "Value in kelvin" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Modelica.Units.NonSI.Temperature_degRk", + "component_list": [ + { + "declaration": { + "identifier": "Rankine" + }, + "description": { + "description_string": "Value in degree Rankine" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "Rankine" + } + ], + "value": { + "simple_expression": { + "terms": [ + { + "operators": [ + "*" + ], + "factors": [ + { + "primary1": [ + { + "simple_expression": "9/5" + } + ] + }, + "Kelvin" + ] + } + ] + } + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -20, + "y": 100 + }, + { + "x": -100, + "y": 20 + } + ], + "textString": "\"K\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -32 + }, + { + "x": -18, + "y": -100 + } + ], + "textString": "\"degRk\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "from_degRk", + "description_string": "Convert from degree Rankine to kelvin", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Modelica.Units.NonSI.Temperature_degRk", + "component_list": [ + { + "declaration": { + "identifier": "Rankine" + }, + "description": { + "description_string": "Value in degree Rankine" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "SI.Temperature", + "component_list": [ + { + "declaration": { + "identifier": "Kelvin" + }, + "description": { + "description_string": "Value in kelvin" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "Kelvin" + } + ], + "value": { + "simple_expression": { + "terms": [ + { + "operators": [ + "*" + ], + "factors": [ + { + "primary1": [ + { + "simple_expression": "5/9" + } + ] + }, + "Rankine" + ] + } + ] + } + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -8, + "y": 100 + }, + { + "x": -100, + "y": 42 + } + ], + "textString": "\"degRk\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -20 + }, + { + "x": 20, + "y": -100 + } + ], + "textString": "\"K\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "to_deg", + "description_string": "Convert from radian to degree", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "SI.Angle", + "component_list": [ + { + "declaration": { + "identifier": "radian" + }, + "description": { + "description_string": "Value in radian" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Modelica.Units.NonSI.Angle_deg", + "component_list": [ + { + "declaration": { + "identifier": "degree" + }, + "description": { + "description_string": "Value in degree" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "degree" + } + ], + "value": { + "simple_expression": { + "terms": [ + { + "operators": [ + "*" + ], + "factors": [ + { + "primary1": [ + { + "simple_expression": "180/Modelica.Constants.pi" + } + ] + }, + "radian" + ] + } + ] + } + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 10, + "y": 100 + }, + { + "x": -100, + "y": 46 + } + ], + "textString": "\"rad\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -44 + }, + { + "x": -10, + "y": -100 + } + ], + "textString": "\"deg\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "from_deg", + "description_string": "Convert from degree to radian", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Modelica.Units.NonSI.Angle_deg", + "component_list": [ + { + "declaration": { + "identifier": "degree" + }, + "description": { + "description_string": "Value in degree" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "SI.Angle", + "component_list": [ + { + "declaration": { + "identifier": "radian" + }, + "description": { + "description_string": "Value in radian" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "radian" + } + ], + "value": { + "simple_expression": { + "terms": [ + { + "operators": [ + "*" + ], + "factors": [ + { + "primary1": [ + { + "simple_expression": "Modelica.Constants.pi/180" + } + ] + }, + "degree" + ] + } + ] + } + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 4, + "y": 100 + }, + { + "x": -102, + "y": 46 + } + ], + "textString": "\"deg\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -32 + }, + { + "x": -18, + "y": -100 + } + ], + "textString": "\"rad\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "to_rpm", + "description_string": "Convert from radian per second to revolutions per minute", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "SI.AngularVelocity", + "component_list": [ + { + "declaration": { + "identifier": "rs" + }, + "description": { + "description_string": "Value in radian per second" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Modelica.Units.NonSI.AngularVelocity_rpm", + "component_list": [ + { + "declaration": { + "identifier": "rpm" + }, + "description": { + "description_string": "Value in revolutions per minute" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "rpm" + } + ], + "value": { + "simple_expression": { + "terms": [ + { + "operators": [ + "*" + ], + "factors": [ + { + "primary1": [ + { + "simple_expression": "30/Modelica.Constants.pi" + } + ] + }, + "rs" + ] + } + ] + } + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 30, + "y": 100 + }, + { + "x": -100, + "y": 50 + } + ], + "textString": "\"rad/s\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -52 + }, + { + "x": -40, + "y": -98 + } + ], + "textString": "\"rev/min\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "from_rpm", + "description_string": "Convert from revolutions per minute to radian per second", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Modelica.Units.NonSI.AngularVelocity_rpm", + "component_list": [ + { + "declaration": { + "identifier": "rpm" + }, + "description": { + "description_string": "Value in revolutions per minute" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "SI.AngularVelocity", + "component_list": [ + { + "declaration": { + "identifier": "rs" + }, + "description": { + "description_string": "Value in radian per second" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "rs" + } + ], + "value": { + "simple_expression": { + "terms": [ + { + "operators": [ + "*" + ], + "factors": [ + { + "primary1": [ + { + "simple_expression": "Modelica.Constants.pi/30" + } + ] + }, + "rpm" + ] + } + ] + } + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 14, + "y": 100 + }, + { + "x": -102, + "y": 56 + } + ], + "textString": "\"rev/min\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -56 + }, + { + "x": -32, + "y": -102 + } + ], + "textString": "\"rad/s\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "to_kmh", + "description_string": "Convert from metre per second to kilometre per hour", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "SI.Velocity", + "component_list": [ + { + "declaration": { + "identifier": "ms" + }, + "description": { + "description_string": "Value in metre per second" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Modelica.Units.NonSI.Velocity_kmh", + "component_list": [ + { + "declaration": { + "identifier": "kmh" + }, + "description": { + "description_string": "Value in kilometre per hour" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "kmh" + } + ], + "value": { + "simple_expression": "3.6*ms" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 8, + "y": 100 + }, + { + "x": -100, + "y": 58 + } + ], + "textString": "\"m/s\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -56 + }, + { + "x": -16, + "y": -100 + } + ], + "textString": "\"km/h\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "from_kmh", + "description_string": "Convert from kilometre per hour to metre per second", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Modelica.Units.NonSI.Velocity_kmh", + "component_list": [ + { + "declaration": { + "identifier": "kmh" + }, + "description": { + "description_string": "Value in kilometre per hour" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "SI.Velocity", + "component_list": [ + { + "declaration": { + "identifier": "ms" + }, + "description": { + "description_string": "Value in metre per second" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "ms" + } + ], + "value": { + "simple_expression": "kmh/3.6" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 10, + "y": 100 + }, + { + "x": -100, + "y": 56 + } + ], + "textString": "\"km/h\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -50 + }, + { + "x": -20, + "y": -100 + } + ], + "textString": "\"m/s\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "to_day", + "description_string": "Convert from second to day", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "SI.Time", + "component_list": [ + { + "declaration": { + "identifier": "s" + }, + "description": { + "description_string": "Value in second" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Modelica.Units.NonSI.Time_day", + "component_list": [ + { + "declaration": { + "identifier": "day" + }, + "description": { + "description_string": "Value in day" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "day" + } + ], + "value": { + "simple_expression": "s/86400" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -6, + "y": 100 + }, + { + "x": -100, + "y": 48 + } + ], + "textString": "\"s\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -48 + }, + { + "x": -10, + "y": -98 + } + ], + "textString": "\"day\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "from_day", + "description_string": "Convert from day to second", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Modelica.Units.NonSI.Time_day", + "component_list": [ + { + "declaration": { + "identifier": "day" + }, + "description": { + "description_string": "Value in day" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "SI.Time", + "component_list": [ + { + "declaration": { + "identifier": "s" + }, + "description": { + "description_string": "Value in second" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "s" + } + ], + "value": { + "simple_expression": "86400*day" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 10, + "y": 100 + }, + { + "x": -100, + "y": 52 + } + ], + "textString": "\"day\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -54 + }, + { + "x": 20, + "y": -100 + } + ], + "textString": "\"s\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "to_hour", + "description_string": "Convert from second to hour", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "SI.Time", + "component_list": [ + { + "declaration": { + "identifier": "s" + }, + "description": { + "description_string": "Value in second" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Modelica.Units.NonSI.Time_hour", + "component_list": [ + { + "declaration": { + "identifier": "hour" + }, + "description": { + "description_string": "Value in hour" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "hour" + } + ], + "value": { + "simple_expression": "s/3600" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 12, + "y": 100 + }, + { + "x": -100, + "y": 50 + } + ], + "textString": "\"s\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -56 + }, + { + "x": -20, + "y": -100 + } + ], + "textString": "\"hour\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "from_hour", + "description_string": "Convert from hour to second", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Modelica.Units.NonSI.Time_hour", + "component_list": [ + { + "declaration": { + "identifier": "hour" + }, + "description": { + "description_string": "Value in hour" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "SI.Time", + "component_list": [ + { + "declaration": { + "identifier": "s" + }, + "description": { + "description_string": "Value in second" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "s" + } + ], + "value": { + "simple_expression": "3600*hour" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 12, + "y": 100 + }, + { + "x": -100, + "y": 58 + } + ], + "textString": "\"hour\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -50 + }, + { + "x": 16, + "y": -100 + } + ], + "textString": "\"s\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "to_minute", + "description_string": "Convert from second to minute", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "SI.Time", + "component_list": [ + { + "declaration": { + "identifier": "s" + }, + "description": { + "description_string": "Value in second" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Modelica.Units.NonSI.Time_minute", + "component_list": [ + { + "declaration": { + "identifier": "minute" + }, + "description": { + "description_string": "Value in minute" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "minute" + } + ], + "value": { + "simple_expression": "s/60" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -26, + "y": 100 + }, + { + "x": -100, + "y": 52 + } + ], + "textString": "\"s\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -54 + }, + { + "x": -20, + "y": -100 + } + ], + "textString": "\"min\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "from_minute", + "description_string": "Convert from minute to second", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Modelica.Units.NonSI.Time_minute", + "component_list": [ + { + "declaration": { + "identifier": "minute" + }, + "description": { + "description_string": "Value in minute" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "SI.Time", + "component_list": [ + { + "declaration": { + "identifier": "s" + }, + "description": { + "description_string": "Value in second" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "s" + } + ], + "value": { + "simple_expression": "60*minute" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 26, + "y": 100 + }, + { + "x": -100, + "y": 48 + } + ], + "textString": "\"min\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -46 + }, + { + "x": 0, + "y": -100 + } + ], + "textString": "\"s\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "to_litre", + "description_string": "Convert from cubic metre to litre", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "SI.Volume", + "component_list": [ + { + "declaration": { + "identifier": "m3" + }, + "description": { + "description_string": "Value in cubic metre" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Modelica.Units.NonSI.Volume_litre", + "component_list": [ + { + "declaration": { + "identifier": "litre" + }, + "description": { + "description_string": "Value in litre" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "litre" + } + ], + "value": { + "simple_expression": "1000*m3" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -56 + }, + { + "x": 0, + "y": -100 + } + ], + "textString": "\"litre\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 6, + "y": 100 + }, + { + "x": -100, + "y": 56 + } + ], + "textString": "\"m3\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "from_litre", + "description_string": "Convert from litre to cubic metre", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Modelica.Units.NonSI.Volume_litre", + "component_list": [ + { + "declaration": { + "identifier": "litre" + }, + "description": { + "description_string": "Value in litre" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "SI.Volume", + "component_list": [ + { + "declaration": { + "identifier": "m3" + }, + "description": { + "description_string": "Value in cubic metre" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "m3" + } + ], + "value": { + "simple_expression": "litre/1000" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -4, + "y": 100 + }, + { + "x": -100, + "y": 62 + } + ], + "textString": "\"litre\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -56 + }, + { + "x": -6, + "y": -100 + } + ], + "textString": "\"m3\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "from_Ah", + "description_string": "Convert from Ampere hours to Coulomb", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Modelica.Units.NonSI.ElectricCharge_Ah", + "component_list": [ + { + "declaration": { + "identifier": "AmpereHour" + }, + "description": { + "description_string": "Value in ampere hours" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Modelica.Units.SI.ElectricCharge", + "component_list": [ + { + "declaration": { + "identifier": "Coulomb" + }, + "description": { + "description_string": "Value in coulomb" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "Coulomb" + } + ], + "value": { + "simple_expression": "AmpereHour*3600" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -2, + "y": 100 + }, + { + "x": -100, + "y": 48 + } + ], + "textString": "\"Ah\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -46 + }, + { + "x": 0, + "y": -100 + } + ], + "textString": "\"C\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "to_Ah", + "description_string": "Convert from Coulomb to Ampere hours", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Modelica.Units.SI.ElectricCharge", + "component_list": [ + { + "declaration": { + "identifier": "Coulomb" + }, + "description": { + "description_string": "Value in coulomb" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Modelica.Units.NonSI.ElectricCharge_Ah", + "component_list": [ + { + "declaration": { + "identifier": "AmpereHour" + }, + "description": { + "description_string": "Value in ampere hours" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "AmpereHour" + } + ], + "value": { + "simple_expression": "Coulomb/3600" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -18, + "y": 100 + }, + { + "x": -100, + "y": 48 + } + ], + "textString": "\"C\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -48 + }, + { + "x": 2, + "y": -100 + } + ], + "textString": "\"Ah\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "from_Wh", + "description_string": "Convert from watt hour to joule", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Modelica.Units.NonSI.Energy_Wh", + "component_list": [ + { + "declaration": { + "identifier": "WattHour" + }, + "description": { + "description_string": "Value in watt hour" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Modelica.Units.SI.Energy", + "component_list": [ + { + "declaration": { + "identifier": "Joule" + }, + "description": { + "description_string": "Value in joule" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "Joule" + } + ], + "value": { + "simple_expression": "WattHour*3600" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -20, + "y": 100 + }, + { + "x": -100, + "y": 54 + } + ], + "textString": "\"Wh\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -38 + }, + { + "x": 4, + "y": -100 + } + ], + "textString": "\"J\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "to_Wh", + "description_string": "Convert from joule to watt hour", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Modelica.Units.SI.Energy", + "component_list": [ + { + "declaration": { + "identifier": "Joule" + }, + "description": { + "description_string": "Value in joule" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Modelica.Units.NonSI.Energy_Wh", + "component_list": [ + { + "declaration": { + "identifier": "WattHour" + }, + "description": { + "description_string": "Value in watt hour" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "WattHour" + } + ], + "value": { + "simple_expression": "Joule/3600" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -30, + "y": 100 + }, + { + "x": -100, + "y": 48 + } + ], + "textString": "\"J\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -46 + }, + { + "x": -14, + "y": -100 + } + ], + "textString": "\"Wh\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "to_kWh", + "description_string": "Convert from joule to kilo watt hour", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "SI.Energy", + "component_list": [ + { + "declaration": { + "identifier": "J" + }, + "description": { + "description_string": "Value in joule" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Modelica.Units.NonSI.Energy_kWh", + "component_list": [ + { + "declaration": { + "identifier": "kWh" + }, + "description": { + "description_string": "Value in kWh" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "kWh" + } + ], + "value": { + "simple_expression": "J/3600000" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -20, + "y": 100 + }, + { + "x": -100, + "y": 54 + } + ], + "textString": "\"J\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -50 + }, + { + "x": -10, + "y": -100 + } + ], + "textString": "\"kWh\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "from_kWh", + "description_string": "Convert from kilo watt hour to joule", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Modelica.Units.NonSI.Energy_kWh", + "component_list": [ + { + "declaration": { + "identifier": "kWh" + }, + "description": { + "description_string": "Value in kWh" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "SI.Energy", + "component_list": [ + { + "declaration": { + "identifier": "J" + }, + "description": { + "description_string": "Value in joule" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "J" + } + ], + "value": { + "simple_expression": "3600000*kWh" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 12, + "y": 100 + }, + { + "x": -100, + "y": 52 + } + ], + "textString": "\"kWh\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -44 + }, + { + "x": 12, + "y": -100 + } + ], + "textString": "\"J\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "to_bar", + "description_string": "Convert from Pascal to bar", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "SI.Pressure", + "component_list": [ + { + "declaration": { + "identifier": "Pa" + }, + "description": { + "description_string": "Value in Pascal" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Modelica.Units.NonSI.Pressure_bar", + "component_list": [ + { + "declaration": { + "identifier": "bar" + }, + "description": { + "description_string": "Value in bar" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "bar" + } + ], + "value": { + "simple_expression": "Pa/100000" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -12, + "y": 100 + }, + { + "x": -100, + "y": 56 + } + ], + "textString": "\"Pa\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 98, + "y": -52 + }, + { + "x": -4, + "y": -100 + } + ], + "textString": "\"bar\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "from_bar", + "description_string": "Convert from bar to Pascal", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Modelica.Units.NonSI.Pressure_bar", + "component_list": [ + { + "declaration": { + "identifier": "bar" + }, + "description": { + "description_string": "Value in bar" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "SI.Pressure", + "component_list": [ + { + "declaration": { + "identifier": "Pa" + }, + "description": { + "description_string": "Value in Pascal" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "Pa" + } + ], + "value": { + "simple_expression": "100000*bar" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -56 + }, + { + "x": 12, + "y": -100 + } + ], + "textString": "\"Pa\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 2, + "y": 100 + }, + { + "x": -100, + "y": 52 + } + ], + "textString": "\"bar\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "to_gps", + "description_string": "Convert from kilogram per second to gram per second", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "SI.MassFlowRate", + "component_list": [ + { + "declaration": { + "identifier": "kgps" + }, + "description": { + "description_string": "Value in kg/s" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Modelica.Units.NonSI.MassFlowRate_gps", + "component_list": [ + { + "declaration": { + "identifier": "gps" + }, + "description": { + "description_string": "Value in g/s" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "gps" + } + ], + "value": { + "simple_expression": "1000*kgps" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -12, + "y": 100 + }, + { + "x": -100, + "y": 60 + } + ], + "textString": "\"kg/s\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -46 + }, + { + "x": -6, + "y": -100 + } + ], + "textString": "\"g/s\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "from_gps", + "description_string": "Convert from gram per second to kilogram per second", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Modelica.Units.NonSI.MassFlowRate_gps", + "component_list": [ + { + "declaration": { + "identifier": "gps" + }, + "description": { + "description_string": "Value in g/s" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "SI.MassFlowRate", + "component_list": [ + { + "declaration": { + "identifier": "kgps" + }, + "description": { + "description_string": "Value in kg/s" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "kgps" + } + ], + "value": { + "simple_expression": "gps/1000" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -8, + "y": 100 + }, + { + "x": -100, + "y": 54 + } + ], + "textString": "\"g/s\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -44 + }, + { + "x": -10, + "y": -100 + } + ], + "textString": "\"kg/s\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "from_Hz", + "description_string": "Convert from Hz to rad/s", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "SI.Frequency", + "component_list": [ + { + "declaration": { + "identifier": "f" + }, + "description": { + "description_string": "Value in hertz" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "SI.AngularVelocity", + "component_list": [ + { + "declaration": { + "identifier": "w" + }, + "description": { + "description_string": "Value in radian per second" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "w" + } + ], + "value": { + "simple_expression": "2*Modelica.Constants.pi*f" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 2, + "y": 100 + }, + { + "x": -100, + "y": 52 + } + ], + "textString": "\"Hz\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -56 + }, + { + "x": 12, + "y": -100 + } + ], + "textString": "\"1/s\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "to_Hz", + "description_string": "Convert from rad/s to Hz", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "SI.AngularVelocity", + "component_list": [ + { + "declaration": { + "identifier": "w" + }, + "description": { + "description_string": "Value in radian per second" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "SI.Frequency", + "component_list": [ + { + "declaration": { + "identifier": "f" + }, + "description": { + "description_string": "Value in hertz" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "f" + } + ], + "value": { + "simple_expression": { + "terms": [ + { + "operators": [ + "/" + ], + "factors": [ + "w", + { + "primary1": [ + { + "simple_expression": "2*Modelica.Constants.pi" + } + ] + } + ] + } + ] + } + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -52 + }, + { + "x": -2, + "y": -100 + } + ], + "textString": "\"Hz\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -12, + "y": 100 + }, + { + "x": -100, + "y": 56 + } + ], + "textString": "\"1/s\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "to_cm2", + "description_string": "Convert from square metre to square centimetre", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "SI.Area", + "component_list": [ + { + "declaration": { + "identifier": "m2" + }, + "description": { + "description_string": "Value in square metre" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Modelica.Units.NonSI.Area_cm", + "component_list": [ + { + "declaration": { + "identifier": "cm2" + }, + "description": { + "description_string": "Value in square centimetre" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "cm2" + } + ], + "value": { + "simple_expression": "10000*m2" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -20, + "y": 100 + }, + { + "x": -100, + "y": 58 + } + ], + "textString": "\"m/s\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -50 + }, + { + "x": -18, + "y": -100 + } + ], + "textString": "\"cm2\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "from_cm2", + "description_string": "Convert from square centimetre to square metre", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Units.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Modelica.Units.NonSI.Area_cm", + "component_list": [ + { + "declaration": { + "identifier": "cm2" + }, + "description": { + "description_string": "Value in square centimetre" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "SI.Area", + "component_list": [ + { + "declaration": { + "identifier": "m2" + }, + "description": { + "description_string": "Value in square metre" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "m2" + } + ], + "value": { + "simple_expression": "0.0001*cm2" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Inline", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 2, + "y": 100 + }, + { + "x": -100, + "y": 58 + } + ], + "textString": "\"cm2\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 100, + "y": -50 + }, + { + "x": -16, + "y": -98 + } + ], + "textString": "\"m/s\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Documentation", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "info", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"\n

This package provides conversion functions from the non SI Units\ndefined in package Modelica.Units.NonSI to the\ncorresponding SI Units defined in package Modelica.Units.SI and vice\nversa. It is recommended to use these functions in the following\nway (note, that all functions have one Real input and one Real output\nargument):

\n
\nimport Modelica.Units.SI;\nimport Modelica.Units.Conversions.{from_degC, from_deg, from_rpm};\n   ...\nparameter SI.Temperature     T   = from_degC(25);   // convert 25 degree Celsius to kelvin\nparameter SI.Angle           phi = from_deg(180);   // convert 180 degree to radian\nparameter SI.AngularVelocity w   = from_rpm(3600);  // convert 3600 revolutions per minutes\n                                                   // to radian per seconds\n
\n\n\"" + } + } + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": 80, + "y": 0 + }, + { + "x": 20, + "y": 20 + }, + { + "x": 20, + "y": -20 + }, + { + "x": 80, + "y": 0 + } + ], + "lineColor": { + "r": 191, + "g": 0, + "b": 0 + }, + "fillColor": { + "r": 191, + "g": 0, + "b": 0 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -80, + "y": 0 + }, + { + "x": 20, + "y": 0 + } + ], + "color": { + "r": 191, + "g": 0, + "b": 0 + } + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "class_definition": { + "class_prefixes": "package", + "class_specifier": { + "long_class_specifier": { + "identifier": "Icons", + "description_string": "Icons for Units", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.IconsPackage" + } + }, + { + "class_definition": { + "class_prefixes": "partial function", + "class_specifier": { + "long_class_specifier": { + "identifier": "Conversion", + "description_string": "Base icon for conversion functions", + "composition": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": 100 + }, + { + "x": 100, + "y": -100 + } + ], + "lineColor": { + "r": 191, + "g": 0, + "b": 0 + }, + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -90, + "y": 0 + }, + { + "x": 30, + "y": 0 + } + ], + "color": { + "r": 191, + "g": 0, + "b": 0 + } + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": 90, + "y": 0 + }, + { + "x": 30, + "y": 20 + }, + { + "x": 30, + "y": -20 + }, + { + "x": 90, + "y": 0 + } + ], + "lineColor": { + "r": 191, + "g": 0, + "b": 0 + }, + "fillColor": { + "r": 191, + "g": 0, + "b": 0 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -115, + "y": 155 + }, + { + "x": 115, + "y": 105 + } + ], + "textString": "\"%name\"", + "textColor": { + "r": 0, + "g": 0, + "b": 255 + } + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + } + ] + } + } + } + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -80, + "y": -40 + }, + { + "x": -80, + "y": -40 + }, + { + "x": -55, + "y": 50 + }, + { + "x": -52.5, + "y": 62.5 + }, + { + "x": -65, + "y": 60 + }, + { + "x": -65, + "y": 65 + }, + { + "x": -35, + "y": 77.5 + }, + { + "x": -32.5, + "y": 60 + }, + { + "x": -50, + "y": 0 + }, + { + "x": -50, + "y": 0 + }, + { + "x": -30, + "y": 15 + }, + { + "x": -20, + "y": 27.5 + }, + { + "x": -32.5, + "y": 27.5 + }, + { + "x": -32.5, + "y": 27.5 + }, + { + "x": -32.5, + "y": 32.5 + }, + { + "x": -32.5, + "y": 32.5 + }, + { + "x": 2.5, + "y": 32.5 + }, + { + "x": 2.5, + "y": 32.5 + }, + { + "x": 2.5, + "y": 27.5 + }, + { + "x": 2.5, + "y": 27.5 + }, + { + "x": -7.5, + "y": 27.5 + }, + { + "x": -30, + "y": 7.5 + }, + { + "x": -30, + "y": 7.5 + }, + { + "x": -25, + "y": -25 + }, + { + "x": -17.5, + "y": -28.75 + }, + { + "x": -10, + "y": -25 + }, + { + "x": -5, + "y": -26.25 + }, + { + "x": -5, + "y": -32.5 + }, + { + "x": -16.25, + "y": -41.25 + }, + { + "x": -31.25, + "y": -43.75 + }, + { + "x": -40, + "y": -33.75 + }, + { + "x": -45, + "y": -5 + }, + { + "x": -45, + "y": -5 + }, + { + "x": -52.5, + "y": -10 + }, + { + "x": -52.5, + "y": -10 + }, + { + "x": -60, + "y": -40 + }, + { + "x": -60, + "y": -40 + } + ], + "smooth": "Smooth.Bezier", + "fillColor": { + "r": 128, + "g": 128, + "b": 128 + }, + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": 87.5, + "y": 30 + }, + { + "x": 62.5, + "y": 30 + }, + { + "x": 62.5, + "y": 30 + }, + { + "x": 55, + "y": 33.75 + }, + { + "x": 36.25, + "y": 35 + }, + { + "x": 16.25, + "y": 25 + }, + { + "x": 7.5, + "y": 6.25 + }, + { + "x": 11.25, + "y": -7.5 + }, + { + "x": 22.5, + "y": -12.5 + }, + { + "x": 22.5, + "y": -12.5 + }, + { + "x": 6.25, + "y": -22.5 + }, + { + "x": 6.25, + "y": -35 + }, + { + "x": 16.25, + "y": -38.75 + }, + { + "x": 16.25, + "y": -38.75 + }, + { + "x": 21.25, + "y": -41.25 + }, + { + "x": 21.25, + "y": -41.25 + }, + { + "x": 45, + "y": -48.75 + }, + { + "x": 47.5, + "y": -61.25 + }, + { + "x": 32.5, + "y": -70 + }, + { + "x": 12.5, + "y": -65 + }, + { + "x": 7.5, + "y": -51.25 + }, + { + "x": 21.25, + "y": -41.25 + }, + { + "x": 21.25, + "y": -41.25 + }, + { + "x": 16.25, + "y": -38.75 + }, + { + "x": 16.25, + "y": -38.75 + }, + { + "x": 6.25, + "y": -41.25 + }, + { + "x": -6.25, + "y": -50 + }, + { + "x": -3.75, + "y": -68.75 + }, + { + "x": 30, + "y": -76.25 + }, + { + "x": 65, + "y": -62.5 + }, + { + "x": 63.75, + "y": -35 + }, + { + "x": 27.5, + "y": -26.25 + }, + { + "x": 22.5, + "y": -20 + }, + { + "x": 27.5, + "y": -15 + }, + { + "x": 27.5, + "y": -15 + }, + { + "x": 30, + "y": -7.5 + }, + { + "x": 30, + "y": -7.5 + }, + { + "x": 27.5, + "y": -2.5 + }, + { + "x": 28.75, + "y": 11.25 + }, + { + "x": 36.25, + "y": 27.5 + }, + { + "x": 47.5, + "y": 30 + }, + { + "x": 53.75, + "y": 22.5 + }, + { + "x": 51.25, + "y": 8.75 + }, + { + "x": 45, + "y": -6.25 + }, + { + "x": 35, + "y": -11.25 + }, + { + "x": 30, + "y": -7.5 + }, + { + "x": 30, + "y": -7.5 + }, + { + "x": 27.5, + "y": -15 + }, + { + "x": 27.5, + "y": -15 + }, + { + "x": 43.75, + "y": -16.25 + }, + { + "x": 65, + "y": -6.25 + }, + { + "x": 72.5, + "y": 10 + }, + { + "x": 70, + "y": 20 + }, + { + "x": 70, + "y": 20 + }, + { + "x": 80, + "y": 20 + } + ], + "smooth": "Smooth.Bezier", + "fillColor": { + "r": 128, + "g": 128, + "b": 128 + }, + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Solid" + } + } + ] + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Documentation", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "info", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"\n

This package provides predefined types, such as Mass,\nAngle, Time, based on the international standard\non units, e.g.,\n

\n\n
\ntype Angle = Real(final quantity = \\\"Angle\\\",\n                  final unit     = \\\"rad\\\",\n                  displayUnit   = \\\"deg\\\");\n
\n\n

\nSome of the types are derived SI units that are utilized in package Modelica\n(such as ComplexCurrent, which is a complex number where both the real and imaginary\npart have the SI unit Ampere).\n

\n\n

\nFurthermore, conversion functions from non SI-units to SI-units and vice versa\nare provided in subpackage\nConversions.\n

\n\n

\nFor an introduction how units are used in the Modelica Standard Library\nwith package Units, have a look at:\nHow to use Units.\n

\n\n

\nCopyright © 1998-2020, Modelica Association and contributors\n

\n\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "revisions", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"\n
    \n
  • May 25, 2011 by Stefan Wischhusen:
    Added molar units for energy and enthalpy.
  • \n
  • Jan. 27, 2010 by Christian Kral:
    Added complex units.
  • \n
  • Dec. 14, 2005 by Martin Otter:
    Add User's Guide and removed "min" values for Resistance and Conductance.
  • \n
  • October 21, 2002 by Martin Otter and Christian Schweiger:
    Added new package Conversions. Corrected typo Wavelenght.
  • \n
  • June 6, 2000 by Martin Otter:
    Introduced the following new types
    type Temperature = ThermodynamicTemperature;
    types DerDensityByEnthalpy, DerDensityByPressure, DerDensityByTemperature, DerEnthalpyByPressure, DerEnergyByDensity, DerEnergyByPressure
    Attribute "final" removed from min and max values in order that these values can still be changed to narrow the allowed range of values.
    Quantity="Stress" removed from type "Stress", in order that a type "Stress" can be connected to a type "Pressure".
  • \n
  • Oct. 27, 1999 by Martin Otter:
    New types due to electrical library: Transconductance, InversePotential, Damping.
  • \n
  • Sept. 18, 1999 by Martin Otter:
    Renamed from SIunit to SIunits. Subpackages expanded, i.e., the SIunits package, does no longer contain subpackages.
  • \n
  • Aug 12, 1999 by Martin Otter:
    Type "Pressure" renamed to "AbsolutePressure" and introduced a new type "Pressure" which does not contain a minimum of zero in order to allow convenient handling of relative pressure. Redefined BulkModulus as an alias to AbsolutePressure instead of Stress, since needed in hydraulics.
  • \n
  • June 29, 1999 by Martin Otter:
    Bug-fix: Double definition of "Compressibility" removed and appropriate "extends Heat" clause introduced in package SolidStatePhysics to incorporate ThermodynamicTemperature.
  • \n
  • April 8, 1998 by Martin Otter and Astrid Jaschinski:
    Complete ISO 31 chapters realized.
  • \n
  • Nov. 15, 1997 by Martin Otter and Hubertus Tummescheit:
    Some chapters realized.
  • \n
\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ], + "modelicaFile": "Modelica/Units.mo", + "fullMoFilePath": "/dependencies/ModelicaStandardLibrary/Modelica/Units.mo", + "checksum": "8738d1340b653da3542f554d4d1eb7df" +} From e8f5cd73f483c80b795611360178a4b52a2dfeab Mon Sep 17 00:00:00 2001 From: AntoineGautier Date: Thu, 26 Feb 2026 08:48:57 +0100 Subject: [PATCH 02/16] Compress static test data --- .../tests/integration/parser/schedule.test.ts | 16 +- server/tests/static-data/json.tar.gz | Bin 0 -> 68475 bytes .../Data/OutdoorReliefReturnSection.json | 1 - .../Components/Data/PartialController.json | 1 - .../Data/VAVMultiZoneController.json | 1 - .../Components/Data/package.json | 1 - .../AirHandlersFans/Components/package.json | 1 - .../Configuration/PartialAirHandler.json | 1 - .../Configuration/VAVMultiZone.json | 1 - .../Configuration/package.json | 1 - .../Data/PartialAirHandler.json | 1 - .../AirHandlersFans/Data/VAVMultiZone.json | 1 - .../AirHandlersFans/Data/package.json | 1 - .../Templates/AirHandlersFans/Types.json | 1 - .../AirHandlersFans/VAVMultiZone.json | 1 - .../Templates/AirHandlersFans/package.json | 1 - .../Templates/Components/Data/Chiller.json | 1 - .../Templates/Components/Data/Coil.json | 1774 - .../Templates/Components/Data/Damper.json | 1 - .../Templates/Components/Data/Fan.json | 1 - .../Templates/Components/Data/HeatPump.json | 1 - .../Components/Data/PumpMultiple.json | 1 - .../Templates/Components/Data/PumpSingle.json | 1 - .../Templates/Components/Data/Valve.json | 1 - .../Templates/Components/Data/package.json | 1 - .../Buildings/Templates/Components/Types.json | 1 - .../Templates/Components/package.json | 1 - .../Buildings/Templates/Data/AllSystems.json | 1 - .../Buildings/Templates/Data/Defaults.json | 1 - .../Buildings/Templates/Data/package.json | 1 - .../json/Buildings/Templates/Types.json | 1 - .../json/Buildings/Templates/package.json | 1 - .../static-data/json/Modelica/Units.json | 28575 ---------------- 33 files changed, 15 insertions(+), 30379 deletions(-) create mode 100644 server/tests/static-data/json.tar.gz delete mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/OutdoorReliefReturnSection.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/PartialController.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/VAVMultiZoneController.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/package.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/package.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Configuration/PartialAirHandler.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Configuration/VAVMultiZone.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Configuration/package.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Data/PartialAirHandler.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Data/VAVMultiZone.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Data/package.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Types.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/VAVMultiZone.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/AirHandlersFans/package.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/Components/Data/Chiller.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/Components/Data/Coil.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/Components/Data/Damper.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/Components/Data/Fan.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/Components/Data/HeatPump.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/Components/Data/PumpMultiple.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/Components/Data/PumpSingle.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/Components/Data/Valve.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/Components/Data/package.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/Components/Types.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/Components/package.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/Data/AllSystems.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/Data/Defaults.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/Data/package.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/Types.json delete mode 100644 server/tests/static-data/json/Buildings/Templates/package.json delete mode 100644 server/tests/static-data/json/Modelica/Units.json diff --git a/server/tests/integration/parser/schedule.test.ts b/server/tests/integration/parser/schedule.test.ts index 39c92a7e..5a1b3ae3 100644 --- a/server/tests/integration/parser/schedule.test.ts +++ b/server/tests/integration/parser/schedule.test.ts @@ -2,19 +2,33 @@ import { buildParameterTable, Table } from "../../../src/parser/schedule"; import * as parser from "../../../src/parser/parser"; import { prependToModelicaJsonPath } from '../../../src/parser/loader'; import * as fs from "fs"; +import * as path from "path"; +import { execSync } from "child_process"; +// Run with DEBUG_SCHEDULE=1 to log all schedule keys, operands and tables const DEBUG = !!process.env.DEBUG_SCHEDULE; -const jsonRecordPath = "tests/static-data/json"; +const staticDataDir = "tests/static-data"; +const jsonRecordPath = path.join(staticDataDir, "json"); +const archivePath = path.join(staticDataDir, "json.tar.gz"); const testRecordName = "Buildings.Templates.AirHandlersFans.Data.VAVMultiZone"; describe("buildParameterTable", () => { let table: Table; beforeAll(() => { + execSync(`tar -xzf ${archivePath} -C ${staticDataDir}`); prependToModelicaJsonPath([jsonRecordPath]); parser.getFile(testRecordName); // This populates parser.typeStore table = buildParameterTable(testRecordName); + }); + + afterAll(() => { + fs.rmSync(jsonRecordPath, { recursive: true, force: true }); + }); + + // Kept as a separate block for DEBUG output + beforeAll(() => { if (DEBUG) { const keys: string[] = []; const operands: string[] = []; diff --git a/server/tests/static-data/json.tar.gz b/server/tests/static-data/json.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..962fd15e0fa5ac5b65ef2acffaa82cf021dd397a GIT binary patch literal 68475 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

5YC8XVM|9_EJH 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 VsLvu~4`k11tAuu7&;SYO{{d=0gxmlC literal 0 HcmV?d00001 diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/OutdoorReliefReturnSection.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/OutdoorReliefReturnSection.json deleted file mode 100644 index ac6db065..00000000 --- a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/OutdoorReliefReturnSection.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates.AirHandlersFans.Components.Data","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"OutdoorReliefReturnSection","description_string":"Record for outdoor/relief/return air section","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Record"}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Damper","component_list":[{"declaration":{"identifier":"typDamOut"},"description":{"description_string":"Outdoor air damper type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Damper","component_list":[{"declaration":{"identifier":"typDamOutMin"},"description":{"description_string":"Minimum outdoor air damper type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Damper","component_list":[{"declaration":{"identifier":"typDamRel"},"description":{"description_string":"Relief damper type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Damper","component_list":[{"declaration":{"identifier":"typDamRet"},"description":{"description_string":"Return damper type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Fan","component_list":[{"declaration":{"identifier":"typFanRel"},"description":{"description_string":"Type of relief fan","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Fan","component_list":[{"declaration":{"identifier":"typFanRet"},"description":{"description_string":"Type of return fan","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Integer","component_list":[{"declaration":{"identifier":"nFanRet","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typFanRet","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"0"}}],"else_expression":{"simple_expression":"1"}}}}}}}]}},"description":{"description_string":"Number of return fans","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Integer","component_list":[{"declaration":{"identifier":"nFanRel","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typFanRel","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"0"}}],"else_expression":{"simple_expression":"1"}}}}}}}]}},"description":{"description_string":"Number of relief fans","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"mOutMin_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0.2*damOut.m_flow_nominal"}}}}}]}},"description":{"description_string":"Minimum outdoor air mass flow rate at design conditions","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Dampers and economizers\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typDamOutMin","Buildings.Templates.Components.Types.Damper.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Data.Damper","component_list":[{"declaration":{"identifier":"damOut","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"typDamOut"}}}}}]}},"description":{"description_string":"Outdoor air damper","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Dampers and economizers\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typDamOut","Buildings.Templates.Components.Types.Damper.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Data.Damper","component_list":[{"declaration":{"identifier":"damOutMin","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"typDamOutMin"}}}}}]}},"description":{"description_string":"Minimum outdoor air damper","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Dampers and economizers\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typDamOutMin","Buildings.Templates.Components.Types.Damper.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Data.Damper","component_list":[{"declaration":{"identifier":"damRel","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"typDamRel"}}}}}]}},"description":{"description_string":"Relief damper","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Dampers and economizers\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typDamRel","Buildings.Templates.Components.Types.Damper.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Data.Damper","component_list":[{"declaration":{"identifier":"damRet","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"typDamRet"}}}}}]}},"description":{"description_string":"Return damper","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Dampers and economizers\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typDamRet","Buildings.Templates.Components.Types.Damper.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Data.Fan","component_list":[{"declaration":{"identifier":"fanRel","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"typFanRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFan","modification":{"equal":true,"expression":{"simple_expression":"nFanRel"}}}}}]}},"description":{"description_string":"Relief fan","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Fans\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typFanRel","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Data.Fan","component_list":[{"declaration":{"identifier":"fanRet","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"typFanRet"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFan","modification":{"equal":true,"expression":{"simple_expression":"nFanRet"}}}}}]}},"description":{"description_string":"Return fan","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Fans\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typFanRet","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of sizing and operating parameters for\nthe classes within\n\nBuildings.Templates.AirHandlersFans.Components.OutdoorReliefReturnSection.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/Components/Data/OutdoorReliefReturnSection.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/AirHandlersFans/Components/Data/OutdoorReliefReturnSection.mo","checksum":"7bb97d7ccc4b4bcb0743752c475c9503"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/PartialController.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/PartialController.json deleted file mode 100644 index 84426392..00000000 --- a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/PartialController.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates.AirHandlersFans.Components.Data","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"PartialController","description_string":"Record for controller interface class","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Record"}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.AirHandlersFans.Types.Controller","component_list":[{"declaration":{"identifier":"typ"},"description":{"description_string":"Type of controller","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Fan","component_list":[{"declaration":{"identifier":"typFanSup"},"description":{"description_string":"Type of supply fan","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Fan","component_list":[{"declaration":{"identifier":"typFanRel"},"description":{"description_string":"Type of relief fan","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Fan","component_list":[{"declaration":{"identifier":"typFanRet"},"description":{"description_string":"Type of return fan","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of sizing and operating parameters for the class\n\nBuildings.Templates.AirHandlersFans.Components.Controls.Interfaces.PartialController.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/Components/Data/PartialController.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/AirHandlersFans/Components/Data/PartialController.mo","checksum":"060096d5679fcb976503ff592f035825"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/VAVMultiZoneController.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/VAVMultiZoneController.json deleted file mode 100644 index 9a70a04a..00000000 --- a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/VAVMultiZoneController.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates.AirHandlersFans.Components.Data","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"VAVMultiZoneController","description_string":"Record for multiple-zone VAV controller","composition":{"element_list":[{"extends_clause":{"name":"Buildings.Templates.AirHandlersFans.Components.Data.PartialController"}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection","component_list":[{"declaration":{"identifier":"typSecOut"},"description":{"description_string":"Type of outdoor air section","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl","component_list":[{"declaration":{"identifier":"buiPreCon"},"description":{"description_string":"Type of building pressure control system","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard","component_list":[{"declaration":{"identifier":"stdVen"},"description":{"description_string":"Ventilation standard","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Energy and ventilation standards\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TAirSupSet_min","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"273.15"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"degC\""}}}}}],"equal":true,"expression":{"simple_expression":"12 +273.15"}}},"description":{"description_string":"Lowest supply air temperature setpoint","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Temperature setpoints\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TAirSupSet_max","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"273.15"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"degC\""}}}}}],"equal":true,"expression":{"simple_expression":"18 +273.15"}}},"description":{"description_string":"Highest supply air temperature setpoint","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Temperature setpoints\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TOutRes_min","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"273.15"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"degC\""}}}}}],"equal":true,"expression":{"simple_expression":"16 +273.15"}}},"description":{"description_string":"Lowest value of the outdoor air temperature reset range","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Temperature setpoints\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TOutRes_max","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"273.15"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"degC\""}}}}}],"equal":true,"expression":{"simple_expression":"21 +273.15"}}},"description":{"description_string":"Highest value of the outdoor air temperature reset range","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Temperature setpoints\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.VolumeFlowRate","component_list":[{"declaration":{"identifier":"VOutUnc_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Uncorrected design outdoor air flow rate, including diversity where applicable","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Ventilation setpoints\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="},{"arithmetic_expressions":["stdVen","Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.VolumeFlowRate","component_list":[{"declaration":{"identifier":"VOutTot_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Design total outdoor air flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Ventilation setpoints\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="},{"arithmetic_expressions":["stdVen","Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.VolumeFlowRate","component_list":[{"declaration":{"identifier":"VOutAbsMin_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Design outdoor air flow rate when all zones with CO2 sensors or occupancy sensors are unpopulated","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Ventilation setpoints\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="},{"arithmetic_expressions":["stdVen","Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.VolumeFlowRate","component_list":[{"declaration":{"identifier":"VOutMin_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Design minimum outdoor air flow rate when all zones are occupied at their design population, including diversity","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Ventilation setpoints\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="},{"arithmetic_expressions":["stdVen","Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"pAirSupSet_rel_max","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"Pa\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"500"}}}}}]}},"description":{"description_string":"Duct design maximum static pressure","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Information provided by testing, adjusting, and balancing contractor\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpDamOutMinAbs","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"2.4"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"Pa\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"5"}}}}}]}},"description":{"description_string":"Differential pressure across the minimum outdoor air damper that provides the absolute minimum outdoor airflow","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Information provided by testing, adjusting, and balancing contractor\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="},{"arithmetic_expressions":["stdVen","Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24"],"relation_operator":"=="},{"arithmetic_expressions":["typSecOut","Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpDamOutMin_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"5"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"Pa\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"15"}}}}}]}},"description":{"description_string":"Differential pressure across the minimum outdoor air damper that provides the design minimum outdoor airflow","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Information provided by testing, adjusting, and balancing contractor\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="},{"arithmetic_expressions":["typSecOut","Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"pAirRetSet_rel_min","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"2.4"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"Pa\""}}}}}],"equal":true,"expression":{"simple_expression":"10"}}},"description":{"description_string":"Return fan minimum discharge static pressure setpoint","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Information provided by testing, adjusting, and balancing contractor\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="},{"arithmetic_expressions":["buiPreCon","Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanDp"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"pAirRetSet_rel_max","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"10"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"Pa\""}}}}}],"equal":true,"expression":{"simple_expression":"40"}}},"description":{"description_string":"Return fan maximum discharge static pressure setpoint","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Information provided by testing, adjusting, and balancing contractor\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="},{"arithmetic_expressions":["buiPreCon","Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanDp"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.VolumeFlowRate","component_list":[{"declaration":{"identifier":"dVFanRet_flow","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0.1"}}}}}]}},"description":{"description_string":"Airflow differential between supply and return fans to maintain building pressure at setpoint","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Information provided by testing, adjusting, and balancing contractor\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="},{"arithmetic_expressions":["buiPreCon","Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanMeasuredAir"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"yFanSup_min","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"1\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"max","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}}],"equal":true,"expression":{"simple_expression":"0.1"}}},"description":{"description_string":"Lowest allowed fan speed if fan is on","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Information provided by testing, adjusting, and balancing contractor\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="},{"arithmetic_expressions":["typFanSup","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"yFanRel_min","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"1\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"max","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}}],"equal":true,"expression":{"simple_expression":"0.1"}}},"description":{"description_string":"Minimum relief fan speed","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Information provided by testing, adjusting, and balancing contractor\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="},{"arithmetic_expressions":["typFanRel","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"yFanRet_min","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"1\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"max","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}}],"equal":true,"expression":{"simple_expression":"0.1"}}},"description":{"description_string":"Minimum return fan speed","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Information provided by testing, adjusting, and balancing contractor\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"=="},{"arithmetic_expressions":["typFanRet","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of sizing and operating parameters for\nmultiple-zone VAV controllers within\n\nBuildings.Templates.AirHandlersFans.Components.Controls.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/Components/Data/VAVMultiZoneController.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/AirHandlersFans/Components/Data/VAVMultiZoneController.mo","checksum":"542e73f5ff25acc60e72ee972984fa01"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/package.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/package.json deleted file mode 100644 index 4c34f4ff..00000000 --- a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/Data/package.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates.AirHandlersFans.Components","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"Data","description_string":"Records for design and operating parameters","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.MaterialPropertiesPackage"}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package provides records for design and operating parameters.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/Components/Data/package.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/AirHandlersFans/Components/Data/package.mo","checksum":"ae5b6133c15a0df1c978baccf7ba9ee4","order":["OutdoorReliefReturnSection","PartialController","VAVMultiZoneController"]} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/package.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/package.json deleted file mode 100644 index 371d41fb..00000000 --- a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Components/package.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates.AirHandlersFans","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"Components","description_string":"Package with component models","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.VariantsPackage"}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package contains component models that are used in\n\nBuildings.Templates.AirHandlersFans.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/Components/package.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/AirHandlersFans/Components/package.mo","checksum":"d8932e3d0866bbf2302329a91501d61c","order":["Controls","HeatRecovery","OutdoorReliefReturnSection","OutdoorSection","ReliefReturnSection","Data","Interfaces"]} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Configuration/PartialAirHandler.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Configuration/PartialAirHandler.json deleted file mode 100644 index c37703a8..00000000 --- a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Configuration/PartialAirHandler.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates.AirHandlersFans.Configuration","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"PartialAirHandler","description_string":"Configuration parameters for air handler interface class","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Record"}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.AirHandlersFans.Types.Configuration","component_list":[{"declaration":{"identifier":"typ"},"description":{"description_string":"Type of system","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Fan","component_list":[{"declaration":{"identifier":"typFanSup"},"description":{"description_string":"Type of supply fan","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Fan","component_list":[{"declaration":{"identifier":"typFanRet"},"description":{"description_string":"Type of return fan","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Fan","component_list":[{"declaration":{"identifier":"typFanRel"},"description":{"description_string":"Type of relief fan","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Integer","component_list":[{"declaration":{"identifier":"nFanSup","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typFanSup","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"0"}}],"else_expression":{"simple_expression":"1"}}}}}}}]}},"description":{"description_string":"Number of supply fans","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typFanSup","Buildings.Templates.Components.Types.Fan.ArrayVariable"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Integer","component_list":[{"declaration":{"identifier":"nFanRet","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typFanRet","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"0"}}],"else_expression":{"simple_expression":"1"}}}}}}}]}},"description":{"description_string":"Number of return fans","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typFanRet","Buildings.Templates.Components.Types.Fan.ArrayVariable"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Integer","component_list":[{"declaration":{"identifier":"nFanRel","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typFanRel","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"0"}}],"else_expression":{"simple_expression":"1"}}}}}}}]}},"description":{"description_string":"Number of relief fans","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typFanRel","Buildings.Templates.Components.Types.Fan.ArrayVariable"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Boolean","component_list":[{"declaration":{"identifier":"have_souChiWat"},"description":{"description_string":"Set to true if cooling coil requires fluid ports on the source side","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Boolean","component_list":[{"declaration":{"identifier":"have_souHeaWat"},"description":{"description_string":"Set to true if heating coil requires fluid ports on the source side","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.AirHandlersFans.Types.Controller","component_list":[{"declaration":{"identifier":"typCtl"},"description":{"description_string":"Type of controller","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of configuration parameters for the class\n\nBuildings.Templates.AirHandlersFans.Interfaces.PartialAirHandler.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/Configuration/PartialAirHandler.mo","fullMoFilePath":"/dependencies/modelica-buildings/Buildings/Templates/AirHandlersFans/Configuration/PartialAirHandler.mo","checksum":"768b75dcf0b07f9b6f36546ced02cbdc"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Configuration/VAVMultiZone.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Configuration/VAVMultiZone.json deleted file mode 100644 index d69f656e..00000000 --- a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Configuration/VAVMultiZone.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates.AirHandlersFans.Configuration","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"VAVMultiZone","description_string":"Configuration parameters for multiple-zone VAV","composition":{"element_list":[{"extends_clause":{"name":"Buildings.Templates.AirHandlersFans.Configuration.PartialAirHandler"}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Coil","component_list":[{"declaration":{"identifier":"typCoiHeaPre"},"description":{"description_string":"Type of heating coil in preheat position","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Coil","component_list":[{"declaration":{"identifier":"typCoiCoo"},"description":{"description_string":"Type of cooling coil","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Coil","component_list":[{"declaration":{"identifier":"typCoiHeaReh"},"description":{"description_string":"Type of heating coil in reheat position","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Valve","component_list":[{"declaration":{"identifier":"typValCoiHeaPre"},"description":{"description_string":"Type of valve for heating coil in preheat position","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Valve","component_list":[{"declaration":{"identifier":"typValCoiCoo"},"description":{"description_string":"Type of valve for cooling coil","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Valve","component_list":[{"declaration":{"identifier":"typValCoiHeaReh"},"description":{"description_string":"Type of valve for heating coil in reheat position","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Damper","component_list":[{"declaration":{"identifier":"typDamOut"},"description":{"description_string":"Outdoor air damper type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Damper","component_list":[{"declaration":{"identifier":"typDamOutMin"},"description":{"description_string":"Minimum outdoor air damper type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Damper","component_list":[{"declaration":{"identifier":"typDamRel"},"description":{"description_string":"Relief damper type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Damper","component_list":[{"declaration":{"identifier":"typDamRet"},"description":{"description_string":"Return damper type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection","component_list":[{"declaration":{"identifier":"typSecOut"},"description":{"description_string":"Type of outdoor air section","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl","component_list":[{"declaration":{"identifier":"buiPreCon"},"description":{"description_string":"Type of building pressure control system","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard","component_list":[{"declaration":{"identifier":"stdVen"},"description":{"description_string":"Ventilation standard","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentPrefixes","modification":{"equal":true,"expression":{"simple_expression":"\"parameter\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"cfg\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of configuration parameters for the class\n\nBuildings.Templates.AirHandlersFans.VAVMultiZone.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/Configuration/VAVMultiZone.mo","fullMoFilePath":"/dependencies/modelica-buildings/Buildings/Templates/AirHandlersFans/Configuration/VAVMultiZone.mo","checksum":"2272145067a3c30793d9bed566db428d"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Configuration/package.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Configuration/package.json deleted file mode 100644 index df855ec2..00000000 --- a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Configuration/package.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates.AirHandlersFans","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"Configuration","description_string":"Records for configuration parameters","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.MaterialPropertiesPackage"}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package provides records for configuration parameters.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/Configuration/package.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/AirHandlersFans/Configuration/package.mo","checksum":"47796d3db1c1cf6609e330ecd17c7d70","order":["PartialAirHandler","VAVMultiZone"]} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Data/PartialAirHandler.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Data/PartialAirHandler.json deleted file mode 100644 index fc176bc6..00000000 --- a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Data/PartialAirHandler.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates.AirHandlersFans.Data","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"PartialAirHandler","description_string":"Record for air handler interface class","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Record"}},{"replaceable":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.AirHandlersFans.Configuration.PartialAirHandler","component_list":[{"declaration":{"identifier":"cfg"},"description":{"description_string":"Configuration parameters","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"String","component_list":[{"declaration":{"identifier":"id","modification":{"equal":true,"expression":{"simple_expression":"\"\""}}},"description":{"description_string":"System tag","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"tab","modification":{"equal":true,"expression":{"simple_expression":"\"Advanced\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"String","component_list":[{"declaration":{"identifier":"id_souChiWat","modification":{"equal":true,"expression":{"simple_expression":"\"\""}}},"description":{"description_string":"CHW supply system tag","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"tab","modification":{"equal":true,"expression":{"simple_expression":"\"Advanced\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"cfg.have_souChiWat"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"String","component_list":[{"declaration":{"identifier":"id_souHeaWat","modification":{"equal":true,"expression":{"simple_expression":"\"\""}}},"description":{"description_string":"HHW supply system tag","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"tab","modification":{"equal":true,"expression":{"simple_expression":"\"Advanced\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"cfg.have_souHeaWat"}}}}}]}}}}]}}]}},{"replaceable":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.AirHandlersFans.Components.Data.PartialController","component_list":[{"declaration":{"identifier":"ctl","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typFanSup","modification":{"equal":true,"expression":{"simple_expression":"cfg.typFanSup"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typFanRel","modification":{"equal":true,"expression":{"simple_expression":"cfg.typFanRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typFanRet","modification":{"equal":true,"expression":{"simple_expression":"cfg.typFanRet"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"cfg.typCtl"}}}}}]}},"description":{"description_string":"Controller","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Controls\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"mAirSup_flow_nominal"},"description":{"description_string":"Supply air mass flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["cfg.typ","Buildings.Templates.AirHandlersFans.Types.Configuration.ExhaustOnly"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"mAirRet_flow_nominal"},"description":{"description_string":"Return air mass flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["cfg.typ","Buildings.Templates.AirHandlersFans.Types.Configuration.SupplyOnly"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of sizing and operating parameters for the class\n\nBuildings.Templates.AirHandlersFans.Interfaces.PartialAirHandler.\n

\n

\nThe tab Advanced contains some optional parameters that can be used \nfor workflow automation, but are not used for simulation.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/Data/PartialAirHandler.mo","fullMoFilePath":"/dependencies/modelica-buildings/Buildings/Templates/AirHandlersFans/Data/PartialAirHandler.mo","checksum":"8592adcfbf631eea2b8b202832614536"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Data/VAVMultiZone.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Data/VAVMultiZone.json deleted file mode 100644 index df1a8d45..00000000 --- a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Data/VAVMultiZone.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates.AirHandlersFans.Data","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"VAVMultiZone","description_string":"Record for multiple-zone VAV","composition":{"element_list":[{"extends_clause":{"name":"Buildings.Templates.AirHandlersFans.Data.PartialAirHandler","class_modification":[{"element_redeclaration":{"component_clause1":{"type_specifier":"Buildings.Templates.AirHandlersFans.Configuration.VAVMultiZone","component_declaration1":{"declaration":{"identifier":"cfg"}}}}},{"element_redeclaration":{"component_clause1":{"type_specifier":"Buildings.Templates.AirHandlersFans.Components.Data.VAVMultiZoneController","component_declaration1":{"declaration":{"identifier":"ctl","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typSecOut","modification":{"equal":true,"expression":{"simple_expression":"cfg.typSecOut"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"buiPreCon","modification":{"equal":true,"expression":{"simple_expression":"cfg.buiPreCon"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"stdVen","modification":{"equal":true,"expression":{"simple_expression":"cfg.stdVen"}}}}}]}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"mAirSup_flow_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["cfg.typFanSup","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":"fanSup.m_flow_nominal"}}],"else_expression":{"simple_expression":"0"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"mAirRet_flow_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["cfg.typFanRet","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":"fanRet.m_flow_nominal"}},{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["cfg.typFanRel","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":"fanRel.m_flow_nominal"}},{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["cfg.typFanSup","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":"fanSup.m_flow_nominal"}}],"else_expression":{"simple_expression":"0"}}}}}}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Data.Fan","component_list":[{"declaration":{"identifier":"fanSup","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"cfg.typFanSup"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFan","modification":{"equal":true,"expression":{"simple_expression":"cfg.nFanSup"}}}}}]}},"description":{"description_string":"Supply fan","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Fans\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["cfg.typFanSup","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"extends_clause":{"name":"Buildings.Templates.AirHandlersFans.Components.Data.OutdoorReliefReturnSection","class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typDamOut","modification":{"equal":true,"expression":{"simple_expression":"cfg.typDamOut"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typDamOutMin","modification":{"equal":true,"expression":{"simple_expression":"cfg.typDamOutMin"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typDamRel","modification":{"equal":true,"expression":{"simple_expression":"cfg.typDamRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typDamRet","modification":{"equal":true,"expression":{"simple_expression":"cfg.typDamRet"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typFanRel","modification":{"equal":true,"expression":{"simple_expression":"cfg.typFanRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typFanRet","modification":{"equal":true,"expression":{"simple_expression":"cfg.typFanRet"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFanRel","modification":{"equal":true,"expression":{"simple_expression":"cfg.nFanRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFanRet","modification":{"equal":true,"expression":{"simple_expression":"cfg.nFanRet"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"fanRel"}}},{"element_modification_or_replaceable":{"element_modification":{"name":"fanRet"}}},{"element_modification_or_replaceable":{"element_modification":{"name":"damOut","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"m_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mAirSup_flow_nominal"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"damOutMin","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"m_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mOutMin_flow_nominal"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"damRel","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"m_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mAirRet_flow_nominal"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"damRet","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"m_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mAirRet_flow_nominal"}}}}}]}}}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Data.Coil","component_list":[{"declaration":{"identifier":"coiHeaPre","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"cfg.typCoiHeaPre"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typVal","modification":{"equal":true,"expression":{"simple_expression":"cfg.typValCoiHeaPre"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_sou","modification":{"equal":true,"expression":{"simple_expression":"cfg.have_souHeaWat"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"mAir_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mAirSup_flow_nominal"}}}}}]}},"description":{"description_string":"Heating coil in preheat position","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Coils\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["cfg.typCoiHeaPre","Buildings.Templates.Components.Types.Coil.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Data.Coil","component_list":[{"declaration":{"identifier":"coiCoo","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"cfg.typCoiCoo"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typVal","modification":{"equal":true,"expression":{"simple_expression":"cfg.typValCoiCoo"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_sou","modification":{"equal":true,"expression":{"simple_expression":"cfg.have_souChiWat"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"mAir_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mAirSup_flow_nominal"}}}}}]}},"description":{"description_string":"Cooling coil","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Coils\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["cfg.typCoiCoo","Buildings.Templates.Components.Types.Coil.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Data.Coil","component_list":[{"declaration":{"identifier":"coiHeaReh","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"cfg.typCoiHeaReh"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typVal","modification":{"equal":true,"expression":{"simple_expression":"cfg.typValCoiHeaReh"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_sou","modification":{"equal":true,"expression":{"simple_expression":"cfg.have_souHeaWat"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"mAir_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mAirSup_flow_nominal"}}}}}]}},"description":{"description_string":"Heating coil in reheat position","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Coils\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["cfg.typCoiHeaReh","Buildings.Templates.Components.Types.Coil.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentPrefixes","modification":{"equal":true,"expression":{"simple_expression":"\"parameter\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"dat\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of sizing and operating parameters for the class\n\nBuildings.Templates.AirHandlersFans.VAVMultiZone.\n

\n

\nThe tab Advanced contains some optional parameters that can be used \nfor workflow automation, but are not used for simulation.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/Data/VAVMultiZone.mo","fullMoFilePath":"/dependencies/modelica-buildings/Buildings/Templates/AirHandlersFans/Data/VAVMultiZone.mo","checksum":"b00b5ece0db1961cb0670fd2029e4115"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Data/package.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Data/package.json deleted file mode 100644 index 4967889f..00000000 --- a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Data/package.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates.AirHandlersFans","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"Data","description_string":"Records for design and operating parameters","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.MaterialPropertiesPackage"}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package provides records for design and operating parameters.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/Data/package.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/AirHandlersFans/Data/package.mo","checksum":"7adc0970f29eec67d4dc50361e7107c7","order":["PartialAirHandler","VAVMultiZone"]} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Types.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Types.json deleted file mode 100644 index 444f2ef4..00000000 --- a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/Types.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates.AirHandlersFans","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"Types","description_string":"Package with type definitions","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.TypesPackage"}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"Configuration","value":{"description":{"description_string":"Enumeration to configure the AHU"},"enum_list":[{"identifier":"SupplyOnly","description":{"description_string":"Supply only system"}},{"identifier":"ExhaustOnly","description":{"description_string":"Exhaust only system"}},{"identifier":"DualDuct","description":{"description_string":"Dual duct system with supply and return"}},{"identifier":"SingleDuct","description":{"description_string":"Single duct system with supply and return"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"Controller","value":{"description":{"description_string":"Enumeration to configure the AHU controller"},"enum_list":[{"identifier":"G36VAVMultiZone","description":{"description_string":"Guideline 36 controller for multiple-zone VAV"}},{"identifier":"OpenLoop","description":{"description_string":"Open loop controller"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"ControlFanReturn","value":{"description":{"description_string":"Enumeration to configure the return fan control"},"enum_list":[{"identifier":"AirflowMeasured","description":{"description_string":"Airflow tracking with airflow measurement stations"}},{"identifier":"BuildingPressure","description":{"description_string":"Building pressure (via discharge static pressure)"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"HeatRecovery","value":{"description":{"description_string":"Enumeration to configure the heat recovery"},"enum_list":[{"identifier":"None","description":{"description_string":"No heat recovery"}},{"identifier":"FlatPlate","description":{"description_string":"Flat plate heat exchanger"}},{"identifier":"EnthalpyWheel","description":{"description_string":"Enthalpy wheel"}},{"identifier":"RunAroundCoil","description":{"description_string":"Run-around coil"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"OutdoorReliefReturnSection","value":{"description":{"description_string":"Enumeration to configure the outdoor/relief/return air section"},"enum_list":[{"identifier":"HundredPctOutdoorAir","description":{"description_string":"100 % outdoor air system"}},{"identifier":"MixedAirWithDamper","description":{"description_string":"Mixed air system with return air damper - Optional economizer function"}},{"identifier":"MixedAirNoDamper","description":{"description_string":"Mixed air system without return air damper - No economizer function"}},{"identifier":"MixedAirNoRelief","description":{"description_string":"Mixed air system without relief branch - Optional economizer function"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"ReliefReturnSection","value":{"description":{"description_string":"Enumeration to configure the relief/return air section"},"enum_list":[{"identifier":"NoRelief","description":{"description_string":"No relief branch"}},{"identifier":"NoReturn","description":{"description_string":"No return branch"}},{"identifier":"ReliefDamper","description":{"description_string":"Modulating relief damper without fan"}},{"identifier":"ReliefFan","description":{"description_string":"Relief fan with two-position relief damper"}},{"identifier":"ReturnFan","description":{"description_string":"Return fan with modulating relief damper"}}]}}}}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package contains type definitions.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/Types.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/AirHandlersFans/Types.mo","checksum":"166b505954a94b96fd9c014cabebb043"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/VAVMultiZone.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/VAVMultiZone.json deleted file mode 100644 index c0bcca8c..00000000 --- a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/VAVMultiZone.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates.AirHandlersFans","stored_class_definitions":[{"class_prefixes":"model","class_specifier":{"long_class_specifier":{"identifier":"VAVMultiZone","description_string":"Multiple-zone VAV","composition":{"element_list":[{"extends_clause":{"name":"Buildings.Templates.AirHandlersFans.Interfaces.PartialAirHandler","class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"nZon","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"2"}}}}}]}}}},{"element_redeclaration":{"final":true,"component_clause1":{"type_specifier":"Buildings.Templates.AirHandlersFans.Configuration.VAVMultiZone","component_declaration1":{"declaration":{"identifier":"cfg","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFanSup","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["fanSupDra.typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":"fanSupDra.nFan"}},{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["fanSupBlo.typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":"fanSupBlo.nFan"}}],"else_expression":{"simple_expression":"0"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFanRet","modification":{"equal":true,"expression":{"simple_expression":"secOutRel.nFanRet"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFanRel","modification":{"equal":true,"expression":{"simple_expression":"secOutRel.nFanRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typCoiHeaPre","modification":{"equal":true,"expression":{"simple_expression":"coiHeaPre.typ"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typCoiCoo","modification":{"equal":true,"expression":{"simple_expression":"coiCoo.typ"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typCoiHeaReh","modification":{"equal":true,"expression":{"simple_expression":"coiHeaReh.typ"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typValCoiHeaPre","modification":{"equal":true,"expression":{"simple_expression":"coiHeaPre.typVal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typValCoiCoo","modification":{"equal":true,"expression":{"simple_expression":"coiCoo.typVal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typValCoiHeaReh","modification":{"equal":true,"expression":{"simple_expression":"coiHeaReh.typVal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typDamOut","modification":{"equal":true,"expression":{"simple_expression":"secOutRel.typDamOut"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typDamOutMin","modification":{"equal":true,"expression":{"simple_expression":"secOutRel.typDamOutMin"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typDamRet","modification":{"equal":true,"expression":{"simple_expression":"secOutRel.typDamRet"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typDamRel","modification":{"equal":true,"expression":{"simple_expression":"secOutRel.typDamRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typSecOut","modification":{"equal":true,"expression":{"simple_expression":"secOutRel.typSecOut"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typCtl","modification":{"equal":true,"expression":{"simple_expression":"ctl.typ"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"buiPreCon","modification":{"equal":true,"expression":{"simple_expression":"ctl.buiPreCon"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"stdVen","modification":{"equal":true,"expression":{"simple_expression":"ctl.stdVen"}}}}}]}}}}}},{"element_redeclaration":{"component_clause1":{"type_specifier":"Buildings.Templates.AirHandlersFans.Data.VAVMultiZone","component_declaration1":{"declaration":{"identifier":"dat"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.AirHandlersFans.Types.Configuration.SingleDuct"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_porRel","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["secOutRel.typ","Types.OutdoorReliefReturnSection.MixedAirNoRelief"],"relation_operator":"<>"}]}]}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_souChiWat","modification":{"equal":true,"expression":{"simple_expression":"coiCoo.have_sou"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_souHeaWat","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["coiHeaPre.have_sou"]}]},{"logical_and":[{"arithmetic_expressions":["coiHeaReh.have_sou"]}]}]}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typFanSup","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["fanSupDra.typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":"fanSupDra.typ"}},{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["fanSupBlo.typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":"fanSupBlo.typ"}}],"else_expression":{"simple_expression":"Buildings.Templates.Components.Types.Fan.None"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typFanRel","modification":{"equal":true,"expression":{"simple_expression":"secOutRel.typFanRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typFanRet","modification":{"equal":true,"expression":{"simple_expression":"secOutRel.typFanRet"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFanSup","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["fanSupDra.typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":"fanSupDra.nFan"}},{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["fanSupBlo.typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":"fanSupBlo.nFan"}}],"else_expression":{"simple_expression":"0"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFanRel","modification":{"equal":true,"expression":{"simple_expression":"secOutRel.nFanRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFanRet","modification":{"equal":true,"expression":{"simple_expression":"secOutRel.nFanRet"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"mChiWat_flow_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"coiCoo.have_sou"},"then":{"simple_expression":"dat.coiCoo.mWat_flow_nominal"}}],"else_expression":{"simple_expression":"0"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"mHeaWat_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":{"addOps":["+"],"terms":[{"factors":[{"primary1":[{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"coiHeaPre.have_sou"},"then":{"simple_expression":"dat.coiHeaPre.mWat_flow_nominal"}}],"else_expression":{"simple_expression":"0"}}}]}]},{"factors":[{"primary1":[{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"coiHeaReh.have_sou"},"then":{"simple_expression":"dat.coiHeaReh.mWat_flow_nominal"}}],"else_expression":{"simple_expression":"0"}}}]}]}]}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"QChiWat_flow_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"coiCoo.have_sou"},"then":{"simple_expression":"dat.coiCoo.Q_flow_nominal"}}],"else_expression":{"simple_expression":"0"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"QHeaWat_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":{"addOps":["+"],"terms":[{"factors":[{"primary1":[{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"coiHeaPre.have_sou"},"then":{"simple_expression":"dat.coiHeaPre.Q_flow_nominal"}}],"else_expression":{"simple_expression":"0"}}}]}]},{"factors":[{"primary1":[{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"coiHeaReh.have_sou"},"then":{"simple_expression":"dat.coiHeaReh.Q_flow_nominal"}}],"else_expression":{"simple_expression":"0"}}}]}]}]}}}}}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Boolean","component_list":[{"declaration":{"identifier":"have_senPreBui","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["secOutRel.typSecRel","Buildings.Templates.AirHandlersFans.Types.ReliefReturnSection.ReliefDamper"],"relation_operator":"=="}]},{"logical_and":[{"arithmetic_expressions":["secOutRel.typSecRel","Buildings.Templates.AirHandlersFans.Types.ReliefReturnSection.ReliefFan"],"relation_operator":"=="}]},{"logical_and":[{"arithmetic_expressions":["secOutRel.typSecRel","Buildings.Templates.AirHandlersFans.Types.ReliefReturnSection.ReturnFan"],"relation_operator":"=="},{"arithmetic_expressions":["secOutRel.typCtlFanRet","Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.BuildingPressure"],"relation_operator":"=="}]}]}}}}},"description":{"description_string":"Set to true if building static pressure sensor is used","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}}]}}}}]}}]}},{"inner":true,"replaceable":true,"component_clause":{"type_specifier":"Buildings.Templates.AirHandlersFans.Components.OutdoorReliefReturnSection.MixedAirWithDamper","component_list":[{"declaration":{"identifier":"secOutRel","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"MediumAir","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typCtlFanRet","modification":{"equal":true,"expression":{"simple_expression":"ctl.typCtlFanRet"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typCtlEco","modification":{"equal":true,"expression":{"simple_expression":"ctl.typCtlEco"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"energyDynamics","modification":{"equal":true,"expression":{"simple_expression":"energyDynamics"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversal","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalAir"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"dat","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"mOutMin_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"dat.mOutMin_flow_nominal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"damOut","modification":{"equal":true,"expression":{"simple_expression":"dat.damOut"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"damOutMin","modification":{"equal":true,"expression":{"simple_expression":"dat.damOutMin"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"damRel","modification":{"equal":true,"expression":{"simple_expression":"dat.damRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"damRet","modification":{"equal":true,"expression":{"simple_expression":"dat.damRet"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"fanRel","modification":{"equal":true,"expression":{"simple_expression":"dat.fanRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"fanRet","modification":{"equal":true,"expression":{"simple_expression":"dat.fanRet"}}}}}]}}}}]}},"description":{"description_string":"Outdoor/relief/return air section","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-280,"y":-220},{"x":-120,"y":-60}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Templates.Components.Sensors.Temperature","component_list":[{"declaration":{"identifier":"TAirMix","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_sen","modification":{"equal":true,"expression":{"simple_expression":"ctl.use_TMix"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Components.Types.SensorTemperature.Averaging"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"m_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mAirSup_flow_nominal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversal","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalAir"}}}}}]}},"description":{"description_string":"Mixed air temperature sensor","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-110,"y":-210},{"x":-90,"y":-190}]}}}}}]}}]}},{"inner":true,"replaceable":true,"constraining_clause":{"name":"Buildings.Templates.Components.Interfaces.PartialFan","class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"energyDynamics","modification":{"equal":true,"expression":{"simple_expression":"energyDynamics"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversal","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"dat","modification":{"equal":true,"expression":{"simple_expression":"dat.fanSup"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_senFlo","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["ctl.typCtlFanRet","Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.AirflowMeasured"],"relation_operator":"=="}]}]}}}}}}}]},"component_clause":{"type_specifier":"Buildings.Templates.Components.Fans.None","component_list":[{"declaration":{"identifier":"fanSupBlo"}}]},"description":{"description_string":"Supply fan - Blow through","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"choices","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Fans.None","component_declaration1":{"declaration":{"identifier":"fanSupBlo"},"description":{"description_string":"No fan"}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Fans.SingleVariable","component_declaration1":{"declaration":{"identifier":"fanSupBlo"},"description":{"description_string":"Single fan - Variable speed"}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Fans.ArrayVariable","component_declaration1":{"declaration":{"identifier":"fanSupBlo"},"description":{"description_string":"Fan array - Variable speed"}}}}}}]}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["fanSupDra.typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"=="}]}]}}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-50,"y":-210},{"x":-30,"y":-190}]}}}}}]}},{"component_clause":{"type_specifier":"Buildings.Templates.Components.Sensors.Temperature","component_list":[{"declaration":{"identifier":"TAirCoiHeaLvg","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_sen","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["coiHeaPre.typ","Buildings.Templates.Components.Types.Coil.None"],"relation_operator":"<>"},{"arithmetic_expressions":["coiCoo.typ","Buildings.Templates.Components.Types.Coil.None"],"relation_operator":"<>"}]}]}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Components.Types.SensorTemperature.Averaging"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"m_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mAirSup_flow_nominal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversal","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalAir"}}}}}]}},"description":{"description_string":"Heating coil leaving air temperature sensor","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":40,"y":-210},{"x":60,"y":-190}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Templates.Components.Sensors.Temperature","component_list":[{"declaration":{"identifier":"TAirCoiCooLvg","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_sen","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["coiCoo.typ","Buildings.Templates.Components.Types.Coil.None"],"relation_operator":"<>"},{"arithmetic_expressions":["coiHeaReh.typ","Buildings.Templates.Components.Types.Coil.None"],"relation_operator":"<>"}]}]}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Components.Types.SensorTemperature.Averaging"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"m_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mAirSup_flow_nominal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversal","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalAir"}}}}}]}},"description":{"description_string":"Cooling coil leaving air temperature sensor","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-210},{"x":120,"y":-190}]}}}}}]}}]}},{"inner":true,"replaceable":true,"constraining_clause":{"name":"Buildings.Templates.Components.Interfaces.PartialFan","class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"energyDynamics","modification":{"equal":true,"expression":{"simple_expression":"energyDynamics"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversal","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"dat","modification":{"equal":true,"expression":{"simple_expression":"dat.fanSup"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_senFlo","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["ctl.typCtlFanRet","Buildings.Templates.AirHandlersFans.Types.ControlFanReturn.AirflowMeasured"],"relation_operator":"=="}]}]}}}}}}}]},"component_clause":{"type_specifier":"Buildings.Templates.Components.Fans.SingleVariable","component_list":[{"declaration":{"identifier":"fanSupDra"}}]},"description":{"description_string":"Supply fan - Draw through","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"choices","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Fans.None","component_declaration1":{"declaration":{"identifier":"fanSupDra"},"description":{"description_string":"No fan"}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Fans.SingleVariable","component_declaration1":{"declaration":{"identifier":"fanSupDra"},"description":{"description_string":"Single fan - Variable speed"}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Fans.ArrayVariable","component_declaration1":{"declaration":{"identifier":"fanSupDra"},"description":{"description_string":"Fan array - Variable speed"}}}}}}]}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["fanSupBlo.typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"=="}]}]}}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":172,"y":-210},{"x":192,"y":-190}]}}}}}]}},{"component_clause":{"type_specifier":"Buildings.Templates.Components.Sensors.Temperature","component_list":[{"declaration":{"identifier":"TAirSup","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_sen","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Components.Types.SensorTemperature.Standard"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"m_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mAirSup_flow_nominal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversal","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalAir"}}}}}]}},"description":{"description_string":"Supply air temperature sensor","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":210,"y":-210},{"x":230,"y":-190}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Templates.Components.Sensors.DifferentialPressure","component_list":[{"declaration":{"identifier":"pBui_rel","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_sen","modification":{"equal":true,"expression":{"simple_expression":"have_senPreBui"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"text_flip","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}},"description":{"description_string":"Building static pressure","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":10,"y":30},{"x":-10,"y":50}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Fluid.Sources.Outside","component_list":[{"declaration":{"identifier":"out","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nPorts","modification":{"equal":true,"expression":{"simple_expression":"3"}}}}}]}},"description":{"description_string":"Outdoor conditions","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"origin":{"x":-40,"y":90},"extent":[{"x":-10,"y":-10},{"x":10,"y":10}],"rotation":-90}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Fluid.Sources.Boundary_pT","component_list":[{"declaration":{"identifier":"bui","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"use_p_in","modification":{"equal":true,"expression":{"simple_expression":"have_senPreBui"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nPorts","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}}]}},"description":{"description_string":"Building absolute pressure in representative space","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"origin":{"x":40,"y":60},"extent":[{"x":-10,"y":-10},{"x":10,"y":10}],"rotation":-90}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Templates.Components.Sensors.Temperature","component_list":[{"declaration":{"identifier":"TAirRet","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversal","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_sen","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["secOutRel.have_eco"]},{"arithmetic_expressions":[{"terms":[{"factors":[{"primary1":[{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["ctl.typCtlEco","Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialDryBulb"],"relation_operator":"=="}]},{"logical_and":[{"arithmetic_expressions":["ctl.typCtlEco","Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.FixedDryBulbWithDifferentialDryBulb"],"relation_operator":"=="}]}]}}}]}]}]}]}]}]}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typ","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Components.Types.SensorTemperature.Standard"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"m_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mAirRet_flow_nominal"}}}}}]}},"description":{"description_string":"Return air temperature sensor","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":220,"y":-90},{"x":200,"y":-70}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Templates.Components.Sensors.SpecificEnthalpy","component_list":[{"declaration":{"identifier":"hAirRet","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversal","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_sen","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["secOutRel.have_eco"]},{"arithmetic_expressions":["ctl.typCtlEco","Buildings.Controls.OBC.ASHRAE.G36.Types.ControlEconomizer.DifferentialEnthalpyWithFixedDryBulb"],"relation_operator":"=="}]}]}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"m_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mAirRet_flow_nominal"}}}}}]}},"description":{"description_string":"Return air enthalpy sensor","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":250,"y":-90},{"x":230,"y":-70}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Templates.Components.Sensors.DifferentialPressure","component_list":[{"declaration":{"identifier":"pAirSup_rel","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"have_sen","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}},"description":{"description_string":"Duct static pressure sensor","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":250,"y":-230},{"x":270,"y":-210}]}}}}}]}}]}},{"inner":true,"replaceable":true,"constraining_clause":{"name":"Buildings.Templates.Components.Interfaces.PartialCoil","class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"dat","modification":{"equal":true,"expression":{"simple_expression":"dat.coiHeaPre"}}}}},{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"MediumAir","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"energyDynamics","modification":{"equal":true,"expression":{"simple_expression":"energyDynamics"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversalAir","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversalLiq","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalLiq"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"show_T","modification":{"equal":true,"expression":{"simple_expression":"show_T"}}}}}]},"component_clause":{"type_specifier":"Buildings.Templates.Components.Coils.WaterBasedHeating","component_list":[{"declaration":{"identifier":"coiHeaPre","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"MediumHeaWat","value":{"name":"MediumHeaWat"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typVal","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Components.Types.Valve.TwoWayModulating"}}}}}]}}}]},"description":{"description_string":"Heating coil in preheat position","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"choices","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Coils.None","component_declaration1":{"declaration":{"identifier":"coiHeaPre"},"description":{"description_string":"No coil"}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Coils.WaterBasedHeating","component_declaration1":{"declaration":{"identifier":"coiHeaPre","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"MediumHeaWat","value":{"name":"MediumHeaWat"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typVal","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Components.Types.Valve.TwoWayModulating"}}}}}]}},"description":{"description_string":"Hot water coil with two-way valve"}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Coils.ElectricHeating","component_declaration1":{"declaration":{"identifier":"coiHeaPre"},"description":{"description_string":"Modulating electric heating coil"}}}}}}]}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["coiHeaReh.typ","Buildings.Templates.Components.Types.Coil.None"],"relation_operator":"=="}]}]}}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":10,"y":-210},{"x":30,"y":-190}]}}}}}]}},{"inner":true,"replaceable":true,"constraining_clause":{"name":"Buildings.Templates.Components.Interfaces.PartialCoil","class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"dat","modification":{"equal":true,"expression":{"simple_expression":"dat.coiCoo"}}}}},{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"MediumAir","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"energyDynamics","modification":{"equal":true,"expression":{"simple_expression":"energyDynamics"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversalAir","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversalLiq","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalLiq"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"show_T","modification":{"equal":true,"expression":{"simple_expression":"show_T"}}}}}]},"component_clause":{"type_specifier":"Buildings.Templates.Components.Coils.WaterBasedCooling","component_list":[{"declaration":{"identifier":"coiCoo","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"MediumChiWat","value":{"name":"MediumChiWat"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typVal","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Components.Types.Valve.TwoWayModulating"}}}}}]}}}]},"description":{"description_string":"Cooling coil","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"choices","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Coils.None","component_declaration1":{"declaration":{"identifier":"coiCoo"},"description":{"description_string":"No coil"}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Coils.WaterBasedCooling","component_declaration1":{"declaration":{"identifier":"coiCoo","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"MediumChiWat","value":{"name":"MediumChiWat"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typVal","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Components.Types.Valve.TwoWayModulating"}}}}}]}},"description":{"description_string":"Chilled water coil with two-way valve"}}}}}}]}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":70,"y":-210},{"x":90,"y":-190}]}}}}}]}},{"inner":true,"replaceable":true,"constraining_clause":{"name":"Buildings.Templates.Components.Interfaces.PartialCoil","class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"dat","modification":{"equal":true,"expression":{"simple_expression":"dat.coiHeaReh"}}}}},{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"MediumAir","value":{"name":"MediumAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"energyDynamics","modification":{"equal":true,"expression":{"simple_expression":"energyDynamics"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversalAir","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalAir"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"allowFlowReversalLiq","modification":{"equal":true,"expression":{"simple_expression":"allowFlowReversalLiq"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"show_T","modification":{"equal":true,"expression":{"simple_expression":"show_T"}}}}}]},"component_clause":{"type_specifier":"Buildings.Templates.Components.Coils.None","component_list":[{"declaration":{"identifier":"coiHeaReh"}}]},"description":{"description_string":"Heating coil in reheat position","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"choices","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Coils.None","component_declaration1":{"declaration":{"identifier":"coiHeaReh"},"description":{"description_string":"No coil"}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Coils.WaterBasedHeating","component_declaration1":{"declaration":{"identifier":"coiHeaReh","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"MediumHeaWat","value":{"name":"MediumHeaWat"}}}}}]}},"description":{"description_string":"Hot water coil"}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"choice","modification":{"class_modification":[{"element_redeclaration":{"element_replaceable":{"component_clause1":{"type_specifier":"Buildings.Templates.Components.Coils.ElectricHeating","component_declaration1":{"declaration":{"identifier":"coiHeaReh"},"description":{"description_string":"Modulating electric heating coil"}}}}}}]}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["coiHeaPre.typ","Buildings.Templates.Components.Types.Coil.None"],"relation_operator":"=="},{"arithmetic_expressions":["ctl.typ","Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone"],"relation_operator":"<>"}]}]}}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":130,"y":-210},{"x":150,"y":-190}]}}}}}]}},{"component_clause":{"type_specifier":"Buildings.Fluid.FixedResistances.Junction","component_list":[{"declaration":{"identifier":"junHeaWatSup","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumHeaWat"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"m_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mHeaWat_flow_nominal*{1,-1,-1}"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"energyDynamics","modification":{"equal":true,"expression":{"simple_expression":"Modelica.Fluid.Types.Dynamics.FixedInitial"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"dp_nominal","modification":{"equal":true,"expression":{"simple_expression":{"function_call":{"name":"fill","arguments":[{"name":"0"},{"name":"3"}]}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"portFlowDirection_1","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"allowFlowReversalLiq"},"then":{"simple_expression":"Modelica.Fluid.Types.PortFlowDirection.Bidirectional"}}],"else_expression":{"simple_expression":"Modelica.Fluid.Types.PortFlowDirection.Entering"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"portFlowDirection_2","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"allowFlowReversalLiq"},"then":{"simple_expression":"Modelica.Fluid.Types.PortFlowDirection.Bidirectional"}}],"else_expression":{"simple_expression":"Modelica.Fluid.Types.PortFlowDirection.Leaving"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"portFlowDirection_3","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"allowFlowReversalLiq"},"then":{"simple_expression":"Modelica.Fluid.Types.PortFlowDirection.Bidirectional"}}],"else_expression":{"simple_expression":"Modelica.Fluid.Types.PortFlowDirection.Leaving"}}}}}}}]}},"condition_attribute":{"expression":{"simple_expression":"have_souHeaWat"}},"description":{"description_string":"HHW supply junction","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"origin":{"x":20,"y":-260},"extent":[{"x":-10,"y":-10},{"x":10,"y":10}],"rotation":90}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Fluid.FixedResistances.Junction","component_list":[{"declaration":{"identifier":"junHeaWatRet","modification":{"class_modification":[{"element_redeclaration":{"final":true,"short_class_definition":{"class_prefixes":"package","short_class_specifier":{"identifier":"Medium","value":{"name":"MediumHeaWat"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"m_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"mHeaWat_flow_nominal*{1,-1,1}"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"energyDynamics","modification":{"equal":true,"expression":{"simple_expression":"Modelica.Fluid.Types.Dynamics.FixedInitial"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"dp_nominal","modification":{"equal":true,"expression":{"simple_expression":{"function_call":{"name":"fill","arguments":[{"name":"0"},{"name":"3"}]}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"portFlowDirection_1","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"allowFlowReversalLiq"},"then":{"simple_expression":"Modelica.Fluid.Types.PortFlowDirection.Bidirectional"}}],"else_expression":{"simple_expression":"Modelica.Fluid.Types.PortFlowDirection.Entering"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"portFlowDirection_2","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"allowFlowReversalLiq"},"then":{"simple_expression":"Modelica.Fluid.Types.PortFlowDirection.Bidirectional"}}],"else_expression":{"simple_expression":"Modelica.Fluid.Types.PortFlowDirection.Entering"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"portFlowDirection_3","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"allowFlowReversalLiq"},"then":{"simple_expression":"Modelica.Fluid.Types.PortFlowDirection.Bidirectional"}}],"else_expression":{"simple_expression":"Modelica.Fluid.Types.PortFlowDirection.Leaving"}}}}}}}]}},"condition_attribute":{"expression":{"simple_expression":"have_souHeaWat"}},"description":{"description_string":"HHW return junction","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"origin":{"x":-20,"y":-240},"extent":[{"x":10,"y":-10},{"x":-10,"y":10}],"rotation":90}}}}}]}}]}},{"inner":true,"replaceable":true,"constraining_clause":{"name":"Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialControllerVAVMultizone","class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"dat","modification":{"equal":true,"expression":{"simple_expression":"dat.ctl"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nZon","modification":{"equal":true,"expression":{"simple_expression":"nZon"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typFanSup","modification":{"equal":true,"expression":{"simple_expression":"typFanSup"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typFanRel","modification":{"equal":true,"expression":{"simple_expression":"typFanRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"typFanRet","modification":{"equal":true,"expression":{"simple_expression":"typFanRet"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFanSup","modification":{"equal":true,"expression":{"simple_expression":"nFanSup"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFanRel","modification":{"equal":true,"expression":{"simple_expression":"nFanRel"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"nFanRet","modification":{"equal":true,"expression":{"simple_expression":"nFanRet"}}}}}]},"component_clause":{"type_specifier":"Buildings.Templates.AirHandlersFans.Components.Controls.G36VAVMultiZone","component_list":[{"declaration":{"identifier":"ctl"}}]},"description":{"description_string":"Control selections","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Controls\""}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-220,"y":-10},{"x":-200,"y":10}]}}}}}]}}],"element_sections":[{"equation_section":{"initial":true,"equation":[{"function_call_equation":{"function_name":"assert","function_call_args":{"function_argument":{"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typFanSup","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}}},"function_arguments":{"function_argument":{"expression":{"simple_expression":"\"In \" +getInstanceName() +\": \" +\"The template is configured with no supply fan, which is not supported.\""}}}}}},{"function_call_equation":{"function_name":"assert","function_call_args":{"function_argument":{"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":[{"terms":[{"factors":[{"primary1":[{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["fanSupBlo.typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"},{"arithmetic_expressions":["fanSupDra.typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}}]}]}]}]}]}]}}}},"function_arguments":{"function_argument":{"expression":{"simple_expression":"\"In \" +getInstanceName() +\": \" +\"The template is configured with both a blow-through fan and a draw-through fan, which is not supported.\""}}}}}}]}},{"equation_section":{"equation":[{"connect_clause":{"from":[{"dot_op":false,"identifier":"TAirMix"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"TAirMix"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"TAirCoiHeaLvg"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"TAirCoiHeaLvg"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"TAirSup"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"TAirSup"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"pAirSup_rel"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"pAirSup_rel"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"hAirRet"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"hAirRet"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"TAirRet"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"TAirRet"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"fanSupDra"},{"dot_op":true},{"dot_op":false,"identifier":"bus"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"fanSup"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"fanSupBlo"},{"dot_op":true},{"dot_op":false,"identifier":"bus"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"fanSup"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"coiHeaPre"},{"dot_op":true},{"dot_op":false,"identifier":"bus"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"coiHea"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"coiCoo"},{"dot_op":true},{"dot_op":false,"identifier":"bus"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"coiCoo"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"coiHeaReh"},{"dot_op":true},{"dot_op":false,"identifier":"bus"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"coiHea"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"secOutRel"},{"dot_op":true},{"dot_op":false,"identifier":"bus"}],"to":[{"dot_op":false,"identifier":"bus"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"bui"},{"dot_op":true},{"dot_op":false,"identifier":"p_in"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"pBui"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"pBui_rel"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"bus"},{"dot_op":true},{"dot_op":false,"identifier":"pBui_rel"}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"port_aChiWat"}],"to":[{"dot_op":false,"identifier":"coiCoo"},{"dot_op":true},{"dot_op":false,"identifier":"port_aSou"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":100,"y":-280},{"x":100,"y":-268},{"x":85,"y":-268},{"x":85,"y":-210}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"coiCoo"},{"dot_op":true},{"dot_op":false,"identifier":"port_bSou"}],"to":[{"dot_op":false,"identifier":"port_bChiWat"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":75,"y":-210},{"x":75,"y":-268},{"x":60,"y":-268},{"x":60,"y":-280}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"busWea"}],"to":[{"dot_op":false,"identifier":"coiCoo"},{"dot_op":true},{"dot_op":false,"identifier":"busWea"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":0,"y":280},{"x":0,"y":100},{"x":76,"y":100},{"x":76,"y":-190}],"color":{"r":255,"g":204,"b":51},"thickness":0.5}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"TAirMix"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}],"to":[{"dot_op":false,"identifier":"fanSupBlo"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-90,"y":-200},{"x":-50,"y":-200}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"coiHeaReh"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}],"to":[{"dot_op":false,"identifier":"fanSupDra"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":150,"y":-200},{"x":172,"y":-200}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"busWea"}],"to":[{"dot_op":false,"identifier":"out"},{"dot_op":true},{"dot_op":false,"identifier":"weaBus"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":0,"y":280},{"x":0,"y":100},{"x":-39.8,"y":100}],"color":{"r":255,"g":204,"b":51},"thickness":0.5}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"pBui_rel"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}],"to":[{"dot_op":false,"identifier":"out"},{"dot_op":true},{"dot_op":false,"identifier":"ports","array_subscripts":[{"expression":{"simple_expression":"1"}}]}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-10,"y":40},{"x":-40,"y":40},{"x":-40,"y":80},{"x":-41.3333,"y":80}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"bui"},{"dot_op":true},{"dot_op":false,"identifier":"ports","array_subscripts":[{"expression":{"simple_expression":"1"}}]}],"to":[{"dot_op":false,"identifier":"pBui_rel"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":40,"y":50},{"x":40,"y":40},{"x":10,"y":40}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"ctl"},{"dot_op":true},{"dot_op":false,"identifier":"busTer"}],"to":[{"dot_op":false,"identifier":"busTer"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-200,"y":0},{"x":300,"y":0}],"color":{"r":255,"g":204,"b":51},"thickness":0.5}}}},{"element_modification_or_replaceable":{"element_modification":{"Text":{"extent":[{"x":6,"y":3},{"x":6,"y":3}],"horizontalAlignment":"TextAlignment.Left","string":"\"%second\"","index":1}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"ctl"},{"dot_op":true},{"dot_op":false,"identifier":"bus"}],"to":[{"dot_op":false,"identifier":"bus"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-220,"y":0},{"x":-300,"y":0}],"color":{"r":255,"g":204,"b":51},"thickness":0.5}}}},{"element_modification_or_replaceable":{"element_modification":{"Text":{"extent":[{"x":-6,"y":3},{"x":-6,"y":3}],"horizontalAlignment":"TextAlignment.Right","string":"\"%second\"","index":1}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"port_Ret"}],"to":[{"dot_op":false,"identifier":"hAirRet"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":300,"y":-80},{"x":250,"y":-80}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"hAirRet"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}],"to":[{"dot_op":false,"identifier":"TAirRet"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":230,"y":-80},{"x":220,"y":-80}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"coiHeaPre"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}],"to":[{"dot_op":false,"identifier":"TAirCoiHeaLvg"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":30,"y":-200},{"x":40,"y":-200}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"TAirCoiHeaLvg"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}],"to":[{"dot_op":false,"identifier":"coiCoo"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":60,"y":-200},{"x":70,"y":-200}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"coiCoo"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}],"to":[{"dot_op":false,"identifier":"TAirCoiCooLvg"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":90,"y":-200},{"x":100,"y":-200}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"TAirCoiCooLvg"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}],"to":[{"dot_op":false,"identifier":"coiHeaReh"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":120,"y":-200},{"x":130,"y":-200}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"secOutRel"},{"dot_op":true},{"dot_op":false,"identifier":"port_Sup"}],"to":[{"dot_op":false,"identifier":"TAirMix"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":-200},{"x":-110,"y":-200}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"secOutRel"},{"dot_op":true},{"dot_op":false,"identifier":"port_bPre"}],"to":[{"dot_op":false,"identifier":"out"},{"dot_op":true},{"dot_op":false,"identifier":"ports","array_subscripts":[{"expression":{"simple_expression":"2"}}]}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-162,"y":-60},{"x":-162,"y":80},{"x":-40,"y":80}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"port_Rel"}],"to":[{"dot_op":false,"identifier":"secOutRel"},{"dot_op":true},{"dot_op":false,"identifier":"port_Rel"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-300,"y":-80},{"x":-280,"y":-80}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"port_Out"}],"to":[{"dot_op":false,"identifier":"secOutRel"},{"dot_op":true},{"dot_op":false,"identifier":"port_Out"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-300,"y":-200},{"x":-280,"y":-200}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"TAirSup"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}],"to":[{"dot_op":false,"identifier":"port_Sup"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":230,"y":-200},{"x":300,"y":-200}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"TAirSup"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}],"to":[{"dot_op":false,"identifier":"pAirSup_rel"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":230,"y":-200},{"x":240,"y":-200},{"x":240,"y":-220},{"x":250,"y":-220}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"fanSupDra"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}],"to":[{"dot_op":false,"identifier":"TAirSup"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":192,"y":-200},{"x":210,"y":-200}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"port_aHeaWat"}],"to":[{"dot_op":false,"identifier":"junHeaWatSup"},{"dot_op":true},{"dot_op":false,"identifier":"port_1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":20,"y":-280},{"x":20,"y":-270}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"port_bHeaWat"}],"to":[{"dot_op":false,"identifier":"junHeaWatRet"},{"dot_op":true},{"dot_op":false,"identifier":"port_2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-20,"y":-280},{"x":-20,"y":-250}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"junHeaWatSup"},{"dot_op":true},{"dot_op":false,"identifier":"port_3"}],"to":[{"dot_op":false,"identifier":"coiHeaReh"},{"dot_op":true},{"dot_op":false,"identifier":"port_aSou"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":30,"y":-260},{"x":145,"y":-260},{"x":145,"y":-210}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"coiHeaReh"},{"dot_op":true},{"dot_op":false,"identifier":"port_bSou"}],"to":[{"dot_op":false,"identifier":"junHeaWatRet"},{"dot_op":true},{"dot_op":false,"identifier":"port_3"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":135,"y":-210},{"x":135,"y":-240},{"x":-10,"y":-240}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"coiHeaPre"},{"dot_op":true},{"dot_op":false,"identifier":"port_bSou"}],"to":[{"dot_op":false,"identifier":"junHeaWatRet"},{"dot_op":true},{"dot_op":false,"identifier":"port_1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":15,"y":-210},{"x":15,"y":-220},{"x":-20,"y":-220},{"x":-20,"y":-230}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"junHeaWatSup"},{"dot_op":true},{"dot_op":false,"identifier":"port_2"}],"to":[{"dot_op":false,"identifier":"coiHeaPre"},{"dot_op":true},{"dot_op":false,"identifier":"port_aSou"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":20,"y":-250},{"x":20,"y":-220},{"x":25,"y":-220},{"x":25,"y":-210}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"out"},{"dot_op":true},{"dot_op":false,"identifier":"ports","array_subscripts":[{"expression":{"simple_expression":"3"}}]}],"to":[{"dot_op":false,"identifier":"pAirSup_rel"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-38.6667,"y":80},{"x":280,"y":80},{"x":280,"y":-220},{"x":270,"y":-220}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"secOutRel"},{"dot_op":true},{"dot_op":false,"identifier":"port_Ret"}],"to":[{"dot_op":false,"identifier":"TAirRet"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":-80.2},{"x":40,"y":-80.2},{"x":40,"y":-80},{"x":200,"y":-80}],"color":{"r":0,"g":127,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"fanSupBlo"},{"dot_op":true},{"dot_op":false,"identifier":"port_b"}],"to":[{"dot_op":false,"identifier":"coiHeaPre"},{"dot_op":true},{"dot_op":false,"identifier":"port_a"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-30,"y":-200},{"x":10,"y":-200}],"color":{"r":0,"g":127,"b":255}}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"__ctrlFlow","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"routing","modification":{"equal":true,"expression":{"simple_expression":"\"template\""}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"VAV\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Icon","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"coordinateSystem":{"preserveAspectRatio":"false"}}}},{"element_modification_or_replaceable":{"element_modification":{"graphics":[{"name":"Rectangle","attribute":{"extent":[{"x":-200,"y":120},{"x":200,"y":80}],"lineColor":{"r":0,"g":127,"b":127},"fillColor":{"r":0,"g":127,"b":127},"pattern":"LinePattern.None","fillPattern":"FillPattern.Solid"}},{"name":"Rectangle","attribute":{"extent":[{"x":-200,"y":-80},{"x":200,"y":-120}],"lineColor":{"r":0,"g":127,"b":127},"fillColor":{"r":0,"g":127,"b":127},"pattern":"LinePattern.None","fillPattern":"FillPattern.Solid"}},{"name":"Ellipse","attribute":{"extent":[{"x":110,"y":-80},{"x":150,"y":-120}],"visible":"typFanSup <> Buildings.Templates.Components.Types.Fan.None","lineColor":{"r":0,"g":0,"b":0},"fillColor":{"r":0,"g":100,"b":199},"fillPattern":"FillPattern.Sphere"}},{"name":"Polygon","attribute":{"points":[{"x":130,"y":-81},{"x":130,"y":-119},{"x":149,"y":-100},{"x":130,"y":-81}],"visible":"typFanSup <> Buildings.Templates.Components.Types.Fan.None","lineColor":{"r":0,"g":0,"b":0},"fillColor":{"r":255,"g":255,"b":255},"pattern":"LinePattern.None","fillPattern":"FillPattern.HorizontalCylinder"}},{"name":"Ellipse","attribute":{"extent":[{"x":-20,"y":120},{"x":20,"y":80}],"visible":"typFanRet <> Buildings.Templates.Components.Types.Fan.None or typFanRel <> Buildings.Templates.Components.Types.Fan.None","lineColor":{"r":0,"g":0,"b":0},"fillColor":{"r":0,"g":100,"b":199},"fillPattern":"FillPattern.Sphere"}},{"name":"Polygon","attribute":{"points":[{"x":0,"y":119},{"x":0,"y":81},{"x":-19,"y":100},{"x":0,"y":119}],"visible":"typFanRet <> Buildings.Templates.Components.Types.Fan.None or typFanRel <> Buildings.Templates.Components.Types.Fan.None","lineColor":{"r":0,"g":0,"b":0},"fillColor":{"r":255,"g":255,"b":255},"pattern":"LinePattern.None","fillPattern":"FillPattern.HorizontalCylinder"}},{"name":"Rectangle","attribute":{"extent":[{"x":48,"y":-80},{"x":78,"y":-120}],"visible":"coiCoo.typ <> Buildings.Templates.Components.Types.Coil.None","lineColor":{"r":0,"g":0,"b":0},"fillColor":{"r":95,"g":95,"b":95},"fillPattern":"FillPattern.Solid","lineThickness":0.5}},{"name":"Line","attribute":{"points":[{"x":78,"y":-80},{"x":48,"y":-120}],"color":{"r":0,"g":0,"b":0},"thickness":0.5,"visible":"coiCoo.typ <> Buildings.Templates.Components.Types.Coil.None"}},{"name":"Rectangle","attribute":{"extent":[{"x":-78,"y":-80},{"x":-48,"y":-120}],"visible":"coiHeaPre.typ <> Buildings.Templates.Components.Types.Coil.None or coiHeaReh.typ <> Buildings.Templates.Components.Types.Coil.None","lineColor":{"r":0,"g":0,"b":0},"fillColor":{"r":95,"g":95,"b":95},"fillPattern":"FillPattern.Solid","lineThickness":0.5}},{"name":"Line","attribute":{"points":[{"x":-48,"y":-80},{"x":-78,"y":-120}],"color":{"r":0,"g":0,"b":0},"thickness":0.5,"visible":"coiHeaPre.typ <> Buildings.Templates.Components.Types.Coil.None or coiHeaReh.typ <> Buildings.Templates.Components.Types.Coil.None"}},{"name":"Line","attribute":{"points":[{"x":-160,"y":-80},{"x":-180,"y":-120}],"color":{"r":0,"g":0,"b":0},"thickness":0.5}},{"name":"Ellipse","attribute":{"extent":[{"x":-174,"y":-96},{"x":-166,"y":-104}],"lineColor":{"r":0,"g":0,"b":0},"fillColor":{"r":0,"g":0,"b":0},"fillPattern":"FillPattern.Solid"}},{"name":"Line","attribute":{"points":[{"x":-160,"y":120},{"x":-180,"y":80}],"color":{"r":0,"g":0,"b":0},"thickness":0.5}},{"name":"Ellipse","attribute":{"extent":[{"x":-174,"y":104},{"x":-166,"y":96}],"lineColor":{"r":0,"g":0,"b":0},"fillColor":{"r":0,"g":0,"b":0},"fillPattern":"FillPattern.Solid"}},{"name":"Rectangle","attribute":{"extent":[{"x":-80,"y":20},{"x":80,"y":-20}],"origin":{"x":-130,"y":0},"rotation":-90,"lineColor":{"r":0,"g":127,"b":127},"fillColor":{"r":0,"g":127,"b":127},"pattern":"LinePattern.None","fillPattern":"FillPattern.Solid"}},{"name":"Line","attribute":{"points":[{"x":20,"y":10},{"x":-20,"y":-10}],"color":{"r":0,"g":0,"b":0},"thickness":0.5}},{"name":"Ellipse","attribute":{"extent":[{"x":-134,"y":4},{"x":-126,"y":-4}],"lineColor":{"r":0,"g":0,"b":0},"fillColor":{"r":0,"g":0,"b":0},"fillPattern":"FillPattern.Solid"}},{"name":"Line","attribute":{"points":[{"x":50,"y":-200},{"x":50,"y":-120}],"color":{"r":28,"g":108,"b":200},"pattern":"LinePattern.Dash","thickness":5,"visible":"have_souChiWat"}},{"name":"Line","attribute":{"points":[{"x":-50,"y":-200},{"x":-50,"y":-120}],"color":{"r":238,"g":46,"b":47},"thickness":5,"visible":"have_souHeaWat"}},{"name":"Line","attribute":{"points":[{"x":130,"y":-200},{"x":130,"y":-194},{"x":76,"y":-194},{"x":76,"y":-120}],"color":{"r":28,"g":108,"b":200},"thickness":5,"visible":"have_souChiWat"}},{"name":"Line","attribute":{"points":[{"x":-130,"y":-200},{"x":-130,"y":-194},{"x":-76,"y":-194},{"x":-76,"y":-120}],"color":{"r":238,"g":46,"b":47},"pattern":"LinePattern.Dash","thickness":5,"visible":"have_souHeaWat"}}]}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Diagram","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"coordinateSystem":{"extent":[{"x":-300,"y":-280},{"x":300,"y":280}],"preserveAspectRatio":"false"}}}},{"element_modification_or_replaceable":{"element_modification":{"graphics":[{"name":"Line","attribute":{"points":[{"x":300,"y":-70},{"x":-120,"y":-70}],"color":{"r":0,"g":0,"b":0}}},{"name":"Line","attribute":{"points":[{"x":300,"y":-90},{"x":-120,"y":-90}],"color":{"r":0,"g":0,"b":0}}},{"name":"Line","attribute":{"points":[{"x":300,"y":-210},{"x":-120,"y":-210}],"color":{"r":0,"g":0,"b":0}}},{"name":"Line","attribute":{"points":[{"x":300,"y":-190},{"x":-120,"y":-190}],"color":{"r":0,"g":0,"b":0}}},{"name":"Line","attribute":{"points":[{"x":-16,"y":40},{"x":-10,"y":40}],"color":{"r":0,"g":0,"b":0},"thickness":1,"visible":"have_senPreBui"}},{"name":"Line","attribute":{"points":[{"x":16,"y":40},{"x":10,"y":40}],"color":{"r":0,"g":0,"b":0},"thickness":1,"visible":"have_senPreBui"}},{"name":"Text","attribute":{"extent":[{"x":18,"y":46},{"x":60,"y":34}],"textString":"\"REPRESENTATIVE SPACE INSIDE BUILDING\"","fontName":"\"sans-serif\"","textColor":{"r":0,"g":0,"b":0},"horizontalAlignment":"TextAlignment.Left","visible":"have_senPreBui"}},{"name":"Text","attribute":{"extent":[{"x":-60,"y":46},{"x":-18,"y":34}],"textString":"\"REFERENCE OUTSIDE BUILDING\"","fontName":"\"sans-serif\"","textColor":{"r":0,"g":0,"b":0},"horizontalAlignment":"TextAlignment.Right","visible":"have_senPreBui"}},{"name":"Polygon","attribute":{"points":[{"x":251,"y":-220},{"x":251,"y":-206},{"x":250,"y":-206},{"x":250,"y":-221},{"x":256,"y":-221},{"x":256,"y":-220},{"x":251,"y":-220}],"lineColor":{"r":0,"g":0,"b":0}}},{"name":"Rectangle","attribute":{"extent":[{"x":264,"y":-220},{"x":270,"y":-221}],"lineColor":{"r":0,"g":0,"b":0}}}]}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

Description

\n

\nThis template represents a multiple-zone VAV air handler for\na single duct system serving at least two terminal units.\n

\n

\nThe possible configuration options are enumerated in the table below.\nThe user may refer to ASHRAE (2021) for further details.\nThe first option displayed in bold characters corresponds to the default configuration.
\n

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Configuration parameterOptionsNotes
Outdoor air section\nSingle damper for ventilation and economizer, with airflow measurement station
\nSeparate dampers for ventilation and economizer, with airflow measurement station
\nSeparate dampers for ventilation and economizer, with differential pressure sensor\n
Relief/return air section\nReturn fan with modulating relief damper
\nModulating relief damper without fan
\nRelief fan with two-position relief damper\n
Nonactuated barometric relief is currently not supported.
Supply fan - Blow-through position\nNo fan
\nSingle fan - Variable speed
\nFan array - Variable speed\n
At least one supply fan must be specified, either in blow-through\nor draw-through position. Those two configurations are exclusive from\none another.
\nASHRAE Guideline 36 does not have any particular logic yet for handling fan arrays.\nIf a fan array is selected, all of the fans are currently controlled together at\nthe same speed, regardless of the number of VFDs.\n
Heating coil - Preheat position\nHot water coil with two-way valve
\nModulating electric heating coil
\nNo coil\n
Cooling coil\nChilled water coil with two-way valve
\nNo coil\n
Heating coil - Reheat position\nNo coil\n\nASHRAE Guideline 36 does not support heating coils in reheat position\nyet.\n
Supply fan - Draw-through position\nSingle fan - Variable speed
\nFan array - Variable speed
\nNo fan\n
At least one supply fan must be specified, either in blow-through\nor draw-through position. Those two configurations are exclusive from\none another.
\nASHRAE Guideline 36 does not have any particular logic yet for handling fan arrays.\nIf a fan array is selected, all of the fans are currently controlled together at\nthe same speed, regardless of the number of VFDs.\n
Return fan\nSingle fan - Variable speed
\nFan array - Variable speed
\nNo fan\n
The relief fan and the return fan are both optional and\nthey are exclusive from one another.
Relief fan\nNo fan
\nSingle fan - Variable speed
\nFan array - Variable speed\n
The relief fan and the return fan are both optional and\nthey are exclusive from one another.
Controller\nASHRAE Guideline 36 controller\n\nAn open loop controller is also available for validation purposes only.\n
Exhaust fan\nNot available: see note\nAll exhaust fans that normally operate with the air handler must\nbe configured separately, by means of a dedicated template.\n\n
Heat recovery\nNot available: see note\nCurrently no heat recovery equipment is supported.\n\n
\n

Simulation model assumptions and requirements

\n
Pressure reference
\n

\nThe duct static pressure sensors use the outdoor absolute pressure\nas an approximation of the reference pressure in the mechanical room\nwhere the air handler is located.\n

\n

\nWhen a building static pressure measurement is required by the control\nsequence\n(ctl.typCtlFanRet=AirHandlersFans.Types.ControlFanReturn.BuildingPressure),\nthe corresponding sensor pBui_rel is instantiated\nwithin the current class.\nIn this case, an additional variable pBui needs to be\nconnected to the control bus to pass in the value of the absolute pressure\nin a representative space of the building.\nThis is a modeling requirement, the actual control point remains the\nrelative building static pressure.\n

\n

References

\n
    \n
  • \nASHRAE, 2021. Guideline 36-2021, High-Performance Sequences of Operation\nfor HVAC Systems. Atlanta, GA.\n
  • \n
\n\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"revisions","modification":{"equal":true,"expression":{"simple_expression":"\"\n
    \n
  • \nSeptember 5, 2023, by Antoine Gautier:
    \nRefactored with a record class for configuration parameters.
    \nThis is for #3500.\n
  • \n
  • \nFebruary 11, 2022, by Antoine Gautier:
    \nFirst implementation.\n
  • \n
\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/VAVMultiZone.mo","fullMoFilePath":"/dependencies/modelica-buildings/Buildings/Templates/AirHandlersFans/VAVMultiZone.mo","checksum":"211c4e3c1ba5064677f31ec0aa99c69f"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/package.json b/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/package.json deleted file mode 100644 index d696af69..00000000 --- a/server/tests/static-data/json/Buildings/Templates/AirHandlersFans/package.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"AirHandlersFans","description_string":"Air handlers and fans","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Package"}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package contains templates for air handlers and fans.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/AirHandlersFans/package.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/AirHandlersFans/package.mo","checksum":"dde239912f2abf4900a2de5009e0edff","order":["VAVMultiZone","Components","Configuration","Data","Types","Validation","Interfaces"]} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Components/Data/Chiller.json b/server/tests/static-data/json/Buildings/Templates/Components/Data/Chiller.json deleted file mode 100644 index 3251db82..00000000 --- a/server/tests/static-data/json/Buildings/Templates/Components/Data/Chiller.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates.Components.Data","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"Chiller","description_string":"Record for chiller model","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Record"}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Boolean","component_list":[{"declaration":{"identifier":"use_datDes","modification":{"equal":true,"expression":{"simple_expression":"true"}}},"description":{"description_string":"Set to true to use specified design conditions, false to use data from performance record","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"__ctrlFlow","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Chiller","component_list":[{"declaration":{"identifier":"typ"},"description":{"description_string":"Type of chiller","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.SpecificHeatCapacity","component_list":[{"declaration":{"identifier":"cpChiWat_default","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Utilities.Psychrometrics.Constants.cpWatLiq"}}},"description":{"description_string":"CHW default specific heat capacity","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.SpecificHeatCapacity","component_list":[{"declaration":{"identifier":"cpCon_default","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.AirCooled"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"Buildings.Utilities.Psychrometrics.Constants.cpAir"}}],"else_expression":{"simple_expression":"Buildings.Utilities.Psychrometrics.Constants.cpWatLiq"}}}}},"description":{"description_string":"Condenser cooling fluid default specific heat capacity","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"mChiWat_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":"per.mEva_flow_nominal"}}],"else_expression":{"simple_expression":"0.001"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"CHW mass flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"mCon_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":"per.mCon_flow_nominal"}},{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.AirCooled"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"Buildings.Templates.Data.Defaults.mAirFloByCapChi*abs(cap_nominal)"}}],"else_expression":{"simple_expression":"0.001"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Condenser cooling fluid (e.g. CW) mass flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.WaterCooled"],"relation_operator":"=="},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.HeatFlowRate","component_list":[{"declaration":{"identifier":"cap_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":{"function_call":{"name":"abs","arguments":[{"name":"per.QEva_flow_nominal"}]}}}}],"else_expression":{"simple_expression":"0.001"}}}}}}}]}},"description":{"description_string":"Cooling capacity","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.HeatFlowRate","component_list":[{"declaration":{"identifier":"QCon_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}],"equal":true,"expression":{"simple_expression":{"terms":[{"operators":["*"],"factors":["abs(cap_nominal)",{"primary1":[{"simple_expression":"1/COP_nominal +1"}]}]}]}}}},"description":{"description_string":"Condenser heat flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"COP_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":"per.COP_nominal"}}],"else_expression":{"simple_expression":"Buildings.Templates.Data.Defaults.COPChiAirCoo"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"1\""}}}}}]}},"description":{"description_string":"Cooling COP","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpChiWat_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"0"}}],"else_expression":{"simple_expression":"Buildings.Templates.Data.Defaults.dpChiWatChi"}}}}}}}]}},"description":{"description_string":"CHW pressure drop","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpCon_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.WaterCooled"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"Buildings.Templates.Data.Defaults.dpConWatChi"}},{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.AirCooled"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"Buildings.Templates.Data.Defaults.dpAirChi"}}],"else_expression":{"simple_expression":"0"}}}}}}}]}},"description":{"description_string":"Condenser cooling fluid pressure drop","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.WaterCooled"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TChiWatSup_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":"per.TEvaLvg_nominal"}}],"else_expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TChiWatSup"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"260"}}}}}]}},"description":{"description_string":"CHW supply temperature","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TChiWatRet_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"260"}}}}}],"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"TChiWatSup_nominal"}}],"else_expression":{"simple_expression":"TChiWatSup_nominal +abs(cap_nominal)/cpChiWat_default/mChiWat_flow_nominal"}}}}},"description":{"description_string":"CHW return temperature","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TChiWatSup_min","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":"per.TEvaLvgMin"}}],"else_expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TChiWatSup_min"}}}}}}}],"equal":true,"expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TChiWatSup_min"}}},"description":{"description_string":"Minimum CHW supply temperature","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Operating limits\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TChiWatSup_max","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":"per.TEvaLvgMax"}}],"else_expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TChiWatSup_max"}}}}}}}],"equal":true,"expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TChiWatSup_max"}}},"description":{"description_string":"Maximum CHW supply temperature","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Operating limits\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TConEnt_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"273.15"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":"per.TConLvg_nominal -QCon_flow_nominal/mCon_flow_nominal/cpCon_default"}}],"else_expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TConEnt_max"}}}}}}}]}},"description":{"description_string":"Condenser entering fluid temperature (CW or air)","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TConLvg_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":"per.TConLvg_nominal"}}],"else_expression":{"simple_expression":"TConEnt_nominal +QCon_flow_nominal/mCon_flow_nominal/cpCon_default"}}}}},"description":{"description_string":"Condenser leaving fluid temperature (CW or air)","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TConLvg_min","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":"per.TConLvgMin"}}],"else_expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TConLvg_min"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"273.15"}}}}}],"equal":true,"expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TConLvg_min"}}},"description":{"description_string":"Minimum condenser leaving fluid temperature (CW or air)","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Operating limits\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TConLvg_max","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":"per.TConLvgMax"}}],"else_expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TConLvg_max"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"273.15"}}}}}],"equal":true,"expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TConLvg_max"}}},"description":{"description_string":"Maximum condenser leaving fluid temperature (CW or air)","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Operating limits\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"PLRUnl_min","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":"per.PLRMinUnl"}}],"else_expression":{"simple_expression":"0"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"PLR_min"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"max","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}}],"equal":true,"expression":{"simple_expression":"PLR_min"}}},"description":{"description_string":"Minimum unloading ratio (before engaging hot gas bypass, if any)","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"PLR_min","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":["use_datDes"]}]}]}}},"then":{"simple_expression":"per.PLRMin"}}],"else_expression":{"simple_expression":"0"}}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"max","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}}],"equal":true,"expression":{"simple_expression":"0.15"}}},"description":{"description_string":"Minimum part load ratio before cycling","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}}]}},{"replaceable":true,"constraining_clause":{"name":"Buildings.Fluid.Chillers.Data.ElectricReformulatedEIR.Generic"},"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Fluid.Chillers.Data.ElectricReformulatedEIR.Generic","component_list":[{"declaration":{"identifier":"per","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"TConLvg_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"use_datDes"},"then":{"simple_expression":"TConLvg_nominal"}}],"else_expression":{"simple_expression":"273.15"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"TConLvgMin","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"use_datDes"},"then":{"simple_expression":"TConLvg_min"}}],"else_expression":{"simple_expression":"273.15"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"TConLvgMax","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"use_datDes"},"then":{"simple_expression":"TConLvg_max"}}],"else_expression":{"simple_expression":"273.15"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"COP_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"use_datDes"},"then":{"simple_expression":"COP_nominal"}}],"else_expression":{"simple_expression":"1.1"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"QEva_flow_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"use_datDes"},"then":{"simple_expression":"-abs(cap_nominal)"}}],"else_expression":{"simple_expression":"0.001"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"TEvaLvg_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"use_datDes"},"then":{"simple_expression":"TChiWatSup_nominal"}}],"else_expression":{"simple_expression":"273.15"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"TEvaLvgMin","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"use_datDes"},"then":{"simple_expression":"TChiWatSup_nominal"}}],"else_expression":{"simple_expression":"273.15"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"TEvaLvgMax","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"use_datDes"},"then":{"simple_expression":"TChiWatSup_max"}}],"else_expression":{"simple_expression":"273.15"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"PLRMin","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"use_datDes"},"then":{"simple_expression":"PLR_min"}}],"else_expression":{"simple_expression":"0"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"PLRMinUnl","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"use_datDes"},"then":{"simple_expression":"PLRUnl_min"}}],"else_expression":{"simple_expression":"0"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"PLRMax","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"etaMotor","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"mEva_flow_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"use_datDes"},"then":{"simple_expression":"mChiWat_flow_nominal"}}],"else_expression":{"simple_expression":"0.001"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"mCon_flow_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"use_datDes"},"then":{"simple_expression":"mCon_flow_nominal"}}],"else_expression":{"simple_expression":"0.001"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"capFunT","modification":{"equal":true,"expression":{"simple_expression":"{1,0,0,0,0,0}"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"EIRFunT","modification":{"equal":true,"expression":{"simple_expression":"{1,0,0,0,0,0}"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"EIRFunPLR","modification":{"equal":true,"expression":{"simple_expression":"{1,0,0,0,0,0,0,0,0,0}"}}}}}]}}}]},"description":{"description_string":"Chiller performance data","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"choicesAllMatching","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"<>"},{"arithmetic_expressions":["use_datDes"]}]}]}}}}}}}]}}}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"COPPer_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"1\""}}}}}],"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"per.COP_nominal"}}],"else_expression":{"simple_expression":"per.COP_nominal/Buildings.Utilities.Math.Functions.biquadratic(a=per.EIRFunT,x1=Modelica.Units.Conversions.to_degC(TChiWatSup_nominal),x2=Modelica.Units.Conversions.to_degC(TConLvg_nominal))/Buildings.Utilities.Math.Functions.bicubic(a=per.EIRFunPLR,x1=Modelica.Units.Conversions.to_degC(TConLvg_nominal),x2=1)"}}}}},"description":{"description_string":"Cooling COP computed from performance record","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}}]}}}}]}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.HeatFlowRate","component_list":[{"declaration":{"identifier":"capPer_flow_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Chiller.None"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":{"function_call":{"name":"abs","arguments":[{"name":"per.QEva_flow_nominal"}]}}}}],"else_expression":{"simple_expression":"abs(per.QEva_flow_nominal)*Buildings.Utilities.Math.Functions.biquadratic(a=per.capFunT,x1=Modelica.Units.Conversions.to_degC(TChiWatSup_nominal),x2=Modelica.Units.Conversions.to_degC(TConLvg_nominal))"}}}}},"description":{"description_string":"Cooling capacity computed from performance record","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}}]}}}}]}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Fluid.Chillers.Data.ElectricReformulatedEIR.Generic","component_list":[{"declaration":{"identifier":"perSca","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"COP_nominal","modification":{"equal":true,"expression":{"simple_expression":"per.COP_nominal*COP_nominal/COPPer_nominal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"QEva_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"per.QEva_flow_nominal*abs(cap_nominal)/capPer_flow_nominal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"EIRFunPLR","modification":{"equal":true,"expression":{"simple_expression":"per.EIRFunPLR"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"EIRFunT","modification":{"equal":true,"expression":{"simple_expression":"per.EIRFunT"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"PLRMax","modification":{"equal":true,"expression":{"simple_expression":"per.PLRMax"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"PLRMin","modification":{"equal":true,"expression":{"simple_expression":"per.PLRMin"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"PLRMinUnl","modification":{"equal":true,"expression":{"simple_expression":"per.PLRMinUnl"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"TConLvgMax","modification":{"equal":true,"expression":{"simple_expression":"per.TConLvgMax"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"TConLvgMin","modification":{"equal":true,"expression":{"simple_expression":"per.TConLvgMin"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"TConLvg_nominal","modification":{"equal":true,"expression":{"simple_expression":"per.TConLvg_nominal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"TEvaLvgMax","modification":{"equal":true,"expression":{"simple_expression":"per.TEvaLvgMax"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"TEvaLvgMin","modification":{"equal":true,"expression":{"simple_expression":"per.TEvaLvgMin"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"TEvaLvg_nominal","modification":{"equal":true,"expression":{"simple_expression":"per.TEvaLvg_nominal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"capFunT","modification":{"equal":true,"expression":{"simple_expression":"per.capFunT"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"etaMotor","modification":{"equal":true,"expression":{"simple_expression":"per.etaMotor"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"mCon_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"per.mCon_flow_nominal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"mEva_flow_nominal","modification":{"equal":true,"expression":{"simple_expression":"per.mEva_flow_nominal"}}}}}]}},"description":{"description_string":"Chiller performance data scaled to specified design capacity and COP","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"choicesAllMatching","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentPrefixes","modification":{"equal":true,"expression":{"simple_expression":"\"parameter\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"datChi\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of sizing and operating parameters for\nthe classes within\n\nBuildings.Templates.Components.Chillers.\nIt is composed of a set of parameters corresponding to the design\n(selection) conditions and a sub-record per corresponding\nto the rating conditions at which the performance curves are calculated.\n

\n

\nThe record allows two different parameterization logics, depending\non the value of the parameter use_datDes.\n(The user can refer to the valiation model\n\nBuildings.Templates.Components.Chillers.Validation.Compression\nfor an illustration of these two logics.)\n

\n
    \n
  • \nIf use_datDes=true – default setting that should be\nused in most cases: The performance data specified in the sub-record\nper are \\\"translated\\\" so that the capacity and COP\ncalculated at design conditions match the design values\ncap_nominal and COP_nominal.\nThe performance data that result from this translation are stored in\nthe sub-record perSca which is ultimately used by the chiller models within\n\nBuildings.Templates.Components.Chillers.
    \nNote that the performance data can be specified either by redeclaring\nthe sub-record per, or by simply assigning the performance\ncurves per.capFunT, per.EIRFunT and per.EIRFunPLR\nin case these curves were calculated based on the design conditions.\nTo support the latter, the design conditions are propagated \\\"down\\\" to\nthe sub-record per but these bindings do not persist\nafter redeclaration so that a record at different rating conditions can\nalso be used.\n
  • \n
  • \nIf use_datDes=false – non-default setting that should only be\nused if the rating conditions match the design conditions:\nThe rating conditions specified in the sub-record\nper are propagated \\\"up\\\" (via the start attribute)\nand used as design conditions.\nThe sub-record perSca which is ultimately used by the chiller models within\n\nBuildings.Templates.Components.Chillers\nis then identical to the sub-record per.\nWhen using this logic, no assignment shall be made for the design\nparameters, except for the design pressure drops dp*_nominal.\n
  • \n
\n

\nnote that placeholders values are assigned to the performance curves,\nthe reference source temperature and the input power in\ncooling mode to avoid assigning these parameters in case of non-reversible\nheat pumps.\nThese values are unrealistic and must be overwritten for reversible heat pumps, which\nis always the case when redeclaring or\nreassigning the performance record per.\nModels that use this record will issue a warning if these placeholders values\nare not overwritten in case of reversible heat pumps.\n

\n

\nNote that placeholders values are assigned to the chiller performance curves\n(per.capFunT , per.EIRFunT and per.EIRFunPLR)\nto avoid assigning these parameters if\ntyp=Buildings.Templates.Components.Types.Chiller.None.\nIf the chiller type is not None these values are unrealistic\nand must be overwritten, which is always the case when redeclaring or\nreassigning the performance record per.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Components/Data/Chiller.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/Components/Data/Chiller.mo","checksum":"256a3f04dddaf7aa538e7f85e01027b2"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Components/Data/Coil.json b/server/tests/static-data/json/Buildings/Templates/Components/Data/Coil.json deleted file mode 100644 index 1475a5ae..00000000 --- a/server/tests/static-data/json/Buildings/Templates/Components/Data/Coil.json +++ /dev/null @@ -1,1774 +0,0 @@ -{ - "within": "Buildings.Templates.Components.Data", - "stored_class_definitions": [ - { - "class_prefixes": "record", - "class_specifier": { - "long_class_specifier": { - "identifier": "Coil", - "description_string": "Record for coil model", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Icons.Record" - } - }, - { - "component_clause": { - "type_prefix": "parameter", - "type_specifier": "Buildings.Templates.Components.Types.Coil", - "component_list": [ - { - "declaration": { - "identifier": "typ" - }, - "description": { - "description_string": "Equipment type", - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Dialog", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "group", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Configuration\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "enable", - "modification": { - "equal": true, - "expression": { - "simple_expression": "false" - } - } - } - } - } - ] - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Evaluate", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - } - ] - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "parameter", - "type_specifier": "Buildings.Templates.Components.Types.Valve", - "component_list": [ - { - "declaration": { - "identifier": "typVal" - }, - "description": { - "description_string": "Type of valve", - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Dialog", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "group", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Configuration\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "enable", - "modification": { - "equal": true, - "expression": { - "simple_expression": "false" - } - } - } - } - } - ] - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Evaluate", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - } - ] - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "parameter", - "type_specifier": "Boolean", - "component_list": [ - { - "declaration": { - "identifier": "have_sou" - }, - "description": { - "description_string": "Set to true for fluid ports on the source side", - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Dialog", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "group", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Configuration\"" - } - } - } - } - } - ] - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Evaluate", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - } - ] - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "parameter", - "type_specifier": "Modelica.Units.SI.MassFlowRate", - "component_list": [ - { - "declaration": { - "identifier": "mAir_flow_nominal", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "start", - "modification": { - "equal": true, - "expression": { - "if_expression": { - "if_elseif": [ - { - "condition": { - "simple_expression": { - "logical_expression": { - "logical_or": [ - { - "logical_and": [ - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage" - ], - "relation_operator": "==" - } - ] - }, - { - "logical_and": [ - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed" - ], - "relation_operator": "==" - } - ] - } - ] - } - } - }, - "then": { - "simple_expression": "datCoi.sta[datCoi.nSta].nomVal.m_flow_nominal" - } - } - ], - "else_expression": { - "simple_expression": "1" - } - } - } - } - } - } - } - ] - } - }, - "description": { - "description_string": "Air mass flow rate", - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Dialog", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "group", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Nominal condition\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "enable", - "modification": { - "equal": true, - "expression": { - "simple_expression": { - "logical_expression": { - "logical_or": [ - { - "logical_and": [ - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.None" - ], - "relation_operator": "<>" - }, - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage" - ], - "relation_operator": "<>" - }, - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed" - ], - "relation_operator": "<>" - } - ] - } - ] - } - } - } - } - } - } - } - ] - } - } - } - } - ] - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "parameter", - "type_specifier": "Modelica.Units.SI.PressureDifference", - "component_list": [ - { - "declaration": { - "identifier": "dpAir_nominal", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "displayUnit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Pa\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "start", - "modification": { - "equal": true, - "expression": { - "if_expression": { - "if_elseif": [ - { - "condition": { - "simple_expression": { - "logical_expression": { - "logical_or": [ - { - "logical_and": [ - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.None" - ], - "relation_operator": "==" - } - ] - } - ] - } - } - }, - "then": { - "simple_expression": "0" - } - } - ], - "else_expression": { - "simple_expression": "100" - } - } - } - } - } - } - } - ] - } - }, - "description": { - "description_string": "Air pressure drop", - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Dialog", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "group", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Nominal condition\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "enable", - "modification": { - "equal": true, - "expression": { - "simple_expression": { - "logical_expression": { - "logical_or": [ - { - "logical_and": [ - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.None" - ], - "relation_operator": "<>" - } - ] - } - ] - } - } - } - } - } - } - } - ] - } - } - } - } - ] - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "parameter", - "type_specifier": "Modelica.Units.SI.MassFlowRate", - "component_list": [ - { - "declaration": { - "identifier": "mWat_flow_nominal", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "start", - "modification": { - "equal": true, - "expression": { - "if_expression": { - "if_elseif": [ - { - "condition": { - "simple_expression": { - "logical_expression": { - "logical_or": [ - { - "logical_and": [ - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.WaterBasedHeating" - ], - "relation_operator": "==" - } - ] - } - ] - } - } - }, - "then": { - "simple_expression": "Q_flow_nominal/4186/10" - } - }, - { - "condition": { - "simple_expression": { - "logical_expression": { - "logical_or": [ - { - "logical_and": [ - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.WaterBasedCooling" - ], - "relation_operator": "==" - } - ] - } - ] - } - } - }, - "then": { - "simple_expression": "-Q_flow_nominal/4186/5" - } - } - ], - "else_expression": { - "simple_expression": "0" - } - } - } - } - } - } - } - ] - } - }, - "description": { - "description_string": "Liquid mass flow rate", - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Dialog", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "group", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Nominal condition\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "enable", - "modification": { - "equal": true, - "expression": { - "simple_expression": "have_sou" - } - } - } - } - } - ] - } - } - } - } - ] - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "parameter", - "type_specifier": "Modelica.Units.SI.PressureDifference", - "component_list": [ - { - "declaration": { - "identifier": "dpWat_nominal", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "displayUnit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Pa\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "start", - "modification": { - "equal": true, - "expression": { - "if_expression": { - "if_elseif": [ - { - "condition": { - "simple_expression": { - "logical_expression": { - "logical_or": [ - { - "logical_and": [ - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.WaterBasedHeating" - ], - "relation_operator": "==" - } - ] - } - ] - } - } - }, - "then": { - "simple_expression": "5000" - } - }, - { - "condition": { - "simple_expression": { - "logical_expression": { - "logical_or": [ - { - "logical_and": [ - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.WaterBasedCooling" - ], - "relation_operator": "==" - } - ] - } - ] - } - } - }, - "then": { - "simple_expression": "30000" - } - } - ], - "else_expression": { - "simple_expression": "0" - } - } - } - } - } - } - } - ] - } - }, - "description": { - "description_string": "Liquid pressure drop across coil", - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Dialog", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "group", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Nominal condition\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "enable", - "modification": { - "equal": true, - "expression": { - "simple_expression": "have_sou" - } - } - } - } - } - ] - } - } - } - } - ] - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "parameter", - "type_specifier": "Modelica.Units.SI.PressureDifference", - "component_list": [ - { - "declaration": { - "identifier": "dpValve_nominal", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "displayUnit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Pa\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "start", - "modification": { - "equal": true, - "expression": { - "if_expression": { - "if_elseif": [ - { - "condition": { - "simple_expression": { - "logical_expression": { - "logical_or": [ - { - "logical_and": [ - { - "arithmetic_expressions": [ - "typVal", - "Buildings.Templates.Components.Types.Valve.None" - ], - "relation_operator": "==" - } - ] - } - ] - } - } - }, - "then": { - "simple_expression": "0" - } - } - ], - "else_expression": { - "simple_expression": "dpWat_nominal/2" - } - } - } - } - } - } - } - ] - } - }, - "description": { - "description_string": "Liquid pressure drop across fully open valve", - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Dialog", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "group", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Nominal condition\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "enable", - "modification": { - "equal": true, - "expression": { - "simple_expression": { - "logical_expression": { - "logical_or": [ - { - "logical_and": [ - { - "arithmetic_expressions": [ - "have_sou" - ] - }, - { - "arithmetic_expressions": [ - "typVal", - "Buildings.Templates.Components.Types.Valve.None" - ], - "relation_operator": "<>" - } - ] - } - ] - } - } - } - } - } - } - } - ] - } - } - } - } - ] - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "parameter", - "type_specifier": "Modelica.Units.SI.HeatFlowRate", - "component_list": [ - { - "declaration": { - "identifier": "cap_nominal", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "start", - "modification": { - "equal": true, - "expression": { - "if_expression": { - "if_elseif": [ - { - "condition": { - "simple_expression": { - "logical_expression": { - "logical_or": [ - { - "logical_and": [ - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.None" - ], - "relation_operator": "==" - } - ] - } - ] - } - } - }, - "then": { - "simple_expression": "0" - } - }, - { - "condition": { - "simple_expression": { - "logical_expression": { - "logical_or": [ - { - "logical_and": [ - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage" - ], - "relation_operator": "==" - } - ] - }, - { - "logical_and": [ - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed" - ], - "relation_operator": "==" - } - ] - } - ] - } - } - }, - "then": { - "simple_expression": "datCoi.sta[datCoi.nSta].nomVal.Q_flow_nominal" - } - }, - { - "condition": { - "simple_expression": { - "logical_expression": { - "logical_or": [ - { - "logical_and": [ - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.WaterBasedCooling" - ], - "relation_operator": "==" - } - ] - } - ] - } - } - }, - "then": { - "simple_expression": "-10000" - } - } - ], - "else_expression": { - "simple_expression": "10000" - } - } - } - } - } - } - } - ] - } - }, - "description": { - "description_string": "Coil capacity", - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Dialog", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "group", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Nominal condition\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "enable", - "modification": { - "equal": true, - "expression": { - "simple_expression": { - "logical_expression": { - "logical_or": [ - { - "logical_and": [ - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.None" - ], - "relation_operator": "<>" - }, - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage" - ], - "relation_operator": "<>" - }, - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed" - ], - "relation_operator": "<>" - } - ] - } - ] - } - } - } - } - } - } - } - ] - } - } - } - } - ] - } - } - ] - } - }, - { - "final": true, - "component_clause": { - "type_prefix": "parameter", - "type_specifier": "Modelica.Units.SI.HeatFlowRate", - "component_list": [ - { - "declaration": { - "identifier": "Q_flow_nominal", - "modification": { - "equal": true, - "expression": { - "if_expression": { - "if_elseif": [ - { - "condition": { - "simple_expression": { - "logical_expression": { - "logical_or": [ - { - "logical_and": [ - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.WaterBasedHeating" - ], - "relation_operator": "==" - } - ] - }, - { - "logical_and": [ - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.ElectricHeating" - ], - "relation_operator": "==" - } - ] - } - ] - } - } - }, - "then": { - "simple_expression": { - "function_call": { - "name": "abs", - "arguments": [ - { - "name": "cap_nominal" - } - ] - } - } - } - } - ], - "else_expression": { - "simple_expression": "-1*abs(cap_nominal)" - } - } - } - } - }, - "description": { - "description_string": "Nominal heat flow rate", - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Dialog", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "group", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Nominal condition\"" - } - } - } - } - } - ] - } - } - } - } - ] - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "parameter", - "type_specifier": "Modelica.Units.SI.Temperature", - "component_list": [ - { - "declaration": { - "identifier": "TWatEnt_nominal", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "273.15" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "displayUnit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"degC\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "start", - "modification": { - "equal": true, - "expression": { - "if_expression": { - "if_elseif": [ - { - "condition": { - "simple_expression": { - "logical_expression": { - "logical_or": [ - { - "logical_and": [ - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.WaterBasedHeating" - ], - "relation_operator": "==" - } - ] - } - ] - } - } - }, - "then": { - "simple_expression": "50 +273.15" - } - }, - { - "condition": { - "simple_expression": { - "logical_expression": { - "logical_or": [ - { - "logical_and": [ - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.WaterBasedCooling" - ], - "relation_operator": "==" - } - ] - } - ] - } - } - }, - "then": { - "simple_expression": "7 +273.15" - } - } - ], - "else_expression": { - "simple_expression": "273.15" - } - } - } - } - } - } - } - ] - } - }, - "description": { - "description_string": "Nominal entering liquid temperature", - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Dialog", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "group", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Nominal condition\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "enable", - "modification": { - "equal": true, - "expression": { - "simple_expression": "have_sou" - } - } - } - } - } - ] - } - } - } - } - ] - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "parameter", - "type_specifier": "Modelica.Units.SI.Temperature", - "component_list": [ - { - "declaration": { - "identifier": "TAirEnt_nominal", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "243.15" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "displayUnit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"degC\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "start", - "modification": { - "equal": true, - "expression": { - "if_expression": { - "if_elseif": [ - { - "condition": { - "simple_expression": { - "logical_expression": { - "logical_or": [ - { - "logical_and": [ - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.WaterBasedCooling" - ], - "relation_operator": "==" - } - ] - } - ] - } - } - }, - "then": { - "simple_expression": "30 +273.15" - } - } - ], - "else_expression": { - "simple_expression": "273.15" - } - } - } - } - } - } - } - ] - } - }, - "description": { - "description_string": "Nominal entering air temperature", - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Dialog", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "group", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Nominal condition\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "enable", - "modification": { - "equal": true, - "expression": { - "simple_expression": "have_sou" - } - } - } - } - } - ] - } - } - } - } - ] - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "parameter", - "type_specifier": "Modelica.Units.SI.MassFraction", - "component_list": [ - { - "declaration": { - "identifier": "wAirEnt_nominal", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "start", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0.01" - } - } - } - } - } - ] - } - }, - "description": { - "description_string": "Nominal entering air humidity ratio", - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Dialog", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "group", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Nominal condition\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "enable", - "modification": { - "equal": true, - "expression": { - "simple_expression": { - "logical_expression": { - "logical_or": [ - { - "logical_and": [ - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.WaterBasedCooling" - ], - "relation_operator": "==" - } - ] - } - ] - } - } - } - } - } - } - } - ] - } - } - } - } - ] - } - } - ] - } - }, - { - "replaceable": true, - "constraining_clause": { - "name": "Buildings.Fluid.DXSystems.Cooling.AirSource.Data.Generic.DXCoil" - }, - "component_clause": { - "type_prefix": "parameter", - "type_specifier": "Buildings.Fluid.DXSystems.Cooling.AirSource.Data.SingleSpeed.Carrier_Centurion_50PG06", - "component_list": [ - { - "declaration": { - "identifier": "datCoi" - } - } - ] - }, - "description": { - "description_string": "Performance data record of evaporator coil", - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "choicesAllMatching", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Dialog", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "enable", - "modification": { - "equal": true, - "expression": { - "simple_expression": { - "logical_expression": { - "logical_or": [ - { - "logical_and": [ - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage" - ], - "relation_operator": "==" - } - ] - }, - { - "logical_and": [ - { - "arithmetic_expressions": [ - "typ", - "Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed" - ], - "relation_operator": "==" - } - ] - } - ] - } - } - } - } - } - } - } - ] - } - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "defaultComponentPrefixes", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"parameter\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "defaultComponentName", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"datCoi\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Documentation", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "info", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"\n

\nThis record provides the set of sizing parameters for\nthe classes within\n\nBuildings.Templates.Components.Coils.\n

\n\"" - } - } - } - } - } - ] - } - } - } - } - ] - } - } - } - } - ], - "modelicaFile": "Buildings/Templates/Components/Data/Coil.mo", - "fullMoFilePath": "modelica-buildings/Buildings/Templates/Components/Data/Coil.mo", - "checksum": "623b9f296d008c4b85e9754da12e3698" -} diff --git a/server/tests/static-data/json/Buildings/Templates/Components/Data/Damper.json b/server/tests/static-data/json/Buildings/Templates/Components/Data/Damper.json deleted file mode 100644 index 86053025..00000000 --- a/server/tests/static-data/json/Buildings/Templates/Components/Data/Damper.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates.Components.Data","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"Damper","description_string":"Record for damper model","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Record"}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Damper","component_list":[{"declaration":{"identifier":"typ"},"description":{"description_string":"Equipment type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"m_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}}]}},"description":{"description_string":"Air mass flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Mechanical\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Damper.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dp_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"Pa\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Damper.None"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"0"}},{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Damper.PressureIndependent"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"50"}}],"else_expression":{"simple_expression":"15"}}}}}}}]}},"description":{"description_string":"Air pressure drop","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Mechanical\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Damper.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpFixed_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"Pa\""}}}}}],"equal":true,"expression":{"simple_expression":"0"}}},"description":{"description_string":"Air pressure drop of fixed elements in series with damper","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Mechanical\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentPrefixes","modification":{"equal":true,"expression":{"simple_expression":"\"parameter\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"datDam\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of sizing parameters for\nthe class\n\nBuildings.Templates.Components.Actuators.Damper.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Components/Data/Damper.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/Components/Data/Damper.mo","checksum":"1a136e99bc336b306a6ec2efec3f7600"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Components/Data/Fan.json b/server/tests/static-data/json/Buildings/Templates/Components/Data/Fan.json deleted file mode 100644 index 5c6c48fe..00000000 --- a/server/tests/static-data/json/Buildings/Templates/Components/Data/Fan.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates.Components.Data","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"Fan","description_string":"Record for fan model","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Record"}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Fan","component_list":[{"declaration":{"identifier":"typ"},"description":{"description_string":"Equipment type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Integer","component_list":[{"declaration":{"identifier":"nFan","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"0"}}],"else_expression":{"simple_expression":"1"}}}}}}}]}},"description":{"description_string":"Number of fans","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Fan.ArrayVariable"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"m_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}}]}},"description":{"description_string":"Total air mass flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dp_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"Pa\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"1"}}],"else_expression":{"simple_expression":"500"}}}}}}}]}},"description":{"description_string":"Total pressure rise","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"replaceable":true,"constraining_clause":{"name":"Buildings.Fluid.Movers.Data.Generic"},"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Fluid.Movers.Data.Generic","component_list":[{"declaration":{"identifier":"per","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"pressure","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"V_flow","modification":{"equal":true,"expression":{"simple_expression":"{0,1,2}*m_flow_nominal/1.2/max(1,nFan)"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"dp","modification":{"equal":true,"expression":{"simple_expression":"{1.5,1,0}*dp_nominal"}}}}}]}}}}]}}}]},"description":{"description_string":"Performance data","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"choicesAllMatching","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Fan.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-90,"y":-88},{"x":-70,"y":-68}]}}}}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentPrefixes","modification":{"equal":true,"expression":{"simple_expression":"\"parameter\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"datFan\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of sizing parameters for\nthe classes within\n\nBuildings.Templates.Components.Fans.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Components/Data/Fan.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/Components/Data/Fan.mo","checksum":"152ca514adecb919619ab5e3b7380439"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Components/Data/HeatPump.json b/server/tests/static-data/json/Buildings/Templates/Components/Data/HeatPump.json deleted file mode 100644 index 91ad53d8..00000000 --- a/server/tests/static-data/json/Buildings/Templates/Components/Data/HeatPump.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates.Components.Data","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"HeatPump","description_string":"Record for heat pump model","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Record"}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.HeatPump","component_list":[{"declaration":{"identifier":"typ"},"description":{"description_string":"Equipment type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Boolean","component_list":[{"declaration":{"identifier":"is_rev"},"description":{"description_string":"Set to true for reversible heat pumps, false for heating only","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.HeatPumpModel","component_list":[{"declaration":{"identifier":"typMod"},"description":{"description_string":"Type of heat pump model","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.SpecificHeatCapacity","component_list":[{"declaration":{"identifier":"cpHeaWat_default","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Utilities.Psychrometrics.Constants.cpWatLiq"}}},"description":{"description_string":"HW default specific heat capacity","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.SpecificHeatCapacity","component_list":[{"declaration":{"identifier":"cpChiWat_default","modification":{"equal":true,"expression":{"simple_expression":"cpHeaWat_default"}}},"description":{"description_string":"CHW default specific heat capacity"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.SpecificHeatCapacity","component_list":[{"declaration":{"identifier":"cpSou_default","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.HeatPump.AirToWater"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"Buildings.Utilities.Psychrometrics.Constants.cpAir"}}],"else_expression":{"simple_expression":"Buildings.Utilities.Psychrometrics.Constants.cpWatLiq"}}}}},"description":{"description_string":"Source fluid default specific heat capacity","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"mHeaWat_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"HW mass flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpHeaWat_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Data.Defaults.dpChiWatChi"}}}}}]}},"description":{"description_string":"Pressure drop at design HW mass flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.HeatFlowRate","component_list":[{"declaration":{"identifier":"capHea_nominal"},"description":{"description_string":"Heating capacity","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"THeaWatSup_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"273.15"}}}}}]}},"description":{"description_string":"(Highest) HW supply temperature","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}}]}}}}]}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"THeaWatRet_nominal","modification":{"equal":true,"expression":{"simple_expression":"THeaWatSup_nominal -abs(capHea_nominal)/cpHeaWat_default/mHeaWat_flow_nominal"}}},"description":{"description_string":"HW return temperature","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"mChiWat_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"CHW mass flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"is_rev"}}}}}]}}}}]}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpChiWat_nominal","modification":{"equal":true,"expression":{"simple_expression":{"terms":[{"operators":["*"],"factors":["dpHeaWat_nominal",{"operator":"^","primary1":[{"simple_expression":"mChiWat_flow_nominal/mHeaWat_flow_nominal"}],"primary2":"2"}]}]}}}},"description":{"description_string":"Pressure drop at design CHW mass flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.HeatFlowRate","component_list":[{"declaration":{"identifier":"capCoo_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Cooling capacity","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"is_rev"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TChiWatSup_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TChiWatSup"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"253.15"}}}}}]}},"description":{"description_string":"(Lowest) CHW supply temperature","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"is_rev"}}}}}]}}}}]}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TChiWatRet_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"is_rev"},"then":{"simple_expression":"TChiWatSup_nominal +abs(capCoo_nominal)/cpChiWat_default/mChiWat_flow_nominal"}}],"else_expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TChiWatRet"}}}}},"description":{"description_string":"CHW return temperature","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"is_rev"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TSouHea_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TOutHpHeaLow"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"220"}}}}}]}},"description":{"description_string":"OAT or source fluid supply temperature (evaporator entering) in heating mode","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"mSouWwHea_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"mHeaWat_flow_nominal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Source fluid mass flow rate in heating mode","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.HeatPump.WaterToWater"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpSouWwHea_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Data.Defaults.dpChiWatChi"}}}}}]}},"description":{"description_string":"Source fluid pressure drop in heating mode","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.HeatPump.WaterToWater"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"mSouHea_flow_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.HeatPump.WaterToWater"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"mSouWwHea_flow_nominal"}}],"else_expression":{"simple_expression":"Buildings.Templates.Data.Defaults.mAirFloByCapChi*abs(capHea_nominal)"}}}}},"description":{"description_string":"Source fluid mass flow rate in heating mode"}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpSouHea_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.HeatPump.WaterToWater"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"dpSouWwHea_nominal"}}],"else_expression":{"simple_expression":"Buildings.Templates.Data.Defaults.dpAirChi"}}}}},"description":{"description_string":"Source fluid pressure drop in heating mode"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TSouCoo_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Templates.Data.Defaults.TOutHpCoo"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"273.15"}}}}}]}},"description":{"description_string":"OAT or source fluid supply temperature (condenser entering) in cooling mode","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"is_rev"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"mSouWwCoo_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"mChiWat_flow_nominal"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Source fluid mass flow rate in cooling mode","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.HeatPump.WaterToWater"],"relation_operator":"=="},{"arithmetic_expressions":["is_rev"]}]}]}}}}}}}]}}}}]}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"mSouCoo_flow_nominal","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.HeatPump.WaterToWater"],"relation_operator":"=="}]}]}}},"then":{"simple_expression":"mSouWwCoo_flow_nominal"}}],"else_expression":{"simple_expression":"Buildings.Templates.Data.Defaults.mAirFloByCapChi*abs(capCoo_nominal)"}}}}},"description":{"description_string":"Source fluid mass flow rate in cooling mode"}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpSouCoo_nominal","modification":{"equal":true,"expression":{"simple_expression":{"terms":[{"operators":["*"],"factors":["dpSouHea_nominal",{"operator":"^","primary1":[{"simple_expression":"mSouCoo_flow_nominal/mSouHea_flow_nominal"}],"primary2":"2"}]}]}}}},"description":{"description_string":"Source fluid pressure drop in cooling mode"}}]}},{"replaceable":true,"constraining_clause":{"name":"Buildings.Fluid.HeatPumps.Data.EquationFitReversible.Generic"},"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Fluid.HeatPumps.Data.EquationFitReversible.Generic","component_list":[{"declaration":{"identifier":"perFit","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"dpHeaLoa_nominal","modification":{"equal":true,"expression":{"simple_expression":"dpHeaWat_nominal"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"dpHeaSou_nominal","modification":{"equal":true,"expression":{"simple_expression":"dpSouHea_nominal"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"hea","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"Q_flow","modification":{"equal":true,"expression":{"simple_expression":{"function_call":{"name":"abs","arguments":[{"name":"capHea_nominal"}]}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"P","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"mLoa_flow","modification":{"equal":true,"expression":{"simple_expression":"mHeaWat_flow_nominal"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"mSou_flow","modification":{"equal":true,"expression":{"simple_expression":"mSouHea_flow_nominal"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"coeQ","modification":{"equal":true,"expression":{"simple_expression":"{1,0,0,0,0}"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"coeP","modification":{"equal":true,"expression":{"simple_expression":"{1,0,0,0,0}"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"TRefLoa","modification":{"equal":true,"expression":{"simple_expression":"THeaWatRet_nominal"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"TRefSou","modification":{"equal":true,"expression":{"simple_expression":"TSouHea_nominal"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"coo","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"Q_flow","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":"is_rev"},"then":{"simple_expression":"-abs(capCoo_nominal)"}}],"else_expression":{"simple_expression":"-1"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"P","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"mLoa_flow","modification":{"equal":true,"expression":{"simple_expression":"mChiWat_flow_nominal"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"mSou_flow","modification":{"equal":true,"expression":{"simple_expression":"mSouCoo_flow_nominal"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"coeQ","modification":{"equal":true,"expression":{"simple_expression":"{1,0,0,0,0}"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"coeP","modification":{"equal":true,"expression":{"simple_expression":"{1,0,0,0,0}"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"TRefLoa","modification":{"equal":true,"expression":{"simple_expression":"TChiWatRet_nominal"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"TRefSou","modification":{"equal":true,"expression":{"simple_expression":"TSouCoo_nominal"}}}}}]}}}}]}}}]},"description":{"description_string":"Performance data - Equation fit model","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typMod","Buildings.Templates.Components.Types.HeatPumpModel.EquationFit"],"relation_operator":"=="}]}]}}}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"choicesAllMatching","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-8,"y":-40},{"x":8,"y":-24}]}}}}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentPrefixes","modification":{"equal":true,"expression":{"simple_expression":"\"parameter\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"datHp\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of sizing and operating parameters for\nheat pump models that can be found within\n\nBuildings.Templates.Components.HeatPumps.\n

\n

Performance data for the equation fit model

\n

When using\ntypMod=Buildings.Templates.Components.Types.HeatPumpModel.EquationFit,\nthe design values declared at the top-level\nare propagated by default to the performance data record per\nunder the assumption that the reference conditions used for assessing the\nperformance data match the design conditions.\nThis avoids duplicate parameter assignments when manually entering\nthe performance curve coefficients.\n

\n

\nNote that this propagation does not persist when redeclaring or\nreassigning the record.\nThis is because the equation fit method uses reference values that\nmust match the ones used to compute the performance curve coefficients.\n

\n

\nAlso note that placeholders values are assigned to the performance curves,\nthe reference source temperature and the input power in\ncooling mode to avoid assigning these parameters in case of non-reversible\nheat pumps.\nThese values are unrealistic and must be overwritten for reversible heat pumps, which\nis always the case when redeclaring or\nreassigning the performance record per.\nModels that use this record will issue a warning if these placeholders values\nare not overwritten in case of reversible heat pumps.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Components/Data/HeatPump.mo","fullMoFilePath":"/dependencies/modelica-buildings/Buildings/Templates/Components/Data/HeatPump.mo","checksum":"240b9915452c769fb2affb27355a3a77"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Components/Data/PumpMultiple.json b/server/tests/static-data/json/Buildings/Templates/Components/Data/PumpMultiple.json deleted file mode 100644 index 6e183365..00000000 --- a/server/tests/static-data/json/Buildings/Templates/Components/Data/PumpMultiple.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates.Components.Data","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"PumpMultiple","description_string":"Record for multiple-pump models","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Record"}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Pump","component_list":[{"declaration":{"identifier":"typ"},"description":{"description_string":"Equipment type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Integer","component_list":[{"declaration":{"identifier":"nPum","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Number of pumps","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"m_flow_nominal","array_subscripts":[{"expression":{"simple_expression":"nPum"}}],"modification":{"class_modification":[{"element_modification_or_replaceable":{"each":true,"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}},{"element_modification_or_replaceable":{"each":true,"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Mass flow rate - Each pump","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Pump.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dp_nominal","array_subscripts":[{"expression":{"simple_expression":"nPum"}}],"modification":{"class_modification":[{"element_modification_or_replaceable":{"each":true,"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"each":true,"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Total pressure rise - Each pump","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Pump.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"replaceable":true,"constraining_clause":{"name":"Buildings.Fluid.Movers.Data.Generic"},"component_clause":{"type_prefix":"parameter","type_specifier":"Fluid.Movers.Data.Generic","component_list":[{"declaration":{"identifier":"per","array_subscripts":[{"expression":{"simple_expression":{"function_call":{"name":"max","arguments":[{"name":"nPum"},{"name":"1"}]}}}}],"modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"pressure","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"V_flow","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Pump.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":{"for_loop":{"expression":{"simple_expression":"{0,1,2}*m_flow_nominal[i]/rho_default"},"for_loop":[{"name":"i","range":"1:nPum"}]}}}}],"else_expression":{"simple_expression":"[0]"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"dp","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Pump.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":{"for_loop":{"expression":{"simple_expression":"{1.14,1,0.42}*dp_nominal[i]"},"for_loop":[{"name":"i","range":"1:nPum"}]}}}}],"else_expression":{"simple_expression":"[0]"}}}}}}}]}}}}]}}}]},"description":{"description_string":"Performance data - Each pump","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Pump.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Density","component_list":[{"declaration":{"identifier":"rho_default","modification":{"equal":true,"expression":{"simple_expression":"Modelica.Media.Water.ConstantPropertyLiquidWater.d_const"}}},"description":{"description_string":"Default medium density","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentPrefixes","modification":{"equal":true,"expression":{"simple_expression":"\"parameter\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"datPum\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of sizing and operating parameters for \nthe multiple-pump model\n\nBuildings.Templates.Components.Pumps.Multiple.\n

\n

\nA default flow characteristic is provided, which goes through\nthe design operating point and spans over\n0 and twice the design flow rate at maximum speed.\nThis default characteristic is based on a least squares\npolynomial fit of the characteristics from\n\nBuildings.Fluid.Movers.Data.Pumps.Wilo.\nThe user may refer to the documentation of \n\nBuildings.Fluid.HydronicConfigurations.UsersGuide.ModelParameters\nfor further details.\nNote that a default medium density is used to parameterize \nthe pump characteristic. So models that use this record should\noverwrite this default value with the density of the medium\nin use, especially in the case of a water/glycol mix. \n

\n

\nIn order to modify the default characteristic, one may use either\nof the following methods.\n

\n
    \n
  • Assign the whole subrecord per or\nonly its component per.pressure.\nIn this case the elements per[i] may differ one from another.\nThis is the recommended approach for unequally sized units \nsuch as dedicated pumps.
  • \n
  • Redeclare the component per.\nIn this case the elements per[i] are all equal to the redeclared\nrecord instance.\nThis is the recommended approach for equally sized units \nsuch as headered pumps.
  • \n
\n

\nThose various use cases are illustrated in\n\nBuildings.Templates.Components.Validation.PumpMultipleRecord.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Components/Data/PumpMultiple.mo","fullMoFilePath":"/dependencies/modelica-buildings/Buildings/Templates/Components/Data/PumpMultiple.mo","checksum":"64d1f56f617c015538c0bd222077fd2a"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Components/Data/PumpSingle.json b/server/tests/static-data/json/Buildings/Templates/Components/Data/PumpSingle.json deleted file mode 100644 index e04a4773..00000000 --- a/server/tests/static-data/json/Buildings/Templates/Components/Data/PumpSingle.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates.Components.Data","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"PumpSingle","description_string":"Record for single pump model","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Record"}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Pump","component_list":[{"declaration":{"identifier":"typ"},"description":{"description_string":"Equipment type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"m_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Mass flow rate","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Pump.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dp_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Total pressure rise","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Pump.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"replaceable":true,"constraining_clause":{"name":"Buildings.Fluid.Movers.Data.Generic"},"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Fluid.Movers.Data.Generic","component_list":[{"declaration":{"identifier":"per","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"pressure","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"V_flow","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Pump.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":"{0,1,2}*m_flow_nominal/rho_default"}}],"else_expression":{"simple_expression":"{0,0,0}"}}}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"dp","modification":{"equal":true,"expression":{"if_expression":{"if_elseif":[{"condition":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Pump.None"],"relation_operator":"<>"}]}]}}},"then":{"simple_expression":"{1.14,1,0.42}*dp_nominal"}}],"else_expression":{"simple_expression":"{0,0,0}"}}}}}}}]}}}}]}}}]},"description":{"description_string":"Performance data","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Pump.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.Density","component_list":[{"declaration":{"identifier":"rho_default","modification":{"equal":true,"expression":{"simple_expression":"Modelica.Media.Water.ConstantPropertyLiquidWater.d_const"}}},"description":{"description_string":"Default medium density","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentPrefixes","modification":{"equal":true,"expression":{"simple_expression":"\"parameter\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"datPum\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of sizing and operating parameters for \nthe single pump model\n\nBuildings.Templates.Components.Pumps.Single.\n

\n

\nA default flow characteristic is provided and can be overwritten as\ndescribed in the documentation of \n\nBuildings.Templates.Components.Data.PumpMultiple\nin the more generic case of multiple units.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Components/Data/PumpSingle.mo","fullMoFilePath":"/dependencies/modelica-buildings/Buildings/Templates/Components/Data/PumpSingle.mo","checksum":"beab0fea46ac8a36b9b48e010b55eb34"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Components/Data/Valve.json b/server/tests/static-data/json/Buildings/Templates/Components/Data/Valve.json deleted file mode 100644 index 5e59f7c8..00000000 --- a/server/tests/static-data/json/Buildings/Templates/Components/Data/Valve.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates.Components.Data","stored_class_definitions":[{"class_prefixes":"record","class_specifier":{"long_class_specifier":{"identifier":"Valve","description_string":"Record for valve model","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Record"}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Components.Types.Valve","component_list":[{"declaration":{"identifier":"typ"},"description":{"description_string":"Equipment type","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Configuration\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.MassFlowRate","component_list":[{"declaration":{"identifier":"m_flow_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"1"}}}}}]}},"description":{"description_string":"Nominal mass flow rate of fully open valve","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Valve.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpValve_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"Pa\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Nominal pressure drop of fully open valve","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Valve.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpFixed_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"Pa\""}}}}}],"equal":true,"expression":{"simple_expression":"0"}}},"description":{"description_string":"Nominal pressure drop of pipes and other equipment in flow leg","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Valve.None"],"relation_operator":"<>"}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpFixedByp_nominal","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"Pa\""}}}}}],"equal":true,"expression":{"simple_expression":"dpFixed_nominal"}}},"description":{"description_string":"Nominal pressure drop in the bypass line","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Nominal condition\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Valve.ThreeWayTwoPosition"],"relation_operator":"=="}]},{"logical_and":[{"arithmetic_expressions":["typ","Buildings.Templates.Components.Types.Valve.ThreeWayModulating"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentPrefixes","modification":{"equal":true,"expression":{"simple_expression":"\"parameter\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"datVal\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis record provides the set of sizing parameters for\nthe class\n\nBuildings.Templates.Components.Actuators.Valve.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Components/Data/Valve.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/Components/Data/Valve.mo","checksum":"e16ef36264dbf6e8d067bdbcfb58fc55"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Components/Data/package.json b/server/tests/static-data/json/Buildings/Templates/Components/Data/package.json deleted file mode 100644 index 7a577a8a..00000000 --- a/server/tests/static-data/json/Buildings/Templates/Components/Data/package.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates.Components","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"Data","description_string":"Records for design and operating parameters","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.MaterialPropertiesPackage"}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package provides records for design and operating parameters.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Components/Data/package.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/Components/Data/package.mo","checksum":"48ae7e51df22781f1bd2c10ec31217c0","order":["Chiller","Coil","Damper","Fan","HeatPump","PumpMultiple","PumpSingle","Valve"]} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Components/Types.json b/server/tests/static-data/json/Buildings/Templates/Components/Types.json deleted file mode 100644 index eddba5c3..00000000 --- a/server/tests/static-data/json/Buildings/Templates/Components/Types.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates.Components","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"Types","description_string":"Package with type definitions","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.TypesPackage"}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"Chiller","value":{"description":{"description_string":"Enumeration to specify the type of chiller"},"enum_list":[{"identifier":"AirCooled","description":{"description_string":"Air-cooled compression chiller"}},{"identifier":"None","description":{"description_string":"No chiller"}},{"identifier":"WaterCooled","description":{"description_string":"Water-cooled compression chiller"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"Coil","value":{"description":{"description_string":"Enumeration to configure the coil"},"enum_list":[{"identifier":"ElectricHeating","description":{"description_string":"Modulating electric heating coil"}},{"identifier":"EvaporatorMultiStage","description":{"description_string":"Evaporator coil with multi-stage compressor"}},{"identifier":"EvaporatorVariableSpeed","description":{"description_string":"Evaporator coil with variable speed compressor"}},{"identifier":"None","description":{"description_string":"No coil"}},{"identifier":"WaterBasedCooling","description":{"description_string":"Chilled water coil"}},{"identifier":"WaterBasedHeating","description":{"description_string":"Hot water coil"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"Cooler","value":{"description":{"description_string":"Enumeration to configure the condenser water cooling equipment"},"enum_list":[{"identifier":"None","description":{"description_string":"No external cooler (typically for air-cooled chillers)"}},{"identifier":"CoolingTowerClosed","description":{"description_string":"Closed-circuit cooling tower"}},{"identifier":"CoolingTowerOpen","description":{"description_string":"Open-circuit cooling tower"}},{"identifier":"DryCooler","description":{"description_string":"Dry cooler"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"Damper","value":{"description":{"description_string":"Enumeration to configure the damper"},"enum_list":[{"identifier":"Modulating","description":{"description_string":"Modulating damper"}},{"identifier":"None","description":{"description_string":"No damper"}},{"identifier":"PressureIndependent","description":{"description_string":"Pressure independent damper"}},{"identifier":"TwoPosition","description":{"description_string":"Two-position damper"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"DamperBlades","value":{"description":{"description_string":"Enumeration to specify the type of damper blades"},"enum_list":[{"identifier":"Opposed","description":{"description_string":"Opposed blades"}},{"identifier":"Parallel","description":{"description_string":"Parallel blades"}},{"identifier":"VAV","description":{"description_string":"VAV damper"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"Fan","value":{"description":{"description_string":"Enumeration to configure the fan"},"enum_list":[{"identifier":"None","description":{"description_string":"No fan"}},{"identifier":"SingleConstant","description":{"description_string":"Single fan - Constant speed"}},{"identifier":"SingleVariable","description":{"description_string":"Single fan - Variable speed"}},{"identifier":"ArrayVariable","description":{"description_string":"Fan array - Variable speed"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"FanSingle","value":{"description":{"description_string":"Enumeration to specify the type of single fan"},"enum_list":[{"identifier":"Housed","description":{"description_string":"Housed centrifugal fan"}},{"identifier":"Plug","description":{"description_string":"Plug fan"}},{"identifier":"Propeller","description":{"description_string":"Propeller fan"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"HeatPump","value":{"description":{"description_string":"Enumeration to specify the type of heat pump"},"enum_list":[{"identifier":"AirToWater","description":{"description_string":"Air-to-water heat pump"}},{"identifier":"WaterToWater","description":{"description_string":"Water(or brine)-to-water heat pump"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"HeatPumpModel","value":{"description":{"description_string":"Enumeration to specify the heat pump model"},"enum_list":[{"identifier":"EquationFit","description":{"description_string":"Heat pump model based on the equation fit method"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"IntegrationPoint","value":{"description":{"description_string":"Enumeration to specify the integration point of equipment"},"enum_list":[{"identifier":"None","description":{"description_string":"None"}},{"identifier":"Return","description":{"description_string":"Return side"}},{"identifier":"Supply","description":{"description_string":"Supply side"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"Pump","value":{"description":{"description_string":"Enumeration to configure the pump"},"enum_list":[{"identifier":"None","description":{"description_string":"No pump"}},{"identifier":"Single","description":{"description_string":"Single pump"}},{"identifier":"Multiple","description":{"description_string":"Multiple pumps in parallel"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"PumpArrangement","value":{"description":{"description_string":"Enumeration to specify the pump arrangement"},"enum_list":[{"identifier":"Dedicated","description":{"description_string":"Dedicated pumps"}},{"identifier":"Headered","description":{"description_string":"Headered pumps"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"Sensor","value":{"description":{"description_string":"Enumeration to configure the sensor"},"enum_list":[{"identifier":"DifferentialPressure","description":{"description_string":"Differential pressure"}},{"identifier":"HumidityRatio","description":{"description_string":"Humidity ratio"}},{"identifier":"PPM","description":{"description_string":"PPM"}},{"identifier":"RelativeHumidity","description":{"description_string":"Relative humidity"}},{"identifier":"SpecificEnthalpy","description":{"description_string":"Specific enthalpy"}},{"identifier":"Temperature","description":{"description_string":"Temperature"}},{"identifier":"VolumeFlowRate","description":{"description_string":"Volume flow rate"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"SensorTemperature","value":{"description":{"description_string":"Enumeration to specify the type of temperature sensor"},"enum_list":[{"identifier":"Standard","description":{"description_string":"Standard sensor"}},{"identifier":"Averaging","description":{"description_string":"Averaging sensor"}},{"identifier":"InWell","description":{"description_string":"Sensor in well"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"SensorVolumeFlowRate","value":{"description":{"description_string":"Enumeration to specify the type of volume flow rate sensor"},"enum_list":[{"identifier":"AFMS","description":{"description_string":"Airflow measuring station"}},{"identifier":"FlowCross","description":{"description_string":"Flow cross"}},{"identifier":"FlowMeter","description":{"description_string":"Flow meter"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"Valve","value":{"description":{"description_string":"Enumeration to configure the valve"},"enum_list":[{"identifier":"None","description":{"description_string":"No valve"}},{"identifier":"ThreeWayModulating","description":{"description_string":"Three-way modulating valve"}},{"identifier":"ThreeWayTwoPosition","description":{"description_string":"Three-way two-position valve"}},{"identifier":"TwoWayModulating","description":{"description_string":"Two-way modulating valve"}},{"identifier":"TwoWayTwoPosition","description":{"description_string":"Two-way two-position valve"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"ValveCharacteristicTwoWay","value":{"description":{"description_string":"Enumeration to specify the characteristic of two-way valves","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nEnumeration that defines the characteristic of two-way valves.\n

\n\n\n \n\n \n\n \n\n \n\n \n
EnumerationDescription
EqualPercentageEqual percentage
LinearLinear
PressureIndependentPressure independent (mass flow rate only dependent of input signal)
TableTable-specified
\n\""}}}}}]}}}}]},"enum_list":[{"identifier":"EqualPercentage","description":{"description_string":"Equal percentage"}},{"identifier":"Linear","description":{"description_string":"Linear"}},{"identifier":"PressureIndependent","description":{"description_string":"Pressure independent (mass flow rate only dependent of input signal)"}},{"identifier":"Table","description":{"description_string":"Table-specified"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"ValveCharacteristicThreeWay","value":{"description":{"description_string":"Enumeration to specify the characteristic of the bypass valve","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nEnumeration that defines the characteristic of three-way valves.\n

\n\n\n \n\n \n\n \n\n\n
EnumerationDescription
EqualPercentageLinearEqual percentage (direct) and linear (bypass)
LinearLinear (both direct and bypass)
TableTable-specified (both direct and bypass)
\n\""}}}}}]}}}}]},"enum_list":[{"identifier":"EqualPercentageLinear","description":{"description_string":"Equal percentage (direct) and linear (bypass)"}},{"identifier":"Linear","description":{"description_string":"Linear (both direct and bypass)"}},{"identifier":"Table","description":{"description_string":"Table-specified (both direct and bypass)"}}]}}}}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package contains type definitions.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Components/Types.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/Components/Types.mo","checksum":"fc3a03a72dd41973dcf569c2b6e76374"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Components/package.json b/server/tests/static-data/json/Buildings/Templates/Components/package.json deleted file mode 100644 index 9641b772..00000000 --- a/server/tests/static-data/json/Buildings/Templates/Components/package.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"Components","description_string":"Package with component models","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.VariantsPackage"}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package contains component models that are used in\n\nBuildings.Templates.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Components/package.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/Components/package.mo","checksum":"965580432e6cda4b1fb95c22cc92b325","order":["Actuators","Chillers","Coils","Controls","Fans","HeatPumps","Pumps","Routing","Sensors","Tanks","Data","Types","Validation","Interfaces"]} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Data/AllSystems.json b/server/tests/static-data/json/Buildings/Templates/Data/AllSystems.json deleted file mode 100644 index 70100c2d..00000000 --- a/server/tests/static-data/json/Buildings/Templates/Data/AllSystems.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates.Data","stored_class_definitions":[{"class_prefixes":"class","class_specifier":{"long_class_specifier":{"identifier":"AllSystems","description_string":"Top-level (whole building) system parameters","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Templates.Types.Units","component_list":[{"declaration":{"identifier":"sysUni"},"description":{"description_string":"Unit system"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard","component_list":[{"declaration":{"identifier":"stdEne"},"description":{"description_string":"Energy standard","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard","component_list":[{"declaration":{"identifier":"stdVen"},"description":{"description_string":"Ventilation standard","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Evaluate","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone","component_list":[{"declaration":{"identifier":"ashCliZon","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Controls.OBC.ASHRAE.G36.Types.ASHRAEClimateZone.Zone_1A"}}}}}]}},"description":{"description_string":"ASHRAE climate zone","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["stdEne","Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.ASHRAE90_1"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone","component_list":[{"declaration":{"identifier":"tit24CliZon","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Controls.OBC.ASHRAE.G36.Types.Title24ClimateZone.Zone_1"}}}}}]}},"description":{"description_string":"California Title 24 climate zone","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Dialog","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"arithmetic_expressions":["stdEne","Buildings.Controls.OBC.ASHRAE.G36.Types.EnergyStandard.California_Title_24"],"relation_operator":"=="}]}]}}}}}}}]}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentPrefixes","modification":{"equal":true,"expression":{"simple_expression":"\"inner parameter\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"datAll\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis class provides the set of sizing and operating parameters for the whole HVAC system.\n

\n\""}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Icon","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"graphics":[{"name":"Text","attribute":{"extent":[{"x":-150,"y":60},{"x":150,"y":100}],"textString":"\"%name\"","textColor":{"r":0,"g":0,"b":255}}},{"name":"Rectangle","attribute":{"extent":[{"x":-100,"y":-75},{"x":100,"y":75}],"radius":25,"origin":{"x":0,"y":-25},"lineColor":{"r":64,"g":64,"b":64},"fillColor":{"r":85,"g":255,"b":255},"fillPattern":"FillPattern.Solid"}},{"name":"Line","attribute":{"points":[{"x":-100,"y":0},{"x":100,"y":0}],"color":{"r":64,"g":64,"b":64}}},{"name":"Line","attribute":{"points":[{"x":-100,"y":0},{"x":100,"y":0}],"color":{"r":64,"g":64,"b":64}}},{"name":"Line","attribute":{"points":[{"x":0,"y":75},{"x":0,"y":-75}],"color":{"r":64,"g":64,"b":64}}}]}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Data/AllSystems.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/Data/AllSystems.mo","checksum":"ada04a9cdaa64264f150318638d9eea8"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Data/Defaults.json b/server/tests/static-data/json/Buildings/Templates/Data/Defaults.json deleted file mode 100644 index 4bf0bf3a..00000000 --- a/server/tests/static-data/json/Buildings/Templates/Data/Defaults.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates.Data","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"Defaults","description_string":"Package with default sizing parameters","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.MaterialPropertiesPackage"}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TChiWatSup","modification":{"equal":true,"expression":{"simple_expression":"7 +273.15"}}},"description":{"description_string":"CHW supply temperature (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TChiWatSup_min","modification":{"equal":true,"expression":{"simple_expression":"3.3 +273.15"}}},"description":{"description_string":"Minimum CHW supply temperature (typical)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TChiWatSup_max","modification":{"equal":true,"expression":{"simple_expression":"16 +273.15"}}},"description":{"description_string":"Maximum CHW supply temperature (typical)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TChiWatRet","modification":{"equal":true,"expression":{"simple_expression":"12 +273.15"}}},"description":{"description_string":"CHW return temperature (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TConWatSup","modification":{"equal":true,"expression":{"simple_expression":"30 +273.15"}}},"description":{"description_string":"CW supply temperature (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TConWatRet","modification":{"equal":true,"expression":{"simple_expression":"35 +273.15"}}},"description":{"description_string":"CW return temperature (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TOutChi","modification":{"equal":true,"expression":{"simple_expression":"35 +273.15"}}},"description":{"description_string":"Outdoor air temperature for air-cooled chiller (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TConEnt_min","modification":{"equal":true,"expression":{"simple_expression":"13 +273.15"}}},"description":{"description_string":"Minimum condenser entering fluid temperature (air or water)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TConEnt_max","modification":{"equal":true,"expression":{"simple_expression":"45 +273.15"}}},"description":{"description_string":"Maximum condenser entering fluid temperature (air or water)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TConLvg_min","modification":{"equal":true,"expression":{"simple_expression":"16 +273.15"}}},"description":{"description_string":"Minimum condenser leaving fluid temperature (air or water)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TConLvg_max","modification":{"equal":true,"expression":{"simple_expression":"50 +273.15"}}},"description":{"description_string":"Maximum condenser leaving fluid temperature (air or water)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TChiWatEcoEnt","modification":{"equal":true,"expression":{"simple_expression":"18 +273.15"}}},"description":{"description_string":"WSE entering CHW temperature"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TChiWatEcoLvg","modification":{"equal":true,"expression":{"simple_expression":"11 +273.15"}}},"description":{"description_string":"WSE leaving CHW temperature"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TConWatEcoEnt","modification":{"equal":true,"expression":{"simple_expression":"9 +273.15"}}},"description":{"description_string":"WSE entering CW temperature"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TConWatEcoLvg","modification":{"equal":true,"expression":{"simple_expression":"16 +273.15"}}},"description":{"description_string":"WSE leaving CW temperature"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TOutChiWatLck","modification":{"equal":true,"expression":{"simple_expression":"16 +273.15"}}},"description":{"description_string":"Outdoor air lockout temperature below which the CHW system is prevented from operating"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.TemperatureDifference","component_list":[{"declaration":{"identifier":"dTLifChi_min","modification":{"equal":true,"expression":{"simple_expression":"5"}}},"description":{"description_string":"Minimum chiller lift at minimum load"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TOutDryCoo","modification":{"equal":true,"expression":{"simple_expression":"TOutChi"}}},"description":{"description_string":"Dry cooler entering air drybulb temperature"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TWetBulTowEnt","modification":{"equal":true,"expression":{"simple_expression":"24 +273.15"}}},"description":{"description_string":"CT entering air wetbulb temperature"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Real","component_list":[{"declaration":{"identifier":"PFanByFloConWatTow","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"W/(kg/s)\""}}}}}],"equal":true,"expression":{"simple_expression":"340"}}},"description":{"description_string":"CT fan power divided by CW mass flow rate"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Real","component_list":[{"declaration":{"identifier":"mConWatFloByAirTow","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"1\""}}}}}],"equal":true,"expression":{"simple_expression":"1.45"}}},"description":{"description_string":"CT CW mass flow rate divided by air mass flow rate"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpConWatFriTow","modification":{"equal":true,"expression":{"simple_expression":"10000"}}},"description":{"description_string":"CW flow-friction losses through open-circuit tower and piping only (without elevation head or valve)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpConWatStaTow","modification":{"equal":true,"expression":{"simple_expression":"30000"}}},"description":{"description_string":"CW elevation head (for open cooling towers only)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpConWatTowClo","modification":{"equal":true,"expression":{"simple_expression":"50000"}}},"description":{"description_string":"CW flow-friction losses through closed-circuit tower and piping only (without valve)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Real","component_list":[{"declaration":{"identifier":"mAirFloByCapChi","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"(kg/s)/W\""}}}}}],"equal":true,"expression":{"simple_expression":"0.0001"}}},"description":{"description_string":"Air mass flow rate divided by capacity for air-cooled chiller"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Real","component_list":[{"declaration":{"identifier":"COPChiAirCoo","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"1\""}}}}}],"equal":true,"expression":{"simple_expression":"2.99"}}},"description":{"description_string":"Air-cooled chiller COP (ASHRAE 90.1 2022 at 7 ?C CHWST, 35 ?C OAT)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Real","component_list":[{"declaration":{"identifier":"COPChiWatCoo","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"1\""}}}}}],"equal":true,"expression":{"simple_expression":"5.33"}}},"description":{"description_string":"Water-cooled chiller COP (ASHRAE 90.1 2022 at 7 ?C CHWST, 35 ?C source LWT)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpValIso","modification":{"equal":true,"expression":{"simple_expression":"1000"}}},"description":{"description_string":"Isolation or bypass valve pressure drop"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpValBypMin","modification":{"equal":true,"expression":{"simple_expression":"30000"}}},"description":{"description_string":"Minimum flow bypass valve pressure drop at design minimum flow for the largest chiller"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpValChe","modification":{"equal":true,"expression":{"simple_expression":"10000"}}},"description":{"description_string":"Check valve pressure drop"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpChiWatChi","modification":{"equal":true,"expression":{"simple_expression":"40000"}}},"description":{"description_string":"Chiller CHW pressure drop"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpChiWatSet_min","modification":{"equal":true,"expression":{"simple_expression":"5*6894"}}},"description":{"description_string":"Minimum CHW differential pressure setpoint used in CHW plant reset logic"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpChiWatRemSet_max","modification":{"equal":true,"expression":{"simple_expression":"50000"}}},"description":{"description_string":"Maximum CHW differential pressure setpoint remote from the CHW plant"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpChiWatLocSet_max","modification":{"equal":true,"expression":{"simple_expression":"150000"}}},"description":{"description_string":"Maximum CHW differential pressure setpoint local to the CHW plant"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpConWatChi","modification":{"equal":true,"expression":{"simple_expression":"40000"}}},"description":{"description_string":"Chiller CW pressure drop (water-cooled)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpAirChi","modification":{"equal":true,"expression":{"simple_expression":"500"}}},"description":{"description_string":"Chiller air pressure drop across condenser (air-cooled)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpChiWatEco","modification":{"equal":true,"expression":{"simple_expression":"30000"}}},"description":{"description_string":"WSE CHW pressure drop"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpConWatEco","modification":{"equal":true,"expression":{"simple_expression":"30000"}}},"description":{"description_string":"WSE CW pressure drop"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"pChiWat_rel_nominal","modification":{"equal":true,"expression":{"simple_expression":"100000"}}},"description":{"description_string":"CHW system gauge pressure at design conditions"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"pHeaWat_rel_nominal","modification":{"equal":true,"expression":{"simple_expression":"250000"}}},"description":{"description_string":"HHW system gauge pressure at design conditions"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpHeaWatBoi","modification":{"equal":true,"expression":{"simple_expression":"5000"}}},"description":{"description_string":"Boiler HW pressure drop"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"THeaWatSup","modification":{"equal":true,"expression":{"simple_expression":"80 +273.15"}}},"description":{"description_string":"HW supply temperature"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"THeaWatConSup","modification":{"equal":true,"expression":{"simple_expression":"65 +273.15"}}},"description":{"description_string":"HW supply temperature for condensing boilers"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"THeaWatRet","modification":{"equal":true,"expression":{"simple_expression":"55 +273.15"}}},"description":{"description_string":"HW return temperature"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TOutHeaWatLck","modification":{"equal":true,"expression":{"simple_expression":"21 +273.15"}}},"description":{"description_string":"Outdoor air lockout temperature above which the HW system is prevented from operating"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpHeaWatSet_min","modification":{"equal":true,"expression":{"simple_expression":"5*6894"}}},"description":{"description_string":"Minimum HW differential pressure setpoint used in HW plant reset logic"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpHeaWatRemSet_max","modification":{"equal":true,"expression":{"simple_expression":"50000"}}},"description":{"description_string":"Maximum HW differential pressure setpoint remote from the HW plant"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpHeaWatLocSet_max","modification":{"equal":true,"expression":{"simple_expression":"150000"}}},"description":{"description_string":"Maximum HW differential pressure setpoint local to the CHW plant"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.PressureDifference","component_list":[{"declaration":{"identifier":"dpHeaWatHp","modification":{"equal":true,"expression":{"simple_expression":"30000"}}},"description":{"description_string":"Heat pump HW pressure drop across condenser barrel"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"THeaWatSupHig","modification":{"equal":true,"expression":{"simple_expression":"60 +273.15"}}},"description":{"description_string":"HW supply temperature - High temperature level (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"THeaWatRetHig","modification":{"equal":true,"expression":{"simple_expression":"50 +273.15"}}},"description":{"description_string":"HW return temperature - High temperature level (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"THeaWatSupMed","modification":{"equal":true,"expression":{"simple_expression":"50 +273.15"}}},"description":{"description_string":"HW supply temperature - Medium temperature level (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"THeaWatRetMed","modification":{"equal":true,"expression":{"simple_expression":"42 +273.15"}}},"description":{"description_string":"HW return temperature - Medium temperature level (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"THeaWatSupLow","modification":{"equal":true,"expression":{"simple_expression":"40 +273.15"}}},"description":{"description_string":"HW supply temperature - Low temperature level (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"THeaWatRetLow","modification":{"equal":true,"expression":{"simple_expression":"35 +273.15"}}},"description":{"description_string":"HW return temperature - Low temperature level (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TOutHpCoo","modification":{"equal":true,"expression":{"simple_expression":"TOutChi"}}},"description":{"description_string":"Outdoor air temperature for air-to-water heat pump rating - Cooling (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TOutHpHeaHig","modification":{"equal":true,"expression":{"simple_expression":"8 +273.15"}}},"description":{"description_string":"Outdoor air temperature for air-to-water heat pump rating - High heating (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TOutHpHeaLow","modification":{"equal":true,"expression":{"simple_expression":"-8 +273.15"}}},"description":{"description_string":"Outdoor air temperature for air-to-water heat pump rating - Low heating (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TSouHpCoo","modification":{"equal":true,"expression":{"simple_expression":"30 +273.15"}}},"description":{"description_string":"Source fluid entering temperature for water-to-water heat pump rating - Cooling (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Modelica.Units.SI.Temperature","component_list":[{"declaration":{"identifier":"TSouHpHea","modification":{"equal":true,"expression":{"simple_expression":"12 +273.15"}}},"description":{"description_string":"Source fluid entering temperature for water-to-water heat pump rating - Heating (AHRI 551/591)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Real","component_list":[{"declaration":{"identifier":"COPHpAwHea","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"1\""}}}}}],"equal":true,"expression":{"simple_expression":"1.75"}}},"description":{"description_string":"Air-to-water heat pump heating COP (ASHRAE 90.1 2022 at 50 ?C HWST, -8 ?C OAT)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Real","component_list":[{"declaration":{"identifier":"COPHpAwCoo","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"1\""}}}}}],"equal":true,"expression":{"simple_expression":"2.84"}}},"description":{"description_string":"Air-to-water heat pump cooling COP (ASHRAE 90.1 2022 at 7 ?C CHWST, 35 ?C OAT)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Real","component_list":[{"declaration":{"identifier":"COPHpWwHea","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"1\""}}}}}],"equal":true,"expression":{"simple_expression":"3.61"}}},"description":{"description_string":"Water(brine)-to-water heat pump heating COP (ASHRAE 90.1 2022 at 50 ?C HWST, 7 ?C source LWT)"}}]}},{"component_clause":{"type_prefix":"constant","type_specifier":"Real","component_list":[{"declaration":{"identifier":"COPHpWwCoo","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"1\""}}}}}],"equal":true,"expression":{"simple_expression":"5.07"}}},"description":{"description_string":"Water(brine)-to-water heat pump cooling COP (ASHRAE 90.1 2022 at 7 ?C CHWST, 35 ?C source LWT)"}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package defines some constants that are either\n

\n
    \n
  • \ntypical values used as default parameter values\nfor models inside the package\n\nBuildings.Templates, or\n
  • \n
  • \narbitrary values used for validation purposes only.\nThose are typically project-specific characteristics (e.g.,\nchiller COP at nominal conditions) and should not\nbe considered as generic default values.\n
  • \n
\n\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"revisions","modification":{"equal":true,"expression":{"simple_expression":"\"\n
    \n
  • \nNovember 18, 2022, by Antoine Gautier:
    \nFirst implementation.\n
  • \n
\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Data/Defaults.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/Data/Defaults.mo","checksum":"d8dfbad122d5e7bd56b72c16b81a0a8b"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Data/package.json b/server/tests/static-data/json/Buildings/Templates/Data/package.json deleted file mode 100644 index 42c6ecea..00000000 --- a/server/tests/static-data/json/Buildings/Templates/Data/package.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"Data","description_string":"Package with classes for storing system parameters","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.MaterialPropertiesPackage"}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package provides classes for storing system parameters\nat the top-level of a simulation model.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Data/package.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/Data/package.mo","checksum":"74f091cd84594342c9a953adcf786f68","order":["AllSystems","Defaults"]} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/Types.json b/server/tests/static-data/json/Buildings/Templates/Types.json deleted file mode 100644 index 60796811..00000000 --- a/server/tests/static-data/json/Buildings/Templates/Types.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings.Templates","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"Types","description_string":"Package with type definitions","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.TypesPackage"}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"Buildings","value":{"description":{"description_string":"Enumeration to specify the building type"},"enum_list":[{"identifier":"Education","description":{"description_string":"Buildings used for academic or technical classroom instruction"}},{"identifier":"FoodSales","description":{"description_string":"Buildings used for retail or wholesale of food"}},{"identifier":"FoodServices","description":{"description_string":"Buildings used for preparation and sale of food and beverages for consumption"}},{"identifier":"HealthCare","description":{"description_string":"Buildings used as diagnostic and treatment facilities for inpatient care"}},{"identifier":"Lodging","description":{"description_string":"Buildings used to offer multiple accommodations for short-term or long-term residents"}},{"identifier":"MercantileRetail","description":{"description_string":"Buildings used for the sale and display of goods other than food"}},{"identifier":"MercantileMall","description":{"description_string":"Shopping malls comprised of multiple connected establishments"}},{"identifier":"Office","description":{"description_string":"Buildings used for general office space, professional office, or administrative offices"}},{"identifier":"PublicAssembly","description":{"description_string":"Buildings in which people gather for social or recreational activities"}},{"identifier":"PublicOrderSafety","description":{"description_string":"Buildings used for the preservation of law and order or public safety"}},{"identifier":"ReligiousWorkshop","description":{"description_string":"Buildings in which people gather for religious activities"}},{"identifier":"Service","description":{"description_string":"Buildings in which some types of services is provided"}},{"identifier":"WarehouseStorage","description":{"description_string":"Buildings used to store goods, manufactured products, merchandise, raw materials, or personal belongings"}},{"identifier":"Other","description":{"description_string":"All other miscellaneous buildings that do not fit into any other category"}},{"identifier":"Vacant","description":{"description_string":"Buildings in which more floor space was vacant than was used for any single commercial activity"}}]}}}}},{"class_definition":{"class_prefixes":"type","class_specifier":{"short_class_specifier":{"identifier":"Units","value":{"description":{"description_string":"Enumeration to specify the system of units"},"enum_list":[{"identifier":"SI","description":{"description_string":"SI - International units"}},{"identifier":"IP","description":{"description_string":"IP - Imperial units"}}]}}}}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package contains type definitions.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/Types.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/Types.mo","checksum":"9fe7c9bfc8ee19cdc2d65153b9a65fc3"} \ No newline at end of file diff --git a/server/tests/static-data/json/Buildings/Templates/package.json b/server/tests/static-data/json/Buildings/Templates/package.json deleted file mode 100644 index 97ade449..00000000 --- a/server/tests/static-data/json/Buildings/Templates/package.json +++ /dev/null @@ -1 +0,0 @@ -{"within":"Buildings","stored_class_definitions":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"Templates","description_string":"Package with templates for various HVAC systems","composition":{"element_list":[{"extends_clause":{"name":"Modelica.Icons.Package"}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"__ctrlFlow","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"routing","modification":{"equal":true,"expression":{"simple_expression":"\"root\""}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Documentation","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"info","modification":{"equal":true,"expression":{"simple_expression":"\"\n

\nThis package contains templates for common HVAC systems.\nA template is defined as a user-configurable model that can represent various\nconfigurations of the same system. The templates include closed-loop controls as\nimplemented within\n\nBuildings.Controls.OBC.\n

\n\""}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Icon","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"graphics":[{"name":"Text","attribute":{"extent":[{"x":-100,"y":100},{"x":100,"y":-100}],"textString":"\"T\"","fontName":"\"monospace\"","textColor":{"r":0,"g":0,"b":0}}}]}}}]}}}}]}}}}],"modelicaFile":"Buildings/Templates/package.mo","fullMoFilePath":"modelica-buildings/Buildings/Templates/package.mo","checksum":"58c428da8279632197e7910aff778511","order":["UsersGuide","AirHandlersFans","Components","Plants","Utilities","ZoneEquipment","Data","Types"]} \ No newline at end of file diff --git a/server/tests/static-data/json/Modelica/Units.json b/server/tests/static-data/json/Modelica/Units.json deleted file mode 100644 index 8c5d763c..00000000 --- a/server/tests/static-data/json/Modelica/Units.json +++ /dev/null @@ -1,28575 +0,0 @@ -{ - "within": "Modelica", - "stored_class_definitions": [ - { - "class_prefixes": "package", - "class_specifier": { - "long_class_specifier": { - "identifier": "Units", - "description_string": "Library of type and unit definitions", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Icons.Package" - } - }, - { - "class_definition": { - "class_prefixes": "package", - "class_specifier": { - "long_class_specifier": { - "identifier": "UsersGuide", - "description_string": "User's Guide of Units Library", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Icons.Information" - } - }, - { - "class_definition": { - "class_prefixes": "class", - "class_specifier": { - "long_class_specifier": { - "identifier": "HowToUseUnits", - "description_string": "How to use Units", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Icons.Information" - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "DocumentationClass", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Documentation", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "info", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"\n

\nWhen implementing a Modelica model, every variable needs to\nbe declared. Physical variables should be declared with a unit.\nThe basic approach in Modelica is that the unit attribute of\na variable is the unit in which the equations are written,\nfor example:\n

\n\n
\nmodel MassOnGround\n  parameter Real m(quantity=\\\"Mass\\\", unit=\\\"kg\\\") \\\"Mass\\\";\n  parameter Real f(quantity=\\\"Force\\\", unit=\\\"N\\\") \\\"Driving force\\\";\n  Real s(unit=\\\"m\\\") \\\"Position of mass\\\";\n  Real v(unit=\\\"m/s\\\") \\\"Velocity of mass\\\";\nequation\n  der(s) = v;\n  m*der(v) = f;\nend MassOnGround;\n
\n\n

\nThis means that the equations in the equation section are only correct\nfor the specified units. A different issue is the user interface, i.e.,\nin which unit the variable is presented to the user in graphical\nuser interfaces, both for input (e.g., parameter menu), as well as\nfor output (e.g., in the plot window). Preferably, the Modelica tool\nshould provide a list of units from which the user can select, e.g.,\n\\\"m\\\", \\\"cm\\\", \\\"km\\\", \\\"inch\\\" for quantity \\\"Length\\\". When storing the value in\nthe model as a Modelica modifier, it has to be converted to the unit defined\nin the declaration. Additionally, the unit used in the graphical\nuser interface has to be stored. In order to have a standardized way\nof doing this, Modelica provides the following three attributes\nfor a variable of type Real:\n

\n\n
    \n
  • quantity to define the physical quantity (e.g., \\\"Length\\\", or \\\"Energy\\\").
  • \n
  • unit to define the unit that has to be used\n in order that the equations are correct (e.g., \\\"N.m\\\").
  • \n
  • displayUnit to define the unit used in the graphical\n user interface as default display unit for input and/or output.
  • \n
\n\n

\nNote, a unit, such as \\\"N.m\\\", is not sufficient to define uniquely the\nphysical quantity, since, e.g., \\\"N.m\\\" might be either \\\"torque\\\" or\n\\\"energy\\\". The \\\"quantity\\\" attribute might therefore be used by a tool\nto select the corresponding menu from which the user can select\na unit for the corresponding variable.\n

\n\n

\nFor example, after providing a value for \\\"m\\\" and \\\"f\\\" in a parameter\nmenu of an instance of MassOnGround, a tool might generate the following code:\n

\n\n
\nMassOnGround myObject(m(displayUnit=\\\"g\\\")=2, f=3);\n
\n\n

\nThe meaning is that in the equations a value of \\\"2\\\" is used\nand that in the graphical user interface a value of \\\"2000\\\" should be used,\ntogether with the unit \\\"g\\\" from the unit set \\\"Mass\\\" (= the quantity name).\nNote, according to the Modelica specification\na tool might ignore the \\\"displayUnit\\\" attribute.\n

\n\n

\nIn order to help the Modelica model developer, the Modelica.Units\nlibrary provides about 450 predefined type names,\ntogether with values for the attributes quantity, unit and sometimes\ndisplayUnit and min. The unit is always selected as SI-unit according to the\nISO standard. The type and the quantity names are the\nquantity names used in the ISO standard. \\\"quantity\\\" and \\\"unit\\\" are defined\nas \\\"final\\\" in order that they cannot be modified. Attributes \\\"displayUnit\\\"\nand \\\"min\\\" can, however, be changed in a model via a modification. The example above,\nmight therefore be alternatively also defined as:\n

\n\n
\nmodel MassOnGround\n  parameter Modelica.Units.SI.Mass  m \\\"Mass\\\";\n  parameter Modelica.Units.SI.Force f \\\"Driving force\\\";\n  ...\nend MassOnGround;\n
\n\n

\nor in a short hand notation as\n

\n\n
\nmodel MassOnGround\n  import Modelica.Units.SI;\n  parameter SI.Mass  m \\\"Mass\\\";\n  parameter SI.Force f \\\"Driving force\\\";\n  ...\nend MassOnGround;\n
\n\n

\nFor some often\nused Non SI-units (like hour), some additional type definitions are\npresent as Modelica.Units.NonSI. If this is not sufficient,\nthe user has to define its own types or use the attributes directly\nin the declaration as in the example at the beginning.\n

\n\n

\nComplex units are also included in Modelica.Units.\nA complex unit is declared as:\n

\n
\nmodel QuasiStaticMachine\n  parameter Modelica.Units.SI.ComplexPower SNominal = Complex(10000,4400)\n     \\\"Nominal complex power\\\";\n  ...\nend QuasiStaticMachine;\n
\n\"" - } - } - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "class", - "class_specifier": { - "long_class_specifier": { - "identifier": "Conventions", - "description_string": "Conventions", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Icons.Information" - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "DocumentationClass", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Documentation", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "info", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"\n

The following conventions are used in package Modelica.Units.SI:

\n
    \n
  • Modelica quantity names are defined according to the recommendations\n of ISO 31. Some of these name are rather long, such as\n \\\"ThermodynamicTemperature\\\". Shorter alias names are defined, e.g.,\n \\\"type Temperature = ThermodynamicTemperature;\\\".
  • \n
  • Modelica units are defined according to the SI base units without\n multiples (only exception \\\"kg\\\").
  • \n
  • For some quantities, more convenient units for an engineer are\n defined as \\\"displayUnit\\\", i.e., the default unit for display\n purposes (e.g., displayUnit=\\\"deg\\\" for quantity=\\\"Angle\\\").
  • \n
  • The type name is identical to the quantity name, following\n the convention of type names.
  • \n
  • All quantity and unit attributes are defined as final in order\n that they cannot be redefined to another value.
  • \n
  • Similar quantities, such as \\\"Length, Breadth, Height, Thickness,\n Radius\\\" are defined as the same quantity (here: \\\"Length\\\").
  • \n
  • The ordering of the type declarations in this package follows ISO 31:\n
    \nChapter  1: Space and Time\nChapter  2: Periodic and Related Phenomena\nChapter  3: Mechanics\nChapter  4: Heat\nChapter  5: Electricity and Magnetism\nChapter  6: Light and Related Electromagnetic Radiations\nChapter  7: Acoustics\nChapter  8: Physical Chemistry\nChapter  9: Atomic and Nuclear Physics\nChapter 10: Nuclear Reactions and Ionizing Radiations\nChapter 11: (not defined in ISO 31-1992)\nChapter 12: Characteristic Numbers\nChapter 13: Solid State Physics\n
    \n
  • \n
  • Conversion functions between SI and other units are available in the subpackage\n Conversions.
  • \n
\n\"" - } - } - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "class", - "class_specifier": { - "long_class_specifier": { - "identifier": "Literature", - "description_string": "Literature", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Icons.References" - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Documentation", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "info", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"\n

This package is based on the following references\n

\n\n
\n
ISO 31-1992:
\n
General principles concerning\n quantities, units and symbols.
 
\n\n
ISO 1000-1992:
\n
SI units and recommendations for the use\n of their multiples and of certain other units.
 
\n\n
Cardarelli F.:
\n
Scientific Unit Conversion - A Practical\n Guide to Metrication. Springer 1997.
\n
\n\n\"" - } - } - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "class", - "class_specifier": { - "long_class_specifier": { - "identifier": "Contact", - "description_string": "Contact", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Icons.Contact" - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Documentation", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "info", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"\n

Main author

\n\n

\nMartin Otter
\nDeutsches Zentrum für Luft- und Raumfahrt e.V. (DLR)
\nInstitut für Systemdynamik und Regelungstechnik (DLR-SR)
\nForschungszentrum Oberpfaffenhofen
\nD-82234 Wessling
\nGermany
\nemail: Martin.Otter@dlr.de\n

\n\n

Acknowledgements

\n\n

\nAstrid Jaschinski, Hubertus Tummescheit and Christian Schweiger\ncontributed to the implementation of this package.\n

\n\"" - } - } - } - } - } - ] - } - } - } - } - ] - } - } - } - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "DocumentationClass", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Documentation", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "info", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"\n

\nLibrary Units is a free Modelica package providing\npredefined types, such as Mass,\nLength, Time.

\n\"" - } - } - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "package", - "class_specifier": { - "long_class_specifier": { - "identifier": "SI", - "description_string": "Library of SI unit definitions", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Icons.Package" - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Angle", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Angle\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"rad\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "displayUnit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"deg\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SolidAngle", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SolidAngle\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"sr\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Length", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Length\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "PathLength", - "value": { - "name": "Length" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Position", - "value": { - "name": "Length" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Distance", - "value": { - "name": "Length", - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Breadth", - "value": { - "name": "Length", - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Height", - "value": { - "name": "Length", - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Thickness", - "value": { - "name": "Length", - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Radius", - "value": { - "name": "Length", - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Diameter", - "value": { - "name": "Length", - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Area", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Area\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Volume", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Volume\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m3\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Time", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Time\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Duration", - "value": { - "name": "Time" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "AngularVelocity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AngularVelocity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"rad/s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "AngularAcceleration", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AngularAcceleration\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"rad/s2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "AngularJerk", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AngularJerk\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"rad/s3\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Velocity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Velocity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m/s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Acceleration", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Acceleration\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m/s2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Jerk", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Jerk\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m/s3\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Period", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Time\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Frequency", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Frequency\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Hz\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "AngularFrequency", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AngularFrequency\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"rad/s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Wavelength", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Wavelength\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "WaveNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"WaveNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m-1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "CircularWaveNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"CircularWaveNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"rad/m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "AmplitudeLevelDifference", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AmplitudeLevelDifference\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"dB\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "PowerLevelDifference", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"PowerLevelDifference\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"dB\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DampingCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"DampingCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"s-1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LogarithmicDecrement", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"LogarithmicDecrement\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1/S\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "AttenuationCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AttenuationCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m-1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "PhaseCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"PhaseCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m-1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "PropagationCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"PropagationCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m-1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Damping", - "value": { - "name": "DampingCoefficient" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Mass", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Mass\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"kg\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Density", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Density\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"kg/m3\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "displayUnit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"g/cm3\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "RelativeDensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"RelativeDensity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SpecificVolume", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SpecificVolume\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m3/kg\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LinearDensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"LinearDensity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"kg/m\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SurfaceDensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SurfaceDensity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"kg/m2\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Momentum", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Momentum\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"kg.m/s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Impulse", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Impulse\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"N.s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "AngularMomentum", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AngularMomentum\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"kg.m2/s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "AngularImpulse", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AngularImpulse\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"N.m.s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MomentOfInertia", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MomentOfInertia\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"kg.m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Inertia", - "value": { - "name": "MomentOfInertia" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Force", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Force\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"N\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "TranslationalSpringConstant", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"TranslationalSpringConstant\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"N/m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "TranslationalDampingConstant", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"TranslationalDampingConstant\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"N.s/m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Weight", - "value": { - "name": "Force" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Torque", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Torque\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"N.m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ElectricalTorqueConstant", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ElectricalTorqueConstant\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"N.m/A\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MomentOfForce", - "value": { - "name": "Torque" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ImpulseFlowRate", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ImpulseFlowRate\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"N\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "AngularImpulseFlowRate", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AngularImpulseFlowRate\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"N.m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "RotationalSpringConstant", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"RotationalSpringConstant\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"N.m/rad\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "RotationalDampingConstant", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"RotationalDampingConstant\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"N.m.s/rad\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Pressure", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Pressure\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Pa\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "displayUnit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"bar\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "AbsolutePressure", - "value": { - "name": "Pressure", - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "nominal", - "modification": { - "equal": true, - "expression": { - "simple_expression": "100000" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "PressureDifference", - "value": { - "name": "Pressure" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "BulkModulus", - "value": { - "name": "AbsolutePressure" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Stress", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Pa\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "NormalStress", - "value": { - "name": "Stress" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ShearStress", - "value": { - "name": "Stress" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Strain", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Strain\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LinearStrain", - "value": { - "name": "Strain" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ShearStrain", - "value": { - "name": "Strain" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "VolumeStrain", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"VolumeStrain\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "PoissonNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"PoissonNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ModulusOfElasticity", - "value": { - "name": "Stress" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ShearModulus", - "value": { - "name": "Stress" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SecondMomentOfArea", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SecondMomentOfArea\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m4\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SecondPolarMomentOfArea", - "value": { - "name": "SecondMomentOfArea" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SectionModulus", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SectionModulus\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m3\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "CoefficientOfFriction", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"CoefficientOfFriction\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DynamicViscosity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"DynamicViscosity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Pa.s\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "KinematicViscosity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"KinematicViscosity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m2/s\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SurfaceTension", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SurfaceTension\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"N/m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Work", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Work\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Energy", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Energy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "EnergyDensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"EnergyDensity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J/m3\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "PotentialEnergy", - "value": { - "name": "Energy" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "KineticEnergy", - "value": { - "name": "Energy" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Power", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Power\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"W\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "EnergyFlowRate", - "value": { - "name": "Power" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "EnthalpyFlowRate", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"EnthalpyFlowRate\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"W\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Efficiency", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Efficiency\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MassFlowRate", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MassFlowRate\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"kg/s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "VolumeFlowRate", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"VolumeFlowRate\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m3/s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MomentumFlux", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MomentumFlux\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"N\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "AngularMomentumFlux", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AngularMomentumFlux\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"N.m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ThermodynamicTemperature", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ThermodynamicTemperature\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"K\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "start", - "modification": { - "equal": true, - "expression": { - "simple_expression": "288.15" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "nominal", - "modification": { - "equal": true, - "expression": { - "simple_expression": "300" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "displayUnit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"degC\"" - } - } - } - } - } - ], - "description": { - "description_string": "Absolute temperature (use type TemperatureDifference for relative temperatures)", - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "absoluteValue", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - } - ] - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Temperature", - "value": { - "name": "ThermodynamicTemperature" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "TemperatureDifference", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ThermodynamicTemperature\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"K\"" - } - } - } - } - } - ], - "description": { - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "absoluteValue", - "modification": { - "equal": true, - "expression": { - "simple_expression": "false" - } - } - } - } - } - ] - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "TemperatureSlope", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"TemperatureSlope\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"K/s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LinearTemperatureCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"LinearTemperatureCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1/K\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "QuadraticTemperatureCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"QuadraticTemperatureCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1/K2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LinearExpansionCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"LinearExpansionCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1/K\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "CubicExpansionCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"CubicExpansionCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1/K\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "RelativePressureCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"RelativePressureCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1/K\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "PressureCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"PressureCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Pa/K\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Compressibility", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Compressibility\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1/Pa\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "IsothermalCompressibility", - "value": { - "name": "Compressibility" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "IsentropicCompressibility", - "value": { - "name": "Compressibility" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Heat", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Energy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "HeatFlowRate", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Power\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"W\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "HeatFlux", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"HeatFlux\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"W/m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DensityOfHeatFlowRate", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"DensityOfHeatFlowRate\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"W/m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ThermalConductivity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ThermalConductivity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"W/(m.K)\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "CoefficientOfHeatTransfer", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"CoefficientOfHeatTransfer\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"W/(m2.K)\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SurfaceCoefficientOfHeatTransfer", - "value": { - "name": "CoefficientOfHeatTransfer" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ThermalInsulance", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ThermalInsulance\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m2.K/W\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ThermalResistance", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ThermalResistance\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"K/W\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ThermalConductance", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ThermalConductance\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"W/K\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ThermalDiffusivity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ThermalDiffusivity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m2/s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "HeatCapacity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"HeatCapacity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J/K\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SpecificHeatCapacity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SpecificHeatCapacity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J/(kg.K)\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SpecificHeatCapacityAtConstantPressure", - "value": { - "name": "SpecificHeatCapacity" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SpecificHeatCapacityAtConstantVolume", - "value": { - "name": "SpecificHeatCapacity" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SpecificHeatCapacityAtSaturation", - "value": { - "name": "SpecificHeatCapacity" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "RatioOfSpecificHeatCapacities", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"RatioOfSpecificHeatCapacities\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "IsentropicExponent", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"IsentropicExponent\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Entropy", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Entropy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J/K\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "EntropyFlowRate", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"EntropyFlowRate\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J/(K.s)\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SpecificEntropy", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SpecificEntropy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J/(kg.K)\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "InternalEnergy", - "value": { - "name": "Heat" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Enthalpy", - "value": { - "name": "Heat" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "HelmholtzFreeEnergy", - "value": { - "name": "Heat" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "GibbsFreeEnergy", - "value": { - "name": "Heat" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SpecificEnergy", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SpecificEnergy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J/kg\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SpecificInternalEnergy", - "value": { - "name": "SpecificEnergy" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SpecificEnthalpy", - "value": { - "name": "SpecificEnergy" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SpecificHelmholtzFreeEnergy", - "value": { - "name": "SpecificEnergy" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SpecificGibbsFreeEnergy", - "value": { - "name": "SpecificEnergy" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MassieuFunction", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MassieuFunction\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J/K\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "PlanckFunction", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"PlanckFunction\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J/K\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DerDensityByEnthalpy", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"kg.s2/m5\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DerDensityByPressure", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"s2/m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DerDensityByTemperature", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"kg/(m3.K)\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DerEnthalpyByPressure", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J.m.s2/kg2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DerEnergyByDensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J.m3/kg\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DerEnergyByPressure", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J.m.s2/kg\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DerPressureByDensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Pa.m3/kg\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DerPressureByTemperature", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Pa/K\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ElectricCurrent", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ElectricCurrent\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"A\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Current", - "value": { - "name": "ElectricCurrent" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "CurrentSlope", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"CurrentSlope\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"A/s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ElectricCharge", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ElectricCharge\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"C\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Charge", - "value": { - "name": "ElectricCharge" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "VolumeDensityOfCharge", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"VolumeDensityOfCharge\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"C/m3\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SurfaceDensityOfCharge", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SurfaceDensityOfCharge\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"C/m2\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ElectricFieldStrength", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ElectricFieldStrength\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"V/m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ElectricPotential", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ElectricPotential\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"V\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Voltage", - "value": { - "name": "ElectricPotential" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "PotentialDifference", - "value": { - "name": "ElectricPotential" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ElectromotiveForce", - "value": { - "name": "ElectricPotential" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "VoltageSecond", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"VoltageSecond\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"V.s\"" - } - } - } - } - } - ], - "description": { - "description_string": "Voltage second" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "VoltageSlope", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"VoltageSlope\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"V/s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ElectricFluxDensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ElectricFluxDensity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"C/m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ElectricFlux", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ElectricFlux\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"C\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Capacitance", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Capacitance\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"F\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "CapacitancePerArea", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"CapacitancePerArea\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"F/m2\"" - } - } - } - } - } - ], - "description": { - "description_string": "Capacitance per area" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Permittivity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Permittivity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"F/m\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "PermittivityOfVacuum", - "value": { - "name": "Permittivity" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "RelativePermittivity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"RelativePermittivity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ElectricSusceptibility", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ElectricSusceptibility\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ElectricPolarization", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ElectricPolarization\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"C/m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Electrization", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Electrization\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"V/m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ElectricDipoleMoment", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ElectricDipoleMoment\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"C.m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "CurrentDensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"CurrentDensity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"A/m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LinearCurrentDensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"LinearCurrentDensity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"A/m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MagneticFieldStrength", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MagneticFieldStrength\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"A/m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MagneticPotential", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MagneticPotential\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"A\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MagneticPotentialDifference", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MagneticPotential\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"A\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MagnetomotiveForce", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MagnetomotiveForce\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"A\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "CurrentLinkage", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"CurrentLinkage\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"A\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MagneticFluxDensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MagneticFluxDensity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"T\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MagneticFlux", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MagneticFlux\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Wb\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MagneticVectorPotential", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MagneticVectorPotential\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Wb/m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Inductance", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Inductance\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"H\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SelfInductance", - "value": { - "name": "Inductance", - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MutualInductance", - "value": { - "name": "Inductance" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "CouplingCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"CouplingCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LeakageCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"LeakageCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Permeability", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Permeability\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"H/m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "PermeabilityOfVacuum", - "value": { - "name": "Permeability" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "RelativePermeability", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"RelativePermeability\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MagneticSusceptibility", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MagneticSusceptibility\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ElectromagneticMoment", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ElectromagneticMoment\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"A.m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MagneticDipoleMoment", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MagneticDipoleMoment\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Wb.m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Magnetization", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Magnetization\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"A/m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MagneticPolarization", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MagneticPolarization\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"T\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ElectromagneticEnergyDensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"EnergyDensity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J/m3\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "PoyntingVector", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"PoyntingVector\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"W/m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Resistance", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Resistance\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Ohm\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Resistivity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Resistivity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Ohm.m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Conductivity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Conductivity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"S/m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Reluctance", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Reluctance\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"H-1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Permeance", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Permeance\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"H\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "PhaseDifference", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Angle\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"rad\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "displayUnit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"deg\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Impedance", - "value": { - "name": "Resistance" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ModulusOfImpedance", - "value": { - "name": "Resistance" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Reactance", - "value": { - "name": "Resistance" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "QualityFactor", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"QualityFactor\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LossAngle", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Angle\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"rad\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "displayUnit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"deg\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Conductance", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Conductance\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"S\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Admittance", - "value": { - "name": "Conductance" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ModulusOfAdmittance", - "value": { - "name": "Conductance" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Susceptance", - "value": { - "name": "Conductance" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "InstantaneousPower", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Power\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"W\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ActivePower", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Power\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"W\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ApparentPower", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Power\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"V.A\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ReactivePower", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Power\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"var\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "PowerFactor", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"PowerFactor\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LinearTemperatureCoefficientResistance", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"LinearTemperatureCoefficientResistance\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Ohm/K\"" - } - } - } - } - } - ], - "description": { - "description_string": "First order temperature coefficient" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "QuadraticTemperatureCoefficientResistance", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"QuadraticTemperatureCoefficientResistance\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Ohm/K2\"" - } - } - } - } - } - ], - "description": { - "description_string": "Second order temperature coefficient" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Transconductance", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Transconductance\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"A/V2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "InversePotential", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"InversePotential\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1/V\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ElectricalForceConstant", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ElectricalForceConstant\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"N/A\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "RadiantEnergy", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Energy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "RadiantEnergyDensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"EnergyDensity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J/m3\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SpectralRadiantEnergyDensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SpectralRadiantEnergyDensity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J/m4\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "RadiantPower", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Power\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"W\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "RadiantEnergyFluenceRate", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"RadiantEnergyFluenceRate\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"W/m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "RadiantIntensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"RadiantIntensity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"W/sr\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Radiance", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Radiance\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"W/(sr.m2)\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "RadiantExitance", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"RadiantExitance\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"W/m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Irradiance", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Irradiance\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"W/m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Emissivity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Emissivity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SpectralEmissivity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SpectralEmissivity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DirectionalSpectralEmissivity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"DirectionalSpectralEmissivity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LuminousIntensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"LuminousIntensity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"cd\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LuminousFlux", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"LuminousFlux\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"lm\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "QuantityOfLight", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"QuantityOfLight\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"lm.s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Luminance", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Luminance\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"cd/m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LuminousExitance", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"LuminousExitance\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"lm/m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Illuminance", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Illuminance\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"lx\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LightExposure", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"LightExposure\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"lx.s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LuminousEfficacy", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"LuminousEfficacy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"lm/W\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SpectralLuminousEfficacy", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SpectralLuminousEfficacy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"lm/W\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LuminousEfficiency", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"LuminousEfficiency\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SpectralLuminousEfficiency", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SpectralLuminousEfficiency\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "CIESpectralTristimulusValues", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"CIESpectralTristimulusValues\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ChromaticityCoordinates", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"CromaticityCoordinates\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SpectralAbsorptionFactor", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SpectralAbsorptionFactor\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SpectralReflectionFactor", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SpectralReflectionFactor\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SpectralTransmissionFactor", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SpectralTransmissionFactor\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SpectralRadianceFactor", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SpectralRadianceFactor\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LinearAttenuationCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AttenuationCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m-1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LinearAbsorptionCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"LinearAbsorptionCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m-1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MolarAbsorptionCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MolarAbsorptionCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m2/mol\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "RefractiveIndex", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"RefractiveIndex\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "StaticPressure", - "value": { - "name": "AbsolutePressure" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SoundPressure", - "value": { - "name": "StaticPressure" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SoundParticleDisplacement", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Length\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SoundParticleVelocity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Velocity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m/s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SoundParticleAcceleration", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Acceleration\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m/s2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "VelocityOfSound", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Velocity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m/s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SoundEnergyDensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"EnergyDensity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J/m3\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SoundPower", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Power\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"W\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SoundIntensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SoundIntensity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"W/m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "AcousticImpedance", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AcousticImpedance\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Pa.s/m3\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SpecificAcousticImpedance", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SpecificAcousticImpedance\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Pa.s/m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MechanicalImpedance", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MechanicalImpedance\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"N.s/m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SoundPressureLevel", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SoundPressureLevel\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"dB\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SoundPowerLevel", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SoundPowerLevel\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"dB\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DissipationCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"DissipationCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ReflectionCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ReflectionCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "TransmissionCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"TransmissionCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "AcousticAbsorptionCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AcousticAbsorptionCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SoundReductionIndex", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SoundReductionIndex\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"dB\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "EquivalentAbsorptionArea", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Area\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ReverberationTime", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Time\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LoudnessLevel", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"LoudnessLevel\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"phon\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Loudness", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Loudness\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"sone\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "RelativeAtomicMass", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"RelativeAtomicMass\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "RelativeMolecularMass", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"RelativeMolecularMass\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "NumberOfMolecules", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"NumberOfMolecules\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "AmountOfSubstance", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AmountOfSubstance\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"mol\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Molality", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Molality\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"mol/kg\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MolalConcentration", - "value": { - "name": "Molality" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MolarMass", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MolarMass\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"kg/mol\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MolarVolume", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MolarVolume\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m3/mol\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MolarDensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MolarDensity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"mol/m3\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Molarity", - "value": { - "name": "MolarDensity" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MolarConcentration", - "value": { - "name": "MolarDensity" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MolarEnergy", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MolarEnergy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J/mol\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "nominal", - "modification": { - "equal": true, - "expression": { - "simple_expression": "20000" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MolarInternalEnergy", - "value": { - "name": "MolarEnergy" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MolarHeatCapacity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MolarHeatCapacity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J/(mol.K)\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MolarEntropy", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MolarEntropy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J/(mol.K)\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MolarEnthalpy", - "value": { - "name": "MolarEnergy" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MolarFlowRate", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MolarFlowRate\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"mol/s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "NumberDensityOfMolecules", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"NumberDensityOfMolecules\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m-3\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MolecularConcentration", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MolecularConcentration\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m-3\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MassConcentration", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MassConcentration\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"kg/m3\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MassFraction", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MassFraction\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "max", - "modification": { - "equal": true, - "expression": { - "simple_expression": "1" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Concentration", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Concentration\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"mol/m3\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "VolumeFraction", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"VolumeFraction\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MoleFraction", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MoleFraction\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "max", - "modification": { - "equal": true, - "expression": { - "simple_expression": "1" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ChemicalPotential", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ChemicalPotential\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J/mol\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "AbsoluteActivity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AbsoluteActivity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "PartialPressure", - "value": { - "name": "AbsolutePressure" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Fugacity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Fugacity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Pa\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "StandardAbsoluteActivity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"StandardAbsoluteActivity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ActivityCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ActivityCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ActivityOfSolute", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ActivityOfSolute\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ActivityCoefficientOfSolute", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ActivityCoefficientOfSolute\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "StandardAbsoluteActivityOfSolute", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"StandardAbsoluteActivityOfSolute\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ActivityOfSolvent", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ActivityOfSolvent\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "OsmoticCoefficientOfSolvent", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"OsmoticCoefficientOfSolvent\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "StandardAbsoluteActivityOfSolvent", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"StandardAbsoluteActivityOfSolvent\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "OsmoticPressure", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Pressure\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Pa\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "displayUnit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"bar\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "min", - "modification": { - "equal": true, - "expression": { - "simple_expression": "0" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "StoichiometricNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"StoichiometricNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Affinity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Affinity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J/mol\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MassOfMolecule", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Mass\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"kg\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ElectricDipoleMomentOfMolecule", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ElectricDipoleMomentOfMolecule\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"C.m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ElectricPolarizabilityOfAMolecule", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ElectricPolarizabilityOfAMolecule\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"C.m2/V\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MicrocanonicalPartitionFunction", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MicrocanonicalPartitionFunction\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "CanonicalPartitionFunction", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"CanonicalPartitionFunction\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "GrandCanonicalPartitionFunction", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"GrandCanonicalPartitionFunction\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MolecularPartitionFunction", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MolecularPartitionFunction\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "StatisticalWeight", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"StatisticalWeight\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MeanFreePath", - "value": { - "name": "Length" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DiffusionCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"DiffusionCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m2/s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ThermalDiffusionRatio", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ThermalDiffusionRatio\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ThermalDiffusionFactor", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ThermalDiffusionFactor\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ThermalDiffusionCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ThermalDiffusionCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m2/s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ElementaryCharge", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ElementaryCharge\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"C\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ChargeNumberOfIon", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ChargeNumberOfIon\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "FaradayConstant", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"FaradayConstant\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"C/mol\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "IonicStrength", - "value": { - "name": "Molality" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DegreeOfDissociation", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"DegreeOfDissociation\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ElectrolyticConductivity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ElectrolyticConductivity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"S/m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MolarConductivity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MolarConductivity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"S.m2/mol\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "TransportNumberOfIonic", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"TransportNumberOfIonic\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ProtonNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ProtonNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "NeutronNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"NeutronNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "NucleonNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"NucleonNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "AtomicMassConstant", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Mass\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"kg\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MassOfElectron", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Mass\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"kg\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MassOfProton", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Mass\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"kg\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MassOfNeutron", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Mass\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"kg\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "HartreeEnergy", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Energy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MagneticMomentOfParticle", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MagneticMomentOfParticle\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"A.m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "BohrMagneton", - "value": { - "name": "MagneticMomentOfParticle" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "NuclearMagneton", - "value": { - "name": "MagneticMomentOfParticle" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "GyromagneticCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"GyromagneticCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"A.m2/(J.s)\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "GFactorOfAtom", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"GFactorOfAtom\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "GFactorOfNucleus", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"GFactorOfNucleus\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LarmorAngularFrequency", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AngularFrequency\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"s-1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "NuclearPrecessionAngularFrequency", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AngularFrequency\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"s-1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "CyclotronAngularFrequency", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AngularFrequency\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"s-1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "NuclearQuadrupoleMoment", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"NuclearQuadrupoleMoment\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "NuclearRadius", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Length\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ElectronRadius", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Length\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ComptonWavelength", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Length\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MassExcess", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Mass\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"kg\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MassDefect", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Mass\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"kg\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "RelativeMassExcess", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"RelativeMassExcess\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "RelativeMassDefect", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"RelativeMassDefect\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "PackingFraction", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"PackingFraction\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "BindingFraction", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"BindingFraction\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MeanLife", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Time\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LevelWidth", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"LevelWidth\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Activity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Activity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Bq\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SpecificActivity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SpecificActivity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Bq/kg\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DecayConstant", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"DecayConstant\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"s-1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "HalfLife", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Time\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "AlphaDisintegrationEnergy", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Energy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MaximumBetaParticleEnergy", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Energy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "BetaDisintegrationEnergy", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Energy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ReactionEnergy", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Energy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ResonanceEnergy", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Energy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "CrossSection", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Area\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "TotalCrossSection", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Area\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "AngularCrossSection", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AngularCrossSection\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m2/sr\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SpectralCrossSection", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SpectralCrossSection\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m2/J\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SpectralAngularCrossSection", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SpectralAngularCrossSection\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m2/(sr.J)\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MacroscopicCrossSection", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MacroscopicCrossSection\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m-1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "TotalMacroscopicCrossSection", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"TotalMacroscopicCrossSection\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m-1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ParticleFluence", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ParticleFluence\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m-2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ParticleFluenceRate", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ParticleFluenceRate\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"s-1.m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "EnergyFluence", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"EnergyFluence\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J/m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "EnergyFluenceRate", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"EnergyFluenceRate\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"W/m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "CurrentDensityOfParticles", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"CurrentDensityOfParticles\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m-2.s-1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MassAttenuationCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MassAttenuationCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m2/kg\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MolarAttenuationCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MolarAttenuationCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m2/mol\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "AtomicAttenuationCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AtomicAttenuationCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "HalfThickness", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Length\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "TotalLinearStoppingPower", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"TotalLinearStoppingPower\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J/m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "TotalAtomicStoppingPower", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"TotalAtomicStoppingPower\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J.m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "TotalMassStoppingPower", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"TotalMassStoppingPower\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J.m2/kg\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MeanLinearRange", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Length\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MeanMassRange", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MeanMassRange\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"kg/m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LinearIonization", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"LinearIonization\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m-1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "TotalIonization", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"TotalIonization\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Mobility", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Mobility\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m2/(V.s)\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "IonNumberDensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"IonNumberDensity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m-3\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "RecombinationCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"RecombinationCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m3/s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "NeutronNumberDensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"NeutronNumberDensity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m-3\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "NeutronSpeed", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Velocity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m/s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "NeutronFluenceRate", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"NeutronFluenceRate\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"s-1.m-2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "TotalNeutronSourceDensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"TotalNeutronSourceDensity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"s-1.m-3\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SlowingDownDensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SlowingDownDensity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"s-1.m-3\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ResonanceEscapeProbability", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ResonanceEscapeProbability\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Lethargy", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Lethargy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SlowingDownArea", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Area\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DiffusionArea", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Area\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MigrationArea", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Area\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SlowingDownLength", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SLength\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DiffusionLength", - "value": { - "name": "Length" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MigrationLength", - "value": { - "name": "Length" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "NeutronYieldPerFission", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"NeutronYieldPerFission\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "NeutronYieldPerAbsorption", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"NeutronYieldPerAbsorption\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "FastFissionFactor", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"FastFissionFactor\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ThermalUtilizationFactor", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ThermalUtilizationFactor\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "NonLeakageProbability", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"NonLeakageProbability\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Reactivity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Reactivity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ReactorTimeConstant", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Time\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "EnergyImparted", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Energy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MeanEnergyImparted", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Energy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SpecificEnergyImparted", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SpecificEnergy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Gy\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "AbsorbedDose", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AbsorbedDose\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Gy\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DoseEquivalent", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"DoseEquivalent\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Sv\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "AbsorbedDoseRate", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AbsorbedDoseRate\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Gy/s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LinearEnergyTransfer", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"LinearEnergyTransfer\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J/m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Kerma", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Kerma\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Gy\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "KermaRate", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"KermaRate\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Gy/s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MassEnergyTransferCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MassEnergyTransferCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m2/kg\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Exposure", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Exposure\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"C/kg\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ExposureRate", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ExposureRate\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"C/(kg.s)\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ReynoldsNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ReynoldsNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "EulerNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"EulerNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "FroudeNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"FroudeNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "GrashofNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"GrashofNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "WeberNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"WeberNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MachNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MachNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "KnudsenNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"KnudsenNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "StrouhalNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"StrouhalNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "FourierNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"FourierNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "PecletNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"PecletNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "RayleighNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"RayleighNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "NusseltNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"NusseltNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "BiotNumber", - "value": { - "name": "NusseltNumber" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "StantonNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"StantonNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "FourierNumberOfMassTransfer", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"FourierNumberOfMassTransfer\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "PecletNumberOfMassTransfer", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"PecletNumberOfMassTransfer\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "GrashofNumberOfMassTransfer", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"GrashofNumberOfMassTransfer\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "NusseltNumberOfMassTransfer", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"NusseltNumberOfMassTransfer\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "StantonNumberOfMassTransfer", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"StantonNumberOfMassTransfer\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "PrandtlNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"PrandtlNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SchmidtNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SchmidtNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LewisNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"LewisNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MagneticReynoldsNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MagneticReynoldsNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "AlfvenNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AlfvenNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "HartmannNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"HartmannNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "CowlingNumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"CowlingNumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "BraggAngle", - "value": { - "name": "Angle" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "OrderOfReflexion", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"OrderOfReflexion\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ShortRangeOrderParameter", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"RangeOrderParameter\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LongRangeOrderParameter", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"RangeOrderParameter\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DebyeWallerFactor", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"DebyeWallerFactor\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "CircularWavenumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"CircularWavenumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m-1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "FermiCircularWavenumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"FermiCircularWavenumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m-1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DebyeCircularWavenumber", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"DebyeCircularWavenumber\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m-1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DebyeCircularFrequency", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AngularFrequency\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"s-1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DebyeTemperature", - "value": { - "name": "ThermodynamicTemperature" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SpectralConcentration", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SpectralConcentration\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"s/m3\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "GrueneisenParameter", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"GrueneisenParameter\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MadelungConstant", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MadelungConstant\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DensityOfStates", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"DensityOfStates\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"J-1/m-3\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ResidualResistivity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ResidualResistivity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Ohm.m\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LorenzCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"LorenzCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"V2/K2\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "HallCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"HallCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m3/C\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ThermoelectromotiveForce", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ThermoelectromotiveForce\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"V\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "SeebeckCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"SeebeckCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"V/K\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "PeltierCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"PeltierCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"V\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ThomsonCoefficient", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ThomsonCoefficient\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"V/K\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "RichardsonConstant", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"RichardsonConstant\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"A/(m2.K2)\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "FermiEnergy", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Energy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"eV\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "GapEnergy", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Energy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"eV\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DonorIonizationEnergy", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Energy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"eV\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "AcceptorIonizationEnergy", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Energy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"eV\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ActivationEnergy", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Energy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"eV\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "FermiTemperature", - "value": { - "name": "ThermodynamicTemperature" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ElectronNumberDensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ElectronNumberDensity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m-3\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "HoleNumberDensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"HoleNumberDensity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m-3\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "IntrinsicNumberDensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"IntrinsicNumberDensity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m-3\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DonorNumberDensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"DonorNumberDensity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m-3\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "AcceptorNumberDensity", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AcceptorNumberDensity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"m-3\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "EffectiveMass", - "value": { - "name": "Mass" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MobilityRatio", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MobilityRatio\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "RelaxationTime", - "value": { - "name": "Time" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "CarrierLifeTime", - "value": { - "name": "Time" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ExchangeIntegral", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Energy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"eV\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "CurieTemperature", - "value": { - "name": "ThermodynamicTemperature" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "NeelTemperature", - "value": { - "name": "ThermodynamicTemperature" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LondonPenetrationDepth", - "value": { - "name": "Length" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "CoherenceLength", - "value": { - "name": "Length" - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "LandauGinzburgParameter", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"LandauGinzburgParameter\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "FluxoidQuantum", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"FluxoidQuantum\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Wb\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "TimeAging", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1/Modelica.Units.SI.Time\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1/s\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ChargeAging", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1/Modelica.Units.SI.ElectricCharge\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1/(A.s)\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "PerUnit", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "DimensionlessRatio", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "operator record", - "class_specifier": { - "short_class_specifier": { - "identifier": "ComplexCurrent", - "value": { - "name": "Complex", - "class_modification": [ - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.Current", - "component_declaration1": { - "declaration": { - "identifier": "re" - }, - "description": { - "description_string": "Real part of complex current" - } - } - } - } - }, - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.Current", - "component_declaration1": { - "declaration": { - "identifier": "im" - }, - "description": { - "description_string": "Imaginary part of complex current" - } - } - } - } - } - ], - "description": { - "description_string": "Complex electric current" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "operator record", - "class_specifier": { - "short_class_specifier": { - "identifier": "ComplexCurrentSlope", - "value": { - "name": "Complex", - "class_modification": [ - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.CurrentSlope", - "component_declaration1": { - "declaration": { - "identifier": "re" - }, - "description": { - "description_string": "Real part of complex current slope" - } - } - } - } - }, - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.CurrentSlope", - "component_declaration1": { - "declaration": { - "identifier": "im" - }, - "description": { - "description_string": "Imaginary part of complex current slope" - } - } - } - } - } - ], - "description": { - "description_string": "Complex current slope" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "operator record", - "class_specifier": { - "short_class_specifier": { - "identifier": "ComplexCurrentDensity", - "value": { - "name": "Complex", - "class_modification": [ - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.CurrentDensity", - "component_declaration1": { - "declaration": { - "identifier": "re" - }, - "description": { - "description_string": "Real part of complex current density" - } - } - } - } - }, - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.CurrentDensity", - "component_declaration1": { - "declaration": { - "identifier": "im" - }, - "description": { - "description_string": "Imaginary part of complex current density" - } - } - } - } - } - ], - "description": { - "description_string": "Complex electric current density" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "operator record", - "class_specifier": { - "short_class_specifier": { - "identifier": "ComplexElectricPotential", - "value": { - "name": "Complex", - "class_modification": [ - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.ElectricPotential", - "component_declaration1": { - "declaration": { - "identifier": "re" - }, - "description": { - "description_string": "Imaginary part of complex electric potential" - } - } - } - } - }, - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.ElectricPotential", - "component_declaration1": { - "declaration": { - "identifier": "im" - }, - "description": { - "description_string": "Real part of complex electric potential" - } - } - } - } - } - ], - "description": { - "description_string": "Complex electric potential" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "operator record", - "class_specifier": { - "short_class_specifier": { - "identifier": "ComplexPotentialDifference", - "value": { - "name": "Complex", - "class_modification": [ - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.PotentialDifference", - "component_declaration1": { - "declaration": { - "identifier": "re" - }, - "description": { - "description_string": "Real part of complex potential difference" - } - } - } - } - }, - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.PotentialDifference", - "component_declaration1": { - "declaration": { - "identifier": "im" - }, - "description": { - "description_string": "Imaginary part of complex potential difference" - } - } - } - } - } - ], - "description": { - "description_string": "Complex electric potential difference" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "operator record", - "class_specifier": { - "short_class_specifier": { - "identifier": "ComplexVoltage", - "value": { - "name": "Complex", - "class_modification": [ - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.Voltage", - "component_declaration1": { - "declaration": { - "identifier": "re" - }, - "description": { - "description_string": "Imaginary part of complex voltage" - } - } - } - } - }, - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.Voltage", - "component_declaration1": { - "declaration": { - "identifier": "im" - }, - "description": { - "description_string": "Real part of complex voltage" - } - } - } - } - } - ], - "description": { - "description_string": "Complex electric voltage" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "operator record", - "class_specifier": { - "short_class_specifier": { - "identifier": "ComplexVoltageSlope", - "value": { - "name": "Complex", - "class_modification": [ - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.VoltageSlope", - "component_declaration1": { - "declaration": { - "identifier": "re" - }, - "description": { - "description_string": "Real part of complex voltage slope" - } - } - } - } - }, - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.VoltageSlope", - "component_declaration1": { - "declaration": { - "identifier": "im" - }, - "description": { - "description_string": "Imaginary part of complex voltage slope" - } - } - } - } - } - ], - "description": { - "description_string": "Complex voltage slope" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "operator record", - "class_specifier": { - "short_class_specifier": { - "identifier": "ComplexElectricFieldStrength", - "value": { - "name": "Complex", - "class_modification": [ - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.ElectricFieldStrength", - "component_declaration1": { - "declaration": { - "identifier": "re" - }, - "description": { - "description_string": "Real part of complex electric field strength" - } - } - } - } - }, - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.ElectricFieldStrength", - "component_declaration1": { - "declaration": { - "identifier": "im" - }, - "description": { - "description_string": "Imaginary part of complex electric field strength" - } - } - } - } - } - ], - "description": { - "description_string": "Complex electric field strength" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "operator record", - "class_specifier": { - "short_class_specifier": { - "identifier": "ComplexElectricFluxDensity", - "value": { - "name": "Complex", - "class_modification": [ - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.ElectricFluxDensity", - "component_declaration1": { - "declaration": { - "identifier": "re" - }, - "description": { - "description_string": "Real part of complex electric flux density" - } - } - } - } - }, - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.ElectricFluxDensity", - "component_declaration1": { - "declaration": { - "identifier": "im" - }, - "description": { - "description_string": "Imaginary part of complex electric flux density" - } - } - } - } - } - ], - "description": { - "description_string": "Complex electric flux density" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "operator record", - "class_specifier": { - "short_class_specifier": { - "identifier": "ComplexElectricFlux", - "value": { - "name": "Complex", - "class_modification": [ - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.ElectricFlux", - "component_declaration1": { - "declaration": { - "identifier": "re" - }, - "description": { - "description_string": "Real part of complex electric flux" - } - } - } - } - }, - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.ElectricFlux", - "component_declaration1": { - "declaration": { - "identifier": "im" - }, - "description": { - "description_string": "Imaginary part of complex electric flux" - } - } - } - } - } - ], - "description": { - "description_string": "Complex electric flux" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "operator record", - "class_specifier": { - "short_class_specifier": { - "identifier": "ComplexMagneticFieldStrength", - "value": { - "name": "Complex", - "class_modification": [ - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.MagneticFieldStrength", - "component_declaration1": { - "declaration": { - "identifier": "re" - }, - "description": { - "description_string": "Real part of complex magnetic field strength" - } - } - } - } - }, - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.MagneticFieldStrength", - "component_declaration1": { - "declaration": { - "identifier": "im" - }, - "description": { - "description_string": "Imaginary part of complex magnetic field strength" - } - } - } - } - } - ], - "description": { - "description_string": "Complex magnetic field strength" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "operator record", - "class_specifier": { - "short_class_specifier": { - "identifier": "ComplexMagneticPotential", - "value": { - "name": "Complex", - "class_modification": [ - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.MagneticPotential", - "component_declaration1": { - "declaration": { - "identifier": "re" - }, - "description": { - "description_string": "Real part of complex magnetic potential" - } - } - } - } - }, - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.MagneticPotential", - "component_declaration1": { - "declaration": { - "identifier": "im" - }, - "description": { - "description_string": "Imaginary part of complex magnetic potential" - } - } - } - } - } - ], - "description": { - "description_string": "Complex magnetic potential" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "operator record", - "class_specifier": { - "short_class_specifier": { - "identifier": "ComplexMagneticPotentialDifference", - "value": { - "name": "Complex", - "class_modification": [ - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.MagneticPotentialDifference", - "component_declaration1": { - "declaration": { - "identifier": "re" - }, - "description": { - "description_string": "Real part of complex magnetic potential difference" - } - } - } - } - }, - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.MagneticPotentialDifference", - "component_declaration1": { - "declaration": { - "identifier": "im" - }, - "description": { - "description_string": "Imaginary part of complex magnetic potential difference" - } - } - } - } - } - ], - "description": { - "description_string": "Complex magnetic potential difference" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "operator record", - "class_specifier": { - "short_class_specifier": { - "identifier": "ComplexMagnetomotiveForce", - "value": { - "name": "Complex", - "class_modification": [ - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.MagnetomotiveForce", - "component_declaration1": { - "declaration": { - "identifier": "re" - }, - "description": { - "description_string": "Real part of complex magnetomotive force" - } - } - } - } - }, - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.MagnetomotiveForce", - "component_declaration1": { - "declaration": { - "identifier": "im" - }, - "description": { - "description_string": "Imaginary part of complex magnetomotive force" - } - } - } - } - } - ], - "description": { - "description_string": "Complex magnetomotive force" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "operator record", - "class_specifier": { - "short_class_specifier": { - "identifier": "ComplexMagneticFluxDensity", - "value": { - "name": "Complex", - "class_modification": [ - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.MagneticFluxDensity", - "component_declaration1": { - "declaration": { - "identifier": "re" - }, - "description": { - "description_string": "Real part of complex magnetic flux density" - } - } - } - } - }, - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.MagneticFluxDensity", - "component_declaration1": { - "declaration": { - "identifier": "im" - }, - "description": { - "description_string": "Imaginary part of complex magnetic flux density" - } - } - } - } - } - ], - "description": { - "description_string": "Complex magnetic flux density" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "operator record", - "class_specifier": { - "short_class_specifier": { - "identifier": "ComplexMagneticFlux", - "value": { - "name": "Complex", - "class_modification": [ - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.MagneticFlux", - "component_declaration1": { - "declaration": { - "identifier": "re" - }, - "description": { - "description_string": "Real part of complex magnetic flux" - } - } - } - } - }, - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.MagneticFlux", - "component_declaration1": { - "declaration": { - "identifier": "im" - }, - "description": { - "description_string": "Imaginary part of complex magnetic flux" - } - } - } - } - } - ], - "description": { - "description_string": "Complex magnetic flux" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "operator record", - "class_specifier": { - "short_class_specifier": { - "identifier": "ComplexReluctance", - "value": { - "name": "Complex", - "class_modification": [ - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.Reluctance", - "component_declaration1": { - "declaration": { - "identifier": "re" - }, - "description": { - "description_string": "Real part of complex reluctance" - } - } - } - } - }, - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Modelica.Units.SI.Reluctance", - "component_declaration1": { - "declaration": { - "identifier": "im" - }, - "description": { - "description_string": "Imaginary part of complex reluctance" - } - } - } - } - } - ], - "description": { - "description_string": "Complex reluctance", - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Documentation", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "info", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"\n

\nSince magnetic material properties like reluctance and permeance often are anisotropic resp. salient,\na special operator instead of multiplication (compare: tensor vs. vector) is required.\nModelica.Magnetic.FundamentalWave uses a\nspecial record Salient\nwhich is only valid in the rotor-fixed coordinate system.\n

\n

\nNote: To avoid confusion, no magnetic material properties should be defined as Complex units.\n

\n\"" - } - } - } - } - } - ] - } - } - } - } - ] - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "operator record", - "class_specifier": { - "short_class_specifier": { - "identifier": "ComplexImpedance", - "value": { - "name": "Complex", - "class_modification": [ - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Resistance", - "component_declaration1": { - "declaration": { - "identifier": "re" - }, - "description": { - "description_string": "Real part of complex impedance (resistance)" - } - } - } - } - }, - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Reactance", - "component_declaration1": { - "declaration": { - "identifier": "im" - }, - "description": { - "description_string": "Imaginary part of complex impedance (reactance)" - } - } - } - } - } - ], - "description": { - "description_string": "Complex impedance" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "operator record", - "class_specifier": { - "short_class_specifier": { - "identifier": "ComplexAdmittance", - "value": { - "name": "Complex", - "class_modification": [ - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Conductance", - "component_declaration1": { - "declaration": { - "identifier": "re" - }, - "description": { - "description_string": "Real part of complex admittance (conductance)" - } - } - } - } - }, - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "Susceptance", - "component_declaration1": { - "declaration": { - "identifier": "im" - }, - "description": { - "description_string": "Imaginary part of complex admittance (susceptance)" - } - } - } - } - } - ], - "description": { - "description_string": "Complex admittance" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "operator record", - "class_specifier": { - "short_class_specifier": { - "identifier": "ComplexPower", - "value": { - "name": "Complex", - "class_modification": [ - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "ActivePower", - "component_declaration1": { - "declaration": { - "identifier": "re" - }, - "description": { - "description_string": "Real part of complex apparent power (active power)" - } - } - } - } - }, - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "ReactivePower", - "component_declaration1": { - "declaration": { - "identifier": "im" - }, - "description": { - "description_string": "Imaginary part of complex apparent power (reactive power)" - } - } - } - } - } - ], - "description": { - "description_string": "Complex apparent power" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "operator record", - "class_specifier": { - "short_class_specifier": { - "identifier": "ComplexPerUnit", - "value": { - "name": "Complex", - "class_modification": [ - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "PerUnit", - "component_declaration1": { - "declaration": { - "identifier": "re" - }, - "description": { - "description_string": "Real part of complex per unit quantity" - } - } - } - } - }, - { - "element_redeclaration": { - "component_clause1": { - "type_specifier": "PerUnit", - "component_declaration1": { - "declaration": { - "identifier": "im" - }, - "description": { - "description_string": "Imaginary part of complex per unit quantity" - } - } - } - } - } - ], - "description": { - "description_string": "Complex per unit" - } - } - } - } - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -80, - "y": 80 - }, - { - "x": 80, - "y": -78 - } - ], - "textString": "\"SI\"", - "fontName": "\"serif\"", - "textColor": { - "r": 128, - "g": 128, - "b": 128 - }, - "fillColor": { - "r": 128, - "g": 128, - "b": 128 - }, - "fillPattern": "FillPattern.None" - } - } - ] - } - } - } - ] - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Documentation", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "info", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"\n

This package provides predefined types based on the international standard\non units.\n

\n

\nFor an introduction to the conventions used in this package, have a look at:\nConventions.\n

\n\"" - } - } - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "package", - "class_specifier": { - "long_class_specifier": { - "identifier": "NonSI", - "description_string": "Type definitions of non SI and other units", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Icons.Package" - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Temperature_degC", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ThermodynamicTemperature\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"degC\"" - } - } - } - } - } - ], - "description": { - "description_string": "Absolute temperature in degree Celsius (for relative temperature use Modelica.Units.SI.TemperatureDifference)", - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "absoluteValue", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - } - ] - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Temperature_degF", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ThermodynamicTemperature\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"degF\"" - } - } - } - } - } - ], - "description": { - "description_string": "Absolute temperature in degree Fahrenheit (for relative temperature use Modelica.Units.SI.TemperatureDifference)", - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "absoluteValue", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - } - ] - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Temperature_degRk", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ThermodynamicTemperature\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"degRk\"" - } - } - } - } - } - ], - "description": { - "description_string": "Absolute temperature in degree Rankine (for relative temperature use Modelica.Units.SI.TemperatureDifference)", - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "absoluteValue", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - } - ] - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Angle_deg", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Angle\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"deg\"" - } - } - } - } - } - ], - "description": { - "description_string": "Angle in degree" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "AngularVelocity_rpm", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AngularVelocity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"rev/min\"" - } - } - } - } - } - ], - "description": { - "description_string": "Angular velocity in revolutions per minute. Alias unit names that are outside of the SI system: rpm, r/min, rev/min" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Velocity_kmh", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Velocity\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"km/h\"" - } - } - } - } - } - ], - "description": { - "description_string": "Velocity in kilometres per hour" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Time_day", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Time\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"d\"" - } - } - } - } - } - ], - "description": { - "description_string": "Time in days" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Time_hour", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Time\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"h\"" - } - } - } - } - } - ], - "description": { - "description_string": "Time in hours" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Time_minute", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Time\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"min\"" - } - } - } - } - } - ], - "description": { - "description_string": "Time in minutes" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Volume_litre", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Volume\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"l\"" - } - } - } - } - } - ], - "description": { - "description_string": "Volume in litres" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "ElectricCharge_Ah", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"ElectricCharge\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"A.h\"" - } - } - } - } - } - ], - "description": { - "description_string": "Electric charge in Ampere hours" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Energy_Wh", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Energy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"W.h\"" - } - } - } - } - } - ], - "description": { - "description_string": "Energy in Watt hours" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Energy_kWh", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Energy\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"kW.h\"" - } - } - } - } - } - ], - "description": { - "description_string": "Energy in kilo watt hours" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Pressure_bar", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Pressure\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"bar\"" - } - } - } - } - } - ], - "description": { - "description_string": "Absolute pressure in bar" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "MassFlowRate_gps", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"MassFlowRate\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"g/s\"" - } - } - } - } - } - ], - "description": { - "description_string": "Mass flow rate in gram per second" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Area_cm", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"Area\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"cm2\"" - } - } - } - } - } - ], - "description": { - "description_string": "Area in cm" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "PerArea_cm", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"PerArea\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1/cm2\"" - } - } - } - } - } - ], - "description": { - "description_string": "Per Area in cm" - } - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "type", - "class_specifier": { - "short_class_specifier": { - "identifier": "Area_cmPerVoltageSecond", - "value": { - "name": "Real", - "class_modification": [ - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "quantity", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"AreaPerVoltageSecond\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "final": true, - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"cm2/(V.s)\"" - } - } - } - } - } - ], - "description": { - "description_string": "Area in cm per voltage second" - } - } - } - } - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Documentation", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "info", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"\n

\nThis package provides predefined types, such as Angle_deg (angle in\ndegree), AngularVelocity_rpm (angular velocity in revolutions per\nminute) or Temperature_degF (temperature in degree Fahrenheit),\nwhich are in common use but are not part of the international standard on\nunits according to ISO 31-1992 \\\"General principles concerning quantities,\nunits and symbols\\\" and ISO 1000-1992 \\\"SI units and recommendations for\nthe use of their multiples and of certain other units\\\".

\n

If possible, the types in this package should not be used. Use instead\ntypes of package Modelica.Units.SI. For more information on units, see also\nthe book of Francois Cardarelli Scientific Unit Conversion - A\nPractical Guide to Metrication (Springer 1997).

\n\"" - } - } - } - } - } - ] - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ] - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Ellipse", - "attribute": { - "extent": [ - { - "x": -10, - "y": 10 - }, - { - "x": 10, - "y": -10 - } - ], - "lineColor": { - "r": 128, - "g": 128, - "b": 128 - }, - "fillColor": { - "r": 128, - "g": 128, - "b": 128 - }, - "fillPattern": "FillPattern.Solid" - } - }, - { - "name": "Ellipse", - "attribute": { - "extent": [ - { - "x": -60, - "y": 10 - }, - { - "x": -40, - "y": -10 - } - ], - "lineColor": { - "r": 128, - "g": 128, - "b": 128 - }, - "fillColor": { - "r": 128, - "g": 128, - "b": 128 - }, - "fillPattern": "FillPattern.Solid" - } - }, - { - "name": "Ellipse", - "attribute": { - "extent": [ - { - "x": 40, - "y": 10 - }, - { - "x": 60, - "y": -10 - } - ], - "lineColor": { - "r": 128, - "g": 128, - "b": 128 - }, - "fillColor": { - "r": 128, - "g": 128, - "b": 128 - }, - "fillPattern": "FillPattern.Solid" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "package", - "class_specifier": { - "long_class_specifier": { - "identifier": "Conversions", - "description_string": "Conversion functions to/from non SI units and type definitions of non SI units", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Icons.Package" - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "to_unit1", - "description_string": "Change the unit of a Real number to unit=\\\"1\\\"", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "Real", - "component_list": [ - { - "declaration": { - "identifier": "r" - }, - "description": { - "description_string": "Real number" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "Real", - "component_list": [ - { - "declaration": { - "identifier": "result", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "unit", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"1\"" - } - } - } - } - } - ] - } - }, - "description": { - "description_string": "Real number r with unit=\\\"1\\\"" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "result" - } - ], - "value": { - "simple_expression": "r" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Documentation", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "info", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"\n

Syntax

\n
\nModelica.Units.Conversions.to_unit1(r);\n
\n

Description

\n

\nThe function call \\\"Conversions.to_unit1(r)\\\" returns r with unit=\\\"1\\\".\n

\n

Example

\n
\nModelica.Units.SI.Velocity v = {3,2,1};\nReal direction[3](unit=\\\"1\\\") = to_unit1(v);   // Automatically vectorized call of to_unit1\n
\n\"" - } - } - } - } - } - ] - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "false" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -90, - "y": 86 - }, - { - "x": 32, - "y": 50 - } - ], - "textString": "\"any\"", - "horizontalAlignment": "TextAlignment.Left" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -36, - "y": -52 - }, - { - "x": 86, - "y": -88 - } - ], - "textString": "\"1\"", - "horizontalAlignment": "TextAlignment.Right" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "to_degC", - "description_string": "Convert from kelvin to degree Celsius", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "SI.Temperature", - "component_list": [ - { - "declaration": { - "identifier": "Kelvin" - }, - "description": { - "description_string": "Value in kelvin" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "Modelica.Units.NonSI.Temperature_degC", - "component_list": [ - { - "declaration": { - "identifier": "Celsius" - }, - "description": { - "description_string": "Value in degree Celsius" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "Celsius" - } - ], - "value": { - "simple_expression": "Kelvin +Modelica.Constants.T_zero" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -20, - "y": 100 - }, - { - "x": -100, - "y": 20 - } - ], - "textString": "\"K\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -20 - }, - { - "x": 20, - "y": -100 - } - ], - "textString": "\"degC\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "from_degC", - "description_string": "Convert from degree Celsius to kelvin", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "Modelica.Units.NonSI.Temperature_degC", - "component_list": [ - { - "declaration": { - "identifier": "Celsius" - }, - "description": { - "description_string": "Value in degree Celsius" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "SI.Temperature", - "component_list": [ - { - "declaration": { - "identifier": "Kelvin" - }, - "description": { - "description_string": "Value in kelvin" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "Kelvin" - } - ], - "value": { - "simple_expression": "Celsius -Modelica.Constants.T_zero" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -20, - "y": 100 - }, - { - "x": -100, - "y": 20 - } - ], - "textString": "\"degC\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -20 - }, - { - "x": 20, - "y": -100 - } - ], - "textString": "\"K\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "to_degF", - "description_string": "Convert from kelvin to degree Fahrenheit", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "SI.Temperature", - "component_list": [ - { - "declaration": { - "identifier": "Kelvin" - }, - "description": { - "description_string": "Value in kelvin" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "Modelica.Units.NonSI.Temperature_degF", - "component_list": [ - { - "declaration": { - "identifier": "Fahrenheit" - }, - "description": { - "description_string": "Value in degree Fahrenheit" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "Fahrenheit" - } - ], - "value": { - "simple_expression": { - "addOps": [ - "+" - ], - "terms": [ - { - "operators": [ - "*" - ], - "factors": [ - { - "primary1": [ - { - "simple_expression": "Kelvin +Modelica.Constants.T_zero" - } - ] - }, - { - "primary1": [ - { - "simple_expression": "9/5" - } - ] - } - ] - }, - "32" - ] - } - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -20, - "y": 100 - }, - { - "x": -100, - "y": 20 - } - ], - "textString": "\"K\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -20 - }, - { - "x": 20, - "y": -100 - } - ], - "textString": "\"degF\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "from_degF", - "description_string": "Convert from degree Fahrenheit to kelvin", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "Modelica.Units.NonSI.Temperature_degF", - "component_list": [ - { - "declaration": { - "identifier": "Fahrenheit" - }, - "description": { - "description_string": "Value in degree Fahrenheit" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "SI.Temperature", - "component_list": [ - { - "declaration": { - "identifier": "Kelvin" - }, - "description": { - "description_string": "Value in kelvin" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "Kelvin" - } - ], - "value": { - "simple_expression": { - "addOps": [ - "-" - ], - "terms": [ - { - "operators": [ - "*" - ], - "factors": [ - { - "primary1": [ - { - "simple_expression": "Fahrenheit -32" - } - ] - }, - { - "primary1": [ - { - "simple_expression": "5/9" - } - ] - } - ] - }, - "Modelica.Constants.T_zero" - ] - } - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -20, - "y": 100 - }, - { - "x": -100, - "y": 20 - } - ], - "textString": "\"degF\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -20 - }, - { - "x": 20, - "y": -100 - } - ], - "textString": "\"K\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -20, - "y": 100 - }, - { - "x": -100, - "y": 20 - } - ], - "textString": "\"degF\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "to_degRk", - "description_string": "Convert from kelvin to degree Rankine", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "SI.Temperature", - "component_list": [ - { - "declaration": { - "identifier": "Kelvin" - }, - "description": { - "description_string": "Value in kelvin" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "Modelica.Units.NonSI.Temperature_degRk", - "component_list": [ - { - "declaration": { - "identifier": "Rankine" - }, - "description": { - "description_string": "Value in degree Rankine" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "Rankine" - } - ], - "value": { - "simple_expression": { - "terms": [ - { - "operators": [ - "*" - ], - "factors": [ - { - "primary1": [ - { - "simple_expression": "9/5" - } - ] - }, - "Kelvin" - ] - } - ] - } - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -20, - "y": 100 - }, - { - "x": -100, - "y": 20 - } - ], - "textString": "\"K\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -32 - }, - { - "x": -18, - "y": -100 - } - ], - "textString": "\"degRk\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "from_degRk", - "description_string": "Convert from degree Rankine to kelvin", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "Modelica.Units.NonSI.Temperature_degRk", - "component_list": [ - { - "declaration": { - "identifier": "Rankine" - }, - "description": { - "description_string": "Value in degree Rankine" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "SI.Temperature", - "component_list": [ - { - "declaration": { - "identifier": "Kelvin" - }, - "description": { - "description_string": "Value in kelvin" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "Kelvin" - } - ], - "value": { - "simple_expression": { - "terms": [ - { - "operators": [ - "*" - ], - "factors": [ - { - "primary1": [ - { - "simple_expression": "5/9" - } - ] - }, - "Rankine" - ] - } - ] - } - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -8, - "y": 100 - }, - { - "x": -100, - "y": 42 - } - ], - "textString": "\"degRk\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -20 - }, - { - "x": 20, - "y": -100 - } - ], - "textString": "\"K\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "to_deg", - "description_string": "Convert from radian to degree", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "SI.Angle", - "component_list": [ - { - "declaration": { - "identifier": "radian" - }, - "description": { - "description_string": "Value in radian" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "Modelica.Units.NonSI.Angle_deg", - "component_list": [ - { - "declaration": { - "identifier": "degree" - }, - "description": { - "description_string": "Value in degree" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "degree" - } - ], - "value": { - "simple_expression": { - "terms": [ - { - "operators": [ - "*" - ], - "factors": [ - { - "primary1": [ - { - "simple_expression": "180/Modelica.Constants.pi" - } - ] - }, - "radian" - ] - } - ] - } - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 10, - "y": 100 - }, - { - "x": -100, - "y": 46 - } - ], - "textString": "\"rad\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -44 - }, - { - "x": -10, - "y": -100 - } - ], - "textString": "\"deg\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "from_deg", - "description_string": "Convert from degree to radian", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "Modelica.Units.NonSI.Angle_deg", - "component_list": [ - { - "declaration": { - "identifier": "degree" - }, - "description": { - "description_string": "Value in degree" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "SI.Angle", - "component_list": [ - { - "declaration": { - "identifier": "radian" - }, - "description": { - "description_string": "Value in radian" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "radian" - } - ], - "value": { - "simple_expression": { - "terms": [ - { - "operators": [ - "*" - ], - "factors": [ - { - "primary1": [ - { - "simple_expression": "Modelica.Constants.pi/180" - } - ] - }, - "degree" - ] - } - ] - } - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 4, - "y": 100 - }, - { - "x": -102, - "y": 46 - } - ], - "textString": "\"deg\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -32 - }, - { - "x": -18, - "y": -100 - } - ], - "textString": "\"rad\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "to_rpm", - "description_string": "Convert from radian per second to revolutions per minute", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "SI.AngularVelocity", - "component_list": [ - { - "declaration": { - "identifier": "rs" - }, - "description": { - "description_string": "Value in radian per second" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "Modelica.Units.NonSI.AngularVelocity_rpm", - "component_list": [ - { - "declaration": { - "identifier": "rpm" - }, - "description": { - "description_string": "Value in revolutions per minute" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "rpm" - } - ], - "value": { - "simple_expression": { - "terms": [ - { - "operators": [ - "*" - ], - "factors": [ - { - "primary1": [ - { - "simple_expression": "30/Modelica.Constants.pi" - } - ] - }, - "rs" - ] - } - ] - } - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 30, - "y": 100 - }, - { - "x": -100, - "y": 50 - } - ], - "textString": "\"rad/s\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -52 - }, - { - "x": -40, - "y": -98 - } - ], - "textString": "\"rev/min\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "from_rpm", - "description_string": "Convert from revolutions per minute to radian per second", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "Modelica.Units.NonSI.AngularVelocity_rpm", - "component_list": [ - { - "declaration": { - "identifier": "rpm" - }, - "description": { - "description_string": "Value in revolutions per minute" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "SI.AngularVelocity", - "component_list": [ - { - "declaration": { - "identifier": "rs" - }, - "description": { - "description_string": "Value in radian per second" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "rs" - } - ], - "value": { - "simple_expression": { - "terms": [ - { - "operators": [ - "*" - ], - "factors": [ - { - "primary1": [ - { - "simple_expression": "Modelica.Constants.pi/30" - } - ] - }, - "rpm" - ] - } - ] - } - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 14, - "y": 100 - }, - { - "x": -102, - "y": 56 - } - ], - "textString": "\"rev/min\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -56 - }, - { - "x": -32, - "y": -102 - } - ], - "textString": "\"rad/s\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "to_kmh", - "description_string": "Convert from metre per second to kilometre per hour", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "SI.Velocity", - "component_list": [ - { - "declaration": { - "identifier": "ms" - }, - "description": { - "description_string": "Value in metre per second" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "Modelica.Units.NonSI.Velocity_kmh", - "component_list": [ - { - "declaration": { - "identifier": "kmh" - }, - "description": { - "description_string": "Value in kilometre per hour" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "kmh" - } - ], - "value": { - "simple_expression": "3.6*ms" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 8, - "y": 100 - }, - { - "x": -100, - "y": 58 - } - ], - "textString": "\"m/s\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -56 - }, - { - "x": -16, - "y": -100 - } - ], - "textString": "\"km/h\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "from_kmh", - "description_string": "Convert from kilometre per hour to metre per second", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "Modelica.Units.NonSI.Velocity_kmh", - "component_list": [ - { - "declaration": { - "identifier": "kmh" - }, - "description": { - "description_string": "Value in kilometre per hour" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "SI.Velocity", - "component_list": [ - { - "declaration": { - "identifier": "ms" - }, - "description": { - "description_string": "Value in metre per second" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "ms" - } - ], - "value": { - "simple_expression": "kmh/3.6" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 10, - "y": 100 - }, - { - "x": -100, - "y": 56 - } - ], - "textString": "\"km/h\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -50 - }, - { - "x": -20, - "y": -100 - } - ], - "textString": "\"m/s\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "to_day", - "description_string": "Convert from second to day", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "SI.Time", - "component_list": [ - { - "declaration": { - "identifier": "s" - }, - "description": { - "description_string": "Value in second" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "Modelica.Units.NonSI.Time_day", - "component_list": [ - { - "declaration": { - "identifier": "day" - }, - "description": { - "description_string": "Value in day" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "day" - } - ], - "value": { - "simple_expression": "s/86400" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -6, - "y": 100 - }, - { - "x": -100, - "y": 48 - } - ], - "textString": "\"s\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -48 - }, - { - "x": -10, - "y": -98 - } - ], - "textString": "\"day\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "from_day", - "description_string": "Convert from day to second", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "Modelica.Units.NonSI.Time_day", - "component_list": [ - { - "declaration": { - "identifier": "day" - }, - "description": { - "description_string": "Value in day" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "SI.Time", - "component_list": [ - { - "declaration": { - "identifier": "s" - }, - "description": { - "description_string": "Value in second" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "s" - } - ], - "value": { - "simple_expression": "86400*day" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 10, - "y": 100 - }, - { - "x": -100, - "y": 52 - } - ], - "textString": "\"day\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -54 - }, - { - "x": 20, - "y": -100 - } - ], - "textString": "\"s\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "to_hour", - "description_string": "Convert from second to hour", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "SI.Time", - "component_list": [ - { - "declaration": { - "identifier": "s" - }, - "description": { - "description_string": "Value in second" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "Modelica.Units.NonSI.Time_hour", - "component_list": [ - { - "declaration": { - "identifier": "hour" - }, - "description": { - "description_string": "Value in hour" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "hour" - } - ], - "value": { - "simple_expression": "s/3600" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 12, - "y": 100 - }, - { - "x": -100, - "y": 50 - } - ], - "textString": "\"s\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -56 - }, - { - "x": -20, - "y": -100 - } - ], - "textString": "\"hour\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "from_hour", - "description_string": "Convert from hour to second", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "Modelica.Units.NonSI.Time_hour", - "component_list": [ - { - "declaration": { - "identifier": "hour" - }, - "description": { - "description_string": "Value in hour" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "SI.Time", - "component_list": [ - { - "declaration": { - "identifier": "s" - }, - "description": { - "description_string": "Value in second" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "s" - } - ], - "value": { - "simple_expression": "3600*hour" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 12, - "y": 100 - }, - { - "x": -100, - "y": 58 - } - ], - "textString": "\"hour\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -50 - }, - { - "x": 16, - "y": -100 - } - ], - "textString": "\"s\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "to_minute", - "description_string": "Convert from second to minute", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "SI.Time", - "component_list": [ - { - "declaration": { - "identifier": "s" - }, - "description": { - "description_string": "Value in second" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "Modelica.Units.NonSI.Time_minute", - "component_list": [ - { - "declaration": { - "identifier": "minute" - }, - "description": { - "description_string": "Value in minute" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "minute" - } - ], - "value": { - "simple_expression": "s/60" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -26, - "y": 100 - }, - { - "x": -100, - "y": 52 - } - ], - "textString": "\"s\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -54 - }, - { - "x": -20, - "y": -100 - } - ], - "textString": "\"min\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "from_minute", - "description_string": "Convert from minute to second", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "Modelica.Units.NonSI.Time_minute", - "component_list": [ - { - "declaration": { - "identifier": "minute" - }, - "description": { - "description_string": "Value in minute" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "SI.Time", - "component_list": [ - { - "declaration": { - "identifier": "s" - }, - "description": { - "description_string": "Value in second" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "s" - } - ], - "value": { - "simple_expression": "60*minute" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 26, - "y": 100 - }, - { - "x": -100, - "y": 48 - } - ], - "textString": "\"min\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -46 - }, - { - "x": 0, - "y": -100 - } - ], - "textString": "\"s\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "to_litre", - "description_string": "Convert from cubic metre to litre", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "SI.Volume", - "component_list": [ - { - "declaration": { - "identifier": "m3" - }, - "description": { - "description_string": "Value in cubic metre" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "Modelica.Units.NonSI.Volume_litre", - "component_list": [ - { - "declaration": { - "identifier": "litre" - }, - "description": { - "description_string": "Value in litre" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "litre" - } - ], - "value": { - "simple_expression": "1000*m3" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -56 - }, - { - "x": 0, - "y": -100 - } - ], - "textString": "\"litre\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 6, - "y": 100 - }, - { - "x": -100, - "y": 56 - } - ], - "textString": "\"m3\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "from_litre", - "description_string": "Convert from litre to cubic metre", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "Modelica.Units.NonSI.Volume_litre", - "component_list": [ - { - "declaration": { - "identifier": "litre" - }, - "description": { - "description_string": "Value in litre" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "SI.Volume", - "component_list": [ - { - "declaration": { - "identifier": "m3" - }, - "description": { - "description_string": "Value in cubic metre" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "m3" - } - ], - "value": { - "simple_expression": "litre/1000" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -4, - "y": 100 - }, - { - "x": -100, - "y": 62 - } - ], - "textString": "\"litre\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -56 - }, - { - "x": -6, - "y": -100 - } - ], - "textString": "\"m3\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "from_Ah", - "description_string": "Convert from Ampere hours to Coulomb", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "Modelica.Units.NonSI.ElectricCharge_Ah", - "component_list": [ - { - "declaration": { - "identifier": "AmpereHour" - }, - "description": { - "description_string": "Value in ampere hours" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "Modelica.Units.SI.ElectricCharge", - "component_list": [ - { - "declaration": { - "identifier": "Coulomb" - }, - "description": { - "description_string": "Value in coulomb" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "Coulomb" - } - ], - "value": { - "simple_expression": "AmpereHour*3600" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -2, - "y": 100 - }, - { - "x": -100, - "y": 48 - } - ], - "textString": "\"Ah\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -46 - }, - { - "x": 0, - "y": -100 - } - ], - "textString": "\"C\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "to_Ah", - "description_string": "Convert from Coulomb to Ampere hours", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "Modelica.Units.SI.ElectricCharge", - "component_list": [ - { - "declaration": { - "identifier": "Coulomb" - }, - "description": { - "description_string": "Value in coulomb" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "Modelica.Units.NonSI.ElectricCharge_Ah", - "component_list": [ - { - "declaration": { - "identifier": "AmpereHour" - }, - "description": { - "description_string": "Value in ampere hours" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "AmpereHour" - } - ], - "value": { - "simple_expression": "Coulomb/3600" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -18, - "y": 100 - }, - { - "x": -100, - "y": 48 - } - ], - "textString": "\"C\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -48 - }, - { - "x": 2, - "y": -100 - } - ], - "textString": "\"Ah\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "from_Wh", - "description_string": "Convert from watt hour to joule", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "Modelica.Units.NonSI.Energy_Wh", - "component_list": [ - { - "declaration": { - "identifier": "WattHour" - }, - "description": { - "description_string": "Value in watt hour" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "Modelica.Units.SI.Energy", - "component_list": [ - { - "declaration": { - "identifier": "Joule" - }, - "description": { - "description_string": "Value in joule" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "Joule" - } - ], - "value": { - "simple_expression": "WattHour*3600" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -20, - "y": 100 - }, - { - "x": -100, - "y": 54 - } - ], - "textString": "\"Wh\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -38 - }, - { - "x": 4, - "y": -100 - } - ], - "textString": "\"J\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "to_Wh", - "description_string": "Convert from joule to watt hour", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "Modelica.Units.SI.Energy", - "component_list": [ - { - "declaration": { - "identifier": "Joule" - }, - "description": { - "description_string": "Value in joule" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "Modelica.Units.NonSI.Energy_Wh", - "component_list": [ - { - "declaration": { - "identifier": "WattHour" - }, - "description": { - "description_string": "Value in watt hour" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "WattHour" - } - ], - "value": { - "simple_expression": "Joule/3600" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -30, - "y": 100 - }, - { - "x": -100, - "y": 48 - } - ], - "textString": "\"J\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -46 - }, - { - "x": -14, - "y": -100 - } - ], - "textString": "\"Wh\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "to_kWh", - "description_string": "Convert from joule to kilo watt hour", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "SI.Energy", - "component_list": [ - { - "declaration": { - "identifier": "J" - }, - "description": { - "description_string": "Value in joule" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "Modelica.Units.NonSI.Energy_kWh", - "component_list": [ - { - "declaration": { - "identifier": "kWh" - }, - "description": { - "description_string": "Value in kWh" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "kWh" - } - ], - "value": { - "simple_expression": "J/3600000" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -20, - "y": 100 - }, - { - "x": -100, - "y": 54 - } - ], - "textString": "\"J\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -50 - }, - { - "x": -10, - "y": -100 - } - ], - "textString": "\"kWh\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "from_kWh", - "description_string": "Convert from kilo watt hour to joule", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "Modelica.Units.NonSI.Energy_kWh", - "component_list": [ - { - "declaration": { - "identifier": "kWh" - }, - "description": { - "description_string": "Value in kWh" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "SI.Energy", - "component_list": [ - { - "declaration": { - "identifier": "J" - }, - "description": { - "description_string": "Value in joule" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "J" - } - ], - "value": { - "simple_expression": "3600000*kWh" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 12, - "y": 100 - }, - { - "x": -100, - "y": 52 - } - ], - "textString": "\"kWh\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -44 - }, - { - "x": 12, - "y": -100 - } - ], - "textString": "\"J\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "to_bar", - "description_string": "Convert from Pascal to bar", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "SI.Pressure", - "component_list": [ - { - "declaration": { - "identifier": "Pa" - }, - "description": { - "description_string": "Value in Pascal" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "Modelica.Units.NonSI.Pressure_bar", - "component_list": [ - { - "declaration": { - "identifier": "bar" - }, - "description": { - "description_string": "Value in bar" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "bar" - } - ], - "value": { - "simple_expression": "Pa/100000" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -12, - "y": 100 - }, - { - "x": -100, - "y": 56 - } - ], - "textString": "\"Pa\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 98, - "y": -52 - }, - { - "x": -4, - "y": -100 - } - ], - "textString": "\"bar\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "from_bar", - "description_string": "Convert from bar to Pascal", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "Modelica.Units.NonSI.Pressure_bar", - "component_list": [ - { - "declaration": { - "identifier": "bar" - }, - "description": { - "description_string": "Value in bar" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "SI.Pressure", - "component_list": [ - { - "declaration": { - "identifier": "Pa" - }, - "description": { - "description_string": "Value in Pascal" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "Pa" - } - ], - "value": { - "simple_expression": "100000*bar" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -56 - }, - { - "x": 12, - "y": -100 - } - ], - "textString": "\"Pa\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 2, - "y": 100 - }, - { - "x": -100, - "y": 52 - } - ], - "textString": "\"bar\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "to_gps", - "description_string": "Convert from kilogram per second to gram per second", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "SI.MassFlowRate", - "component_list": [ - { - "declaration": { - "identifier": "kgps" - }, - "description": { - "description_string": "Value in kg/s" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "Modelica.Units.NonSI.MassFlowRate_gps", - "component_list": [ - { - "declaration": { - "identifier": "gps" - }, - "description": { - "description_string": "Value in g/s" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "gps" - } - ], - "value": { - "simple_expression": "1000*kgps" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -12, - "y": 100 - }, - { - "x": -100, - "y": 60 - } - ], - "textString": "\"kg/s\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -46 - }, - { - "x": -6, - "y": -100 - } - ], - "textString": "\"g/s\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "from_gps", - "description_string": "Convert from gram per second to kilogram per second", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "Modelica.Units.NonSI.MassFlowRate_gps", - "component_list": [ - { - "declaration": { - "identifier": "gps" - }, - "description": { - "description_string": "Value in g/s" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "SI.MassFlowRate", - "component_list": [ - { - "declaration": { - "identifier": "kgps" - }, - "description": { - "description_string": "Value in kg/s" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "kgps" - } - ], - "value": { - "simple_expression": "gps/1000" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -8, - "y": 100 - }, - { - "x": -100, - "y": 54 - } - ], - "textString": "\"g/s\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -44 - }, - { - "x": -10, - "y": -100 - } - ], - "textString": "\"kg/s\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "from_Hz", - "description_string": "Convert from Hz to rad/s", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "SI.Frequency", - "component_list": [ - { - "declaration": { - "identifier": "f" - }, - "description": { - "description_string": "Value in hertz" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "SI.AngularVelocity", - "component_list": [ - { - "declaration": { - "identifier": "w" - }, - "description": { - "description_string": "Value in radian per second" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "w" - } - ], - "value": { - "simple_expression": "2*Modelica.Constants.pi*f" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 2, - "y": 100 - }, - { - "x": -100, - "y": 52 - } - ], - "textString": "\"Hz\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -56 - }, - { - "x": 12, - "y": -100 - } - ], - "textString": "\"1/s\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "to_Hz", - "description_string": "Convert from rad/s to Hz", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "SI.AngularVelocity", - "component_list": [ - { - "declaration": { - "identifier": "w" - }, - "description": { - "description_string": "Value in radian per second" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "SI.Frequency", - "component_list": [ - { - "declaration": { - "identifier": "f" - }, - "description": { - "description_string": "Value in hertz" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "f" - } - ], - "value": { - "simple_expression": { - "terms": [ - { - "operators": [ - "/" - ], - "factors": [ - "w", - { - "primary1": [ - { - "simple_expression": "2*Modelica.Constants.pi" - } - ] - } - ] - } - ] - } - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -52 - }, - { - "x": -2, - "y": -100 - } - ], - "textString": "\"Hz\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -12, - "y": 100 - }, - { - "x": -100, - "y": 56 - } - ], - "textString": "\"1/s\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "to_cm2", - "description_string": "Convert from square metre to square centimetre", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "SI.Area", - "component_list": [ - { - "declaration": { - "identifier": "m2" - }, - "description": { - "description_string": "Value in square metre" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "Modelica.Units.NonSI.Area_cm", - "component_list": [ - { - "declaration": { - "identifier": "cm2" - }, - "description": { - "description_string": "Value in square centimetre" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "cm2" - } - ], - "value": { - "simple_expression": "10000*m2" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -20, - "y": 100 - }, - { - "x": -100, - "y": 58 - } - ], - "textString": "\"m/s\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -50 - }, - { - "x": -18, - "y": -100 - } - ], - "textString": "\"cm2\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "function", - "class_specifier": { - "long_class_specifier": { - "identifier": "from_cm2", - "description_string": "Convert from square centimetre to square metre", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Units.Icons.Conversion" - } - }, - { - "component_clause": { - "type_prefix": "input", - "type_specifier": "Modelica.Units.NonSI.Area_cm", - "component_list": [ - { - "declaration": { - "identifier": "cm2" - }, - "description": { - "description_string": "Value in square centimetre" - } - } - ] - } - }, - { - "component_clause": { - "type_prefix": "output", - "type_specifier": "SI.Area", - "component_list": [ - { - "declaration": { - "identifier": "m2" - }, - "description": { - "description_string": "Value in square metre" - } - } - ] - } - } - ], - "element_sections": [ - { - "algorithm_section": { - "statement": [ - { - "assignment_statement": { - "identifier": [ - { - "dot_op": false, - "identifier": "m2" - } - ], - "value": { - "simple_expression": "0.0001*cm2" - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Inline", - "modification": { - "equal": true, - "expression": { - "simple_expression": "true" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 2, - "y": 100 - }, - { - "x": -100, - "y": 58 - } - ], - "textString": "\"cm2\"" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": 100, - "y": -50 - }, - { - "x": -16, - "y": -98 - } - ], - "textString": "\"m/s\"" - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Documentation", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "info", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"\n

This package provides conversion functions from the non SI Units\ndefined in package Modelica.Units.NonSI to the\ncorresponding SI Units defined in package Modelica.Units.SI and vice\nversa. It is recommended to use these functions in the following\nway (note, that all functions have one Real input and one Real output\nargument):

\n
\nimport Modelica.Units.SI;\nimport Modelica.Units.Conversions.{from_degC, from_deg, from_rpm};\n   ...\nparameter SI.Temperature     T   = from_degC(25);   // convert 25 degree Celsius to kelvin\nparameter SI.Angle           phi = from_deg(180);   // convert 180 degree to radian\nparameter SI.AngularVelocity w   = from_rpm(3600);  // convert 3600 revolutions per minutes\n                                                   // to radian per seconds\n
\n\n\"" - } - } - } - } - } - ] - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Polygon", - "attribute": { - "points": [ - { - "x": 80, - "y": 0 - }, - { - "x": 20, - "y": 20 - }, - { - "x": 20, - "y": -20 - }, - { - "x": 80, - "y": 0 - } - ], - "lineColor": { - "r": 191, - "g": 0, - "b": 0 - }, - "fillColor": { - "r": 191, - "g": 0, - "b": 0 - }, - "fillPattern": "FillPattern.Solid" - } - }, - { - "name": "Line", - "attribute": { - "points": [ - { - "x": -80, - "y": 0 - }, - { - "x": 20, - "y": 0 - } - ], - "color": { - "r": 191, - "g": 0, - "b": 0 - } - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "class_definition": { - "class_prefixes": "package", - "class_specifier": { - "long_class_specifier": { - "identifier": "Icons", - "description_string": "Icons for Units", - "composition": { - "element_list": [ - { - "extends_clause": { - "name": "Modelica.Icons.IconsPackage" - } - }, - { - "class_definition": { - "class_prefixes": "partial function", - "class_specifier": { - "long_class_specifier": { - "identifier": "Conversion", - "description_string": "Base icon for conversion functions", - "composition": { - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "coordinateSystem": { - "extent": [ - { - "x": -100, - "y": -100 - }, - { - "x": 100, - "y": 100 - } - ], - "preserveAspectRatio": "true" - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Rectangle", - "attribute": { - "extent": [ - { - "x": -100, - "y": 100 - }, - { - "x": 100, - "y": -100 - } - ], - "lineColor": { - "r": 191, - "g": 0, - "b": 0 - }, - "fillColor": { - "r": 255, - "g": 255, - "b": 255 - }, - "fillPattern": "FillPattern.Solid" - } - }, - { - "name": "Line", - "attribute": { - "points": [ - { - "x": -90, - "y": 0 - }, - { - "x": 30, - "y": 0 - } - ], - "color": { - "r": 191, - "g": 0, - "b": 0 - } - } - }, - { - "name": "Polygon", - "attribute": { - "points": [ - { - "x": 90, - "y": 0 - }, - { - "x": 30, - "y": 20 - }, - { - "x": 30, - "y": -20 - }, - { - "x": 90, - "y": 0 - } - ], - "lineColor": { - "r": 191, - "g": 0, - "b": 0 - }, - "fillColor": { - "r": 191, - "g": 0, - "b": 0 - }, - "fillPattern": "FillPattern.Solid" - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -115, - "y": 155 - }, - { - "x": 115, - "y": 105 - } - ], - "textString": "\"%name\"", - "textColor": { - "r": 0, - "g": 0, - "b": 255 - } - } - } - ] - } - } - } - ] - } - } - } - } - ] - } - } - } - } - } - ] - } - } - } - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Polygon", - "attribute": { - "points": [ - { - "x": -80, - "y": -40 - }, - { - "x": -80, - "y": -40 - }, - { - "x": -55, - "y": 50 - }, - { - "x": -52.5, - "y": 62.5 - }, - { - "x": -65, - "y": 60 - }, - { - "x": -65, - "y": 65 - }, - { - "x": -35, - "y": 77.5 - }, - { - "x": -32.5, - "y": 60 - }, - { - "x": -50, - "y": 0 - }, - { - "x": -50, - "y": 0 - }, - { - "x": -30, - "y": 15 - }, - { - "x": -20, - "y": 27.5 - }, - { - "x": -32.5, - "y": 27.5 - }, - { - "x": -32.5, - "y": 27.5 - }, - { - "x": -32.5, - "y": 32.5 - }, - { - "x": -32.5, - "y": 32.5 - }, - { - "x": 2.5, - "y": 32.5 - }, - { - "x": 2.5, - "y": 32.5 - }, - { - "x": 2.5, - "y": 27.5 - }, - { - "x": 2.5, - "y": 27.5 - }, - { - "x": -7.5, - "y": 27.5 - }, - { - "x": -30, - "y": 7.5 - }, - { - "x": -30, - "y": 7.5 - }, - { - "x": -25, - "y": -25 - }, - { - "x": -17.5, - "y": -28.75 - }, - { - "x": -10, - "y": -25 - }, - { - "x": -5, - "y": -26.25 - }, - { - "x": -5, - "y": -32.5 - }, - { - "x": -16.25, - "y": -41.25 - }, - { - "x": -31.25, - "y": -43.75 - }, - { - "x": -40, - "y": -33.75 - }, - { - "x": -45, - "y": -5 - }, - { - "x": -45, - "y": -5 - }, - { - "x": -52.5, - "y": -10 - }, - { - "x": -52.5, - "y": -10 - }, - { - "x": -60, - "y": -40 - }, - { - "x": -60, - "y": -40 - } - ], - "smooth": "Smooth.Bezier", - "fillColor": { - "r": 128, - "g": 128, - "b": 128 - }, - "pattern": "LinePattern.None", - "fillPattern": "FillPattern.Solid" - } - }, - { - "name": "Polygon", - "attribute": { - "points": [ - { - "x": 87.5, - "y": 30 - }, - { - "x": 62.5, - "y": 30 - }, - { - "x": 62.5, - "y": 30 - }, - { - "x": 55, - "y": 33.75 - }, - { - "x": 36.25, - "y": 35 - }, - { - "x": 16.25, - "y": 25 - }, - { - "x": 7.5, - "y": 6.25 - }, - { - "x": 11.25, - "y": -7.5 - }, - { - "x": 22.5, - "y": -12.5 - }, - { - "x": 22.5, - "y": -12.5 - }, - { - "x": 6.25, - "y": -22.5 - }, - { - "x": 6.25, - "y": -35 - }, - { - "x": 16.25, - "y": -38.75 - }, - { - "x": 16.25, - "y": -38.75 - }, - { - "x": 21.25, - "y": -41.25 - }, - { - "x": 21.25, - "y": -41.25 - }, - { - "x": 45, - "y": -48.75 - }, - { - "x": 47.5, - "y": -61.25 - }, - { - "x": 32.5, - "y": -70 - }, - { - "x": 12.5, - "y": -65 - }, - { - "x": 7.5, - "y": -51.25 - }, - { - "x": 21.25, - "y": -41.25 - }, - { - "x": 21.25, - "y": -41.25 - }, - { - "x": 16.25, - "y": -38.75 - }, - { - "x": 16.25, - "y": -38.75 - }, - { - "x": 6.25, - "y": -41.25 - }, - { - "x": -6.25, - "y": -50 - }, - { - "x": -3.75, - "y": -68.75 - }, - { - "x": 30, - "y": -76.25 - }, - { - "x": 65, - "y": -62.5 - }, - { - "x": 63.75, - "y": -35 - }, - { - "x": 27.5, - "y": -26.25 - }, - { - "x": 22.5, - "y": -20 - }, - { - "x": 27.5, - "y": -15 - }, - { - "x": 27.5, - "y": -15 - }, - { - "x": 30, - "y": -7.5 - }, - { - "x": 30, - "y": -7.5 - }, - { - "x": 27.5, - "y": -2.5 - }, - { - "x": 28.75, - "y": 11.25 - }, - { - "x": 36.25, - "y": 27.5 - }, - { - "x": 47.5, - "y": 30 - }, - { - "x": 53.75, - "y": 22.5 - }, - { - "x": 51.25, - "y": 8.75 - }, - { - "x": 45, - "y": -6.25 - }, - { - "x": 35, - "y": -11.25 - }, - { - "x": 30, - "y": -7.5 - }, - { - "x": 30, - "y": -7.5 - }, - { - "x": 27.5, - "y": -15 - }, - { - "x": 27.5, - "y": -15 - }, - { - "x": 43.75, - "y": -16.25 - }, - { - "x": 65, - "y": -6.25 - }, - { - "x": 72.5, - "y": 10 - }, - { - "x": 70, - "y": 20 - }, - { - "x": 70, - "y": 20 - }, - { - "x": 80, - "y": 20 - } - ], - "smooth": "Smooth.Bezier", - "fillColor": { - "r": 128, - "g": 128, - "b": 128 - }, - "pattern": "LinePattern.None", - "fillPattern": "FillPattern.Solid" - } - } - ] - } - } - } - ] - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Documentation", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "info", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"\n

This package provides predefined types, such as Mass,\nAngle, Time, based on the international standard\non units, e.g.,\n

\n\n
\ntype Angle = Real(final quantity = \\\"Angle\\\",\n                  final unit     = \\\"rad\\\",\n                  displayUnit   = \\\"deg\\\");\n
\n\n

\nSome of the types are derived SI units that are utilized in package Modelica\n(such as ComplexCurrent, which is a complex number where both the real and imaginary\npart have the SI unit Ampere).\n

\n\n

\nFurthermore, conversion functions from non SI-units to SI-units and vice versa\nare provided in subpackage\nConversions.\n

\n\n

\nFor an introduction how units are used in the Modelica Standard Library\nwith package Units, have a look at:\nHow to use Units.\n

\n\n

\nCopyright © 1998-2020, Modelica Association and contributors\n

\n\"" - } - } - } - } - }, - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "revisions", - "modification": { - "equal": true, - "expression": { - "simple_expression": "\"\n
    \n
  • May 25, 2011 by Stefan Wischhusen:
    Added molar units for energy and enthalpy.
  • \n
  • Jan. 27, 2010 by Christian Kral:
    Added complex units.
  • \n
  • Dec. 14, 2005 by Martin Otter:
    Add User's Guide and removed "min" values for Resistance and Conductance.
  • \n
  • October 21, 2002 by Martin Otter and Christian Schweiger:
    Added new package Conversions. Corrected typo Wavelenght.
  • \n
  • June 6, 2000 by Martin Otter:
    Introduced the following new types
    type Temperature = ThermodynamicTemperature;
    types DerDensityByEnthalpy, DerDensityByPressure, DerDensityByTemperature, DerEnthalpyByPressure, DerEnergyByDensity, DerEnergyByPressure
    Attribute "final" removed from min and max values in order that these values can still be changed to narrow the allowed range of values.
    Quantity="Stress" removed from type "Stress", in order that a type "Stress" can be connected to a type "Pressure".
  • \n
  • Oct. 27, 1999 by Martin Otter:
    New types due to electrical library: Transconductance, InversePotential, Damping.
  • \n
  • Sept. 18, 1999 by Martin Otter:
    Renamed from SIunit to SIunits. Subpackages expanded, i.e., the SIunits package, does no longer contain subpackages.
  • \n
  • Aug 12, 1999 by Martin Otter:
    Type "Pressure" renamed to "AbsolutePressure" and introduced a new type "Pressure" which does not contain a minimum of zero in order to allow convenient handling of relative pressure. Redefined BulkModulus as an alias to AbsolutePressure instead of Stress, since needed in hydraulics.
  • \n
  • June 29, 1999 by Martin Otter:
    Bug-fix: Double definition of "Compressibility" removed and appropriate "extends Heat" clause introduced in package SolidStatePhysics to incorporate ThermodynamicTemperature.
  • \n
  • April 8, 1998 by Martin Otter and Astrid Jaschinski:
    Complete ISO 31 chapters realized.
  • \n
  • Nov. 15, 1997 by Martin Otter and Hubertus Tummescheit:
    Some chapters realized.
  • \n
\n\"" - } - } - } - } - } - ] - } - } - } - } - ] - } - } - } - } - ], - "modelicaFile": "Modelica/Units.mo", - "fullMoFilePath": "/dependencies/ModelicaStandardLibrary/Modelica/Units.mo", - "checksum": "8738d1340b653da3542f554d4d1eb7df" -} From c0b081a997b6c4e4be63fbd0e7650d19cd3e4c24 Mon Sep 17 00:00:00 2001 From: AntoineGautier Date: Thu, 26 Feb 2026 09:10:18 +0100 Subject: [PATCH 03/16] Set enable for group columns --- server/src/parser/schedule.ts | 149 ++++++++++++++++++++++++++++------ 1 file changed, 123 insertions(+), 26 deletions(-) diff --git a/server/src/parser/schedule.ts b/server/src/parser/schedule.ts index feb88113..de91ffac 100644 --- a/server/src/parser/schedule.ts +++ b/server/src/parser/schedule.ts @@ -95,13 +95,14 @@ export interface LeafColumn { min?: number | Expression; max?: number | Expression; start?: number | Expression; - enable?: boolean | Expression; + enable?: boolean | Expression; // __ctrlFlow.enable=false overrides Dialog.enable; otherwise use Dialog.enable } export interface GroupColumn { kind: "group"; label: string; // e.g. "Cooling coil" children: Column[]; // can nest arbitrarily deep + enable?: boolean | Expression; // __ctrlFlow.enable=false overrides Dialog.enable; otherwise use Dialog.enable } export type Column = LeafColumn | GroupColumn; @@ -199,7 +200,11 @@ function applyModifiers( } // Only prepend instance prefix for operands whose root name is a known // local component name in the enclosing record scope. - if (instancePrefix && localNames.has(topName) && !value.startsWith(instancePrefix)) { + if ( + instancePrefix && + localNames.has(topName) && + !value.startsWith(instancePrefix) + ) { return `${instancePrefix}.${value}`; } } @@ -217,8 +222,8 @@ function applyModifiers( /** * Rebase a component's modelicaPath from its type root to the instance path. * e.g. component.modelicaPath = "Buildings.Templates.Components.Data.Coil.mAir_flow_nominal" - * typeRootPath = "Buildings.Templates.Components.Data.Coil" - * instancePath = "coiCoo" + * typeRootPath = "Buildings.Templates.Components.Data.Coil" + * instancePath = "coiCoo" * -> "coiCoo.mAir_flow_nominal" */ function rebasePath( @@ -253,13 +258,19 @@ function buildColumnsFromElement( // Merge this element's extends mods (non-redeclare, value-bearing) into the modMap // so that e.g. `extends Parent(x=someValue)` overrides are visible to all child columns. for (const mod of (element as LongClass).mods ?? []) { - if (mod.value !== undefined && mod.name && !mod.redeclare && !modMap.has(mod.name)) { + if ( + mod.value !== undefined && + mod.name && + !mod.redeclare && + !modMap.has(mod.name) + ) { modMap.set(mod.name, mod.value); } } // Get all child elements (includes inherited elements) - const childElements = element.elementType === "record" + const childElements = + element.elementType === "record" ? (element as LongClass).getChildElements() : []; @@ -299,7 +310,9 @@ function buildColumnsFromElement( // parent class), fall back to composing the key from component.name directly. const key = rebasedName.startsWith(instancePath) ? rebasedName - : instancePath ? `${instancePath}.${component.name}` : component.name; + : instancePath + ? `${instancePath}.${component.name}` + : component.name; // Check if this component is redeclared in the current element's extends mods. // e.g. VAVMultiZone extends PartialAirHandler(redeclare VAVMultiZoneController ctl(...)) @@ -319,7 +332,13 @@ function buildColumnsFromElement( if (isPredefinedType || !isRecordType) { // Create a leaf column for predefined types and non-record types - const attributes = extractAttributes(component, element, modMap, instancePath, localNames); + const attributes = extractAttributes( + component, + element, + modMap, + instancePath, + localNames, + ); column = { kind: "leaf", key, @@ -343,10 +362,20 @@ function buildColumnsFromElement( nestedInstancePath, nestedModMap, ); + const groupAttributes = extractAttributes( + component, + element, + modMap, + instancePath, + localNames, + ); column = { kind: "group", label: component.description || component.name, children: recordColumns, + ...(groupAttributes.enable !== undefined && { + enable: groupAttributes.enable, + }), }; } @@ -415,7 +444,12 @@ function extractAttributes( if (ctrlFlowEnable === false) { result.enable = false; } else if (component.enable !== undefined && component.enable !== true) { - result.enable = applyModifiersToAttr(component.enable, modMap, instancePrefix, localNames); + result.enable = applyModifiersToAttr( + component.enable, + modMap, + instancePrefix, + localNames, + ); } // value: check modMap first (parent override), then component's own declaration binding. @@ -423,7 +457,12 @@ function extractAttributes( const modMapValue = modMap.get(component.name); const rawValue = modMapValue !== undefined ? modMapValue : component.value; if (rawValue !== undefined) { - result.value = applyModifiersToAttr(rawValue, modMap, instancePrefix, localNames); + result.value = applyModifiersToAttr( + rawValue, + modMap, + instancePrefix, + localNames, + ); } // final: true if component.mod is marked final, or if a modifier in element.mods @@ -449,13 +488,21 @@ function extractAttributes( const typeInputs = typeElement.getInputs({}, false); const typeInput = typeInputs[component.type]; if (typeInput && typeInput.modifiers) { - extractFromTemplateInputModifiers(component.modelicaPath, typeInput.modifiers, result); + extractFromTemplateInputModifiers( + component.modelicaPath, + typeInput.modifiers, + result, + ); } } // Also check component's own modifiers if (component.mod) { - extractAttributesFromModifiers(component.modelicaPath, component.mod, result); + extractAttributesFromModifiers( + component.modelicaPath, + component.mod, + result, + ); } // If type is not predefined and any attributes are still missing, walk up the @@ -474,7 +521,11 @@ function extractAttributes( } if ("mods" in current && (current as any).mods) { const parentResult: typeof result = {}; - extractAttributesFromModifiers(current.modelicaPath, { mods: (current as any).mods }, parentResult); + extractAttributesFromModifiers( + current.modelicaPath, + { mods: (current as any).mods }, + parentResult, + ); result.unit = result.unit ?? parentResult.unit; result.displayUnit = result.displayUnit ?? parentResult.displayUnit; result.min = result.min ?? parentResult.min; @@ -487,13 +538,28 @@ function extractAttributes( // Apply modifier substitutions to numeric/expression attributes if (result.min !== undefined) { - result.min = applyModifiersToAttr(result.min, modMap, instancePrefix, localNames); + result.min = applyModifiersToAttr( + result.min, + modMap, + instancePrefix, + localNames, + ); } if (result.max !== undefined) { - result.max = applyModifiersToAttr(result.max, modMap, instancePrefix, localNames); + result.max = applyModifiersToAttr( + result.max, + modMap, + instancePrefix, + localNames, + ); } if (result.start !== undefined) { - result.start = applyModifiersToAttr(result.start, modMap, instancePrefix, localNames); + result.start = applyModifiersToAttr( + result.start, + modMap, + instancePrefix, + localNames, + ); } return result; @@ -511,7 +577,12 @@ function applyModifiersToAttr( if (typeof value !== "object") { return value; } - return applyModifiers(value as Expression, modMap, instancePrefix, localNames); + return applyModifiers( + value as Expression, + modMap, + instancePrefix, + localNames, + ); } /** @@ -521,7 +592,9 @@ function applyModifiersToAttr( * so the client can evaluate it at runtime. * - Returns undefined for null/undefined values. */ -function resolveModValue(value: any): string | number | boolean | Expression | undefined { +function resolveModValue( + value: any, +): string | number | boolean | Expression | undefined { if (value === null || value === undefined) { return undefined; } @@ -549,7 +622,7 @@ function extractAttributesFromModifiers( min?: number | Expression; max?: number | Expression; start?: number | Expression; - } + }, ): void { if (!mod || !mod.mods) { return; @@ -560,9 +633,17 @@ function extractAttributesFromModifiers( const modPath = nestedMod.modelicaPath || ""; const raw = resolveModValue(nestedMod.value); - if (modPath.endsWith(".unit") && raw !== undefined && typeof raw !== "object") { + if ( + modPath.endsWith(".unit") && + raw !== undefined && + typeof raw !== "object" + ) { result.unit = String(raw); - } else if (modPath.endsWith(".displayUnit") && raw !== undefined && typeof raw !== "object") { + } else if ( + modPath.endsWith(".displayUnit") && + raw !== undefined && + typeof raw !== "object" + ) { result.displayUnit = String(raw); } else if (modPath.endsWith(".min") && raw !== undefined) { result.min = typeof raw === "object" ? raw : Number(raw); @@ -586,7 +667,7 @@ function extractFromTemplateInputModifiers( min?: number | Expression; max?: number | Expression; start?: number | Expression; - } + }, ): void { if (!modifiers || !Array.isArray(modifiers)) { return; @@ -603,9 +684,17 @@ function extractFromTemplateInputModifiers( const modPath = nestedMod.modelicaPath || ""; const raw = resolveModValue(nestedMod.value); - if (modPath.endsWith(".unit") && raw !== undefined && typeof raw !== "object") { + if ( + modPath.endsWith(".unit") && + raw !== undefined && + typeof raw !== "object" + ) { result.unit = String(raw); - } else if (modPath.endsWith(".displayUnit") && raw !== undefined && typeof raw !== "object") { + } else if ( + modPath.endsWith(".displayUnit") && + raw !== undefined && + typeof raw !== "object" + ) { result.displayUnit = String(raw); } else if (modPath.endsWith(".min") && raw !== undefined) { result.min = typeof raw === "object" ? raw : Number(raw); @@ -630,7 +719,11 @@ function nextInTypeChain(current: Element): Element | undefined { } if (current instanceof ShortClass) { const aliasedType = current.type; - if (aliasedType && aliasedType !== current.modelicaPath && !MLS_PREDEFINED_TYPES.includes(aliasedType)) { + if ( + aliasedType && + aliasedType !== current.modelicaPath && + !MLS_PREDEFINED_TYPES.includes(aliasedType) + ) { return typeStore.get(aliasedType) ?? undefined; } } @@ -660,7 +753,11 @@ function extractAttributesFromType(element: Element): { while (current) { if ("mods" in current && (current as any).mods) { const levelResult: typeof result = {}; - extractAttributesFromModifiers(current.modelicaPath, { mods: (current as any).mods }, levelResult); + extractAttributesFromModifiers( + current.modelicaPath, + { mods: (current as any).mods }, + levelResult, + ); result.unit = result.unit ?? levelResult.unit; result.displayUnit = result.displayUnit ?? levelResult.displayUnit; result.min = result.min ?? levelResult.min; From 0ab40eaa9d2143ac1f14b3474b9eef6c131f530b Mon Sep 17 00:00:00 2001 From: AntoineGautier Date: Thu, 26 Feb 2026 09:14:43 +0100 Subject: [PATCH 04/16] Add configuration and modelicaPath --- server/src/parser/schedule.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/server/src/parser/schedule.ts b/server/src/parser/schedule.ts index de91ffac..88a14708 100644 --- a/server/src/parser/schedule.ts +++ b/server/src/parser/schedule.ts @@ -125,6 +125,8 @@ export type Row = Record; // --- Full table --- export interface Table { + modelicaPath: string; // fully-qualified class name of the record, e.g. "Buildings.Templates.AirHandlersFans.Data.VAVMultiZone" + configuration: string; // final type (after redeclare) of the component with instance name 'cfg' columns: Column[]; // tree of headers rows: Row[]; } @@ -142,7 +144,19 @@ export function buildParameterTable(className: string): Table { const columns = buildColumnsFromElement(element); + // Find the 'cfg' component and resolve its effective type after any redeclare + const childElements = (element as LongClass).getChildElements?.() ?? []; + const cfgComponent = childElements.find( + (c) => c.elementType === "component_clause" && (c as Component).name === "cfg", + ) as Component | undefined; + const redeclareMod = (element as LongClass).mods?.find( + (m) => m.name === "cfg" && m.redeclare, + ); + const configuration = redeclareMod?.redeclare ?? cfgComponent?.type ?? ""; + return { + modelicaPath: className, + configuration, columns, rows: [], // Empty rows - to be filled at UI runtime }; From 7815546a4ccef7a48a6db0200512e8c76bac0dff Mon Sep 17 00:00:00 2001 From: AntoineGautier Date: Thu, 26 Feb 2026 09:22:08 +0100 Subject: [PATCH 05/16] Drop all statically disabled components --- server/src/parser/schedule.ts | 39 ++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/server/src/parser/schedule.ts b/server/src/parser/schedule.ts index 88a14708..a51bd018 100644 --- a/server/src/parser/schedule.ts +++ b/server/src/parser/schedule.ts @@ -142,7 +142,7 @@ export function buildParameterTable(className: string): Table { throw new Error(`Class ${className} not found in typeStore`); } - const columns = buildColumnsFromElement(element); + const columns = filterDisabledColumns(buildColumnsFromElement(element)); // Find the 'cfg' component and resolve its effective type after any redeclare const childElements = (element as LongClass).getChildElements?.() ?? []; @@ -802,3 +802,40 @@ function hasEmptyAttributes(attrs: { attrs.start === undefined ); } + +/** + * Returns true if an enable value is statically false: + * - the boolean false + * - an Expression { operator: "none", operands: [false] } + */ +function isStaticallyDisabled(enable: boolean | Expression | undefined): boolean { + if (enable === false) return true; + if ( + enable !== undefined && + typeof enable === "object" && + (enable as Expression).operator === "none" && + (enable as Expression).operands.length === 1 && + (enable as Expression).operands[0] === false + ) { + return true; + } + return false; +} + +/** + * Recursively removes columns that are statically disabled (enable===false or + * {operator:"none",operands:[false]}). If a group column is disabled, it and + * all its children are dropped. Otherwise its children are filtered recursively. + */ +function filterDisabledColumns(columns: Column[]): Column[] { + const result: Column[] = []; + for (const col of columns) { + if (isStaticallyDisabled((col as any).enable)) continue; + if (col.kind === "group") { + result.push({ ...col, children: filterDisabledColumns(col.children) }); + } else { + result.push(col); + } + } + return result; +} From 73ac34f5992944f43f047aedb55e82e50178a2a4 Mon Sep 17 00:00:00 2001 From: AntoineGautier Date: Thu, 26 Feb 2026 09:43:30 +0100 Subject: [PATCH 06/16] Try to statically evaluate enable annotations --- server/src/parser/parser.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/parser/parser.ts b/server/src/parser/parser.ts index 3d14f792..35ed0274 100644 --- a/server/src/parser/parser.ts +++ b/server/src/parser/parser.ts @@ -722,7 +722,7 @@ function setUIInfo(instance: Element): void { instance.group = group ? evaluateExpression(group) : ""; instance.tab = tab ? evaluateExpression(tab) : ""; const _enable = isDisabledGroup ? false : true; - instance.enable = enable ? enable : _enable; + instance.enable = enable ? evaluateExpression(enable) : _enable; } else { instance.enable = isDisabledGroup ? instance.enable : true; } From bf9228296090c421e2df8c34ccfbb5b3b4bb025d Mon Sep 17 00:00:00 2001 From: AntoineGautier Date: Thu, 26 Feb 2026 09:43:59 +0100 Subject: [PATCH 07/16] Refactor Cell and Table interfaces --- server/src/parser/schedule.ts | 19 ++++++------------- .../tests/integration/parser/schedule.test.ts | 8 ++++---- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/server/src/parser/schedule.ts b/server/src/parser/schedule.ts index a51bd018..f4f21e8f 100644 --- a/server/src/parser/schedule.ts +++ b/server/src/parser/schedule.ts @@ -107,28 +107,21 @@ export interface GroupColumn { export type Column = LeafColumn | GroupColumn; -// --- Cell value + conditional expression --- +// --- Cell --- export interface Cell { + rowIndex: number; + columnKey: string; // matches a LeafColumn key; use table.columns to look up column.enable value: string | number | boolean | null; - /** Expression evaluated in the context of the current row's cells. - * References sibling cells by their column key, e.g. "cooling_enabled === true" - * When false, the cell is disabled/greyed out. */ - enableWhen?: string; // or a parsed AST node if you want to avoid runtime eval } -// --- Row --- - -/** Flat map from leaf column key → cell */ -export type Row = Record; - // --- Full table --- export interface Table { modelicaPath: string; // fully-qualified class name of the record, e.g. "Buildings.Templates.AirHandlersFans.Data.VAVMultiZone" configuration: string; // final type (after redeclare) of the component with instance name 'cfg' columns: Column[]; // tree of headers - rows: Row[]; + cells: Cell[]; } /** @@ -142,7 +135,7 @@ export function buildParameterTable(className: string): Table { throw new Error(`Class ${className} not found in typeStore`); } - const columns = filterDisabledColumns(buildColumnsFromElement(element)); + const columns = buildColumnsFromElement(element); // Find the 'cfg' component and resolve its effective type after any redeclare const childElements = (element as LongClass).getChildElements?.() ?? []; @@ -158,7 +151,7 @@ export function buildParameterTable(className: string): Table { modelicaPath: className, configuration, columns, - rows: [], // Empty rows - to be filled at UI runtime + cells: [], // Empty cells - to be filled at UI runtime }; } diff --git a/server/tests/integration/parser/schedule.test.ts b/server/tests/integration/parser/schedule.test.ts index 5a1b3ae3..33225184 100644 --- a/server/tests/integration/parser/schedule.test.ts +++ b/server/tests/integration/parser/schedule.test.ts @@ -67,13 +67,13 @@ describe("buildParameterTable", () => { ); }); - it("should return a table with columns and empty rows", () => { + it("should return a table with columns and empty cells", () => { expect(table).toBeDefined(); expect(table.columns).toBeDefined(); expect(Array.isArray(table.columns)).toBe(true); - expect(table.rows).toBeDefined(); - expect(Array.isArray(table.rows)).toBe(true); - expect(table.rows.length).toBe(0); + expect(table.cells).toBeDefined(); + expect(Array.isArray(table.cells)).toBe(true); + expect(table.cells.length).toBe(0); }); it("should create leaf columns for predefined type parameters", () => { From 22e99fe9ab74448bc7b1dcb489f229569a8ad665 Mon Sep 17 00:00:00 2001 From: AntoineGautier Date: Thu, 26 Feb 2026 10:02:50 +0100 Subject: [PATCH 08/16] Clean up code --- server/src/parser/schedule.ts | 131 +++------------------------------- 1 file changed, 8 insertions(+), 123 deletions(-) diff --git a/server/src/parser/schedule.ts b/server/src/parser/schedule.ts index f4f21e8f..878b7746 100644 --- a/server/src/parser/schedule.ts +++ b/server/src/parser/schedule.ts @@ -8,10 +8,6 @@ * * ```typescript * import { buildParameterTable } from "./parser/schedule"; - * import * as parser from "./parser/parser"; - * - * // Load the record class first (recursively loads all referenced types) - * parser.getFile("Buildings.Templates.AirHandlersFans.Data.VAVMultiZone"); * * // Build a parameter table for the record * const table = buildParameterTable("Buildings.Templates.AirHandlersFans.Data.VAVMultiZone"); @@ -30,17 +26,18 @@ * } * }); * - * // Add rows at runtime (keyed by the same relative instance paths as column keys) - * table.rows.push({ - * "ctl.k": { value: 1.5 }, - * "coiHeaReh.dpAir_nominal": { value: 250 }, - * }); + * // Add cells at runtime; rowIndex groups cells into logical rows. + * // To retrieve the enable expression for a cell, look up the LeafColumn by columnKey. + * table.cells.push( + * { rowIndex: 0, columnKey: "ctl.k", value: 1.5 }, + * { rowIndex: 0, columnKey: "coiHeaReh.dpAir_nominal", value: 250 }, + * ); * ``` * * ## Column Structure * - * - **LeafColumn**: Represents a single parameter (predefined or type-alias types). - * - `key`: instance path relative to the top-level record (e.g. `"ctl.k"`, `"dpAir_nominal"`) + * - **LeafColumn**: Represents a single parameter + * - `key`: instance path relative to the top-level record * - `label`: description string or parameter name * - `unit`, `displayUnit`: resolved by walking the type alias chain * (e.g. `PressureDifference → Pressure → Real(unit="Pa")`) @@ -52,22 +49,6 @@ * - Created from `Dialog(group=...)` or `Dialog(tab=...)` annotations * - Created for record-typed component instances (children are the record's parameters) * - Can be nested arbitrarily deep - * - * ## Attribute Extraction - * - * For each leaf parameter, attributes are resolved in this order: - * 1. Component's own modifiers (declaration-level overrides) - * 2. Type's TemplateInput modifiers - * 3. Type chain: follows `ShortClass.type` aliases and `LongClass.extendElement` - * inheritance until a predefined MLS type is reached or all attributes are found - * - * ## Filtering - * - * The following parameters are excluded from the table: - * - `outer` parameters (references to outer scope) - * - `final` parameters (cannot be modified) - * - Parameters marked with `__ctrlFlow(enable=false)` at the class level (`deadEnd`) - * - Parameters with `connectorSizing=true` */ import { @@ -736,99 +717,3 @@ function nextInTypeChain(current: Element): Element | undefined { } return undefined; } - -/** - * Recursively extracts attributes from a type definition, walking up the inheritance chain - */ -function extractAttributesFromType(element: Element): { - unit?: string; - displayUnit?: string; - min?: number | Expression; - max?: number | Expression; - start?: number | Expression; -} { - const result: { - unit?: string; - displayUnit?: string; - min?: number | Expression; - max?: number | Expression; - start?: number | Expression; - } = {}; - - // Walk up the type chain, filling in missing attributes - let current: Element | undefined = element; - while (current) { - if ("mods" in current && (current as any).mods) { - const levelResult: typeof result = {}; - extractAttributesFromModifiers( - current.modelicaPath, - { mods: (current as any).mods }, - levelResult, - ); - result.unit = result.unit ?? levelResult.unit; - result.displayUnit = result.displayUnit ?? levelResult.displayUnit; - result.min = result.min ?? levelResult.min; - result.max = result.max ?? levelResult.max; - result.start = result.start ?? levelResult.start; - } - current = nextInTypeChain(current); - } - - return result; -} - -/** - * Checks if all attributes are empty/undefined - */ -function hasEmptyAttributes(attrs: { - unit?: string; - displayUnit?: string; - min?: number | Expression; - max?: number | Expression; - start?: number | Expression; -}): boolean { - return ( - attrs.unit === undefined && - attrs.displayUnit === undefined && - attrs.min === undefined && - attrs.max === undefined && - attrs.start === undefined - ); -} - -/** - * Returns true if an enable value is statically false: - * - the boolean false - * - an Expression { operator: "none", operands: [false] } - */ -function isStaticallyDisabled(enable: boolean | Expression | undefined): boolean { - if (enable === false) return true; - if ( - enable !== undefined && - typeof enable === "object" && - (enable as Expression).operator === "none" && - (enable as Expression).operands.length === 1 && - (enable as Expression).operands[0] === false - ) { - return true; - } - return false; -} - -/** - * Recursively removes columns that are statically disabled (enable===false or - * {operator:"none",operands:[false]}). If a group column is disabled, it and - * all its children are dropped. Otherwise its children are filtered recursively. - */ -function filterDisabledColumns(columns: Column[]): Column[] { - const result: Column[] = []; - for (const col of columns) { - if (isStaticallyDisabled((col as any).enable)) continue; - if (col.kind === "group") { - result.push({ ...col, children: filterDisabledColumns(col.children) }); - } else { - result.push(col); - } - } - return result; -} From 5a7cc2caa58590db7fd5b71157f804d0b75e9724 Mon Sep 17 00:00:00 2001 From: AntoineGautier Date: Thu, 26 Feb 2026 15:51:09 +0100 Subject: [PATCH 09/16] Extract schedule paths from template class annotation --- client/src/data/templates.json | 836 +++--------------- docs/linkage-schema.md | 3 +- server/src/parser/loader.ts | 7 +- server/src/parser/schedule.ts | 2 - server/src/parser/template.ts | 64 +- .../tests/integration/parser/schedule.test.ts | 140 +-- server/tests/static-data/json.tar.gz | Bin 68475 -> 62773 bytes 7 files changed, 265 insertions(+), 787 deletions(-) diff --git a/client/src/data/templates.json b/client/src/data/templates.json index 7f275c58..01f523c6 100644 --- a/client/src/data/templates.json +++ b/client/src/data/templates.json @@ -2,17 +2,7 @@ "templates": [ { "modelicaPath": "Buildings.Templates.AirHandlersFans.VAVMultiZone", - "scheduleOptionPaths": [ - "Buildings.Templates.Components.Actuators.Damper.dat", - "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorSection.dat", - "Buildings.Templates.Components.Interfaces.PartialFan.dat", - "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialReliefReturnSection.dat", - "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialOutdoorReliefReturnSection.dat", - "Buildings.Templates.Components.Interfaces.PartialCoil.dat", - "Buildings.Templates.Components.Actuators.Valve.dat", - "Buildings.Templates.AirHandlersFans.Components.Interfaces.PartialController.dat", - "Buildings.Templates.AirHandlersFans.Interfaces.PartialAirHandler.dat" - ], + "scheduleOptionPaths": [], "systemTypes": [ "Buildings.Templates.AirHandlersFans" ], @@ -27,13 +17,7 @@ }, { "modelicaPath": "Buildings.Templates.ZoneEquipment.VAVBoxCoolingOnly", - "scheduleOptionPaths": [ - "Buildings.Templates.Components.Actuators.Valve.dat", - "Buildings.Templates.Components.Interfaces.PartialCoil.dat", - "Buildings.Templates.Components.Actuators.Damper.dat", - "Buildings.Templates.ZoneEquipment.Components.Interfaces.PartialController.dat", - "Buildings.Templates.ZoneEquipment.Interfaces.PartialAirTerminal.dat" - ], + "scheduleOptionPaths": [], "systemTypes": [ "Buildings.Templates.ZoneEquipment" ], @@ -45,13 +29,7 @@ }, { "modelicaPath": "Buildings.Templates.ZoneEquipment.VAVBoxReheat", - "scheduleOptionPaths": [ - "Buildings.Templates.Components.Actuators.Valve.dat", - "Buildings.Templates.Components.Interfaces.PartialCoil.dat", - "Buildings.Templates.Components.Actuators.Damper.dat", - "Buildings.Templates.ZoneEquipment.Components.Interfaces.PartialController.dat", - "Buildings.Templates.ZoneEquipment.Interfaces.PartialAirTerminal.dat" - ], + "scheduleOptionPaths": [], "systemTypes": [ "Buildings.Templates.ZoneEquipment" ], @@ -390,20 +368,10 @@ "group": "Configuration", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.Components.Types.Damper.Modulating", - "Buildings.Templates.Components.Types.Damper.None", - "Buildings.Templates.Components.Types.Damper.PressureIndependent", - "Buildings.Templates.Components.Types.Damper.TwoPosition" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -553,12 +521,7 @@ "group": "Mechanical", "tab": "", "visible": false, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, "options": [], @@ -864,19 +827,10 @@ "group": "", "tab": "Graphics", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.Components.Types.DamperBlades.Opposed", - "Buildings.Templates.Components.Types.DamperBlades.Parallel", - "Buildings.Templates.Components.Types.DamperBlades.VAV" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -950,12 +904,7 @@ "group": "", "tab": "Graphics", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, "options": [], @@ -975,12 +924,7 @@ "group": "", "tab": "Graphics", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, "options": [], @@ -1196,12 +1140,7 @@ "group": "", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - "use_deltaM" - ] - }, + "enable": "use_deltaM", "modifiers": {}, "replaceable": false, "options": [], @@ -2749,19 +2688,10 @@ "group": "", "tab": "Graphics", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.Components.Types.IntegrationPoint.None", - "Buildings.Templates.Components.Types.IntegrationPoint.Return", - "Buildings.Templates.Components.Types.IntegrationPoint.Supply" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -3376,19 +3306,10 @@ "group": "", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.Components.Types.SensorVolumeFlowRate.AFMS", - "Buildings.Templates.Components.Types.SensorVolumeFlowRate.FlowCross", - "Buildings.Templates.Components.Types.SensorVolumeFlowRate.FlowMeter" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -3841,12 +3762,7 @@ "group": "", "tab": "Graphics", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, "options": [], @@ -3866,12 +3782,7 @@ "group": "", "tab": "Graphics", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, "options": [], @@ -3891,19 +3802,10 @@ "group": "", "tab": "Graphics", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.Components.Types.IntegrationPoint.None", - "Buildings.Templates.Components.Types.IntegrationPoint.Return", - "Buildings.Templates.Components.Types.IntegrationPoint.Supply" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -4069,19 +3971,10 @@ "group": "", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.Components.Types.SensorTemperature.Standard", - "Buildings.Templates.Components.Types.SensorTemperature.Averaging", - "Buildings.Templates.Components.Types.SensorTemperature.InWell" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -4283,12 +4176,7 @@ "group": "Heat transfer", "tab": "", "visible": false, - "enable": { - "operator": "none", - "operands": [ - "transferHeat" - ] - }, + "enable": "transferHeat", "modifiers": {}, "replaceable": false, "options": [], @@ -4308,12 +4196,7 @@ "group": "Heat transfer", "tab": "", "visible": false, - "enable": { - "operator": "none", - "operands": [ - "transferHeat" - ] - }, + "enable": "transferHeat", "modifiers": {}, "replaceable": false, "options": [], @@ -5104,20 +4987,10 @@ "group": "Configuration", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.Components.Types.Damper.Modulating", - "Buildings.Templates.Components.Types.Damper.None", - "Buildings.Templates.Components.Types.Damper.PressureIndependent", - "Buildings.Templates.Components.Types.Damper.TwoPosition" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -5128,20 +5001,10 @@ "group": "Configuration", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.Components.Types.Damper.Modulating", - "Buildings.Templates.Components.Types.Damper.None", - "Buildings.Templates.Components.Types.Damper.PressureIndependent", - "Buildings.Templates.Components.Types.Damper.TwoPosition" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -5152,20 +5015,10 @@ "group": "Configuration", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.Components.Types.Damper.Modulating", - "Buildings.Templates.Components.Types.Damper.None", - "Buildings.Templates.Components.Types.Damper.PressureIndependent", - "Buildings.Templates.Components.Types.Damper.TwoPosition" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -5176,20 +5029,10 @@ "group": "Configuration", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.Components.Types.Damper.Modulating", - "Buildings.Templates.Components.Types.Damper.None", - "Buildings.Templates.Components.Types.Damper.PressureIndependent", - "Buildings.Templates.Components.Types.Damper.TwoPosition" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -5200,20 +5043,10 @@ "group": "Configuration", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.Components.Types.Fan.None", - "Buildings.Templates.Components.Types.Fan.SingleConstant", - "Buildings.Templates.Components.Types.Fan.SingleVariable", - "Buildings.Templates.Components.Types.Fan.ArrayVariable" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -5295,20 +5128,10 @@ "group": "Configuration", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.Components.Types.Fan.None", - "Buildings.Templates.Components.Types.Fan.SingleConstant", - "Buildings.Templates.Components.Types.Fan.SingleVariable", - "Buildings.Templates.Components.Types.Fan.ArrayVariable" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -5319,12 +5142,7 @@ "group": "Configuration", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": { "Buildings.Templates.AirHandlersFans.Components.Data.OutdoorReliefReturnSection.nFanRet.start": { "expression": { @@ -5376,12 +5194,7 @@ "group": "Configuration", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": { "Buildings.Templates.AirHandlersFans.Components.Data.OutdoorReliefReturnSection.nFanRel.start": { "expression": { @@ -5657,20 +5470,10 @@ "group": "Configuration", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.Components.Types.Fan.None", - "Buildings.Templates.Components.Types.Fan.SingleConstant", - "Buildings.Templates.Components.Types.Fan.SingleVariable", - "Buildings.Templates.Components.Types.Fan.ArrayVariable" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -7213,19 +7016,11 @@ "group": "", "tab": "", "visible": false, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, "recordBinding": true, - "options": [ - "Buildings.Fluid.Movers.BaseClasses.Characteristics.efficiencyParameters_yMot.y", - "Buildings.Fluid.Movers.BaseClasses.Characteristics.efficiencyParameters_yMot.eta" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -9285,12 +9080,7 @@ "group": "", "tab": "Advanced", "visible": false, - "enable": { - "operator": "none", - "operands": [ - "verifyFlowReversal" - ] - }, + "enable": "verifyFlowReversal", "modifiers": {}, "replaceable": false, "options": [], @@ -11276,12 +11066,7 @@ "group": "Motor speed", "tab": "Dynamics", "visible": true, - "enable": { - "operator": "none", - "operands": [ - "use_riseTime" - ] - }, + "enable": "use_riseTime", "modifiers": {}, "replaceable": false, "options": [], @@ -11569,12 +11354,7 @@ "group": "Motor speed", "tab": "Dynamics", "visible": false, - "enable": { - "operator": "none", - "operands": [ - "use_riseTime" - ] - }, + "enable": "use_riseTime", "modifiers": {}, "replaceable": false, "options": [], @@ -11594,12 +11374,7 @@ "group": "Motor speed", "tab": "Dynamics", "visible": false, - "enable": { - "operator": "none", - "operands": [ - "use_riseTime" - ] - }, + "enable": "use_riseTime", "modifiers": {}, "replaceable": false, "options": [], @@ -12493,19 +12268,10 @@ "group": "", "tab": "Graphics", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.Components.Types.FanSingle.Housed", - "Buildings.Templates.Components.Types.FanSingle.Plug", - "Buildings.Templates.Components.Types.FanSingle.Propeller" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -12579,12 +12345,7 @@ "group": "", "tab": "Graphics", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, "options": [], @@ -12604,12 +12365,7 @@ "group": "", "tab": "Graphics", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, "options": [], @@ -19986,22 +19742,10 @@ "group": "Configuration", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.Components.Types.Coil.ElectricHeating", - "Buildings.Templates.Components.Types.Coil.EvaporatorMultiStage", - "Buildings.Templates.Components.Types.Coil.EvaporatorVariableSpeed", - "Buildings.Templates.Components.Types.Coil.None", - "Buildings.Templates.Components.Types.Coil.WaterBasedCooling", - "Buildings.Templates.Components.Types.Coil.WaterBasedHeating" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -20012,21 +19756,10 @@ "group": "Configuration", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.Components.Types.Valve.None", - "Buildings.Templates.Components.Types.Valve.ThreeWayModulating", - "Buildings.Templates.Components.Types.Valve.ThreeWayTwoPosition", - "Buildings.Templates.Components.Types.Valve.TwoWayModulating", - "Buildings.Templates.Components.Types.Valve.TwoWayTwoPosition" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -20225,12 +19958,7 @@ "group": "Nominal condition", "tab": "", "visible": false, - "enable": { - "operator": "none", - "operands": [ - "have_sou" - ] - }, + "enable": "have_sou", "modifiers": { "Buildings.Templates.Components.Data.Coil.mWat_flow_nominal.min": { "expression": { @@ -20309,12 +20037,7 @@ "group": "Nominal condition", "tab": "", "visible": false, - "enable": { - "operator": "none", - "operands": [ - "have_sou" - ] - }, + "enable": "have_sou", "modifiers": { "Buildings.Templates.Components.Data.Coil.dpWat_nominal.min": { "expression": { @@ -20684,12 +20407,7 @@ "group": "Nominal condition", "tab": "", "visible": false, - "enable": { - "operator": "none", - "operands": [ - "have_sou" - ] - }, + "enable": "have_sou", "modifiers": { "Buildings.Templates.Components.Data.Coil.TWatEnt_nominal.min": { "expression": { @@ -20777,12 +20495,7 @@ "group": "Nominal condition", "tab": "", "visible": false, - "enable": { - "operator": "none", - "operands": [ - "have_sou" - ] - }, + "enable": "have_sou", "modifiers": { "Buildings.Templates.Components.Data.Coil.TAirEnt_nominal.min": { "expression": { @@ -22166,21 +21879,10 @@ "group": "Configuration", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.Components.Types.Valve.None", - "Buildings.Templates.Components.Types.Valve.ThreeWayModulating", - "Buildings.Templates.Components.Types.Valve.ThreeWayTwoPosition", - "Buildings.Templates.Components.Types.Valve.TwoWayModulating", - "Buildings.Templates.Components.Types.Valve.TwoWayTwoPosition" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -22640,12 +22342,7 @@ "group": "", "tab": "Graphics", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, "options": [], @@ -22665,12 +22362,7 @@ "group": "", "tab": "Graphics", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, "options": [], @@ -26135,12 +25827,7 @@ "group": "Nominal thermal performance", "tab": "", "visible": false, - "enable": { - "operator": "none", - "operands": [ - "use_Q_flow_nominal" - ] - }, + "enable": "use_Q_flow_nominal", "modifiers": { "Buildings.Fluid.HeatExchangers.BaseClasses.PartialEffectivenessNTU.Q_flow_nominal.fixed": { "expression": { @@ -26164,12 +25851,7 @@ "group": "Nominal thermal performance", "tab": "", "visible": false, - "enable": { - "operator": "none", - "operands": [ - "use_Q_flow_nominal" - ] - }, + "enable": "use_Q_flow_nominal", "modifiers": { "Buildings.Fluid.HeatExchangers.BaseClasses.PartialEffectivenessNTU.T_a1_nominal.fixed": { "expression": { @@ -26193,12 +25875,7 @@ "group": "Nominal thermal performance", "tab": "", "visible": false, - "enable": { - "operator": "none", - "operands": [ - "use_Q_flow_nominal" - ] - }, + "enable": "use_Q_flow_nominal", "modifiers": { "Buildings.Fluid.HeatExchangers.BaseClasses.PartialEffectivenessNTU.T_a2_nominal.fixed": { "expression": { @@ -29579,12 +29256,7 @@ "group": "Nominal thermal performance", "tab": "", "visible": false, - "enable": { - "operator": "none", - "operands": [ - "use_Q_flow_nominal" - ] - }, + "enable": "use_Q_flow_nominal", "modifiers": { "Buildings.Fluid.HeatExchangers.WetCoilEffectivenessNTU.Q_flow_nominal.fixed": { "expression": { @@ -29608,12 +29280,7 @@ "group": "Nominal thermal performance", "tab": "", "visible": false, - "enable": { - "operator": "none", - "operands": [ - "use_Q_flow_nominal" - ] - }, + "enable": "use_Q_flow_nominal", "modifiers": { "Buildings.Fluid.HeatExchangers.WetCoilEffectivenessNTU.T_a1_nominal.fixed": { "expression": { @@ -29637,12 +29304,7 @@ "group": "Nominal thermal performance", "tab": "", "visible": false, - "enable": { - "operator": "none", - "operands": [ - "use_Q_flow_nominal" - ] - }, + "enable": "use_Q_flow_nominal", "modifiers": { "Buildings.Fluid.HeatExchangers.WetCoilEffectivenessNTU.T_a2_nominal.fixed": { "expression": { @@ -29666,12 +29328,7 @@ "group": "Nominal thermal performance", "tab": "", "visible": false, - "enable": { - "operator": "none", - "operands": [ - "use_Q_flow_nominal" - ] - }, + "enable": "use_Q_flow_nominal", "modifiers": { "Buildings.Fluid.HeatExchangers.WetCoilEffectivenessNTU.w_a2_nominal.start": { "expression": { @@ -32798,12 +32455,7 @@ "group": "", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - "have_frePro" - ] - }, + "enable": "have_frePro", "modifiers": {}, "replaceable": false, "options": [ @@ -34816,12 +34468,7 @@ "group": "", "tab": "Freeze protection", "visible": true, - "enable": { - "operator": "none", - "operands": [ - "have_frePro" - ] - }, + "enable": "have_frePro", "modifiers": {}, "replaceable": false, "options": [], @@ -34841,12 +34488,7 @@ "group": "Heating coil PID Controller", "tab": "Freeze protection", "visible": true, - "enable": { - "operator": "none", - "operands": [ - "have_frePro" - ] - }, + "enable": "have_frePro", "modifiers": {}, "replaceable": false, "options": [ @@ -34871,12 +34513,7 @@ "group": "Heating coil PID Controller", "tab": "Freeze protection", "visible": true, - "enable": { - "operator": "none", - "operands": [ - "have_frePro" - ] - }, + "enable": "have_frePro", "modifiers": {}, "replaceable": false, "options": [], @@ -34994,12 +34631,7 @@ "group": "Heating coil PID Controller", "tab": "Freeze protection", "visible": true, - "enable": { - "operator": "none", - "operands": [ - "have_frePro" - ] - }, + "enable": "have_frePro", "modifiers": {}, "replaceable": false, "options": [], @@ -35019,12 +34651,7 @@ "group": "Heating coil PID Controller", "tab": "Freeze protection", "visible": true, - "enable": { - "operator": "none", - "operands": [ - "have_frePro" - ] - }, + "enable": "have_frePro", "modifiers": {}, "replaceable": false, "options": [], @@ -37487,12 +37114,7 @@ "group": "", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - "have_frePro" - ] - }, + "enable": "have_frePro", "modifiers": {}, "replaceable": false, "options": [ @@ -37518,12 +37140,7 @@ "group": "", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - "have_frePro" - ] - }, + "enable": "have_frePro", "modifiers": {}, "replaceable": false, "options": [ @@ -37547,12 +37164,7 @@ "group": "", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - "have_frePro" - ] - }, + "enable": "have_frePro", "modifiers": {}, "replaceable": false, "options": [ @@ -37576,12 +37188,7 @@ "group": "", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - "have_frePro" - ] - }, + "enable": "have_frePro", "modifiers": {}, "replaceable": false, "options": [ @@ -38003,12 +37610,7 @@ "group": "", "tab": "Advanced", "visible": true, - "enable": { - "operator": "none", - "operands": [ - "have_frePro" - ] - }, + "enable": "have_frePro", "modifiers": {}, "replaceable": false, "options": [], @@ -45405,12 +45007,7 @@ "group": "Hysteresis", "tab": "Advanced", "visible": true, - "enable": { - "operator": "none", - "operands": [ - "use_enthalpy" - ] - }, + "enable": "use_enthalpy", "modifiers": {}, "replaceable": false, "options": [], @@ -48394,12 +47991,7 @@ "group": "", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - "have_hol" - ] - }, + "enable": "have_hol", "modifiers": {}, "replaceable": false, "options": [], @@ -61729,12 +61321,7 @@ "group": "Economizer", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - "secOutRel.have_eco" - ] - }, + "enable": "secOutRel.have_eco", "modifiers": {}, "replaceable": false, "options": [ @@ -61847,12 +61434,7 @@ "group": "", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - "have_frePro" - ] - }, + "enable": "have_frePro", "modifiers": {}, "replaceable": false, "options": [ @@ -62558,18 +62140,10 @@ "group": "Configuration", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.AirHandlersFans.Types.Controller.G36VAVMultiZone", - "Buildings.Templates.AirHandlersFans.Types.Controller.OpenLoop" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -62580,20 +62154,10 @@ "group": "Configuration", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.Components.Types.Fan.None", - "Buildings.Templates.Components.Types.Fan.SingleConstant", - "Buildings.Templates.Components.Types.Fan.SingleVariable", - "Buildings.Templates.Components.Types.Fan.ArrayVariable" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -62604,20 +62168,10 @@ "group": "Configuration", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.Components.Types.Fan.None", - "Buildings.Templates.Components.Types.Fan.SingleConstant", - "Buildings.Templates.Components.Types.Fan.SingleVariable", - "Buildings.Templates.Components.Types.Fan.ArrayVariable" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -62628,20 +62182,10 @@ "group": "Configuration", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.Components.Types.Fan.None", - "Buildings.Templates.Components.Types.Fan.SingleConstant", - "Buildings.Templates.Components.Types.Fan.SingleVariable", - "Buildings.Templates.Components.Types.Fan.ArrayVariable" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -63425,12 +62969,7 @@ "tab": "", "visible": true, "modifiers": {}, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "choiceModifiers": {}, "replaceable": true, "options": [ @@ -63472,12 +63011,7 @@ "group": "", "tab": "Advanced", "visible": true, - "enable": { - "operator": "none", - "operands": [ - "cfg.have_souChiWat" - ] - }, + "enable": "cfg.have_souChiWat", "modifiers": {}, "replaceable": false, "options": [], @@ -63497,12 +63031,7 @@ "group": "", "tab": "Advanced", "visible": true, - "enable": { - "operator": "none", - "operands": [ - "cfg.have_souHeaWat" - ] - }, + "enable": "cfg.have_souHeaWat", "modifiers": {}, "replaceable": false, "options": [], @@ -63622,12 +63151,7 @@ "group": "Configuration", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, "options": [], @@ -65551,19 +65075,10 @@ "group": "Configuration", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersAirflow", - "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.DedicatedDampersPressure", - "Buildings.Controls.OBC.ASHRAE.G36.Types.OutdoorAirSection.SingleDamper" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -65574,21 +65089,10 @@ "group": "Configuration", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.BarometricRelief", - "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefDamper", - "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReliefFan", - "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanMeasuredAir", - "Buildings.Controls.OBC.ASHRAE.G36.Types.PressureControl.ReturnFanDp" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -65599,18 +65103,10 @@ "group": "Energy and ventilation standards", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1", - "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -66472,20 +65968,10 @@ "group": "Configuration", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.Components.Types.Damper.Modulating", - "Buildings.Templates.Components.Types.Damper.None", - "Buildings.Templates.Components.Types.Damper.PressureIndependent", - "Buildings.Templates.Components.Types.Damper.TwoPosition" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -66496,20 +65982,10 @@ "group": "Configuration", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.Components.Types.Damper.Modulating", - "Buildings.Templates.Components.Types.Damper.None", - "Buildings.Templates.Components.Types.Damper.PressureIndependent", - "Buildings.Templates.Components.Types.Damper.TwoPosition" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -66520,20 +65996,10 @@ "group": "Configuration", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.Components.Types.Damper.Modulating", - "Buildings.Templates.Components.Types.Damper.None", - "Buildings.Templates.Components.Types.Damper.PressureIndependent", - "Buildings.Templates.Components.Types.Damper.TwoPosition" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -66544,20 +66010,10 @@ "group": "Configuration", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.Components.Types.Damper.Modulating", - "Buildings.Templates.Components.Types.Damper.None", - "Buildings.Templates.Components.Types.Damper.PressureIndependent", - "Buildings.Templates.Components.Types.Damper.TwoPosition" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -67484,19 +66940,10 @@ "group": "Configuration", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxCoolingOnly", - "Buildings.Templates.ZoneEquipment.Types.Controller.G36VAVBoxReheat", - "Buildings.Templates.ZoneEquipment.Types.Controller.OpenLoop" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -68060,12 +67507,7 @@ "tab": "", "visible": true, "modifiers": {}, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "choiceModifiers": {}, "replaceable": true, "options": [ @@ -68127,12 +67569,7 @@ "group": "", "tab": "Advanced", "visible": true, - "enable": { - "operator": "none", - "operands": [ - "cfg.have_souChiWat" - ] - }, + "enable": "cfg.have_souChiWat", "modifiers": {}, "replaceable": false, "options": [], @@ -68152,12 +67589,7 @@ "group": "", "tab": "Advanced", "visible": true, - "enable": { - "operator": "none", - "operands": [ - "cfg.have_souHeaWat" - ] - }, + "enable": "cfg.have_souHeaWat", "modifiers": {}, "replaceable": false, "options": [], @@ -69245,18 +68677,10 @@ "group": "Energy and ventilation standards", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - false - ] - }, + "enable": false, "modifiers": {}, "replaceable": false, - "options": [ - "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.ASHRAE62_1", - "Buildings.Controls.OBC.ASHRAE.G36.Types.VentilationStandard.California_Title_24" - ], + "options": [], "definition": false, "shortExclType": false }, @@ -78399,12 +77823,7 @@ "group": "", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - "have_occSen" - ] - }, + "enable": "have_occSen", "modifiers": {}, "replaceable": false, "options": [], @@ -80758,12 +80177,7 @@ "group": "Setpoint adjustable setting", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - "have_locAdj" - ] - }, + "enable": "have_locAdj", "modifiers": {}, "replaceable": false, "options": [], @@ -80883,12 +80297,7 @@ "group": "Setpoints limits setting", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - "have_winSen" - ] - }, + "enable": "have_winSen", "modifiers": {}, "replaceable": false, "options": [], @@ -80908,12 +80317,7 @@ "group": "Setpoints limits setting", "tab": "", "visible": true, - "enable": { - "operator": "none", - "operands": [ - "have_winSen" - ] - }, + "enable": "have_winSen", "modifiers": {}, "replaceable": false, "options": [], diff --git a/docs/linkage-schema.md b/docs/linkage-schema.md index fbc72355..181767be 100644 --- a/docs/linkage-schema.md +++ b/docs/linkage-schema.md @@ -12,8 +12,7 @@ Read-Only Data types (static data extracted from modelica packages) - `SystemType`: template category - `Template`: Modelica Template - `Option`: a node of info from the template that either specifies how to render a dropdown or bit of UI, or links to a list of child `Option`s -- `ScheduleOption`: Like an `Option` but it also has a list of `ScheduleCategory`s -- `ScheduleCategory`: Category for `ScheduleOption` +- `ScheduleOption`: a `Table` object representing the column headers and cells of a schedule table derived from a Modelica record class Write Data types (data created from user input): diff --git a/server/src/parser/loader.ts b/server/src/parser/loader.ts index b50cb9a3..33e7c7ff 100644 --- a/server/src/parser/loader.ts +++ b/server/src/parser/loader.ts @@ -90,16 +90,15 @@ function systemGrep(regExp: string, dirPath: string): string[] | null { * Finds all entry points that contain the template identifier for a given package. * - LIMITATION: This function requires that the package uses * [Directory Hierarchy Mapping](https://specification.modelica.org/maint/3.6/packages.html#directory-hierarchy-mapping) - * - Currently, only entryPoints, TEMPLATE_LIST and PACKAGE_LIST are used. - * - In the future, when the UI can handle nested packages, entryPoints should be removed - * and templateNodes should be used to create the file tree structure. + * - Currently, templateNodes is flattened before being returned. + * - In the future, when the UI can handle nested packages, templateNodes should be + * used directly to create the file tree structure. * @param packageName - The Modelica class name of the package to search for entry points * @returns An array of objects containing the path and parsed JSON for each entry point found */ export function findPackageEntryPoints( packageName: string, ): { className: string; json: Object | undefined }[] { - const entryPoints: { className: string; json: Object | undefined }[] = []; MODELICA_JSON_PATH.forEach((dir) => { // We can simply convert the class name to a relative path without adding any file extension // because we only need a top directory to look up for entry points. diff --git a/server/src/parser/schedule.ts b/server/src/parser/schedule.ts index 878b7746..b20952fc 100644 --- a/server/src/parser/schedule.ts +++ b/server/src/parser/schedule.ts @@ -99,7 +99,6 @@ export interface Cell { // --- Full table --- export interface Table { - modelicaPath: string; // fully-qualified class name of the record, e.g. "Buildings.Templates.AirHandlersFans.Data.VAVMultiZone" configuration: string; // final type (after redeclare) of the component with instance name 'cfg' columns: Column[]; // tree of headers cells: Cell[]; @@ -129,7 +128,6 @@ export function buildParameterTable(className: string): Table { const configuration = redeclareMod?.redeclare ?? cfgComponent?.type ?? ""; return { - modelicaPath: className, configuration, columns, cells: [], // Empty cells - to be filled at UI runtime diff --git a/server/src/parser/template.ts b/server/src/parser/template.ts index 6d686992..811d6c65 100644 --- a/server/src/parser/template.ts +++ b/server/src/parser/template.ts @@ -11,6 +11,7 @@ import * as parser from "./parser"; import { evaluateExpression, Expression, Literal } from "./expression"; import { Modification } from "./modification"; +import { buildParameterTable, Table } from "./schedule"; const templateStore = new Map(); const systemTypeStore = new Map(); @@ -29,16 +30,16 @@ export function getProject(): Project { } type Options = { [key: string]: Option }; -type ScheduleOptions = { [key: string]: ScheduleOption }; +type ScheduleOptions = { [key: string]: Table }; export function getOptions(): { options: Option[]; - scheduleOptions: ScheduleOption[]; + scheduleOptions: Table[]; } { const templates = [...templateStore.values()]; let allConfigOptions = {}; - let allScheduleOptions = {}; + let allScheduleOptions: ScheduleOptions = {}; templates.map((t) => { const { options, scheduleOptions } = t.getOptions(); @@ -240,7 +241,7 @@ export interface ModifiersN { export class Template { scheduleOptionPaths: string[] = []; options: Options = {}; - scheduleOptions: ScheduleOptions = {}; + scheduleOptions: { [key: string]: Table } = {}; systemTypes: SystemTypeN[] = []; mods: { [key: string]: Expression } = {}; pathMods: { [key: string]: string } = {}; @@ -316,6 +317,44 @@ export class Template { return Object.keys(redeclaredTypes); } + /** + * Extracts schedule class paths from the `__ctrlFlow(schedule=...)` class annotation. + * + * The annotation value is a Modelica array literal of URI strings, e.g. + * `{"modelica://Buildings/Templates/AirHandlersFans/Data/VAVMultiZone.mo"}` + * + * Each URI ending in ".mo" is converted to dot-notation: + * `modelica://Buildings/Templates/AirHandlersFans/Data/VAVMultiZone.mo` + * → `Buildings.Templates.AirHandlersFans.Data.VAVMultiZone` + */ + _extractSchedulePaths(element: parser.Element): string[] { + const ctrlFlowAnnotation = element.annotation?.find( + (m) => m.name === "__ctrlFlow", + ); + if (!ctrlFlowAnnotation) return []; + + const scheduleMod = ctrlFlowAnnotation.mods.find( + (m) => m.name === "schedule", + ); + if (!scheduleMod) return []; + + const rawValue = evaluateExpression(scheduleMod.value); + if (typeof rawValue !== "string") return []; + + // Parse the Modelica array literal: strip outer { } then split on commas + const inner = rawValue.trim().replace(/^\{|\}$/g, ""); + return inner + .split(",") + .map((s) => s.trim().replace(/^"|"$/g, "")) + .filter((uri) => uri.endsWith(".mo")) + .map((uri) => + uri + .replace(/^modelica:\/\//, "") + .replace(/\//g, ".") + .replace(/\.mo$/, ""), + ); + } + _extractOptions(element: parser.Element) { let inputs = element.getInputs(); const redeclaredInputs = this._findRedeclareTypes(inputs) @@ -327,11 +366,17 @@ export class Template { inputs = { ...inputs, ...redeclaredInputs }; - const datEntryPoints = Object.values(inputs).filter((i) => { - return i.modelicaPath.endsWith(".dat"); - }); + this.scheduleOptionPaths = this._extractSchedulePaths(element); - this.scheduleOptionPaths = datEntryPoints.map((i) => i.modelicaPath); + this.scheduleOptions = {}; + for (const classPath of this.scheduleOptionPaths) { + try { + const table = buildParameterTable(classPath); + this.scheduleOptions[classPath] = table; + } catch { + // class not yet loaded in typeStore; skip + } + } this.options = {}; Object.entries(inputs).map(([key, input]) => { @@ -341,7 +386,6 @@ export class Template { // kludge: 'Modelica.Icons.Record' is useful for schematics but // never for 'Options' const modelicaIconsPath = "Modelica.Icons.Record"; - delete this.scheduleOptions[modelicaIconsPath]; delete this.options[modelicaIconsPath]; } @@ -406,7 +450,7 @@ export class Template { } getOptions() { - return { options: this.options, scheduleOptions: {} }; + return { options: this.options, scheduleOptions: this.scheduleOptions }; } getSystemTypes() { diff --git a/server/tests/integration/parser/schedule.test.ts b/server/tests/integration/parser/schedule.test.ts index 33225184..02865362 100644 --- a/server/tests/integration/parser/schedule.test.ts +++ b/server/tests/integration/parser/schedule.test.ts @@ -1,6 +1,10 @@ import { buildParameterTable, Table } from "../../../src/parser/schedule"; import * as parser from "../../../src/parser/parser"; -import { prependToModelicaJsonPath } from '../../../src/parser/loader'; +import { + prependToModelicaJsonPath, + TEMPLATE_LIST, +} from "../../../src/parser/loader"; +import { getTemplates } from "../../../src/parser/template"; import * as fs from "fs"; import * as path from "path"; import { execSync } from "child_process"; @@ -11,16 +15,21 @@ const DEBUG = !!process.env.DEBUG_SCHEDULE; const staticDataDir = "tests/static-data"; const jsonRecordPath = path.join(staticDataDir, "json"); const archivePath = path.join(staticDataDir, "json.tar.gz"); -const testRecordName = "Buildings.Templates.AirHandlersFans.Data.VAVMultiZone"; +const templateClassName = "Buildings.Templates.AirHandlersFans.VAVMultiZone"; +const scheduleRecordPath = + "Buildings.Templates.AirHandlersFans.Data.VAVMultiZone"; -describe("buildParameterTable", () => { +describe("Schedule builder", () => { let table: Table; + let template: ReturnType[number] | undefined; beforeAll(() => { execSync(`tar -xzf ${archivePath} -C ${staticDataDir}`); prependToModelicaJsonPath([jsonRecordPath]); - parser.getFile(testRecordName); // This populates parser.typeStore - table = buildParameterTable(testRecordName); + TEMPLATE_LIST.push(templateClassName); + parser.getFile(templateClassName); + template = getTemplates().find((t) => t.modelicaPath === templateClassName); + table = template!.scheduleOptions[scheduleRecordPath]; }); afterAll(() => { @@ -61,14 +70,26 @@ describe("buildParameterTable", () => { } }); - it("should throw an error for non-existent class", () => { + it("throws an error for non-existent class", () => { expect(() => buildParameterTable("NonExistent.Class")).toThrow( - "Class NonExistent.Class not found in typeStore" + "Class NonExistent.Class not found in typeStore", ); }); - it("should return a table with columns and empty cells", () => { -expect(table).toBeDefined(); + it("populates scheduleOptionPaths with dot-notation class names derived from Modelica URIs", () => { + expect(template).toBeDefined(); + expect(template!.scheduleOptionPaths).toEqual([scheduleRecordPath]); + }); + + it("populates scheduleOptions with a Table keyed by the record class path", () => { + expect(template).toBeDefined(); + expect(Object.keys(template!.scheduleOptions)).toEqual([ + scheduleRecordPath, + ]); + }); + + it("returns a table with columns and empty cells", () => { + expect(table).toBeDefined(); expect(table.columns).toBeDefined(); expect(Array.isArray(table.columns)).toBe(true); expect(table.cells).toBeDefined(); @@ -76,8 +97,8 @@ expect(table).toBeDefined(); expect(table.cells.length).toBe(0); }); - it("should create leaf columns for predefined type parameters", () => { -// Find any leaf columns (should exist for String, Boolean, Real, Integer types) + it("creates leaf columns for predefined type parameters", () => { + // Find any leaf columns (should exist for String, Boolean, Real, Integer types) const leafColumns = table.columns.filter((col) => col.kind === "leaf"); expect(leafColumns.length).toBeGreaterThan(0); @@ -90,31 +111,39 @@ expect(table).toBeDefined(); expect(typeof firstLeaf.label).toBe("string"); }); - it("should extract unit, displayUnit, min, max attributes for Real types", () => { + it("extracts unit, displayUnit, min, max attributes for Real types", () => { const allColumns = getAllColumns(table.columns); const leafColumns = allColumns.filter((col: any) => col.kind === "leaf"); // At least some leaf columns should have these attributes defined // (for Real types with modifiers) - const hasAttributeColumn = leafColumns.some((col: any) => - col.displayUnit !== undefined || - col.unit !== undefined || - col.min !== undefined || - col.max !== undefined + const hasAttributeColumn = leafColumns.some( + (col: any) => + col.displayUnit !== undefined || + col.unit !== undefined || + col.min !== undefined || + col.max !== undefined, ); expect(hasAttributeColumn).toBe(true); // For columns that do have these attributes, verify their types leafColumns.forEach((col: any) => { if (col.unit !== undefined) expect(typeof col.unit).toBe("string"); - if (col.displayUnit !== undefined) expect(typeof col.displayUnit).toBe("string"); - if (col.min !== undefined) expect(typeof col.min === "number" || typeof col.min === "object").toBe(true); - if (col.max !== undefined) expect(typeof col.max === "number" || typeof col.max === "object").toBe(true); + if (col.displayUnit !== undefined) + expect(typeof col.displayUnit).toBe("string"); + if (col.min !== undefined) + expect(typeof col.min === "number" || typeof col.min === "object").toBe( + true, + ); + if (col.max !== undefined) + expect(typeof col.max === "number" || typeof col.max === "object").toBe( + true, + ); }); }); - it("should extract displayUnit from modifiers", () => { -const allColumns = getAllColumns(table.columns); + it("extracts displayUnit from modifiers", () => { + const allColumns = getAllColumns(table.columns); const leafColumns = allColumns.filter((col: any) => col.kind === "leaf"); // Check that displayUnit can be extracted when present @@ -125,30 +154,35 @@ const allColumns = getAllColumns(table.columns); }); }); - it("should extract min and max from modifiers as numbers", () => { -const allColumns = getAllColumns(table.columns); + it("extracts min and max from modifiers as numbers", () => { + const allColumns = getAllColumns(table.columns); const leafColumns = allColumns.filter((col: any) => col.kind === "leaf"); // Check that min/max are numbers when present leafColumns.forEach((col: any) => { if (col.min !== undefined) { - expect(typeof col.min === "number" || typeof col.min === "object").toBe(true); + expect(typeof col.min === "number" || typeof col.min === "object").toBe( + true, + ); } if (col.max !== undefined) { - expect(typeof col.max === "number" || typeof col.max === "object").toBe(true); + expect(typeof col.max === "number" || typeof col.max === "object").toBe( + true, + ); } }); }); - it("should not extract attributes for non-Real predefined types", () => { + it("does not extract attributes for non-Real predefined types", () => { const allColumns = getAllColumns(table.columns); const leafColumns = allColumns.filter((col: any) => col.kind === "leaf"); // String, Boolean, Integer types should not have unit/displayUnit/min/max set - const nonRealColumns = leafColumns.filter((col: any) => - col.key.toLowerCase().includes("string") || - col.key.toLowerCase().includes("bool") || - col.key.toLowerCase().includes("integer") + const nonRealColumns = leafColumns.filter( + (col: any) => + col.key.toLowerCase().includes("string") || + col.key.toLowerCase().includes("bool") || + col.key.toLowerCase().includes("integer"), ); nonRealColumns.forEach((col: any) => { @@ -159,8 +193,8 @@ const allColumns = getAllColumns(table.columns); }); }); - it("should create group columns for parameters with Dialog group annotation", () => { -// Look for group columns + it("creates group columns for parameters with Dialog group annotation", () => { + // Look for group columns const groupColumns = table.columns.filter((col) => col.kind === "group"); expect(groupColumns.length).toBeGreaterThan(0); @@ -173,8 +207,8 @@ const allColumns = getAllColumns(table.columns); expect(Array.isArray(firstGroup.children)).toBe(true); }); - it("should create group columns for record type parameters", () => { -// The test template has a 'dat' parameter which is a record type + it("creates group columns for record type parameters", () => { + // The test template has a 'dat' parameter which is a record type // This should be represented as a group column with nested children const allColumns = getAllColumns(table.columns); const recordColumn = allColumns.find( @@ -182,26 +216,26 @@ const allColumns = getAllColumns(table.columns); col.kind === "group" && col.label && col.children && - col.children.length > 0 + col.children.length > 0, ); expect(recordColumn).toBeDefined(); }); - it("should not include outer, final, or deadEnd parameters", () => { -// Get all leaf columns + it("does not include outer, final, or deadEnd parameters", () => { + // Get all leaf columns const allColumns = getAllColumns(table.columns); const leafColumns = allColumns.filter((col: any) => col.kind === "leaf"); // Check that no final parameters are included const hasFinalParam = leafColumns.some((col: any) => - col.key.includes("should_ignore") + col.key.includes("should_ignore"), ); expect(hasFinalParam).toBe(false); }); - it("should handle nested group structures", () => { -// Find a group column and verify it can have children + it("handles nested group structures", () => { + // Find a group column and verify it can have children const groupColumns = table.columns.filter((col) => col.kind === "group"); if (groupColumns.length > 0) { const group = groupColumns[0] as any; @@ -210,31 +244,31 @@ const allColumns = getAllColumns(table.columns); } }); - it("should include parameters from inherited classes", () => { + it("includes parameters from inherited classes", () => { // TestTemplate extends ExtendInterface which has parameters -const allColumns = getAllColumns(table.columns); + const allColumns = getAllColumns(table.columns); const leafColumns = allColumns.filter((col: any) => col.kind === "leaf"); // Should have parameters from both the class itself and inherited classes expect(leafColumns.length).toBeGreaterThan(0); }); - it("should use parameter description as label", () => { -const allColumns = getAllColumns(table.columns); + it("uses parameter description as label", () => { + const allColumns = getAllColumns(table.columns); const leafColumns = allColumns.filter((col: any) => col.kind === "leaf"); // At least some parameters should have meaningful labels const hasDescriptiveLabel = leafColumns.some( - (col: any) => col.label && col.label.length > 0 + (col: any) => col.label && col.label.length > 0, ); expect(hasDescriptiveLabel).toBe(true); }); - it("should handle tab annotations", () => { -// The test data has a parameter with Dialog(tab="Tabby") + it("handles tab annotations", () => { + // The test data has a parameter with Dialog(tab="Tabby") const allColumns = getAllColumns(table.columns); const tabGroup = allColumns.find( - (col: any) => col.kind === "group" && col.label === "Tabby" + (col: any) => col.kind === "group" && col.label === "Tabby", ); // Tab should create a group if parameters use it @@ -243,8 +277,8 @@ const allColumns = getAllColumns(table.columns); } }); - it("should create unique keys for leaf columns", () => { -const allColumns = getAllColumns(table.columns); + it("creates unique keys for leaf columns", () => { + const allColumns = getAllColumns(table.columns); const leafColumns = allColumns.filter((col: any) => col.kind === "leaf"); const keys = leafColumns.map((col: any) => col.key); @@ -253,8 +287,8 @@ const allColumns = getAllColumns(table.columns); expect(uniqueKeys.size).toBe(keys.length); }); - it("should handle inheritance of attributes from parent types", () => { -const allColumns = getAllColumns(table.columns); + it("handles inheritance of attributes from parent types", () => { + const allColumns = getAllColumns(table.columns); const leafColumns = allColumns.filter((col: any) => col.kind === "leaf"); // If a parameter has a custom type that extends Real, diff --git a/server/tests/static-data/json.tar.gz b/server/tests/static-data/json.tar.gz index 962fd15e0fa5ac5b65ef2acffaa82cf021dd397a..a1040cdfe22a40422c62c439ef53487568d0d768 100644 GIT binary patch literal 62773 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 literal 68475 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

5YC8XVM|9_EJH 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 VsLvu~4`k11tAuu7&;SYO{{d=0gxmlC literal 0 HcmV?d00001 From 585dd99c7c9e81e212090f0051bcdc078a14c62e Mon Sep 17 00:00:00 2001 From: Jianjun Hu Date: Fri, 3 Apr 2026 13:52:45 -0700 Subject: [PATCH 14/16] upgraded github actions --- .github/workflows/client-tests.yml | 4 ++-- .github/workflows/prod-deploy.yml | 4 ++-- .github/workflows/server-tests.yml | 4 ++-- .github/workflows/staging-deploy.yml | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/client-tests.yml b/.github/workflows/client-tests.yml index 83e6d285..1e0b82ed 100644 --- a/.github/workflows/client-tests.yml +++ b/.github/workflows/client-tests.yml @@ -25,9 +25,9 @@ jobs: env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 with: node-version: ${{ matrix.node-version }} cache: "npm" diff --git a/.github/workflows/prod-deploy.yml b/.github/workflows/prod-deploy.yml index 1c2a4e20..761b2dae 100644 --- a/.github/workflows/prod-deploy.yml +++ b/.github/workflows/prod-deploy.yml @@ -52,9 +52,9 @@ jobs: env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 with: node-version: ${{ matrix.node-version }} cache: "npm" diff --git a/.github/workflows/server-tests.yml b/.github/workflows/server-tests.yml index 42dbd800..66fb2aea 100644 --- a/.github/workflows/server-tests.yml +++ b/.github/workflows/server-tests.yml @@ -27,9 +27,9 @@ jobs: env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up Node ${{ matrix.node-version }} - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 with: node-version: ${{ matrix.node-version }} cache: "npm" diff --git a/.github/workflows/staging-deploy.yml b/.github/workflows/staging-deploy.yml index 879f9ba9..94c7e594 100644 --- a/.github/workflows/staging-deploy.yml +++ b/.github/workflows/staging-deploy.yml @@ -52,9 +52,9 @@ jobs: env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 with: node-version: ${{ matrix.node-version }} cache: "npm" From a8759da548db7ea85d408e75007507b7185563c7 Mon Sep 17 00:00:00 2001 From: Jianjun Hu Date: Fri, 3 Apr 2026 15:19:40 -0700 Subject: [PATCH 15/16] upgraded workflow actions --- .github/workflows/prod-deploy.yml | 10 +++++----- .github/workflows/staging-deploy.yml | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/prod-deploy.yml b/.github/workflows/prod-deploy.yml index 761b2dae..530ea5b1 100644 --- a/.github/workflows/prod-deploy.yml +++ b/.github/workflows/prod-deploy.yml @@ -14,9 +14,9 @@ jobs: run: working-directory: server steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 with: node-version: ${{ matrix.node-version }} cache: "npm" @@ -31,7 +31,7 @@ jobs: - name: Copy templates.json out of the container run: docker cp $CONTAINER_ID:/server/scripts/templates.json $TEMPLATES_FILE_NAME - name: Upload templates.json as an artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: template path: ${{github.workspace}}/${{env.TEMPLATES_FILE_NAME}} @@ -60,13 +60,13 @@ jobs: cache: "npm" cache-dependency-path: client/package-lock.json - name: Configure AWS CLI - uses: aws-actions/configure-aws-credentials@v4 + uses: aws-actions/configure-aws-credentials@v5 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{secrets.AWS_SECRET_ACCESS_KEY }} aws-region: us-east-2 - name: Update template.json - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: name: template path: ${{github.workspace}}/client/src/data diff --git a/.github/workflows/staging-deploy.yml b/.github/workflows/staging-deploy.yml index 94c7e594..c4477856 100644 --- a/.github/workflows/staging-deploy.yml +++ b/.github/workflows/staging-deploy.yml @@ -14,9 +14,9 @@ jobs: run: working-directory: server steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 with: node-version: ${{ matrix.node-version }} cache: "npm" @@ -31,7 +31,7 @@ jobs: - name: Copy templates.json out of the container run: docker cp $CONTAINER_ID:/server/scripts/templates.json $TEMPLATES_FILE_NAME - name: Upload templates.json as an artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: template path: ${{github.workspace}}/${{env.TEMPLATES_FILE_NAME}} @@ -60,13 +60,13 @@ jobs: cache: "npm" cache-dependency-path: client/package-lock.json - name: Configure AWS CLI - uses: aws-actions/configure-aws-credentials@v4 + uses: aws-actions/configure-aws-credentials@v5 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{secrets.AWS_SECRET_ACCESS_KEY }} aws-region: us-east-2 - name: Update template.json - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: name: template path: ${{github.workspace}}/client/src/data From 18feaabf65cc82f6e659799bc45279442d5ead7c Mon Sep 17 00:00:00 2001 From: AntoineGautier Date: Tue, 7 Apr 2026 10:26:20 +0200 Subject: [PATCH 16/16] Check out test package from ag/508-schedule-builder --- .../tests/integration/parser/schedule.test.ts | 1 + server/tests/static-data/json.tar.gz | Bin 68475 -> 62773 bytes 2 files changed, 1 insertion(+) diff --git a/server/tests/integration/parser/schedule.test.ts b/server/tests/integration/parser/schedule.test.ts index 1c14561d..0a897d7b 100644 --- a/server/tests/integration/parser/schedule.test.ts +++ b/server/tests/integration/parser/schedule.test.ts @@ -14,6 +14,7 @@ const DEBUG = !!process.env.DEBUG_SCHEDULE; const staticDataDir = "tests/static-data"; const jsonRecordPath = path.join(staticDataDir, "json"); +// Test package with the annotation __ctrlFlow(schedule={"modelica://Buildings/Templates/AirHandlersFans/Data/VAVMultiZone.mo"}) const archivePath = path.join(staticDataDir, "json.tar.gz"); const templateClassName = "Buildings.Templates.AirHandlersFans.VAVMultiZone"; const scheduleRecordPath = diff --git a/server/tests/static-data/json.tar.gz b/server/tests/static-data/json.tar.gz index 962fd15e0fa5ac5b65ef2acffaa82cf021dd397a..a1040cdfe22a40422c62c439ef53487568d0d768 100644 GIT binary patch literal 62773 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 literal 68475 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

5YC8XVM|9_EJH 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 VsLvu~4`k11tAuu7&;SYO{{d=0gxmlC

5YC8XVM|9_EJH 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 VsLvu~4`k11tAuu7&;SYO{{d=0gxmlC From ff66a327bc11edbb2e01c88fe8ab1389c604811e Mon Sep 17 00:00:00 2001 From: AntoineGautier Date: Fri, 27 Feb 2026 09:37:11 +0100 Subject: [PATCH 10/16] Update doc --- docs/linkage-schema.md | 72 +++++++++++++++++++++++++++++++++--------- 1 file changed, 57 insertions(+), 15 deletions(-) diff --git a/docs/linkage-schema.md b/docs/linkage-schema.md index 181767be..a5255700 100644 --- a/docs/linkage-schema.md +++ b/docs/linkage-schema.md @@ -151,24 +151,64 @@ export type Expression = { `Operator`: a string indicating which operation. `none` is a special operator indiciating the operand is a `Literal` that requires no evaluation. `Operands`: a list that can either be a literal value (like the number `4`) or another expression to resolve -### Schedule Table reorganization +### Schedule Table -Inputs for the schedule table are generically extracted in the same option tree used for configurations. The parser needs to be updated to unpack the tree into more convenient format as well as include grouping information for the schedule table. +Scheduled parameters are extracted from Modelica record classes specified for each template using the class annotation `__ctrlFlow(schedule={"modelica://..."})`. -`ScheduleGroup`: +The schedule parser transforms these records into a structured `Table` object that represents both the header structure (columns) and data cells. + +`LeafColumn` — a concrete parameter column: ```typescript -interface ScheduleGroup { - modelicaPath: string; - name: string; +interface LeafColumn { + kind: "leaf"; + key: string; // unique dotted path, e.g. "coiCoo.dat.mAir_flow" + label: string; // display label, e.g. "Air flow rate" + value?: number | string | boolean | Expression; // default binding + final?: boolean; // true if locked by a final modifier + unit?: string; + displayUnit?: string; + min?: number | Expression; + max?: number | Expression; + start?: number | Expression; + enable?: boolean | Expression; +} +``` + +`GroupColumn` — a named column group, nestable arbitrarily deep: +- Created from `Dialog(group=...)` or `Dialog(tab=...)` annotations +- Created for record-typed component instances (children are the record's parameters) + +```typescript +interface GroupColumn { + kind: "group"; + label: string; // e.g. "Cooling coil" + children: Column[]; // nested LeafColumn or GroupColumn entries + enable?: boolean | Expression; +} +``` + +```typescript +type Column = LeafColumn | GroupColumn; +``` + +`Cell` — a single data value for a given row and column: + +```typescript +interface Cell { + rowIndex: number; + columnKey: string; // matches a LeafColumn key + value: string | number | boolean | null; } ``` -`ScheduleOption`: +`Table` — the complete schedule table: ```typescript -interface ScheduleOption extends OptionInterface { - ScheduleGroups: string[]; // in-order list of schedule groups +interface Table { + configuration: string; // effective type path of the 'cfg' component + columns: Column[]; // tree of headers + cells: Cell[]; // data cells, filled at UI runtime } ``` @@ -177,15 +217,17 @@ From this example table: ``` | group1 | | subgroup1 | subgroup2 | subgroup3 | - |--------|-----------------|--------|--------|-----------------| - | param1 | param2 | param3 | param4 | param5 | param6 | param7 | + Row |--------|-----------------|--------|--------|-----------------| + index | param1 | param2 | param3 | param4 | param5 | param6 | param7 | |-------|--------|--------|--------|--------|--------|--------|--------| -| row1 | val1 | val2 | val3 | val4 | val5 | val6 | val7 | -| row2 | ... +| 1 | val1 | val2 | val3 | val4 | val5 | val6 | val7 | +| 2 | ... ``` -- Each 'val' cell is its own `Option` with a unique modelica path -- Each `Option` can be grouped in an arbitrary number of groups. `val1` is in no groups, `val2` in one ('subgroup1') and `val4` in two ('group1', 'subgroup2'). The `ScheduleGroups` array for `val4` would look as follows: `['group1', 'subgroup2']` +- `param1` is a `LeafColumn` at the top level (`columns` array directly). +- `param2` and `param3` are `LeafColumn` entries nested inside a `GroupColumn` with `label: "subgroup1"`. +- `param4` and `param5` are `LeafColumn` entries nested inside a `GroupColumn` with `label: "subgroup2"`, which is itself nested inside a `GroupColumn` with `label: "group1"`. +- Each 'val' cell is a `Cell` whose `columnKey` matches the corresponding `LeafColumn`'s `key`. ## Write Data - User Configurations From 9c0d752368a37ac98fdc4b309907ee316fc9ad61 Mon Sep 17 00:00:00 2001 From: AntoineGautier Date: Tue, 3 Mar 2026 10:01:52 +0100 Subject: [PATCH 11/16] Add type, add instance name to record instance --- docs/linkage-schema.md | 9 +++-- server/src/parser/schedule.ts | 35 +++++++++++-------- .../tests/integration/parser/schedule.test.ts | 16 ++++----- 3 files changed, 35 insertions(+), 25 deletions(-) diff --git a/docs/linkage-schema.md b/docs/linkage-schema.md index a5255700..5d3b340c 100644 --- a/docs/linkage-schema.md +++ b/docs/linkage-schema.md @@ -162,8 +162,9 @@ The schedule parser transforms these records into a structured `Table` object th ```typescript interface LeafColumn { kind: "leaf"; - key: string; // unique dotted path, e.g. "coiCoo.dat.mAir_flow" + instanceName: string; // relative instance name, e.g. "ctl.k" label: string; // display label, e.g. "Air flow rate" + type: string; value?: number | string | boolean | Expression; // default binding final?: boolean; // true if locked by a final modifier unit?: string; @@ -183,6 +184,8 @@ interface LeafColumn { interface GroupColumn { kind: "group"; label: string; // e.g. "Cooling coil" + instanceName?: string; // relative instance name, present only for record instances + type?: string; children: Column[]; // nested LeafColumn or GroupColumn entries enable?: boolean | Expression; } @@ -197,7 +200,7 @@ type Column = LeafColumn | GroupColumn; ```typescript interface Cell { rowIndex: number; - columnKey: string; // matches a LeafColumn key + columnInstanceName: string; // matches a LeafColumn instanceName value: string | number | boolean | null; } ``` @@ -227,7 +230,7 @@ From this example table: - `param1` is a `LeafColumn` at the top level (`columns` array directly). - `param2` and `param3` are `LeafColumn` entries nested inside a `GroupColumn` with `label: "subgroup1"`. - `param4` and `param5` are `LeafColumn` entries nested inside a `GroupColumn` with `label: "subgroup2"`, which is itself nested inside a `GroupColumn` with `label: "group1"`. -- Each 'val' cell is a `Cell` whose `columnKey` matches the corresponding `LeafColumn`'s `key`. +- Each 'val' cell is a `Cell` whose `columnInstanceName` matches the corresponding `LeafColumn`'s `instanceName`. ## Write Data - User Configurations diff --git a/server/src/parser/schedule.ts b/server/src/parser/schedule.ts index b20952fc..2874f236 100644 --- a/server/src/parser/schedule.ts +++ b/server/src/parser/schedule.ts @@ -16,7 +16,7 @@ * table.columns.forEach(column => { * if (column.kind === "leaf") { * console.log(`Parameter: ${column.label}`); - * console.log(` Key: ${column.key}`); // relative instance path, e.g. "ctl.k" + * console.log(` Instance name: ${column.instanceName}`); // relative instance path, e.g. "ctl.k" * console.log(` Unit: ${column.unit}`); * console.log(` Display Unit: ${column.displayUnit}`); * console.log(` Min: ${column.min}, Max: ${column.max}`); @@ -27,17 +27,17 @@ * }); * * // Add cells at runtime; rowIndex groups cells into logical rows. - * // To retrieve the enable expression for a cell, look up the LeafColumn by columnKey. + * // To retrieve the enable expression for a cell, look up the LeafColumn by columnInstanceName. * table.cells.push( - * { rowIndex: 0, columnKey: "ctl.k", value: 1.5 }, - * { rowIndex: 0, columnKey: "coiHeaReh.dpAir_nominal", value: 250 }, + * { rowIndex: 0, columnInstanceName: "ctl.k", value: 1.5 }, + * { rowIndex: 0, columnInstanceName: "coiHeaReh.dpAir_nominal", value: 250 }, * ); * ``` * * ## Column Structure * * - **LeafColumn**: Represents a single parameter - * - `key`: instance path relative to the top-level record + * - `instanceName`: instance path relative to the top-level record * - `label`: description string or parameter name * - `unit`, `displayUnit`: resolved by walking the type alias chain * (e.g. `PressureDifference → Pressure → Real(unit="Pa")`) @@ -67,8 +67,9 @@ import { evaluateExpression, Expression, Literal } from "./expression"; export interface LeafColumn { kind: "leaf"; - key: string; // unique identifier, e.g. "cooling_air_flow" + instanceName: string; // relative instance name, e.g. "ctl.k" label: string; // display label, e.g. "Air flow rate" + type: string; value?: number | string | boolean | Expression; // default binding; absent if unset final?: boolean; // true if the value is locked by a final modifier unit?: string; @@ -82,6 +83,8 @@ export interface LeafColumn { export interface GroupColumn { kind: "group"; label: string; // e.g. "Cooling coil" + instanceName?: string; // relative instance name, present only for record instances + type?: string; children: Column[]; // can nest arbitrarily deep enable?: boolean | Expression; // __ctrlFlow.enable=false overrides Dialog.enable; otherwise use Dialog.enable } @@ -92,7 +95,7 @@ export type Column = LeafColumn | GroupColumn; export interface Cell { rowIndex: number; - columnKey: string; // matches a LeafColumn key; use table.columns to look up column.enable + columnInstanceName: string; // matches a LeafColumn instanceName; use table.columns to look up column.enable value: string | number | boolean | null; } @@ -120,7 +123,8 @@ export function buildParameterTable(className: string): Table { // Find the 'cfg' component and resolve its effective type after any redeclare const childElements = (element as LongClass).getChildElements?.() ?? []; const cfgComponent = childElements.find( - (c) => c.elementType === "component_clause" && (c as Component).name === "cfg", + (c) => + c.elementType === "component_clause" && (c as Component).name === "cfg", ) as Component | undefined; const redeclareMod = (element as LongClass).mods?.find( (m) => m.name === "cfg" && m.redeclare, @@ -229,7 +233,7 @@ function rebasePath( * * @param element - The record type definition to traverse * @param instancePath - The dotted instance path relative to the top-level record - * (e.g. "coiCoo" or "coiCoo.dat"). Used to rebase keys. + * (e.g. "coiCoo" or "coiCoo.dat"). Used to rebase instance names. * @param modMap - Modifier overrides propagated from parent declarations * (e.g. coiCoo(typ=cfg.typCoiCoo) produces {typ -> cfg.typCoiCoo}) */ @@ -283,18 +287,18 @@ function buildColumnsFromElement( continue; } - // Build the key as a relative path from the top-level record. + // Build the instance name as a relative path from the top-level record. // For nested records, rebasePath strips the type-root prefix and replaces it // with the instance path. For top-level components (instancePath="") and for // inherited components whose modelicaPath is rooted at a parent class (not // element.modelicaPath), we fall back to using component.name directly so - // the key is always a short relative name, never an absolute type path. + // the name is always a short relative name, never an absolute type path. const rebasedName = instancePath ? rebasePath(component.modelicaPath, element.modelicaPath, instancePath) : component.name; // If rebasePath couldn't strip the type prefix (inherited component from a - // parent class), fall back to composing the key from component.name directly. - const key = rebasedName.startsWith(instancePath) + // parent class), fall back to composing the name from component.name directly. + const instanceName = rebasedName.startsWith(instancePath) ? rebasedName : instancePath ? `${instancePath}.${component.name}` @@ -327,8 +331,9 @@ function buildColumnsFromElement( ); column = { kind: "leaf", - key, + instanceName: instanceName, label: component.description || component.name, + type: effectiveTypePath, ...attributes, }; } else { @@ -357,7 +362,9 @@ function buildColumnsFromElement( ); column = { kind: "group", + instanceName: nestedInstancePath, label: component.description || component.name, + type: effectiveTypePath, children: recordColumns, ...(groupAttributes.enable !== undefined && { enable: groupAttributes.enable, diff --git a/server/tests/integration/parser/schedule.test.ts b/server/tests/integration/parser/schedule.test.ts index 02865362..1c14561d 100644 --- a/server/tests/integration/parser/schedule.test.ts +++ b/server/tests/integration/parser/schedule.test.ts @@ -45,7 +45,7 @@ describe("Schedule builder", () => { const collect = (columns: any[]) => { for (const col of columns) { if (col.kind === "leaf") { - if (col.key) keys.push(col.key); + if (col.instanceName) keys.push(col.instanceName); const collectOperands = (val: any) => { if (val === null || val === undefined) return; if (typeof val === "object" && "operands" in val) { @@ -105,8 +105,8 @@ describe("Schedule builder", () => { // Check structure of a leaf column const firstLeaf = leafColumns[0] as any; expect(firstLeaf.kind).toBe("leaf"); - expect(firstLeaf.key).toBeDefined(); - expect(typeof firstLeaf.key).toBe("string"); + expect(firstLeaf.instanceName).toBeDefined(); + expect(typeof firstLeaf.instanceName).toBe("string"); expect(firstLeaf.label).toBeDefined(); expect(typeof firstLeaf.label).toBe("string"); }); @@ -180,9 +180,9 @@ describe("Schedule builder", () => { // String, Boolean, Integer types should not have unit/displayUnit/min/max set const nonRealColumns = leafColumns.filter( (col: any) => - col.key.toLowerCase().includes("string") || - col.key.toLowerCase().includes("bool") || - col.key.toLowerCase().includes("integer"), + col.instanceName.toLowerCase().includes("string") || + col.instanceName.toLowerCase().includes("bool") || + col.instanceName.toLowerCase().includes("integer"), ); nonRealColumns.forEach((col: any) => { @@ -229,7 +229,7 @@ describe("Schedule builder", () => { // Check that no final parameters are included const hasFinalParam = leafColumns.some((col: any) => - col.key.includes("should_ignore"), + col.instanceName.includes("should_ignore"), ); expect(hasFinalParam).toBe(false); }); @@ -280,7 +280,7 @@ describe("Schedule builder", () => { it("creates unique keys for leaf columns", () => { const allColumns = getAllColumns(table.columns); const leafColumns = allColumns.filter((col: any) => col.kind === "leaf"); - const keys = leafColumns.map((col: any) => col.key); + const keys = leafColumns.map((col: any) => col.instanceName); // All keys should be unique const uniqueKeys = new Set(keys); From cbefc651fe1cee0dbb52750a79df46f89778d869 Mon Sep 17 00:00:00 2001 From: Jianjun Hu Date: Fri, 3 Apr 2026 12:54:24 -0700 Subject: [PATCH 12/16] deleted tar file --- server/tests/static-data/json.tar.gz | Bin 62773 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 server/tests/static-data/json.tar.gz diff --git a/server/tests/static-data/json.tar.gz b/server/tests/static-data/json.tar.gz deleted file mode 100644 index a1040cdfe22a40422c62c439ef53487568d0d768..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62773 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 From a0733bb922e494ed2f798fbda2bb960ee1c9f5ad Mon Sep 17 00:00:00 2001 From: Jianjun Hu Date: Fri, 3 Apr 2026 13:41:47 -0700 Subject: [PATCH 13/16] recoverred the json.tar.gz --- server/tests/static-data/json.tar.gz | Bin 0 -> 68475 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 server/tests/static-data/json.tar.gz diff --git a/server/tests/static-data/json.tar.gz b/server/tests/static-data/json.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..962fd15e0fa5ac5b65ef2acffaa82cf021dd397a GIT binary patch literal 68475 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