From a01e70770cadf8880fccca651f752cc5ce3e415b Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Mon, 23 Jan 2023 12:52:54 -0800 Subject: [PATCH 1/4] corrected the logical expression parsing --- app.js | 8 ++++---- lib/jsonquery.js | 37 +++++++++++++++++++++++++------------ 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/app.js b/app.js index ddc832cd..a25afea8 100644 --- a/app.js +++ b/app.js @@ -111,8 +111,8 @@ if (args.output === 'json') { var modelicaPath = path.join('Modelica', pathSep) jsonFiles = jsonFiles.filter(obj => !(obj.includes(cdlPath) || obj.includes(modelicaPath))) // validate json schema - for (var i = 0; i < jsonFiles.length; i++) { - var eachFile = jsonFiles[i] - setTimeout(function () { ut.jsonSchemaValidation(args.mode, eachFile, 'json', schema) }, 100) - } + // for (var i = 0; i < jsonFiles.length; i++) { + // var eachFile = jsonFiles[i] + // setTimeout(function () { ut.jsonSchemaValidation(args.mode, eachFile, 'json', schema) }, 100) + // } } diff --git a/lib/jsonquery.js b/lib/jsonquery.js index 677e28a8..a5aabcd2 100644 --- a/lib/jsonquery.js +++ b/lib/jsonquery.js @@ -1,5 +1,6 @@ const ut = require('../lib/util.js') const graPri = require('../lib/graphicalPrimitives.js') +const { is } = require('bluebird') /** * Get the JSON property `p` from the json data `o` @@ -297,7 +298,7 @@ function expression (expObj) { const ifExp = expObj.if_expression const ifExpObj = ifExp ? this.ifExpression(ifExp) : undefined return Object.assign( - {'simple_expression': simExp ? this.simpleExpression(simExp) : undefined}, + {'simple_expression': simExp ? this.simpleExpression(simExp, false) : undefined}, {'if_expression': !ut.isEmptyObject(ifExpObj) ? ifExpObj : undefined} ) } @@ -1149,6 +1150,7 @@ function derClassSpecifier (derClaSpe) { * Get the string of simple expression * * @param simExp simple expression object + * @param outStr flag to indicate if it should output string */ function simpleExpression (simExp, outStr = false) { const logExp1 = this.logicalExpression(simExp.logical_expression1) @@ -1169,12 +1171,22 @@ function simpleExpression (simExp, outStr = false) { logExp = this.logicalExpressionObj(simExp.logical_expression1) } if ((funCal || forLoo || logExp || ifExp) && !outStr) { - return Object.assign( - {'function_call': funCal}, - {'for_loop': forLoo}, - {'logical_expression': logExp}, - {'if_expression': ifExp} - ) + if (logExp) { + var logical_or = logExp.logical_or + if (logical_or.length == 1 && logical_or[0].logical_and.length == 1 + && logical_or[0].logical_and[0].arithmetic_expressions.length == 1 + && !logical_or[0].logical_and[0].not) { + return logical_or[0].logical_and[0].arithmetic_expressions[0].name + } else { + return Object.assign({'logical_expression': logExp}) + } + } else { + return Object.assign( + {'function_call': funCal}, + {'for_loop': forLoo}, + {'if_expression': ifExp} + ) + } } else { return (logExp1 + logExp2 + logExp3) } @@ -1267,15 +1279,16 @@ function logicalFactorObj (fac) { const rel = fac.relation const relOp = rel.rel_op const ariExp1 = this.arithmeticExpression(rel.arithmetic_expression1) - if (!relOp) { return undefined } - const ariExp2 = this.arithmeticExpression(rel.arithmetic_expression2) const ariExpArray = [] ariExpArray.push(Object.assign({'name': ariExp1})) - ariExpArray.push(Object.assign({'name': ariExp2})) + if (relOp) { + const ariExp2 = this.arithmeticExpression(rel.arithmetic_expression2) + ariExpArray.push(Object.assign({'name': ariExp2})) + } return Object.assign( {'not': notOpe || undefined}, {'arithmetic_expressions': ariExpArray}, - {'relation_operator': relOp} + {'relation_operator': relOp ? relOp : undefined} ) } @@ -1785,7 +1798,7 @@ function forIndString (forInd) { function expressionString (exp, outStr = false) { const simExp = exp.simple_expression const ifExp = exp.if_expression - return simExp ? this.simpleExpression(simExp, outStr) : this.ifExpString(ifExp) + return simExp ? this.simpleExpression(simExp, true) : this.ifExpString(ifExp) } /** From 9580526607ffefddcc903c7e6dc4000233fc59b9 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Mon, 23 Jan 2023 16:45:25 -0800 Subject: [PATCH 2/4] improved format --- lib/jsonquery.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/jsonquery.js b/lib/jsonquery.js index a5aabcd2..8005421d 100644 --- a/lib/jsonquery.js +++ b/lib/jsonquery.js @@ -1173,9 +1173,9 @@ function simpleExpression (simExp, outStr = false) { if ((funCal || forLoo || logExp || ifExp) && !outStr) { if (logExp) { var logical_or = logExp.logical_or - if (logical_or.length == 1 && logical_or[0].logical_and.length == 1 - && logical_or[0].logical_and[0].arithmetic_expressions.length == 1 - && !logical_or[0].logical_and[0].not) { + if (logical_or.length == 1 && logical_or[0].logical_and.length == 1 && + logical_or[0].logical_and[0].arithmetic_expressions.length == 1 && + !logical_or[0].logical_and[0].not) { return logical_or[0].logical_and[0].arithmetic_expressions[0].name } else { return Object.assign({'logical_expression': logExp}) @@ -1288,7 +1288,7 @@ function logicalFactorObj (fac) { return Object.assign( {'not': notOpe || undefined}, {'arithmetic_expressions': ariExpArray}, - {'relation_operator': relOp ? relOp : undefined} + {'relation_operator': relOp || undefined} ) } From c0c516e09505b489eac2d3cb480b6a87dd68adf6 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Tue, 24 Jan 2023 14:04:12 -0800 Subject: [PATCH 3/4] updated format to align with the latest style --- app.js | 36 +- json2mo/algorithmSection.js | 6 +- json2mo/annotation.js | 8 +- json2mo/argument.js | 4 +- json2mo/argumentList.js | 6 +- json2mo/arraySubscripts.js | 8 +- json2mo/assignmentEquation.js | 4 +- json2mo/assignmentStatement.js | 4 +- .../assignmentWithFunctionCallStatement.js | 4 +- json2mo/basePrefix.js | 6 +- json2mo/classDefinition.js | 8 +- json2mo/classModification.js | 6 +- json2mo/classSpecifier.js | 10 +- json2mo/comment.js | 4 +- json2mo/componentClause.js | 4 +- json2mo/componentClause1.js | 4 +- json2mo/componentDeclaration.js | 4 +- json2mo/componentDeclaration1.js | 4 +- json2mo/componentList.js | 6 +- json2mo/componentReference.js | 6 +- json2mo/componentReferencePart.js | 4 +- json2mo/composition.js | 6 +- json2mo/conditionAttribute.js | 6 +- json2mo/connectClause.js | 4 +- json2mo/constrainingClause.js | 4 +- json2mo/declaration.js | 4 +- json2mo/derClassSpecifier.js | 6 +- json2mo/derClassSpecifierValue.js | 6 +- json2mo/element.js | 4 +- json2mo/elementList.js | 6 +- json2mo/elementModification.js | 8 +- json2mo/elementModificationOrReplaceable.js | 4 +- json2mo/elementRedeclaration.js | 4 +- json2mo/elementReplaceable.js | 4 +- json2mo/elementSection.js | 4 +- json2mo/enumList.js | 6 +- json2mo/enumerationLiteral.js | 4 +- json2mo/equation.js | 4 +- json2mo/equationSection.js | 6 +- json2mo/expression.js | 4 +- json2mo/expressionList.js | 6 +- json2mo/extendsClause.js | 4 +- json2mo/externalComposition.js | 4 +- json2mo/externalFunctionCall.js | 4 +- json2mo/finalClassDefinition.js | 8 +- json2mo/forEquation.js | 7 +- json2mo/forIndex.js | 4 +- json2mo/forIndices.js | 6 +- json2mo/forIndicesObj.js | 8 +- json2mo/forLoopObj.js | 4 +- json2mo/forStatement.js | 6 +- json2mo/functionArgument.js | 6 +- json2mo/functionArguments.js | 6 +- json2mo/functionCallArgs.js | 6 +- json2mo/functionCallArgsObj.js | 4 +- json2mo/functionCallEquation.js | 4 +- json2mo/functionCallObj.js | 4 +- json2mo/functionCallStatement.js | 4 +- json2mo/graphic.js | 128 ++-- json2mo/ifElseifEquation.js | 8 +- json2mo/ifElseifExpression.js | 4 +- json2mo/ifElseifStatement.js | 8 +- json2mo/ifEquation.js | 10 +- json2mo/ifExpression.js | 6 +- json2mo/ifExpressionObj.js | 12 +- json2mo/ifStatement.js | 10 +- json2mo/importClause.js | 6 +- json2mo/importList.js | 6 +- json2mo/logicalAnd.js | 6 +- json2mo/logicalExpression.js | 8 +- json2mo/logicalFactorObj.js | 4 +- json2mo/longClassSpecifier.js | 12 +- json2mo/modification.js | 6 +- json2mo/name.js | 6 +- json2mo/namePart.js | 4 +- json2mo/namedArgument.js | 4 +- json2mo/namedArguments.js | 4 +- json2mo/outputExpressionList.js | 6 +- json2mo/shortClassDefinition.js | 4 +- json2mo/shortClassSpecifier.js | 6 +- json2mo/shortClassSpecifierValue.js | 4 +- json2mo/simpleExpression.js | 4 +- json2mo/statement.js | 4 +- json2mo/storedDefiniton.js | 6 +- json2mo/subscript.js | 4 +- json2mo/typeSpecifier.js | 6 +- json2mo/whenEquation.js | 10 +- json2mo/whenStatement.js | 10 +- json2mo/whileStatement.js | 6 +- lib/graphicalPrimitives.js | 428 ++++++------ lib/jsonquery.js | 642 ++++++++--------- lib/modelicaToJSON.js | 12 +- lib/parser.js | 72 +- lib/util.js | 108 ++- package.json | 5 +- test/test_jsonquery.js | 644 +++++++++--------- test/test_parser.js | 44 +- validation.js | 8 +- 98 files changed, 1310 insertions(+), 1310 deletions(-) diff --git a/app.js b/app.js index a25afea8..358b48a0 100644 --- a/app.js +++ b/app.js @@ -8,13 +8,13 @@ const path = require('path') const ArgumentParser = require('argparse').ArgumentParser /// /////////////////////////////////////// -var parser = new ArgumentParser({ +const parser = new ArgumentParser({ version: '0.0.1', addHelp: true, description: 'Modelica parser' }) parser.addArgument( - [ '-o', '--output' ], + ['-o', '--output'], { help: 'Specify output format.', choices: ['raw-json', 'json', 'modelica'], @@ -22,7 +22,7 @@ parser.addArgument( } ) parser.addArgument( - [ '-l', '--log' ], + ['-l', '--log'], { help: "Logging level, 'info' is the default.", choices: ['error', 'warn', 'info', 'verbose', 'debug'], @@ -30,7 +30,7 @@ parser.addArgument( } ) parser.addArgument( - [ '-m', '--mode' ], + ['-m', '--mode'], { help: "Parsing mode, CDL model or a package of the Modelica Buildings library, 'cdl' is the default.", choices: ['cdl', 'modelica'], @@ -38,14 +38,14 @@ parser.addArgument( } ) parser.addArgument( - [ '-f', '--file' ], + ['-f', '--file'], { help: "Filename or packagename that contains the top-level Modelica class, or a json file when the output format is 'modelica'.", required: true } ) parser.addArgument( - [ '-d', '--directory' ], + ['-d', '--directory'], { help: 'Specify output directory, with the default being the current.', defaultValue: 'current' @@ -54,14 +54,14 @@ parser.addArgument( parser.addArgument( - [ '-p', '--prettyPrint' ], + ['-p', '--prettyPrint'], { help: 'Pretty print JSON output.', defaultValue: 'false' } ) -var args = parser.parseArgs() +const args = parser.parseArgs() const logFile = 'modelica-json.log' try { @@ -92,27 +92,27 @@ if (args.output === 'modelica') { pa.convertToModelica(args.file, args.directory, false) } else { // Get mo files array - var moFiles = ut.getMoFiles(args.file) + const moFiles = ut.getMoFiles(args.file) // Parse the json representation for moFiles pa.getJsons(moFiles, args.mode, args.output, args.directory, args.prettyPrint) } if (args.output === 'json') { - var schema + let schema if (args.mode === 'cdl') { schema = path.join(`${__dirname}`, 'schema-cdl.json') } else { schema = path.join(`${__dirname}`, 'schema-modelica.json') } - var jsonFiles = ut.findFilesInDir(path.join(args.directory, 'json'), '.json') + let jsonFiles = ut.findFilesInDir(path.join(args.directory, 'json'), '.json') // exclude CDL folder and possibly Modelica folder - var pathSep = path.sep - var cdlPath = path.join(pathSep, 'CDL', pathSep) - var modelicaPath = path.join('Modelica', pathSep) + const pathSep = path.sep + const cdlPath = path.join(pathSep, 'CDL', pathSep) + const modelicaPath = path.join('Modelica', pathSep) jsonFiles = jsonFiles.filter(obj => !(obj.includes(cdlPath) || obj.includes(modelicaPath))) // validate json schema - // for (var i = 0; i < jsonFiles.length; i++) { - // var eachFile = jsonFiles[i] - // setTimeout(function () { ut.jsonSchemaValidation(args.mode, eachFile, 'json', schema) }, 100) - // } + for (let i = 0; i < jsonFiles.length; i++) { + const eachFile = jsonFiles[i] + setTimeout(function () { ut.jsonSchemaValidation(args.mode, eachFile, schema) }, 100) + } } diff --git a/json2mo/algorithmSection.js b/json2mo/algorithmSection.js index e4947d1a..afd81018 100644 --- a/json2mo/algorithmSection.js +++ b/json2mo/algorithmSection.js @@ -1,14 +1,14 @@ function parse (content, rawJson = false) { const statementParser = require('./statement') - var moOutput = '' + let moOutput = '' if (content.initial != null) { if (content.initial) { moOutput += 'initial ' } } moOutput += 'algorithm' - var statements = null + let statements = null if (rawJson) { statements = content.statements } else { @@ -24,4 +24,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/annotation.js b/json2mo/annotation.js index 5bfe6150..cf486dea 100644 --- a/json2mo/annotation.js +++ b/json2mo/annotation.js @@ -1,18 +1,18 @@ function parse (content, rawJson = false) { const classModificationParser = require('./classModification') - var moOutput = '' + let moOutput = '' moOutput += '\n\tannotation ' if (rawJson) { if (content.class_modification != null) { moOutput += classModificationParser.parse(content.class_modification, rawJson) } } else { - var classModification = content + const classModification = content moOutput += classModificationParser.parse(classModification, rawJson) } - // moOutput+="\n" + // moOutput+="\n" return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/argument.js b/json2mo/argument.js index d6302a98..ba38fdca 100644 --- a/json2mo/argument.js +++ b/json2mo/argument.js @@ -2,7 +2,7 @@ function parse (content, rawJson = false) { const elementModificationOrReplaceable = require('./elementModificationOrReplaceable') const elementRedeclaration = require('./elementRedeclaration') - var moOutput = '' + let moOutput = '' if (content.element_modification_or_replaceable != null) { moOutput += elementModificationOrReplaceable.parse(content.element_modification_or_replaceable, rawJson) } else if (content.element_redeclaration != null) { @@ -11,4 +11,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/argumentList.js b/json2mo/argumentList.js index 5d33238a..66da1b60 100644 --- a/json2mo/argumentList.js +++ b/json2mo/argumentList.js @@ -1,8 +1,8 @@ function parse (content, rawJson = false) { const argumentParser = require('./argument') - var moOutput = '' + let moOutput = '' if (rawJson) { - var argumentStr = content.arguments + const argumentStr = content.arguments if (argumentStr != null) { argumentStr.forEach(argument => { @@ -15,4 +15,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/arraySubscripts.js b/json2mo/arraySubscripts.js index b1e5265b..566ae7c0 100644 --- a/json2mo/arraySubscripts.js +++ b/json2mo/arraySubscripts.js @@ -2,11 +2,11 @@ function parse (content, rawJson = false) { const expressionParser = require('./expression') const subscriptParser = require('./subscript') - var moOutput = '' + let moOutput = '' if (rawJson) { moOutput += '[' - var subscripts = content.subscripts + const subscripts = content.subscripts if (subscripts != null) { subscripts.forEach(subscript => { moOutput += subscriptParser.parse(subscript, rawJson) @@ -16,7 +16,7 @@ function parse (content, rawJson = false) { } moOutput += '] ' } else { - var arraySubscripts = content + const arraySubscripts = content moOutput += '[' if (arraySubscripts != null) { @@ -37,4 +37,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/assignmentEquation.js b/json2mo/assignmentEquation.js index aa9c7595..8ed11e88 100644 --- a/json2mo/assignmentEquation.js +++ b/json2mo/assignmentEquation.js @@ -2,7 +2,7 @@ function parse (content, rawJson = false) { const simpleExpression = require('./simpleExpression') const expressionParser = require('./expression') - var moOutput = '' + let moOutput = '' if (content.lhs != null) { moOutput += simpleExpression.parse(content.lhs, rawJson) } @@ -13,4 +13,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/assignmentStatement.js b/json2mo/assignmentStatement.js index a4fe21fa..8e26eb3a 100644 --- a/json2mo/assignmentStatement.js +++ b/json2mo/assignmentStatement.js @@ -2,7 +2,7 @@ function parse (content, rawJson = false) { const componentReferenceParser = require('./componentReference') const expressionParser = require('./expression') - var moOutput = '' + let moOutput = '' if (content.identifier != null) { moOutput += componentReferenceParser.parse(content.identifier, rawJson) } @@ -13,4 +13,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/assignmentWithFunctionCallStatement.js b/json2mo/assignmentWithFunctionCallStatement.js index 42c9764a..7fa4ea6d 100644 --- a/json2mo/assignmentWithFunctionCallStatement.js +++ b/json2mo/assignmentWithFunctionCallStatement.js @@ -3,7 +3,7 @@ function parse (content, rawJson = false) { const outputExpressionListParser = require('./outputExpressionList') const functionCallArgsParser = require('./functionCallArgs') - var moOutput = '' + let moOutput = '' moOutput += '(' if (content.output_expression_list != null) { moOutput += outputExpressionListParser.parse(content.output_expression_list, rawJson) @@ -19,4 +19,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/basePrefix.js b/json2mo/basePrefix.js index 1e77408d..434255d4 100644 --- a/json2mo/basePrefix.js +++ b/json2mo/basePrefix.js @@ -1,12 +1,12 @@ function parse (content, rawJson = false) { const util = require('util') - var moOutput = '' + let moOutput = '' if (rawJson) { if (content.type_prefix != null) { moOutput += util.format('%s ', content.type_prefix) } } else { - var basePrefix = content + const basePrefix = content if (basePrefix != null) { moOutput += util.format('%s ', basePrefix) } @@ -15,4 +15,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/classDefinition.js b/json2mo/classDefinition.js index df7c4401..f7581b96 100644 --- a/json2mo/classDefinition.js +++ b/json2mo/classDefinition.js @@ -1,9 +1,9 @@ function parse (content, rawJson = false) { const util = require('util') const classSpecifier = require('./classSpecifier') - var encapsulated = content.encapsulated - var classPrefixes = content.class_prefixes - var moOutput = '' + const encapsulated = content.encapsulated + const classPrefixes = content.class_prefixes + let moOutput = '' if (encapsulated != null) { if (encapsulated) { @@ -18,4 +18,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/classModification.js b/json2mo/classModification.js index 30c920bd..9731e248 100644 --- a/json2mo/classModification.js +++ b/json2mo/classModification.js @@ -2,7 +2,7 @@ function parse (content, rawJson = false) { const argumentListParser = require('./argumentList') const argumentParser = require('./argument') - var moOutput = '' + let moOutput = '' if (rawJson) { moOutput += '(\n\t' if (content.argument_list != null) { @@ -10,7 +10,7 @@ function parse (content, rawJson = false) { } moOutput += ')\n\t' } else { - var argumentList = content + const argumentList = content moOutput += '(\n\t' argumentList.forEach(argument => { @@ -24,4 +24,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/classSpecifier.js b/json2mo/classSpecifier.js index 21e03906..009bc732 100644 --- a/json2mo/classSpecifier.js +++ b/json2mo/classSpecifier.js @@ -3,11 +3,11 @@ function parse (content, rawJson = false) { const shortClassSpecifierParser = require('./shortClassSpecifier') const derClassSpecifierParser = require('./derClassSpecifier') - var longClassSpecifier = content.long_class_specifier - var shortClassSpecifier = content.short_class_specifier - var derClassSpecifier = content.der_class_specifier + const longClassSpecifier = content.long_class_specifier + const shortClassSpecifier = content.short_class_specifier + const derClassSpecifier = content.der_class_specifier - var moOutput = '' + let moOutput = '' if (longClassSpecifier != null) { moOutput += longClassSpecifierParser.parse(longClassSpecifier, rawJson) @@ -24,4 +24,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/comment.js b/json2mo/comment.js index fb7130f3..57c97cec 100644 --- a/json2mo/comment.js +++ b/json2mo/comment.js @@ -2,7 +2,7 @@ function parse (content, rawJson = false) { const util = require('util') const annotationParser = require('./annotation') - var moOutput = '' + let moOutput = '' if (rawJson) { if (content.string_comment != null) { moOutput += util.format('\n"\t%s"', content.string_comment) @@ -22,4 +22,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/componentClause.js b/json2mo/componentClause.js index 20783ed9..c864e2e4 100644 --- a/json2mo/componentClause.js +++ b/json2mo/componentClause.js @@ -4,7 +4,7 @@ function parse (content, rawJson = false) { const componentListParser = require('./componentList') const util = require('util') - var moOutput = '' + let moOutput = '' if (content.type_prefix != null) { moOutput += util.format('%s ', content.type_prefix) @@ -28,4 +28,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/componentClause1.js b/json2mo/componentClause1.js index 6b7d6158..6fe2be56 100644 --- a/json2mo/componentClause1.js +++ b/json2mo/componentClause1.js @@ -3,7 +3,7 @@ function parse (content, rawJson = false) { const typeSpecifierParser = require('./typeSpecifier') const componentDeclaration1Parser = require('./componentDeclaration1') - var moOutput = '' + let moOutput = '' if (rawJson) { if (content.type_prefix != null) { moOutput += util.format('%s ', content.type_prefix) @@ -29,4 +29,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/componentDeclaration.js b/json2mo/componentDeclaration.js index 84965239..74c21871 100644 --- a/json2mo/componentDeclaration.js +++ b/json2mo/componentDeclaration.js @@ -3,7 +3,7 @@ function parse (content, rawJson = false) { const conditionAttributeParser = require('./condition_attribute') const commentParser = require('./comment') - var moOutput = '' + let moOutput = '' if (content.declaration != null) { moOutput += declarationParser.parse(content.declaration, rawJson) } @@ -16,4 +16,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/componentDeclaration1.js b/json2mo/componentDeclaration1.js index af3b0619..d0fc73b2 100644 --- a/json2mo/componentDeclaration1.js +++ b/json2mo/componentDeclaration1.js @@ -2,7 +2,7 @@ function parse (content, rawJson) { const declarationParser = require('./declaration') const commentParser = require('./comment') - var moOutput = '' + let moOutput = '' if (content.declaration != null) { moOutput += declarationParser.parse(content.declaration, rawJson) } @@ -18,4 +18,4 @@ function parse (content, rawJson) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/componentList.js b/json2mo/componentList.js index 0a32662b..69fa0093 100644 --- a/json2mo/componentList.js +++ b/json2mo/componentList.js @@ -4,8 +4,8 @@ function parse (content, rawJson = false) { const conditionAttributeParser = require('./conditionAttribute') const commentParser = require('./comment') - var moOutput = '' - var componentDeclarationList + let moOutput = '' + let componentDeclarationList if (rawJson) { componentDeclarationList = content.component_declaration_list @@ -30,4 +30,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/componentReference.js b/json2mo/componentReference.js index 985c16e1..76dc5d2c 100644 --- a/json2mo/componentReference.js +++ b/json2mo/componentReference.js @@ -3,8 +3,8 @@ function parse (content, rawJson = false) { const arraySubscriptsParser = require('./arraySubscripts') const componentReferencePartParser = require('./componentReferencePart') - var moOutput = '' - var componentReferenceParts + let moOutput = '' + let componentReferenceParts if (rawJson) { componentReferenceParts = content.component_reference_parts if (componentReferenceParts != null) { @@ -31,4 +31,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/componentReferencePart.js b/json2mo/componentReferencePart.js index 62207012..d54db7c6 100644 --- a/json2mo/componentReferencePart.js +++ b/json2mo/componentReferencePart.js @@ -2,7 +2,7 @@ function parse (content, rawJson = false) { const util = require('util') const arraySubscriptsParser = require('./arraySubscripts') - var moOutput = '' + let moOutput = '' if (rawJson) { if (content.dot_op != null) { @@ -20,4 +20,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/composition.js b/json2mo/composition.js index 8d172440..83379d8c 100644 --- a/json2mo/composition.js +++ b/json2mo/composition.js @@ -4,12 +4,12 @@ function parse (content, rawJson = false) { const externalCompositionParser = require('./externalComposition') const annotationParser = require('./annotation') - var moOutput = '' + let moOutput = '' if (content.element_list != null) { moOutput += elementListParser.parse(content.element_list, rawJson) } if (content.element_sections != null) { - var elementSections = content.element_sections + const elementSections = content.element_sections elementSections.forEach(ele => { moOutput += elementSectionParser.parse(ele, rawJson) }) @@ -24,4 +24,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/conditionAttribute.js b/json2mo/conditionAttribute.js index ed602634..9fd2db87 100644 --- a/json2mo/conditionAttribute.js +++ b/json2mo/conditionAttribute.js @@ -1,14 +1,14 @@ function parse (content, rawJson = false) { const expressionParser = require('./expression') - var moOutput = '' + let moOutput = '' moOutput += '\n\tif ' if (rawJson) { if (content.expression != null) { moOutput += expressionParser.parse(content.expression, rawJson) } } else { - var expression = content + const expression = content if (expression != null) { moOutput += expressionParser.parse(expression, rawJson) } @@ -16,4 +16,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/connectClause.js b/json2mo/connectClause.js index 30f55342..407864af 100644 --- a/json2mo/connectClause.js +++ b/json2mo/connectClause.js @@ -1,7 +1,7 @@ function parse (content, rawJson = false) { const componentReferenceParser = require('./componentReference') - var moOutput = '' + let moOutput = '' moOutput += 'connect(' if (content.from != null) { moOutput += componentReferenceParser.parse(content.from, rawJson) @@ -14,4 +14,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/constrainingClause.js b/json2mo/constrainingClause.js index a99e6dfd..6db1802c 100644 --- a/json2mo/constrainingClause.js +++ b/json2mo/constrainingClause.js @@ -2,7 +2,7 @@ function parse (content, rawJson = false) { const nameParser = require('./name') const classModificationParser = require('./classModification') - var moOutput = '' + let moOutput = '' moOutput += 'constrainedby ' if (content.name != null) { @@ -14,4 +14,4 @@ function parse (content, rawJson = false) { } return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/declaration.js b/json2mo/declaration.js index 8aad3b5c..0ac5eb50 100644 --- a/json2mo/declaration.js +++ b/json2mo/declaration.js @@ -3,7 +3,7 @@ function parse (content, rawJson = false) { const arraySubscriptsParser = require('./arraySubscripts') const modificationParser = require('./modification') - var moOutput = '' + let moOutput = '' if (content.identifier != null) { moOutput += util.format('%s', content.identifier) } @@ -16,4 +16,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/derClassSpecifier.js b/json2mo/derClassSpecifier.js index 13ea81a9..efa12d71 100644 --- a/json2mo/derClassSpecifier.js +++ b/json2mo/derClassSpecifier.js @@ -2,8 +2,8 @@ function parse (content, rawJson = false) { const util = require('util') const derClassSpecifierValueParser = require('./derClassSpecifierValue') - var moOutput = '' - var identifier = content.identifier + let moOutput = '' + const identifier = content.identifier if (identifier != null) { moOutput += util.format('%s= ', identifier) @@ -22,4 +22,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/derClassSpecifierValue.js b/json2mo/derClassSpecifierValue.js index 55e1f1b2..a941df3b 100644 --- a/json2mo/derClassSpecifierValue.js +++ b/json2mo/derClassSpecifierValue.js @@ -3,11 +3,11 @@ function parse (content, rawJson = false) { const nameParser = require('./name') const commentParser = require('./comment') - var moOutput = 'der(' + let moOutput = 'der(' if (content.type_specifier != null) { moOutput += nameParser.parse(content.type_specifier, rawJson) } - var identifiers = null + let identifiers = null if (rawJson) { identifiers = content.identifiers } else { @@ -33,4 +33,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/element.js b/json2mo/element.js index 28ad146d..cdbf11dc 100644 --- a/json2mo/element.js +++ b/json2mo/element.js @@ -6,7 +6,7 @@ function parse (content, rawJson = false) { const constrainingClauseParser = require('./constrainingClause') const commentParser = require('./comment') - var moOutput = '' + let moOutput = '' if (content.import_clause != null) { moOutput += importClauseParser.parse(content.import_clause, rawJson) moOutput += ';\n' @@ -84,4 +84,4 @@ function parse (content, rawJson = false) { } return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/elementList.js b/json2mo/elementList.js index 50860176..09469c42 100644 --- a/json2mo/elementList.js +++ b/json2mo/elementList.js @@ -1,8 +1,8 @@ function parse (content, rawJson = false) { const elementParser = require('./element') - var moOutput = '' - var elements + let moOutput = '' + let elements if (rawJson) { elements = content.elements if (elements != null) { @@ -22,4 +22,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/elementModification.js b/json2mo/elementModification.js index f47b90ae..c290a6a0 100644 --- a/json2mo/elementModification.js +++ b/json2mo/elementModification.js @@ -6,14 +6,14 @@ function parse (content, rawJson = false) { const graPri = require('../lib/graphicalPrimitives.js') // Get all the keys in the json object. It may be graphical primitive. - var keys = Object.keys(content) - var isGraPri = false + const keys = Object.keys(content) + let isGraPri = false // check if it is a graphical primitive isGraPri = keys.some(function (ele) { return graPri.isGraphicAnnotation(ele) }) - var moOutput = '' + let moOutput = '' if (isGraPri) { moOutput += graphicParser.parse(content, rawJson) } else { @@ -31,4 +31,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/elementModificationOrReplaceable.js b/json2mo/elementModificationOrReplaceable.js index 48a906e2..b86f7fdd 100644 --- a/json2mo/elementModificationOrReplaceable.js +++ b/json2mo/elementModificationOrReplaceable.js @@ -2,7 +2,7 @@ function parse (content, rawJson = false) { const elementModificationParser = require('./elementModification') const elementReplaceableParser = require('./elementReplaceable') - var moOutput = '' + let moOutput = '' if (content.each != null) { if (content.each) { moOutput += 'each ' @@ -30,4 +30,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/elementRedeclaration.js b/json2mo/elementRedeclaration.js index 9302364f..60b33eaa 100644 --- a/json2mo/elementRedeclaration.js +++ b/json2mo/elementRedeclaration.js @@ -3,7 +3,7 @@ function parse (content, rawJson) { const componentClause1Parser = require('./componentClause1') const elementReplaceableParser = require('./elementReplaceable') - var moOutput = '' + let moOutput = '' moOutput += 'redeclare ' if (content.each != null) { @@ -36,4 +36,4 @@ function parse (content, rawJson) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/elementReplaceable.js b/json2mo/elementReplaceable.js index 9e61b990..cbd21004 100644 --- a/json2mo/elementReplaceable.js +++ b/json2mo/elementReplaceable.js @@ -3,7 +3,7 @@ function parse (content, rawJson = false) { const componentClause1Parser = require('./componentClause1') const constrainingClauseParser = require('./constrainingClause') - var moOutput = '' + let moOutput = '' moOutput += 'replaceable ' if (content.short_class_definition != null) { moOutput += shortClassDefinitionParser.parse(content.short_class_definition, rawJson) @@ -16,4 +16,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/elementSection.js b/json2mo/elementSection.js index cac1568a..11ab4781 100644 --- a/json2mo/elementSection.js +++ b/json2mo/elementSection.js @@ -3,7 +3,7 @@ function parse (content, rawJson = false) { const equationSectionParser = require('./equationSection') const algorithmSectionParser = require('./algorithmSection') - var moOutput = '' + let moOutput = '' if (content.public_element_list != null) { moOutput += 'public\n' @@ -19,4 +19,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/enumList.js b/json2mo/enumList.js index 0c0540e5..404c4c7e 100644 --- a/json2mo/enumList.js +++ b/json2mo/enumList.js @@ -1,8 +1,8 @@ function parse (content, rawJson = false) { const enumerationLiteralParser = require('./enumerationLiteral') - var moOutput = '' - var enumerationLiterals + let moOutput = '' + let enumerationLiterals if (rawJson) { enumerationLiterals = content.enumeration_literal } else { @@ -19,4 +19,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/enumerationLiteral.js b/json2mo/enumerationLiteral.js index 7c8bc54f..18f1287d 100644 --- a/json2mo/enumerationLiteral.js +++ b/json2mo/enumerationLiteral.js @@ -2,7 +2,7 @@ function parse (content, rawJson = false) { const util = require('util') const commentParser = require('./comment') - var moOutput = '' + let moOutput = '' if (content.identifier != null) { moOutput += util.format('%s ', content.identifier) @@ -20,4 +20,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/equation.js b/json2mo/equation.js index 5530de7f..1e2ac783 100644 --- a/json2mo/equation.js +++ b/json2mo/equation.js @@ -7,7 +7,7 @@ function parse (content, rawJson = false) { const functionCallEquationParser = require('./functionCallEquation') const commentParser = require('./comment') - var moOutput = '' + let moOutput = '' if (content.assignment_equation != null) { moOutput += '\n' moOutput += assignmentEquationParser.parse(content.assignment_equation, rawJson) @@ -41,4 +41,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/equationSection.js b/json2mo/equationSection.js index 0e79fbbe..54978991 100644 --- a/json2mo/equationSection.js +++ b/json2mo/equationSection.js @@ -1,14 +1,14 @@ function parse (content, rawJson = false) { const equationParser = require('./equation') - var moOutput = '' + let moOutput = '' if (content.initial != null) { if (content.initial) { moOutput += 'initial ' } } moOutput += 'equation' - var equations + let equations if (rawJson) { equations = content.equations } else { @@ -23,4 +23,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/expression.js b/json2mo/expression.js index fae169ed..65c82467 100644 --- a/json2mo/expression.js +++ b/json2mo/expression.js @@ -1,7 +1,7 @@ function parse (content, rawJson = false) { const simpleExpressionParser = require('./simpleExpression') const ifExpressionParser = require('./ifExpression') - var moOutput = '' + let moOutput = '' if (content.if_expression != null) { moOutput += ifExpressionParser.parse(content.if_expression, rawJson) @@ -12,4 +12,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/expressionList.js b/json2mo/expressionList.js index 65a252e2..24c1889a 100644 --- a/json2mo/expressionList.js +++ b/json2mo/expressionList.js @@ -1,8 +1,8 @@ function parse (content, rawJson = false) { const expressionParser = require('./expression') - var moOutput = '' - var expressionList = null + let moOutput = '' + let expressionList = null if (rawJson) { expressionList = content.expressions } else { @@ -18,4 +18,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/extendsClause.js b/json2mo/extendsClause.js index 1f43f75f..08ba5ce4 100644 --- a/json2mo/extendsClause.js +++ b/json2mo/extendsClause.js @@ -3,7 +3,7 @@ function parse (content, rawJson = false) { const classModificationParser = require('./classModification') const annotationParser = require('./annotation') - var moOutput = '' + let moOutput = '' moOutput += 'extends ' if (content.name != null) { @@ -18,4 +18,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/externalComposition.js b/json2mo/externalComposition.js index 4453e654..c3a8436b 100644 --- a/json2mo/externalComposition.js +++ b/json2mo/externalComposition.js @@ -3,7 +3,7 @@ function parse (content, rawJson = false) { const externalFunctionCallParser = require('./externalFunctionCall') const annotationParser = require('./annotation') - var moOutput = '' + let moOutput = '' moOutput += 'external ' if (content.language_specification != null) { moOutput += util.format('%s ', content.language_specification) @@ -18,4 +18,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/externalFunctionCall.js b/json2mo/externalFunctionCall.js index 33b559dd..3b865286 100644 --- a/json2mo/externalFunctionCall.js +++ b/json2mo/externalFunctionCall.js @@ -3,7 +3,7 @@ function parse (content, rawJson = false) { const componentReferenceParser = require('./componentReference') const expressionListParser = require('./expressionList') - var moOutput = '' + let moOutput = '' if (content.component_reference != null) { moOutput += componentReferenceParser.parse(content.component_reference, rawJson) @@ -19,4 +19,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/finalClassDefinition.js b/json2mo/finalClassDefinition.js index d356ff5a..3ba5f466 100644 --- a/json2mo/finalClassDefinition.js +++ b/json2mo/finalClassDefinition.js @@ -1,8 +1,8 @@ function parse (content, rawJson = false) { const classDefinitionParser = require('./classDefinition') - var moOutput = '' - var isFinal = false + let moOutput = '' + let isFinal = false if (rawJson) { isFinal = content.is_final @@ -20,11 +20,11 @@ function parse (content, rawJson = false) { moOutput += classDefinitionParser.parse(content.class_definition, rawJson) } } else { - var classDefinition = content + const classDefinition = content moOutput += classDefinitionParser.parse(classDefinition, rawJson) } return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/forEquation.js b/json2mo/forEquation.js index 22f6e182..5fdd8235 100644 --- a/json2mo/forEquation.js +++ b/json2mo/forEquation.js @@ -2,16 +2,15 @@ function parse (content, rawJson = false) { const forIndicesParser = require('./forIndices') const equationParser = require('./equation') - var moOutput = '' + let moOutput = '' moOutput += 'for ' - var loopEquations if (content.for_indices != null) { moOutput += forIndicesParser.parse(content.for_indices, rawJson) } moOutput += 'loop \n' - loopEquations = content.loop_equations + const loopEquations = content.loop_equations loopEquations.forEach(ele => { moOutput += equationParser.parse(ele, rawJson) moOutput += ';\n' @@ -20,4 +19,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/forIndex.js b/json2mo/forIndex.js index 46fddb8e..9b1649f9 100644 --- a/json2mo/forIndex.js +++ b/json2mo/forIndex.js @@ -2,7 +2,7 @@ function parse (content, rawJson = false) { const util = require('util') const expressionParser = require('./expression') - var moOutput = '' + let moOutput = '' if (rawJson) { if (content.identifier != null) { moOutput += util.format('%s ', content.identifier) @@ -16,4 +16,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/forIndices.js b/json2mo/forIndices.js index 7085f4d7..69297b72 100644 --- a/json2mo/forIndices.js +++ b/json2mo/forIndices.js @@ -3,8 +3,8 @@ function parse (content, rawJson = false) { const expressionParser = require('./expression') const forIndexParser = require('./forIndex') // only for raw-json - var moOutput = '' - var indices + let moOutput = '' + let indices if (rawJson) { indices = content.indices if (indices != null) { @@ -33,4 +33,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/forIndicesObj.js b/json2mo/forIndicesObj.js index b3b7aa57..f3941058 100644 --- a/json2mo/forIndicesObj.js +++ b/json2mo/forIndicesObj.js @@ -1,13 +1,13 @@ function parse (content, rawJson = false) { const util = require('util') - var moOutput = '' + let moOutput = '' moOutput += util.format('%s', content[0].name) moOutput += ' in ' moOutput += util.format('%s', content[0].range) if (content.length > 1) { - for (var i = 1; i < content.length; i++) { - var ith = content[i] + for (let i = 1; i < content.length; i++) { + const ith = content[i] moOutput += ', ' moOutput += util.format('%s', ith.name) moOutput += ' in ' @@ -17,4 +17,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/forLoopObj.js b/json2mo/forLoopObj.js index a1537e17..42f4d64b 100644 --- a/json2mo/forLoopObj.js +++ b/json2mo/forLoopObj.js @@ -2,7 +2,7 @@ function parse (content, rawJson = false) { const expressionParser = require('./expression') const forIndiceObjParser = require('./forIndicesObj') - var moOutput = '' + let moOutput = '' if (content != null) { moOutput += '{' moOutput += expressionParser.parse(content.expression, rawJson) @@ -13,4 +13,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/forStatement.js b/json2mo/forStatement.js index 7218857e..1b214af9 100644 --- a/json2mo/forStatement.js +++ b/json2mo/forStatement.js @@ -2,14 +2,14 @@ function parse (content, rawJson = false) { const forIndicesParser = require('./for_indices') const statementParser = require('./statement') - var moOutput = '' + let moOutput = '' moOutput += 'for ' if (content.for_indices != null) { moOutput += forIndicesParser.parse(content.for_indices, rawJson) } moOutput += 'loop \n' - var loopStatements = content.loop_statements + const loopStatements = content.loop_statements loopStatements.forEach(ele => { moOutput += statementParser.parse(ele, rawJson) moOutput += ';\n' @@ -18,4 +18,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/functionArgument.js b/json2mo/functionArgument.js index 0ab38a76..57f0f042 100644 --- a/json2mo/functionArgument.js +++ b/json2mo/functionArgument.js @@ -4,7 +4,7 @@ function parse (content, rawJson = false) { const namedArgumentParser = require('./namedArgument') const expressionParser = require('./expression') - var moOutput = '' + let moOutput = '' if (content.function_name != null) { moOutput += 'function ' @@ -16,7 +16,7 @@ function parse (content, rawJson = false) { moOutput += namedArgumentsParser.parse(content.named_arguments, rawJson) } } else { - var namedArguments = content.named_arguments + const namedArguments = content.named_arguments if (namedArguments != null) { namedArguments.forEach(ele => { moOutput += namedArgumentParser.parse(ele, rawJson) @@ -32,4 +32,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/functionArguments.js b/json2mo/functionArguments.js index 4b87b325..490f67ab 100644 --- a/json2mo/functionArguments.js +++ b/json2mo/functionArguments.js @@ -5,7 +5,7 @@ function parse (content, rawJson = false) { const functionArgumentParser = require('./functionArgument') const forIndicesParser = require('./forIndices') - var moOutput = '' + let moOutput = '' if (rawJson) { if (content.named_arguments != null) { @@ -24,7 +24,7 @@ function parse (content, rawJson = false) { } } } else { - var namedArguments = content.named_arguments // only in simplified-json + const namedArguments = content.named_arguments // only in simplified-json if (namedArguments != null) { namedArguments.forEach(ele => { @@ -49,4 +49,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/functionCallArgs.js b/json2mo/functionCallArgs.js index 050e4ad2..0f045b78 100644 --- a/json2mo/functionCallArgs.js +++ b/json2mo/functionCallArgs.js @@ -3,7 +3,7 @@ function parse (content, rawJson = false) { const functionArgumentParser = require('./functionArgument') const functionArgumentsParser = require('./functionArguments') const forIndicesParser = require('./forIndices') - var moOutput = '' + let moOutput = '' moOutput += '(' if (rawJson) { @@ -11,7 +11,7 @@ function parse (content, rawJson = false) { moOutput += functionArgumentsParser.parse(content.function_arguments, rawJson) } } else { - var namedArguments = content.named_arguments // only in simplified-json + const namedArguments = content.named_arguments // only in simplified-json if (namedArguments != null) { namedArguments.forEach(ele => { @@ -38,4 +38,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/functionCallArgsObj.js b/json2mo/functionCallArgsObj.js index f36e92a1..66fd6413 100644 --- a/json2mo/functionCallArgsObj.js +++ b/json2mo/functionCallArgsObj.js @@ -3,7 +3,7 @@ function parse (content, rawJson = false) { const expressionParser = require('./expression') const forIndiceObjParser = require('./forIndicesObj') - var moOutput = '' + let moOutput = '' if (content[0].expression != null) { moOutput += expressionParser.parse(content[0].expressoin, rawJson) moOutput += ' for ' @@ -20,4 +20,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/functionCallEquation.js b/json2mo/functionCallEquation.js index 5d6c465f..97fa70a1 100644 --- a/json2mo/functionCallEquation.js +++ b/json2mo/functionCallEquation.js @@ -2,7 +2,7 @@ function parse (content, rawJson = false) { const nameParser = require('./name') const functionCallArgsParser = require('./functionCallArgs') - var moOutput = '' + let moOutput = '' if (content.function_name != null) { moOutput += nameParser.parse(content.function_name, rawJson) @@ -14,4 +14,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/functionCallObj.js b/json2mo/functionCallObj.js index a2599471..b50d740d 100644 --- a/json2mo/functionCallObj.js +++ b/json2mo/functionCallObj.js @@ -2,7 +2,7 @@ function parse (content, rawJson = false) { const util = require('util') const functionCallArgsObjParser = require('./functionCallArgsObj') - var moOutput = '' + let moOutput = '' if (content.name != null) { moOutput += util.format('%s', content.name) } @@ -14,4 +14,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/functionCallStatement.js b/json2mo/functionCallStatement.js index 81cb8577..335775f5 100644 --- a/json2mo/functionCallStatement.js +++ b/json2mo/functionCallStatement.js @@ -2,7 +2,7 @@ function parse (content, rawJson = false) { const componentReferenceParser = require('./componentReference') const functionCallArgsParser = require('./functionCallArgs') - var moOutput = '' + let moOutput = '' if (content.function_name != null) { moOutput += componentReferenceParser.parse(content.function_name, rawJson) } @@ -12,4 +12,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/graphic.js b/json2mo/graphic.js index 68134bd1..2ff22a87 100644 --- a/json2mo/graphic.js +++ b/json2mo/graphic.js @@ -3,10 +3,10 @@ const util = require('util') function parse (content, rawJson = false) { // "keys" will be a one element array, could be // ['Line', 'Text', 'Rectangle', 'Polygon', 'Ellipse', 'Bitmap', 'Placement', 'coordinateSystem', 'graphics'] - var graKeys = Object.keys(content) - var graKey = graKeys[0] + const graKeys = Object.keys(content) + const graKey = graKeys[0] - var moOutput = '' + let moOutput = '' if (graKey === 'Line') { moOutput += lineParse(content.Line) } else if (graKey === 'Text') { @@ -31,41 +31,41 @@ function parse (content, rawJson = false) { } function lineParse (obj) { - var graComIte = commonGraphicItems(obj) + const graComIte = commonGraphicItems(obj) return 'Line(' + graComIte.join(',') + ')' } function textParse (obj) { - var graComIte = commonGraphicItems(obj) + const graComIte = commonGraphicItems(obj) return 'Text(' + graComIte.join(',') + ')' } function rectangleParse (obj) { - var graComIte = commonGraphicItems(obj) + const graComIte = commonGraphicItems(obj) return 'Rectangle(' + graComIte.join(',') + ')' } function polygonParse (obj) { - var graComIte = commonGraphicItems(obj) + const graComIte = commonGraphicItems(obj) return 'Polygon(' + graComIte.join(',') + ')' } function ellipseParse (obj) { - var graComIte = commonGraphicItems(obj) + const graComIte = commonGraphicItems(obj) return 'Ellipse(' + graComIte.join(',') + ')' } function bitmapParse (obj) { - var graComIte = commonGraphicItems(obj) + const graComIte = commonGraphicItems(obj) return 'Bitmap(' + graComIte.join(',') + ')' } function placementParse (obj) { - var visible = obj.visible - var iconVisible = obj.iconVisible - var transformation = obj.transformation - var iconTransformation = obj.iconTransformation - var strArr = [] + const visible = obj.visible + const iconVisible = obj.iconVisible + const transformation = obj.transformation + const iconTransformation = obj.iconTransformation + const strArr = [] if (visible != null) { strArr.push('visible=' + util.format('%s', visible)) } @@ -82,10 +82,10 @@ function placementParse (obj) { } function coordinateSystemParse (obj) { - var extent = obj.extent - var preserveAspectRatio = obj.preserveAspectRatio - var initialScale = obj.initialScale - var strArr = [] + const extent = obj.extent + const preserveAspectRatio = obj.preserveAspectRatio + const initialScale = obj.initialScale + const strArr = [] if (extent != null) { strArr.push('extent=' + pointsParse(extent)) } @@ -99,22 +99,22 @@ function coordinateSystemParse (obj) { } function graphicsParse (obj) { - var strArr = [] - for (var i = 0; i < obj.length; i++) { - var ithEle = obj[i] - var name = ithEle.name - var attibutes = ithEle.attribute - var graComIte = commonGraphicItems(attibutes) + const strArr = [] + for (let i = 0; i < obj.length; i++) { + const ithEle = obj[i] + const name = ithEle.name + const attibutes = ithEle.attribute + const graComIte = commonGraphicItems(attibutes) strArr.push(name + '(' + graComIte.join(',') + ')') } return 'graphics=' + '{' + strArr.join(',') + '}' } function transformationParse (obj) { - var origin = obj.origin - var extent = obj.extent - var rotation = obj.rotation - var strArr = [] + const origin = obj.origin + const extent = obj.extent + const rotation = obj.rotation + const strArr = [] if (origin != null) { strArr.push('origin=' + originParse(origin)) } @@ -128,10 +128,10 @@ function transformationParse (obj) { } function pointsParse (obj) { - var pointsArr = [] - for (var i = 0; i < obj.length; i++) { - var ithPoint = obj[i] - var pointStr = '{' + const pointsArr = [] + for (let i = 0; i < obj.length; i++) { + const ithPoint = obj[i] + let pointStr = '{' pointStr += util.format('%s', ithPoint.x) pointStr += ',' pointStr += util.format('%s', ithPoint.y) @@ -142,7 +142,7 @@ function pointsParse (obj) { } function colorParse (obj) { - var colEle = '{' + let colEle = '{' colEle += util.format('%s', obj.r) colEle += ',' colEle += util.format('%s', obj.g) @@ -153,7 +153,7 @@ function colorParse (obj) { } function originParse (obj) { - var ori = '{' + let ori = '{' ori += util.format('%s', obj.x) ori += ',' ori += util.format('%s', obj.y) @@ -162,35 +162,35 @@ function originParse (obj) { } function commonGraphicItems (obj) { - var color = obj.color - var thickness = obj.thickness - var arrowSize = obj.arrowSize - var extent = obj.extent - var textString = obj.textString - var fontSize = obj.fontSize - var fontName = obj.fontName - var textColor = obj.textColor - var horizontalAlignment = obj.horizontalAlignment - var string = obj.string - var index = obj.index - var radius = obj.radius - var borderPattern = obj.borderPattern - var points = obj.points - var smooth = obj.smooth - var startAngle = obj.startAngle - var endAngle = obj.endAngle - var closure = obj.closure - var fileName = obj.fileName - var imageSource = obj.imageSource - var visible = obj.visible - var origin = obj.origin - var rotation = obj.rotation - var lineColor = obj.lineColor - var fillColor = obj.fillColor - var pattern = obj.pattern - var fillPattern = obj.fillPattern - var lineThickness = obj.lineThickness - var strArr = [] + const color = obj.color + const thickness = obj.thickness + const arrowSize = obj.arrowSize + const extent = obj.extent + const textString = obj.textString + const fontSize = obj.fontSize + const fontName = obj.fontName + const textColor = obj.textColor + const horizontalAlignment = obj.horizontalAlignment + const string = obj.string + const index = obj.index + const radius = obj.radius + const borderPattern = obj.borderPattern + const points = obj.points + const smooth = obj.smooth + const startAngle = obj.startAngle + const endAngle = obj.endAngle + const closure = obj.closure + const fileName = obj.fileName + const imageSource = obj.imageSource + const visible = obj.visible + const origin = obj.origin + const rotation = obj.rotation + const lineColor = obj.lineColor + const fillColor = obj.fillColor + const pattern = obj.pattern + const fillPattern = obj.fillPattern + const lineThickness = obj.lineThickness + const strArr = [] if (fileName != null) { strArr.push('fileName=' + util.format('%s', fileName)) } @@ -281,4 +281,4 @@ function commonGraphicItems (obj) { return strArr } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/ifElseifEquation.js b/json2mo/ifElseifEquation.js index 48b7e783..a4a35383 100644 --- a/json2mo/ifElseifEquation.js +++ b/json2mo/ifElseifEquation.js @@ -2,14 +2,14 @@ function parse (content, rawJson = false) { const expressionParser = require('./expression') const equationParser = require('./equation') - var moOutput = '' + let moOutput = '' if (content.condition != null) { moOutput += expressionParser.parse(content.condition, rawJson) } - var thenEquations = content.then - var thenOutput = '' + const thenEquations = content.then + let thenOutput = '' if (thenEquations != null) { thenOutput = '' thenEquations.forEach(ele => { @@ -24,4 +24,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/ifElseifExpression.js b/json2mo/ifElseifExpression.js index 2963fe3c..9311df8e 100644 --- a/json2mo/ifElseifExpression.js +++ b/json2mo/ifElseifExpression.js @@ -1,7 +1,7 @@ function parse (content, rawJson = false) { const expressionParser = require('./expression') - var moOutput = '' + let moOutput = '' if (content.condition != null) { moOutput += expressionParser.parse(content.condition, rawJson) @@ -14,4 +14,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/ifElseifStatement.js b/json2mo/ifElseifStatement.js index 440388d4..a52b6732 100644 --- a/json2mo/ifElseifStatement.js +++ b/json2mo/ifElseifStatement.js @@ -2,14 +2,14 @@ function parse (content, rawJson = false) { const expressionParser = require('./expression') const statementParser = require('./statement') - var moOutput = '' + let moOutput = '' if (content.condition != null) { moOutput += expressionParser.parse(content.condition, rawJson) } - var thenStatements = content.then - var thenOutput = '' + const thenStatements = content.then + let thenOutput = '' if (thenStatements != null) { thenOutput = '' thenStatements.forEach(ele => { @@ -24,4 +24,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/ifEquation.js b/json2mo/ifEquation.js index 05d8271e..128d0157 100644 --- a/json2mo/ifEquation.js +++ b/json2mo/ifEquation.js @@ -2,8 +2,8 @@ function parse (content, rawJson = false) { const ifElseifEquationParser = require('./ifElseifEquation') const equationParser = require('./equation') - var moOutput = '' - var ifElseifs = content.if_elseif + let moOutput = '' + const ifElseifs = content.if_elseif if (ifElseifs != null) { ifElseifs.forEach(ele => { moOutput += 'elseif ' @@ -12,9 +12,9 @@ function parse (content, rawJson = false) { } moOutput = moOutput.slice(4, moOutput.length) // to remove 1st else of elseif so that we get "if" - var elseEquations = content.else_equation + const elseEquations = content.else_equation if (elseEquations != null) { - var elseOutput = '' + let elseOutput = '' elseEquations.forEach(ele => { elseOutput += equationParser.parse(ele, rawJson) elseOutput += ';\n' @@ -28,4 +28,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/ifExpression.js b/json2mo/ifExpression.js index a4941310..5d9404f5 100644 --- a/json2mo/ifExpression.js +++ b/json2mo/ifExpression.js @@ -2,8 +2,8 @@ function parse (content, rawJson = false) { const ifElseifExpressionParser = require('./ifElseifExpression') const expressionParser = require('./expression') - var moOutput = '' - var ifElseifs = content.if_elseif + let moOutput = '' + const ifElseifs = content.if_elseif if (ifElseifs != null) { ifElseifs.forEach(ele => { moOutput += ' elseif ' @@ -19,4 +19,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/ifExpressionObj.js b/json2mo/ifExpressionObj.js index 1d4ec894..709afd6a 100644 --- a/json2mo/ifExpressionObj.js +++ b/json2mo/ifExpressionObj.js @@ -1,14 +1,14 @@ function parse (content, rawJson = false) { const util = require('util') - var moOutput = '' - for (var i = 0; i < content.length; i++) { - var ithCon = content[i] - var ithElseIf = ithCon.if_elseif + let moOutput = '' + for (let i = 0; i < content.length; i++) { + const ithCon = content[i] + const ithElseIf = ithCon.if_elseif moOutput += 'if (' moOutput += util.format('%s', ithElseIf[0].condition) moOutput += ') then ' moOutput += util.format('%s', ithElseIf[0].then) - for (var j = 1; j < ithElseIf.length; j++) { + for (let j = 1; j < ithElseIf.length; j++) { moOutput += ' elseif (' moOutput += util.format('%s', ithElseIf[j].condition) moOutput += ') then ' @@ -23,4 +23,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/ifStatement.js b/json2mo/ifStatement.js index 1918e9f3..6270e5ab 100644 --- a/json2mo/ifStatement.js +++ b/json2mo/ifStatement.js @@ -2,8 +2,8 @@ function parse (content, rawJson = false) { const ifElseifStatementParser = require('./ifElseifStatement') const statementParser = require('./statement') - var moOutput = '' - var ifElseifs = content.if_elseif + let moOutput = '' + const ifElseifs = content.if_elseif if (ifElseifs != null) { ifElseifs.forEach(ele => { moOutput += 'elseif ' @@ -12,9 +12,9 @@ function parse (content, rawJson = false) { } moOutput = moOutput.slice(4, moOutput.length) // to remove 1st else of elseif so that we get "if" - var elseStatements = content.else_statement + const elseStatements = content.else_statement if (elseStatements != null) { - var elseOutput = '' + let elseOutput = '' elseStatements.forEach(ele => { elseOutput += statementParser.parse(ele, rawJson) elseOutput += ';\n' @@ -28,4 +28,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/importClause.js b/json2mo/importClause.js index d707df79..01e85f33 100644 --- a/json2mo/importClause.js +++ b/json2mo/importClause.js @@ -4,10 +4,10 @@ function parse (content, rawJson = false) { const commentParser = require('./comment') const importListParser = require('./importList') - var moOutput = '' + let moOutput = '' moOutput += 'import ' - var name = '' + let name = '' if (content.name != null) { name = nameParser.parse(content.name, rawJson) } @@ -40,4 +40,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/importList.js b/json2mo/importList.js index 47224f2a..63df3369 100644 --- a/json2mo/importList.js +++ b/json2mo/importList.js @@ -1,8 +1,8 @@ function parse (content, rawJson = false) { const util = require('util') - var moOutput = '' - var identifierList = content.identifier_list + let moOutput = '' + const identifierList = content.identifier_list if (identifierList != null) { identifierList.forEach(identifier => { moOutput += util.format('%s, ', identifier) @@ -12,4 +12,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/logicalAnd.js b/json2mo/logicalAnd.js index ec04e387..9c5ec9bf 100644 --- a/json2mo/logicalAnd.js +++ b/json2mo/logicalAnd.js @@ -1,10 +1,10 @@ function parse (content, rawJson = false) { const logicalFactorObjParser = require('./logicalFactorObj') - var moOutput = '' + let moOutput = '' moOutput += logicalFactorObjParser.parse(content[0], rawJson) if (content.length > 1) { - for (var i = 1; i < content.length; i++) { + for (let i = 1; i < content.length; i++) { moOutput += ' and ' moOutput += logicalFactorObjParser.parse(content[i], rawJson) } @@ -12,4 +12,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/logicalExpression.js b/json2mo/logicalExpression.js index 85f7aba7..0074e48e 100644 --- a/json2mo/logicalExpression.js +++ b/json2mo/logicalExpression.js @@ -1,11 +1,11 @@ function parse (content, rawJson = false) { const logicalAndParser = require('./logicalAnd') - var logicalOr = content.logical_or - var moOutput = '' + const logicalOr = content.logical_or + let moOutput = '' moOutput += logicalAndParser.parse(logicalOr[0].logical_and, rawJson) if (logicalOr.length > 1) { - for (var i = 1; i < logicalOr.length; i++) { + for (let i = 1; i < logicalOr.length; i++) { moOutput += ' or ' moOutput += logicalAndParser.parse(logicalOr[i].logical_and, rawJson) } @@ -13,4 +13,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/logicalFactorObj.js b/json2mo/logicalFactorObj.js index 2240552c..66bf676a 100644 --- a/json2mo/logicalFactorObj.js +++ b/json2mo/logicalFactorObj.js @@ -1,7 +1,7 @@ function parse (content, rawJson = false) { const util = require('util') - var moOutput = '' + let moOutput = '' if (content.not != null) { moOutput += 'not ' } @@ -15,4 +15,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/longClassSpecifier.js b/json2mo/longClassSpecifier.js index 11ad3fcd..201d7ff4 100644 --- a/json2mo/longClassSpecifier.js +++ b/json2mo/longClassSpecifier.js @@ -3,10 +3,10 @@ function parse (content, rawJson = false) { const compositionParser = require('./composition') const classModificationParser = require('./classModification') - var identifier = content.identifier - var isExtends = content.is_extends + const identifier = content.identifier + const isExtends = content.is_extends - var moOutput = '' + let moOutput = '' if (isExtends != null) { if (isExtends) { @@ -27,12 +27,12 @@ function parse (content, rawJson = false) { } if (rawJson) { - var stringComment = content.string_comment + const stringComment = content.string_comment if (stringComment != null) { moOutput += util.format('\n%s\n', stringComment) } } else { - var descriptionString = content.description_string + const descriptionString = content.description_string if (descriptionString != null) { moOutput += util.format('\n"%s"\n', descriptionString) } @@ -46,4 +46,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/modification.js b/json2mo/modification.js index a48325a7..abf8ba60 100644 --- a/json2mo/modification.js +++ b/json2mo/modification.js @@ -1,9 +1,9 @@ function parse (content, rawJson = false) { const classModificationParser = require('./classModification') const expressionParser = require('./expression') - var moOutput = '' + let moOutput = '' - var haveClaMod = content.class_modification != null + const haveClaMod = content.class_modification != null if (haveClaMod) { moOutput += classModificationParser.parse(content.class_modification, rawJson) } @@ -25,4 +25,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/name.js b/json2mo/name.js index c7751f3c..b1027953 100644 --- a/json2mo/name.js +++ b/json2mo/name.js @@ -2,9 +2,9 @@ function parse (content, rawJson = false) { const util = require('util') const namePartParser = require('./namePart') - var moOutput = '' + let moOutput = '' if (rawJson) { - var nameParts = content.name_parts + const nameParts = content.name_parts if (nameParts != null) { nameParts.forEach(ele => { moOutput += namePartParser.parse(ele, rawJson) @@ -17,4 +17,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/namePart.js b/json2mo/namePart.js index d6f59e6e..fcd5f32e 100644 --- a/json2mo/namePart.js +++ b/json2mo/namePart.js @@ -1,5 +1,5 @@ function parse (content, rawJson = false) { - var moOutput = '' + let moOutput = '' if (rawJson) { if (content.dot_op != null) { if (content.dot_op) { @@ -14,4 +14,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/namedArgument.js b/json2mo/namedArgument.js index 6a1a8640..c46a2fd5 100644 --- a/json2mo/namedArgument.js +++ b/json2mo/namedArgument.js @@ -2,7 +2,7 @@ function parse (content, rawJson = false) { const util = require('util') const functionArgumentParser = require('./functionArgument') - var moOutput = '' + let moOutput = '' if (content.identifier != null) { moOutput += util.format('%s=', content.identifier) } @@ -13,4 +13,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/namedArguments.js b/json2mo/namedArguments.js index 1f8d8f01..fa29d14b 100644 --- a/json2mo/namedArguments.js +++ b/json2mo/namedArguments.js @@ -1,7 +1,7 @@ function parse (content, rawJson = false) { const namedArgumentParser = require('./namedArgument') - var moOutput = '' + let moOutput = '' if (rawJson) { if (content.named_argument != null) { @@ -16,4 +16,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/outputExpressionList.js b/json2mo/outputExpressionList.js index 4839a11c..4587b137 100644 --- a/json2mo/outputExpressionList.js +++ b/json2mo/outputExpressionList.js @@ -1,8 +1,8 @@ function parse (content, rawJson = false) { const expressionParser = require('./expression') - var moOutput = '' - var outputExpressions = null + let moOutput = '' + let outputExpressions = null if (rawJson) { outputExpressions = content.output_expressions } else { @@ -18,4 +18,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/shortClassDefinition.js b/json2mo/shortClassDefinition.js index ea183bb2..0b81bd1d 100644 --- a/json2mo/shortClassDefinition.js +++ b/json2mo/shortClassDefinition.js @@ -2,7 +2,7 @@ function parse (content, rawJson = false) { const util = require('util') const shortClassSpecifierParser = require('./shortClassSpecifier') - var moOutput = '' + let moOutput = '' if (content.class_prefixes != null) { moOutput += util.format('%s ', content.class_prefixes) } @@ -12,4 +12,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/shortClassSpecifier.js b/json2mo/shortClassSpecifier.js index f0a47a44..9ea1d349 100644 --- a/json2mo/shortClassSpecifier.js +++ b/json2mo/shortClassSpecifier.js @@ -2,8 +2,8 @@ function parse (content, rawJson = false) { const util = require('util') const shortClassSpecifierValueParser = require('./shortClassSpecifierValue') - var moOutput = '' - var identifier = content.identifier + let moOutput = '' + const identifier = content.identifier if (identifier != null) { moOutput += util.format('%s=', identifier) @@ -21,4 +21,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/shortClassSpecifierValue.js b/json2mo/shortClassSpecifierValue.js index bda9463d..56c1fc43 100644 --- a/json2mo/shortClassSpecifierValue.js +++ b/json2mo/shortClassSpecifierValue.js @@ -6,7 +6,7 @@ function parse (content, rawJson = false) { const commentParser = require('./comment') const enumListParser = require('./enumList') - var moOutput = '' + let moOutput = '' if (content.name == null) { moOutput += 'enumeration (' @@ -41,4 +41,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/simpleExpression.js b/json2mo/simpleExpression.js index 4d0ffa7f..6f18d27b 100644 --- a/json2mo/simpleExpression.js +++ b/json2mo/simpleExpression.js @@ -5,7 +5,7 @@ function parse (content, rawJson = false) { const logicalExpressionParser = require('./logicalExpression') const ifExpressionParser = require('./ifExpressionObj') - var moOutput = '' + let moOutput = '' if (content != null) { if (rawJson) { moOutput += util.format('%s', JSON.stringify(content)) @@ -26,4 +26,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/statement.js b/json2mo/statement.js index 7cf32a64..13dbab7f 100644 --- a/json2mo/statement.js +++ b/json2mo/statement.js @@ -8,7 +8,7 @@ function parse (content, rawJson) { const whenStatementParser = require('./whenStatement') const commentParser = require('./comment') - var moOutput = '' + let moOutput = '' if (content.assignment_statement != null) { moOutput += '\n' moOutput += assignmentStatementParser.parse(content.assignment_statement, rawJson) @@ -52,4 +52,4 @@ function parse (content, rawJson) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/storedDefiniton.js b/json2mo/storedDefiniton.js index c99f4a7b..f1c6b3b2 100644 --- a/json2mo/storedDefiniton.js +++ b/json2mo/storedDefiniton.js @@ -2,9 +2,9 @@ function parse (content, rawJson = false) { const util = require('util') const finalClassDefinitionParser = require('./finalClassDefinition') - var within = content.within + const within = content.within - var moOutput = '' + let moOutput = '' if (within != null) { moOutput += util.format('within %s;\n', within) } @@ -27,4 +27,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/subscript.js b/json2mo/subscript.js index a6ff5013..702a340b 100644 --- a/json2mo/subscript.js +++ b/json2mo/subscript.js @@ -1,7 +1,7 @@ function parse (content, rawJson = false) { const expressionParser = require('./expression') - var moOutput = '' + let moOutput = '' if (rawJson) { moOutput += '[' @@ -15,4 +15,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/typeSpecifier.js b/json2mo/typeSpecifier.js index d9f19056..e1716912 100644 --- a/json2mo/typeSpecifier.js +++ b/json2mo/typeSpecifier.js @@ -2,17 +2,17 @@ function parse (content, rawJson = false) { const util = require('util') const nameParser = require('./name') - var moOutput = '' + let moOutput = '' if (rawJson) { if (content.name != null) { moOutput += nameParser.parse(content.name, rawJson) } } else { - var name = content + const name = content moOutput += util.format('%s ', name) } return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/whenEquation.js b/json2mo/whenEquation.js index c53258ac..c3a305f1 100644 --- a/json2mo/whenEquation.js +++ b/json2mo/whenEquation.js @@ -2,8 +2,8 @@ function parse (content, rawJson = false) { const expressionParser = require('./expression') const equationParser = require('./equation') - var moOutput = '' - var whenElsewhens = null + let moOutput = '' + let whenElsewhens = null if (rawJson) { whenElsewhens = content.when_elsewhen } else { @@ -17,8 +17,8 @@ function parse (content, rawJson = false) { moOutput += expressionParser.parse(ele.condition, rawJson) } moOutput += '\n' - var thenEquations = ele.then - var thenOutput = '' + const thenEquations = ele.then + let thenOutput = '' if (thenEquations != null) { thenEquations.forEach(thenEqu => { thenOutput += equationParser.parse(thenEqu, rawJson) @@ -37,4 +37,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/whenStatement.js b/json2mo/whenStatement.js index e9817b70..9fa2559b 100644 --- a/json2mo/whenStatement.js +++ b/json2mo/whenStatement.js @@ -2,8 +2,8 @@ function parse (content, rawJson = false) { const expressionParser = require('./expression') const statementParser = require('./statement') - var moOutput = '' - var whenElsewhens = null + let moOutput = '' + let whenElsewhens = null if (rawJson) { whenElsewhens = content.when_elsewhen } else { @@ -17,8 +17,8 @@ function parse (content, rawJson = false) { moOutput += expressionParser.parse(ele.condition, rawJson) } moOutput += '\n' - var thenStatements = ele.then - var thenOutput = '' + const thenStatements = ele.then + let thenOutput = '' if (thenStatements != null) { thenStatements.forEach(thenSta => { thenOutput += statementParser.parse(thenSta, rawJson) @@ -37,4 +37,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/json2mo/whileStatement.js b/json2mo/whileStatement.js index 838f0456..201dc1ec 100644 --- a/json2mo/whileStatement.js +++ b/json2mo/whileStatement.js @@ -2,14 +2,14 @@ function parse (content, rawJson = false) { const expressionParser = require('./expression') const statementParser = require('./statement') - var moOutput = '' + let moOutput = '' moOutput += 'while ' if (content.condition != null) { // in simplified json moOutput += expressionParser.parse(content.condition, rawJson) } moOutput += 'loop \n' - var loopStatements = content.loop_statements + const loopStatements = content.loop_statements loopStatements.forEach(ele => { moOutput += statementParser.parse(ele, rawJson) moOutput += ';\n' @@ -18,4 +18,4 @@ function parse (content, rawJson = false) { return moOutput } -module.exports = {parse} +module.exports = { parse } diff --git a/lib/graphicalPrimitives.js b/lib/graphicalPrimitives.js index a854a4f6..60f7f1ea 100644 --- a/lib/graphicalPrimitives.js +++ b/lib/graphicalPrimitives.js @@ -53,12 +53,12 @@ function graphicAnnotationObj (name, mod) { */ function lineObj (mod) { const claModArr = mod.class_modification - var names = [] - var values = [] - for (var i = 0; i < claModArr.length; i++) { - var ithEle = claModArr[i] - var name = getProperty(['element_modification_or_replaceable', 'element_modification', 'name'], ithEle) - var expression = getProperty(['element_modification_or_replaceable', 'element_modification', 'modification', 'expression', 'simple_expression'], ithEle) + const names = [] + const values = [] + for (let i = 0; i < claModArr.length; i++) { + const ithEle = claModArr[i] + const name = getProperty(['element_modification_or_replaceable', 'element_modification', 'name'], ithEle) + const expression = getProperty(['element_modification_or_replaceable', 'element_modification', 'modification', 'expression', 'simple_expression'], ithEle) names.push(name) values.push(expression) } @@ -72,12 +72,12 @@ function lineObj (mod) { */ function textObj (mod) { const claModArr = mod.class_modification - var names = [] - var values = [] - for (var i = 0; i < claModArr.length; i++) { - var ithEle = claModArr[i] - var name = getProperty(['element_modification_or_replaceable', 'element_modification', 'name'], ithEle) - var expression = getProperty(['element_modification_or_replaceable', 'element_modification', 'modification', 'expression', 'simple_expression'], ithEle) + const names = [] + const values = [] + for (let i = 0; i < claModArr.length; i++) { + const ithEle = claModArr[i] + const name = getProperty(['element_modification_or_replaceable', 'element_modification', 'name'], ithEle) + const expression = getProperty(['element_modification_or_replaceable', 'element_modification', 'modification', 'expression', 'simple_expression'], ithEle) names.push(name) values.push(expression) } @@ -91,12 +91,12 @@ function textObj (mod) { */ function rectangleObj (mod) { const claModArr = mod.class_modification - var names = [] - var values = [] - for (var i = 0; i < claModArr.length; i++) { - var ithEle = claModArr[i] - var name = getProperty(['element_modification_or_replaceable', 'element_modification', 'name'], ithEle) - var expression = getProperty(['element_modification_or_replaceable', 'element_modification', 'modification', 'expression', 'simple_expression'], ithEle) + const names = [] + const values = [] + for (let i = 0; i < claModArr.length; i++) { + const ithEle = claModArr[i] + const name = getProperty(['element_modification_or_replaceable', 'element_modification', 'name'], ithEle) + const expression = getProperty(['element_modification_or_replaceable', 'element_modification', 'modification', 'expression', 'simple_expression'], ithEle) names.push(name) values.push(expression) } @@ -110,12 +110,12 @@ function rectangleObj (mod) { */ function polygonObj (mod) { const claModArr = mod.class_modification - var names = [] - var values = [] - for (var i = 0; i < claModArr.length; i++) { - var ithEle = claModArr[i] - var name = getProperty(['element_modification_or_replaceable', 'element_modification', 'name'], ithEle) - var expression = getProperty(['element_modification_or_replaceable', 'element_modification', 'modification', 'expression', 'simple_expression'], ithEle) + const names = [] + const values = [] + for (let i = 0; i < claModArr.length; i++) { + const ithEle = claModArr[i] + const name = getProperty(['element_modification_or_replaceable', 'element_modification', 'name'], ithEle) + const expression = getProperty(['element_modification_or_replaceable', 'element_modification', 'modification', 'expression', 'simple_expression'], ithEle) names.push(name) values.push(expression) } @@ -129,12 +129,12 @@ function polygonObj (mod) { */ function ellipseObj (mod) { const claModArr = mod.class_modification - var names = [] - var values = [] - for (var i = 0; i < claModArr.length; i++) { - var ithEle = claModArr[i] - var name = getProperty(['element_modification_or_replaceable', 'element_modification', 'name'], ithEle) - var expression = getProperty(['element_modification_or_replaceable', 'element_modification', 'modification', 'expression', 'simple_expression'], ithEle) + const names = [] + const values = [] + for (let i = 0; i < claModArr.length; i++) { + const ithEle = claModArr[i] + const name = getProperty(['element_modification_or_replaceable', 'element_modification', 'name'], ithEle) + const expression = getProperty(['element_modification_or_replaceable', 'element_modification', 'modification', 'expression', 'simple_expression'], ithEle) names.push(name) values.push(expression) } @@ -148,12 +148,12 @@ function ellipseObj (mod) { */ function bitmapObj (mod) { const claModArr = mod.class_modification - var names = [] - var values = [] - for (var i = 0; i < claModArr.length; i++) { - var ithEle = claModArr[i] - var name = getProperty(['element_modification_or_replaceable', 'element_modification', 'name'], ithEle) - var expression = getProperty(['element_modification_or_replaceable', 'element_modification', 'modification', 'expression', 'simple_expression'], ithEle) + const names = [] + const values = [] + for (let i = 0; i < claModArr.length; i++) { + const ithEle = claModArr[i] + const name = getProperty(['element_modification_or_replaceable', 'element_modification', 'name'], ithEle) + const expression = getProperty(['element_modification_or_replaceable', 'element_modification', 'modification', 'expression', 'simple_expression'], ithEle) names.push(name) values.push(expression) } @@ -167,21 +167,21 @@ function bitmapObj (mod) { */ function placementObj (mod) { const claModArr = mod.class_modification - var visible, iconVisible, transformation, iconTransformation - for (var i = 0; i < claModArr.length; i++) { - var ithEle = claModArr[i] - var name = getProperty(['element_modification_or_replaceable', 'element_modification', 'name'], ithEle) - var modification = getProperty(['element_modification_or_replaceable', 'element_modification', 'modification'], ithEle) + let visible, iconVisible, transformation, iconTransformation + for (let i = 0; i < claModArr.length; i++) { + const ithEle = claModArr[i] + const name = getProperty(['element_modification_or_replaceable', 'element_modification', 'name'], ithEle) + const modification = getProperty(['element_modification_or_replaceable', 'element_modification', 'modification'], ithEle) if (name === 'visible') { visible = modification.expression.simple_expression } if (name === 'iconVisible') { iconVisible = modification.expression.simple_expression } if (name === 'transformation') { transformation = transformationObj(modification) } if (name === 'iconTransformation') { iconTransformation = transformationObj(modification) } } return Object.assign( - {'visible': visible}, - {'iconVisible': iconVisible}, - {'transformation': transformation}, - {'iconTransformation': iconTransformation} + { visible }, + { iconVisible }, + { transformation }, + { iconTransformation } ) } @@ -192,19 +192,19 @@ function placementObj (mod) { */ function coordinateSystemObj (mod) { const claModArr = mod.class_modification - var extent, preserveAspectRatio, initialScale - for (var i = 0; i < claModArr.length; i++) { - var ithEle = claModArr[i] - var name = getProperty(['element_modification_or_replaceable', 'element_modification', 'name'], ithEle) - var expression = getProperty(['element_modification_or_replaceable', 'element_modification', 'modification', 'expression', 'simple_expression'], ithEle) + let extent, preserveAspectRatio, initialScale + for (let i = 0; i < claModArr.length; i++) { + const ithEle = claModArr[i] + const name = getProperty(['element_modification_or_replaceable', 'element_modification', 'name'], ithEle) + const expression = getProperty(['element_modification_or_replaceable', 'element_modification', 'modification', 'expression', 'simple_expression'], ithEle) if (name === 'extent') { extent = pointsObj(expression) } if (name === 'preserveAspectRatio') { preserveAspectRatio = expression } if (name === 'initialScale') { initialScale = Number(expression) } } return Object.assign( - {'extent': extent}, - {'preserveAspectRatio': preserveAspectRatio}, - {'initialScale': initialScale} + { extent }, + { preserveAspectRatio }, + { initialScale } ) } @@ -216,13 +216,13 @@ function coordinateSystemObj (mod) { function graphicsObj (mod) { const graStr = mod.expression.simple_expression const graItes = ['Line', 'Text', 'Rectangle', 'Polygon', 'Ellipse', 'Bitmap'] - var linLoc, texLoc, recLoc, polLoc, ellLoc, bitLoc - var tempLocs = [] - var allLocs + let linLoc, texLoc, recLoc, polLoc, ellLoc, bitLoc + const tempLocs = [] + // const allLocs = [] // find the location of each primitive - for (var i = 0; i < graItes.length; i++) { - var ithEle = graItes[i] - var seaKey = ithEle + '(' + for (let i = 0; i < graItes.length; i++) { + const ithEle = graItes[i] + const seaKey = ithEle + '(' if (ithEle === 'Line') { linLoc = locations(seaKey, graStr) } if (ithEle === 'Text') { texLoc = locations(seaKey, graStr) } if (ithEle === 'Rectangle') { recLoc = locations(seaKey, graStr) } @@ -230,24 +230,24 @@ function graphicsObj (mod) { if (ithEle === 'Ellipse') { ellLoc = locations(seaKey, graStr) } if (ithEle === 'Bitmap') { bitLoc = locations(seaKey, graStr) } } - allLocs = tempLocs.concat(linLoc || []) - .concat(texLoc || []) - .concat(recLoc || []) - .concat(polLoc || []) - .concat(ellLoc || []) - .concat(bitLoc || []) - .sort(function (a, b) { return (a - b) }) - var graArr = [] - var firstBra, lastBra, name, attStr + const allLocs = tempLocs.concat(linLoc || []) + .concat(texLoc || []) + .concat(recLoc || []) + .concat(polLoc || []) + .concat(ellLoc || []) + .concat(bitLoc || []) + .sort(function (a, b) { return (a - b) }) + const graArr = [] + let firstBra, lastBra, name, attStr if (allLocs.length > 1) { - for (var j = 0; j < allLocs.length - 1; j++) { + for (let j = 0; j < allLocs.length - 1; j++) { firstBra = graStr.indexOf('(', allLocs[j]) lastBra = graStr.lastIndexOf(')', allLocs[j + 1]) name = graStr.substring(allLocs[j], firstBra) attStr = graStr.substring(firstBra + 1, lastBra) graArr.push(Object.assign( - {'name': name}, - {'attribute': graphicAttributeObj(name, attStr)} + { name }, + { attribute: graphicAttributeObj(name, attStr) } )) } } @@ -256,8 +256,8 @@ function graphicsObj (mod) { name = graStr.substring(allLocs[allLocs.length - 1], firstBra) attStr = graStr.substring(firstBra + 1, lastBra) graArr.push(Object.assign( - {'name': name}, - {'attribute': graphicAttributeObj(name, attStr)} + { name }, + { attribute: graphicAttributeObj(name, attStr) } )) return graArr } @@ -269,19 +269,19 @@ function graphicsObj (mod) { */ function transformationObj (mod) { const claModArr = mod.class_modification - var origin, extent, rotation - for (var i = 0; i < claModArr.length; i++) { - var ithEle = claModArr[i] - var name = getProperty(['element_modification_or_replaceable', 'element_modification', 'name'], ithEle) - var expression = getProperty(['element_modification_or_replaceable', 'element_modification', 'modification', 'expression', 'simple_expression'], ithEle) + let origin, extent, rotation + for (let i = 0; i < claModArr.length; i++) { + const ithEle = claModArr[i] + const name = getProperty(['element_modification_or_replaceable', 'element_modification', 'name'], ithEle) + const expression = getProperty(['element_modification_or_replaceable', 'element_modification', 'modification', 'expression', 'simple_expression'], ithEle) if (name === 'extent') { extent = pointsObj(expression) } if (name === 'origin') { origin = originObj(expression) } if (name === 'rotation') { rotation = Number(expression) } } return Object.assign( - {'origin': origin}, - {'extent': extent}, - {'rotation': rotation} + { origin }, + { extent }, + { rotation } ) } @@ -293,18 +293,18 @@ function transformationObj (mod) { function graphicItemsObj (graIteObj) { const names = graIteObj.names const expressions = graIteObj.expressions - var visible, origin, rotation - for (var i = 0; i < names.length; i++) { - var name = names[i] - var expression = expressions[i] + let visible, origin, rotation + for (let i = 0; i < names.length; i++) { + const name = names[i] + const expression = expressions[i] if (name === 'visible') { visible = expression } if (name === 'origin') { origin = originObj(expression) } if (name === 'rotation') { rotation = Number(expression) } } return Object.assign( - {'visible': visible}, - {'origin': origin}, - {'rotation': rotation} + { visible }, + { origin }, + { rotation } ) } @@ -317,8 +317,8 @@ function originObj (expStr) { const subStr = expStr.substring(expStr.indexOf('{') + 1, expStr.lastIndexOf('}')) const subStrArr = subStr.split(',') return Object.assign( - {'x': Number(subStrArr[0])}, - {'y': Number(subStrArr[1])} + { x: Number(subStrArr[0]) }, + { y: Number(subStrArr[1]) } ) } @@ -330,10 +330,10 @@ function originObj (expStr) { function filledShapeObj (filShaObj) { const names = filShaObj.names const expressions = filShaObj.expressions - var lineColor, fillColor, pattern, fillPattern, lineThickness - for (var i = 0; i < names.length; i++) { - var name = names[i] - var expression = expressions[i] + let lineColor, fillColor, pattern, fillPattern, lineThickness + for (let i = 0; i < names.length; i++) { + const name = names[i] + const expression = expressions[i] if (name === 'lineColor') { lineColor = colorObj(expression) } if (name === 'fillColor') { fillColor = colorObj(expression) } if (name === 'pattern') { pattern = expression } @@ -341,29 +341,29 @@ function filledShapeObj (filShaObj) { if (name === 'lineThickness') { lineThickness = Number(expression) } } return Object.assign( - {'lineColor': lineColor}, - {'fillColor': fillColor}, - {'pattern': pattern}, - {'fillPattern': fillPattern}, - {'lineThickness': lineThickness} + { lineColor }, + { fillColor }, + { pattern }, + { fillPattern }, + { lineThickness } ) } function graIteFilShaObjs (graIteNams, graIteExps, filShaNams, filShaExps) { - var graIteObjs, filShaObjs + let graIteObjs, filShaObjs if (graIteNams && graIteNams.length > 0) { graIteObjs = graphicItemsObj(Object.assign( - {'names': graIteNams}, {'expressions': graIteExps} + { names: graIteNams }, { expressions: graIteExps } )) } if (filShaNams && filShaNams.length > 0) { filShaObjs = filledShapeObj(Object.assign( - {'names': filShaNams}, {'expressions': filShaExps} + { names: filShaNams }, { expressions: filShaExps } )) } return Object.assign( - {'graIteObjs': graIteObjs}, - {'filShaObjs': filShaObjs} + { graIteObjs }, + { filShaObjs } ) } @@ -376,12 +376,12 @@ function pointsObj (expStr) { const subStr = expStr.substring(expStr.indexOf('{') + 1, expStr.lastIndexOf('}')) const lefBraLocs = locations('{', subStr) const rigBraLocs = locations('}', subStr) - var eleStr, eleStrArr + let eleStr, eleStrArr const points = [] - for (var i = 0; i < lefBraLocs.length; i++) { + for (let i = 0; i < lefBraLocs.length; i++) { eleStr = subStr.substring(lefBraLocs[i] + 1, rigBraLocs[i]) eleStrArr = eleStr.split(',') - points.push(Object.assign({'x': Number(eleStrArr[0]), 'y': Number(eleStrArr[1])})) + points.push(Object.assign({ x: Number(eleStrArr[0]), y: Number(eleStrArr[1]) })) } return points } @@ -395,9 +395,9 @@ function colorObj (expStr) { const subStr = expStr.substring(expStr.indexOf('{') + 1, expStr.lastIndexOf('}')) const subStrArr = subStr.split(',') return Object.assign( - {'r': Number(subStrArr[0])}, - {'g': Number(subStrArr[1])}, - {'b': Number(subStrArr[2])} + { r: Number(subStrArr[0]) }, + { g: Number(subStrArr[1]) }, + { b: Number(subStrArr[2]) } ) } @@ -419,9 +419,9 @@ function graphicAttributeObj (keyNam, valStr) { * @param valStr string */ function lineAttributeObj (valStr) { - var nameVales = nameAttributePair(valStr) - var names = nameVales.names - var values = nameVales.values + const nameVales = nameAttributePair(valStr) + const names = nameVales.names + const values = nameVales.values return lineAttribute(names, values) } @@ -431,9 +431,9 @@ function lineAttributeObj (valStr) { * @param valStr string */ function textAttributeObj (valStr) { - var nameVales = nameAttributePair(valStr) - var names = nameVales.names - var values = nameVales.values + const nameVales = nameAttributePair(valStr) + const names = nameVales.names + const values = nameVales.values return textAttribute(names, values) } @@ -443,9 +443,9 @@ function textAttributeObj (valStr) { * @param valStr string */ function rectangleAttributeObj (valStr) { - var nameVales = nameAttributePair(valStr) - var names = nameVales.names - var values = nameVales.values + const nameVales = nameAttributePair(valStr) + const names = nameVales.names + const values = nameVales.values return rectangleAttribute(names, values) } @@ -455,9 +455,9 @@ function rectangleAttributeObj (valStr) { * @param valStr string */ function polygonAttributeObj (valStr) { - var nameVales = nameAttributePair(valStr) - var names = nameVales.names - var values = nameVales.values + const nameVales = nameAttributePair(valStr) + const names = nameVales.names + const values = nameVales.values return polygonAttribute(names, values) } @@ -467,9 +467,9 @@ function polygonAttributeObj (valStr) { * @param valStr string */ function ellipseAttributeObj (valStr) { - var nameVales = nameAttributePair(valStr) - var names = nameVales.names - var values = nameVales.values + const nameVales = nameAttributePair(valStr) + const names = nameVales.names + const values = nameVales.values return ellipseAttribute(names, values) } @@ -479,9 +479,9 @@ function ellipseAttributeObj (valStr) { * @param valStr string */ function bitmapAttributeObj (valStr) { - var nameVales = nameAttributePair(valStr) - var names = nameVales.names - var values = nameVales.values + const nameVales = nameAttributePair(valStr) + const names = nameVales.names + const values = nameVales.values return bitmapAttribute(names, values) } @@ -492,10 +492,10 @@ function bitmapAttributeObj (valStr) { * @param values value string array */ function lineAttribute (names, values) { - var points, color, pattern, thickness, arrowSize, smooth, visible - for (var i = 0; i < names.length; i++) { - var name = names[i] - var expression = values[i] + let points, color, pattern, thickness, arrowSize, smooth, visible + for (let i = 0; i < names.length; i++) { + const name = names[i] + const expression = values[i] if (name === 'pattern') { pattern = expression } if (name === 'thickness') { thickness = Number(expression) } if (name === 'arrowSize') { arrowSize = Number(expression) } @@ -507,13 +507,13 @@ function lineAttribute (names, values) { if (name === 'color') { color = colorObj(expression) } } return Object.assign( - {'points': points}, - {'color': color}, - {'pattern': pattern}, - {'thickness': thickness}, - {'arrowSize': arrowSize}, - {'smooth': smooth}, - {'visible': visible} + { points }, + { color }, + { pattern }, + { thickness }, + { arrowSize }, + { smooth }, + { visible } ) } @@ -526,15 +526,15 @@ function lineAttribute (names, values) { function textAttribute (names, values) { const graItes = ['visible', 'origin', 'rotation'] const filledShape = ['lineColor', 'fillColor', 'pattern', 'fillPattern', 'lineThickness'] - var graIteNams = [] - var graIteExps = [] - var filShaNams = [] - var filShaExps = [] - var extent, textString, fontSize, fontName, textColor - var horizontalAlignment, string, index - for (var i = 0; i < names.length; i++) { - var name = names[i] - var expression = values[i] + const graIteNams = [] + const graIteExps = [] + const filShaNams = [] + const filShaExps = [] + let extent, textString, fontSize, fontName, textColor + let horizontalAlignment, string, index + for (let i = 0; i < names.length; i++) { + const name = names[i] + const expression = values[i] if (name === 'extent') { extent = pointsObj(expression) } if (name === 'textString') { textString = expression } if (name === 'fontSize') { fontSize = Number(expression) } @@ -554,16 +554,16 @@ function textAttribute (names, values) { filShaExps.push(expression) } } - var graIteFilShaObj = graIteFilShaObjs(graIteNams, graIteExps, filShaNams, filShaExps) + const graIteFilShaObj = graIteFilShaObjs(graIteNams, graIteExps, filShaNams, filShaExps) return Object.assign( - {'extent': extent}, - {'textString': textString}, - {'fontSize': fontSize}, - {'fontName': fontName}, - {'textColor': textColor}, - {'horizontalAlignment': horizontalAlignment}, - {'string': string}, - {'index': index}, + { extent }, + { textString }, + { fontSize }, + { fontName }, + { textColor }, + { horizontalAlignment }, + { string }, + { index }, graIteFilShaObj ? graIteFilShaObj.graIteObjs : undefined, graIteFilShaObj ? graIteFilShaObj.filShaObjs : undefined ) @@ -578,14 +578,14 @@ function textAttribute (names, values) { function rectangleAttribute (names, values) { const graItes = ['visible', 'origin', 'rotation'] const filledShape = ['lineColor', 'fillColor', 'pattern', 'fillPattern', 'lineThickness'] - var graIteNams = [] - var graIteExps = [] - var filShaNams = [] - var filShaExps = [] - var extent, radius, borderPattern - for (var i = 0; i < names.length; i++) { - var name = names[i] - var expression = values[i] + const graIteNams = [] + const graIteExps = [] + const filShaNams = [] + const filShaExps = [] + let extent, radius, borderPattern + for (let i = 0; i < names.length; i++) { + const name = names[i] + const expression = values[i] if (name === 'extent') { extent = pointsObj(expression) } if (name === 'radius') { radius = Number(expression) } if (name === 'borderPattern') { borderPattern = expression } @@ -600,11 +600,11 @@ function rectangleAttribute (names, values) { filShaExps.push(expression) } } - var graIteFilShaObj = graIteFilShaObjs(graIteNams, graIteExps, filShaNams, filShaExps) + const graIteFilShaObj = graIteFilShaObjs(graIteNams, graIteExps, filShaNams, filShaExps) return Object.assign( - {'extent': extent}, - {'radius': radius}, - {'borderPattern': borderPattern}, + { extent }, + { radius }, + { borderPattern }, graIteFilShaObj ? graIteFilShaObj.graIteObjs : undefined, graIteFilShaObj ? graIteFilShaObj.filShaObjs : undefined ) @@ -619,14 +619,14 @@ function rectangleAttribute (names, values) { function polygonAttribute (names, values) { const graItes = ['visible', 'origin', 'rotation'] const filledShape = ['lineColor', 'fillColor', 'pattern', 'fillPattern', 'lineThickness'] - var graIteNams = [] - var graIteExps = [] - var filShaNams = [] - var filShaExps = [] - var points, smooth - for (var i = 0; i < names.length; i++) { - var name = names[i] - var expression = values[i] + const graIteNams = [] + const graIteExps = [] + const filShaNams = [] + const filShaExps = [] + let points, smooth + for (let i = 0; i < names.length; i++) { + const name = names[i] + const expression = values[i] if (name === 'points') { points = pointsObj(expression) } if (name === 'smooth') { smooth = expression } // Check if it is the graphicItems @@ -640,10 +640,10 @@ function polygonAttribute (names, values) { filShaExps.push(expression) } } - var graIteFilShaObj = graIteFilShaObjs(graIteNams, graIteExps, filShaNams, filShaExps) + const graIteFilShaObj = graIteFilShaObjs(graIteNams, graIteExps, filShaNams, filShaExps) return Object.assign( - {'points': points}, - {'smooth': smooth}, + { points }, + { smooth }, graIteFilShaObj ? graIteFilShaObj.graIteObjs : undefined, graIteFilShaObj ? graIteFilShaObj.filShaObjs : undefined ) @@ -658,14 +658,14 @@ function polygonAttribute (names, values) { function ellipseAttribute (names, values) { const graItes = ['visible', 'origin', 'rotation'] const filledShape = ['lineColor', 'fillColor', 'pattern', 'fillPattern', 'lineThickness'] - var graIteNams = [] - var graIteExps = [] - var filShaNams = [] - var filShaExps = [] - var extent, startAngle, endAngle, closure - for (var i = 0; i < names.length; i++) { - var name = names[i] - var expression = values[i] + const graIteNams = [] + const graIteExps = [] + const filShaNams = [] + const filShaExps = [] + let extent, startAngle, endAngle, closure + for (let i = 0; i < names.length; i++) { + const name = names[i] + const expression = values[i] if (name === 'extent') { extent = pointsObj(expression) } if (name === 'startAngle') { startAngle = Number(expression) } if (name === 'endAngle') { endAngle = Number(expression) } @@ -681,12 +681,12 @@ function ellipseAttribute (names, values) { filShaExps.push(expression) } } - var graIteFilShaObj = graIteFilShaObjs(graIteNams, graIteExps, filShaNams, filShaExps) + const graIteFilShaObj = graIteFilShaObjs(graIteNams, graIteExps, filShaNams, filShaExps) return Object.assign( - {'extent': extent}, - {'startAngle': startAngle}, - {'endAngle': endAngle}, - {'closure': closure}, + { extent }, + { startAngle }, + { endAngle }, + { closure }, graIteFilShaObj ? graIteFilShaObj.graIteObjs : undefined, graIteFilShaObj ? graIteFilShaObj.filShaObjs : undefined ) @@ -700,12 +700,12 @@ function ellipseAttribute (names, values) { */ function bitmapAttribute (names, values) { const graItes = ['visible', 'origin', 'rotation'] - var graIteNams = [] - var graIteExps = [] - var extent, fileName, imageSource - for (var i = 0; i < names.length; i++) { - var name = names[i] - var expression = values[i] + const graIteNams = [] + const graIteExps = [] + let extent, fileName, imageSource + for (let i = 0; i < names.length; i++) { + const name = names[i] + const expression = values[i] if (name === 'extent') { extent = pointsObj(expression) } if (name === 'fileName') { fileName = expression } if (name === 'imageSource') { imageSource = expression } @@ -715,11 +715,11 @@ function bitmapAttribute (names, values) { graIteExps.push(expression) } } - var graIteObj = graIteFilShaObjs(graIteNams, graIteExps) + const graIteObj = graIteFilShaObjs(graIteNams, graIteExps) return Object.assign( - {'extent': extent}, - {'fileName': fileName}, - {'imageSource': imageSource}, + { extent }, + { fileName }, + { imageSource }, graIteObj ? graIteObj.graIteObjs : undefined ) } @@ -731,26 +731,26 @@ function bitmapAttribute (names, values) { */ function nameAttributePair (valStr) { // search for '=' locations - var equLocs = locations('=', valStr) + const equLocs = locations('=', valStr) // search for ',' locations - var comLocs = [] - for (var i = 0; i < equLocs.length; i++) { - var comLoc = valStr.lastIndexOf(',', equLocs[i]) + const comLocs = [] + for (let i = 0; i < equLocs.length; i++) { + const comLoc = valStr.lastIndexOf(',', equLocs[i]) if (comLoc > -1) { comLocs.push(comLoc) } } - var keyNam = [] - var val = [] + const keyNam = [] + const val = [] keyNam.push(valStr.substring(0, equLocs[0])) if (comLocs.length > 0) { - for (var j = 0; j < comLocs.length; j++) { + for (let j = 0; j < comLocs.length; j++) { keyNam.push(valStr.substring(comLocs[j] + 1, equLocs[j + 1])) val.push(valStr.substring(equLocs[j] + 1, comLocs[j])) } } val.push(valStr.substring(equLocs[equLocs.length - 1] + 1)) return Object.assign( - {'names': keyNam}, - {'values': val} + { names: keyNam }, + { values: val } ) } @@ -761,8 +761,8 @@ function nameAttributePair (valStr) { * @param str string */ function locations (substr, str) { - var a = [] - var i = -1 + const a = [] + let i = -1 while ((i = str.indexOf(substr, i + 1)) >= 0) { a.push(i) } return a } diff --git a/lib/jsonquery.js b/lib/jsonquery.js index 8005421d..d0bd6b54 100644 --- a/lib/jsonquery.js +++ b/lib/jsonquery.js @@ -1,6 +1,6 @@ const ut = require('../lib/util.js') const graPri = require('../lib/graphicalPrimitives.js') -const { is } = require('bluebird') +// const { is } = require('bluebird') /** * Get the JSON property `p` from the json data `o` @@ -20,18 +20,18 @@ function simplifyModelicaJSON (model, parseMode) { const within = model.within const finalDef = model.final_class_definitions const claDefArr = [] - for (var i = 0; i < finalDef.length; i++) { - var obj = finalDef[i] + for (let i = 0; i < finalDef.length; i++) { + const obj = finalDef[i] const final = obj.is_final ? true : undefined const claDef = this.classDefinition(obj.class_definition) - claDefArr.push(Object.assign({'final': final}, claDef)) + claDefArr.push(Object.assign({ final }, claDef)) } return Object.assign( - {'within': within}, - {'class_definition': claDefArr}, - {'modelicaFile': model.modelicaFile}, - {'fullMoFilePath': model.fullMoFilePath}, - {'checksum': model.checksum}) + { within }, + { class_definition: claDefArr }, + { modelicaFile: model.modelicaFile }, + { fullMoFilePath: model.fullMoFilePath }, + { checksum: model.checksum }) } function classDefinition (claDef) { @@ -39,9 +39,9 @@ function classDefinition (claDef) { const classPrefixes = claDef.class_prefixes const classSpecifierObj = this.classSpecifier(claDef.class_specifier) return Object.assign( - {'encapsulated': encapsulated || undefined}, - {'class_prefixes': classPrefixes}, - {'class_specifier': classSpecifierObj} + { encapsulated: encapsulated || undefined }, + { class_prefixes: classPrefixes }, + { class_specifier: classSpecifierObj } ) } @@ -55,9 +55,11 @@ function classSpecifier (claSpe) { const shortClass = claSpe.short_class_specifier const derClass = claSpe.der_class_specifier if (longClass || shortClass || derClass) { - return longClass ? (Object.assign({'long_class_specifier': this.longClassSpecifier(longClass)})) - : (shortClass ? (Object.assign({'short_class_specifier': this.shortClassSpecifier(shortClass)})) - : (Object.assign({'der_class_specifier': this.derClassSpecifier(derClass)}))) + return longClass + ? (Object.assign({ long_class_specifier: this.longClassSpecifier(longClass) })) + : (shortClass + ? (Object.assign({ short_class_specifier: this.shortClassSpecifier(shortClass) })) + : (Object.assign({ der_class_specifier: this.derClassSpecifier(derClass) }))) } throw new Error('one of long_class_specifier or short_class_specifier or der_class_specifier must be present in class_specifier') } @@ -68,14 +70,14 @@ function classSpecifier (claSpe) { * @param lonClaSpe long_class_specifier value */ function longClassSpecifier (lonClaSpe) { - var ident = null + let ident = null if (lonClaSpe.identifier) { ident = lonClaSpe.identifier } else { throw new Error('missing identifier') } const desStr = trimDesString(lonClaSpe.string_comment) - var comp = null + let comp = null if (lonClaSpe.composition) { comp = this.composition(lonClaSpe.composition) } else { @@ -85,11 +87,11 @@ function longClassSpecifier (lonClaSpe) { const claMod = lonClaSpe.class_modification const claModObj = claMod ? this.classModification(claMod) : undefined return Object.assign( - {'identifier': ident}, - {'description_string': desStr}, - {'composition': !ut.isEmptyObject(comp) ? comp : undefined}, - {'extends': ext || undefined}, - {'class_modification': claModObj}) + { identifier: ident }, + { description_string: desStr }, + { composition: !ut.isEmptyObject(comp) ? comp : undefined }, + { extends: ext || undefined }, + { class_modification: claModObj }) } /** @@ -110,10 +112,10 @@ function composition (com) { const ann = com.annotation ? com.annotation.class_modification : null const annObj = ann ? this.classModification(ann) : undefined return Object.assign( - {'element_list': eleLis}, - {'element_sections': eleSec}, - {'external_composition': extComObj}, - {'annotation': (annObj === '()') ? undefined : annObj}) + { element_list: eleLis }, + { element_sections: eleSec }, + { external_composition: extComObj }, + { annotation: (annObj === '()') ? undefined : annObj }) } /** @@ -124,7 +126,7 @@ function composition (com) { function elementList (eleLis) { const ele = eleLis.elements const eleArr = [] - for (var i = 0; i < ele.length; i++) { + for (let i = 0; i < ele.length; i++) { const obj = ele[i] const impCla = obj.import_clause const extCla = obj.extends_clause @@ -142,17 +144,17 @@ function elementList (eleLis) { const des = obj.comment const desObj = des ? this.description(des) : undefined eleArr.push(Object.assign( - {'import_clause': impCla ? this.importClause(impCla) : undefined}, - {'extends_clause': extCla ? this.extendsClause(extCla) : undefined}, - {'redeclare': redeclare || undefined}, - {'final': final || undefined}, - {'inner': inner || undefined}, - {'outer': outer || undefined}, - {'replaceable': replaceable || undefined}, - {'constraining_clause': conCla ? this.constrainingClause(conCla) : undefined}, - {'class_definition': claDef ? this.classDefinition(claDef) : undefined}, - {'component_clause': comCla ? this.componentClause(comCla) : undefined}, - {'description': !ut.isEmptyObject(desObj) ? desObj : undefined})) + { import_clause: impCla ? this.importClause(impCla) : undefined }, + { extends_clause: extCla ? this.extendsClause(extCla) : undefined }, + { redeclare: redeclare || undefined }, + { final: final || undefined }, + { inner: inner || undefined }, + { outer: outer || undefined }, + { replaceable: replaceable || undefined }, + { constraining_clause: conCla ? this.constrainingClause(conCla) : undefined }, + { class_definition: claDef ? this.classDefinition(claDef) : undefined }, + { component_clause: comCla ? this.componentClause(comCla) : undefined }, + { description: !ut.isEmptyObject(desObj) ? desObj : undefined })) } return eleArr } @@ -170,11 +172,11 @@ function importClause (impCla) { const comment = impCla.comment const desObj = comment ? this.description(comment) : undefined return Object.assign( - {'identifier': identifier}, - {'name': name ? this.nameString(name) : undefined}, - {'dot_star': dotSta ? '.*' : undefined}, - {'import_list': impLis ? this.importList(impLis) : undefined}, - {'description': !ut.isEmptyObject(desObj) ? desObj : undefined} + { identifier }, + { name: name ? this.nameString(name) : undefined }, + { dot_star: dotSta ? '.*' : undefined }, + { import_list: impLis ? this.importList(impLis) : undefined }, + { description: !ut.isEmptyObject(desObj) ? desObj : undefined } ) } @@ -198,8 +200,8 @@ function description (des) { const ann = des.annotation ? des.annotation.class_modification : null const annotation = ann ? this.classModification(ann) : undefined return Object.assign( - {'description_string': strDes}, - {'annotation': (annotation === '()') ? undefined : annotation} + { description_string: strDes }, + { annotation: (annotation === '()') ? undefined : annotation } ) } @@ -226,9 +228,9 @@ function extendsClause (extCla) { const ann = extCla.annotation ? extCla.annotation.class_modification : null const annotation = ann ? this.classModification(ann) : undefined return Object.assign( - {'name': name ? this.nameString(name) : undefined}, - {'class_modification': claMod ? this.classModification(claMod) : undefined}, - {'annotation': (annotation === '()') ? undefined : annotation} + { name: name ? this.nameString(name) : undefined }, + { class_modification: claMod ? this.classModification(claMod) : undefined }, + { annotation: (annotation === '()') ? undefined : annotation } ) } @@ -241,8 +243,8 @@ function constrainingClause (conCla) { const name = conCla.name const claMod = conCla.class_modification return Object.assign( - {'name': name ? this.nameString(name) : undefined}, - {'class_modification': claMod ? this.classModification(claMod) : undefined} + { name: name ? this.nameString(name) : undefined }, + { class_modification: claMod ? this.classModification(claMod) : undefined } ) } @@ -257,10 +259,10 @@ function componentClause (comCla) { const arrSub = comCla.array_subscripts const comLis = comCla.component_list return Object.assign( - {'type_prefix': prefix}, - {'type_specifier': this.typeSpecifier(typSpe)}, - {'array_subscripts': arrSub ? this.arraySubscripts(arrSub) : undefined}, - {'component_list': comLis ? this.componentList(comLis) : undefined} + { type_prefix: prefix }, + { type_specifier: this.typeSpecifier(typSpe) }, + { array_subscripts: arrSub ? this.arraySubscripts(arrSub) : undefined }, + { component_list: comLis ? this.componentList(comLis) : undefined } ) } @@ -276,13 +278,13 @@ function typeSpecifier (typSpe) { */ function arraySubscripts (arrSub) { const eleArr = [] - for (var i = 0; i < arrSub.length; i++) { - var obj = arrSub[i] + for (let i = 0; i < arrSub.length; i++) { + const obj = arrSub[i] const exp = obj.expression const colOp = obj.colon_op eleArr.push(Object.assign( - {'colon_op': colOp || undefined}, - {'expression': exp ? this.expression(exp) : undefined} + { colon_op: colOp || undefined }, + { expression: exp ? this.expression(exp) : undefined } )) } return eleArr @@ -298,8 +300,8 @@ function expression (expObj) { const ifExp = expObj.if_expression const ifExpObj = ifExp ? this.ifExpression(ifExp) : undefined return Object.assign( - {'simple_expression': simExp ? this.simpleExpression(simExp, false) : undefined}, - {'if_expression': !ut.isEmptyObject(ifExpObj) ? ifExpObj : undefined} + { simple_expression: simExp ? this.simpleExpression(simExp, false) : undefined }, + { if_expression: !ut.isEmptyObject(ifExpObj) ? ifExpObj : undefined } ) } @@ -312,18 +314,18 @@ function ifExpression (ifExp) { const ifEls = ifExp.if_elseif const elsExp = ifExp.else_expression const ifElsArr = [] - for (var i = 0; i < ifEls.length; i++) { - var obj = ifEls[i] + for (let i = 0; i < ifEls.length; i++) { + const obj = ifEls[i] const con = obj.condition const then = obj.then ifElsArr.push(Object.assign( - {'condition': con ? this.expression(con) : undefined}, - {'then': then ? this.expression(then) : undefined} + { condition: con ? this.expression(con) : undefined }, + { then: then ? this.expression(then) : undefined } )) } return Object.assign( - {'if_elseif': (ifElsArr.length > 0) ? ifElsArr : undefined}, - {'else_expression': elsExp ? this.expression(elsExp) : undefined} + { if_elseif: (ifElsArr.length > 0) ? ifElsArr : undefined }, + { else_expression: elsExp ? this.expression(elsExp) : undefined } ) } @@ -335,16 +337,16 @@ function ifExpression (ifExp) { function componentList (comLis) { const compList = comLis.component_declaration_list const decLisArr = [] - for (var i = 0; i < compList.length; i++) { - var obj = compList[i] + for (let i = 0; i < compList.length; i++) { + const obj = compList[i] const dec = obj.declaration const conAtt = obj.condition_attribute const com = obj.comment const comObj = com ? this.description(com) : undefined decLisArr.push(Object.assign( - {'declaration': dec ? this.declaration(dec) : undefined}, - {'condition_attribute': conAtt ? {'expression': this.expression(conAtt.expression)} : undefined}, - {'description': !ut.isEmptyObject(comObj) ? comObj : undefined} + { declaration: dec ? this.declaration(dec) : undefined }, + { condition_attribute: conAtt ? { expression: this.expression(conAtt.expression) } : undefined }, + { description: !ut.isEmptyObject(comObj) ? comObj : undefined } )) } return decLisArr @@ -360,9 +362,9 @@ function declaration (dec) { const arrSub = dec.array_subscripts const mod = dec.modification return Object.assign( - {'identifier': ident}, - {'array_subscripts': arrSub ? this.arraySubscripts(arrSub) : undefined}, - {'modification': mod ? this.modification(mod) : undefined} + { identifier: ident }, + { array_subscripts: arrSub ? this.arraySubscripts(arrSub) : undefined }, + { modification: mod ? this.modification(mod) : undefined } ) } @@ -377,10 +379,10 @@ function modification (mod) { const colEqu = mod.colon_equal const exp = mod.expression return Object.assign( - {'class_modification': claMod ? this.classModification(claMod) : undefined}, - {'equal': equ || undefined}, - {'colon_equal': colEqu || undefined}, - {'expression': exp ? this.expression(exp) : undefined} + { class_modification: claMod ? this.classModification(claMod) : undefined }, + { equal: equ || undefined }, + { colon_equal: colEqu || undefined }, + { expression: exp ? this.expression(exp) : undefined } ) } @@ -394,8 +396,8 @@ function classModification (claMod) { if (argLis) { const claModArr = [] const args = argLis.arguments - for (var i = 0; i < args.length; i++) { - var ele = args[i] + for (let i = 0; i < args.length; i++) { + const ele = args[i] const eleModRep = ele.element_modification_or_replaceable const eleRed = ele.element_redeclaration // var eleModRepDict = { @@ -405,8 +407,8 @@ function classModification (claMod) { // 'element_redeclaration': eleRed ? this.elementRedeclaration(eleRed) : undefined // } claModArr.push(Object.assign( - {'element_modification_or_replaceable': eleModRep ? this.elementModificationReplaceable(eleModRep) : undefined}, - {'element_redeclaration': eleRed ? this.elementRedeclaration(eleRed) : undefined} + { element_modification_or_replaceable: eleModRep ? this.elementModificationReplaceable(eleModRep) : undefined }, + { element_redeclaration: eleRed ? this.elementRedeclaration(eleRed) : undefined } )) } return claModArr @@ -426,10 +428,10 @@ function elementModificationReplaceable (eleModRep) { const eleMod = eleModRep.element_modification const eleRep = eleModRep.element_replaceable return Object.assign( - {'each': each || undefined}, - {'final': final || undefined}, - {'element_modification': eleMod ? this.elementModification(eleMod) : undefined}, - {'element_replaceable': eleRep ? this.elementReplaceable(eleRep) : undefined} + { each: each || undefined }, + { final: final || undefined }, + { element_modification: eleMod ? this.elementModification(eleMod) : undefined }, + { element_replaceable: eleRep ? this.elementReplaceable(eleRep) : undefined } ) } @@ -446,14 +448,14 @@ function elementModification (eleMod) { if (isGraAnn) { const graMod = mod ? graPri.graphicAnnotationObj(name, this.modification(mod)) : undefined return Object.assign( - {[name]: graMod} + { [name]: graMod } ) } else { // the 'name' could be string, or an object for the graphical annotation return Object.assign( - {'name': name}, - {'modification': mod ? this.modification(mod) : undefined}, - {'description_string': desStr} + { name }, + { modification: mod ? this.modification(mod) : undefined }, + { description_string: desStr } ) } } @@ -468,9 +470,9 @@ function elementReplaceable (eleRep) { const comCla1 = eleRep.component_clause1 const conCla = eleRep.constraining_clause return Object.assign( - {'short_class_definition': shoClaDef ? this.shortClassDefinition(shoClaDef) : undefined}, - {'component_clause1': comCla1 ? this.componentClause1(comCla1) : undefined}, - {'constraining_clause': conCla ? this.constrainingClause(conCla) : undefined} + { short_class_definition: shoClaDef ? this.shortClassDefinition(shoClaDef) : undefined }, + { component_clause1: comCla1 ? this.componentClause1(comCla1) : undefined }, + { constraining_clause: conCla ? this.constrainingClause(conCla) : undefined } ) } @@ -483,8 +485,8 @@ function shortClassDefinition (shoClaDef) { const claPre = shoClaDef.class_prefixes const shoClaSpe = shoClaDef.short_class_specifier return Object.assign( - {'class_prefixes': claPre}, - {'short_class_specifier': this.shortClassSpecifier(shoClaSpe)} + { class_prefixes: claPre }, + { short_class_specifier: this.shortClassSpecifier(shoClaSpe) } ) } @@ -498,9 +500,9 @@ function componentClause1 (comCla1) { const typSpe = comCla1.type_specifier const comDec1 = comCla1.component_declaration1 return Object.assign( - {'type_prefix': typPre}, - {'type_specifier': this.typeSpecifier(typSpe)}, - {'component_declaration1': this.componentDeclaration1(comDec1)} + { type_prefix: typPre }, + { type_specifier: this.typeSpecifier(typSpe) }, + { component_declaration1: this.componentDeclaration1(comDec1) } ) } @@ -514,8 +516,8 @@ function componentDeclaration1 (comDec1) { const des = comDec1.comment const desObj = des ? this.description(des) : undefined return Object.assign( - {'declaration': this.declaration(dec)}, - {'description': !ut.isEmptyObject(desObj) ? desObj : undefined} + { declaration: this.declaration(dec) }, + { description: !ut.isEmptyObject(desObj) ? desObj : undefined } ) } @@ -531,11 +533,11 @@ function elementRedeclaration (eleRed) { const comCla1 = eleRed.component_clause1 const eleRep = eleRed.element_replaceable return Object.assign( - {'each': each || undefined}, - {'final': final || undefined}, - {'short_class_definition': shoClaDef ? this.shortClassDefinition(shoClaDef) : undefined}, - {'component_clause1': comCla1 ? this.componentClause1(comCla1) : undefined}, - {'element_replaceable': eleRep ? this.elementReplaceable(eleRep) : undefined} + { each: each || undefined }, + { final: final || undefined }, + { short_class_definition: shoClaDef ? this.shortClassDefinition(shoClaDef) : undefined }, + { component_clause1: comCla1 ? this.componentClause1(comCla1) : undefined }, + { element_replaceable: eleRep ? this.elementReplaceable(eleRep) : undefined } ) } @@ -546,17 +548,17 @@ function elementRedeclaration (eleRed) { */ function elementSections (eleSec) { const secArr = [] - for (var i = 0; i < eleSec.length; i++) { - var obj = eleSec[i] + for (let i = 0; i < eleSec.length; i++) { + const obj = eleSec[i] const pubEle = obj.public_element_list const proEle = obj.protected_element_list const equSec = obj.equation_section const algSec = obj.algorithm_section secArr.push(Object.assign( - {'public_element_list': pubEle ? this.elementList(pubEle) : undefined}, - {'protected_element_list': proEle ? this.elementList(proEle) : undefined}, - {'equation_section': equSec ? this.equationSection(equSec) : undefined}, - {'algorithm_section': algSec ? this.algorithmSection(algSec) : undefined} + { public_element_list: pubEle ? this.elementList(pubEle) : undefined }, + { protected_element_list: proEle ? this.elementList(proEle) : undefined }, + { equation_section: equSec ? this.equationSection(equSec) : undefined }, + { algorithm_section: algSec ? this.algorithmSection(algSec) : undefined } )) } return secArr @@ -571,13 +573,13 @@ function equationSection (equSec) { const ini = equSec.initial const equLis = equSec.equations const equArr = [] - for (var i = 0; i < equLis.length; i++) { - var obj = equLis[i] + for (let i = 0; i < equLis.length; i++) { + const obj = equLis[i] equArr.push(this.equation(obj)) } return Object.assign( - {'initial': ini || undefined}, - {'equation': equArr} + { initial: ini || undefined }, + { equation: equArr } ) } @@ -596,13 +598,13 @@ function equation (equ) { const des = equ.comment const desObj = des ? this.description(des) : undefined return Object.assign( - {'assignment_equation': (assEqu && !ut.isEmptyObject(assEqu)) ? this.assignmentEquation(assEqu) : undefined}, - {'if_equation': ifEqu ? this.ifEquation(ifEqu) : undefined}, - {'for_equation': forEqu ? this.forEquation(forEqu) : undefined}, - {'connect_clause': conCla ? this.connectClause(conCla) : undefined}, - {'when_equation': wheEqu ? this.whenEquation(wheEqu) : undefined}, - {'function_call_equation': (funCalEqu && !ut.isEmptyObject(funCalEqu)) ? this.functionCallEquation(funCalEqu) : undefined}, - {'description': !ut.isEmptyObject(desObj) ? desObj : undefined} + { assignment_equation: (assEqu && !ut.isEmptyObject(assEqu)) ? this.assignmentEquation(assEqu) : undefined }, + { if_equation: ifEqu ? this.ifEquation(ifEqu) : undefined }, + { for_equation: forEqu ? this.forEquation(forEqu) : undefined }, + { connect_clause: conCla ? this.connectClause(conCla) : undefined }, + { when_equation: wheEqu ? this.whenEquation(wheEqu) : undefined }, + { function_call_equation: (funCalEqu && !ut.isEmptyObject(funCalEqu)) ? this.functionCallEquation(funCalEqu) : undefined }, + { description: !ut.isEmptyObject(desObj) ? desObj : undefined } ) } @@ -615,8 +617,8 @@ function assignmentEquation (assEqu) { const simExp = assEqu.lhs const exp = assEqu.rhs return Object.assign( - {'lhs': simExp ? this.simpleExpression(simExp) : undefined}, - {'rhs': exp ? this.expression(exp) : undefined} + { lhs: simExp ? this.simpleExpression(simExp) : undefined }, + { rhs: exp ? this.expression(exp) : undefined } ) } @@ -629,31 +631,31 @@ function ifEquation (ifEqu) { const ifEls = ifEqu.if_elseif const elsEqu = ifEqu.else_expression const ifElsArr = [] - for (var i = 0; i < ifEls.length; i++) { - var obj = ifEls[i] + for (let i = 0; i < ifEls.length; i++) { + const obj = ifEls[i] const theEquArr = [] const theEqu = obj.then - for (var j = 0; j < theEqu.length; j++) { - var ele = theEqu[j] + for (let j = 0; j < theEqu.length; j++) { + const ele = theEqu[j] theEquArr.push(Object.assign( - {'equation': this.equation(ele)} + { equation: this.equation(ele) } )) } ifElsArr.push(Object.assign( - {'condition': obj.condition ? this.expression(obj.condition) : undefined}, - {'then': theEquArr} + { condition: obj.condition ? this.expression(obj.condition) : undefined }, + { then: theEquArr } )) } const elsArr = [] if (elsEqu) { - for (var k = 0; k < elsEqu.length; k++) { - var obj2 = elsEqu[k] + for (let k = 0; k < elsEqu.length; k++) { + const obj2 = elsEqu[k] elsArr.push(this.equation(obj2)) } } return Object.assign( - {'if_elseif': ifElsArr}, - {'else_equation': elsEqu ? elsArr : undefined} + { if_elseif: ifElsArr }, + { else_equation: elsEqu ? elsArr : undefined } ) } @@ -666,13 +668,13 @@ function forEquation (forEqu) { const forInd = forEqu.for_indices const looEqu = forEqu.loop_equations const looEquArr = [] - for (var i = 0; i < looEqu.length; i++) { - var obj = looEqu[i] + for (let i = 0; i < looEqu.length; i++) { + const obj = looEqu[i] looEquArr.push(this.equation(obj)) } return Object.assign( - {'for_indices': this.forIndices(forInd)}, - {'loop_equations': looEquArr} + { for_indices: this.forIndices(forInd) }, + { loop_equations: looEquArr } ) } @@ -683,8 +685,8 @@ function forEquation (forEqu) { */ function connectClause (conCla) { return Object.assign( - {'from': this.componentReference(conCla.from)}, - {'to': this.componentReference(conCla.to)} + { from: this.componentReference(conCla.from) }, + { to: this.componentReference(conCla.to) } ) } @@ -696,13 +698,13 @@ function connectClause (conCla) { function componentReference (comRef) { const comPar = comRef.component_reference_parts const parArr = [] - for (var i = 0; i < comPar.length; i++) { - var obj = comPar[i] + for (let i = 0; i < comPar.length; i++) { + const obj = comPar[i] const arrSub = obj.array_subscripts parArr.push(Object.assign( - {'dot_op': obj.dot_op}, - {'identifier': obj.identifier}, - {'array_subscripts': arrSub ? this.arraySubscripts(arrSub) : undefined} + { dot_op: obj.dot_op }, + { identifier: obj.identifier }, + { array_subscripts: arrSub ? this.arraySubscripts(arrSub) : undefined } )) } return parArr @@ -716,18 +718,18 @@ function componentReference (comRef) { function whenEquation (wheEqus) { const wheEqu = wheEqus.when_elsewhen const wheEquArr = [] - for (var i = 0; i < wheEqu.length; i++) { - var obj = wheEqu[i] + for (let i = 0; i < wheEqu.length; i++) { + const obj = wheEqu[i] const con = obj.condition const the = obj.then const theArr = [] - for (var j = 0; j < the.length; j++) { - var ele = the[j] + for (let j = 0; j < the.length; j++) { + const ele = the[j] theArr.push(this.equation(ele)) } wheEquArr.push(Object.assign( - {'condition': con ? this.expression(con) : undefined}, - {'then': theArr} + { condition: con ? this.expression(con) : undefined }, + { then: theArr } )) } return wheEquArr @@ -742,8 +744,8 @@ function functionCallEquation (funCalEqu) { const name = funCalEqu.function_name const funCalArg = funCalEqu.function_call_args return Object.assign( - {'function_name': name ? this.nameString(name) : undefined}, - {'function_call_args': funCalArg ? this.functionCallArgs(funCalArg) : undefined} + { function_name: name ? this.nameString(name) : undefined }, + { function_call_args: funCalArg ? this.functionCallArgs(funCalArg) : undefined } ) } @@ -768,10 +770,10 @@ function functionArguments (funArgs) { const forInd = funArgs.for_indices const intFunArgs = funArgs.function_arguments return Object.assign( - {'named_arguments': namArg ? this.namedArguments(namArg) : undefined}, - {'function_argument': funArg ? this.functionArgument(funArg) : undefined}, - {'for_indices': forInd ? this.forIndices(forInd) : undefined}, - {'function_arguments': intFunArgs ? this.functionArguments(intFunArgs) : undefined} + { named_arguments: namArg ? this.namedArguments(namArg) : undefined }, + { function_argument: funArg ? this.functionArgument(funArg) : undefined }, + { for_indices: forInd ? this.forIndices(forInd) : undefined }, + { function_arguments: intFunArgs ? this.functionArguments(intFunArgs) : undefined } ) } @@ -783,13 +785,13 @@ function functionArguments (funArgs) { function namedArguments (namArg) { const args = this.namedArgsArray(namArg) const namArgArr = [] - for (var i = 0; i < args.length; i++) { - var obj = args[i] + for (let i = 0; i < args.length; i++) { + const obj = args[i] const ident = obj.identifier const val = obj.value namArgArr.push(Object.assign( - {'identifier': ident}, - {'value': val ? this.functionArgument(val) : undefined} + { identifier: ident }, + { value: val ? this.functionArgument(val) : undefined } )) } return namArgArr @@ -805,10 +807,10 @@ function functionArgument (funArg) { const namArg = funArg.named_arguments const exp = funArg.expression return Object.assign( - {'function_name': name ? this.nameString(name) : undefined}, - {'named_arguments': namArg ? this.namedArguments(namArg) : undefined}, - {'expression': exp ? this.expression(exp) : undefined} - ) + { function_name: name ? this.nameString(name) : undefined }, + { named_arguments: namArg ? this.namedArguments(namArg) : undefined }, + { expression: exp ? this.expression(exp) : undefined } + ) } /** @@ -819,12 +821,12 @@ function functionArgument (funArg) { function forIndices (forInd) { const indLis = forInd.indices const indArr = [] - for (var i = 0; i < indLis.length; i++) { - var obj = indLis[i] + for (let i = 0; i < indLis.length; i++) { + const obj = indLis[i] const exp = obj.expression indArr.push(Object.assign( - {'identifier': obj.identifier}, - {'expression': exp ? this.expression(exp) : undefined} + { identifier: obj.identifier }, + { expression: exp ? this.expression(exp) : undefined } )) } return indArr @@ -839,13 +841,13 @@ function algorithmSection (algSec) { const ini = algSec.initial const staLis = algSec.statements const staArr = [] - for (var i = 0; i < staLis.length; i++) { - var obj = staLis[i] + for (let i = 0; i < staLis.length; i++) { + const obj = staLis[i] staArr.push(this.statement(obj)) } return Object.assign( - {'initial': ini || undefined}, - {'statement': staArr} + { initial: ini || undefined }, + { statement: staArr } ) } @@ -867,16 +869,16 @@ function statement (sta) { const isBreak = sta.is_break const isReturn = sta.is_return return Object.assign( - {'assignment_statement': assSta ? this.assignmentStatement(assSta) : undefined}, - {'Function_call_statement': funCalSta ? this.functionCallStatement(funCalSta) : undefined}, - {'assignment_with_function_call_statement': assWithFunCalSta ? this.assignmentWithFunctionCallStatement(assWithFunCalSta) : undefined}, - {'break': isBreak || undefined}, - {'return': isReturn || undefined}, - {'if_statement': ifSta ? this.ifStatement(ifSta) : undefined}, - {'for_statement': forSta ? this.forStatement(forSta) : undefined}, - {'while_statement': whiSta ? this.whileStatement(whiSta) : undefined}, - {'when_statement': wheSta ? this.whenStatement(wheSta) : undefined}, - {'description': !ut.isEmptyObject(desObj) ? desObj : undefined} + { assignment_statement: assSta ? this.assignmentStatement(assSta) : undefined }, + { Function_call_statement: funCalSta ? this.functionCallStatement(funCalSta) : undefined }, + { assignment_with_function_call_statement: assWithFunCalSta ? this.assignmentWithFunctionCallStatement(assWithFunCalSta) : undefined }, + { break: isBreak || undefined }, + { return: isReturn || undefined }, + { if_statement: ifSta ? this.ifStatement(ifSta) : undefined }, + { for_statement: forSta ? this.forStatement(forSta) : undefined }, + { while_statement: whiSta ? this.whileStatement(whiSta) : undefined }, + { when_statement: wheSta ? this.whenStatement(wheSta) : undefined }, + { description: !ut.isEmptyObject(desObj) ? desObj : undefined } ) } @@ -889,8 +891,8 @@ function assignmentStatement (assSta) { const ident = assSta.identifier const val = assSta.value return Object.assign( - {'identifier': ident ? this.componentReference(ident) : undefined}, - {'value': val ? this.expression(val) : undefined} + { identifier: ident ? this.componentReference(ident) : undefined }, + { value: val ? this.expression(val) : undefined } ) } @@ -903,8 +905,8 @@ function functionCallStatement (funCalSta) { const name = funCalSta.function_name const funCalArg = funCalSta.function_call_args return Object.assign( - {'function_name': name ? this.componentReference(name) : undefined}, - {'function_call_args': funCalArg ? this.functionCallArgs(funCalArg) : undefined} + { function_name: name ? this.componentReference(name) : undefined }, + { function_call_args: funCalArg ? this.functionCallArgs(funCalArg) : undefined } ) } @@ -916,17 +918,17 @@ function functionCallStatement (funCalSta) { function assignmentWithFunctionCallStatement (assWithFunCalSta) { const outExpLis = assWithFunCalSta.output_expression_list const outExpArr = [] - for (var i = 0; i < outExpLis.length; i++) { - var obj = outExpLis[i] - var objExp = obj.expression + for (let i = 0; i < outExpLis.length; i++) { + const obj = outExpLis[i] + const objExp = obj.expression if (objExp) { outExpArr.push(this.expression(objExp)) } } const name = assWithFunCalSta.function_name const funCalArg = assWithFunCalSta.function_call_args return Object.assign( - {'output_expression_list': outExpArr}, - {'function_name': name ? this.componentReference(name) : undefined}, - {'function_call_args': funCalArg ? this.functionCallArgs(funCalArg) : undefined} + { output_expression_list: outExpArr }, + { function_name: name ? this.componentReference(name) : undefined }, + { function_call_args: funCalArg ? this.functionCallArgs(funCalArg) : undefined } ) } @@ -939,29 +941,29 @@ function ifStatement (ifSta) { const ifEls = ifSta.if_elseif const elsSta = ifSta.else_statement const ifElsArr = [] - for (var i = 0; i < ifEls.length; i++) { - var obj = ifEls[i] + for (let i = 0; i < ifEls.length; i++) { + const obj = ifEls[i] const theStaArr = [] const theSta = obj.then - for (var j = 0; j < theSta.length; j++) { - var ele = theSta[j] + for (let j = 0; j < theSta.length; j++) { + const ele = theSta[j] theStaArr.push(this.statement(ele)) } ifElsArr.push(Object.assign( - {'condition': obj.condition ? this.expression(obj.condition) : undefined}, - {'then': theStaArr} + { condition: obj.condition ? this.expression(obj.condition) : undefined }, + { then: theStaArr } )) } const elsArr = [] if (elsSta && (elsSta.length > 0)) { - for (var k = 0; k < elsSta.length; k++) { - var obj2 = elsSta[k] + for (let k = 0; k < elsSta.length; k++) { + const obj2 = elsSta[k] elsArr.push(this.statement(obj2)) } } return Object.assign( - {'if_elseif': ifElsArr}, - {'else_statement': (elsArr.length > 0) ? elsArr : undefined} + { if_elseif: ifElsArr }, + { else_statement: (elsArr.length > 0) ? elsArr : undefined } ) } @@ -974,13 +976,13 @@ function forStatement (forSta) { const forInd = forSta.for_indices const looSta = forSta.loop_statements const looStaArr = [] - for (var i = 0; i < looSta.length; i++) { - var obj = looSta[i] + for (let i = 0; i < looSta.length; i++) { + const obj = looSta[i] looStaArr.push(this.statement(obj)) } return Object.assign( - {'for_indices': this.forIndices(forInd)}, - {'loop_statements': looStaArr} + { for_indices: this.forIndices(forInd) }, + { loop_statements: looStaArr } ) } @@ -993,13 +995,13 @@ function whileStatement (whiSta) { const con = whiSta.condition const looSta = whiSta.loop_statements const staArr = [] - for (var i = 0; i < looSta.length; i++) { - var obj = looSta[i] + for (let i = 0; i < looSta.length; i++) { + const obj = looSta[i] staArr.push(this.statement(obj)) } return Object.assign( - {'condition': con ? this.expression(con) : undefined}, - {'loop_statement': staArr} + { condition: con ? this.expression(con) : undefined }, + { loop_statement: staArr } ) } @@ -1011,18 +1013,18 @@ function whileStatement (whiSta) { function whenStatement (wheStas) { const wheSta = wheStas.when_elsewhen const wheStaArr = [] - for (var i = 0; i < wheSta.length; i++) { - var obj = wheSta[i] + for (let i = 0; i < wheSta.length; i++) { + const obj = wheSta[i] const con = obj.condition const the = obj.then const theArr = [] - for (var j = 0; j < the.length; j++) { - var ele = the[j] + for (let j = 0; j < the.length; j++) { + const ele = the[j] theArr.push(this.statement(ele)) } wheStaArr.push(Object.assign( - {'condition': con ? this.expression(con) : undefined}, - {'then': theArr} + { condition: con ? this.expression(con) : undefined }, + { then: theArr } )) } return wheStaArr @@ -1039,9 +1041,9 @@ function externalComposition (extCom) { const extAnn = extCom.external_annotation ? extCom.external_annotation.class_modification : null const annotation = extAnn ? this.classModification(extAnn) : undefined return Object.assign( - {'language_specification': lanSpe}, - {'external_function_call': extFunCal ? this.externalFunctionCall(extFunCal) : undefined}, - {'external_annotation': (annotation === '()') ? undefined : annotation} + { language_specification: lanSpe }, + { external_function_call: extFunCal ? this.externalFunctionCall(extFunCal) : undefined }, + { external_annotation: (annotation === '()') ? undefined : annotation } ) } @@ -1057,15 +1059,15 @@ function externalFunctionCall (extFunCal) { const exps = expLis ? expLis.expressions : undefined const expArr = [] if (exps) { - for (var i = 0; i < exps.length; i++) { - var ele = exps[i] + for (let i = 0; i < exps.length; i++) { + const ele = exps[i] expArr.push(this.expression(ele)) } } return Object.assign( - {'component_reference': comRef ? this.componentReference(comRef) : undefined}, - {'identifier': ident}, - {'expression_list': exps ? expArr : undefined} + { component_reference: comRef ? this.componentReference(comRef) : undefined }, + { identifier: ident }, + { expression_list: exps ? expArr : undefined } ) } @@ -1078,8 +1080,8 @@ function shortClassSpecifier (shoClaSpe) { const ident = shoClaSpe.identifier const val = shoClaSpe.short_class_specifier_value return Object.assign( - {'identifier': ident}, - {'value': val ? this.shortClassSpecifierValue(val) : undefined} + { identifier: ident }, + { value: val ? this.shortClassSpecifierValue(val) : undefined } ) } @@ -1100,24 +1102,24 @@ function shortClassSpecifierValue (val) { const enuArr = [] if (enuLis && (enuLis.enumeration_literal_list.length > 0)) { const enumLite = enuLis.enumeration_literal_list - for (var i = 0; i < enumLite.length; i++) { - var obj = enumLite[i] + for (let i = 0; i < enumLite.length; i++) { + const obj = enumLite[i] const ident = obj.identifier const desCri = obj.comment const desObj = desCri ? this.description(desCri) : undefined enuArr.push(Object.assign( - {'identifier': ident}, - {'description': !ut.isEmptyObject(desObj) ? desObj : undefined} + { identifier: ident }, + { description: !ut.isEmptyObject(desObj) ? desObj : undefined } )) } } return Object.assign( - {'base_prefix': pre}, - {'name': name ? this.nameString(name) : undefined}, - {'array_subscripts': arrSub ? this.arraySubscripts(arrSub) : undefined}, - {'class_modification': claMod ? this.classModification(claMod) : undefined}, - {'description': !ut.isEmptyObject(desObjEx) ? desObjEx : undefined}, - {'enum_list': (enuArr.length > 0) ? enuArr : undefined} + { base_prefix: pre }, + { name: name ? this.nameString(name) : undefined }, + { array_subscripts: arrSub ? this.arraySubscripts(arrSub) : undefined }, + { class_modification: claMod ? this.classModification(claMod) : undefined }, + { description: !ut.isEmptyObject(desObjEx) ? desObjEx : undefined }, + { enum_list: (enuArr.length > 0) ? enuArr : undefined } ) } @@ -1129,20 +1131,20 @@ function shortClassSpecifierValue (val) { function derClassSpecifier (derClaSpe) { const ident = derClaSpe.identifier const val = derClaSpe.der_class_specifier_value - var typSpe, typIden, typDes, valObj + let typSpe, typIden, typDes, valObj if (val) { typSpe = val.type_specifier typIden = val.identifiers typDes = val.comment ? this.description(val.comment) : undefined valObj = Object.assign( - {'type_specifier': typSpe}, - {'identifier': typIden}, - {'description': !ut.isEmptyObject(typDes) ? typDes : undefined} + { type_specifier: typSpe }, + { identifier: typIden }, + { description: !ut.isEmptyObject(typDes) ? typDes : undefined } ) } return Object.assign( - {'identifier': ident}, - {'value': val ? valObj : undefined} + { identifier: ident }, + { value: val ? valObj : undefined } ) } @@ -1160,7 +1162,7 @@ function simpleExpression (simExp, outStr = false) { const logExp3 = simExp.logical_expression3 ? (':' + this.logicalExpression(simExp.logical_expression3)) : '' - var funCal, forLoo, logExp, ifExp + let funCal, forLoo, logExp, ifExp if (!(logExp2 || logExp3)) { const pri = this.checkPri(simExp.logical_expression1) if (pri) { @@ -1172,19 +1174,19 @@ function simpleExpression (simExp, outStr = false) { } if ((funCal || forLoo || logExp || ifExp) && !outStr) { if (logExp) { - var logical_or = logExp.logical_or - if (logical_or.length == 1 && logical_or[0].logical_and.length == 1 && - logical_or[0].logical_and[0].arithmetic_expressions.length == 1 && - !logical_or[0].logical_and[0].not) { - return logical_or[0].logical_and[0].arithmetic_expressions[0].name + const logOr = logExp.logical_or + if (logOr.length === 1 && logOr[0].logical_and.length === 1 && + logOr[0].logical_and[0].arithmetic_expressions.length === 1 && + !logOr[0].logical_and[0].not) { + return logOr[0].logical_and[0].arithmetic_expressions[0].name } else { - return Object.assign({'logical_expression': logExp}) + return Object.assign({ logical_expression: logExp }) } } else { return Object.assign( - {'function_call': funCal}, - {'for_loop': forLoo}, - {'if_expression': ifExp} + { function_call: funCal }, + { for_loop: forLoo }, + { if_expression: ifExp } ) } } else { @@ -1201,28 +1203,28 @@ function ifExpressionObj (pri) { const outExpLis = pri.output_expression_list if (!outExpLis) { return undefined } const expLis = outExpLis.output_expressions - var expArray = [] - for (var i = 0; i < expLis.length; i++) { - var ithExp = expLis[i] + const expArray = [] + for (let i = 0; i < expLis.length; i++) { + const ithExp = expLis[i] if (ithExp.simple_expression) { return undefined } - var ifExp = ithExp.if_expression - var ifEls = ifExp.if_elseif - var ifElsArray = [] - for (var j = 0; j < ifEls.length; j++) { - var jthEle = ifEls[j] - var condition = this.expressionString(jthEle.condition) - var then = this.expressionString(jthEle.then) + const ifExp = ithExp.if_expression + const ifEls = ifExp.if_elseif + const ifElsArray = [] + for (let j = 0; j < ifEls.length; j++) { + const jthEle = ifEls[j] + const condition = this.expressionString(jthEle.condition) + const then = this.expressionString(jthEle.then) ifElsArray.push(Object.assign( - {'condition': condition}, - {'then': then} + { condition }, + { then } )) } - var elsExp = ifExp.else_expression + const elsExp = ifExp.else_expression expArray.push(Object.assign( - {'if_elseif': ifElsArray}, - {'else': this.expressionString(elsExp)} + { if_elseif: ifElsArray }, + { else: this.expressionString(elsExp) } )) } return (expArray.length > 0 ? expArray : undefined) @@ -1239,7 +1241,7 @@ function forLoopObj (pri) { const forInd = funArgs.for_indices if (!forInd) { return undefined } const exp = this.funArgObj(funArg) - const forObj = Object.assign({'expression': exp}, this.forIndObj(forInd)) + const forObj = Object.assign({ expression: exp }, this.forIndObj(forInd)) return forObj } @@ -1250,23 +1252,23 @@ function forLoopObj (pri) { function logicalExpressionObj (logExp) { const termList = logExp.logical_term_list const orArray = [] - for (var i = 0; i < termList.length; i++) { - var ithTerm = termList[i] - var factorList = ithTerm.logical_factor_list + for (let i = 0; i < termList.length; i++) { + const ithTerm = termList[i] + const factorList = ithTerm.logical_factor_list const andArray = [] - for (var j = 0; j < factorList.length; j++) { - var jthFactor = factorList[j] - var jthFactorObj = this.logicalFactorObj(jthFactor) + for (let j = 0; j < factorList.length; j++) { + const jthFactor = factorList[j] + const jthFactorObj = this.logicalFactorObj(jthFactor) if (jthFactorObj) { andArray.push(jthFactorObj) } } if (andArray.length > 0) { - orArray.push(Object.assign({'logical_and': andArray})) + orArray.push(Object.assign({ logical_and: andArray })) } } if (orArray.length > 0) { - return Object.assign({'logical_or': orArray}) + return Object.assign({ logical_or: orArray }) } } @@ -1280,15 +1282,15 @@ function logicalFactorObj (fac) { const relOp = rel.rel_op const ariExp1 = this.arithmeticExpression(rel.arithmetic_expression1) const ariExpArray = [] - ariExpArray.push(Object.assign({'name': ariExp1})) + ariExpArray.push(Object.assign({ name: ariExp1 })) if (relOp) { const ariExp2 = this.arithmeticExpression(rel.arithmetic_expression2) - ariExpArray.push(Object.assign({'name': ariExp2})) + ariExpArray.push(Object.assign({ name: ariExp2 })) } return Object.assign( - {'not': notOpe || undefined}, - {'arithmetic_expressions': ariExpArray}, - {'relation_operator': relOp || undefined} + { not: notOpe || undefined }, + { arithmetic_expressions: ariExpArray }, + { relation_operator: relOp || undefined } ) } @@ -1355,8 +1357,8 @@ function functionCallObj (pri) { return undefined } return Object.assign( - {'name': this.nameString(name)}, - {'arguments': this.funCalArgObj(funCalArg)} + { name: this.nameString(name) }, + { arguments: this.funCalArgObj(funCalArg) } ) } } @@ -1381,17 +1383,17 @@ function funArgsObj (argObj) { const funArgs = argObj.function_arguments const argArray = [] if (namedArg) { - argArray.push(Object.assign({'name': this.namedArgsString(namedArg)})) + argArray.push(Object.assign({ name: this.namedArgsString(namedArg) })) } else { if (funArgs) { - argArray.push(Object.assign({'name': this.funArgString(funArg)})) - argArray.push(Object.assign({'name': this.funArgsString(funArgs)})) + argArray.push(Object.assign({ name: this.funArgString(funArg) })) + argArray.push(Object.assign({ name: this.funArgsString(funArgs) })) } else if (forInd) { const exp = this.funArgObj(funArg) - const forObj = Object.assign({'expression': exp}, this.forIndObj(forInd)) + const forObj = Object.assign({ expression: exp }, this.forIndObj(forInd)) argArray.push(forObj) } else { - argArray.push(Object.assign({'name': this.funArgString(funArg)})) + argArray.push(Object.assign({ name: this.funArgString(funArg) })) } } return argArray @@ -1404,14 +1406,14 @@ function funArgsObj (argObj) { function forIndObj (forIndObject) { const ind = forIndObject.indices const indices = [] - for (var i = 0; i < ind.length; i++) { + for (let i = 0; i < ind.length; i++) { const ithInd = ind[i] const ident = ithInd.identifier const exp = ithInd.expression const expString = exp ? this.expressionString(exp, false) : undefined - indices.push(Object.assign({'name': ident}, {'range': expString})) + indices.push(Object.assign({ name: ident }, { range: expString })) } - return Object.assign({'for_loop': indices}) + return Object.assign({ for_loop: indices }) } /** Get the for function argument object @@ -1435,10 +1437,10 @@ function funArgObj (funArg) { function logicalExpression (logExp) { const termList = logExp.logical_term_list const termArray = [] - for (var i = 0; i < termList.length; i++) { + for (let i = 0; i < termList.length; i++) { const factorList = termList[i].logical_factor_list const factor = [] - for (var j = 0; j < factorList.length; j++) { + for (let j = 0; j < factorList.length; j++) { factor.push(this.logicalFactor(factorList[j])) } termArray.push(factor.join(' and ')) @@ -1480,7 +1482,7 @@ function relation (rel) { function arithmeticExpression (ariExp) { const termList = ariExp.arithmetic_term_list const termArray = [] - for (var i = 0; i < termList.length; i++) { + for (let i = 0; i < termList.length; i++) { const addOp = termList[i].add_op const term = this.termString(termList[i].term) const termEle = addOp ? (addOp + term) : term @@ -1497,10 +1499,10 @@ function arithmeticExpression (ariExp) { function termString (ter) { const factor = ter.factors const mulOps = ter.mul_ops - var temp + let temp if (mulOps) { temp = this.factorString(factor[0]) - for (var i = 0; i < mulOps.length; i++) { + for (let i = 0; i < mulOps.length; i++) { temp = temp + mulOps[i] + this.factorString(factor[i + 1]) } } @@ -1573,7 +1575,7 @@ function funCalPriString (funCalPri) { const name = funCalPri.function_name const der = funCalPri.der const initial = funCalPri.initial - var pre + let pre if (name) { pre = this.nameString(name) } else if (der) { @@ -1591,8 +1593,8 @@ function funCalPriString (funCalPri) { */ function nameString (name) { const nameList = name.name_parts - var nameString = '' - for (var i = 0; i < nameList.length; i++) { + let nameString = '' + for (let i = 0; i < nameList.length; i++) { const dotOp = nameList[i].dot_op const dot = dotOp ? '.' : '' const ident = nameList[i].identifier @@ -1618,8 +1620,8 @@ function funCalArgString (funCalArg) { */ function comRefString (comRef) { const comRefPar = comRef.component_reference_parts - var comString = '' - for (var i = 0; i < comRefPar.length; i++) { + let comString = '' + for (let i = 0; i < comRefPar.length; i++) { const ithCom = comRefPar[i] const dotOp = ithCom.dot_op ? '.' : '' const ident = ithCom.identifier @@ -1639,7 +1641,7 @@ function comRefString (comRef) { function arrSubString (arrSub) { const sub = arrSub.subscripts const subEle = [] - for (var i = 0; i < sub.length; i++) { + for (let i = 0; i < sub.length; i++) { const ithSub = sub[i] const exp = ithSub.expression const colOp = ithSub.colon_op @@ -1682,10 +1684,10 @@ function funArgString (funArgObj) { const namArgs = funArgObj.named_arguments const expStr = funArgObj.expression if (funName) { - var namedArgString = namArgs ? ('(' + this.namedArgsString(namArgs) + ')') : '()' + const namedArgString = namArgs ? ('(' + this.namedArgsString(namArgs) + ')') : '()' return 'function ' + this.nameString(funName) + namedArgString } else { - var funcArg = this.expressionString(expStr, true) + const funcArg = this.expressionString(expStr, true) return funcArg } } @@ -1696,12 +1698,12 @@ function funArgString (funArgObj) { * @param namArgs named_arguments object */ function namedArgsString (namArgs) { - var namArgsArr = this.namedArgsArray(namArgs) + const namArgsArr = this.namedArgsArray(namArgs) if (namArgsArr.length > 1) { - var namArr = [] - for (var i = 0; i < namArgsArr.length; i++) { - var ident = namArgsArr[i].identifier - var value = this.funArgString(namArgsArr[i].value) + const namArr = [] + for (let i = 0; i < namArgsArr.length; i++) { + const ident = namArgsArr[i].identifier + const value = this.funArgString(namArgsArr[i].value) namArr.push(ident + '=' + value) } return namArr.join(',') @@ -1716,11 +1718,11 @@ function namedArgsString (namArgs) { * @param namArgs named_arguments object */ function namedArgsArray (namArgs) { - var out = [] + const out = [] out.push(namArgs.named_argument) - var namArgsInt = namArgs.named_arguments + const namArgsInt = namArgs.named_arguments if (namArgsInt) { - var intArr = this.namedArgsArray(namArgsInt) + const intArr = this.namedArgsArray(namArgsInt) Array.prototype.push.apply(out, intArr) } return out @@ -1734,7 +1736,7 @@ function namedArgsArray (namArgs) { function outExpLisString (outExpLis) { const expList = outExpLis.output_expressions const arr = [] - for (var i = 0; i < expList.length; i++) { + for (let i = 0; i < expList.length; i++) { arr.push(this.expressionString(expList[i])) } return arr.join(',') @@ -1747,7 +1749,7 @@ function outExpLisString (outExpLis) { */ function expLisString (expLists) { const expString = [] - for (var i = 0; i < expLists.length; i++) { + for (let i = 0; i < expLists.length; i++) { const expList = expLists[i] expString.push(this.expressionListString(expList)) } @@ -1763,7 +1765,7 @@ function expressionListString (expList) { const ithListEle = expList.expressions const arr = [] if (ithListEle) { - for (var j = 0; j < ithListEle.length; j++) { + for (let j = 0; j < ithListEle.length; j++) { arr.push(this.expressionString(ithListEle[j])) } const ithListString = arr.join(',') @@ -1780,7 +1782,7 @@ function expressionListString (expList) { function forIndString (forInd) { const ind = forInd.indices const indEle = [] - for (var i = 0; i < ind.length; i++) { + for (let i = 0; i < ind.length; i++) { const ithInd = ind[i] const ident = ithInd.identifier const exp = ithInd.expression @@ -1809,9 +1811,9 @@ function expressionString (exp, outStr = false) { function ifExpString (ifExp) { const ifElse = ifExp.if_elseif const elsExp = ifExp.else_expression - var ifExpString = 'if ' + this.expressionString(ifElse[0].condition) + ' then ' + this.expressionString(ifElse[0].then) + let ifExpString = 'if ' + this.expressionString(ifElse[0].condition) + ' then ' + this.expressionString(ifElse[0].then) if (ifElse.length > 1) { - for (var i = 1; i < ifElse.length; i++) { + for (let i = 1; i < ifElse.length; i++) { const ithEle = ifElse[i] const elseifString = ' elseif ' + this.expressionString(ithEle.condition) + ' then ' + this.expressionString(ithEle.then) ifExpString = ifExpString + elseifString diff --git a/lib/modelicaToJSON.js b/lib/modelicaToJSON.js index f72d9769..f82b04c3 100644 --- a/lib/modelicaToJSON.js +++ b/lib/modelicaToJSON.js @@ -2,7 +2,7 @@ const pa = require('path') const pro = require('child_process') const fs = require('bluebird').promisifyAll(require('fs')) -var logger = require('winston') +const logger = require('winston') const ut = require('../lib/util.js') /** Parses the modelica file and returns a promise. @@ -19,7 +19,7 @@ function toJSON (modelicaFile) { throw new Error(msg) } if (!fs.existsSync(modelicaFile)) { - var msg = "Modelica file '" + modelicaFile + "' not found. You may need to set the MODELICAPATH environment variable." + const msg = "Modelica file '" + modelicaFile + "' not found. You may need to set the MODELICAPATH environment variable." logger.error(msg) throw new Error(msg) } @@ -28,7 +28,7 @@ function toJSON (modelicaFile) { // call synchronously const jr = pro.spawnSync('java', - ['-Xmx2048m', '-Xms512m', '-jar', parser, '--mo', modelicaFile], {maxBuffer: 1024 * 1024 * 100}) + ['-Xmx2048m', '-Xms512m', '-jar', parser, '--mo', modelicaFile], { maxBuffer: 1024 * 1024 * 100 }) if (jr.stderr.length > 0) { const msg = '*** Error when parsing ' + modelicaFile + ': "' + jr.stderr + '".' logger.error(msg) @@ -36,12 +36,12 @@ function toJSON (modelicaFile) { } else { try { logger.debug('Parsing output to json.') - var res = JSON.parse(jr.stdout) + const res = JSON.parse(jr.stdout) // Add the modelica file name, as this is needed to look up its instances if (!res) throw new Error('Parser returned null instead of json structure. Did you install Java properly?') Object.assign(res, - { 'modelicaFile': ut.relativePath(modelicaFile) }, - { 'fullMoFilePath': modelicaFile }) + { modelicaFile: ut.relativePath(modelicaFile) }, + { fullMoFilePath: modelicaFile }) return res } catch (error) { const em = error + '\n JSON structure is \n' + jr.stdout diff --git a/lib/parser.js b/lib/parser.js index 3fac4d9b..f82ddaf5 100644 --- a/lib/parser.js +++ b/lib/parser.js @@ -1,7 +1,7 @@ const jq = require('../lib/jsonquery.js') const mj = require('../lib/modelicaToJSON.js') const ut = require('../lib/util.js') -var logger = require('winston') +const logger = require('winston') const fs = require('bluebird').promisifyAll(require('fs')) const storedDefiniton = require('../json2mo/storedDefiniton') @@ -19,31 +19,31 @@ const storedDefiniton = require('../json2mo/storedDefiniton') */ function getJsons (moFiles, parseMode, outputFormat, directory, prettyPrint) { logger.debug('Entered parser.getJsons.') - var jsonData = [] - var outDir = directory + const jsonData = [] + let outDir = directory if (directory === 'current') { outDir = process.cwd() } if (outputFormat === 'raw-json') { moFiles.forEach(function (obj) { // find the output file path - var outputFileName = ut.getOutputFile(obj, 'raw-json', outDir) + const outputFileName = ut.getOutputFile(obj, 'raw-json', outDir) // find the modelica file checksum - var resChecksum = ut.getMoChecksum(obj) + const resChecksum = ut.getMoChecksum(obj) // check if the file should be parsed - var needParsed = ut.checkIfParse(outputFileName, resChecksum, obj) + const needParsed = ut.checkIfParse(outputFileName, resChecksum, obj) if (needParsed) { - var rawJson = getRawJson(obj, outputFormat) - Object.assign(rawJson, {'checksum': resChecksum}) - var out = (prettyPrint === 'true') ? JSON.stringify(rawJson, null, 2) : JSON.stringify(rawJson) + const rawJson = getRawJson(obj, outputFormat) + Object.assign(rawJson, { checksum: resChecksum }) + const out = (prettyPrint === 'true') ? JSON.stringify(rawJson, null, 2) : JSON.stringify(rawJson) ut.writeFile(outputFileName, out) } }) } else { const tempJsonDir = ut.createTempDir('json') - var parsedFile = [] - for (var i = 0; i < moFiles.length; i++) { - var fileList = getSimpleJson(moFiles[i], parseMode, tempJsonDir, parsedFile, outDir, prettyPrint) + const parsedFile = [] + for (let i = 0; i < moFiles.length; i++) { + const fileList = getSimpleJson(moFiles[i], parseMode, tempJsonDir, parsedFile, outDir, prettyPrint) parsedFile.push(fileList) } ut.copyFolderSync(tempJsonDir, outDir) @@ -61,7 +61,7 @@ function getJsons (moFiles, parseMode, outputFormat, directory, prettyPrint) { function getRawJson (moFile, outputFormat) { const rawJson = mj.toJSON(moFile) if (outputFormat === 'raw-json') { - delete rawJson['fullMoFilePath'] + delete rawJson.fullMoFilePath } return rawJson } @@ -77,29 +77,29 @@ function getRawJson (moFile, outputFormat) { * @param prettyPrint Flag to indicate if prettify JSON output */ function getSimpleJson (moFile, parseMode, tempDir, parsedFile, outDir, prettyPrint) { - var outputFileName = ut.getOutputFile(moFile, 'json', outDir) + const outputFileName = ut.getOutputFile(moFile, 'json', outDir) // find the modelica file checksum - var moChecksum = ut.getMoChecksum(moFile) + const moChecksum = ut.getMoChecksum(moFile) // check if the file should be parsed - var needParsed = ut.checkIfParse(outputFileName, moChecksum, moFile) + const needParsed = ut.checkIfParse(outputFileName, moChecksum, moFile) // if the moFile has been parsed and the original moFile has no change if (!needParsed || parsedFile.includes(moFile)) { return null } // get the raw-json output, this process will add relative and full modelica file path to the json output - var rawJson = getRawJson(moFile, 'json') - Object.assign(rawJson, {'checksum': moChecksum}) - var da = jq.simplifyModelicaJSON(rawJson, parseMode) + const rawJson = getRawJson(moFile, 'json') + Object.assign(rawJson, { checksum: moChecksum }) + const da = jq.simplifyModelicaJSON(rawJson, parseMode) // create temp directory to host the json output before adding the svg contents - var tempJsonPath = ut.getOutputFile(moFile, 'json', tempDir) + const tempJsonPath = ut.getOutputFile(moFile, 'json', tempDir) // write the simplified json output to file - var out = (prettyPrint === 'false') ? JSON.stringify(da) : JSON.stringify(da, null, 2) + const out = (prettyPrint === 'false') ? JSON.stringify(da) : JSON.stringify(da, null, 2) ut.writeFile(tempJsonPath, out) // add the full path to the list - var parsedPath = da.fullMoFilePath + const parsedPath = da.fullMoFilePath parsedFile.push(parsedPath) // get list of mo files instantiated by current mo file - var instantiateClass = getInstantiatedFile(da) + const instantiateClass = getInstantiatedFile(da) if (instantiateClass.length > 0) { instantiateClass.forEach(function (obj) { if (!parsedFile.includes(obj)) { @@ -118,9 +118,9 @@ function getSimpleJson (moFile, parseMode, tempDir, parsedFile, outDir, prettyPr function getInstantiatedFile (data) { const within = data.within const claDef = data.class_definition - var insCla = [] + let insCla = [] claDef.forEach(function (obj) { - var claLis = instantiatedClass(within, obj) + const claLis = instantiatedClass(within, obj) if (claLis) { Array.prototype.push.apply(insCla, claLis) } @@ -170,7 +170,7 @@ function instantiatedClass (within, claDef) { // Find all instantiated classes file path const pubInstancesFile = pubInstances ? instanceFilePath(pubInstances, within) : [] const proInstancesFile = proInstances ? instanceFilePath(proInstances, within) : [] - var instantitatedFiles = pubInstancesFile.concat(proInstancesFile) + let instantitatedFiles = pubInstancesFile.concat(proInstancesFile) // iteratively remove duplicate elements if (instantitatedFiles.length > 0) { instantitatedFiles = instantitatedFiles.filter(function (item, pos) { return instantitatedFiles.indexOf(item) === pos }) @@ -190,7 +190,7 @@ function instantiatedClass (within, claDef) { * @param within value of within object */ function instanceFilePath (claObj, within) { - var fullList = [] + let fullList = [] const impCla = claObj.import_instance const extCla = claObj.extends_instance const conCla = claObj.constrained_instance @@ -247,11 +247,11 @@ function searchInstances (eleLis) { } }) return Object.assign( - {'import_instance': impEle}, - {'extends_instance': extEle}, - {'constrained_instance': conEle}, - {'component_instance': comEle}, - {'instance_in_modification': claModEle} + { import_instance: impEle }, + { extends_instance: extEle }, + { constrained_instance: conEle }, + { component_instance: comEle }, + { instance_in_modification: claModEle } ) } @@ -319,18 +319,18 @@ function elementReplaceable (eleRep) { * @returns string content of modelica file */ function convertToModelica (jsonFile, outDir, rawJson = false) { - var fileContent = fs.readFileSync(jsonFile, 'utf8') + const fileContent = fs.readFileSync(jsonFile, 'utf8') - var jsonOutput + let jsonOutput if (rawJson) { jsonOutput = JSON.parse(fileContent)[0] } else { jsonOutput = JSON.parse(fileContent) } - var moOutput = storedDefiniton.parse(jsonOutput, rawJson) + const moOutput = storedDefiniton.parse(jsonOutput, rawJson) // find the output file path - var outputFileName = ut.getOutputFile(jsonFile, 'modelica', outDir) + const outputFileName = ut.getOutputFile(jsonFile, 'modelica', outDir) ut.writeFile(outputFileName, moOutput) return moOutput } diff --git a/lib/util.js b/lib/util.js index e221d93a..2e2088ca 100644 --- a/lib/util.js +++ b/lib/util.js @@ -22,7 +22,7 @@ function getMODELICAPATH () { * @param outputFormat output format, 'json' */ function createTempDir (outputFormat) { - var tmpDir + let tmpDir try { tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), outputFormat)) } catch (e) { @@ -67,11 +67,11 @@ function removeDir (directoryPath) { * @return array of the full path of the modelica file or the package */ function getMoFiles (files) { - var moFiles = [] + let moFiles = [] const MODELICAPATH = getMODELICAPATH() if (files.endsWith('.mo')) { - var tempPath - for (var j = 0; j < MODELICAPATH.length; j++) { + let tempPath + for (let j = 0; j < MODELICAPATH.length; j++) { tempPath = path.join(MODELICAPATH[j], files) if (fse.existsSync(tempPath)) { moFiles.push(tempPath) @@ -83,9 +83,9 @@ function getMoFiles (files) { } } else { // it is a package of mo files - var tempFolder = files + let tempFolder = files if (!fse.existsSync(tempFolder)) { - for (var i = 0; i < MODELICAPATH.length; i++) { + for (let i = 0; i < MODELICAPATH.length; i++) { tempFolder = path.join(MODELICAPATH[i], files) if (fse.existsSync(tempFolder)) break } @@ -94,7 +94,7 @@ function getMoFiles (files) { // the package is not on the MODELICAPATH, so it is a user specified package tempFolder = files } - var fileList = getFiles(tempFolder) + const fileList = getFiles(tempFolder) moFiles = fileList.filter(function (obj) { return obj.endsWith('.mo') }) @@ -109,10 +109,11 @@ function getMoFiles (files) { */ function getFiles (dir, fileList) { fileList = fileList || [] - var files = fs.readdirSync(dir) - for (var i in files) { - if (!files.hasOwnProperty(i)) continue - var name = dir + path.sep + files[i] + const files = fs.readdirSync(dir) + for (const i in files) { + // if (!files.hasOwnProperty(i)) continue + if (!Object.prototype.hasOwnProperty.call(files, i)) continue + const name = dir + path.sep + files[i] if (fs.statSync(name).isDirectory()) { getFiles(name, fileList) } else { @@ -130,14 +131,14 @@ function getFiles (dir, fileList) { * @return relative file path to MODELICAPATH */ function relativePath (filePath) { - var paths = getMODELICAPATH() - var bases = [] + const paths = getMODELICAPATH() + const bases = [] paths.forEach(ele => { - var temp = path.parse(ele).base + const temp = path.parse(ele).base if (temp.length > 0) bases.push(temp) }) - var relPa = filePath - for (var i = 0; i < bases.length; i++) { + let relPa = filePath + for (let i = 0; i < bases.length; i++) { if (filePath.includes(bases[i])) { relPa = filePath.substring(filePath.indexOf(bases[i]) + bases[i].length + 1) } @@ -154,8 +155,8 @@ function relativePath (filePath) { */ function getOutputFile (inputFile, outputFormat, dir) { // get the modelica file path from the Json output, it is relative path - var relPat = relativePath(inputFile) - var outFile + const relPat = relativePath(inputFile) + let outFile if (outputFormat === 'json' || outputFormat === 'raw-json') { outFile = relPat.replace('.mo', '.json') } else if (outputFormat === 'html') { @@ -172,22 +173,22 @@ function getOutputFile (inputFile, outputFormat, dir) { function searchPath (claLis, within) { const MODELICAPATH = getMODELICAPATH() const filePath = [] - for (var i = 0; i < claLis.length; i++) { + for (let i = 0; i < claLis.length; i++) { const ithCla = claLis[i] const claRelPath = joinedPathes(ithCla.split('.')) - var fulPat = searchFullPath(claRelPath.reverse(), MODELICAPATH, within) + const fulPat = searchFullPath(claRelPath.reverse(), MODELICAPATH, within) if (fulPat) { filePath.push(fulPat) } } return filePath } - // Get array of potential paths +// Get array of potential paths function joinedPathes (eleArr) { const pathes = [] const joinedPat = [] const pathSep = path.sep - for (var i = 0; i < eleArr.length; i++) { + for (let i = 0; i < eleArr.length; i++) { pathes.push(eleArr[i]) joinedPat.push(pathes.join(pathSep)) } @@ -197,7 +198,7 @@ function joinedPathes (eleArr) { // Search the full path function searchFullPath (claRelPath, MODELICAPATH, within) { const withEle = within ? within.split('.') : null - var fullPath = pathSearch(claRelPath, MODELICAPATH, withEle, false) + let fullPath = pathSearch(claRelPath, MODELICAPATH, withEle, false) if (!fullPath) { fullPath = pathSearch(claRelPath, MODELICAPATH, withEle, true) } @@ -214,14 +215,14 @@ function searchFullPath (claRelPath, MODELICAPATH, within) { * @param checkPackage flag to check if should check package.mo file */ function pathSearch (claRelPath, MODELICAPATH, withEle, checkPackage) { - var fullPath - for (var i = 0; i < MODELICAPATH.length; i++) { - var moPath = MODELICAPATH[i] + let fullPath + for (let i = 0; i < MODELICAPATH.length; i++) { + const moPath = MODELICAPATH[i] const tempPathes = withEle ? joinWithinPath(moPath, withEle) : [moPath] - var tempPath - for (var j = 0; j < tempPathes.length; j++) { - for (var k = 0; k < claRelPath.length; k++) { - var relPath = !checkPackage ? (claRelPath[k] + '.mo') : claRelPath[k] + let tempPath + for (let j = 0; j < tempPathes.length; j++) { + for (let k = 0; k < claRelPath.length; k++) { + const relPath = !checkPackage ? (claRelPath[k] + '.mo') : claRelPath[k] tempPath = path.join(tempPathes[j], relPath) if (!checkPackage) { if (fse.existsSync(tempPath)) { @@ -310,11 +311,11 @@ function copyFolderSync (from, to) { // Check if the modelica file should be parsed function checkIfParse (outputFile, checksum, moFile) { - var parseMo = false + let parseMo = false if (!fs.existsSync(outputFile)) { parseMo = true } else { - var checksumInJson = getChecksumFromJson(outputFile) + const checksumInJson = getChecksumFromJson(outputFile) if (!checksumInJson || (checksumInJson !== checksum)) { if (checksumInJson !== checksum) { console.log('There is change in: "' + moFile + '", regenerating the json output.') @@ -331,18 +332,18 @@ function checkIfParse (outputFile, checksum, moFile) { // Get the checksum of the Modelica file function getMoChecksum (moFile) { const input = fs.readFileSync(moFile) - var hash = crypto.createHash('md5') + const hash = crypto.createHash('md5') hash.update(input) return hash.digest('hex') } // Get the checksum from the stored json file function getChecksumFromJson (jsPath) { - var jsonChecksum = null + let jsonChecksum = null try { - var fileContent = fs.readFileSync(jsPath, 'utf8') - var jsonOutput = JSON.parse(fileContent) - jsonChecksum = jsonOutput['checksum'] + const fileContent = fs.readFileSync(jsPath, 'utf8') + const jsonOutput = JSON.parse(fileContent) + jsonChecksum = jsonOutput.checksum if (jsonChecksum == null) { return null } @@ -354,20 +355,17 @@ function getChecksumFromJson (jsPath) { } // Validation of a json file against a schema -function jsonSchemaValidation (mode, userData, output = 'json', userSchema) { - if (output !== 'json') { +function jsonSchemaValidation (mode, userData, userSchema) { + const ajv = new Ajv({ allErrors: true, schemaId: '$id' }) + const schema = JSON.parse(fs.readFileSync(userSchema, 'utf8')) + const data = JSON.parse(fs.readFileSync(userData, 'utf8')) + const valid = ajv.validate(schema, data) + if (valid) { + console.log('Json file is valid') + return valid } else { - var ajv = new Ajv({ allErrors: true, schemaId: '$id' }) - var schema = JSON.parse(fs.readFileSync(userSchema, 'utf8')) - var data = JSON.parse(fs.readFileSync(userData, 'utf8')) - var valid = ajv.validate(schema, data) - if (valid) { - console.log('Json file is valid') - return valid - } else { - console.log('Json file not valid, see errors below in ', userData) - console.log(ajv.errorsText()) - } + console.log('Json file not valid, see errors below in ', userData) + console.log(ajv.errorsText()) } } @@ -379,15 +377,15 @@ function jsonSchemaValidation (mode, userData, output = 'json', userSchema) { * @return Result files with path string in an array */ function findFilesInDir (startPath, filter) { - var results = [] + let results = [] if (!fs.existsSync(startPath)) { console.log('no dir ', startPath) return } - var files = fs.readdirSync(startPath) - for (var i = 0; i < files.length; i++) { - var filename = path.join(startPath, files[i]) - var stat = fs.lstatSync(filename) + const files = fs.readdirSync(startPath) + for (let i = 0; i < files.length; i++) { + const filename = path.join(startPath, files[i]) + const stat = fs.lstatSync(filename) if (stat.isDirectory()) { results = results.concat(findFilesInDir(filename, filter)) // recurse } else if (filename.indexOf(filter) >= 0) { diff --git a/package.json b/package.json index 4a71500b..f0843e99 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "base64-img": "^1.0.1", "bluebird": "^3.5.1", "cheerio": "^1.0.0-rc.2", + "cross-env": "^7.0.3", "express": "^4.16.2", "find": "^0.2.8", "fs": "0.0.1-security", @@ -36,7 +37,7 @@ "devDependencies": { "chai": "^4.1.2", "mocha": "^9.1.3", - "standard": "^10.0.3", - "sinon": "^15.0.0" + "sinon": "^15.0.0", + "standard": "^17.0.0" } } diff --git a/test/test_jsonquery.js b/test/test_jsonquery.js index a3a5a4dc..11879455 100644 --- a/test/test_jsonquery.js +++ b/test/test_jsonquery.js @@ -17,9 +17,9 @@ function equalObjects (dict, reference) { if (Object.keys(dict).length !== Object.keys(reference).length) { return false } - var keys = Object.keys(dict).sort() - for (var i = 0; i < keys.length; i++) { - var idx = keys[i] + const keys = Object.keys(dict).sort() + for (let i = 0; i < keys.length; i++) { + const idx = keys[i] if (!(idx in reference)) { return false } else { @@ -31,7 +31,7 @@ function equalObjects (dict, reference) { if (dict.length !== reference.length) { return false } else { - for (var j = 0; j < dict.length; j++) { + for (let j = 0; j < dict.length; j++) { if (!(equalObjects(dict[j], reference[j]))) { return false } @@ -51,23 +51,23 @@ mo.describe('jsonquery.js', function () { mo.describe('testing classDefinition', function () { mo.it('testing structure', function () { sinon.stub(jq, 'classSpecifier').returns('mocked class_specifier') - var rawJson = { - 'encapsulated': true, - 'class_prefixes': 'partial', - 'class_specifier': 'test class_specifier' + const rawJson = { + encapsulated: true, + class_prefixes: 'partial', + class_specifier: 'test class_specifier' } - var jsonOutput = jq.classDefinition(rawJson) - var referenceJsonOutput = { - 'class_prefixes': 'partial', - 'class_specifier': 'mocked class_specifier', - 'encapsulated': true + const jsonOutput = jq.classDefinition(rawJson) + const referenceJsonOutput = { + class_prefixes: 'partial', + class_specifier: 'mocked class_specifier', + encapsulated: true } as.equal(equalObjects(jsonOutput, referenceJsonOutput), true, 'expected =' + JSON.stringify(referenceJsonOutput) + '; actual =' + JSON.stringify(jsonOutput)) }) }) mo.describe('testing classSpecifier', function () { mo.it('checking for empty class_specifier -> should return an error', function () { - var rawJson = {} + const rawJson = {} try { jq.classSpecifier(rawJson) as.fail('no error raised for missing all of long_class_specifier, short_class_specifier and der_class_specifier') @@ -77,34 +77,34 @@ mo.describe('jsonquery.js', function () { }) mo.it('checking with long_class_specifier', function () { sinon.stub(jq, 'longClassSpecifier').returns('mocked long_class_specifier') - var rawJson = { - 'long_class_specifier': 'test long_class_specifier' + const rawJson = { + long_class_specifier: 'test long_class_specifier' } - var jsonOutput = jq.classSpecifier(rawJson) - var referenceJsonOutput = { - 'long_class_specifier': 'mocked long_class_specifier' + const jsonOutput = jq.classSpecifier(rawJson) + const referenceJsonOutput = { + long_class_specifier: 'mocked long_class_specifier' } as.equal(equalObjects(jsonOutput, referenceJsonOutput), true, 'expected =' + JSON.stringify(referenceJsonOutput) + '; actual =' + JSON.stringify(jsonOutput)) }) mo.it('checking with short_class_specifier', function () { sinon.stub(jq, 'shortClassSpecifier').returns('mocked short_class_specifier') - var rawJson = { - 'short_class_specifier': 'test short_class_specifier' + const rawJson = { + short_class_specifier: 'test short_class_specifier' } - var jsonOutput = jq.classSpecifier(rawJson) - var referenceJsonOutput = { - 'short_class_specifier': 'mocked short_class_specifier' + const jsonOutput = jq.classSpecifier(rawJson) + const referenceJsonOutput = { + short_class_specifier: 'mocked short_class_specifier' } as.equal(equalObjects(jsonOutput, referenceJsonOutput), true, 'expected =' + JSON.stringify(referenceJsonOutput) + '; actual =' + JSON.stringify(jsonOutput)) }) mo.it('checking with der_class_specifier', function () { sinon.stub(jq, 'derClassSpecifier').returns('mocked der_class_specifier') - var rawJson = { - 'der_class_specifier': 'test der_class_specifier' + const rawJson = { + der_class_specifier: 'test der_class_specifier' } - var jsonOutput = jq.classSpecifier(rawJson) - var referenceJsonOutput = { - 'der_class_specifier': 'mocked der_class_specifier' + const jsonOutput = jq.classSpecifier(rawJson) + const referenceJsonOutput = { + der_class_specifier: 'mocked der_class_specifier' } as.equal(equalObjects(jsonOutput, referenceJsonOutput), true, 'expected =' + JSON.stringify(referenceJsonOutput) + '; actual =' + JSON.stringify(jsonOutput)) }) @@ -114,31 +114,31 @@ mo.describe('jsonquery.js', function () { mo.it('testing structure', function () { sinon.stub(jq, 'composition').returns('mocked composition') sinon.stub(jq, 'classModification').returns('mocked class_modification') - var rawJson = { - 'identifier': 'test.identifier.a', - 'string_comment': 'string comment', - 'is_extends': false, - 'composition': 'test composition', - 'class_modification': 'test class_modification' - } - var jsonOutput = jq.longClassSpecifier(rawJson) - var referenceJsonOutput = { - 'identifier': 'test.identifier.a', - 'description_string': 'string comment', - 'extends': false, - 'composition': 'mocked composition', - 'class_modification': 'mocked class_modification' + const rawJson = { + identifier: 'test.identifier.a', + string_comment: 'string comment', + is_extends: false, + composition: 'test composition', + class_modification: 'test class_modification' + } + const jsonOutput = jq.longClassSpecifier(rawJson) + const referenceJsonOutput = { + identifier: 'test.identifier.a', + description_string: 'string comment', + extends: false, + composition: 'mocked composition', + class_modification: 'mocked class_modification' } as.equal(equalObjects(jsonOutput, referenceJsonOutput), true, 'expected =' + JSON.stringify(referenceJsonOutput) + '; actual =' + JSON.stringify(jsonOutput)) }) mo.it('testing missing identifier', function () { sinon.stub(jq, 'composition').returns('mocked composition') sinon.stub(jq, 'classModification').returns('mocked class_modification') - var rawJson = { - 'string_comment': 'string comment', - 'is_extends': false, - 'composition': 'test composition', - 'class_modification': 'test class_modification' + const rawJson = { + string_comment: 'string comment', + is_extends: false, + composition: 'test composition', + class_modification: 'test class_modification' } try { jq.longClassSpecifier(rawJson) @@ -148,13 +148,13 @@ mo.describe('jsonquery.js', function () { } }) mo.it('testing missing composition', function () { - sinon.stub(jq, 'composition').returns({'composition': 'mocked composition'}) - sinon.stub(jq, 'classModification').returns({'class_modification': 'mocked class_modification'}) - var rawJson = { - 'identifier': 'test.identifier.a', - 'string_comment': 'string comment', - 'is_extends': false, - 'class_modification': 'test class_modification' + sinon.stub(jq, 'composition').returns({ composition: 'mocked composition' }) + sinon.stub(jq, 'classModification').returns({ class_modification: 'mocked class_modification' }) + const rawJson = { + identifier: 'test.identifier.a', + string_comment: 'string comment', + is_extends: false, + class_modification: 'test class_modification' } try { jq.longClassSpecifier(rawJson) @@ -170,32 +170,32 @@ mo.describe('jsonquery.js', function () { sinon.stub(jq, 'elementSections').returns(['mocked element_section1', 'mocked element_section2']) sinon.stub(jq, 'classModification').returns('mocked class_modification') sinon.stub(jq, 'externalComposition').returns('mocked external_omposition') - var rawJson = { - 'element_list': 'test element_list', - 'element_sections': ['test element_section1', 'test element_section2'], - 'annotation': { - 'class_modification': 'test class_modification' + const rawJson = { + element_list: 'test element_list', + element_sections: ['test element_section1', 'test element_section2'], + annotation: { + class_modification: 'test class_modification' }, - 'external_composition': 'test external_composition' + external_composition: 'test external_composition' } - var jsonOutput = jq.composition(rawJson) - var referenceJsonOutput = { - 'element_list': 'mocked element_list', - 'element_sections': ['mocked element_section1', 'mocked element_section2'], - 'annotation': 'mocked class_modification', - 'external_composition': 'mocked external_composition' + const jsonOutput = jq.composition(rawJson) + const referenceJsonOutput = { + element_list: 'mocked element_list', + element_sections: ['mocked element_section1', 'mocked element_section2'], + annotation: 'mocked class_modification', + external_composition: 'mocked external_composition' } as.equal(equalObjects(jsonOutput, referenceJsonOutput), true, 'expected =' + JSON.stringify(referenceJsonOutput) + '; actual =' + JSON.stringify(jsonOutput)) }) mo.it('testing missing element_list', function () { - sinon.stub(jq, 'elementList').returns({'element_list': 'mocked element_list'}) + sinon.stub(jq, 'elementList').returns({ element_list: 'mocked element_list' }) sinon.stub(jq, 'elementSections').returns(['mocked element_section1', 'mocked element_section2']) - sinon.stub(jq, 'classModification').returns({'class_modification': 'mocked class_modification'}) - sinon.stub(jq, 'externalComposition').returns({'external_composition': 'mocked external_omposition'}) - var rawJson = { - 'element_sections': ['test element_section1', 'test element_section2'], - 'annotation': 'test annotation', - 'external_composition': 'test external_composition' + sinon.stub(jq, 'classModification').returns({ class_modification: 'mocked class_modification' }) + sinon.stub(jq, 'externalComposition').returns({ external_composition: 'mocked external_omposition' }) + const rawJson = { + element_sections: ['test element_section1', 'test element_section2'], + annotation: 'test annotation', + external_composition: 'test external_composition' } try { jq.composition(rawJson) @@ -209,37 +209,37 @@ mo.describe('jsonquery.js', function () { mo.it('testing structure', function () { sinon.stub(jq, 'elementModificationReplaceable').returns('mocked element_modification_or_replaceable') sinon.stub(jq, 'elementRedeclaration').returns('mocked element_redeclaration') - var rawJson = { - 'argument_list': { - 'arguments': [ + const rawJson = { + argument_list: { + arguments: [ { - 'element_modification_or_replaceable': 'test element_modification_or_replaceable' + element_modification_or_replaceable: 'test element_modification_or_replaceable' }, { - 'element_redeclaration': 'test element_redeclaration' + element_redeclaration: 'test element_redeclaration' } ] } } - var jsonOutput = jq.classModification(rawJson) - var referenceJsonOutput = [ + const jsonOutput = jq.classModification(rawJson) + const referenceJsonOutput = [ { - 'element_modification_or_replaceable': 'mocked element_modification_or_replaceable', - 'element_redeclaration': undefined + element_modification_or_replaceable: 'mocked element_modification_or_replaceable', + element_redeclaration: undefined }, { - 'element_modification_or_replaceable': undefined, - 'element_redeclaration': 'mocked element_redeclaration' + element_modification_or_replaceable: undefined, + element_redeclaration: 'mocked element_redeclaration' } ] as.equal(equalObjects(jsonOutput, referenceJsonOutput), true, 'expected =' + JSON.stringify(referenceJsonOutput) + '; actual =' + JSON.stringify(jsonOutput)) }) mo.it('testing empty arguments', function () { - sinon.stub(jq, 'elementRedeclaration').returns({'element_redeclaration': 'mocked element_redeclaration'}) - sinon.stub(jq, 'elementModificationReplaceable').returns({'element_modification_or_replaceble': 'mocked element_modification_or_replaceable'}) - var rawJson = {} - var jsonOutput = jq.classModification(rawJson) - var referenceJsonOutput = '()' + sinon.stub(jq, 'elementRedeclaration').returns({ element_redeclaration: 'mocked element_redeclaration' }) + sinon.stub(jq, 'elementModificationReplaceable').returns({ element_modification_or_replaceble: 'mocked element_modification_or_replaceable' }) + const rawJson = {} + const jsonOutput = jq.classModification(rawJson) + const referenceJsonOutput = '()' as.equal(equalObjects(jsonOutput, referenceJsonOutput), true, 'expected =' + JSON.stringify(referenceJsonOutput) + '; actual =' + JSON.stringify(jsonOutput)) }) }) @@ -250,91 +250,91 @@ mo.describe('jsonquery.js', function () { sinon.stub(jq, 'classDefinition').returns('mocked class_definition') sinon.stub(jq, 'componentClause').returns('mocked component_clause') sinon.stub(jq, 'constrainingClause').returns('mocked constraining_clause') - var rawJson = { - 'elements': [ + const rawJson = { + elements: [ { - 'import_clause': 'test import_clause' + import_clause: 'test import_clause' }, { - 'extends_clause': 'test extends_clause' + extends_clause: 'test extends_clause' }, { - 'redeclare': true, - 'is_final': true, - 'inner': true, - 'outer': true, - 'replaceable': true, - 'class_definition': 'test class_definition', - 'component_clause': 'test component_clause', - 'constraining_clause': 'test constraining_clause', - 'comment': { - 'string_comment': 'test comment' + redeclare: true, + is_final: true, + inner: true, + outer: true, + replaceable: true, + class_definition: 'test class_definition', + component_clause: 'test component_clause', + constraining_clause: 'test constraining_clause', + comment: { + string_comment: 'test comment' } }, { - 'redeclare': true, - 'is_final': true, - 'inner': true, - 'outer': true, - 'replaceable': false, - 'class_definition': 'test class_definition', - 'component_clause': 'test component_clause' + redeclare: true, + is_final: true, + inner: true, + outer: true, + replaceable: false, + class_definition: 'test class_definition', + component_clause: 'test component_clause' } ] } - var jsonOutput = jq.elementList(rawJson) - var referenceJsonOutput = [ + const jsonOutput = jq.elementList(rawJson) + const referenceJsonOutput = [ { - 'import_clause': 'mocked import_clause', - 'extends_clause': undefined, - 'redeclare': undefined, - 'final': undefined, - 'inner': undefined, - 'outer': undefined, - 'replaceable': undefined, - 'class_definition': undefined, - 'component_clause': undefined, - 'constraining_clause': undefined, - 'description': undefined + import_clause: 'mocked import_clause', + extends_clause: undefined, + redeclare: undefined, + final: undefined, + inner: undefined, + outer: undefined, + replaceable: undefined, + class_definition: undefined, + component_clause: undefined, + constraining_clause: undefined, + description: undefined }, { - 'import_clause': undefined, - 'extends_clause': 'mocked extends_clause', - 'redeclare': undefined, - 'final': undefined, - 'inner': undefined, - 'outer': undefined, - 'replaceable': undefined, - 'class_definition': undefined, - 'component_clause': undefined, - 'constraining_clause': undefined, - 'description': undefined + import_clause: undefined, + extends_clause: 'mocked extends_clause', + redeclare: undefined, + final: undefined, + inner: undefined, + outer: undefined, + replaceable: undefined, + class_definition: undefined, + component_clause: undefined, + constraining_clause: undefined, + description: undefined }, { - 'import_clause': undefined, - 'extends_clause': undefined, - 'redeclare': true, - 'final': true, - 'inner': true, - 'outer': true, - 'replaceable': true, - 'class_definition': 'mocked class_definition', - 'component_clause': 'mocked component_clause', - 'constraining_clause': 'mocked constraining_clause', - 'description': { - 'description_string': 'test comment', - 'annotation': undefined + import_clause: undefined, + extends_clause: undefined, + redeclare: true, + final: true, + inner: true, + outer: true, + replaceable: true, + class_definition: 'mocked class_definition', + component_clause: 'mocked component_clause', + constraining_clause: 'mocked constraining_clause', + description: { + description_string: 'test comment', + annotation: undefined } }, { - 'import_clause': undefined, - 'extends_clause': undefined, - 'redeclare': true, - 'final': true, - 'inner': true, - 'outer': true, - 'replaceable': false, - 'class_definition': 'mocked class_definition', - 'component_clause': 'mocked component_clause', - 'constraining_clause': undefined, - 'description': undefined + import_clause: undefined, + extends_clause: undefined, + redeclare: true, + final: true, + inner: true, + outer: true, + replaceable: false, + class_definition: 'mocked class_definition', + component_clause: 'mocked component_clause', + constraining_clause: undefined, + description: undefined } ] as.equal(equalObjects(jsonOutput, referenceJsonOutput), true, 'expected =' + JSON.stringify(referenceJsonOutput) + '; actual =' + JSON.stringify(jsonOutput)) @@ -345,19 +345,19 @@ mo.describe('jsonquery.js', function () { sinon.stub(jq, 'classDefinition').returns('mocked class_definition') sinon.stub(jq, 'componentClause').returns('mocked component_clause') sinon.stub(jq, 'constrainingClause').returns('mocked constraining_clause') - var rawJson = { - 'elements': [ + const rawJson = { + elements: [ { - 'redeclare': true, - 'is_final': true, - 'inner': true, - 'outer': true, - 'replaceable': false, - 'class_definition': 'test class_definition', - 'component_clause': 'test component_clause', - 'constraining_clause': 'test constraining_clause', - 'comment': { - 'string_comment': 'test comment' + redeclare: true, + is_final: true, + inner: true, + outer: true, + replaceable: false, + class_definition: 'test class_definition', + component_clause: 'test component_clause', + constraining_clause: 'test constraining_clause', + comment: { + string_comment: 'test comment' } } ] @@ -376,42 +376,42 @@ mo.describe('jsonquery.js', function () { sinon.stub(jq, 'algorithmSection').returns('mocked algorithm_section') sinon.stub(jq, 'equationSection').returns('mocked equation_section') - var rawJson = [ + const rawJson = [ { - 'public_element_list': 'test public_element_list' + public_element_list: 'test public_element_list' }, { - 'protected_element_list': 'test protected_element_list' + protected_element_list: 'test protected_element_list' }, { - 'algorithm_section': 'test algorithm_section' + algorithm_section: 'test algorithm_section' }, { - 'equation_section': 'test equation_section' + equation_section: 'test equation_section' } ] - var jsonOutput = jq.elementSections(rawJson) - var referenceJsonOutput = [ + const jsonOutput = jq.elementSections(rawJson) + const referenceJsonOutput = [ { - 'public_element_list': 'mocked public_element_list', - 'protected_element_list': undefined, - 'algorithm_section': undefined, - 'equation_section': undefined + public_element_list: 'mocked public_element_list', + protected_element_list: undefined, + algorithm_section: undefined, + equation_section: undefined }, { - 'public_element_list': undefined, - 'protected_element_list': 'mocked protected_element_list', - 'algorithm_section': undefined, - 'equation_section': undefined + public_element_list: undefined, + protected_element_list: 'mocked protected_element_list', + algorithm_section: undefined, + equation_section: undefined }, { - 'public_element_list': undefined, - 'protected_element_list': undefined, - 'algorithm_section': 'mocked algorithm_section', - 'equation_section': undefined + public_element_list: undefined, + protected_element_list: undefined, + algorithm_section: 'mocked algorithm_section', + equation_section: undefined }, { - 'public_element_list': undefined, - 'protected_element_list': undefined, - 'algorithm_section': undefined, - 'equation_section': 'mocked equation_section' + public_element_list: undefined, + protected_element_list: undefined, + algorithm_section: undefined, + equation_section: 'mocked equation_section' } ] as.equal(equalObjects(jsonOutput, referenceJsonOutput), true, 'expected =' + JSON.stringify(referenceJsonOutput) + '; actual =' + JSON.stringify(jsonOutput)) @@ -422,21 +422,21 @@ mo.describe('jsonquery.js', function () { sinon.stub(jq, 'componentReference').returns('mocked component_reference') sinon.stub(jq, 'expression').withArgs('test expression1').returns('mocked expression1').withArgs('test expression2').returns('mocked expression2') - var rawJson = { - 'component_reference': 'test component_reference', - 'identifier': 'test.identifier.a', - 'expression_list': { - 'expressions': [ + const rawJson = { + component_reference: 'test component_reference', + identifier: 'test.identifier.a', + expression_list: { + expressions: [ 'test expression1', 'test expression2' ] } } - var jsonOutput = jq.externalFunctionCall(rawJson) - var referenceJsonOutput = { - 'component_reference': 'mocked component_reference', - 'identifier': 'test.identifier.a', - 'expression_list': [ + const jsonOutput = jq.externalFunctionCall(rawJson) + const referenceJsonOutput = { + component_reference: 'mocked component_reference', + identifier: 'test.identifier.a', + expression_list: [ 'mocked expression1', 'mocked expression2' ] @@ -448,18 +448,18 @@ mo.describe('jsonquery.js', function () { mo.it('testing structure', function () { sinon.stub(jq, 'externalFunctionCall').withArgs('test external_function_call').returns('mocked external_function_call') sinon.stub(jq, 'classModification').withArgs('test class_modification').returns('mocked class_modification') - var rawJson = { - 'language_specification': 'test language_specification', - 'external_function_call': 'test external_function_call', - 'external_annotation': { - 'class_modification': 'test class_modification' + const rawJson = { + language_specification: 'test language_specification', + external_function_call: 'test external_function_call', + external_annotation: { + class_modification: 'test class_modification' } } - var jsonOutput = jq.externalComposition(rawJson) - var referenceJsonOutput = { - 'language_specification': 'test language_specification', - 'external_function_call': 'mocked external_function_call', - 'external_annotation': 'mocked class_modification' + const jsonOutput = jq.externalComposition(rawJson) + const referenceJsonOutput = { + language_specification: 'test language_specification', + external_function_call: 'mocked external_function_call', + external_annotation: 'mocked class_modification' } as.equal(equalObjects(jsonOutput, referenceJsonOutput), true, 'expected =' + JSON.stringify(referenceJsonOutput) + '; actual =' + JSON.stringify(jsonOutput)) }) @@ -469,18 +469,18 @@ mo.describe('jsonquery.js', function () { sinon.stub(jq, 'typeSpecifier').withArgs('test type_specifier').returns('mocked type_specifier') sinon.stub(jq, 'arraySubscripts').withArgs('test array_subscripts').returns('mocked array_subscripts') sinon.stub(jq, 'componentList').withArgs('test component_list').returns('mocked component_list') - var rawJson = { - 'type_prefix': 'test type_prefix', - 'type_specifier': 'test type_specifier', - 'array_subscripts': 'test array_subscripts', - 'component_list': 'test component_list' - } - var jsonOutput = jq.componentClause(rawJson) - var referenceJsonOutput = { - 'type_prefix': 'test type_prefix', - 'type_specifier': 'mocked type_specifier', - 'array_subscripts': 'mocked array_subscripts', - 'component_list': 'mocked component_list' + const rawJson = { + type_prefix: 'test type_prefix', + type_specifier: 'test type_specifier', + array_subscripts: 'test array_subscripts', + component_list: 'test component_list' + } + const jsonOutput = jq.componentClause(rawJson) + const referenceJsonOutput = { + type_prefix: 'test type_prefix', + type_specifier: 'mocked type_specifier', + array_subscripts: 'mocked array_subscripts', + component_list: 'mocked component_list' } as.equal(equalObjects(jsonOutput, referenceJsonOutput), true, 'expected =' + JSON.stringify(referenceJsonOutput) + '; actual =' + JSON.stringify(jsonOutput)) }) @@ -489,18 +489,18 @@ mo.describe('jsonquery.js', function () { mo.it('testing structure', function () { sinon.stub(jq, 'nameString').withArgs('test name').returns('mocked name') sinon.stub(jq, 'classModification').withArgs('test class_modification').returns('mocked class_modification').withArgs('test annotation.class_modification').returns('mocked annotation.class_modification') - var rawJson = { - 'name': 'test name', - 'class_modification': 'test class_modification', - 'annotation': { - 'class_modification': 'test annotation.class_modification' + const rawJson = { + name: 'test name', + class_modification: 'test class_modification', + annotation: { + class_modification: 'test annotation.class_modification' } } - var jsonOutput = jq.extendsClause(rawJson) - var referenceJsonOutput = { - 'name': 'mocked name', - 'class_modification': 'mocked class_modification', - 'annotation': 'mocked annotation.class_modification' + const jsonOutput = jq.extendsClause(rawJson) + const referenceJsonOutput = { + name: 'mocked name', + class_modification: 'mocked class_modification', + annotation: 'mocked annotation.class_modification' } as.equal(equalObjects(jsonOutput, referenceJsonOutput), true, 'expected =' + JSON.stringify(referenceJsonOutput) + '; actual =' + JSON.stringify(jsonOutput)) }) @@ -510,20 +510,20 @@ mo.describe('jsonquery.js', function () { sinon.stub(jq, 'nameString').withArgs('test name').returns('mocked name') sinon.stub(jq, 'importList').withArgs('test import_list').returns('mocked import_list') sinon.stub(jq, 'description').withArgs('test comment').returns('mocked comment').withArgs('test comment').returns('mocked comment') - var rawJson = { - 'identifier': 'test identifier', - 'name': 'test name', - 'dot_star': true, - 'import_list': 'test import_list', - 'comment': 'test comment' - } - var jsonOutput = jq.importClause(rawJson) - var referenceJsonOutput = { - 'identifier': 'test identifier', - 'name': 'mocked name', - 'dot_star': '.*', - 'import_list': 'mocked import_list', - 'description': 'mocked comment' + const rawJson = { + identifier: 'test identifier', + name: 'test name', + dot_star: true, + import_list: 'test import_list', + comment: 'test comment' + } + const jsonOutput = jq.importClause(rawJson) + const referenceJsonOutput = { + identifier: 'test identifier', + name: 'mocked name', + dot_star: '.*', + import_list: 'mocked import_list', + description: 'mocked comment' } as.equal(equalObjects(jsonOutput, referenceJsonOutput), true, 'expected =' + JSON.stringify(referenceJsonOutput) + '; actual =' + JSON.stringify(jsonOutput)) }) @@ -533,24 +533,24 @@ mo.describe('jsonquery.js', function () { sinon.stub(jq, 'declaration').withArgs('test declaration').returns('mocked declaration') sinon.stub(jq, 'expression').withArgs('test condition_attribute.expression').returns('mocked condition_attribute.expression') sinon.stub(jq, 'description').withArgs('test comment').returns('mocked comment').withArgs('test comment').returns('mocked comment') - var rawJson = { - 'component_declaration_list': [ + const rawJson = { + component_declaration_list: [ { - 'declaration': 'test declaration', - 'condition_attribute': { - 'expression': 'test condition_attribute.expression' + declaration: 'test declaration', + condition_attribute: { + expression: 'test condition_attribute.expression' }, - 'comment': 'test comment' + comment: 'test comment' } ] } - var jsonOutput = jq.componentList(rawJson) - var referenceJsonOutput = [{ - 'declaration': 'mocked declaration', - 'condition_attribute': { - 'expression': 'mocked condition_attribute.expression' + const jsonOutput = jq.componentList(rawJson) + const referenceJsonOutput = [{ + declaration: 'mocked declaration', + condition_attribute: { + expression: 'mocked condition_attribute.expression' }, - 'description': 'mocked comment' + description: 'mocked comment' }] as.equal(equalObjects(jsonOutput, referenceJsonOutput), true, 'expected =' + JSON.stringify(referenceJsonOutput) + '; actual =' + JSON.stringify(jsonOutput)) }) @@ -559,16 +559,16 @@ mo.describe('jsonquery.js', function () { mo.it('testing structure', function () { sinon.stub(jq, 'arraySubscripts').withArgs('test array_subscripts').returns('mocked array_subscripts') sinon.stub(jq, 'modification').withArgs('test modification').returns('mocked modification') - var rawJson = { - 'identifier': 'test.identifier.a', - 'array_subscripts': 'test array_subscripts', - 'modification': 'test modification' + const rawJson = { + identifier: 'test.identifier.a', + array_subscripts: 'test array_subscripts', + modification: 'test modification' } - var jsonOutput = jq.declaration(rawJson) - var referenceJsonOutput = { - 'identifier': 'test.identifier.a', - 'array_subscripts': 'mocked array_subscripts', - 'modification': 'mocked modification' + const jsonOutput = jq.declaration(rawJson) + const referenceJsonOutput = { + identifier: 'test.identifier.a', + array_subscripts: 'mocked array_subscripts', + modification: 'mocked modification' } as.equal(equalObjects(jsonOutput, referenceJsonOutput), true, 'expected =' + JSON.stringify(referenceJsonOutput) + '; actual =' + JSON.stringify(jsonOutput)) }) @@ -578,16 +578,16 @@ mo.describe('jsonquery.js', function () { sinon.stub(jq, 'nameString').withArgs('test name').returns('mocked name') sinon.stub(jq, 'modification').withArgs('test modification').returns('mocked modification') sinon.stub(graPri, 'graphicAnnotationObj').withArgs('test name', 'test modification').returns('mocked graphicAnnotationObj') - var rawJson = { - 'name': 'test name', - 'string_comment': 'test string_comment', - 'modification': 'test modification' + const rawJson = { + name: 'test name', + string_comment: 'test string_comment', + modification: 'test modification' } - var jsonOutput = jq.elementModification(rawJson) - var referenceJsonOutput = { - 'name': 'mocked name', - 'description_string': 'test string_comment', - 'modification': 'mocked modification' + const jsonOutput = jq.elementModification(rawJson) + const referenceJsonOutput = { + name: 'mocked name', + description_string: 'test string_comment', + modification: 'mocked modification' } as.equal(equalObjects(jsonOutput, referenceJsonOutput), true, 'expected =' + JSON.stringify(referenceJsonOutput) + '; actual =' + JSON.stringify(jsonOutput)) }) @@ -595,14 +595,14 @@ mo.describe('jsonquery.js', function () { sinon.stub(jq, 'nameString').withArgs('Line').returns('Line') sinon.stub(jq, 'modification').withArgs('test modification').returns('mocked modification') sinon.stub(graPri, 'graphicAnnotationObj').withArgs('Line', 'mocked modification').returns('mocked graphicAnnotationObj') - var rawJson = { - 'name': 'Line', - 'string_comment': 'test string_comment', - 'modification': 'test modification' + const rawJson = { + name: 'Line', + string_comment: 'test string_comment', + modification: 'test modification' } - var jsonOutput = jq.elementModification(rawJson) - var referenceJsonOutput = { - 'Line': 'mocked graphicAnnotationObj' + const jsonOutput = jq.elementModification(rawJson) + const referenceJsonOutput = { + Line: 'mocked graphicAnnotationObj' } as.equal(equalObjects(jsonOutput, referenceJsonOutput), true, 'expected =' + JSON.stringify(referenceJsonOutput) + '; actual =' + JSON.stringify(jsonOutput)) }) @@ -611,18 +611,18 @@ mo.describe('jsonquery.js', function () { mo.it('testing structure', function () { sinon.stub(jq, 'elementModification').withArgs('test element_modification').returns('mocked element_modification') sinon.stub(jq, 'elementReplaceable').withArgs('test element_replaceable').returns('mocked element_replaceable') - var rawJson = { - 'each': true, - 'is_final': true, - 'element_modification': 'test element_modification', - 'element_replaceable': 'test element_replaceable' - } - var jsonOutput = jq.elementModificationReplaceable(rawJson) - var referenceJsonOutput = { - 'each': true, - 'final': true, - 'element_modification': 'mocked element_modification', - 'element_replaceable': 'mocked element_replaceable' + const rawJson = { + each: true, + is_final: true, + element_modification: 'test element_modification', + element_replaceable: 'test element_replaceable' + } + const jsonOutput = jq.elementModificationReplaceable(rawJson) + const referenceJsonOutput = { + each: true, + final: true, + element_modification: 'mocked element_modification', + element_replaceable: 'mocked element_replaceable' } as.equal(equalObjects(jsonOutput, referenceJsonOutput), true, 'expected =' + JSON.stringify(referenceJsonOutput) + '; actual =' + JSON.stringify(jsonOutput)) }) @@ -632,20 +632,20 @@ mo.describe('jsonquery.js', function () { sinon.stub(jq, 'shortClassDefinition').withArgs('test short_class_definition').returns('mocked short_class_definition') sinon.stub(jq, 'componentClause1').withArgs('test component_clause1').returns('mocked component_clause1') sinon.stub(jq, 'elementReplaceable').withArgs('test element_replaceable').returns('mocked element_replaceable') - var rawJson = { - 'each': true, - 'is_final': true, - 'short_class_definition': 'test short_class_definition', - 'component_clause1': 'test component_clause1', - 'element_replaceable': 'test element_replaceable' - } - var jsonOutput = jq.elementRedeclaration(rawJson) - var referenceJsonOutput = { - 'each': true, - 'final': true, - 'short_class_definition': 'mocked short_class_definition', - 'component_clause1': 'mocked component_clause1', - 'element_replaceable': 'mocked element_replaceable' + const rawJson = { + each: true, + is_final: true, + short_class_definition: 'test short_class_definition', + component_clause1: 'test component_clause1', + element_replaceable: 'test element_replaceable' + } + const jsonOutput = jq.elementRedeclaration(rawJson) + const referenceJsonOutput = { + each: true, + final: true, + short_class_definition: 'mocked short_class_definition', + component_clause1: 'mocked component_clause1', + element_replaceable: 'mocked element_replaceable' } as.equal(equalObjects(jsonOutput, referenceJsonOutput), true, 'expected =' + JSON.stringify(referenceJsonOutput) + '; actual =' + JSON.stringify(jsonOutput)) }) @@ -654,27 +654,27 @@ mo.describe('jsonquery.js', function () { mo.it('testing structure', function () { sinon.stub(jq, 'simpleExpression').withArgs('test simple_expression1').returns('mocked simple_expression1').withArgs('test simple_expression2').returns('mocked simple_expression2') sinon.stub(jq, 'ifExpString').withArgs('test if_expression1').returns('mocked if_expression1').withArgs('test if_expression2').returns('mocked if_expression2') - var rawJson = [ + const rawJson = [ { - 'expressions': [ + expressions: [ { - 'simple_expression': 'test simple_expression1' + simple_expression: 'test simple_expression1' }, { - 'if_expression': 'test if_expression1' + if_expression: 'test if_expression1' } ] }, { - 'expressions': [ + expressions: [ { - 'simple_expression': 'test simple_expression2' + simple_expression: 'test simple_expression2' }, { - 'if_expression': 'test if_expression2' + if_expression: 'test if_expression2' } ] } ] - var jsonOutput = jq.expLisString(rawJson) - var referenceJsonOutput = 'mocked simple_expression1,mocked if_expression1;mocked simple_expression2,mocked if_expression2' + const jsonOutput = jq.expLisString(rawJson) + const referenceJsonOutput = 'mocked simple_expression1,mocked if_expression1;mocked simple_expression2,mocked if_expression2' as.equal(equalObjects(jsonOutput, referenceJsonOutput), true, 'expected =' + JSON.stringify(referenceJsonOutput) + '; actual =' + JSON.stringify(jsonOutput)) }) }) diff --git a/test/test_parser.js b/test/test_parser.js index 4d9bd735..a6b177ea 100644 --- a/test/test_parser.js +++ b/test/test_parser.js @@ -7,7 +7,7 @@ const ut = require('../lib/util') const Promise = require('bluebird') const fs = Promise.promisifyAll(require('fs')) const glob = require('glob-promise') -var logger = require('winston') +const logger = require('winston') // const cheerio = require('cheerio') logger.configure({ @@ -24,8 +24,8 @@ logger.level = 'error' /** Function to get all the Modelica files to be tested */ -var getIntFiles = function (mode) { - var pattern +const getIntFiles = function (mode) { + let pattern if (mode === 'cdl') { pattern = path.join(__dirname, 'FromModelica', '*.mo') return glob.sync(pattern) @@ -36,8 +36,8 @@ var getIntFiles = function (mode) { /** Function that checks parsing from Modelica to JSON, in 'cdl' parsing mode */ -var checkCdlJSON = function (outFormat, extension, message) { - var mode = 'cdl' +const checkCdlJSON = function (outFormat, extension, message) { + const mode = 'cdl' // process.env.MODELICAPATH = __dirname mo.it(message, () => { // mo files array to be tested. @@ -46,17 +46,17 @@ var checkCdlJSON = function (outFormat, extension, message) { return !obj.includes('Extends') }) // Name of subpackage to store json output files - var subPackName = (outFormat === 'raw-json' ? 'raw-json' : 'json') + const subPackName = (outFormat === 'raw-json' ? 'raw-json' : 'json') // When parsing mode is 'cdl', the moFiles should feed into parser one-by-one - var expectedOutputPath = path.join(process.cwd(), 'test', 'reference') + const expectedOutputPath = path.join(process.cwd(), 'test', 'reference') testMoFiles.map(fil => { // 'fil.split()' changes string 'fil' to be string array with single element // 'fil' is like '../test/FromModelica/***.mo' // const jsonNewCDL = pa.getJSON(fil.split(), mode, outFormat) pa.getJsons([fil], mode, outFormat, 'current', 'false') - var idx = fil.lastIndexOf(path.sep) + const idx = fil.lastIndexOf(path.sep) const jsonNewCDLFile = path.join(process.cwd(), subPackName, 'test', 'FromModelica', fil.slice(idx + 1, -3) + extension) // Read the stored json representation from disk @@ -74,10 +74,10 @@ var checkCdlJSON = function (outFormat, extension, message) { // Update the path to be relative to the project home. // This is needed for the regression tests to be portable. if (oldCDL.modelicaFile) { - oldCDL['fullMoFilePath'] = oldCDL['modelicaFile'].split('modelica-json/')[1] + oldCDL.fullMoFilePath = oldCDL.modelicaFile.split('modelica-json/')[1] } if (neCDL.modelicaFile) { - neCDL['fullMoFilePath'] = neCDL['modelicaFile'].split('modelica-json/')[1] + neCDL.fullMoFilePath = neCDL.modelicaFile.split('modelica-json/')[1] } const tempOld = JSON.stringify(oldCDL) const tempNew = JSON.stringify(neCDL) @@ -90,9 +90,9 @@ var checkCdlJSON = function (outFormat, extension, message) { /** Function that checks parsing from Modelica to JSON, in 'modelica' parsing mode */ - // TODO: modify this -var checkModJSON = function (outFormat, extension, message) { - var mode = 'modelica' +// TODO: modify this +const checkModJSON = function (outFormat, extension, message) { + const mode = 'modelica' // process.env.MODELICAPATH = __dirname mo.it(message, () => { // mo files package to be tested @@ -100,28 +100,28 @@ var checkModJSON = function (outFormat, extension, message) { const testMoFiles = ut.getMoFiles(testMoFilesTemp) // Name of subpackage to store json output files - var subPackName = (outFormat === 'raw-json' ? 'raw-json' : 'json') + const subPackName = (outFormat === 'raw-json' ? 'raw-json' : 'json') // When parsing mode is 'modelica', the moFiles should feed into parser in package // const jsonNewMOD = pa.getJSON(testMoFiles, mode, outFormat) pa.getJsons(testMoFiles, mode, outFormat, 'current', 'false') - var pattern = path.join('test', 'FromModelica', '*.mo') - var files = glob.sync(pattern) - var expectedOutputPath = path.join(process.cwd(), 'test', 'reference') + const pattern = path.join('test', 'FromModelica', '*.mo') + const files = glob.sync(pattern) + const expectedOutputPath = path.join(process.cwd(), 'test', 'reference') - for (var i = 0; i < files.length; i++) { - var idx2 = files[i].lastIndexOf(path.sep) + for (let i = 0; i < files.length; i++) { + const idx2 = files[i].lastIndexOf(path.sep) const fileNameMOD = files[i].slice(idx2 + 1, -3) + extension const oldFileMOD = path.join(expectedOutputPath, subPackName, 'test', 'FromModelica', fileNameMOD) // Read the old json const jsonOldMOD = JSON.parse(fs.readFileSync(oldFileMOD, 'utf8')) if (jsonOldMOD.modelicaFile) { - jsonOldMOD['fullMoFilePath'] = jsonOldMOD['modelicaFile'].split('modelica-json/')[1] + jsonOldMOD.fullMoFilePath = jsonOldMOD.modelicaFile.split('modelica-json/')[1] } const jsonNewMOD = path.join(expectedOutputPath, subPackName, 'test', 'FromModelica', fileNameMOD) - var neMOD = JSON.parse(fs.readFileSync(jsonNewMOD, 'utf8')) + const neMOD = JSON.parse(fs.readFileSync(jsonNewMOD, 'utf8')) if (neMOD.modelicaFile) { - neMOD['fullMoFilePath'] = neMOD['modelicaFile'].split('modelica-json/')[1] + neMOD.fullMoFilePath = neMOD.modelicaFile.split('modelica-json/')[1] } const tempOld = JSON.stringify(jsonOldMOD) diff --git a/validation.js b/validation.js index dd718779..b478e225 100644 --- a/validation.js +++ b/validation.js @@ -5,14 +5,14 @@ const fs = require('fs') const ArgumentParser = require('argparse').ArgumentParser /// /////////////////////////////////////// -var validation = new ArgumentParser({ +const validation = new ArgumentParser({ version: '0.0.1', addHelp: true, description: 'Json file validation against schema' }) validation.addArgument( - [ '-m', '--mode' ], + ['-m', '--mode'], { help: "Parsing mode, single CDL model or buildings modelica library package, 'cdl' is the default.", choices: ['cdl', 'modelica'], @@ -21,14 +21,14 @@ validation.addArgument( ) validation.addArgument( - [ '-f', '--file' ], + ['-f', '--file'], { help: 'JSON file to test against schema', required: true } ) -var args = validation.parseArgs() +const args = validation.parseArgs() const logFile = 'validation.log' try { From 66c6607cb0f06e9d970b21096b111c7c32736cd0 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Wed, 25 Jan 2023 11:21:11 -0800 Subject: [PATCH 4/4] corrected the paring of the fun_cal and logical expression --- lib/jsonquery.js | 17 +- .../SingleZone/VAV/SetPoints/CoolingCoil.json | 2 +- .../Buildings/Controls/OBC/CDL/Constants.json | 2 +- .../Controls/OBC/CDL/Continuous/Abs.json | 2 +- .../Controls/OBC/CDL/Continuous/Add.json | 2 +- .../OBC/CDL/Continuous/Derivative.json | 2 +- .../Controls/OBC/CDL/Continuous/Greater.json | 1063 +- .../OBC/CDL/Continuous/Hysteresis.json | 17 +- .../CDL/Continuous/IntegratorWithReset.json | 2 +- .../Controls/OBC/CDL/Continuous/Limiter.json | 4 +- .../Controls/OBC/CDL/Continuous/Min.json | 2 +- .../CDL/Continuous/MultiplyByParameter.json | 2 +- .../Controls/OBC/CDL/Continuous/PID.json | 136 +- .../OBC/CDL/Continuous/PIDWithReset.json | 136 +- .../OBC/CDL/Continuous/Sources/Constant.json | 2 +- .../Controls/OBC/CDL/Continuous/Subtract.json | 2 +- .../Controls/OBC/CDL/Continuous/Switch.json | 2 +- .../Controls/OBC/CDL/Integers/Equal.json | 2 +- .../OBC/CDL/Integers/Sources/Constant.json | 2 +- .../OBC/CDL/Interfaces/BooleanInput.json | 2 +- .../OBC/CDL/Interfaces/BooleanOutput.json | 2 +- .../OBC/CDL/Interfaces/IntegerInput.json | 2 +- .../OBC/CDL/Interfaces/IntegerOutput.json | 2 +- .../OBC/CDL/Interfaces/RealInput.json | 2 +- .../OBC/CDL/Interfaces/RealOutput.json | 2 +- .../Controls/OBC/CDL/Interfaces/package.json | 2 +- .../Controls/OBC/CDL/Logical/And.json | 27 +- .../Controls/OBC/CDL/Logical/Not.json | 21 +- .../Controls/OBC/CDL/Logical/Or.json | 31 +- .../OBC/CDL/Logical/Sources/Constant.json | 2 +- .../Controls/OBC/CDL/Logical/TrueDelay.json | 59 +- .../OBC/CDL/Logical/TrueFalseHold.json | 2 +- .../OBC/CDL/Logical/TrueHoldWithReset.json | 2 +- .../OBC/CDL/Types/SimpleController.json | 2 +- .../Controls/OBC/CDL/Utilities/Assert.json | 2 +- test/reference/json/Modelica/Icons.json | 7263 ++++ test/reference/json/Modelica/SIunits.json | 29739 ++++++++++++++++ test/reference/json/Modelica/StateGraph.json | 27047 ++++++++++++++ .../json/test/FromModelica/Block1.json | 2 +- .../test/FromModelica/BlockInputOutput.json | 2 +- .../test/FromModelica/BlockWithBlock1.json | 2 +- .../test/FromModelica/ConditionalBlock.json | 2 +- .../test/FromModelica/CustomPWithLimiter.json | 2 +- .../test/FromModelica/DynamicTextColor.json | 2 +- .../json/test/FromModelica/EmptyEquation.json | 2 +- .../json/test/FromModelica/Enable.json | 2 +- .../test/FromModelica/ExtendsClause_1.json | 2 +- .../test/FromModelica/ExtendsClause_2.json | 2 +- .../test/FromModelica/ExtendsClause_3.json | 2 +- .../MisplacedInfoWithComponent.json | 2 +- .../MisplacedInfoWithEquation.json | 2 +- .../MisplacedInfoWithParameter.json | 2 +- .../json/test/FromModelica/MyController.json | 2 +- .../test/FromModelica/NoClassComment.json | 2 +- .../json/test/FromModelica/NoWithin.json | 2 +- .../json/test/FromModelica/Parameter1.json | 2 +- .../Parameter1WithVendorAnnotation.json | 2 +- .../json/test/FromModelica/Parameter2.json | 2 +- .../json/test/FromModelica/Parameter3.json | 2 +- .../FromModelica/ParameterWithAttributes.json | 2 +- .../ParameterWithDefaultName.json | 2 +- .../test/FromModelica/ParameterWithInfo.json | 2 +- .../ParameterWithVendorAnnotationInInfo.json | 2 +- .../json/test/FromModelica/PointList.json | 2 +- .../test/FromModelica/RemovableInputs.json | 2 +- .../json/test/FromModelica/SubController.json | 2 +- .../test/FromModelica/TestEvaluation_1.json | 2 +- .../test/FromModelica/TestEvaluation_2.json | 2 +- .../test/FromModelica/TestEvaluation_3.json | 2 +- .../test/FromModelica/TestEvaluation_4.json | 2 +- .../FromModelica/VariableModification.json | 2 +- .../test/FromModelica/WithCDLElementary.json | 2 +- .../json/test/FromModelica/package.json | 2 +- 73 files changed, 64888 insertions(+), 792 deletions(-) create mode 100644 test/reference/json/Modelica/Icons.json create mode 100644 test/reference/json/Modelica/SIunits.json create mode 100644 test/reference/json/Modelica/StateGraph.json diff --git a/lib/jsonquery.js b/lib/jsonquery.js index d0bd6b54..a56ef7a4 100644 --- a/lib/jsonquery.js +++ b/lib/jsonquery.js @@ -152,7 +152,7 @@ function elementList (eleLis) { { outer: outer || undefined }, { replaceable: replaceable || undefined }, { constraining_clause: conCla ? this.constrainingClause(conCla) : undefined }, - { class_definition: claDef ? this.classDefinition(claDef) : undefined }, + { class_definition: claDef ? [this.classDefinition(claDef)] : undefined }, { component_clause: comCla ? this.componentClause(comCla) : undefined }, { description: !ut.isEmptyObject(desObj) ? desObj : undefined })) } @@ -1173,7 +1173,14 @@ function simpleExpression (simExp, outStr = false) { logExp = this.logicalExpressionObj(simExp.logical_expression1) } if ((funCal || forLoo || logExp || ifExp) && !outStr) { - if (logExp) { + if (funCal || forLoo || ifExp) { + return Object.assign( + { function_call: funCal }, + { for_loop: forLoo }, + { if_expression: ifExp } + ) + } + if (logExp && !(funCal || forLoo || ifExp)) { const logOr = logExp.logical_or if (logOr.length === 1 && logOr[0].logical_and.length === 1 && logOr[0].logical_and[0].arithmetic_expressions.length === 1 && @@ -1182,12 +1189,6 @@ function simpleExpression (simExp, outStr = false) { } else { return Object.assign({ logical_expression: logExp }) } - } else { - return Object.assign( - { function_call: funCal }, - { for_loop: forLoo }, - { if_expression: ifExp } - ) } } else { return (logExp1 + logExp2 + logExp3) diff --git a/test/reference/json/Buildings/Controls/OBC/ASHRAE/G36/AHUs/SingleZone/VAV/SetPoints/CoolingCoil.json b/test/reference/json/Buildings/Controls/OBC/ASHRAE/G36/AHUs/SingleZone/VAV/SetPoints/CoolingCoil.json index 12e9cde8..5e03d82d 100644 --- a/test/reference/json/Buildings/Controls/OBC/ASHRAE/G36/AHUs/SingleZone/VAV/SetPoints/CoolingCoil.json +++ b/test/reference/json/Buildings/Controls/OBC/ASHRAE/G36/AHUs/SingleZone/VAV/SetPoints/CoolingCoil.json @@ -1768,6 +1768,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/ASHRAE/G36/AHUs/SingleZone/VAV/SetPoints/CoolingCoil.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/ASHRAE/G36/AHUs/SingleZone/VAV/SetPoints/CoolingCoil.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/ASHRAE/G36/AHUs/SingleZone/VAV/SetPoints/CoolingCoil.mo", "checksum": "ad2ef000ee93f6f1c9ec354dafeab300" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Constants.json b/test/reference/json/Buildings/Controls/OBC/CDL/Constants.json index 13142a8f..b5865a43 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Constants.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Constants.json @@ -398,6 +398,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Constants.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Constants.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Constants.mo", "checksum": "d18e385511e96322440f6f561441b22c" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Abs.json b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Abs.json index 7935e4bc..ba6f530f 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Abs.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Abs.json @@ -421,6 +421,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Continuous/Abs.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/Abs.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/Abs.mo", "checksum": "f98a5141c48b61f2ea968f49837b5812" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Add.json b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Add.json index c47f6374..1cbf7d82 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Add.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Add.json @@ -411,6 +411,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Continuous/Add.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/Add.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/Add.mo", "checksum": "8821d8832a6cb126087d4c2f6d4b6306" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Derivative.json b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Derivative.json index 6afae954..5d2abd6e 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Derivative.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Derivative.json @@ -777,6 +777,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Continuous/Derivative.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/Derivative.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/Derivative.mo", "checksum": "09a6e1ca7dae22cfc4202a301eb3b638" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Greater.json b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Greater.json index 677d69ab..37b41417 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Greater.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Greater.json @@ -367,7 +367,24 @@ }, "condition_attribute": { "expression": { - "simple_expression": "not have_hysteresis" + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "not": true, + "arithmetic_expressions": [ + { + "name": "have_hysteresis" + } + ] + } + ] + } + ] + } + } } }, "description": { @@ -400,633 +417,637 @@ } }, { - "class_definition": { - "class_prefixes": "block", - "class_specifier": { - "long_class_specifier": { - "identifier": "GreaterNoHysteresis", - "description_string": "Greater block without hysteresis", - "composition": { - "element_list": [ - { - "component_clause": { - "type_specifier": "Interfaces.RealInput", - "component_list": [ - { - "declaration": { - "identifier": "u1" - }, - "description": { - "description_string": "Input u1", - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "Placement": { - "transformation": { - "extent": [ - { - "x": -140, - "y": -20 - }, - { - "x": -100, - "y": 20 - } - ] + "class_definition": [ + { + "class_prefixes": "block", + "class_specifier": { + "long_class_specifier": { + "identifier": "GreaterNoHysteresis", + "description_string": "Greater block without hysteresis", + "composition": { + "element_list": [ + { + "component_clause": { + "type_specifier": "Interfaces.RealInput", + "component_list": [ + { + "declaration": { + "identifier": "u1" + }, + "description": { + "description_string": "Input u1", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -140, + "y": -20 + }, + { + "x": -100, + "y": 20 + } + ] + } } } } } - } - ] + ] + } } - } - ] - } - }, - { - "component_clause": { - "type_specifier": "Interfaces.RealInput", - "component_list": [ - { - "declaration": { - "identifier": "u2" - }, - "description": { - "description_string": "Input u2", - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "Placement": { - "transformation": { - "extent": [ - { - "x": -140, - "y": -100 - }, - { - "x": -100, - "y": -60 - } - ] + ] + } + }, + { + "component_clause": { + "type_specifier": "Interfaces.RealInput", + "component_list": [ + { + "declaration": { + "identifier": "u2" + }, + "description": { + "description_string": "Input u2", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -140, + "y": -100 + }, + { + "x": -100, + "y": -60 + } + ] + } } } } } - } - ] + ] + } } - } - ] + ] + } + }, + { + "component_clause": { + "type_specifier": "Interfaces.BooleanOutput", + "component_list": [ + { + "declaration": { + "identifier": "y" + }, + "description": { + "description_string": "Output y", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 100, + "y": -20 + }, + { + "x": 140, + "y": 20 + } + ] + } + } + } + } + } + ] + } + } + ] + } } - }, - { - "component_clause": { - "type_specifier": "Interfaces.BooleanOutput", - "component_list": [ - { - "declaration": { - "identifier": "y" - }, - "description": { - "description_string": "Output y", - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "Placement": { - "transformation": { - "extent": [ - { - "x": 100, - "y": -20 - }, + ], + "element_sections": [ + { + "equation_section": { + "equation": [ + { + "assignment_equation": { + "lhs": "y", + "rhs": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ { - "x": 140, - "y": 20 + "arithmetic_expressions": [ + { + "name": "u1" + }, + { + "name": "u2" + } + ], + "relation_operator": ">" } ] } - } + ] } } } - ] + } } - } - ] + ] + } } - } - ], - "element_sections": [ - { - "equation_section": { - "equation": [ - { - "assignment_equation": { - "lhs": "y", - "rhs": { - "simple_expression": { - "logical_expression": { - "logical_or": [ - { - "logical_and": [ - { - "arithmetic_expressions": [ + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Rectangle", + "attribute": { + "extent": [ { - "name": "u1" + "x": -100, + "y": 100 }, { - "name": "u2" + "x": 100, + "y": -100 } ], - "relation_operator": ">" - } - ] - } - ] - } - } - } - } - } - ] - } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Rectangle", - "attribute": { - "extent": [ - { - "x": -100, - "y": 100 + "borderPattern": "BorderPattern.Raised", + "lineColor": { + "r": 0, + "g": 0, + "b": 0 }, - { - "x": 100, - "y": -100 - } - ], - "borderPattern": "BorderPattern.Raised", - "lineColor": { - "r": 0, - "g": 0, - "b": 0 - }, - "fillColor": { - "r": 210, - "g": 210, - "b": 210 - }, - "fillPattern": "FillPattern.Solid", - "lineThickness": 5 - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -150, - "y": 150 + "fillColor": { + "r": 210, + "g": 210, + "b": 210 }, - { - "x": 150, - "y": 110 + "fillPattern": "FillPattern.Solid", + "lineThickness": 5 + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -150, + "y": 150 + }, + { + "x": 150, + "y": 110 + } + ], + "textString": "\"%name\"", + "textColor": { + "r": 0, + "g": 0, + "b": 255 } - ], - "textString": "\"%name\"", - "textColor": { - "r": 0, - "g": 0, - "b": 255 } } - } - ] + ] + } } } - } - ] + ] + } } } } - } - ] + ] + } } } } - } + ] }, { - "class_definition": { - "class_prefixes": "block", - "class_specifier": { - "long_class_specifier": { - "identifier": "GreaterWithHysteresis", - "description_string": "Greater block without hysteresis", - "composition": { - "element_list": [ - { - "component_clause": { - "type_prefix": "parameter", - "type_specifier": "Real", - "component_list": [ - { - "declaration": { - "identifier": "h", - "modification": { - "class_modification": [ + "class_definition": [ + { + "class_prefixes": "block", + "class_specifier": { + "long_class_specifier": { + "identifier": "GreaterWithHysteresis", + "description_string": "Greater block without hysteresis", + "composition": { + "element_list": [ + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Real", + "component_list": [ + { + "declaration": { + "identifier": "h", + "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": "0" + } + } + }, + "description": { + "description_string": "Hysteresis", + "annotation": [ { "element_modification_or_replaceable": { - "final": true, "element_modification": { - "name": "min", + "name": "Evaluate", "modification": { "equal": true, "expression": { - "simple_expression": "0" + "simple_expression": "true" } } } } } - ], - "equal": true, - "expression": { - "simple_expression": "0" - } + ] } - }, - "description": { - "description_string": "Hysteresis", - "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": "pre_y_start", - "modification": { - "equal": true, - "expression": { - "simple_expression": "false" + ] + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "pre_y_start", + "modification": { + "equal": true, + "expression": { + "simple_expression": "false" + } } - } - }, - "description": { - "description_string": "Value of pre(y) at initial time", - "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\"" + }, + "description": { + "description_string": "Value of pre(y) at initial time", + "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_specifier": "Interfaces.RealInput", - "component_list": [ - { - "declaration": { - "identifier": "u1" - }, - "description": { - "description_string": "Input u1", - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "Placement": { - "transformation": { - "extent": [ - { - "x": -140, - "y": -20 - }, - { - "x": -100, - "y": 20 - } ] } } } } - } - ] + ] + } } - } - ] - } - }, - { - "component_clause": { - "type_specifier": "Interfaces.RealInput", - "component_list": [ - { - "declaration": { - "identifier": "u2" - }, - "description": { - "description_string": "Input u2", - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "Placement": { - "transformation": { - "extent": [ - { - "x": -140, - "y": -100 - }, - { - "x": -100, - "y": -60 - } - ] + ] + } + }, + { + "component_clause": { + "type_specifier": "Interfaces.RealInput", + "component_list": [ + { + "declaration": { + "identifier": "u1" + }, + "description": { + "description_string": "Input u1", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -140, + "y": -20 + }, + { + "x": -100, + "y": 20 + } + ] + } } } } } - } - ] + ] + } } - } - ] - } - }, - { - "component_clause": { - "type_specifier": "Interfaces.BooleanOutput", - "component_list": [ - { - "declaration": { - "identifier": "y" - }, - "description": { - "description_string": "Output y", - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "Placement": { - "transformation": { - "extent": [ - { - "x": 100, - "y": -20 - }, - { - "x": 140, - "y": 20 - } - ] + ] + } + }, + { + "component_clause": { + "type_specifier": "Interfaces.RealInput", + "component_list": [ + { + "declaration": { + "identifier": "u2" + }, + "description": { + "description_string": "Input u2", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -140, + "y": -100 + }, + { + "x": -100, + "y": -60 + } + ] + } } } } } - } - ] + ] + } } - } - ] - } - } - ], - "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": [ + ] + } + }, + { + "component_clause": { + "type_specifier": "Interfaces.BooleanOutput", + "component_list": [ + { + "declaration": { + "identifier": "y" + }, + "description": { + "description_string": "Output y", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ { - "arithmetic_expressions": [ - { - "name": "h" - }, - { - "name": "0" - } - ], - "relation_operator": ">=" + "x": 100, + "y": -20 + }, + { + "x": 140, + "y": 20 } ] } - ] + } } } } - }, - "function_arguments": { + ] + } + } + ] + } + } + ], + "element_sections": [ + { + "equation_section": { + "initial": true, + "equation": [ + { + "function_call_equation": { + "function_name": "assert", + "function_call_args": { "function_argument": { "expression": { - "simple_expression": "\"Hysteresis must not be negative\"" + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "h" + }, + { + "name": "0" + } + ], + "relation_operator": ">=" + } + ] + } + ] + } + } + } + }, + "function_arguments": { + "function_argument": { + "expression": { + "simple_expression": "\"Hysteresis must not be negative\"" + } } } } } - } - }, - { - "assignment_equation": { - "lhs": { - "function_call": { - "name": "pre", - "arguments": [ - { - "name": "y" - } - ] + }, + { + "assignment_equation": { + "lhs": { + "function_call": { + "name": "pre", + "arguments": [ + { + "name": "y" + } + ] + } + }, + "rhs": { + "simple_expression": "pre_y_start" } - }, - "rhs": { - "simple_expression": "pre_y_start" } } - } - ] - } - }, - { - "equation_section": { - "equation": [ - { - "assignment_equation": { - "lhs": "y", - "rhs": { - "simple_expression": "([object Object])" + ] + } + }, + { + "equation_section": { + "equation": [ + { + "assignment_equation": { + "lhs": "y", + "rhs": { + "simple_expression": "(not pre(y) and u1 > u2 or pre(y) and u1 > u2 -h)" + } } } - } - ] + ] + } } - } - ], - "annotation": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "name": "Icon", - "modification": { - "class_modification": [ - { - "element_modification_or_replaceable": { - "element_modification": { - "graphics": [ - { - "name": "Rectangle", - "attribute": { - "extent": [ - { - "x": -100, - "y": 100 + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": 100 + }, + { + "x": 100, + "y": -100 + } + ], + "borderPattern": "BorderPattern.Raised", + "lineColor": { + "r": 0, + "g": 0, + "b": 0 }, - { - "x": 100, - "y": -100 - } - ], - "borderPattern": "BorderPattern.Raised", - "lineColor": { - "r": 0, - "g": 0, - "b": 0 - }, - "fillColor": { - "r": 210, - "g": 210, - "b": 210 - }, - "fillPattern": "FillPattern.Solid", - "lineThickness": 5 - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -150, - "y": 150 + "fillColor": { + "r": 210, + "g": 210, + "b": 210 }, - { - "x": 150, - "y": 110 + "fillPattern": "FillPattern.Solid", + "lineThickness": 5 + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -150, + "y": 150 + }, + { + "x": 150, + "y": 110 + } + ], + "textString": "\"%name\"", + "textColor": { + "r": 0, + "g": 0, + "b": 255 } - ], - "textString": "\"%name\"", - "textColor": { - "r": 0, - "g": 0, - "b": 255 } - } - }, - { - "name": "Text", - "attribute": { - "extent": [ - { - "x": -64, - "y": 62 - }, - { - "x": 62, - "y": 92 + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -64, + "y": 62 + }, + { + "x": 62, + "y": 92 + } + ], + "textString": ",textString=", + "textColor": { + "r": 0, + "g": 0, + "b": 0 } - ], - "textString": ",textString=", - "textColor": { - "r": 0, - "g": 0, - "b": 0 } } - } - ] + ] + } } } - } - ] + ] + } } } } - } - ] + ] + } } } } - } + ] } ] }, @@ -1729,6 +1750,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Continuous/Greater.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/Greater.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/Greater.mo", "checksum": "323c778e971495a461755b36e08d76d6" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Hysteresis.json b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Hysteresis.json index 0f36d3e0..34bd3840 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Hysteresis.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Hysteresis.json @@ -214,6 +214,14 @@ "logical_or": [ { "logical_and": [ + { + "not": true, + "arithmetic_expressions": [ + { + "name": "pre(y)" + } + ] + }, { "arithmetic_expressions": [ { @@ -229,6 +237,13 @@ }, { "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "pre(y)" + } + ] + }, { "arithmetic_expressions": [ { @@ -789,6 +804,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Continuous/Hysteresis.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/Hysteresis.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/Hysteresis.mo", "checksum": "e3bb40d8e0a542b39b1310b7a889da12" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/IntegratorWithReset.json b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/IntegratorWithReset.json index 701ae0e4..b4ca9f5e 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/IntegratorWithReset.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/IntegratorWithReset.json @@ -579,6 +579,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Continuous/IntegratorWithReset.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/IntegratorWithReset.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/IntegratorWithReset.mo", "checksum": "f33b07e1ddd42d601725f9eede990735" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Limiter.json b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Limiter.json index 93d4b99c..c2c7c741 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Limiter.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Limiter.json @@ -175,7 +175,7 @@ "name": "homotopy", "arguments": [ { - "name": "actual=smooth(0,noEvent(if [object Object] then uMax else if [object Object] then uMin else u)),simplified=u" + "name": "actual=smooth(0,noEvent(if u > uMax then uMax else if u < uMin then uMin else u)),simplified=u" } ] } @@ -556,6 +556,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Continuous/Limiter.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/Limiter.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/Limiter.mo", "checksum": "a9cbb98cfe8949e478e93ac296c2d928" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Min.json b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Min.json index 7d7f164a..332a43f9 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Min.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Min.json @@ -334,6 +334,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Continuous/Min.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/Min.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/Min.mo", "checksum": "93166341093dbcde4c81c2ee516a295d" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/MultiplyByParameter.json b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/MultiplyByParameter.json index 102bdb03..79a90b84 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/MultiplyByParameter.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/MultiplyByParameter.json @@ -309,6 +309,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Continuous/MultiplyByParameter.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/MultiplyByParameter.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/MultiplyByParameter.mo", "checksum": "acfd19b67d5d6de2a573fc864d420d79" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/PID.json b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/PID.json index 487f0b18..f9dc8d7a 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/PID.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/PID.json @@ -1967,7 +1967,24 @@ }, "condition_attribute": { "expression": { - "simple_expression": "not with_D" + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "not": true, + "arithmetic_expressions": [ + { + "name": "with_D" + } + ] + } + ] + } + ] + } + } } }, "description": { @@ -2467,7 +2484,24 @@ }, "condition_attribute": { "expression": { - "simple_expression": "not with_I" + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "not": true, + "arithmetic_expressions": [ + { + "name": "with_I" + } + ] + } + ] + } + ] + } + } } }, "description": { @@ -4653,113 +4687,25 @@ { "name": "Text", "attribute": { - "extent": [ - { - "x": -32, - "y": -22 - }, - { - "x": 68, - "y": -62 - } - ], - "textString": "\"P\"", - "visible": "([object Object])", - "lineColor": { - "r": 0, - "g": 0, - "b": 0 - }, - "fillColor": { - "r": 175, - "g": 175, - "b": 175 - }, - "fillPattern": "FillPattern.Solid" + "visible": "(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.P)" } }, { "name": "Text", "attribute": { - "extent": [ - { - "x": -26, - "y": -22 - }, - { - "x": 74, - "y": -62 - } - ], - "textString": "\"PI\"", - "visible": "([object Object])", - "lineColor": { - "r": 0, - "g": 0, - "b": 0 - }, - "fillColor": { - "r": 175, - "g": 175, - "b": 175 - }, - "fillPattern": "FillPattern.Solid" + "visible": "(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI)" } }, { "name": "Text", "attribute": { - "extent": [ - { - "x": -16, - "y": -22 - }, - { - "x": 88, - "y": -62 - } - ], - "textString": "\"P D\"", - "visible": "([object Object])", - "lineColor": { - "r": 0, - "g": 0, - "b": 0 - }, - "fillColor": { - "r": 175, - "g": 175, - "b": 175 - }, - "fillPattern": "FillPattern.Solid" + "visible": "(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PD)" } }, { "name": "Text", "attribute": { - "extent": [ - { - "x": -14, - "y": -22 - }, - { - "x": 86, - "y": -62 - } - ], - "textString": "\"PID\"", - "visible": "([object Object])", - "lineColor": { - "r": 0, - "g": 0, - "b": 0 - }, - "fillColor": { - "r": 175, - "g": 175, - "b": 175 - }, - "fillPattern": "FillPattern.Solid" + "visible": "(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID)" } }, { @@ -5130,6 +5076,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Continuous/PID.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/PID.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/PID.mo", "checksum": "9df8c5f870bd4830e859773213e59dcb" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/PIDWithReset.json b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/PIDWithReset.json index a2bfbe4a..60f43ea1 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/PIDWithReset.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/PIDWithReset.json @@ -2122,7 +2122,24 @@ }, "condition_attribute": { "expression": { - "simple_expression": "not with_D" + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "not": true, + "arithmetic_expressions": [ + { + "name": "with_D" + } + ] + } + ] + } + ] + } + } } }, "description": { @@ -2208,7 +2225,24 @@ }, "condition_attribute": { "expression": { - "simple_expression": "not with_I" + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "not": true, + "arithmetic_expressions": [ + { + "name": "with_I" + } + ] + } + ] + } + ] + } + } } }, "description": { @@ -4909,113 +4943,25 @@ { "name": "Text", "attribute": { - "extent": [ - { - "x": -32, - "y": -22 - }, - { - "x": 68, - "y": -62 - } - ], - "textString": "\"P\"", - "visible": "([object Object])", - "lineColor": { - "r": 0, - "g": 0, - "b": 0 - }, - "fillColor": { - "r": 175, - "g": 175, - "b": 175 - }, - "fillPattern": "FillPattern.Solid" + "visible": "(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.P)" } }, { "name": "Text", "attribute": { - "extent": [ - { - "x": -26, - "y": -22 - }, - { - "x": 74, - "y": -62 - } - ], - "textString": "\"PI\"", - "visible": "([object Object])", - "lineColor": { - "r": 0, - "g": 0, - "b": 0 - }, - "fillColor": { - "r": 175, - "g": 175, - "b": 175 - }, - "fillPattern": "FillPattern.Solid" + "visible": "(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI)" } }, { "name": "Text", "attribute": { - "extent": [ - { - "x": -16, - "y": -22 - }, - { - "x": 88, - "y": -62 - } - ], - "textString": "\"P D\"", - "visible": "([object Object])", - "lineColor": { - "r": 0, - "g": 0, - "b": 0 - }, - "fillColor": { - "r": 175, - "g": 175, - "b": 175 - }, - "fillPattern": "FillPattern.Solid" + "visible": "(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PD)" } }, { "name": "Text", "attribute": { - "extent": [ - { - "x": -14, - "y": -22 - }, - { - "x": 86, - "y": -62 - } - ], - "textString": "\"PID\"", - "visible": "([object Object])", - "lineColor": { - "r": 0, - "g": 0, - "b": 0 - }, - "fillColor": { - "r": 175, - "g": 175, - "b": 175 - }, - "fillPattern": "FillPattern.Solid" + "visible": "(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID)" } }, { @@ -5386,6 +5332,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Continuous/PIDWithReset.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/PIDWithReset.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/PIDWithReset.mo", "checksum": "721ce1bb44de4a2a0151873a4208e70a" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Sources/Constant.json b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Sources/Constant.json index 45cee6eb..713ba604 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Sources/Constant.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Sources/Constant.json @@ -387,6 +387,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Continuous/Sources/Constant.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/Sources/Constant.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/Sources/Constant.mo", "checksum": "4c2b726f0e9256ef8a977d61e097dc94" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Subtract.json b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Subtract.json index f67eacc5..1fcd623c 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Subtract.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Subtract.json @@ -416,6 +416,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Continuous/Subtract.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/Subtract.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/Subtract.mo", "checksum": "c58481fe88eb0dd9797c97b6f1ce6a35" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Switch.json b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Switch.json index 5f3ce91a..2bfa1ecc 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Switch.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Continuous/Switch.json @@ -559,6 +559,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Continuous/Switch.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/Switch.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Continuous/Switch.mo", "checksum": "7ec2e7f470f2e2c01cdad0ba590713ed" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Integers/Equal.json b/test/reference/json/Buildings/Controls/OBC/CDL/Integers/Equal.json index c3774065..dd3253c9 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Integers/Equal.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Integers/Equal.json @@ -393,6 +393,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Integers/Equal.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Integers/Equal.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Integers/Equal.mo", "checksum": "6ed015e965db594da3ea7128c250435e" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Integers/Sources/Constant.json b/test/reference/json/Buildings/Controls/OBC/CDL/Integers/Sources/Constant.json index 00076acc..aa8c9df6 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Integers/Sources/Constant.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Integers/Sources/Constant.json @@ -353,6 +353,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Integers/Sources/Constant.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Integers/Sources/Constant.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Integers/Sources/Constant.mo", "checksum": "b6ddb71adcf641c588fbbbac670d26fb" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/BooleanInput.json b/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/BooleanInput.json index e6aea6a2..134448a7 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/BooleanInput.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/BooleanInput.json @@ -233,6 +233,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Interfaces/BooleanInput.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Interfaces/BooleanInput.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Interfaces/BooleanInput.mo", "checksum": "60968b727525188ed9398920679cf1c0" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/BooleanOutput.json b/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/BooleanOutput.json index ec85ab96..54db6ea9 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/BooleanOutput.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/BooleanOutput.json @@ -233,6 +233,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Interfaces/BooleanOutput.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Interfaces/BooleanOutput.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Interfaces/BooleanOutput.mo", "checksum": "c78a9b5c56f73ed93e3f9540de58da55" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/IntegerInput.json b/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/IntegerInput.json index e11983e7..f8912a97 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/IntegerInput.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/IntegerInput.json @@ -233,6 +233,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Interfaces/IntegerInput.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Interfaces/IntegerInput.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Interfaces/IntegerInput.mo", "checksum": "90e89432f618ecfdadb8b0a8f0519eef" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/IntegerOutput.json b/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/IntegerOutput.json index ecb5cabf..59b1bff7 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/IntegerOutput.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/IntegerOutput.json @@ -233,6 +233,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Interfaces/IntegerOutput.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Interfaces/IntegerOutput.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Interfaces/IntegerOutput.mo", "checksum": "ede894db694a80d4be6d85192821bb84" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/RealInput.json b/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/RealInput.json index ed7eec5a..b4a175c7 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/RealInput.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/RealInput.json @@ -233,6 +233,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Interfaces/RealInput.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Interfaces/RealInput.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Interfaces/RealInput.mo", "checksum": "a30132f1d21aa2e2de2510da83ef73e5" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/RealOutput.json b/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/RealOutput.json index 4956828b..956f68b1 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/RealOutput.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/RealOutput.json @@ -229,6 +229,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Interfaces/RealOutput.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Interfaces/RealOutput.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Interfaces/RealOutput.mo", "checksum": "406cab1b75e3627433076597d6aebd71" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/package.json b/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/package.json index 22425437..635cc950 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/package.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Interfaces/package.json @@ -220,6 +220,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Interfaces/package.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Interfaces/package.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Interfaces/package.mo", "checksum": "14a2fca3933efe182b89261ed74bfe93" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Logical/And.json b/test/reference/json/Buildings/Controls/OBC/CDL/Logical/And.json index 426c371f..6ff843c8 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Logical/And.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Logical/And.json @@ -129,7 +129,30 @@ "assignment_equation": { "lhs": "y", "rhs": { - "simple_expression": "u1 and u2" + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "u1" + } + ] + }, + { + "arithmetic_expressions": [ + { + "name": "u2" + } + ] + } + ] + } + ] + } + } } } } @@ -376,6 +399,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Logical/And.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Logical/And.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Logical/And.mo", "checksum": "abb4a9c072fed007645ee9127a8371e1" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Logical/Not.json b/test/reference/json/Buildings/Controls/OBC/CDL/Logical/Not.json index f8483468..3625445d 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Logical/Not.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Logical/Not.json @@ -92,7 +92,24 @@ "assignment_equation": { "lhs": "y", "rhs": { - "simple_expression": "not u" + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "not": true, + "arithmetic_expressions": [ + { + "name": "u" + } + ] + } + ] + } + ] + } + } } } } @@ -292,6 +309,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Logical/Not.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Logical/Not.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Logical/Not.mo", "checksum": "7dbcd7ef6c82dd1ea995367b1c5e1e6a" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Logical/Or.json b/test/reference/json/Buildings/Controls/OBC/CDL/Logical/Or.json index 9ae5c612..2f4ee93e 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Logical/Or.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Logical/Or.json @@ -129,7 +129,34 @@ "assignment_equation": { "lhs": "y", "rhs": { - "simple_expression": "u1 or u2" + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "u1" + } + ] + } + ] + }, + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "u2" + } + ] + } + ] + } + ] + } + } } } } @@ -376,6 +403,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Logical/Or.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Logical/Or.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Logical/Or.mo", "checksum": "670ac5112525c56af6333d275885e875" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Logical/Sources/Constant.json b/test/reference/json/Buildings/Controls/OBC/CDL/Logical/Sources/Constant.json index d25d7d4b..3fba35bc 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Logical/Sources/Constant.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Logical/Sources/Constant.json @@ -376,6 +376,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Logical/Sources/Constant.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Logical/Sources/Constant.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Logical/Sources/Constant.mo", "checksum": "821d92c8b1c3a28aee8ea6c2bf037c7f" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Logical/TrueDelay.json b/test/reference/json/Buildings/Controls/OBC/CDL/Logical/TrueDelay.json index 13f897a2..67829dd8 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Logical/TrueDelay.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Logical/TrueDelay.json @@ -334,7 +334,24 @@ "if_elseif": [ { "condition": { - "simple_expression": "not delayOnInit" + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "not": true, + "arithmetic_expressions": [ + { + "name": "delayOnInit" + } + ] + } + ] + } + ] + } + } }, "then": { "simple_expression": "t_past" @@ -363,7 +380,24 @@ "if_elseif": [ { "condition": { - "simple_expression": "not ([object Object])" + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "not": true, + "arithmetic_expressions": [ + { + "name": "(delayOnInit and delayTime > 0)" + } + ] + } + ] + } + ] + } + } }, "then": { "simple_expression": "u" @@ -381,7 +415,24 @@ }, { "condition": { - "simple_expression": "not u" + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "not": true, + "arithmetic_expressions": [ + { + "name": "u" + } + ] + } + ] + } + ] + } + } }, "then": [ { @@ -730,6 +781,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Logical/TrueDelay.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Logical/TrueDelay.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Logical/TrueDelay.mo", "checksum": "4d4cddbe92a5451b488ada4eac810f92" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Logical/TrueFalseHold.json b/test/reference/json/Buildings/Controls/OBC/CDL/Logical/TrueFalseHold.json index 6c9c325f..46b50390 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Logical/TrueFalseHold.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Logical/TrueFalseHold.json @@ -2513,6 +2513,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Logical/TrueFalseHold.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Logical/TrueFalseHold.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Logical/TrueFalseHold.mo", "checksum": "d3d500d5e52ce2d22a6b926b26115822" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Logical/TrueHoldWithReset.json b/test/reference/json/Buildings/Controls/OBC/CDL/Logical/TrueHoldWithReset.json index cb1acf2b..21fb305c 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Logical/TrueHoldWithReset.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Logical/TrueHoldWithReset.json @@ -1184,6 +1184,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Logical/TrueHoldWithReset.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Logical/TrueHoldWithReset.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Logical/TrueHoldWithReset.mo", "checksum": "3f59d58e38a2801b2f79b0bcb847b674" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Types/SimpleController.json b/test/reference/json/Buildings/Controls/OBC/CDL/Types/SimpleController.json index f6135b44..a0f9e72e 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Types/SimpleController.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Types/SimpleController.json @@ -94,6 +94,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Types/SimpleController.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Types/SimpleController.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Types/SimpleController.mo", "checksum": "364ff20803d823cd1fd1233fcbb7a478" } \ No newline at end of file diff --git a/test/reference/json/Buildings/Controls/OBC/CDL/Utilities/Assert.json b/test/reference/json/Buildings/Controls/OBC/CDL/Utilities/Assert.json index 1ecaeae0..78713d7d 100644 --- a/test/reference/json/Buildings/Controls/OBC/CDL/Utilities/Assert.json +++ b/test/reference/json/Buildings/Controls/OBC/CDL/Utilities/Assert.json @@ -334,6 +334,6 @@ } ], "modelicaFile": "Buildings/Controls/OBC/CDL/Utilities/Assert.mo", - "fullMoFilePath": "/Users/akprakash/Programming/modelica/modelica-buildings/Buildings/Controls/OBC/CDL/Utilities/Assert.mo", + "fullMoFilePath": "/home/jianjunhu/GitFolder/modelica-buildings/Buildings/Controls/OBC/CDL/Utilities/Assert.mo", "checksum": "bcd142f74409ef17549d475796277044" } \ No newline at end of file diff --git a/test/reference/json/Modelica/Icons.json b/test/reference/json/Modelica/Icons.json new file mode 100644 index 00000000..42e7ee52 --- /dev/null +++ b/test/reference/json/Modelica/Icons.json @@ -0,0 +1,7263 @@ +{ + "within": "Modelica", + "class_definition": [ + { + "class_prefixes": "package", + "class_specifier": { + "long_class_specifier": { + "identifier": "Icons", + "description_string": "Library of icons", + "composition": { + "element_list": [ + { + "class_definition": [ + { + "class_prefixes": "partial class", + "class_specifier": { + "long_class_specifier": { + "identifier": "Information", + "description_string": "Icon for general information packages", + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "lineColor": { + "r": 75, + "g": 138, + "b": 73 + }, + "fillColor": { + "r": 75, + "g": 138, + "b": 73 + }, + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -15.833, + "y": 20 + }, + { + "x": -15.833, + "y": 30 + }, + { + "x": 14.167, + "y": 40 + }, + { + "x": 24.167, + "y": 20 + }, + { + "x": 4.167, + "y": -30 + }, + { + "x": 14.167, + "y": -30 + }, + { + "x": 24.167, + "y": -30 + }, + { + "x": 24.167, + "y": -40 + }, + { + "x": -5.833, + "y": -50 + }, + { + "x": -15.833, + "y": -30 + }, + { + "x": 4.167, + "y": 20 + }, + { + "x": -5.833, + "y": 20 + } + ], + "smooth": "Smooth.Bezier", + "origin": { + "x": -4.167, + "y": -15 + }, + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -12.5, + "y": -12.5 + }, + { + "x": 12.5, + "y": 12.5 + } + ], + "origin": { + "x": 7.5, + "y": 56.5 + }, + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "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 icon indicates classes containing only documentation, intended for general description of, e.g., concepts and features of a package.

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "extends_clause": { + "name": "Icons.Package" + } + }, + { + "class_definition": [ + { + "class_prefixes": "partial class", + "class_specifier": { + "long_class_specifier": { + "identifier": "Contact", + "description_string": "Icon for contact information", + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": 70 + }, + { + "x": 100, + "y": -72 + } + ], + "fillColor": { + "r": 235, + "g": 235, + "b": 235 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -100, + "y": -72 + }, + { + "x": 100, + "y": -72 + }, + { + "x": 0, + "y": 20 + }, + { + "x": -100, + "y": -72 + } + ], + "fillColor": { + "r": 215, + "g": 215, + "b": 215 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": 22, + "y": 0 + }, + { + "x": 100, + "y": 70 + }, + { + "x": 100, + "y": -72 + }, + { + "x": 22, + "y": 0 + } + ], + "fillColor": { + "r": 235, + "g": 235, + "b": 235 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -100, + "y": 70 + }, + { + "x": 100, + "y": 70 + }, + { + "x": 0, + "y": -20 + }, + { + "x": -100, + "y": 70 + } + ], + "fillColor": { + "r": 241, + "g": 241, + "b": 241 + }, + "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 icon shall be used for the contact information of the library developers.

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial class", + "class_specifier": { + "long_class_specifier": { + "identifier": "ReleaseNotes", + "description_string": "Icon for release notes in documentation", + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -80, + "y": -100 + }, + { + "x": -80, + "y": 100 + }, + { + "x": 0, + "y": 100 + }, + { + "x": 0, + "y": 20 + }, + { + "x": 80, + "y": 20 + }, + { + "x": 80, + "y": -100 + }, + { + "x": -80, + "y": -100 + } + ], + "fillColor": { + "r": 245, + "g": 245, + "b": 245 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": 0, + "y": 100 + }, + { + "x": 80, + "y": 20 + }, + { + "x": 0, + "y": 20 + }, + { + "x": 0, + "y": 100 + } + ], + "fillColor": { + "r": 215, + "g": 215, + "b": 215 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 2, + "y": -12 + }, + { + "x": 50, + "y": -12 + } + ] + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -56, + "y": 2 + }, + { + "x": -28, + "y": -26 + } + ], + "fillColor": { + "r": 215, + "g": 215, + "b": 215 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 2, + "y": -60 + }, + { + "x": 50, + "y": -60 + } + ] + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -56, + "y": -46 + }, + { + "x": -28, + "y": -74 + } + ], + "fillColor": { + "r": 215, + "g": 215, + "b": 215 + }, + "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 icon indicates release notes and the revision history of a library.

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial class", + "class_specifier": { + "long_class_specifier": { + "identifier": "References", + "description_string": "Icon for external references", + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -100, + "y": -80 + }, + { + "x": -100, + "y": 60 + }, + { + "x": -80, + "y": 54 + }, + { + "x": -80, + "y": 80 + }, + { + "x": -40, + "y": 58 + }, + { + "x": -40, + "y": 100 + }, + { + "x": -10, + "y": 60 + }, + { + "x": 90, + "y": 60 + }, + { + "x": 100, + "y": 40 + }, + { + "x": 100, + "y": -100 + }, + { + "x": -20, + "y": -100 + }, + { + "x": -100, + "y": -80 + } + ], + "lineColor": { + "r": 0, + "g": 0, + "b": 255 + }, + "fillColor": { + "r": 245, + "g": 245, + "b": 245 + }, + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -20, + "y": -100 + }, + { + "x": -10, + "y": -80 + }, + { + "x": 90, + "y": -80 + }, + { + "x": 100, + "y": -100 + }, + { + "x": -20, + "y": -100 + } + ] + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 90, + "y": -80 + }, + { + "x": 90, + "y": 60 + }, + { + "x": 100, + "y": 40 + }, + { + "x": 100, + "y": -100 + } + ] + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 90, + "y": 60 + }, + { + "x": -10, + "y": 60 + }, + { + "x": -10, + "y": -80 + } + ] + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -10, + "y": 60 + }, + { + "x": -40, + "y": 100 + }, + { + "x": -40, + "y": -40 + }, + { + "x": -10, + "y": -80 + }, + { + "x": -10, + "y": 60 + } + ] + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -20, + "y": -88 + }, + { + "x": -80, + "y": -60 + }, + { + "x": -80, + "y": 80 + }, + { + "x": -40, + "y": 58 + } + ] + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -20, + "y": -100 + }, + { + "x": -100, + "y": -80 + }, + { + "x": -100, + "y": 60 + }, + { + "x": -80, + "y": 54 + } + ] + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 10, + "y": 30 + }, + { + "x": 72, + "y": 30 + } + ] + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 10, + "y": -10 + }, + { + "x": 70, + "y": -10 + } + ] + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 10, + "y": -50 + }, + { + "x": 70, + "y": -50 + } + ] + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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 icon indicates a documentation class containing references to external documentation and literature.

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial package", + "class_specifier": { + "long_class_specifier": { + "identifier": "ExamplesPackage", + "description_string": "Icon for packages containing runnable examples", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Package" + } + } + ], + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -58, + "y": 46 + }, + { + "x": 42, + "y": -14 + }, + { + "x": -58, + "y": -74 + }, + { + "x": -58, + "y": 46 + } + ], + "origin": { + "x": 8, + "y": 14 + }, + "lineColor": { + "r": 78, + "g": 138, + "b": 73 + }, + "fillColor": { + "r": 78, + "g": 138, + "b": 73 + }, + "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 icon indicates a package that contains executable examples.

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial model", + "class_specifier": { + "long_class_specifier": { + "identifier": "Example", + "description_string": "Icon for runnable examples", + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "lineColor": { + "r": 75, + "g": 138, + "b": 73 + }, + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -36, + "y": 60 + }, + { + "x": 64, + "y": 0 + }, + { + "x": -36, + "y": -60 + }, + { + "x": -36, + "y": 60 + } + ], + "lineColor": { + "r": 0, + "g": 0, + "b": 255 + }, + "fillColor": { + "r": 75, + "g": 138, + "b": 73 + }, + "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 icon indicates an example. The play button suggests that the example can be executed.

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial package", + "class_specifier": { + "long_class_specifier": { + "identifier": "Package", + "description_string": "Icon for standard packages", + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "radius": 25, + "lineColor": { + "r": 200, + "g": 200, + "b": 200 + }, + "fillColor": { + "r": 248, + "g": 248, + "b": 248 + }, + "fillPattern": "FillPattern.HorizontalCylinder" + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "radius": 25, + "lineColor": { + "r": 128, + "g": 128, + "b": 128 + } + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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

Standard package icon.

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial package", + "class_specifier": { + "long_class_specifier": { + "identifier": "BasesPackage", + "description_string": "Icon for packages containing base classes", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Package" + } + } + ], + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -30, + "y": -30 + }, + { + "x": 30, + "y": 30 + } + ], + "lineColor": { + "r": 128, + "g": 128, + "b": 128 + }, + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "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 icon shall be used for a package/library that contains base models and classes, respectively.

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial package", + "class_specifier": { + "long_class_specifier": { + "identifier": "VariantsPackage", + "description_string": "Icon for package containing variants", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Package" + } + } + ], + "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": "Ellipse", + "attribute": { + "extent": [ + { + "x": -80, + "y": -80 + }, + { + "x": -20, + "y": -20 + } + ], + "origin": { + "x": 10, + "y": 10 + }, + "fillColor": { + "r": 76, + "g": 76, + "b": 76 + }, + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": 0, + "y": -80 + }, + { + "x": 60, + "y": -20 + } + ], + "origin": { + "x": 10, + "y": 10 + }, + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": 0, + "y": 0 + }, + { + "x": 60, + "y": 60 + } + ], + "origin": { + "x": 10, + "y": 10 + }, + "fillColor": { + "r": 128, + "g": 128, + "b": 128 + }, + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -80, + "y": 0 + }, + { + "x": -20, + "y": 60 + } + ], + "origin": { + "x": 10, + "y": 10 + }, + "lineColor": { + "r": 128, + "g": 128, + "b": 128 + }, + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "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 icon shall be used for a package/library that contains several variants of one component.

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial package", + "class_specifier": { + "long_class_specifier": { + "identifier": "InterfacesPackage", + "description_string": "Icon for packages containing interfaces", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Package" + } + } + ], + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -10, + "y": 70 + }, + { + "x": 10, + "y": 70 + }, + { + "x": 40, + "y": 20 + }, + { + "x": 80, + "y": 20 + }, + { + "x": 80, + "y": -20 + }, + { + "x": 40, + "y": -20 + }, + { + "x": 10, + "y": -70 + }, + { + "x": -10, + "y": -70 + } + ], + "origin": { + "x": 20, + "y": 0 + }, + "lineColor": { + "r": 64, + "g": 64, + "b": 64 + }, + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -100, + "y": 20 + }, + { + "x": -60, + "y": 20 + }, + { + "x": -30, + "y": 70 + }, + { + "x": -10, + "y": 70 + }, + { + "x": -10, + "y": -70 + }, + { + "x": -30, + "y": -70 + }, + { + "x": -60, + "y": -20 + }, + { + "x": -100, + "y": -20 + } + ], + "fillColor": { + "r": 102, + "g": 102, + "b": 102 + }, + "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 icon indicates packages containing interfaces.

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial package", + "class_specifier": { + "long_class_specifier": { + "identifier": "SourcesPackage", + "description_string": "Icon for packages containing sources", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Package" + } + } + ], + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -23.333, + "y": 30 + }, + { + "x": 46.667, + "y": 0 + }, + { + "x": -23.333, + "y": -30 + } + ], + "origin": { + "x": 23.3333, + "y": 0 + }, + "fillColor": { + "r": 128, + "g": 128, + "b": 128 + }, + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -70, + "y": -4.5 + }, + { + "x": 0, + "y": 4.5 + } + ], + "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 icon indicates a package which contains sources.

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial package", + "class_specifier": { + "long_class_specifier": { + "identifier": "SensorsPackage", + "description_string": "Icon for packages containing sensors", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Package" + } + } + ], + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -90, + "y": -90 + }, + { + "x": 90, + "y": 90 + } + ], + "startAngle": 20, + "endAngle": 160, + "origin": { + "x": 0, + "y": -30 + }, + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + } + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -20, + "y": -20 + }, + { + "x": 20, + "y": 20 + } + ], + "origin": { + "x": 0, + "y": -30 + }, + "fillColor": { + "r": 128, + "g": 128, + "b": 128 + }, + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 0, + "y": 60 + }, + { + "x": 0, + "y": 90 + } + ] + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -10, + "y": -10 + }, + { + "x": 10, + "y": 10 + } + ], + "origin": { + "x": 0, + "y": -30 + }, + "fillColor": { + "r": 64, + "g": 64, + "b": 64 + }, + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -7, + "y": 0 + }, + { + "x": -3, + "y": 85 + }, + { + "x": 0, + "y": 90 + }, + { + "x": 3, + "y": 85 + }, + { + "x": 7, + "y": 0 + } + ], + "origin": { + "x": 0, + "y": -30 + }, + "rotation": -35, + "fillColor": { + "r": 64, + "g": 64, + "b": 64 + }, + "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 icon indicates a package containing sensors.

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial package", + "class_specifier": { + "long_class_specifier": { + "identifier": "UtilitiesPackage", + "description_string": "Icon for utility packages", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Package" + } + } + ], + "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 + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -15, + "y": 93.333 + }, + { + "x": -15, + "y": 68.333 + }, + { + "x": 0, + "y": 58.333 + }, + { + "x": 15, + "y": 68.333 + }, + { + "x": 15, + "y": 93.333 + }, + { + "x": 20, + "y": 93.333 + }, + { + "x": 25, + "y": 83.333 + }, + { + "x": 25, + "y": 58.333 + }, + { + "x": 10, + "y": 43.333 + }, + { + "x": 10, + "y": -41.667 + }, + { + "x": 25, + "y": -56.667 + }, + { + "x": 25, + "y": -76.667 + }, + { + "x": 10, + "y": -91.667 + }, + { + "x": 0, + "y": -91.667 + }, + { + "x": 0, + "y": -81.667 + }, + { + "x": 5, + "y": -81.667 + }, + { + "x": 15, + "y": -71.667 + }, + { + "x": 15, + "y": -61.667 + }, + { + "x": 5, + "y": -51.667 + }, + { + "x": -5, + "y": -51.667 + }, + { + "x": -15, + "y": -61.667 + }, + { + "x": -15, + "y": -71.667 + }, + { + "x": -5, + "y": -81.667 + }, + { + "x": 0, + "y": -81.667 + }, + { + "x": 0, + "y": -91.667 + }, + { + "x": -10, + "y": -91.667 + }, + { + "x": -25, + "y": -76.667 + }, + { + "x": -25, + "y": -56.667 + }, + { + "x": -10, + "y": -41.667 + }, + { + "x": -10, + "y": 43.333 + }, + { + "x": -25, + "y": 58.333 + }, + { + "x": -25, + "y": 83.333 + }, + { + "x": -20, + "y": 93.333 + } + ], + "origin": { + "x": 1.3835, + "y": -4.1418 + }, + "rotation": 45, + "fillColor": { + "r": 64, + "g": 64, + "b": 64 + }, + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -15, + "y": 87.273 + }, + { + "x": 15, + "y": 87.273 + }, + { + "x": 20, + "y": 82.273 + }, + { + "x": 20, + "y": 27.273 + }, + { + "x": 10, + "y": 17.273 + }, + { + "x": 10, + "y": 7.273 + }, + { + "x": 20, + "y": 2.273 + }, + { + "x": 20, + "y": -2.727 + }, + { + "x": 5, + "y": -2.727 + }, + { + "x": 5, + "y": -77.727 + }, + { + "x": 10, + "y": -87.727 + }, + { + "x": 5, + "y": -112.727 + }, + { + "x": -5, + "y": -112.727 + }, + { + "x": -10, + "y": -87.727 + }, + { + "x": -5, + "y": -77.727 + }, + { + "x": -5, + "y": -2.727 + }, + { + "x": -20, + "y": -2.727 + }, + { + "x": -20, + "y": 2.273 + }, + { + "x": -10, + "y": 7.273 + }, + { + "x": -10, + "y": 17.273 + }, + { + "x": -20, + "y": 27.273 + }, + { + "x": -20, + "y": 82.273 + } + ], + "origin": { + "x": 10.1018, + "y": 5.218 + }, + "rotation": -45, + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "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 icon indicates a package containing utility classes.

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial package", + "class_specifier": { + "long_class_specifier": { + "identifier": "TypesPackage", + "description_string": "Icon for packages containing type definitions", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Package" + } + } + ], + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": 12.167, + "y": 65 + }, + { + "x": 14.167, + "y": 93 + }, + { + "x": 36.167, + "y": 89 + }, + { + "x": 24.167, + "y": 20 + }, + { + "x": 4.167, + "y": -30 + }, + { + "x": 14.167, + "y": -30 + }, + { + "x": 24.167, + "y": -30 + }, + { + "x": 24.167, + "y": -40 + }, + { + "x": -5.833, + "y": -50 + }, + { + "x": -15.833, + "y": -30 + }, + { + "x": 4.167, + "y": 20 + }, + { + "x": 12.167, + "y": 65 + } + ], + "smooth": "Smooth.Bezier", + "origin": { + "x": -12.167, + "y": -23 + }, + "fillColor": { + "r": 128, + "g": 128, + "b": 128 + }, + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": 49.2597, + "y": 22.3327 + }, + { + "x": 31.2597, + "y": 24.3327 + }, + { + "x": 7.2597, + "y": 18.3327 + }, + { + "x": -26.7403, + "y": 10.3327 + }, + { + "x": -46.7403, + "y": 14.3327 + }, + { + "x": -48.7403, + "y": 6.3327 + }, + { + "x": -32.7403, + "y": 0.3327 + }, + { + "x": -6.7403, + "y": 4.3327 + }, + { + "x": 33.2597, + "y": 14.3327 + }, + { + "x": 49.2597, + "y": 14.3327 + }, + { + "x": 49.2597, + "y": 22.3327 + } + ], + "smooth": "Smooth.Bezier", + "origin": { + "x": 2.7403, + "y": 1.6673 + }, + "fillColor": { + "r": 128, + "g": 128, + "b": 128 + }, + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Solid" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial package", + "class_specifier": { + "long_class_specifier": { + "identifier": "FunctionsPackage", + "description_string": "Icon for packages containing functions", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Package" + } + } + ], + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -90, + "y": -90 + }, + { + "x": 90, + "y": 90 + } + ], + "textString": "\"f\"", + "lineColor": { + "r": 128, + "g": 128, + "b": 128 + } + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial package", + "class_specifier": { + "long_class_specifier": { + "identifier": "IconsPackage", + "description_string": "Icon for packages containing icons", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Package" + } + } + ], + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -15.833, + "y": 20 + }, + { + "x": -15.833, + "y": 30 + }, + { + "x": 14.167, + "y": 40 + }, + { + "x": 24.167, + "y": 20 + }, + { + "x": 4.167, + "y": -30 + }, + { + "x": 14.167, + "y": -30 + }, + { + "x": 24.167, + "y": -30 + }, + { + "x": 24.167, + "y": -40 + }, + { + "x": -5.833, + "y": -50 + }, + { + "x": -15.833, + "y": -30 + }, + { + "x": 4.167, + "y": 20 + }, + { + "x": -5.833, + "y": 20 + } + ], + "smooth": "Smooth.Bezier", + "origin": { + "x": -8.167, + "y": -17 + }, + "fillColor": { + "r": 128, + "g": 128, + "b": 128 + }, + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -12.5, + "y": -12.5 + }, + { + "x": 12.5, + "y": 12.5 + } + ], + "origin": { + "x": -0.5, + "y": 56.5 + }, + "fillColor": { + "r": 128, + "g": 128, + "b": 128 + }, + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Solid" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial package", + "class_specifier": { + "long_class_specifier": { + "identifier": "InternalPackage", + "description_string": "Icon for an internal package (indicating that the package should not be directly utilized by user)", + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "radius": 25, + "lineColor": { + "r": 215, + "g": 215, + "b": 215 + }, + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.HorizontalCylinder" + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "radius": 25, + "lineColor": { + "r": 215, + "g": 215, + "b": 215 + } + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -80, + "y": 80 + }, + { + "x": 80, + "y": -80 + } + ], + "lineColor": { + "r": 215, + "g": 215, + "b": 215 + }, + "fillColor": { + "r": 215, + "g": 215, + "b": 215 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -55, + "y": 55 + }, + { + "x": 55, + "y": -55 + } + ], + "lineColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -60, + "y": 14 + }, + { + "x": 60, + "y": -14 + } + ], + "rotation": 45, + "lineColor": { + "r": 215, + "g": 215, + "b": 215 + }, + "fillColor": { + "r": 215, + "g": 215, + "b": 215 + }, + "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\n

\nThis icon shall be used for a package that contains internal classes not to be\ndirectly utilized by a user.\n

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial package", + "class_specifier": { + "long_class_specifier": { + "identifier": "MaterialPropertiesPackage", + "description_string": "Icon for package containing property classes", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Package" + } + } + ], + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -60, + "y": -60 + }, + { + "x": 60, + "y": 60 + } + ], + "lineColor": { + "r": 102, + "g": 102, + "b": 102 + }, + "fillColor": { + "r": 204, + "g": 204, + "b": 204 + }, + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Sphere" + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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 icon indicates a package that contains properties

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial package", + "class_specifier": { + "long_class_specifier": { + "identifier": "RecordsPackage", + "description_string": "Icon for package containing records", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Package" + } + } + ], + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -80, + "y": -60 + }, + { + "x": 80, + "y": 60 + } + ], + "radius": 25, + "origin": { + "x": 0, + "y": -20 + }, + "lineColor": { + "r": 64, + "g": 64, + "b": 64 + }, + "fillColor": { + "r": 255, + "g": 215, + "b": 136 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -80, + "y": 0 + }, + { + "x": 80, + "y": 0 + } + ], + "color": { + "r": 64, + "g": 64, + "b": 64 + } + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -80, + "y": 0 + }, + { + "x": 80, + "y": 0 + } + ], + "color": { + "r": 64, + "g": 64, + "b": 64 + } + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 0, + "y": 45 + }, + { + "x": 0, + "y": -75 + } + ], + "color": { + "r": 64, + "g": 64, + "b": 64 + } + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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 icon indicates a package that contains records

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial class", + "class_specifier": { + "long_class_specifier": { + "identifier": "MaterialProperty", + "description_string": "Icon for property classes", + "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": "Ellipse", + "attribute": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "lineColor": { + "r": 102, + "g": 102, + "b": 102 + }, + "fillColor": { + "r": 204, + "g": 204, + "b": 204 + }, + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Sphere" + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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 icon indicates a property class.

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial class", + "class_specifier": { + "long_class_specifier": { + "identifier": "RotationalSensor", + "description_string": "Icon representing a round measurement device", + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -70, + "y": -70 + }, + { + "x": 70, + "y": 70 + } + ], + "fillColor": { + "r": 245, + "g": 245, + "b": 245 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 0, + "y": 70 + }, + { + "x": 0, + "y": 40 + } + ] + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 22.9, + "y": 32.8 + }, + { + "x": 40.2, + "y": 57.3 + } + ] + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -22.9, + "y": 32.8 + }, + { + "x": -40.2, + "y": 57.3 + } + ] + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 37.6, + "y": 13.7 + }, + { + "x": 65.8, + "y": 23.9 + } + ] + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -37.6, + "y": 13.7 + }, + { + "x": -65.8, + "y": 23.9 + } + ] + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -12, + "y": -12 + }, + { + "x": 12, + "y": 12 + } + ], + "lineColor": { + "r": 64, + "g": 64, + "b": 64 + }, + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + } + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -5, + "y": 0 + }, + { + "x": -2, + "y": 60 + }, + { + "x": 0, + "y": 65 + }, + { + "x": 2, + "y": 60 + }, + { + "x": 5, + "y": 0 + } + ], + "rotation": -17.5, + "fillColor": { + "r": 64, + "g": 64, + "b": 64 + }, + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -7, + "y": -7 + }, + { + "x": 7, + "y": 7 + } + ], + "fillColor": { + "r": 64, + "g": 64, + "b": 64 + }, + "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

\nThis icon is designed for a rotational sensor model.\n

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial class", + "class_specifier": { + "long_class_specifier": { + "identifier": "TranslationalSensor", + "description_string": "Icon representing a linear measurement device", + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -70, + "y": -60 + }, + { + "x": 70, + "y": 20 + } + ], + "fillColor": { + "r": 245, + "g": 245, + "b": 245 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": 0, + "y": -40 + }, + { + "x": -10, + "y": -16 + }, + { + "x": 10, + "y": -16 + }, + { + "x": 0, + "y": -40 + } + ], + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 0, + "y": 0 + }, + { + "x": 0, + "y": -16 + } + ] + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -70, + "y": 0 + }, + { + "x": 0, + "y": 0 + } + ] + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -50, + "y": -40 + }, + { + "x": -50, + "y": -60 + } + ] + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -30, + "y": -40 + }, + { + "x": -30, + "y": -60 + } + ] + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -10, + "y": -40 + }, + { + "x": -10, + "y": -60 + } + ] + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 10, + "y": -40 + }, + { + "x": 10, + "y": -60 + } + ] + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 30, + "y": -40 + }, + { + "x": 30, + "y": -60 + } + ] + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 50, + "y": -40 + }, + { + "x": 50, + "y": -60 + } + ] + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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 icon is designed for a translational sensor model.\n

\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial function", + "class_specifier": { + "long_class_specifier": { + "identifier": "Function", + "description_string": "Icon for 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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -150, + "y": 105 + }, + { + "x": 150, + "y": 145 + } + ], + "textString": "\"%name\"", + "lineColor": { + "r": 0, + "g": 0, + "b": 255 + } + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "lineColor": { + "r": 108, + "g": 88, + "b": 49 + }, + "fillColor": { + "r": 255, + "g": 215, + "b": 136 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -90, + "y": -90 + }, + { + "x": 90, + "y": 90 + } + ], + "textString": "\"f\"", + "lineColor": { + "r": 108, + "g": 88, + "b": 49 + } + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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 icon indicates Modelica functions.

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial record", + "class_specifier": { + "long_class_specifier": { + "identifier": "Record", + "description_string": "Icon for records", + "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": "Text", + "attribute": { + "extent": [ + { + "x": -150, + "y": 60 + }, + { + "x": 150, + "y": 100 + } + ], + "textString": "\"%name\"", + "lineColor": { + "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": 255, + "g": 215, + "b": 136 + }, + "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 + } + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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 icon is indicates a record.\n

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "operator record", + "class_specifier": { + "short_class_specifier": { + "identifier": "TypeComplex", + "value": { + "name": "Complex", + "description": { + "description_string": "Obsolete class kept only for backwards compatibility (use Complex instead)", + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "radius": 25, + "lineColor": { + "r": 160, + "g": 160, + "b": 164 + }, + "fillColor": { + "r": 160, + "g": 160, + "b": 164 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -90, + "y": -50 + }, + { + "x": 90, + "y": 50 + } + ], + "textString": "\"C\"", + "lineColor": { + "r": 255, + "g": 255, + "b": 255 + } + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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

\nObsolete class, only kept for backwards compatibility.\nThe type classes TypeReal, TypeInteger etc. have been introduced to associate an icon to the\nbuilt-in base classes Real, Integer etc. Instead for Complex, an icon is already introduced in its\ndefinition (which is not possible for the built-in classes). Therefore, TypeComplex is just an alias\nto Complex and is therefore superfluous.\n

\n\"" + } + } + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "obsolete", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Obsolete operator record - use Complex instead\"" + } + } + } + } + } + ] + } + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "type", + "class_specifier": { + "long_class_specifier": { + "identifier": "TypeReal", + "description_string": "Icon for Real types", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Real" + } + } + ], + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "radius": 25, + "lineColor": { + "r": 160, + "g": 160, + "b": 164 + }, + "fillColor": { + "r": 160, + "g": 160, + "b": 164 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -90, + "y": -50 + }, + { + "x": 90, + "y": 50 + } + ], + "textString": "\"R\"", + "lineColor": { + "r": 255, + "g": 255, + "b": 255 + } + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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 icon is designed for a Real type.\n

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "type", + "class_specifier": { + "long_class_specifier": { + "identifier": "TypeInteger", + "description_string": "Icon for Integer types", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Integer" + } + } + ], + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "radius": 25, + "lineColor": { + "r": 160, + "g": 160, + "b": 164 + }, + "fillColor": { + "r": 160, + "g": 160, + "b": 164 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -90, + "y": -50 + }, + { + "x": 90, + "y": 50 + } + ], + "textString": "\"I\"", + "lineColor": { + "r": 255, + "g": 255, + "b": 255 + } + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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 icon is designed for an Integer type.\n

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "type", + "class_specifier": { + "long_class_specifier": { + "identifier": "TypeBoolean", + "description_string": "Icon for Boolean types", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Boolean" + } + } + ], + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "radius": 25, + "lineColor": { + "r": 160, + "g": 160, + "b": 164 + }, + "fillColor": { + "r": 160, + "g": 160, + "b": 164 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -90, + "y": -50 + }, + { + "x": 90, + "y": 50 + } + ], + "textString": "\"B\"", + "lineColor": { + "r": 255, + "g": 255, + "b": 255 + } + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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 icon is designed for a Boolean type.\n

\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "type", + "class_specifier": { + "long_class_specifier": { + "identifier": "TypeString", + "description_string": "Icon for String types", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "String" + } + } + ], + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "radius": 25, + "lineColor": { + "r": 160, + "g": 160, + "b": 164 + }, + "fillColor": { + "r": 160, + "g": 160, + "b": 164 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -90, + "y": -50 + }, + { + "x": 90, + "y": 50 + } + ], + "textString": "\"S\"", + "lineColor": { + "r": 255, + "g": 255, + "b": 255 + } + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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 icon is designed for a String type.\n

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "expandable connector", + "class_specifier": { + "long_class_specifier": { + "identifier": "SignalBus", + "description_string": "Icon for signal bus", + "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": "false", + "initialScale": 0.2 + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -20, + "y": -2 + }, + { + "x": 20, + "y": 2 + } + ], + "lineColor": { + "r": 255, + "g": 204, + "b": 51 + }, + "lineThickness": 0.5 + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -80, + "y": 50 + }, + { + "x": 80, + "y": 50 + }, + { + "x": 100, + "y": 30 + }, + { + "x": 80, + "y": -40 + }, + { + "x": 60, + "y": -50 + }, + { + "x": -60, + "y": -50 + }, + { + "x": -80, + "y": -40 + }, + { + "x": -100, + "y": 30 + } + ], + "smooth": "Smooth.Bezier", + "fillColor": { + "r": 255, + "g": 215, + "b": 136 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -65, + "y": 15 + }, + { + "x": -55, + "y": 25 + } + ], + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -5, + "y": 15 + }, + { + "x": 5, + "y": 25 + } + ], + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": 55, + "y": 15 + }, + { + "x": 65, + "y": 25 + } + ], + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -35, + "y": -25 + }, + { + "x": -25, + "y": -15 + } + ], + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": 25, + "y": -25 + }, + { + "x": 35, + "y": -15 + } + ], + "fillPattern": "FillPattern.Solid" + } + } + ] + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Diagram", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "false", + "initialScale": 0.2 + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -40, + "y": 25 + }, + { + "x": 40, + "y": 25 + }, + { + "x": 50, + "y": 15 + }, + { + "x": 40, + "y": -20 + }, + { + "x": 30, + "y": -25 + }, + { + "x": -30, + "y": -25 + }, + { + "x": -40, + "y": -20 + }, + { + "x": -50, + "y": 15 + } + ], + "smooth": "Smooth.Bezier", + "fillColor": { + "r": 255, + "g": 204, + "b": 51 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -32.5, + "y": 7.5 + }, + { + "x": -27.5, + "y": 12.5 + } + ], + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -2.5, + "y": 12.5 + }, + { + "x": 2.5, + "y": 7.5 + } + ], + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": 27.5, + "y": 12.5 + }, + { + "x": 32.5, + "y": 7.5 + } + ], + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -17.5, + "y": -7.5 + }, + { + "x": -12.5, + "y": -12.5 + } + ], + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": 12.5, + "y": -7.5 + }, + { + "x": 17.5, + "y": -12.5 + } + ], + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -150, + "y": 70 + }, + { + "x": 150, + "y": 40 + } + ], + "textString": "\"%name\"" + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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": "\"\nThis icon is designed for a signal bus connector.\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "expandable connector", + "class_specifier": { + "long_class_specifier": { + "identifier": "SignalSubBus", + "description_string": "Icon for signal sub-bus", + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -16, + "y": 2 + }, + { + "x": 16, + "y": 2 + } + ], + "color": { + "r": 255, + "g": 204, + "b": 51 + }, + "thickness": 0.5 + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -10, + "y": 0 + }, + { + "x": 8, + "y": 8 + } + ], + "lineColor": { + "r": 255, + "g": 204, + "b": 51 + }, + "lineThickness": 0.5 + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -80, + "y": 50 + }, + { + "x": 80, + "y": 50 + }, + { + "x": 100, + "y": 30 + }, + { + "x": 80, + "y": -40 + }, + { + "x": 60, + "y": -50 + }, + { + "x": -60, + "y": -50 + }, + { + "x": -80, + "y": -40 + }, + { + "x": -100, + "y": 30 + } + ], + "smooth": "Smooth.Bezier", + "fillColor": { + "r": 255, + "g": 215, + "b": 136 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -55, + "y": 15 + }, + { + "x": -45, + "y": 25 + } + ], + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": 45, + "y": 15 + }, + { + "x": 55, + "y": 25 + } + ], + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -5, + "y": -25 + }, + { + "x": 5, + "y": -15 + } + ], + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -20, + "y": 0 + }, + { + "x": 20, + "y": 4 + } + ], + "lineColor": { + "r": 255, + "g": 215, + "b": 136 + }, + "lineThickness": 0.5 + } + } + ] + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Diagram", + "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": "Polygon", + "attribute": { + "points": [ + { + "x": -40, + "y": 25 + }, + { + "x": 40, + "y": 25 + }, + { + "x": 50, + "y": 15 + }, + { + "x": 40, + "y": -20 + }, + { + "x": 30, + "y": -25 + }, + { + "x": -30, + "y": -25 + }, + { + "x": -40, + "y": -20 + }, + { + "x": -50, + "y": 15 + } + ], + "smooth": "Smooth.Bezier", + "fillColor": { + "r": 255, + "g": 204, + "b": 51 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -22.5, + "y": 7.5 + }, + { + "x": -17.5, + "y": 12.5 + } + ], + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": 17.5, + "y": 12.5 + }, + { + "x": 22.5, + "y": 7.5 + } + ], + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -2.5, + "y": -7.5 + }, + { + "x": 2.5, + "y": -12.5 + } + ], + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -150, + "y": 70 + }, + { + "x": 150, + "y": 40 + } + ], + "textString": "\"%name\"" + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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 icon is designed for a sub-bus in a signal connector.\n

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial class", + "class_specifier": { + "long_class_specifier": { + "identifier": "UnderConstruction", + "description_string": "Icon for classes that are still under construction", + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -100, + "y": -100 + }, + { + "x": 0, + "y": 80 + }, + { + "x": 100, + "y": -100 + }, + { + "x": -100, + "y": -100 + } + ], + "lineColor": { + "r": 255, + "g": 0, + "b": 0 + }, + "lineThickness": 0.5 + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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

Library developers can use this icon to indicate that the respective model is under construction.

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial class", + "class_specifier": { + "long_class_specifier": { + "identifier": "ObsoleteModel", + "description_string": "Icon for classes that are obsolete and will be removed in later versions", + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -102, + "y": 102 + }, + { + "x": 102, + "y": -102 + } + ], + "lineColor": { + "r": 255, + "g": 0, + "b": 0 + }, + "pattern": "LinePattern.Dash", + "lineThickness": 0.5 + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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 partial class is intended to provide a default icon\nfor an obsolete model that will be removed from the\ncorresponding library in a future release.\n

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial package", + "class_specifier": { + "long_class_specifier": { + "identifier": "Library", + "description_string": "This icon will be removed in future Modelica versions, use Package instead", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.ObsoleteModel" + } + } + ], + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "radius": 25, + "lineColor": { + "r": 200, + "g": 200, + "b": 200 + }, + "fillColor": { + "r": 248, + "g": 248, + "b": 248 + }, + "fillPattern": "FillPattern.HorizontalCylinder" + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "radius": 25, + "lineColor": { + "r": 128, + "g": 128, + "b": 128 + } + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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 icon of a package will be removed in future versions of the library.

\n
Note
\n

This icon will be removed in future versions of the Modelica Standard Library. Instead the icon Package shall be used.

\n\"" + } + } + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "obsolete", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Obsolete package - use Modelica.Icons.Package instead\"" + } + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial package", + "class_specifier": { + "long_class_specifier": { + "identifier": "Library2", + "description_string": "This icon will be removed in future Modelica versions, use Package instead", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.ObsoleteModel" + } + } + ], + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "radius": 25, + "lineColor": { + "r": 200, + "g": 200, + "b": 200 + }, + "fillColor": { + "r": 248, + "g": 248, + "b": 248 + }, + "fillPattern": "FillPattern.HorizontalCylinder" + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "radius": 25, + "lineColor": { + "r": 128, + "g": 128, + "b": 128 + } + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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 icon of a package will be removed in future versions of the library.

\n
Note
\n

This icon will be removed in future versions of the Modelica Standard Library. Instead the icon Package shall be used.

\"" + } + } + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "obsolete", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Obsolete package - use Modelica.Icons.Package instead\"" + } + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial class", + "class_specifier": { + "long_class_specifier": { + "identifier": "GearIcon", + "description_string": "This icon will be removed in future Modelica versions", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.ObsoleteModel" + } + } + ], + "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": -90, + "y": -10 + }, + { + "x": -60, + "y": 10 + } + ], + "lineColor": { + "r": 64, + "g": 64, + "b": 64 + }, + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.HorizontalCylinder" + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -60, + "y": 10 + }, + { + "x": -60, + "y": 20 + }, + { + "x": -40, + "y": 40 + }, + { + "x": -40, + "y": -40 + }, + { + "x": -60, + "y": -20 + }, + { + "x": -60, + "y": 10 + } + ], + "fillColor": { + "r": 192, + "g": 192, + "b": 192 + }, + "fillPattern": "FillPattern.HorizontalCylinder" + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -40, + "y": -60 + }, + { + "x": 40, + "y": 60 + } + ], + "radius": 10, + "lineColor": { + "r": 64, + "g": 64, + "b": 64 + }, + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.HorizontalCylinder" + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": 60, + "y": 20 + }, + { + "x": 40, + "y": 40 + }, + { + "x": 40, + "y": -40 + }, + { + "x": 60, + "y": -20 + }, + { + "x": 60, + "y": 20 + } + ], + "fillColor": { + "r": 192, + "g": 192, + "b": 192 + }, + "fillPattern": "FillPattern.HorizontalCylinder" + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": 60, + "y": -10 + }, + { + "x": 90, + "y": 10 + } + ], + "lineColor": { + "r": 64, + "g": 64, + "b": 64 + }, + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.HorizontalCylinder" + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -60, + "y": -90 + }, + { + "x": -50, + "y": -90 + }, + { + "x": -20, + "y": -30 + }, + { + "x": 20, + "y": -30 + }, + { + "x": 48, + "y": -90 + }, + { + "x": 60, + "y": -90 + }, + { + "x": 60, + "y": -100 + }, + { + "x": -60, + "y": -100 + }, + { + "x": -60, + "y": -90 + } + ], + "fillColor": { + "r": 64, + "g": 64, + "b": 64 + }, + "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

\nThis icon of a gearbox will be removed in future versions of the library. Please use one of the icons of Mechanics.Rotational.Icons instead.\n

\n\"" + } + } + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "obsolete", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Obsolete class - use Modelica.Mechanics.Rotational.Icons instead\"" + } + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial class", + "class_specifier": { + "long_class_specifier": { + "identifier": "MotorIcon", + "description_string": "This icon will be removed in future Modelica versions.", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.ObsoleteModel" + } + } + ], + "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": -50 + }, + { + "x": 30, + "y": 50 + } + ], + "radius": 10, + "lineColor": { + "r": 82, + "g": 0, + "b": 2 + }, + "fillColor": { + "r": 252, + "g": 37, + "b": 57 + }, + "fillPattern": "FillPattern.HorizontalCylinder" + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -100, + "y": -90 + }, + { + "x": -90, + "y": -90 + }, + { + "x": -60, + "y": -20 + }, + { + "x": -10, + "y": -20 + }, + { + "x": 20, + "y": -90 + }, + { + "x": 30, + "y": -90 + }, + { + "x": 30, + "y": -100 + }, + { + "x": -100, + "y": -100 + }, + { + "x": -100, + "y": -90 + } + ], + "fillColor": { + "r": 64, + "g": 64, + "b": 64 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": 30, + "y": -10 + }, + { + "x": 90, + "y": 10 + } + ], + "lineColor": { + "r": 64, + "g": 64, + "b": 64 + }, + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.HorizontalCylinder" + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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 icon of an electrical motor model will be removed in future versions of the library. Please use a locally defined icon in your user defined libraries and applications.\n

\n\"" + } + } + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "obsolete", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Obsolete class\"" + } + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial class", + "class_specifier": { + "long_class_specifier": { + "identifier": "Info", + "description_string": "This icon will be removed in future Modelica versions.", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.ObsoleteModel" + } + } + ], + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "lineColor": { + "r": 75, + "g": 138, + "b": 73 + }, + "fillColor": { + "r": 75, + "g": 138, + "b": 73 + }, + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -15.833, + "y": 20 + }, + { + "x": -15.833, + "y": 30 + }, + { + "x": 14.167, + "y": 40 + }, + { + "x": 24.167, + "y": 20 + }, + { + "x": 4.167, + "y": -30 + }, + { + "x": 14.167, + "y": -30 + }, + { + "x": 24.167, + "y": -30 + }, + { + "x": 24.167, + "y": -40 + }, + { + "x": -5.833, + "y": -50 + }, + { + "x": -15.833, + "y": -30 + }, + { + "x": 4.167, + "y": 20 + }, + { + "x": -5.833, + "y": 20 + } + ], + "smooth": "Smooth.Bezier", + "origin": { + "x": -4.167, + "y": -15 + }, + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -12.5, + "y": -12.5 + }, + { + "x": 12.5, + "y": 12.5 + } + ], + "origin": { + "x": 7.5, + "y": 56.5 + }, + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "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 icon indicate classes containing only documentation, intended for general description of e.g., concepts and features of a package.

\n
Note
\n

This icon will be removed in future versions of the Modelica Standard Library. Instead the icon Information shall be used.

\"" + } + } + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "obsolete", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Obsolete class - use Modelica.Icons.Information instead\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + ], + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -15.833, + "y": 20 + }, + { + "x": -15.833, + "y": 30 + }, + { + "x": 14.167, + "y": 40 + }, + { + "x": 24.167, + "y": 20 + }, + { + "x": 4.167, + "y": -30 + }, + { + "x": 14.167, + "y": -30 + }, + { + "x": 24.167, + "y": -30 + }, + { + "x": 24.167, + "y": -40 + }, + { + "x": -5.833, + "y": -50 + }, + { + "x": -15.833, + "y": -30 + }, + { + "x": 4.167, + "y": 20 + }, + { + "x": -5.833, + "y": 20 + } + ], + "smooth": "Smooth.Bezier", + "origin": { + "x": -8.167, + "y": -17 + }, + "fillColor": { + "r": 128, + "g": 128, + "b": 128 + }, + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": -12.5, + "y": -12.5 + }, + { + "x": 12.5, + "y": 12.5 + } + ], + "origin": { + "x": -0.5, + "y": 56.5 + }, + "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 contains definitions for the graphical layout of components which may be used in different libraries. The icons can be utilized by inheriting them in the desired class using "extends" or by directly copying the "icon" layer.

\n\n

Main Authors:

\n\n
\n
Martin Otter
\n
Deutsches Zentrum fuer Luft und Raumfahrt e.V. (DLR)
\n
Oberpfaffenhofen
\n
Postfach 1116
\n
D-82230 Wessling
\n
email: Martin.Otter@dlr.de
\n
Christian Kral
\n\n
Electric Machines, Drives and Systems
\n
\n
1060 Vienna, Austria
\n
email: dr.christian.kral@gmail.com
\n
Johan Andreasson
\n
Modelon AB
\n
Ideon Science Park
\n
22370 Lund, Sweden
\n
email: johan.andreasson@modelon.se
\n
\n\n

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

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ], + "modelicaFile": "Modelica/Icons.mo", + "fullMoFilePath": "/opt/oct/ThirdParty/MSL/MSL323/Modelica/Icons.mo", + "checksum": "4ae2d96649622e3bb48c8ef317657524" +} \ No newline at end of file diff --git a/test/reference/json/Modelica/SIunits.json b/test/reference/json/Modelica/SIunits.json new file mode 100644 index 00000000..731fb356 --- /dev/null +++ b/test/reference/json/Modelica/SIunits.json @@ -0,0 +1,29739 @@ +{ + "within": "Modelica", + "class_definition": [ + { + "class_prefixes": "package", + "class_specifier": { + "long_class_specifier": { + "identifier": "SIunits", + "description_string": "Library of type and unit definitions based on SI units according to ISO 31-1992", + "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 SIunits Library", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Information" + } + }, + { + "class_definition": [ + { + "class_prefixes": "class", + "class_specifier": { + "long_class_specifier": { + "identifier": "HowToUseSIunits", + "description_string": "How to use SIunits", + "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
   model 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\\\";\n   equation\n     der(s) = v;\n     m*der(v) = f;\n   end 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
\n   MassOnGround 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.SIunits\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
   model MassOnGround\n     parameter Modelica.SIunits.Mass  m \\\"Mass\\\";\n     parameter Modelica.SIunits.Force f \\\"Driving force\\\";\n     ...\n   end MassOnGround;\n
\n\n

\nor in a short hand notation as\n

\n\n
\n   model MassOnGround\n     import SI = Modelica.SIunits;\n     parameter SI.Mass  m \\\"Mass\\\";\n     parameter SI.Force f \\\"Driving force\\\";\n     ...\n   end MassOnGround;\n
\n\n

\nFor some often\nused Non SI-units (like hour), some additional type definitions are\npresent as Modelica.SIunits.Conversions.NonSIunits. 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.SIunits. A complex unit is declared as:\n

\n
\n  model QuasiStationaryMachine\n    parameter Modelica.SIunits.ComplexPower SNominal = Complex(10000,4400)\n       \\\"Nominal complex power\\\";\n   ...\n   end QuasiStationaryMachine;\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 SIunits:

\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 Temp_K = 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
    \n  Chapter  1: Space and Time\n  Chapter  2: Periodic and Related Phenomena\n  Chapter  3: Mechanics\n  Chapter  4: Heat\n  Chapter  5: Electricity and Magnetism\n  Chapter  6: Light and Related Electro-Magnetic Radiations\n  Chapter  7: Acoustics\n  Chapter  8: Physical Chemistry\n  Chapter  9: Atomic and Nuclear Physics\n  Chapter 10: Nuclear Reactions and Ionizing Radiations\n  Chapter 11: (not defined in ISO 31-1992)\n  Chapter 12: Characteristic Numbers\n  Chapter 13: Solid State Physics\n
    \n
  • \n
  • Conversion functions between SI and non-SI units are available in 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 SIunits is a free Modelica package providing\npredefined types, such as Mass,\nLength, Time, based on the international standard\non units.

\n\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "package", + "class_specifier": { + "long_class_specifier": { + "identifier": "Icons", + "description_string": "Icons for SIunits", + "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\"", + "lineColor": { + "r": 0, + "g": 0, + "b": 255 + } + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + } + ] + } + } + } + } + ] + }, + { + "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": "package", + "class_specifier": { + "long_class_specifier": { + "identifier": "NonSIunits", + "description_string": "Type definitions of non SI 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 SIunits.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 SIunits.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 SIunits.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": "FirstOrderTemperaturCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"FirstOrderTemperatureCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Ohm/degC\"" + } + } + } + } + } + ], + "description": { + "description_string": "Obsolete type, use LinearTemperatureCoefficientResistance instead!", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "absoluteValue", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "obsolete", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Obsolete type - use Modelica.SIunits.LinearTemperatureCoefficientResistance instead\"" + } + } + } + } + } + ] + } + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SecondOrderTemperaturCoefficient", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"SecondOrderTemperatureCoefficient\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Ohm/degC2\"" + } + } + } + } + } + ], + "description": { + "description_string": "Obsolete type, use QuadraticTemperatureCoefficientResistance instead!", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "absoluteValue", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "obsolete", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Obsolete type - use Modelica.SIunits.QuadraticTemperatureCoefficientResistance instead\"" + } + } + } + } + } + ] + } + } + } + } + } + ] + }, + { + "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.SIunits. For more information on units, see also\nthe book of Francois Cardarelli Scientific Unit Conversion - A\nPractical Guide to Metrication (Springer 1997).

\n

Some units, such as Temperature_degC/Temp_C are both defined in\nModelica.SIunits and in Modelica.Conversions.NonSIunits. The reason is that these\ndefinitions have been placed erroneously in Modelica.SIunits although they\nare not SIunits. For backward compatibility, these type definitions are\nstill kept in Modelica.SIunits.

\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": "Text", + "attribute": { + "extent": [ + { + "x": -105, + "y": -86.8518 + }, + { + "x": 75, + "y": -16.8518 + } + ], + "textString": "\"[km/h]\"", + "origin": { + "x": 15, + "y": 51.8518 + } + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "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.SIunits.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
\nSIunits.Conversions.to_unit1(r);\n
\n

Description

\n

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

\n

Example

\n
\n  Modelica.SIunits.Velocity v = {3,2,1};\n  Real 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 degCelsius", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Temperature", + "component_list": [ + { + "declaration": { + "identifier": "Kelvin" + }, + "description": { + "description_string": "Kelvin value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "NonSIunits.Temperature_degC", + "component_list": [ + { + "declaration": { + "identifier": "Celsius" + }, + "description": { + "description_string": "Celsius value" + } + } + ] + } + } + ], + "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 degCelsius to Kelvin", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "NonSIunits.Temperature_degC", + "component_list": [ + { + "declaration": { + "identifier": "Celsius" + }, + "description": { + "description_string": "Celsius value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Temperature", + "component_list": [ + { + "declaration": { + "identifier": "Kelvin" + }, + "description": { + "description_string": "Kelvin value" + } + } + ] + } + } + ], + "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 degFahrenheit", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Temperature", + "component_list": [ + { + "declaration": { + "identifier": "Kelvin" + }, + "description": { + "description_string": "Kelvin value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "NonSIunits.Temperature_degF", + "component_list": [ + { + "declaration": { + "identifier": "Fahrenheit" + }, + "description": { + "description_string": "Fahrenheit value" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "Fahrenheit" + } + ], + "value": { + "simple_expression": "(Kelvin +Modelica.Constants.T_zero)*(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 degFahrenheit to Kelvin", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "NonSIunits.Temperature_degF", + "component_list": [ + { + "declaration": { + "identifier": "Fahrenheit" + }, + "description": { + "description_string": "Fahrenheit value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Temperature", + "component_list": [ + { + "declaration": { + "identifier": "Kelvin" + }, + "description": { + "description_string": "Kelvin value" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "Kelvin" + } + ], + "value": { + "simple_expression": "(Fahrenheit -32)*(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 degRankine", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Temperature", + "component_list": [ + { + "declaration": { + "identifier": "Kelvin" + }, + "description": { + "description_string": "Kelvin value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "NonSIunits.Temperature_degRk", + "component_list": [ + { + "declaration": { + "identifier": "Rankine" + }, + "description": { + "description_string": "Rankine value" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "Rankine" + } + ], + "value": { + "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 degRankine to Kelvin", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "NonSIunits.Temperature_degRk", + "component_list": [ + { + "declaration": { + "identifier": "Rankine" + }, + "description": { + "description_string": "Rankine value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Temperature", + "component_list": [ + { + "declaration": { + "identifier": "Kelvin" + }, + "description": { + "description_string": "Kelvin value" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "Kelvin" + } + ], + "value": { + "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Angle", + "component_list": [ + { + "declaration": { + "identifier": "radian" + }, + "description": { + "description_string": "radian value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "NonSIunits.Angle_deg", + "component_list": [ + { + "declaration": { + "identifier": "degree" + }, + "description": { + "description_string": "degree value" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "degree" + } + ], + "value": { + "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "NonSIunits.Angle_deg", + "component_list": [ + { + "declaration": { + "identifier": "degree" + }, + "description": { + "description_string": "degree value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Angle", + "component_list": [ + { + "declaration": { + "identifier": "radian" + }, + "description": { + "description_string": "radian value" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "radian" + } + ], + "value": { + "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "AngularVelocity", + "component_list": [ + { + "declaration": { + "identifier": "rs" + }, + "description": { + "description_string": "radian per second value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "NonSIunits.AngularVelocity_rpm", + "component_list": [ + { + "declaration": { + "identifier": "rpm" + }, + "description": { + "description_string": "revolutions per minute value" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "rpm" + } + ], + "value": { + "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "NonSIunits.AngularVelocity_rpm", + "component_list": [ + { + "declaration": { + "identifier": "rpm" + }, + "description": { + "description_string": "revolutions per minute value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "AngularVelocity", + "component_list": [ + { + "declaration": { + "identifier": "rs" + }, + "description": { + "description_string": "radian per second value" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "rs" + } + ], + "value": { + "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Velocity", + "component_list": [ + { + "declaration": { + "identifier": "ms" + }, + "description": { + "description_string": "metre per second value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "NonSIunits.Velocity_kmh", + "component_list": [ + { + "declaration": { + "identifier": "kmh" + }, + "description": { + "description_string": "kilometre per hour value" + } + } + ] + } + } + ], + "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "NonSIunits.Velocity_kmh", + "component_list": [ + { + "declaration": { + "identifier": "kmh" + }, + "description": { + "description_string": "kilometre per hour value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Velocity", + "component_list": [ + { + "declaration": { + "identifier": "ms" + }, + "description": { + "description_string": "metre per second value" + } + } + ] + } + } + ], + "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Time", + "component_list": [ + { + "declaration": { + "identifier": "s" + }, + "description": { + "description_string": "second value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "NonSIunits.Time_day", + "component_list": [ + { + "declaration": { + "identifier": "day" + }, + "description": { + "description_string": "day value" + } + } + ] + } + } + ], + "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "NonSIunits.Time_day", + "component_list": [ + { + "declaration": { + "identifier": "day" + }, + "description": { + "description_string": "day value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Time", + "component_list": [ + { + "declaration": { + "identifier": "s" + }, + "description": { + "description_string": "second value" + } + } + ] + } + } + ], + "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Time", + "component_list": [ + { + "declaration": { + "identifier": "s" + }, + "description": { + "description_string": "second value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "NonSIunits.Time_hour", + "component_list": [ + { + "declaration": { + "identifier": "hour" + }, + "description": { + "description_string": "hour value" + } + } + ] + } + } + ], + "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "NonSIunits.Time_hour", + "component_list": [ + { + "declaration": { + "identifier": "hour" + }, + "description": { + "description_string": "hour value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Time", + "component_list": [ + { + "declaration": { + "identifier": "s" + }, + "description": { + "description_string": "second value" + } + } + ] + } + } + ], + "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Time", + "component_list": [ + { + "declaration": { + "identifier": "s" + }, + "description": { + "description_string": "second value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "NonSIunits.Time_minute", + "component_list": [ + { + "declaration": { + "identifier": "minute" + }, + "description": { + "description_string": "minute value" + } + } + ] + } + } + ], + "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "NonSIunits.Time_minute", + "component_list": [ + { + "declaration": { + "identifier": "minute" + }, + "description": { + "description_string": "minute value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Time", + "component_list": [ + { + "declaration": { + "identifier": "s" + }, + "description": { + "description_string": "second value" + } + } + ] + } + } + ], + "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Volume", + "component_list": [ + { + "declaration": { + "identifier": "m3" + }, + "description": { + "description_string": "cubic metre value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "NonSIunits.Volume_litre", + "component_list": [ + { + "declaration": { + "identifier": "litre" + }, + "description": { + "description_string": "litre value" + } + } + ] + } + } + ], + "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "NonSIunits.Volume_litre", + "component_list": [ + { + "declaration": { + "identifier": "litre" + }, + "description": { + "description_string": "litre value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Volume", + "component_list": [ + { + "declaration": { + "identifier": "m3" + }, + "description": { + "description_string": "cubic metre value" + } + } + ] + } + } + ], + "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Modelica.SIunits.Conversions.NonSIunits.ElectricCharge_Ah", + "component_list": [ + { + "declaration": { + "identifier": "AmpereHour" + }, + "description": { + "description_string": "Ampere hours" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Modelica.SIunits.ElectricCharge", + "component_list": [ + { + "declaration": { + "identifier": "Coulomb" + }, + "description": { + "description_string": "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Modelica.SIunits.ElectricCharge", + "component_list": [ + { + "declaration": { + "identifier": "Coulomb" + }, + "description": { + "description_string": "Coulomb" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Modelica.SIunits.Conversions.NonSIunits.ElectricCharge_Ah", + "component_list": [ + { + "declaration": { + "identifier": "AmpereHour" + }, + "description": { + "description_string": "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "NonSIunits.Energy_Wh", + "component_list": [ + { + "declaration": { + "identifier": "WattHour" + }, + "description": { + "description_string": "Watt hour" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Modelica.SIunits.Energy", + "component_list": [ + { + "declaration": { + "identifier": "Joule" + }, + "description": { + "description_string": "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Modelica.SIunits.Energy", + "component_list": [ + { + "declaration": { + "identifier": "Joule" + }, + "description": { + "description_string": "Joule" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "NonSIunits.Energy_Wh", + "component_list": [ + { + "declaration": { + "identifier": "WattHour" + }, + "description": { + "description_string": "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Energy", + "component_list": [ + { + "declaration": { + "identifier": "J" + }, + "description": { + "description_string": "Joule value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "NonSIunits.Energy_kWh", + "component_list": [ + { + "declaration": { + "identifier": "kWh" + }, + "description": { + "description_string": "kWh value" + } + } + ] + } + } + ], + "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "NonSIunits.Energy_kWh", + "component_list": [ + { + "declaration": { + "identifier": "kWh" + }, + "description": { + "description_string": "kWh value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Energy", + "component_list": [ + { + "declaration": { + "identifier": "J" + }, + "description": { + "description_string": "Joule value" + } + } + ] + } + } + ], + "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Pressure", + "component_list": [ + { + "declaration": { + "identifier": "Pa" + }, + "description": { + "description_string": "Pascal value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "NonSIunits.Pressure_bar", + "component_list": [ + { + "declaration": { + "identifier": "bar" + }, + "description": { + "description_string": "bar value" + } + } + ] + } + } + ], + "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "NonSIunits.Pressure_bar", + "component_list": [ + { + "declaration": { + "identifier": "bar" + }, + "description": { + "description_string": "bar value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Pressure", + "component_list": [ + { + "declaration": { + "identifier": "Pa" + }, + "description": { + "description_string": "Pascal value" + } + } + ] + } + } + ], + "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "MassFlowRate", + "component_list": [ + { + "declaration": { + "identifier": "kgps" + }, + "description": { + "description_string": "kg/s value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "NonSIunits.MassFlowRate_gps", + "component_list": [ + { + "declaration": { + "identifier": "gps" + }, + "description": { + "description_string": "g/s value" + } + } + ] + } + } + ], + "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "NonSIunits.MassFlowRate_gps", + "component_list": [ + { + "declaration": { + "identifier": "gps" + }, + "description": { + "description_string": "g/s value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "MassFlowRate", + "component_list": [ + { + "declaration": { + "identifier": "kgps" + }, + "description": { + "description_string": "kg/s value" + } + } + ] + } + } + ], + "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "SIunits.Frequency", + "component_list": [ + { + "declaration": { + "identifier": "f" + }, + "description": { + "description_string": "frequency" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "SIunits.AngularVelocity", + "component_list": [ + { + "declaration": { + "identifier": "w" + }, + "description": { + "description_string": "angular velocity" + } + } + ] + } + } + ], + "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "SIunits.AngularVelocity", + "component_list": [ + { + "declaration": { + "identifier": "w" + }, + "description": { + "description_string": "angular velocity" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "SIunits.Frequency", + "component_list": [ + { + "declaration": { + "identifier": "f" + }, + "description": { + "description_string": "frequency" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "f" + } + ], + "value": { + "simple_expression": "w/(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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Area", + "component_list": [ + { + "declaration": { + "identifier": "m2" + }, + "description": { + "description_string": "square metre value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "NonSIunits.Area_cm", + "component_list": [ + { + "declaration": { + "identifier": "cm2" + }, + "description": { + "description_string": "square centimetre value" + } + } + ] + } + } + ], + "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.SIunits.Icons.Conversion" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "NonSIunits.Area_cm", + "component_list": [ + { + "declaration": { + "identifier": "cm2" + }, + "description": { + "description_string": "square centimetre value" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Area", + "component_list": [ + { + "declaration": { + "identifier": "m2" + }, + "description": { + "description_string": "square metre value" + } + } + ] + } + } + ], + "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\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial function", + "class_specifier": { + "long_class_specifier": { + "identifier": "ConversionIcon", + "description_string": "This icon will be removed in future Modelica versions.", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.ObsoleteModel" + } + } + ], + "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\"", + "lineColor": { + "r": 0, + "g": 0, + "b": 255 + } + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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 icon of a conversion symbol will be removed in future versions of the library. Instead the icon Modelica.SIunits.Icons.Conversion shall be used.\n

\n\"" + } + } + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "obsolete", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Obsolete function - use Modelica.SIunits.Icons.Conversion instead\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + ], + "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.SIunits.Conversions.NonSIunits to the\ncorresponding SI Units defined in package Modelica.SIunits 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
\n  import SI = Modelica.SIunits;\n  import Modelica.SIunits.Conversions.*;\n     ...\n  parameter SI.Temperature     T   = from_degC(25);   // convert 25 degree Celsius to Kelvin\n  parameter SI.Angle           phi = from_deg(180);   // convert 180 degree to radian\n  parameter SI.AngularVelocity w   = from_rpm(3600);  // convert 3600 revolutions per minutes\n                                                      // to radian per seconds\n
\n\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "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": "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": "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": "Wavelenght", + "value": { + "name": "Wavelength" + } + } + } + } + ] + }, + { + "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": "Temp_K", + "value": { + "name": "ThermodynamicTemperature" + } + } + } + } + ] + }, + { + "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": "Temp_C", + "value": { + "name": "SIunits.Conversions.NonSIunits.Temperature_degC" + } + } + } + } + ] + }, + { + "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": "RadiantExtiance", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"RadiantExtiance\"" + } + } + } + } + }, + { + "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": "LoundnessLevel", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"LoundnessLevel\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"phon\"" + } + } + } + } + } + ], + "description": { + "description_string": "Obsolete type, use LoudnessLevel instead!", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "obsolete", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Obsolete type - use Modelica.SIunits.LoudnessLevel instead\"" + } + } + } + } + } + ] + } + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "Loundness", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Loundness\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "unit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"sone\"" + } + } + } + } + } + ], + "description": { + "description_string": "Obsolete type, use Loudness instead!", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "obsolete", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Obsolete type - use Modelica.SIunits.Loudness instead\"" + } + } + } + } + } + ] + } + } + } + } + } + ] + }, + { + "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": "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": "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": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"IonicStrength\"" + } + } + } + } + }, + { + "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": "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": "\"TotalNeutronSourceDesity\"" + } + } + } + } + }, + { + "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": "FluxiodQuantum", + "value": { + "name": "Real", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "quantity", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"FluxiodQuantum\"" + } + } + } + } + }, + { + "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.SIunits.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.SIunits.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.SIunits.Current", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex current" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.SIunits.Current", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Imaginary part of complex current" + } + } + } + } + } + ], + "description": { + "description_string": "Complex electrical 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.SIunits.CurrentSlope", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex current slope" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.SIunits.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.SIunits.CurrentDensity", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex current density" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.SIunits.CurrentDensity", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Imaginary part of complex current density" + } + } + } + } + } + ], + "description": { + "description_string": "Complex electrical 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.SIunits.ElectricPotential", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Imaginary part of complex electric potential" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.SIunits.ElectricPotential", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Real part of complex electrical 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.SIunits.PotentialDifference", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex potential difference" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.SIunits.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.SIunits.Voltage", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Imaginary part of complex voltage" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.SIunits.Voltage", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Real part of complex voltage" + } + } + } + } + } + ], + "description": { + "description_string": "Complex electrical 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.SIunits.VoltageSlope", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex voltage slope" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.SIunits.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.SIunits.ElectricFieldStrength", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex electric field strength" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.SIunits.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.SIunits.ElectricFluxDensity", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex electric flux density" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.SIunits.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.SIunits.ElectricFlux", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex electric flux" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.SIunits.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.SIunits.MagneticFieldStrength", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex magnetic field strength" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.SIunits.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.SIunits.MagneticPotential", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex magnetic potential" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.SIunits.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.SIunits.MagneticPotentialDifference", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex magnetic potential difference" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.SIunits.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.SIunits.MagnetomotiveForce", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex magnetomotive force" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.SIunits.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.SIunits.MagneticFluxDensity", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex magnetic flux density" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.SIunits.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.SIunits.MagneticFlux", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex magnetic flux" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.SIunits.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.SIunits.Reluctance", + "component_declaration1": { + "declaration": { + "identifier": "re" + }, + "description": { + "description_string": "Real part of complex reluctance" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "Modelica.SIunits.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 electrical 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 electrical 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 power (active power)" + } + } + } + } + }, + { + "element_redeclaration": { + "component_clause1": { + "type_specifier": "ReactivePower", + "component_declaration1": { + "declaration": { + "identifier": "im" + }, + "description": { + "description_string": "Imaginary part of complex power (reactive power)" + } + } + } + } + } + ], + "description": { + "description_string": "Complex electrical 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": { + "coordinateSystem": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "preserveAspectRatio": "false" + } + } + } + }, + { + "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
   type 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 SIunits, have a look at:\nHow to use SIunits.\n

\n\n

\nCopyright © 1998-2019, 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/SIunits.mo", + "fullMoFilePath": "/opt/oct/ThirdParty/MSL/MSL323/Modelica/SIunits.mo", + "checksum": "0db94df377ef844e114b34bcbb91d049" +} \ No newline at end of file diff --git a/test/reference/json/Modelica/StateGraph.json b/test/reference/json/Modelica/StateGraph.json new file mode 100644 index 00000000..c0cb2f77 --- /dev/null +++ b/test/reference/json/Modelica/StateGraph.json @@ -0,0 +1,27047 @@ +{ + "within": "Modelica", + "class_definition": [ + { + "class_prefixes": "package", + "class_specifier": { + "long_class_specifier": { + "identifier": "StateGraph", + "description_string": "Library of hierarchical state machine components to model discrete event and reactive systems", + "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 StateGraph Library", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Information" + } + }, + { + "class_definition": [ + { + "class_prefixes": "class", + "class_specifier": { + "long_class_specifier": { + "identifier": "OverView", + "description_string": "Overview of library", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Information" + } + } + ], + "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

\nIn this section, an overview of the most important features\nof this library is given.\n

\n

Steps and Transitions

\n

\nA StateGraph is an enhanced finite state machine.\nIt is based on the JGrafchart method and\ntakes advantage of Modelica features for\nthe \\\"action\\\" language. JGrafchart is a further development of\nGrafcet to include elements of StateCharts that are not present\nin Grafcet/Sequential Function Charts. Therefore, the StateGraph\nlibrary has a similar modeling power as StateCharts but avoids\nsome deficiencies of StateCharts.\n

\n

\nThe basic elements of StateGraphs are steps and transitions:\n

\n\n

\n\n

\n\n

\nSteps represent the possible states a StateGraph can have.\nIf a step is active the Boolean variable active of\nthe step is true. If it is deactivated,\nactive = false. At the initial time, all \\\"usual\\\"\nsteps are deactivated. The InitialStep objects are steps\nthat are activated at the initial time. They are characterized\nby a double box (see figure above).\n

\n

\nTransitions are used to change the state of a StateGraph.\nWhen the step connected to the input of a transition is active,\nthe step connected to the output of this transition is deactivated\nand the transition condition becomes true, then the\ntransition fires. This means that the step connected to the input to the\ntransition is deactivated and the step connected to the output\nof the transition is activated.\n

\n

\nThe transition condition is defined via the parameter menu\nof the transition object. Clicking on object \\\"transition1\\\" in\nthe above figure, results in the following menu:\n

\n\n

\n\n

\n\n

\nIn the input field \\\"condition\\\", any type of time varying\nBoolean expression can be given (in Modelica notation, this is\na modification of the time varying variable condition).\nWhenever this condition is true, the transition can fire.\nAdditionally, it is possible to activate a timer, via\nenableTimer (see menu above) and provide a\nwaitTime. In this case the firing of the transition\nis delayed according to the provided waitTime. The transition\ncondition and the waitTime are displayed in the transition icon.\n

\n

\nIn the above example, the simulation starts at initialStep.\nAfter 1 second, transition1 fires and step1 becomes\nactive. After another second transition2 fires and\ninitialStep becomes again active. After a further\nsecond step1 becomes again active, and so on.\n

\n

\nIn JGrafcharts, Grafcet and Sequential Function Charts, the\nnetwork of steps and transitions is drawn from top to bottom.\nIn StateGraphs, no particular direction is defined, since\nsteps and transitions are blocks with input and output connectors\nthat can be arbitrarily placed and connected. Usually, it is\nmost practical to define the network from left to right,\nas in the example above, since then it is easy to read the\nlabels on the icons.\n

\n

Conditions and Actions

\n

\nWith the block TransitionWithSignal, the firing condition\ncan be provided as Boolean input signal, instead as entry in the\nmenu of the transition. An example is given in the next\nfigure:\n

\n\n

\n\n

\n\n

\nComponent \\\"step\\\" is an instance of \\\"StepWithSignal\\\" that is\na usual step where the active flag is available as Boolean\noutput signal. To this output, component \\\"Timer\\\" from\nlibrary \\\"Modelica.Blocks.Logical\\\" is connected. It measures the\ntime from the time instant where the Boolean input (i.e., the\nactive flag of the step) became true up to the current\ntime instant. The timer is connected to a comparison\ncomponent. The output is true, once the timer reaches\n1 second. This signal is used as condition input of the\ntransition. As a result, \\\"transition2\\\" fires, once step\n\\\"step\\\" has been active for 1 second.\nOf course, any other\nModelica block with a Boolean output signal can be\nconnected to the condition input of such a transition block\nas well.\n

\n

\nConditions of a transition can either be computed by\na network of logical blocks from the Logical library as\nin the figure above, or via the \\\"SetBoolean\\\" component\nany type of logical expression can be defined in textual\nform, as shown in the next figure:\n

\n\n

\n\n

\n\n

\nWith the block \\\"SetBoolean\\\", a time varying expression\ncan be provided as modification to the output signal y\n(see block with icon text \\\"timer.y > 1\\\" in the figure above).\nThe output signal can be in turn connected to the condition\ninput of a TransitionWithSignal block.\n

\n

\nThe \\\"SetBoolean\\\" block can also be used to\ncompute a Boolean signal depending on the active step.\nIn the figure above, the output of the block with the\nicon text \\\"step.active\\\" is\ntrue, when \\\"step\\\" is active, otherwise it is false\n(note, the icon text of \\\"SetBoolean\\\" displays the modification\nof the output signal \\\"y\\\").\nThis signal can then be used to compute desired actions\nin the physical systems model. For example, if a valve\nshall be open, when the StateGraph is in \\\"step1\\\" or\nin \\\"step4\\\", a \\\"SetBoolean\\\" block may be connected to the\nvalve model using the following condition:\n

\n
\n    valve = step1.active or step2.active\n
\n

\nVia the Modelica operators edge(..) and change(..),\nconditions depending on rising and falling edges of\nBoolean expressions can be used when needed.\n

\n

\nIn JGrafcharts, Grafcet, Sequential Function Charts and StateCharts,\nactions are formulated within a step. Such actions are\ndistinguished as entry, normal, exit and\nabort actions. For example, a valve might be opened by\nan entry action of a step and might be closed by an exit\naction of the same step. In StateGraphs, this is (fortunately)\nnot possible\ndue to Modelica's \\\"single assignment rule\\\" that requires that every\nvariable is defined by exactly one equation. Instead, the\napproach explained above is used. For example, via the\n\\\"SetBoolean\\\" component, the valve variable is set to true\nwhen the StateGraph is in particular steps.\n

\n

\nThis feature of a StateGraph is very useful, since it allows\na Modelica translator to guarantee that a given StateGraph\nhas always deterministic behaviour without conflicts.\nIn the other methodologies this is much more cumbersome. For example,\nif two steps are executed in parallel and both step actions\nmodify the same variable, the result is either non-deterministic\nor non-obvious rules have to be defined which action\ntakes priority. In a StateGraph, such a situation is detected by\nthe translator resulting in an error, since there are two equations\nto compute one variable. Additional benefits of the StateGraph\napproach are:\n

\n
    \n
  • A JGrafchart or a StateChart need to potentially access\n variables in a step that are defined in\n higher hierarchical levels of a model. Therefore, mostly global\n variables are used in the whole network, even if the\n network is structured hierarchically. In StateGraphs this\n is not necessary, since the physical systems outside\n of a StateGraph might access the step or transition state\n via a hierarchical name. This means that no global variables\n are needed, because the local variables in the StateGraph\n are accessed from local variables outside of the StateGraph.\n
  • \n
  • It is simpler for a user to understand the information that\n is provided in the non-graphical definition, since every\n variable is defined at exactly one place. In the other\n methodologies, the setting and re-setting of the same\n variable is cluttered within the whole network.\n
  • \n
\n

\nTo emphasize this important difference between these methodologies,\nconsider the case that a state machine has the following\nhierarchy:\n

\n
\n   stateMachine.superstate1.superstate2.step1\n
\n

\nWithin \\\"step1\\\" a StateChart would, e.g., access variable\n\\\"stateMachine.openValve\\\", say as \\\"entry action: openValve = true\\\".\nThis typical usage has the severe drawback that it is not possible\nto use the hierarchical state \\\"superstate1\\\" as component in another\ncontext, because \\\"step1\\\" references a particular name outside of this\ncomponent.\n

\n

\nIn a StateGraph, there would be typically a \\\"SetBoolean\\\" component\nin the \\\"stateMachine\\\" component stating:\n

\n
\n    openValve = superstate1.superstate2.step1.active;\n
\n

\nAs a result, the \\\"superstate1\\\" component can be used in\nanother context, because it does not depend on the environment\nwhere it is used.\n

\n

Execution Model

\n

\nThe execution model of a StateGraph follows from its\nModelica implementation: Given the states of all steps, i.e.,\nwhether a step is active or not active, the equations of all\nsteps, transitions, transition conditions, actions etc. are\nsorted resulting in an execution sequence to compute\nessentially the new values of the steps. If conflicts occur,\ne.g., if there are more equations as variables, of if there\nare algebraic loops between Boolean variables, an exception\nis raised. Once all equations have been processed, the\nactive variable of all steps are updated to the newly\ncalculated values. Afterwards, the equations are again\nevaluated. The iteration stops, once no step changes\nits state anymore, i.e., once no transition fires anymore.\nThen, simulation continuous until a new event is triggered,\n(when a relation changes its value).\n

\n

\nWith the Modelica \\\"sampled(..)\\\" operator, a StateGraph might also\nbe executed within a discrete controller that is called\nat regular time instants. In a future version of the StateGraph\nlibrary, this might be more directly supported.\n

\n

Parallel and Alternative Execution

\n

\nParallel activities can be defined by\ncomponent Parallel and alternative activities\ncan be defined by component Alternative.\nAn example for both components is given in the next figure.\n

\n\n

\n\n

\n\n

\nHere, the branch from \\\"step2\\\" to \\\"step5\\\" is executed in parallel\nto \\\"step1\\\". A transition connected to the output of a parallel\nbranch component can only fire if the final steps\nin all parallel branches are active simultaneously.\nThe figure above is a screen-shot from the animation of the\nStateGraph: Whenever a step is active or a transition can fire,\nthe corresponding component is marked in green color.\n

\n

\nThe three branches within \\\"step2\\\" to \\\"step5\\\" are\nexecuted alternatively, depending which transition condition\nof \\\"transition3\\\", \\\"transition4\\\", \\\"transition4a\\\" fires first.\nSince all three transitions fire after 1 second, they are all\ncandidates for the active branch. If two or more transitions\nwould fire at the same time instant, a priority selection\nis made: The alternative and parallel components have a\nvector of connectors. Every branch has to be connected to\nexactly one entry of the connector vector. The entry with\nthe lowest number has the highest priority.\n

\n

\nParallel, Alternative and Step components have vectors of\nconnectors. The dimensions of these vectors are set in the\ncorresponding parameter menu. E.g. in a \\\"Parallel\\\" component:\n

\n\n

\n\n

\n\n

\nCurrently in Dymola the following menu pops up, when a branch\nis connected to a vector of components in order to define\nthe vector index to which the component shall be connected:\n

\n\n

\n\n

\n\n

CompositeSteps, Suspend and Resume Port

\n

\nA StateGraph can be hierarchically structured by using a CompositeStep.\nThis is a component that inherits from PartialCompositeStep.\nAn example is given in the next figure (from Examples.ControlledTanks):\n

\n\n

\n\n

\n\n

\nThe CompositeStep component contains a local StateGraph that is\nentered by one or more input transitions and that is left\nby one or more output transitions. Also, other needed signals\nmay enter a CompositeStep. The CompositeStep has similar properties\nas a \\\"usual\\\" step: The CompositeStep is active once at least\none step within the CompositeStep is active. Variable active\ndefines the state of the CompositeStep.\n

\n

\nAdditionally, a CompositeStep has a suspend port. Whenever the\ntransition connected to this port fires, the CompositeStep is left\nat once. When leaving the CompositeStep via the suspend port, the internal\nstate of the CompositeStep is saved, i.e., the active flags of all\nsteps within the CompositeStep. The CompositeStep might be entered via\nits resume port. In this case the internal state from the\nsuspend transition is reconstructed and the CompositeStep continues\nthe execution that it had before the suspend transition fired\n(this corresponds to the history ports of StateCharts or JGrafcharts).\n

\n

\nA CompositeStep may contain other CompositeSteps. At every level,\na CompositeStep and all of its content can be left via its suspend ports\n(actually, there\nis a vector of suspend connectors, i.e., a CompositeStep might\nbe aborted due to different transitions).\n

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "class", + "class_specifier": { + "long_class_specifier": { + "identifier": "FirstExample", + "description_string": "A first example", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Information" + } + } + ], + "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

\nA first example will be given here (not yet done).\n

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "class", + "class_specifier": { + "long_class_specifier": { + "identifier": "ApplicationExample", + "description_string": "An application example", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Information" + } + } + ], + "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

\nIn this section a more realistic, still simple, application example\nis given, to demonstrate various features of the StateGraph library.\nThis example shows the control of a two tank system from the master thesis\nof Isolde Dressler\n(see literature).\n

\n

\nIn the following figure the top level of the model is shown.\nThis model is available as StateGraph.Examples.ControlledTanks.\n

\n\n

\n\n

\n\n

\nIn the right part of the figure, two tanks are shown. At the top part,\na large fluid source is present from which fluid can be filled in\ntank1 when valve1 is open. Tank1 can be emptied via\nvalve2 that is located in the bottom of tank2 and\nfills a second tank2 which in turn is emptied via\nvalve3. The actual levels of the tanks are measured\nand are provided as signals level1 and level2\nto the tankController.\n

\n

\nThe tankController is controlled by three buttons,\nstart, stop and shut (for shutdown)\nthat are mutually exclusive. This means that whenever one button is\npressed (i.e., its state is true) then the other two\nbuttons are not pressed (i.e., their states are false).\nWhen button start is pressed, the \\\"normal\\\" operation\nto fill and to empty the two tanks is processed:\n

\n
    \n
  1. Valve 1 is opened and tank 1 is filled.
  2. \n
  3. When tank 1 reaches its fill level limit,\n valve 1 is closed.
  4. \n
  5. After a waiting time, valve 2 is\n opened and the fluid flows from tank 1 into tank 2.
  6. \n
  7. When tank 1 is empty, valve 2 is closed.
  8. \n
  9. After a waiting time, valve 3 is opened and\n the fluid flows out of tank 2
  10. \n
  11. When tank 2 is empty, valve 3 is closed
  12. \n
\n

\nThe above \\\"normal\\\" process can be influenced by the following\nbuttons:\n

\n
    \n
  • Button start starts the above process.\n When this button is pressed after a \\\"stop\\\" or\n \\\"shut\\\" operation, the process operation continues.\n
  • \n
  • Button stop stops the above process by\n closing all valves. Then, the controller waits for\n further input (either \\\"start\\\" or \\\"shut\\\" operation).
  • \n
  • Button shut is used to shutdown the process,\n by emptying at once both tanks. When this is achieved,\n the process goes back to its start configuration.\n Clicking on \\\"start\\\", restarts the process.
  • \n
\n

\nThe implementation of the tankController is shown in\nthe next figure:\n

\n\n

\n\n

\n\n

\nWhen the \\\"start\\\" button is pressed, the stateGraph is\nwithin the CompositeStep \\\"makeProduct\\\". During normal\noperation this CompositeStep is only left, once tank2 is empty.\nAfterwards, the CompositeStep is at once re-entered.\n

\n

\nWhen the \\\"stop\\\" button is pressed, the \\\"makeProduct\\\"\nCompositeStep is at once terminated via the \\\"suspend\\\" port\nand the stateGraph waits in step \\\"s2\\\" for further\ncommands. When the \\\"start\\\" button is pressed, the CompositeStep\nis re-entered via its resume port and the \\\"normal\\\"\noperation continues at the state where it was aborted by the\nsuspend transition. If the \\\"shut\\\" button is pressed,\nthe stateGraph waits in the \\\"emptyTanks\\\" step, until\nboth tanks are empty and then waits at the initial step\n\\\"s1\\\" for further input.\n

\n

\nThe opening and closing of valves is not directly\ndefined in the stateGraph. Instead via the \\\"setValveX\\\"\ncomponents, the Boolean state of the valves are computed.\nFor example, the output y of \\\"setValve2\\\" is computed as:\n

\n
\n  y = makeProduct.fillTank2.active or emptyTanks.active\n
\n

\ni.e., valve2 is open, when step \\\"makeProduct.fillTank2 or when\nstep \\\"emptyTanks\\\" is active. Otherwise, valve2 is closed.\n

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "class", + "class_specifier": { + "long_class_specifier": { + "identifier": "ComparisonWithStateGraph2", + "description_string": "Comparison with StateGraph2", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Information" + } + } + ], + "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

\nThere is a much improved library available called \\\"Modelica_StateGraph2\\\".\nIf this library is not yet distributed with your Modelica tool, you can download\nit from https://github.com/modelica/Modelica_StateGraph2.\nFind below a comparison with respect to Modelica.StateGraph.\nIt is not yet clear whether Modelica_StateGraph2 will be included in a\nfuture version of the Modelica package. Another option is to provide\nbuilt-in support for state machines in a future Modelica language version\nwhich would allow an even more powerful treatment of state machines in Modelica.\n

\n\n

\nThe Modelica_StateGraph2 library (called StateGraph2 below)\nis based on the experience with the current\nModelica.StateGraph library (called StateGraph1 below) and is\na significantly further development of StateGraph1. Furthermore, it is heavily\nbased on the article (Malmheden et. al. 2008), see Literature below,\nbut uses a different implementation\ntechnique as described in this article. The StateGraph2\nlibrary has the following improvements with respect to the StateGraph1\nlibrary:\n

\n\n
    \n
  • 3 Basic Components (Step, Transition, Parallel)
    \n All multiple versions of a component are\n combined in only one version (e.g., one step and not 4 step components).\n This is easier to understand and more convenient to use.\n The \\\"Parallel\\\" component is both used as \\\"composite step\\\" (so only one branch),\n as well as \\\"parallel step\\\" (so several execution branches).
     
  • \n\n
  • Conveniently connecting components
    \n Connecting components of a state machine in Modelica means to provide\n new vector dimensions and to provide a vector index to connect to.\n In StateGraph2, the new \\\"connectorSizing\\\" annotation is used and\n therefore all this is now performed automatically (from a users point\n of view, these actions are hidden; this is not the case in\n StateGraph1 and makes the usage of the StateGraph1 library clumsy).
     
  • \n\n
  • Safer state machines
    \n It is no longer possible to construct a wrong state machine in the sense that properties\n of the graph are violated (e.g., two initial steps, or branching wrongly out of a parallel\n component). Contrary to StateGraph2, in StateGraph1 such wrong graphs do not lead to an\n error but to unexpected simulation results. Still, other desirable properties\n of a state machine, such as \\\"no deadlock\\\" or \\\"lifeliness\\\" or \\\"every step reachable\\\",\n are not (yet) guaranteed with the current StateGraph2.
     
  • \n\n
  • Composite, autonomous, synchronized, preempted subgraphs
    \n Composite steps and parallel steps are described in a much better and more powerful\n way as in StateGraph1: Either by component \\\"Parallel\\\" or\n by inheriting from \\\"PartialParallel\\\". The first alternative has the advantage that it\n is simple to use (not necessary to construct a new class and instantiating this class, and\n easy variable access since no new hierarchy is constructed), the second alternative\n has the advantage that it introduces a Modelica hierarchy (useful for large subgraphs).\n In both cases, various options are possible, such as\n
      \n
    1. autonomous subgraphs (branches are executed in parallel autonomously),
    2. \n
    3. synchronized subgraphs (branches are executed in parallel and are synchronized\n before leaving the subgraph via the outPort),
    4. \n
    5. subgraphs with preemption and exception (a parallel step can be interrupted via\n the suspend ports and can continue execution via the resume ports).
    6. \n
    \n This is achieved by enabling/disabling the different ports.
     
  • \n
  • No infinite looping:
    \n As in StateGraph1, there are two types of transitions: immediate transitions (during event\n iteration all immediate transitions fire until no transition condition is true anymore) and\n delayed transitions (a transition fires only after a delay). Contrary to StateGraph1,\n in StateGraph2 every loop must have at least one delayed transition. If this is not the case\n a translation error occurs which states that the model contains an algebraic loop\n between Booleans with the name \\\"checkOneDelayedTransitionPerLoop\\\".
    \n      This property guarantees that an event\n iteration over a StateGraph2 converges after a\n finite number of iterations, provided the modeller does not introduce an unsafe construct\n in the actions associated with a StateGraph2 (e.g., \\\"i = pre(i) + 1\\\" in the equation section\n outside of a when-clause will give an event iteration that never stops).
    \n      It is possible to switch off this feature, by setting parameter\n \\\"loopCheck = false\\\" in one transition of a loop, instead of using a \\\"delayed transition\\\"\n at this place (in cases where immediate transitions are\n important and the transition conditions are in a form that they cannot fire at the\n same time instant).
  • \n
\n\n

Literature

\n\n

\nThe Modelica_StateGraph2 library is described in detail in\n(Otter et. al. 2009, see below) and is additionally\nbased on the following references:\n

\n\n
\n
André, C. (2003):
\n
\n Semantics of S.S.M (Safe State Machine)..\n I3S Laboratory, UMR 6070 University of Nice-Sophia Antipolis / CNRS.
 
\n\n
Årzén K.-E. (2004):
\n
JGrafchart User Manual. Version 1.5.\n Department of Automatic Control, Lund Institute of Technology,\n Lund, Sweden, Feb. 13, 2004.
 
\n\n
Dressler I. (2004):
\n
\n Code Generation From JGrafchart to Modelica..\n Master thesis, supervisor: Karl-Erik Årzén,\n Department of Automatic Control, Lund Institute of Technology,\n Lund, Sweden, March 30, 2004.
 
\n\n
Elmqvist H., Mattsson S.E., Otter M. (2001):
\n
Object-Oriented and Hybrid Modeling in Modelica.\n Journal Europeen des systemes automatises (JESA),\n Volume 35 - n. 1, 2001.
 
\n\n
Harel, D. (1987):
\n
\n A Visual Formalism for Complex Systems.\n Science of Computer Programming 8, 231-274. Department of Applied Mathematics,\n The Weizmann Institute of Science, Rehovot, Israel.
 
\n\n
Malmheden M. (2007):
\n
\n ModeGraph - A Mode-Automata-Based Modelica Library for Embedded Control.\n Master thesis, Department of Automatic Control, Lund University, Sweden.
 \n
\n\n
Malmheden M., Elmqvist H., Mattsson S.E., Henrisson D., Otter M. (2008):
\n
\n ModeGraph - A Modelica Library for Embedded Control based on Mode-Automata.\n Modelica'2008 Conference, March 3-4, 2008.
 \n
\n\n
Maraninchi F., Rémond, Y. (2002):
\n
Mode-Automata:\n A New Domain-Specific Construct for the Development of Safe Critical Systems.
 \n
\n\n
Mosterman P., Otter M., Elmqvist H. (1998):
\n
\n Modeling Petri Nets as Local Constraint Equations for\n Hybrid Systems using Modelica.\n SCSC'98, Reno, Nevada, USA,\n Society for Computer Simulation International, pp. 314-319, 1998.
 \n
\n\n
Otter M., Malmheden M., Elmqvist H., Mattsson S.E., Johnsson C. (2009):
\n
\n A New Formalism for Modeling of Reactive and Hybrid Systems.\n Modelica'2009 Conference, Como, Italy, Sept. 20-22, 2009.\n
\n
\n\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "class", + "class_specifier": { + "long_class_specifier": { + "identifier": "ReleaseNotes", + "description_string": "Release notes", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.ReleaseNotes" + } + } + ], + "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

Version 0.87, 2004-06-23

\n
    \n
  • Included in Modelica standard library 2.0 Beta 1 with the new block connectors.\n Changed all the references to the block connectors and the Logical library\n correspondingly.
  • \n
\n

Version 0.86, 2004-06-20

\n
    \n
  • New components \\\"Alternative\\\" and \\\"Parallel\\\" for alternative and\n parallel execution paths.
  • \n
  • A step has now a vector of input and output connectors in order\n that multiple connections to and from a step are possible
  • \n
  • Removed components \\\"AlternativeSplit\\\", \\\"AlternativeJoin\\\",\n \\\"ParallelSplit\\\" and \\\"ParallelJoin\\\" since the newly introduced\n components (\\\"Alternative\\\", \\\"Parallel\\\", vector connectors of steps)\n have the same modeling power but are safer and more convenient.
  • \n
  • Removed the timer in a step (attach instead Logical.Timer to\n the \\\"active\\\" port of a \\\"StepWithSignal\\\" component). Note, that in\n most cases it is more convenient and more efficient to use the\n built-in timer of a transition.
  • \n
  • Component \\\"StepInitial\\\" renamed to \\\"InitialStep\\\".
  • \n
  • New component \\\"Timer\\\" within sublibrary Logical.
  • \n
  • Updated and improved documentation of the library.
  • \n
\n

Version 0.85, 2004-06-17

\n
    \n
  • Renamed \\\"MacroStep\\\" to \\\"CompositeStep\\\" and the ports of the MacroStep\n from \\\"abort\\\" to \\\"suspend\\\" and \\\"history\\\" to \\\"resume\\\".
  • \n
  • Nested \\\"CompositeStep\\\" components are supported, based on the\n experimental feature of nested inner/outer components\n introduced by Dymola. This means that CompositeSteps can\n be suspended and resumed at every level.
  • \n
  • New example \\\"Examples.ShowExceptions\\\" to demonstrate the new\n feature of nested CompositeSteps.
  • \n
  • New package \\\"Logical\\\". It contains all components of\n ModelicaAdditions.Blocks.Logical, but with new block connectors\n and nicer icons. Additionally, logical blocks are also added.
  • \n
  • Improved icons for several components of the StateGraph library.
  • \n
\n

Version 0.83, 2004-05-21

\n
    \n
  • The \\\"abort\\\" and \\\"history\\\" connectors are no longer visible in the\n diagram layer of a CompositeStep since it is not allowed to connect\n to them in a CompositeStep.
  • \n
  • Made the diagram/icon size of a CompositeStep smaller (from 200/-200 to\n 150/-150).
  • \n
  • Improved icons for \\\"SetBoolean/SetInteger/SetReal\\\" components.
  • \n
  • Renamed \\\"ParameterReal\\\" to \\\"SetRealParameter\\\".
  • \n
\n

Version 0.82, 2004-05-18

\n

\nImplemented a first version that is provided to other people.\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

\nThe StateGraph library is based on the following references:\n

\n
\n
Årzén K.-E. (2004):
\n
JGrafchart User Manual. Version 1.5.\n Department of Automatic Control, Lund Institute of Technology,\n Lund, Sweden, Feb. 13
 
\n
Dressler I. (2004):
\n
Code Generation From JGrafchart to Modelica.\n Master thesis, supervisor: Karl-Erik Årzén,\n Department of Automatic Control, Lund Institute of Technology,\n Lund, Sweden, March 30
 
\n
Elmqvist H., Mattsson S.E., Otter M. (2001):
\n
Object-Oriented and Hybrid Modeling in Modelica.\n Journal Europeen des systemes automatises (JESA),\n Volume 35 - n. 1.
 
\n
Mosterman P., Otter M., Elmqvist H. (1998):
\n
Modeling Petri Nets as Local Constraint Equations for\n Hybrid Systems using Modelica.\n SCSC'98, Reno, Nevada, USA,\n Society for Computer Simulation International, pp. 314-319.\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
    \n
  • The development of this library was strongly motivated by the\n master thesis of Isolde Dressler\n (see literature),\n in which\n a compiler from JGrafchart to Modelica was designed and\n implemented. This project was supervised by Karl-Erik Årzén\n from Department of Automatic Control, Lund Institut of\n Technology, Lund, Sweden.
  • \n
  • This library profits also from the experience gained\n in the focused research program (Schwerpunktprogramm)\n \\\"Continuous-Discrete Dynamic Systems\\\" (KONDISK), sponsored by the\n Deutsche Forschungsgemeinschaft under grants OT174/1-2 and EN152/22-2.\n This support is most gratefully acknowledged.\n
  • \n
  • The implementation of the basic components of this library by describing\n finite state machines with equations is based on\n (Elmqvist, Mattsson and Otter, 2001),\n which in turn uses ideas from (Mosterman, Otter and Elmqvist, 1998),\n see literature
  • \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 StateGraph is a free Modelica package providing\ncomponents to model discrete event and reactive\nsystems in a convenient\nway. This package contains the User's Guide for\nthe library and has the following content:\n

\n
    \n
  1. Overview of library\n gives an overview of the library.
  2. \n
  3. A first example\n demonstrates at hand of a first example how to use this library.
  4. \n
  5. An\n application example demonstrates varies features at hand of the\n control of a two tank system.
  6. \n
  7. Comparison\n with StateGraph2 compares Modelica.StateGraph with the much improved version\n Modelica_StateGraph2.
  8. \n
  9. Release Notes\n summarizes the differences between different versions of this library.
  10. \n
  11. Literature\n provides references that have been used to design and implement this\n library.
  12. \n
  13. Contact\n provides information about the authors of the library as well as\n acknowledgments.
  14. \n
\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "package", + "class_specifier": { + "long_class_specifier": { + "identifier": "Examples", + "description_string": "Examples to demonstrate the usage of the components of the StateGraph library", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.ExamplesPackage" + } + }, + { + "class_definition": [ + { + "class_prefixes": "model", + "class_specifier": { + "long_class_specifier": { + "identifier": "FirstExample", + "description_string": "A first simple StateGraph example", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Example" + } + }, + { + "component_clause": { + "type_specifier": "InitialStep", + "component_list": [ + { + "declaration": { + "identifier": "initialStep" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -48, + "y": 0 + }, + { + "x": -28, + "y": 20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition1", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -20, + "y": 0 + }, + { + "x": 0, + "y": 20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "step" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 10, + "y": 0 + }, + { + "x": 30, + "y": 20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition2", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 40, + "y": 0 + }, + { + "x": 60, + "y": 20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "inner": true, + "component_clause": { + "type_specifier": "StateGraphRoot", + "component_list": [ + { + "declaration": { + "identifier": "stateGraphRoot" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -80, + "y": 60 + }, + { + "x": -60, + "y": 80 + } + ] + } + } + } + } + } + ] + } + } + ] + } + } + ], + "element_sections": [ + { + "equation_section": { + "equation": [ + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "initialStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -27.5, + "y": 10 + }, + { + "x": -14, + "y": 10 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "step" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -8.5, + "y": 10 + }, + { + "x": 9, + "y": 10 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "step" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 30.5, + "y": 10 + }, + { + "x": 46, + "y": 10 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "initialStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 51.5, + "y": 10 + }, + { + "x": 70, + "y": 10 + }, + { + "x": 70, + "y": 32 + }, + { + "x": -62, + "y": 32 + }, + { + "x": -62, + "y": 10 + }, + { + "x": -49, + "y": 10 + } + ] + } + } + } + } + ] + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "experiment", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "StopTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "5" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "model", + "class_specifier": { + "long_class_specifier": { + "identifier": "FirstExample_Variant2", + "description_string": "A variant of the first simple StateGraph example", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Example" + } + }, + { + "component_clause": { + "type_specifier": "InitialStep", + "component_list": [ + { + "declaration": { + "identifier": "initialStep" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -70, + "y": 0 + }, + { + "x": -50, + "y": 20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition1", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -42, + "y": 0 + }, + { + "x": -22, + "y": 20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "StepWithSignal", + "component_list": [ + { + "declaration": { + "identifier": "step" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -14, + "y": 0 + }, + { + "x": 6, + "y": 20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "TransitionWithSignal", + "component_list": [ + { + "declaration": { + "identifier": "transition2" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 52, + "y": 0 + }, + { + "x": 72, + "y": 20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Logical.Timer", + "component_list": [ + { + "declaration": { + "identifier": "timer" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 6, + "y": -40 + }, + { + "x": 26, + "y": -20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Logical.GreaterEqualThreshold", + "component_list": [ + { + "declaration": { + "identifier": "greaterEqual", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "threshold", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 36, + "y": -40 + }, + { + "x": 56, + "y": -20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "inner": true, + "component_clause": { + "type_specifier": "StateGraphRoot", + "component_list": [ + { + "declaration": { + "identifier": "stateGraphRoot" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -80, + "y": 60 + }, + { + "x": -60, + "y": 80 + } + ] + } + } + } + } + } + ] + } + } + ] + } + } + ], + "element_sections": [ + { + "equation_section": { + "equation": [ + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "initialStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -49.5, + "y": 10 + }, + { + "x": -36, + "y": 10 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "step" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -30.5, + "y": 10 + }, + { + "x": -15, + "y": 10 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "step" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "active" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "timer" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "u" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -4, + "y": -1 + }, + { + "x": -4, + "y": -30 + }, + { + "x": 4, + "y": -30 + } + ], + "color": { + "r": 255, + "g": 0, + "b": 255 + } + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "step" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 6.5, + "y": 10 + }, + { + "x": 58, + "y": 10 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "timer" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "y" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "greaterEqual" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "u" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 27, + "y": -30 + }, + { + "x": 34, + "y": -30 + } + ], + "color": { + "r": 0, + "g": 0, + "b": 255 + } + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "greaterEqual" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "y" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "condition" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 57, + "y": -30 + }, + { + "x": 62, + "y": -30 + }, + { + "x": 62, + "y": -2 + } + ], + "color": { + "r": 255, + "g": 0, + "b": 255 + } + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "initialStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 63.5, + "y": 10 + }, + { + "x": 82, + "y": 10 + }, + { + "x": 82, + "y": 32 + }, + { + "x": -80, + "y": 32 + }, + { + "x": -80, + "y": 10 + }, + { + "x": -71, + "y": 10 + } + ] + } + } + } + } + ] + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "experiment", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "StopTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "5" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "model", + "class_specifier": { + "long_class_specifier": { + "identifier": "FirstExample_Variant3", + "description_string": "A variant of the first simple StateGraph example", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Example" + } + }, + { + "component_clause": { + "type_specifier": "InitialStep", + "component_list": [ + { + "declaration": { + "identifier": "initialStep" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -70, + "y": 0 + }, + { + "x": -50, + "y": 20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition1", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -42, + "y": 0 + }, + { + "x": -22, + "y": 20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "StepWithSignal", + "component_list": [ + { + "declaration": { + "identifier": "step" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -14, + "y": 0 + }, + { + "x": 6, + "y": 20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "TransitionWithSignal", + "component_list": [ + { + "declaration": { + "identifier": "transition2" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 56, + "y": 0 + }, + { + "x": 76, + "y": 20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Logical.Timer", + "component_list": [ + { + "declaration": { + "identifier": "timer" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "origin": { + "x": -4, + "y": -30 + }, + "extent": [ + { + "x": -10, + "y": -10 + }, + { + "x": 10, + "y": 10 + } + ], + "rotation": 270 + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Sources.BooleanExpression", + "component_list": [ + { + "declaration": { + "identifier": "SetBoolean1", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "y", + "modification": { + "equal": true, + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "timer.y" + }, + { + "name": "1" + } + ], + "relation_operator": ">" + } + ] + } + ] + } + } + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 28, + "y": -40 + }, + { + "x": 60, + "y": -20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Sources.BooleanExpression", + "component_list": [ + { + "declaration": { + "identifier": "SetBoolean2", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "y", + "modification": { + "equal": true, + "expression": { + "simple_expression": "step.active" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -68, + "y": -40 + }, + { + "x": -36, + "y": -20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "inner": true, + "component_clause": { + "type_specifier": "StateGraphRoot", + "component_list": [ + { + "declaration": { + "identifier": "stateGraphRoot" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -80, + "y": 60 + }, + { + "x": -60, + "y": 80 + } + ] + } + } + } + } + } + ] + } + } + ] + } + } + ], + "element_sections": [ + { + "equation_section": { + "equation": [ + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "initialStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -49.5, + "y": 10 + }, + { + "x": -36, + "y": 10 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "step" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -30.5, + "y": 10 + }, + { + "x": -15, + "y": 10 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "step" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "active" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "timer" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "u" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -4, + "y": -1 + }, + { + "x": -4, + "y": -9.5 + }, + { + "x": -4, + "y": -18 + }, + { + "x": -4, + "y": -18 + } + ], + "color": { + "r": 255, + "g": 0, + "b": 255 + } + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "step" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 6.5, + "y": 10 + }, + { + "x": 62, + "y": 10 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "initialStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 67.5, + "y": 10 + }, + { + "x": 82, + "y": 10 + }, + { + "x": 82, + "y": 32 + }, + { + "x": -80, + "y": 32 + }, + { + "x": -80, + "y": 10 + }, + { + "x": -71, + "y": 10 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "SetBoolean1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "y" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "condition" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 61.6, + "y": -30 + }, + { + "x": 66, + "y": -30 + }, + { + "x": 66, + "y": -2 + } + ], + "color": { + "r": 255, + "g": 0, + "b": 255 + } + } + } + } + } + ] + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "experiment", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "StopTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "5" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "model", + "class_specifier": { + "long_class_specifier": { + "identifier": "ExecutionPaths", + "description_string": "Example to demonstrate parallel and alternative execution paths", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Example" + } + }, + { + "component_clause": { + "type_specifier": "InitialStep", + "component_list": [ + { + "declaration": { + "identifier": "step0" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -140, + "y": -100 + }, + { + "x": -120, + "y": -80 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition1", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": -80, + "y": -80 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "step1" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -10, + "y": -40 + }, + { + "x": 10, + "y": -20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition2", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 90, + "y": -100 + }, + { + "x": 110, + "y": -80 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "step6" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 120, + "y": -100 + }, + { + "x": 140, + "y": -80 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "step2" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -98, + "y": 40 + }, + { + "x": -78, + "y": 60 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition3", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -42, + "y": 80 + }, + { + "x": -22, + "y": 100 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition4", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -42, + "y": 40 + }, + { + "x": -22, + "y": 60 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "step3" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -8, + "y": 80 + }, + { + "x": 12, + "y": 100 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "step4" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -8, + "y": 40 + }, + { + "x": 12, + "y": 60 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition5", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 26, + "y": 80 + }, + { + "x": 46, + "y": 100 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition6", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 26, + "y": 40 + }, + { + "x": 46, + "y": 60 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "step5" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 80, + "y": 40 + }, + { + "x": 100, + "y": 60 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Sources.RealExpression", + "component_list": [ + { + "declaration": { + "identifier": "setReal", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "y", + "modification": { + "equal": true, + "expression": { + "simple_expression": "time" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 21, + "y": -160 + }, + { + "x": 41, + "y": -140 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "TransitionWithSignal", + "component_list": [ + { + "declaration": { + "identifier": "transition7" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 9, + "y": -134 + }, + { + "x": -11, + "y": -114 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Sources.BooleanExpression", + "component_list": [ + { + "declaration": { + "identifier": "setCondition", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "y", + "modification": { + "equal": true, + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "time" + }, + { + "name": "7" + } + ], + "relation_operator": ">=" + } + ] + } + ] + } + } + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -77, + "y": -160 + }, + { + "x": -19, + "y": -140 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition4a", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -42, + "y": 0 + }, + { + "x": -22, + "y": 20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "step4a" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -8, + "y": 0 + }, + { + "x": 12, + "y": 20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition6a", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "2" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 26, + "y": 0 + }, + { + "x": 46, + "y": 20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "StateGraph.Temporary.NumericValue", + "component_list": [ + { + "declaration": { + "identifier": "NumericValue1" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 61, + "y": -160 + }, + { + "x": 81, + "y": -140 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Alternative", + "component_list": [ + { + "declaration": { + "identifier": "alternative", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "nBranches", + "modification": { + "equal": true, + "expression": { + "simple_expression": "3" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -70, + "y": -10 + }, + { + "x": 72, + "y": 110 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Parallel", + "component_list": [ + { + "declaration": { + "identifier": "Parallel1" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -154, + "y": -50 + }, + { + "x": 152, + "y": 120 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "inner": true, + "component_clause": { + "type_specifier": "StateGraphRoot", + "component_list": [ + { + "declaration": { + "identifier": "stateGraphRoot" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -160, + "y": 120 + }, + { + "x": -140, + "y": 140 + } + ] + } + } + } + } + } + ] + } + } + ] + } + } + ], + "element_sections": [ + { + "equation_section": { + "equation": [ + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition3" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "step3" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -30.5, + "y": 90 + }, + { + "x": -9, + "y": 90 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "step3" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition5" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 12.5, + "y": 90 + }, + { + "x": 32, + "y": 90 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition4" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "step4" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -30.5, + "y": 50 + }, + { + "x": -9, + "y": 50 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "step4" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition6" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 12.5, + "y": 50 + }, + { + "x": 32, + "y": 50 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition7" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "step0" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -2.5, + "y": -124 + }, + { + "x": -149, + "y": -124 + }, + { + "x": -149, + "y": -90 + }, + { + "x": -141, + "y": -90 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "step6" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition7" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 140.5, + "y": -90 + }, + { + "x": 150, + "y": -90 + }, + { + "x": 150, + "y": -124 + }, + { + "x": 3, + "y": -124 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition4a" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "step4a" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -30.5, + "y": 10 + }, + { + "x": -9, + "y": 10 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "step4a" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition6a" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 12.5, + "y": 10 + }, + { + "x": 32, + "y": 10 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "setCondition" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "y" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition7" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "condition" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -16.1, + "y": -150 + }, + { + "x": -1, + "y": -150 + }, + { + "x": -1, + "y": -136 + } + ], + "color": { + "r": 255, + "g": 0, + "b": 255 + } + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "setReal" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "y" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "NumericValue1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "Value" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 42, + "y": -150 + }, + { + "x": 59, + "y": -150 + } + ], + "color": { + "r": 0, + "g": 0, + "b": 255 + } + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition3" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "alternative" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "split", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -36, + "y": 90 + }, + { + "x": -55.09, + "y": 90 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition4" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "alternative" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "split", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -36, + "y": 50 + }, + { + "x": -55.09, + "y": 50 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition4a" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "alternative" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "split", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -36, + "y": 10 + }, + { + "x": -45.0125, + "y": 10 + }, + { + "x": -45.0125, + "y": 10 + }, + { + "x": -55.09, + "y": 10 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition5" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "alternative" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "join", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 37.5, + "y": 90 + }, + { + "x": 57.09, + "y": 90 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition6" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "alternative" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "join", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 37.5, + "y": 50 + }, + { + "x": 57.09, + "y": 50 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition6a" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "alternative" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "join", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 37.5, + "y": 10 + }, + { + "x": 46.7625, + "y": 10 + }, + { + "x": 46.7625, + "y": 10 + }, + { + "x": 57.09, + "y": 10 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "step2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "alternative" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -77.5, + "y": 50 + }, + { + "x": -72.13, + "y": 50 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "alternative" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "step5" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 73.42, + "y": 50 + }, + { + "x": 79, + "y": 50 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "step2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "Parallel1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "split", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -99, + "y": 50 + }, + { + "x": -118, + "y": 50 + }, + { + "x": -118, + "y": 78 + }, + { + "x": -119.575, + "y": 78 + }, + { + "x": -119.575, + "y": 77.5 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "step1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "Parallel1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "join", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 10.5, + "y": -30 + }, + { + "x": 118, + "y": -30 + }, + { + "x": 118, + "y": -7.5 + }, + { + "x": 117.575, + "y": -7.5 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "step0" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -119.5, + "y": -90 + }, + { + "x": -94, + "y": -90 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "step6" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 101.5, + "y": -90 + }, + { + "x": 119, + "y": -90 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "Parallel1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -88.5, + "y": -90 + }, + { + "x": -70, + "y": -90 + }, + { + "x": -70, + "y": -64 + }, + { + "x": -174, + "y": -64 + }, + { + "x": -174, + "y": 35 + }, + { + "x": -158.59, + "y": 35 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "Parallel1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 155.06, + "y": 35 + }, + { + "x": 168, + "y": 35 + }, + { + "x": 168, + "y": -60 + }, + { + "x": 80, + "y": -60 + }, + { + "x": 80, + "y": -90 + }, + { + "x": 96, + "y": -90 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "step5" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "Parallel1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "join", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 100.5, + "y": 50 + }, + { + "x": 116, + "y": 50 + }, + { + "x": 116, + "y": 77.5 + }, + { + "x": 117.575, + "y": 77.5 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "Parallel1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "split", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "step1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -119.575, + "y": -7.5 + }, + { + "x": -118, + "y": -8 + }, + { + "x": -118, + "y": -30 + }, + { + "x": -11, + "y": -30 + } + ] + } + } + } + } + ] + } + } + ] + } + } + ], + "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 is an example to demonstrate in which way parallel activities\ncan be modelled by a StateGraph. When transition1 fires\n(after 1 second), two branches are executed in parallel.\nAfter 6 seconds the two branches are synchronized in order to arrive\nat step6.\n

\n

\nBefore simulating the model, try to figure out whether which branch\nof the alternative sequence is executed. Note, that alternatives\nhave priorities according to the port index (alternative.split[1]\nhas a higher priority to fire as alternative.split[2]).\n

\n\"" + } + } + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "experiment", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "StopTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "15" + } + } + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Diagram", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -200, + "y": -200 + }, + { + "x": 200, + "y": 200 + } + ] + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "model", + "class_specifier": { + "long_class_specifier": { + "identifier": "ShowCompositeStep", + "description_string": "Example to demonstrate parallel activities described by a StateGraph", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Example" + } + }, + { + "component_clause": { + "type_specifier": "Utilities.CompositeStep", + "component_list": [ + { + "declaration": { + "identifier": "compositeStep" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -10, + "y": 5 + }, + { + "x": 20, + "y": 35 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "InitialStep", + "component_list": [ + { + "declaration": { + "identifier": "step0" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -89, + "y": -10 + }, + { + "x": -69, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition1", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -59, + "y": -10 + }, + { + "x": -39, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "step1" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -4, + "y": -30 + }, + { + "x": 16, + "y": -10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition2", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 45, + "y": -10 + }, + { + "x": 65, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "step6" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 71, + "y": -10 + }, + { + "x": 91, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "TransitionWithSignal", + "component_list": [ + { + "declaration": { + "identifier": "transition7" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 10, + "y": -70 + }, + { + "x": -10, + "y": -50 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Parallel", + "component_list": [ + { + "declaration": { + "identifier": "Parallel1" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -30, + "y": -40 + }, + { + "x": 36, + "y": 40 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Sources.BooleanExpression", + "component_list": [ + { + "declaration": { + "identifier": "setCondition", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "y", + "modification": { + "equal": true, + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "time" + }, + { + "name": "7" + } + ], + "relation_operator": ">=" + } + ] + } + ] + } + } + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -40, + "y": -90 + }, + { + "x": -10, + "y": -70 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "inner": true, + "component_clause": { + "type_specifier": "StateGraphRoot", + "component_list": [ + { + "declaration": { + "identifier": "stateGraphRoot" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -90, + "y": 50 + }, + { + "x": -70, + "y": 70 + } + ] + } + } + } + } + } + ] + } + } + ] + } + } + ], + "element_sections": [ + { + "equation_section": { + "equation": [ + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "step0" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -68.5, + "y": 0 + }, + { + "x": -53, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition7" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "step0" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -1.5, + "y": -60 + }, + { + "x": -98, + "y": -60 + }, + { + "x": -98, + "y": 0 + }, + { + "x": -90, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "step6" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition7" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 91.5, + "y": 0 + }, + { + "x": 96, + "y": 0 + }, + { + "x": 96, + "y": -60 + }, + { + "x": 4, + "y": -60 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "step6" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 56.5, + "y": 0 + }, + { + "x": 70, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "Parallel1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -47.5, + "y": 0 + }, + { + "x": -30.99, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "Parallel1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 36.66, + "y": 0 + }, + { + "x": 51, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "compositeStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "Parallel1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "split", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -11, + "y": 20 + }, + { + "x": -22.575, + "y": 20 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "compositeStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "Parallel1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "join", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 20.5, + "y": 20 + }, + { + "x": 28.575, + "y": 20 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "step1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "Parallel1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "split", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -5, + "y": -20 + }, + { + "x": -10, + "y": -20 + }, + { + "x": -10, + "y": -20 + }, + { + "x": -14, + "y": -20 + }, + { + "x": -14, + "y": -20 + }, + { + "x": -22.575, + "y": -20 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "step1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "Parallel1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "join", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 16.5, + "y": -20 + }, + { + "x": 28.575, + "y": -20 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "setCondition" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "y" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition7" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "condition" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -8.5, + "y": -80 + }, + { + "x": 0, + "y": -80 + }, + { + "x": 0, + "y": -72 + } + ], + "color": { + "r": 255, + "g": 0, + "b": 255 + } + } + } + } + } + ] + } + } + ] + } + } + ], + "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 is the same example as \\\"ExecutionPaths\\\". The only difference\nis that the alternative paths are included in a \\\"CompositeStep\\\".\n

\n\"" + } + } + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "experiment", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "StopTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "15" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "model", + "class_specifier": { + "long_class_specifier": { + "identifier": "ShowExceptions", + "description_string": "Example to demonstrate how a hierarchically structured StateGraph can suspend and resume actions on different levels", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Example" + } + }, + { + "component_clause": { + "type_specifier": "Utilities.CompositeStep1", + "component_list": [ + { + "declaration": { + "identifier": "compositeStep" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -20, + "y": 25 + }, + { + "x": 10, + "y": 55 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "InitialStep", + "component_list": [ + { + "declaration": { + "identifier": "initialStep" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -80, + "y": 30 + }, + { + "x": -60, + "y": 50 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition1", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -50, + "y": 30 + }, + { + "x": -30, + "y": 50 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition2", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 20, + "y": 30 + }, + { + "x": 40, + "y": 50 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition3", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "2" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -55, + "y": -30 + }, + { + "x": -35, + "y": -10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "step1" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -24, + "y": -30 + }, + { + "x": -4, + "y": -10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition4", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 10, + "y": -30 + }, + { + "x": 30, + "y": -10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "inner": true, + "component_clause": { + "type_specifier": "StateGraphRoot", + "component_list": [ + { + "declaration": { + "identifier": "stateGraphRoot" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -90, + "y": -80 + }, + { + "x": -70, + "y": -60 + } + ] + } + } + } + } + } + ] + } + } + ] + } + } + ], + "element_sections": [ + { + "equation_section": { + "equation": [ + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "compositeStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -38.5, + "y": 40 + }, + { + "x": -21, + "y": 40 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "initialStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -59.5, + "y": 40 + }, + { + "x": -44, + "y": 40 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "compositeStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 10.5, + "y": 40 + }, + { + "x": 26, + "y": 40 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "initialStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 31.5, + "y": 40 + }, + { + "x": 46, + "y": 40 + }, + { + "x": 46, + "y": 80 + }, + { + "x": -90, + "y": 80 + }, + { + "x": -90, + "y": 40 + }, + { + "x": -81, + "y": 40 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "compositeStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "suspend", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition3" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -12.5, + "y": 24.5 + }, + { + "x": -12.5, + "y": 10 + }, + { + "x": -60, + "y": 10 + }, + { + "x": -60, + "y": -20 + }, + { + "x": -49, + "y": -20 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition3" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "step1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -43.5, + "y": -20 + }, + { + "x": -25, + "y": -20 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "step1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition4" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -3.5, + "y": -20 + }, + { + "x": 16, + "y": -20 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition4" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "compositeStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "resume", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 21.5, + "y": -20 + }, + { + "x": 40, + "y": -20 + }, + { + "x": 40, + "y": 10 + }, + { + "x": 2.5, + "y": 10 + }, + { + "x": 2.5, + "y": 24 + } + ] + } + } + } + } + ] + } + } + ] + } + } + ], + "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

\nCompositeStep \\\"compositeStep\\\" is a hierarchical StateGraph consisting of\ntwo other subgraphs. Whenever component \\\"compositeStep\\\" is suspended,\nall steps with in \\\"compositeStep\\\" are deactivated. By entering \\\"compositeStep\\\"\nvia its \\\"resume\\\" port, all steps within \\\"compositeStep\\\" are activated\naccording to their setting before leaving the \\\"compositeStep\\\" via its\n\\\"suspend\\\" port.\n

\n\"" + } + } + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "experiment", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "StopTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "20" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "model", + "class_specifier": { + "long_class_specifier": { + "identifier": "ControlledTanks", + "description_string": "Demonstrating the controller of a tank filling/emptying system", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Example" + } + }, + { + "component_clause": { + "type_specifier": "Utilities.TankController", + "component_list": [ + { + "declaration": { + "identifier": "tankController" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -50, + "y": -20 + }, + { + "x": -10, + "y": 20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "StateGraph.Temporary.RadioButton", + "component_list": [ + { + "declaration": { + "identifier": "start", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "reset", + "modification": { + "equal": true, + "expression": { + "simple_expression": "{stop.on,shut.on}" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "buttonTimeTable", + "modification": { + "equal": true, + "expression": { + "simple_expression": "{1,13,15,19}" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -90, + "y": 20 + }, + { + "x": -70, + "y": 40 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "StateGraph.Temporary.RadioButton", + "component_list": [ + { + "declaration": { + "identifier": "stop", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "reset", + "modification": { + "equal": true, + "expression": { + "simple_expression": "{start.on,shut.on}" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "buttonTimeTable", + "modification": { + "equal": true, + "expression": { + "simple_expression": "{13,15,19,21}" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -90, + "y": -10 + }, + { + "x": -70, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "StateGraph.Temporary.RadioButton", + "component_list": [ + { + "declaration": { + "identifier": "shut", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "reset", + "modification": { + "equal": true, + "expression": { + "simple_expression": "{start.on,stop.on}" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "buttonTimeTable", + "modification": { + "equal": true, + "expression": { + "simple_expression": "{21,100}" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -90, + "y": -40 + }, + { + "x": -70, + "y": -20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Utilities.Tank", + "component_list": [ + { + "declaration": { + "identifier": "tank1" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 10, + "y": 20 + }, + { + "x": 60, + "y": 70 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Utilities.Tank", + "component_list": [ + { + "declaration": { + "identifier": "tank2" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 34, + "y": -60 + }, + { + "x": 84, + "y": -10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Utilities.valve", + "component_list": [ + { + "declaration": { + "identifier": "valve1" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "origin": { + "x": 22.5, + "y": 72 + }, + "extent": [ + { + "x": -5.5, + "y": -5.5 + }, + { + "x": 5.5, + "y": 5.5 + } + ], + "rotation": 270 + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Utilities.Source", + "component_list": [ + { + "declaration": { + "identifier": "source" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 12.5, + "y": 80.5 + }, + { + "x": 32.5, + "y": 100.5 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Utilities.valve", + "component_list": [ + { + "declaration": { + "identifier": "valve2" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "origin": { + "x": 46.5, + "y": 13 + }, + "extent": [ + { + "x": -7, + "y": -8 + }, + { + "x": 7, + "y": 8 + } + ], + "rotation": 270 + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Utilities.valve", + "component_list": [ + { + "declaration": { + "identifier": "valve3" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "origin": { + "x": 73.5, + "y": -77 + }, + "extent": [ + { + "x": -7, + "y": -8 + }, + { + "x": 7, + "y": 8 + } + ], + "rotation": 270 + } + } + } + } + } + ] + } + } + ] + } + }, + { + "inner": true, + "component_clause": { + "type_specifier": "StateGraphRoot", + "component_list": [ + { + "declaration": { + "identifier": "stateGraphRoot" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -90, + "y": 75 + }, + { + "x": -70, + "y": 95 + } + ] + } + } + } + } + } + ] + } + } + ] + } + } + ], + "element_sections": [ + { + "equation_section": { + "equation": [ + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "tank1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outflow1" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "valve2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outflow1" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 50, + "y": 33.75 + }, + { + "x": 50, + "y": 26.875 + }, + { + "x": 46.5, + "y": 26.875 + }, + { + "x": 46.5, + "y": 16.5 + } + ], + "thickness": 0.5 + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "tank2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inflow1" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "valve2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inflow1" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 46.5, + "y": -18.75 + }, + { + "x": 46.5, + "y": 9.5 + } + ], + "thickness": 0.5 + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "tank2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outflow1" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "valve3" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outflow1" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 74, + "y": -46.25 + }, + { + "x": 74, + "y": -73.5 + }, + { + "x": 73.5, + "y": -73.5 + } + ], + "thickness": 0.5 + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "tank1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inflow1" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "valve1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inflow1" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 22.5, + "y": 61.25 + }, + { + "x": 22.5, + "y": 69.25 + } + ], + "thickness": 0.5 + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "shut" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "on" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "tankController" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "shut" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -69, + "y": -30 + }, + { + "x": -62, + "y": -30 + }, + { + "x": -62, + "y": -12 + }, + { + "x": -52, + "y": -12 + } + ], + "color": { + "r": 255, + "g": 0, + "b": 255 + } + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "stop" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "on" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "tankController" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "stop" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -69, + "y": 0 + }, + { + "x": -52, + "y": 0 + } + ], + "color": { + "r": 255, + "g": 0, + "b": 255 + } + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "start" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "on" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "tankController" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "start" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -69, + "y": 30 + }, + { + "x": -60, + "y": 30 + }, + { + "x": -60, + "y": 12 + }, + { + "x": -52, + "y": 12 + } + ], + "color": { + "r": 255, + "g": 0, + "b": 255 + } + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "tank1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "levelSensor" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "tankController" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "level1" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 17.25, + "y": 40 + }, + { + "x": -30, + "y": 40 + }, + { + "x": -30, + "y": 60 + }, + { + "x": -97, + "y": 60 + }, + { + "x": -97, + "y": -50 + }, + { + "x": -42, + "y": -50 + }, + { + "x": -42, + "y": -22 + } + ], + "color": { + "r": 0, + "g": 0, + "b": 255 + } + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "tank2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "levelSensor" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "tankController" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "level2" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 41.25, + "y": -40 + }, + { + "x": -18, + "y": -40 + }, + { + "x": -18, + "y": -22 + } + ], + "color": { + "r": 0, + "g": 0, + "b": 255 + } + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "tankController" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "valve1" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "valve1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "valveControl" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -9, + "y": 12 + }, + { + "x": 10, + "y": 12 + }, + { + "x": 10, + "y": 72 + }, + { + "x": 18.1, + "y": 72 + } + ], + "color": { + "r": 255, + "g": 0, + "b": 255 + } + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "tankController" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "valve2" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "valve2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "valveControl" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -9, + "y": 0 + }, + { + "x": 30, + "y": 0 + }, + { + "x": 30, + "y": 13 + }, + { + "x": 40.1, + "y": 13 + } + ], + "color": { + "r": 255, + "g": 0, + "b": 255 + } + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "tankController" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "valve3" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "valve3" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "valveControl" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -9, + "y": -12 + }, + { + "x": 23, + "y": -12 + }, + { + "x": 23, + "y": -77 + }, + { + "x": 67.1, + "y": -77 + } + ], + "color": { + "r": 255, + "g": 0, + "b": 255 + } + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "source" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outflow1" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "valve1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outflow1" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 22.5, + "y": 85.5 + }, + { + "x": 22.5, + "y": 74.75 + } + ], + "thickness": 0.5 + } + } + } + } + ] + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "experiment", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "StopTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "100" + } + } + } + } + } + ] + } + } + } + }, + { + "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

\nWith this example the controller of a tank filling/emptying system\nis demonstrated. This example is from Dressler (2004),\nsee Literature.\nThe basic operation is to fill and empty the two tanks:\n

\n
    \n
  1. Valve 1 is opened and tank 1 is filled.
  2. \n
  3. When tank 1 reaches its fill level limit,\n valve 1 is closed.
  4. \n
  5. After a waiting time, valve 2 is\n opened and the fluid flows from tank 1 into tank 2.
  6. \n
  7. When tank 1 is empty, valve 2 is closed.
  8. \n
  9. After a waiting time, valve 3 is opened and\n the fluid flows out of tank 2
  10. \n
  11. When tank 3 is empty, valve 3 is closed
  12. \n
\n

\nThe above \\\"normal\\\" process can be influenced by three\nbuttons:\n

\n
    \n
  • Button start starts the above process.\n When this button is pressed after a \\\"stop\\\" or\n \\\"shut\\\" operation, the process operation continues.\n
  • \n
  • Button stop stops the above process by\n closing all valves. Then, the controller waits for\n further input (either \\\"start\\\" or \\\"shut\\\" operation).
  • \n
  • Button shut is used to shutdown the process,\n by emptying at once both tanks. When this is achieved,\n the process goes back to its start configuration.\n Clicking on \\\"start\\\", restarts the process.
  • \n
\n\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "package", + "class_specifier": { + "long_class_specifier": { + "identifier": "Utilities", + "description_string": "Utility components for the examples", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.UtilitiesPackage" + } + }, + { + "class_definition": [ + { + "class_prefixes": "model", + "class_specifier": { + "long_class_specifier": { + "identifier": "TankController", + "description_string": "Controller for tank system", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "StateGraph.Interfaces.PartialStateGraphIcon" + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Temporary.SetRealParameter", + "component_list": [ + { + "declaration": { + "identifier": "limit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0.98" + } + } + }, + "description": { + "description_string": "Limit level of tank 1", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -64, + "y": 76 + }, + { + "x": -44, + "y": 96 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Temporary.SetRealParameter", + "component_list": [ + { + "declaration": { + "identifier": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "3" + } + } + }, + "description": { + "description_string": "Wait time", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -91, + "y": 76 + }, + { + "x": -71, + "y": 96 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "InitialStep", + "component_list": [ + { + "declaration": { + "identifier": "s1", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "nIn", + "modification": { + "equal": true, + "expression": { + "simple_expression": "2" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -72, + "y": 30 + }, + { + "x": -52, + "y": 50 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "MakeProduct", + "component_list": [ + { + "declaration": { + "identifier": "makeProduct", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "limit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "limit" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "waitTime" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -20, + "y": 25 + }, + { + "x": 10, + "y": 55 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "T1", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "condition", + "modification": { + "equal": true, + "expression": { + "simple_expression": "start" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -50, + "y": 50 + }, + { + "x": -30, + "y": 30 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "T2", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "condition", + "modification": { + "equal": true, + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "level2" + }, + { + "name": "0.001" + } + ], + "relation_operator": "<" + } + ] + } + ] + } + } + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 27, + "y": 50 + }, + { + "x": 47, + "y": 30 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "T3", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "condition", + "modification": { + "equal": true, + "expression": { + "simple_expression": "stop" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "origin": { + "x": -23, + "y": -1 + }, + "extent": [ + { + "x": -10, + "y": -10 + }, + { + "x": 10, + "y": 10 + } + ], + "rotation": 270 + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "s2", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "nOut", + "modification": { + "equal": true, + "expression": { + "simple_expression": "2" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -50, + "y": -60 + }, + { + "x": -30, + "y": -40 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "T4", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "condition", + "modification": { + "equal": true, + "expression": { + "simple_expression": "start" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "origin": { + "x": 10, + "y": -1 + }, + "extent": [ + { + "x": -10, + "y": -10 + }, + { + "x": 10, + "y": 10 + } + ], + "rotation": 90 + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "T5", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "condition", + "modification": { + "equal": true, + "expression": { + "simple_expression": "shut" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -6, + "y": -60 + }, + { + "x": 14, + "y": -40 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "emptyTanks" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 22, + "y": -60 + }, + { + "x": 42, + "y": -40 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "T6", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "condition", + "modification": { + "equal": true, + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "level1 +level2" + }, + { + "name": "0.001" + } + ], + "relation_operator": "<" + } + ] + } + ] + } + } + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 45, + "y": -60 + }, + { + "x": 65, + "y": -40 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Interfaces.BooleanInput", + "component_list": [ + { + "declaration": { + "identifier": "start" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -120, + "y": 50 + }, + { + "x": -100, + "y": 70 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Interfaces.BooleanInput", + "component_list": [ + { + "declaration": { + "identifier": "stop" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -120, + "y": -10 + }, + { + "x": -100, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Interfaces.BooleanInput", + "component_list": [ + { + "declaration": { + "identifier": "shut" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -120, + "y": -70 + }, + { + "x": -100, + "y": -50 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Interfaces.RealInput", + "component_list": [ + { + "declaration": { + "identifier": "level1" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "origin": { + "x": -60, + "y": -110 + }, + "extent": [ + { + "x": -10, + "y": -10 + }, + { + "x": 10, + "y": 10 + } + ], + "rotation": 90 + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Interfaces.RealInput", + "component_list": [ + { + "declaration": { + "identifier": "level2" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "origin": { + "x": 60, + "y": -110 + }, + "extent": [ + { + "x": -10, + "y": -10 + }, + { + "x": 10, + "y": 10 + } + ], + "rotation": 90 + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Interfaces.BooleanOutput", + "component_list": [ + { + "declaration": { + "identifier": "valve1" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 100, + "y": 55 + }, + { + "x": 110, + "y": 65 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Interfaces.BooleanOutput", + "component_list": [ + { + "declaration": { + "identifier": "valve2" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 100, + "y": -5 + }, + { + "x": 110, + "y": 5 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Interfaces.BooleanOutput", + "component_list": [ + { + "declaration": { + "identifier": "valve3" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 100, + "y": -65 + }, + { + "x": 110, + "y": -55 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Sources.BooleanExpression", + "component_list": [ + { + "declaration": { + "identifier": "setValve1", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "y", + "modification": { + "equal": true, + "expression": { + "simple_expression": "makeProduct.fillTank1.active" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 20, + "y": 73 + }, + { + "x": 80, + "y": 92 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Sources.BooleanExpression", + "component_list": [ + { + "declaration": { + "identifier": "setValve2", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "y", + "modification": { + "equal": true, + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "makeProduct.fillTank2.active" + } + ] + } + ] + }, + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "emptyTanks.active" + } + ] + } + ] + } + ] + } + } + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -25, + "y": -89 + }, + { + "x": 80, + "y": -68 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Sources.BooleanExpression", + "component_list": [ + { + "declaration": { + "identifier": "setValve3", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "y", + "modification": { + "equal": true, + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "makeProduct.emptyTank2.active" + } + ] + } + ] + }, + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "emptyTanks.active" + } + ] + } + ] + } + ] + } + } + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -26, + "y": -100 + }, + { + "x": 80, + "y": -80 + } + ] + } + } + } + } + } + ] + } + } + ] + } + } + ], + "element_sections": [ + { + "equation_section": { + "equation": [ + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "s1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "T1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -51.5, + "y": 40 + }, + { + "x": -44, + "y": 40 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "T1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "makeProduct" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -38.5, + "y": 40 + }, + { + "x": -21, + "y": 40 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "makeProduct" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "T2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 10.5, + "y": 40 + }, + { + "x": 33, + "y": 40 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "T5" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "emptyTanks" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 5.5, + "y": -50 + }, + { + "x": 21, + "y": -50 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "emptyTanks" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "T6" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 42.5, + "y": -50 + }, + { + "x": 51, + "y": -50 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "setValve1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "y" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "valve1" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 83, + "y": 82.5 + }, + { + "x": 90, + "y": 82.5 + }, + { + "x": 90, + "y": 60 + }, + { + "x": 105, + "y": 60 + } + ], + "color": { + "r": 255, + "g": 0, + "b": 255 + } + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "setValve2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "y" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "valve2" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 85.25, + "y": -78.5 + }, + { + "x": 90, + "y": -78.5 + }, + { + "x": 90, + "y": 0 + }, + { + "x": 105, + "y": 0 + } + ], + "color": { + "r": 255, + "g": 0, + "b": 255 + } + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "setValve3" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "y" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "valve3" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 85.3, + "y": -90 + }, + { + "x": 95, + "y": -90 + }, + { + "x": 95, + "y": -60 + }, + { + "x": 105, + "y": -60 + } + ], + "color": { + "r": 255, + "g": 0, + "b": 255 + } + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "makeProduct" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "suspend", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "T3" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -12.5, + "y": 24.5 + }, + { + "x": -12.5, + "y": 12 + }, + { + "x": -23, + "y": 12 + }, + { + "x": -23, + "y": 3 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "T3" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "s2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -23, + "y": -2.5 + }, + { + "x": -23, + "y": -20 + }, + { + "x": -66, + "y": -20 + }, + { + "x": -66, + "y": -50 + }, + { + "x": -51, + "y": -50 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "T4" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "makeProduct" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "resume", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 10, + "y": 0.5 + }, + { + "x": 10, + "y": 15 + }, + { + "x": 2.5, + "y": 15 + }, + { + "x": 2.5, + "y": 24 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "level1" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "makeProduct" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "level1" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -60, + "y": -110 + }, + { + "x": -60, + "y": -80 + }, + { + "x": -80, + "y": -80 + }, + { + "x": -80, + "y": 20 + }, + { + "x": -30, + "y": 20 + }, + { + "x": -30, + "y": 28 + }, + { + "x": -22, + "y": 28 + } + ], + "color": { + "r": 0, + "g": 0, + "b": 255 + } + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "s2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "T5" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -29.5, + "y": -49.75 + }, + { + "x": -30, + "y": -49.75 + }, + { + "x": -30, + "y": -50 + }, + { + "x": 0, + "y": -50 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "s2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "T4" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -29.5, + "y": -50.25 + }, + { + "x": -29, + "y": -50 + }, + { + "x": -8, + "y": -50 + }, + { + "x": -8, + "y": -25 + }, + { + "x": 10, + "y": -25 + }, + { + "x": 10, + "y": -5 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "T2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "s1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 38.5, + "y": 40 + }, + { + "x": 70, + "y": 40 + }, + { + "x": 70, + "y": 70 + }, + { + "x": -84, + "y": 70 + }, + { + "x": -84, + "y": 40 + }, + { + "x": -73, + "y": 40 + }, + { + "x": -73, + "y": 40.5 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "T6" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "s1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 56.5, + "y": -50 + }, + { + "x": 70, + "y": -50 + }, + { + "x": 70, + "y": 70 + }, + { + "x": -84, + "y": 70 + }, + { + "x": -84, + "y": 40 + }, + { + "x": -74, + "y": 40 + }, + { + "x": -73, + "y": 39.5 + } + ] + } + } + } + } + ] + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Diagram", + "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 + } + ] + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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": 68 + }, + { + "x": -32, + "y": 54 + } + ], + "textString": "\"start\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -100, + "y": 6 + }, + { + "x": -32, + "y": -8 + } + ], + "textString": "\"stop\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -100, + "y": -54 + }, + { + "x": -32, + "y": -68 + } + ], + "textString": "\"shut\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -94, + "y": -82 + }, + { + "x": -18, + "y": -96 + } + ], + "textString": "\"level1\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 24, + "y": -84 + }, + { + "x": 96, + "y": -98 + } + ], + "textString": "\"level2\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 31, + "y": 68 + }, + { + "x": 99, + "y": 54 + } + ], + "textString": "\"valve1\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 33, + "y": 9 + }, + { + "x": 101, + "y": -5 + } + ], + "textString": "\"valve2\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 34, + "y": -53 + }, + { + "x": 102, + "y": -67 + } + ], + "textString": "\"valve3\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "model", + "class_specifier": { + "long_class_specifier": { + "identifier": "MakeProduct", + "description_string": "State machine defining the time instants when to fill or empty a tank", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "StateGraph.PartialCompositeStep" + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "StateGraph.Temporary.SetRealParameter", + "component_list": [ + { + "declaration": { + "identifier": "limit", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0.98" + } + } + }, + "description": { + "description_string": "Limit level of tank 1", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -60, + "y": 40 + }, + { + "x": -20, + "y": 60 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "StateGraph.Temporary.SetRealParameter", + "component_list": [ + { + "declaration": { + "identifier": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "3" + } + } + }, + "description": { + "description_string": "Wait time", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -120, + "y": 40 + }, + { + "x": -80, + "y": 60 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Interfaces.RealInput", + "component_list": [ + { + "declaration": { + "identifier": "level1" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -190, + "y": -140 + }, + { + "x": -150, + "y": -100 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "fillTank1" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -140, + "y": -10 + }, + { + "x": -120, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "T1", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "condition", + "modification": { + "equal": true, + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "level1" + }, + { + "name": "limit" + } + ], + "relation_operator": ">" + } + ] + } + ] + } + } + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -110, + "y": -10 + }, + { + "x": -90, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "fillTank2" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -10, + "y": -10 + }, + { + "x": 10, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "T3", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "condition", + "modification": { + "equal": true, + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "level1" + }, + { + "name": "0.001" + } + ], + "relation_operator": "<" + } + ] + } + ] + } + } + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 20, + "y": -10 + }, + { + "x": 40, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "emptyTank2" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 120, + "y": -10 + }, + { + "x": 140, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "wait1" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -80, + "y": -10 + }, + { + "x": -60, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "T2", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "waitTime" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -50, + "y": -10 + }, + { + "x": -30, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "wait2" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 54, + "y": -10 + }, + { + "x": 74, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "T4", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "waitTime" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 82, + "y": -10 + }, + { + "x": 102, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + } + ], + "element_sections": [ + { + "equation_section": { + "equation": [ + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "fillTank1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -141, + "y": 0 + }, + { + "x": -160, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "fillTank1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "T1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -119.5, + "y": 0 + }, + { + "x": -104, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "fillTank2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "T3" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 10.5, + "y": 0 + }, + { + "x": 26, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "emptyTank2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "outPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 140.5, + "y": 0 + }, + { + "x": 155, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "wait1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "T2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -59.5, + "y": 0 + }, + { + "x": -44, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "T2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "fillTank2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -38.5, + "y": 0 + }, + { + "x": -11, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "T1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "wait1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -98.5, + "y": 0 + }, + { + "x": -81, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "wait2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "T4" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 74.5, + "y": 0 + }, + { + "x": 88, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "T3" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "wait2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 31.5, + "y": 0 + }, + { + "x": 53, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "T4" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "emptyTank2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 93.5, + "y": 0 + }, + { + "x": 119, + "y": 0 + } + ] + } + } + } + } + ] + } + } + ] + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "connector", + "class_specifier": { + "long_class_specifier": { + "identifier": "Inflow1", + "description_string": "Inflow connector (this is a copy from Isolde Dressler's master thesis project)", + "composition": { + "element_list": [ + { + "import_clause": { + "identifier": "Units", + "name": "Modelica.SIunits" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Units.VolumeFlowRate", + "component_list": [ + { + "declaration": { + "identifier": "Fi" + }, + "description": { + "description_string": "inflow" + } + } + ] + } + } + ], + "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": "Polygon", + "attribute": { + "points": [ + { + "x": -100, + "y": -100 + }, + { + "x": 0, + "y": 100 + }, + { + "x": 100, + "y": -100 + }, + { + "x": -100, + "y": -100 + } + ], + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.Solid", + "lineThickness": 0.5 + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "connector", + "class_specifier": { + "long_class_specifier": { + "identifier": "Inflow2", + "description_string": "Inflow connector (this is a copy from Isolde Dressler's master thesis project)", + "composition": { + "element_list": [ + { + "import_clause": { + "identifier": "Units", + "name": "Modelica.SIunits" + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Units.VolumeFlowRate", + "component_list": [ + { + "declaration": { + "identifier": "Fi" + }, + "description": { + "description_string": "inflow" + } + } + ] + } + } + ], + "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": "Polygon", + "attribute": { + "points": [ + { + "x": -100, + "y": -100 + }, + { + "x": 0, + "y": 100 + }, + { + "x": 100, + "y": -100 + }, + { + "x": -100, + "y": -100 + } + ], + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.Solid", + "lineThickness": 0.5 + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "connector", + "class_specifier": { + "long_class_specifier": { + "identifier": "Outflow1", + "description_string": "Outflow connector (this is a copy from Isolde Dressler's master thesis project)", + "composition": { + "element_list": [ + { + "import_clause": { + "identifier": "Units", + "name": "Modelica.SIunits" + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Units.VolumeFlowRate", + "component_list": [ + { + "declaration": { + "identifier": "Fo" + }, + "description": { + "description_string": "outflow" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "open" + }, + "description": { + "description_string": "valve open" + } + } + ] + } + } + ], + "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": "Polygon", + "attribute": { + "points": [ + { + "x": -100, + "y": 100 + }, + { + "x": 0, + "y": -100 + }, + { + "x": 100, + "y": 100 + }, + { + "x": -100, + "y": 100 + } + ], + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.Solid", + "lineThickness": 0.5 + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "connector", + "class_specifier": { + "long_class_specifier": { + "identifier": "Outflow2", + "description_string": "Outflow connector (this is a copy from Isolde Dressler's master thesis project)", + "composition": { + "element_list": [ + { + "import_clause": { + "identifier": "Units", + "name": "Modelica.SIunits" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Units.VolumeFlowRate", + "component_list": [ + { + "declaration": { + "identifier": "Fo" + }, + "description": { + "description_string": "outflow" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "open" + }, + "description": { + "description_string": "valve open" + } + } + ] + } + } + ], + "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": "Polygon", + "attribute": { + "points": [ + { + "x": -100, + "y": 100 + }, + { + "x": 0, + "y": -100 + }, + { + "x": 100, + "y": 100 + }, + { + "x": -100, + "y": 100 + } + ], + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.Solid", + "lineThickness": 0.5 + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "model", + "class_specifier": { + "long_class_specifier": { + "identifier": "valve", + "description_string": "Simple valve model (this is a copy from Isolde Dressler's master thesis project)", + "composition": { + "element_list": [ + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Interfaces.BooleanInput", + "component_list": [ + { + "declaration": { + "identifier": "valveControl" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "origin": { + "x": 0, + "y": -80 + }, + "extent": [ + { + "x": -20, + "y": -20 + }, + { + "x": 20, + "y": 20 + } + ], + "rotation": 90 + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.StateGraph.Examples.Utilities.Inflow2", + "component_list": [ + { + "declaration": { + "identifier": "inflow1" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "origin": { + "x": 50, + "y": 0 + }, + "extent": [ + { + "x": -50, + "y": -50 + }, + { + "x": 50, + "y": 50 + } + ], + "rotation": 90 + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.StateGraph.Examples.Utilities.Outflow2", + "component_list": [ + { + "declaration": { + "identifier": "outflow1" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "origin": { + "x": -50, + "y": 0 + }, + "extent": [ + { + "x": -50, + "y": -50 + }, + { + "x": 50, + "y": 50 + } + ], + "rotation": 90 + } + } + } + } + } + ] + } + } + ] + } + } + ], + "element_sections": [ + { + "equation_section": { + "equation": [ + { + "assignment_equation": { + "lhs": "outflow1.Fo", + "rhs": { + "simple_expression": "inflow1.Fi" + } + } + }, + { + "assignment_equation": { + "lhs": "outflow1.open", + "rhs": { + "simple_expression": "valveControl" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Diagram", + "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": "Line", + "attribute": { + "points": [ + { + "x": 0, + "y": -60 + }, + { + "x": 0, + "y": 0 + } + ], + "color": { + "r": 255, + "g": 0, + "b": 255 + } + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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": "Line", + "attribute": { + "points": [ + { + "x": 20, + "y": 20 + }, + { + "x": 20, + "y": 20 + } + ], + "thickness": 0.5 + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -131, + "y": 125 + }, + { + "x": 136, + "y": 67 + } + ], + "textString": "\"%name\"", + "lineColor": { + "r": 0, + "g": 0, + "b": 255 + } + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 0, + "y": 0 + }, + { + "x": 0, + "y": -60 + } + ], + "color": { + "r": 255, + "g": 0, + "b": 255 + } + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "model", + "class_specifier": { + "long_class_specifier": { + "identifier": "Tank", + "description_string": "Simple tank model (this is a copy from Isolde Dressler's master thesis project)", + "composition": { + "element_list": [ + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Interfaces.RealOutput", + "component_list": [ + { + "declaration": { + "identifier": "levelSensor" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -61, + "y": -30 + }, + { + "x": -81, + "y": -10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.StateGraph.Examples.Utilities.Inflow1", + "component_list": [ + { + "declaration": { + "identifier": "inflow1" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -55, + "y": 60 + }, + { + "x": -45, + "y": 70 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.StateGraph.Examples.Utilities.Outflow1", + "component_list": [ + { + "declaration": { + "identifier": "outflow1" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 55, + "y": -50 + }, + { + "x": 65, + "y": -40 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Real", + "component_list": [ + { + "declaration": { + "identifier": "level", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "start", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "fixed", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + }, + "description": { + "description_string": "Tank level in % of max height" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Real", + "component_list": [ + { + "declaration": { + "identifier": "A", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + }, + "description": { + "description_string": "Ground area of tank in m^2" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Real", + "component_list": [ + { + "declaration": { + "identifier": "a", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0.2" + } + } + }, + "description": { + "description_string": "Area of drain hole in m^2" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Real", + "component_list": [ + { + "declaration": { + "identifier": "hmax", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + }, + "description": { + "description_string": "Max height of tank in m" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "constant", + "type_specifier": "Real", + "component_list": [ + { + "declaration": { + "identifier": "g", + "modification": { + "equal": true, + "expression": { + "simple_expression": "Modelica.Constants.g_n" + } + } + } + } + ] + } + } + ], + "element_sections": [ + { + "equation_section": { + "equation": [ + { + "assignment_equation": { + "lhs": "der(level)", + "rhs": { + "simple_expression": "(inflow1.Fi -outflow1.Fo)/(hmax*A)" + } + } + }, + { + "if_equation": { + "if_elseif": [ + { + "condition": { + "simple_expression": "outflow1.open" + }, + "then": [ + { + "equation": { + "assignment_equation": { + "lhs": "outflow1.Fo", + "rhs": { + "simple_expression": "sqrt(max(0,2*g*hmax*level))*a" + } + } + } + } + ] + } + ] + } + }, + { + "assignment_equation": { + "lhs": "levelSensor", + "rhs": { + "simple_expression": "level" + } + } + } + ] + } + } + ], + "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": "Text", + "attribute": { + "extent": [ + { + "x": -122, + "y": -82 + }, + { + "x": 88, + "y": -42 + } + ], + "textString": "\"%name\"", + "lineColor": { + "r": 0, + "g": 0, + "b": 255 + } + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -60, + "y": 60 + }, + { + "x": 80, + "y": -40 + } + ], + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.Solid", + "lineThickness": 0.5 + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -60, + "y": -40 + }, + { + "x": -60, + "y": -40 + }, + { + "x": null, + "y": null + }, + { + "x": -60, + "y": -40 + }, + { + "x": 80, + "y": null + } + ], + "fillColor": { + "r": 191, + "g": 0, + "b": 95 + }, + "fillPattern": "FillPattern.HorizontalCylinder", + "lineThickness": 0.5 + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "model", + "class_specifier": { + "long_class_specifier": { + "identifier": "Source", + "description_string": "Simple source model (this is a copy from Isolde Dressler's master thesis project)", + "composition": { + "element_list": [ + { + "component_clause": { + "type_specifier": "Modelica.StateGraph.Examples.Utilities.Outflow1", + "component_list": [ + { + "declaration": { + "identifier": "outflow1" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -10, + "y": -60 + }, + { + "x": 10, + "y": -40 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Real", + "component_list": [ + { + "declaration": { + "identifier": "maxflow", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + }, + "description": { + "description_string": "maximal flow out of source" + } + } + ] + } + } + ], + "element_sections": [ + { + "equation_section": { + "equation": [ + { + "if_equation": { + "if_elseif": [ + { + "condition": { + "simple_expression": "outflow1.open" + }, + "then": [ + { + "equation": { + "assignment_equation": { + "lhs": "outflow1.Fo", + "rhs": { + "simple_expression": "maxflow" + } + } + } + } + ] + } + ] + } + } + ] + } + } + ], + "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": -80, + "y": 40 + }, + { + "x": 80, + "y": -40 + } + ], + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.Solid", + "lineThickness": 0.5 + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -144, + "y": 54 + }, + { + "x": 152, + "y": 114 + } + ], + "textString": "\"%name\"", + "lineColor": { + "r": 0, + "g": 0, + "b": 255 + } + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "model", + "class_specifier": { + "long_class_specifier": { + "identifier": "CompositeStep", + "description_string": "State machine demonstrating a composite step (used in StateGraph.Examples.ShowCompositeStep)", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "StateGraph.PartialCompositeStep" + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition3", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -64, + "y": 50 + }, + { + "x": -44, + "y": 70 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition4", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -64, + "y": -10 + }, + { + "x": -44, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "step3" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -10, + "y": 50 + }, + { + "x": 10, + "y": 70 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "step4" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -10, + "y": -10 + }, + { + "x": 10, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition5", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "2" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 36, + "y": 50 + }, + { + "x": 56, + "y": 70 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition6", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "2" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 36, + "y": -10 + }, + { + "x": 56, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition4a", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -64, + "y": -70 + }, + { + "x": -44, + "y": -50 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "step4a" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -10, + "y": -70 + }, + { + "x": 10, + "y": -50 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition6a", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "2" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 36, + "y": -70 + }, + { + "x": 56, + "y": -50 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "initStep" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -140, + "y": -10 + }, + { + "x": -120, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "exitStep" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 120, + "y": -10 + }, + { + "x": 140, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Alternative", + "component_list": [ + { + "declaration": { + "identifier": "Alternative1", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "nBranches", + "modification": { + "equal": true, + "expression": { + "simple_expression": "3" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -98, + "y": -90 + }, + { + "x": 98, + "y": 90 + } + ] + } + } + } + } + } + ] + } + } + ] + } + } + ], + "element_sections": [ + { + "equation_section": { + "equation": [ + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition3" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "step3" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -52.5, + "y": 60 + }, + { + "x": -11, + "y": 60 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "step3" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition5" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 10.5, + "y": 60 + }, + { + "x": 42, + "y": 60 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition4" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "step4" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -52.5, + "y": 0 + }, + { + "x": -11, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "step4" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition6" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 10.5, + "y": 0 + }, + { + "x": 42, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition4a" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "step4a" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -52.5, + "y": -60 + }, + { + "x": -11, + "y": -60 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "step4a" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition6a" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 10.5, + "y": -60 + }, + { + "x": 42, + "y": -60 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "initStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -141, + "y": 0 + }, + { + "x": -160, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "exitStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "outPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 140.5, + "y": 0 + }, + { + "x": 155, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "initStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "Alternative1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -119.5, + "y": 0 + }, + { + "x": -100.94, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "Alternative1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "exitStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 99.96, + "y": 0 + }, + { + "x": 119, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition3" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "Alternative1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "split", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -58, + "y": 60 + }, + { + "x": -77.42, + "y": 60 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition4" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "Alternative1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "split", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -58, + "y": 0 + }, + { + "x": -67.975, + "y": 0 + }, + { + "x": -77.42, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition4a" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "Alternative1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "split", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -58, + "y": -60 + }, + { + "x": -67.975, + "y": -60 + }, + { + "x": -77.42, + "y": -60 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition5" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "Alternative1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "join", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 47.5, + "y": 60 + }, + { + "x": 77.42, + "y": 60 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition6" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "Alternative1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "join", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 47.5, + "y": 0 + }, + { + "x": 60.725, + "y": 0 + }, + { + "x": 77.42, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition6a" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "Alternative1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "join", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 47.5, + "y": -60 + }, + { + "x": 60.725, + "y": -60 + }, + { + "x": 77.42, + "y": -60 + } + ] + } + } + } + } + ] + } + } + ] + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "model", + "class_specifier": { + "long_class_specifier": { + "identifier": "CompositeStep1", + "description_string": "Composite step used to demonstrate exceptions (in StateGraph.Examples.ShowExceptions)", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "PartialCompositeStep" + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition1", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "false" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "condition", + "modification": { + "equal": true, + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "time" + }, + { + "name": "8" + } + ], + "relation_operator": ">=" + } + ] + } + ] + } + } + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -60, + "y": 20 + }, + { + "x": -40, + "y": 40 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "initStep" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -140, + "y": -10 + }, + { + "x": -120, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "exitStep" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 110, + "y": -10 + }, + { + "x": 130, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "CompositeStep2", + "component_list": [ + { + "declaration": { + "identifier": "compositeStep11", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "3" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -20, + "y": 15 + }, + { + "x": 10, + "y": 45 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "CompositeStep2", + "component_list": [ + { + "declaration": { + "identifier": "compositeStep12", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "2" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -20, + "y": -45 + }, + { + "x": 10, + "y": -15 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition2", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "condition", + "modification": { + "equal": true, + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "time" + }, + { + "name": "4" + } + ], + "relation_operator": ">=" + } + ] + } + ] + } + } + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "false" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -61, + "y": -40 + }, + { + "x": -41, + "y": -20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition3", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "false" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 29, + "y": 20 + }, + { + "x": 49, + "y": 40 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition4", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "false" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 29, + "y": -40 + }, + { + "x": 49, + "y": -20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Alternative", + "component_list": [ + { + "declaration": { + "identifier": "Alternative1" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -100, + "y": -60 + }, + { + "x": 89, + "y": 60 + } + ] + } + } + } + } + } + ] + } + } + ] + } + } + ], + "element_sections": [ + { + "equation_section": { + "equation": [ + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "exitStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "outPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 130.5, + "y": 0 + }, + { + "x": 155, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "initStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -141, + "y": 0 + }, + { + "x": -160, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "compositeStep11" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -48.5, + "y": 30 + }, + { + "x": -21, + "y": 30 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "compositeStep12" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -49.5, + "y": -30 + }, + { + "x": -21, + "y": -30 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "compositeStep11" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition3" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 10.5, + "y": 30 + }, + { + "x": 35, + "y": 30 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "compositeStep12" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition4" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 10.5, + "y": -30 + }, + { + "x": 35, + "y": -30 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "initStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "Alternative1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -119.5, + "y": 0 + }, + { + "x": -102.835, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "Alternative1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "exitStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 90.89, + "y": 0 + }, + { + "x": 109, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "Alternative1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "split", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -54, + "y": 30 + }, + { + "x": -80.155, + "y": 30 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition2" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "Alternative1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "split", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -55, + "y": -30 + }, + { + "x": -80.155, + "y": -30 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition3" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "Alternative1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "join", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 40.5, + "y": 30 + }, + { + "x": 69.155, + "y": 30 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition4" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "Alternative1" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "join", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 40.5, + "y": -30 + }, + { + "x": 69.155, + "y": -30 + } + ] + } + } + } + } + ] + } + } + ] + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "model", + "class_specifier": { + "long_class_specifier": { + "identifier": "CompositeStep2", + "description_string": "Composite step used to demonstrate exceptions (in StateGraph.Examples.ShowExceptions)", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "PartialCompositeStep" + } + }, + { + "component_clause": { + "type_specifier": "Transition", + "component_list": [ + { + "declaration": { + "identifier": "transition", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "waitTime" + } + } + } + } + } + ] + } + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -30, + "y": -10 + }, + { + "x": -10, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "initStep" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -140, + "y": -10 + }, + { + "x": -120, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step", + "component_list": [ + { + "declaration": { + "identifier": "exitStep" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 110, + "y": -10 + }, + { + "x": 130, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Temporary.SetRealParameter", + "component_list": [ + { + "declaration": { + "identifier": "waitTime", + "modification": { + "equal": true, + "expression": { + "simple_expression": "2" + } + } + }, + "description": { + "description_string": "waiting time in this composite step", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -80, + "y": 30 + }, + { + "x": -50, + "y": 50 + } + ] + } + } + } + } + } + ] + } + } + ] + } + } + ], + "element_sections": [ + { + "equation_section": { + "equation": [ + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "exitStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "outPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": 130.5, + "y": 0 + }, + { + "x": 155, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "initStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -141, + "y": 0 + }, + { + "x": -160, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "initStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort", + "array_subscripts": [] + } + ], + "to": [ + { + "dot_op": false, + "identifier": "transition" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort" + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -119.5, + "y": 0 + }, + { + "x": -24, + "y": 0 + } + ] + } + } + } + } + ] + } + }, + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "transition" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "outPort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "exitStep" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "inPort", + "array_subscripts": [] + } + ] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Line": { + "points": [ + { + "x": -18.5, + "y": 0 + }, + { + "x": 109, + "y": 0 + } + ] + } + } + } + } + ] + } + } + ] + } + } + ] + } + } + } + } + ] + } + ] + } + } + } + } + ] + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "package", + "class_specifier": { + "long_class_specifier": { + "identifier": "Interfaces", + "description_string": "Connectors and partial models", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.InterfacesPackage" + } + }, + { + "class_definition": [ + { + "class_prefixes": "connector", + "class_specifier": { + "long_class_specifier": { + "identifier": "Step_in", + "description_string": "Input port of a step", + "composition": { + "element_list": [ + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "occupied" + }, + "description": { + "description_string": "true, if step is active", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "set" + }, + "description": { + "description_string": "true, if transition fires and step is activated", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + } + ], + "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": "Polygon", + "attribute": { + "points": [ + { + "x": -100, + "y": 100 + }, + { + "x": 100, + "y": 0 + }, + { + "x": -100, + "y": -100 + }, + { + "x": -100, + "y": 100 + } + ], + "fillPattern": "FillPattern.Solid" + } + } + ] + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Diagram", + "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": "Polygon", + "attribute": { + "points": [ + { + "x": 0, + "y": 50 + }, + { + "x": 100, + "y": 0 + }, + { + "x": 0, + "y": -50 + }, + { + "x": 0, + "y": 50 + } + ], + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -141, + "y": 100 + }, + { + "x": 100, + "y": 60 + } + ], + "textString": "\"%name\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "connector", + "class_specifier": { + "long_class_specifier": { + "identifier": "Step_out", + "description_string": "Output port of a step", + "composition": { + "element_list": [ + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "available" + }, + "description": { + "description_string": "true, if step is active", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "reset" + }, + "description": { + "description_string": "true, if transition fires and step is deactivated", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + } + ], + "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 + } + ], + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.Solid" + } + } + ] + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Diagram", + "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": 50 + }, + { + "x": 0, + "y": -50 + } + ], + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -100, + "y": 100 + }, + { + "x": 186, + "y": 58 + } + ], + "textString": "\"%name\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "connector", + "class_specifier": { + "long_class_specifier": { + "identifier": "Transition_in", + "description_string": "Input port of a transition", + "composition": { + "element_list": [ + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "available" + }, + "description": { + "description_string": "true, if step connected to the transition input is active", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "reset" + }, + "description": { + "description_string": "true, if transition fires and the step connected to the transition input is deactivated", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + } + ], + "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": "Polygon", + "attribute": { + "points": [ + { + "x": -100, + "y": 100 + }, + { + "x": 100, + "y": 0 + }, + { + "x": -100, + "y": -100 + }, + { + "x": -100, + "y": 100 + } + ], + "fillPattern": "FillPattern.Solid" + } + } + ] + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Diagram", + "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": "Polygon", + "attribute": { + "points": [ + { + "x": 0, + "y": 50 + }, + { + "x": 100, + "y": 0 + }, + { + "x": 0, + "y": -50 + }, + { + "x": 0, + "y": 50 + } + ], + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -141, + "y": 100 + }, + { + "x": 100, + "y": 60 + } + ], + "textString": "\"%name\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "connector", + "class_specifier": { + "long_class_specifier": { + "identifier": "Transition_out", + "description_string": "Output port of a transition", + "composition": { + "element_list": [ + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "occupied" + }, + "description": { + "description_string": "true, if step connected to the transition output is active", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "set" + }, + "description": { + "description_string": "true, if transition fires and step connected to the transition output becomes active", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + } + ], + "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 + } + ], + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.Solid" + } + } + ] + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Diagram", + "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": 100 + }, + { + "x": 146, + "y": 60 + } + ], + "textString": "\"%name\"" + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": 50 + }, + { + "x": 0, + "y": -50 + } + ], + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.Solid" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "connector", + "class_specifier": { + "long_class_specifier": { + "identifier": "CompositeStep_resume", + "description_string": "Input port of a step (used for resume connector of a CompositeStep)", + "composition": { + "element_list": [ + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "occupied" + }, + "description": { + "description_string": "true, if step is active", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "set" + }, + "description": { + "description_string": "true, if transition fires and step is activated", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + } + ], + "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": "Polygon", + "attribute": { + "points": [ + { + "x": -100, + "y": 100 + }, + { + "x": 100, + "y": 0 + }, + { + "x": -100, + "y": -100 + }, + { + "x": -100, + "y": 100 + } + ], + "fillPattern": "FillPattern.Solid" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "connector", + "class_specifier": { + "long_class_specifier": { + "identifier": "CompositeStep_suspend", + "description_string": "Output port of a step (used for suspend connector of a CompositeStep)", + "composition": { + "element_list": [ + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "available" + }, + "description": { + "description_string": "true, if step is active", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "reset" + }, + "description": { + "description_string": "true, if transition fires and step is deactivated", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + } + ], + "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 + } + ], + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.Solid" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "connector", + "class_specifier": { + "long_class_specifier": { + "identifier": "CompositeStepStatePort_in", + "description_string": "Communication port between a CompositeStep and the ordinary steps within the CompositeStep (suspend/resume are inputs)", + "composition": { + "element_list": [ + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "suspend" + }, + "description": { + "description_string": "= true, if suspend transition of CompositeStep fires" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "resume" + }, + "description": { + "description_string": "= true, if resume transition of CompositeStep fires" + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Real", + "component_list": [ + { + "declaration": { + "identifier": "activeStepsDummy" + }, + "description": { + "description_string": "Dummy variable in order that connector fulfills restriction of connector", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "flow", + "type_specifier": "Real", + "component_list": [ + { + "declaration": { + "identifier": "activeSteps" + }, + "description": { + "description_string": "Number of active steps in the CompositeStep" + } + } + ] + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "connector", + "class_specifier": { + "long_class_specifier": { + "identifier": "CompositeStepStatePort_out", + "description_string": "Communication port between a CompositeStep and the ordinary steps within the CompositeStep (suspend/resume are outputs)", + "composition": { + "element_list": [ + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "suspend" + }, + "description": { + "description_string": "= true, if suspend transition of CompositeStep fires" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "resume" + }, + "description": { + "description_string": "= true, if resume transition of CompositeStep fires" + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Real", + "component_list": [ + { + "declaration": { + "identifier": "activeStepsDummy" + }, + "description": { + "description_string": "Dummy variable in order that connector fulfills restriction of connector", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "flow", + "type_specifier": "Real", + "component_list": [ + { + "declaration": { + "identifier": "activeSteps" + }, + "description": { + "description_string": "Number of active steps in the CompositeStep" + } + } + ] + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial block", + "class_specifier": { + "long_class_specifier": { + "identifier": "PartialStep", + "description_string": "Partial step with one input and one output transition port", + "composition": { + "element_list": [ + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Integer", + "component_list": [ + { + "declaration": { + "identifier": "nIn", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ], + "equal": true, + "expression": { + "simple_expression": "1" + } + } + }, + "description": { + "description_string": "Number of input connections" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Integer", + "component_list": [ + { + "declaration": { + "identifier": "nOut", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ], + "equal": true, + "expression": { + "simple_expression": "1" + } + } + }, + "description": { + "description_string": "Number of output connections" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "localActive" + }, + "description": { + "description_string": "= true if step is active, otherwise the step is not active", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Interfaces.Step_in", + "component_list": [ + { + "declaration": { + "identifier": "inPort", + "array_subscripts": [] + }, + "description": { + "description_string": "Vector of step input connectors", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -120, + "y": 10 + }, + { + "x": -100, + "y": -10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Interfaces.Step_out", + "component_list": [ + { + "declaration": { + "identifier": "outPort", + "array_subscripts": [] + }, + "description": { + "description_string": "Vector of step output connectors", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 100, + "y": 5 + }, + { + "x": 110, + "y": -5 + } + ] + } + } + } + } + } + ] + } + } + ] + } + } + ], + "element_sections": [ + { + "protected_element_list": [ + { + "outer": true, + "component_clause": { + "type_specifier": "Interfaces.CompositeStepState", + "component_list": [ + { + "declaration": { + "identifier": "stateGraphRoot" + } + } + ] + } + }, + { + "class_definition": [ + { + "class_prefixes": "model", + "class_specifier": { + "long_class_specifier": { + "identifier": "OuterStatePort", + "composition": { + "element_list": [ + { + "component_clause": { + "type_specifier": "CompositeStepStatePort_in", + "component_list": [ + { + "declaration": { + "identifier": "subgraphStatePort" + } + } + ] + } + } + ] + } + } + } + } + ] + }, + { + "component_clause": { + "type_specifier": "OuterStatePort", + "component_list": [ + { + "declaration": { + "identifier": "outerStatePort" + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "newActive" + }, + "description": { + "description_string": "Value of active in the next iteration", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "oldActive" + }, + "description": { + "description_string": "Value of active when CompositeStep was aborted" + } + } + ] + } + } + ] + }, + { + "equation_section": { + "initial": true, + "equation": [ + { + "assignment_equation": { + "lhs": { + "function_call": { + "name": "pre", + "arguments": [ + { + "name": "newActive" + } + ] + } + }, + "rhs": { + "simple_expression": { + "function_call": { + "name": "pre", + "arguments": [ + { + "name": "localActive" + } + ] + } + } + } + } + }, + { + "assignment_equation": { + "lhs": { + "function_call": { + "name": "pre", + "arguments": [ + { + "name": "oldActive" + } + ] + } + }, + "rhs": { + "simple_expression": { + "function_call": { + "name": "pre", + "arguments": [ + { + "name": "localActive" + } + ] + } + } + } + } + } + ] + } + }, + { + "equation_section": { + "equation": [ + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "outerStatePort" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "subgraphStatePort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "stateGraphRoot" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "subgraphStatePort" + } + ] + } + }, + { + "for_equation": { + "for_indices": [ + { + "identifier": "i", + "expression": { + "simple_expression": "1:nIn" + } + } + ], + "loop_equations": [ + { + "function_call_equation": { + "function_name": "assert", + "function_call_args": { + "function_argument": { + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "cardinality(inPort[i])" + }, + { + "name": "1" + } + ], + "relation_operator": "<=" + } + ] + } + ] + } + } + } + }, + "function_arguments": { + "function_argument": { + "expression": { + "simple_expression": "\"Connector is connected to more than one transition (this is not allowed)\"" + } + } + } + } + } + } + ] + } + }, + { + "for_equation": { + "for_indices": [ + { + "identifier": "i", + "expression": { + "simple_expression": "1:nOut" + } + } + ], + "loop_equations": [ + { + "function_call_equation": { + "function_name": "assert", + "function_call_args": { + "function_argument": { + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "cardinality(outPort[i])" + }, + { + "name": "1" + } + ], + "relation_operator": "<=" + } + ] + } + ] + } + } + } + }, + "function_arguments": { + "function_argument": { + "expression": { + "simple_expression": "\"Connector is connected to more than one transition (this is not allowed)\"" + } + } + } + } + } + } + ] + } + }, + { + "assignment_equation": { + "lhs": "localActive", + "rhs": { + "simple_expression": { + "function_call": { + "name": "pre", + "arguments": [ + { + "name": "newActive" + } + ] + } + } + } + } + }, + { + "assignment_equation": { + "lhs": "newActive", + "rhs": { + "if_expression": { + "if_elseif": [ + { + "condition": { + "simple_expression": "outerStatePort.subgraphStatePort.resume" + }, + "then": { + "simple_expression": "oldActive" + } + } + ], + "else_expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "(StateGraph.Temporary.anyTrue(inPort.set) or localActive and not StateGraph.Temporary.anyTrue(outPort.reset))" + } + ] + }, + { + "not": true, + "arithmetic_expressions": [ + { + "name": "outerStatePort.subgraphStatePort.suspend" + } + ] + } + ] + } + ] + } + } + } + } + } + } + }, + { + "when_equation": [ + { + "condition": { + "simple_expression": "outerStatePort.subgraphStatePort.suspend" + }, + "then": [ + { + "assignment_equation": { + "lhs": "oldActive", + "rhs": { + "simple_expression": "localActive" + } + } + } + ] + } + ] + }, + { + "assignment_equation": { + "lhs": "outerStatePort.subgraphStatePort.activeSteps", + "rhs": { + "if_expression": { + "if_elseif": [ + { + "condition": { + "simple_expression": "localActive" + }, + "then": { + "simple_expression": "1" + } + } + ], + "else_expression": { + "simple_expression": "0" + } + } + } + } + }, + { + "for_equation": { + "for_indices": [ + { + "identifier": "i", + "expression": { + "simple_expression": "1:nIn" + } + } + ], + "loop_equations": [ + { + "assignment_equation": { + "lhs": "inPort[i].occupied", + "rhs": { + "if_expression": { + "if_elseif": [ + { + "condition": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "i" + }, + { + "name": "1" + } + ], + "relation_operator": "==" + } + ] + } + ] + } + } + }, + "then": { + "simple_expression": "localActive" + } + } + ], + "else_expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "inPort[i -1].occupied" + } + ] + } + ] + }, + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "inPort[i -1].set" + } + ] + } + ] + } + ] + } + } + } + } + } + } + } + ] + } + }, + { + "for_equation": { + "for_indices": [ + { + "identifier": "i", + "expression": { + "simple_expression": "1:nOut" + } + } + ], + "loop_equations": [ + { + "assignment_equation": { + "lhs": "outPort[i].available", + "rhs": { + "if_expression": { + "if_elseif": [ + { + "condition": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "i" + }, + { + "name": "1" + } + ], + "relation_operator": "==" + } + ] + } + ] + } + } + }, + "then": { + "simple_expression": "localActive" + } + } + ], + "else_expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "outPort[i -1].available" + } + ] + }, + { + "not": true, + "arithmetic_expressions": [ + { + "name": "outPort[i -1].reset" + } + ] + } + ] + } + ] + } + } + } + } + } + } + } + ] + } + }, + { + "for_equation": { + "for_indices": [ + { + "identifier": "i", + "expression": { + "simple_expression": "1:nIn" + } + } + ], + "loop_equations": [ + { + "if_equation": { + "if_elseif": [ + { + "condition": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "cardinality(inPort[i])" + }, + { + "name": "0" + } + ], + "relation_operator": "==" + } + ] + } + ] + } + } + }, + "then": [ + { + "equation": { + "assignment_equation": { + "lhs": "inPort[i].set", + "rhs": { + "simple_expression": "false" + } + } + } + } + ] + } + ] + } + } + ] + } + }, + { + "for_equation": { + "for_indices": [ + { + "identifier": "i", + "expression": { + "simple_expression": "1:nOut" + } + } + ], + "loop_equations": [ + { + "if_equation": { + "if_elseif": [ + { + "condition": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "cardinality(outPort[i])" + }, + { + "name": "0" + } + ], + "relation_operator": "==" + } + ] + } + ] + } + } + }, + "then": [ + { + "equation": { + "assignment_equation": { + "lhs": "outPort[i].reset", + "rhs": { + "simple_expression": "false" + } + } + } + } + ] + } + ] + } + } + ] + } + } + ] + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial block", + "class_specifier": { + "long_class_specifier": { + "identifier": "PartialTransition", + "description_string": "Partial transition with input and output connections", + "composition": { + "element_list": [ + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "localCondition" + }, + "description": { + "description_string": "= true, if transition may fire", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "enableTimer", + "modification": { + "equal": true, + "expression": { + "simple_expression": "false" + } + } + }, + "description": { + "description_string": "= true, if timer is enabled", + "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": "\"Timer\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Modelica.SIunits.Time", + "component_list": [ + { + "declaration": { + "identifier": "waitTime", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ], + "equal": true, + "expression": { + "simple_expression": "0" + } + } + }, + "description": { + "description_string": "Wait time before transition fires", + "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": "\"Timer\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "enable", + "modification": { + "equal": true, + "expression": { + "simple_expression": "enableTimer" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Modelica.SIunits.Time", + "component_list": [ + { + "declaration": { + "identifier": "t" + }, + "description": { + "description_string": "= actual waiting time (transition will fire when t > waitTime)" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "enableFire" + }, + "description": { + "description_string": "= true, if all firing conditions are true" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "fire" + }, + "description": { + "description_string": "= true, if transition fires", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "StateGraph.Interfaces.Transition_in", + "component_list": [ + { + "declaration": { + "identifier": "inPort" + }, + "description": { + "description_string": "Vector of transition input connectors", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -50, + "y": -10 + }, + { + "x": -30, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "StateGraph.Interfaces.Transition_out", + "component_list": [ + { + "declaration": { + "identifier": "outPort" + }, + "description": { + "description_string": "Vector of transition output connectors", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 10, + "y": -5 + }, + { + "x": 20, + "y": 5 + } + ] + } + } + } + } + } + ] + } + } + ] + } + } + ], + "element_sections": [ + { + "protected_element_list": [ + { + "component_clause": { + "type_specifier": "Modelica.SIunits.Time", + "component_list": [ + { + "declaration": { + "identifier": "t_start" + }, + "description": { + "description_string": "Time instant at which the transition would fire, if waitTime would be zero" + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Real", + "component_list": [ + { + "declaration": { + "identifier": "t_dummy" + } + } + ] + } + } + ] + }, + { + "equation_section": { + "initial": true, + "equation": [ + { + "if_equation": { + "if_elseif": [ + { + "condition": { + "simple_expression": "enableTimer" + }, + "then": [ + { + "equation": { + "assignment_equation": { + "lhs": { + "function_call": { + "name": "pre", + "arguments": [ + { + "name": "t_start" + } + ] + } + }, + "rhs": { + "simple_expression": "time" + } + } + } + } + ] + } + ] + } + }, + { + "assignment_equation": { + "lhs": { + "function_call": { + "name": "pre", + "arguments": [ + { + "name": "enableFire" + } + ] + } + }, + "rhs": { + "simple_expression": "false" + } + } + } + ] + } + }, + { + "equation_section": { + "equation": [ + { + "function_call_equation": { + "function_name": "assert", + "function_call_args": { + "function_argument": { + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "cardinality(inPort)" + }, + { + "name": "1" + } + ], + "relation_operator": "==" + } + ] + } + ] + } + } + } + }, + "function_arguments": { + "function_argument": { + "expression": { + "simple_expression": "\"Connector inPort is not connected to exactly one other connector\"" + } + } + } + } + } + }, + { + "function_call_equation": { + "function_name": "assert", + "function_call_args": { + "function_argument": { + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "cardinality(outPort)" + }, + { + "name": "1" + } + ], + "relation_operator": "==" + } + ] + } + ] + } + } + } + }, + "function_arguments": { + "function_argument": { + "expression": { + "simple_expression": "\"Connector outPort is not connected to exactly one other connector\"" + } + } + } + } + } + }, + { + "if_equation": { + "if_elseif": [ + { + "condition": { + "simple_expression": "enableTimer" + }, + "then": [ + { + "equation": { + "when_equation": [ + { + "condition": { + "simple_expression": "enableFire" + }, + "then": [ + { + "assignment_equation": { + "lhs": "t_start", + "rhs": { + "simple_expression": "time" + } + } + } + ] + } + ] + } + }, + { + "equation": { + "assignment_equation": { + "lhs": "t_dummy", + "rhs": { + "simple_expression": "time -t_start" + } + } + } + }, + { + "equation": { + "assignment_equation": { + "lhs": "t", + "rhs": { + "if_expression": { + "if_elseif": [ + { + "condition": { + "simple_expression": "enableFire" + }, + "then": { + "simple_expression": "t_dummy" + } + } + ], + "else_expression": { + "simple_expression": "0" + } + } + } + } + } + }, + { + "equation": { + "assignment_equation": { + "lhs": "fire", + "rhs": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "enableFire" + } + ] + }, + { + "arithmetic_expressions": [ + { + "name": "time" + }, + { + "name": "t_start +waitTime" + } + ], + "relation_operator": ">=" + } + ] + } + ] + } + } + } + } + } + } + ] + } + ] + } + }, + { + "assignment_equation": { + "lhs": "enableFire", + "rhs": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "localCondition" + } + ] + }, + { + "arithmetic_expressions": [ + { + "name": "inPort.available" + } + ] + }, + { + "not": true, + "arithmetic_expressions": [ + { + "name": "outPort.occupied" + } + ] + } + ] + } + ] + } + } + } + } + }, + { + "assignment_equation": { + "lhs": "inPort.reset", + "rhs": { + "simple_expression": "fire" + } + } + }, + { + "assignment_equation": { + "lhs": "outPort.set", + "rhs": { + "simple_expression": "fire" + } + } + } + ] + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial block", + "class_specifier": { + "long_class_specifier": { + "identifier": "PartialStateGraphIcon", + "description_string": "Icon for a StateGraph object", + "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 + } + ], + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 160, + "y": 110 + }, + { + "x": -160, + "y": 150 + } + ], + "textString": "\"%name\"", + "lineColor": { + "r": 0, + "g": 0, + "b": 255 + } + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "model", + "class_specifier": { + "long_class_specifier": { + "identifier": "CompositeStepState", + "description_string": "Communication channel between CompositeSteps and steps in the CompositeStep", + "composition": { + "element_list": [ + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "suspend", + "modification": { + "equal": true, + "expression": { + "simple_expression": "false" + } + } + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "resume", + "modification": { + "equal": true, + "expression": { + "simple_expression": "false" + } + } + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "CompositeStepStatePort_out", + "component_list": [ + { + "declaration": { + "identifier": "subgraphStatePort" + } + } + ] + } + } + ], + "element_sections": [ + { + "equation_section": { + "equation": [ + { + "assignment_equation": { + "lhs": "suspend", + "rhs": { + "simple_expression": "subgraphStatePort.suspend" + } + } + }, + { + "assignment_equation": { + "lhs": "resume", + "rhs": { + "simple_expression": "subgraphStatePort.resume" + } + } + }, + { + "assignment_equation": { + "lhs": "subgraphStatePort.activeStepsDummy", + "rhs": { + "simple_expression": "0" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "defaultComponentName", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"stateGraphRoot\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "defaultComponentPrefixes", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"inner\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "missingInnerMessage", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"A \\\"stateGraphRoot\\\" component was automatically introduced.\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "block", + "class_specifier": { + "long_class_specifier": { + "identifier": "InitialStep", + "description_string": "Initial step (= step that is active when simulation starts)", + "composition": { + "element_list": [ + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "active" + }, + "description": { + "description_string": "= true if step is active, otherwise the step is not active" + } + } + ] + } + }, + { + "extends_clause": { + "name": "Interfaces.PartialStep" + } + } + ], + "element_sections": [ + { + "equation_section": { + "initial": true, + "equation": [ + { + "assignment_equation": { + "lhs": "active", + "rhs": { + "simple_expression": "true" + } + } + } + ] + } + }, + { + "equation_section": { + "equation": [ + { + "assignment_equation": { + "lhs": "active", + "rhs": { + "simple_expression": "localActive" + } + } + } + ] + } + } + ], + "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": "Text", + "attribute": { + "extent": [ + { + "x": -200, + "y": 110 + }, + { + "x": 200, + "y": 150 + } + ], + "textString": "\"%name\"", + "lineColor": { + "r": 0, + "g": 0, + "b": 255 + } + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": 100 + }, + { + "x": 100, + "y": -100 + } + ], + "fillColor": { + "r": 255, + "g": 255, + "b": null + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -80, + "y": 80 + }, + { + "x": 80, + "y": -80 + } + ] + } + } + ] + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Diagram", + "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 + } + ] + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -80, + "y": 80 + }, + { + "x": 80, + "y": -80 + } + ] + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "block", + "class_specifier": { + "long_class_specifier": { + "identifier": "InitialStepWithSignal", + "description_string": "Initial step (= step that is active when simulation starts). Connector 'active' is true when the step is active", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Interfaces.PartialStep" + } + }, + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Interfaces.BooleanOutput", + "component_list": [ + { + "declaration": { + "identifier": "active" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "origin": { + "x": 0, + "y": -110 + }, + "extent": [ + { + "x": -10, + "y": -10 + }, + { + "x": 10, + "y": 10 + } + ], + "rotation": 270 + } + } + } + } + } + ] + } + } + ] + } + } + ], + "element_sections": [ + { + "equation_section": { + "initial": true, + "equation": [ + { + "assignment_equation": { + "lhs": "active", + "rhs": { + "simple_expression": "true" + } + } + } + ] + } + }, + { + "equation_section": { + "equation": [ + { + "assignment_equation": { + "lhs": "active", + "rhs": { + "simple_expression": "localActive" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Diagram", + "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 + } + ] + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -80, + "y": 80 + }, + { + "x": 80, + "y": -80 + } + ] + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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": -200, + "y": 110 + }, + { + "x": 200, + "y": 150 + } + ], + "textString": "\"%name\"", + "lineColor": { + "r": 0, + "g": 0, + "b": 255 + } + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": 100 + }, + { + "x": 100, + "y": -100 + } + ], + "fillColor": { + "r": 255, + "g": 255, + "b": null + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -92, + "y": -50 + }, + { + "x": 94, + "y": -68 + } + ], + "textString": "\"active\"" + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -80, + "y": 80 + }, + { + "x": 80, + "y": -80 + } + ] + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "block", + "class_specifier": { + "long_class_specifier": { + "identifier": "Step", + "description_string": "Ordinary step (= step that is not active when simulation starts)", + "composition": { + "element_list": [ + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "active" + }, + "description": { + "description_string": "= true if step is active, otherwise the step is not active" + } + } + ] + } + }, + { + "extends_clause": { + "name": "Interfaces.PartialStep" + } + } + ], + "element_sections": [ + { + "equation_section": { + "initial": true, + "equation": [ + { + "assignment_equation": { + "lhs": "active", + "rhs": { + "simple_expression": "false" + } + } + } + ] + } + }, + { + "equation_section": { + "equation": [ + { + "assignment_equation": { + "lhs": "active", + "rhs": { + "simple_expression": "localActive" + } + } + } + ] + } + } + ], + "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": "Text", + "attribute": { + "extent": [ + { + "x": -200, + "y": 110 + }, + { + "x": 200, + "y": 150 + } + ], + "textString": "\"%name\"", + "lineColor": { + "r": 0, + "g": 0, + "b": 255 + } + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": 100 + }, + { + "x": 100, + "y": -100 + } + ], + "fillColor": { + "r": 255, + "g": 255, + "b": null + }, + "fillPattern": "FillPattern.Solid" + } + } + ] + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Diagram", + "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 + } + ] + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "block", + "class_specifier": { + "long_class_specifier": { + "identifier": "StepWithSignal", + "description_string": "Ordinary step (= step that is not active when simulation starts). Connector 'active' is true when the step is active", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Interfaces.PartialStep" + } + }, + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Interfaces.BooleanOutput", + "component_list": [ + { + "declaration": { + "identifier": "active" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "origin": { + "x": 0, + "y": -110 + }, + "extent": [ + { + "x": -10, + "y": -10 + }, + { + "x": 10, + "y": 10 + } + ], + "rotation": 270 + } + } + } + } + } + ] + } + } + ] + } + } + ], + "element_sections": [ + { + "equation_section": { + "initial": true, + "equation": [ + { + "assignment_equation": { + "lhs": "active", + "rhs": { + "simple_expression": "false" + } + } + } + ] + } + }, + { + "equation_section": { + "equation": [ + { + "assignment_equation": { + "lhs": "active", + "rhs": { + "simple_expression": "localActive" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Diagram", + "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 + } + ] + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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": -200, + "y": 110 + }, + { + "x": 200, + "y": 150 + } + ], + "textString": "\"%name\"", + "lineColor": { + "r": 0, + "g": 0, + "b": 255 + } + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": 100 + }, + { + "x": 100, + "y": -100 + } + ], + "fillColor": { + "r": 255, + "g": 255, + "b": null + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -92, + "y": -74 + }, + { + "x": 94, + "y": -92 + } + ], + "textString": "\"active\"" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "block", + "class_specifier": { + "long_class_specifier": { + "identifier": "Transition", + "description_string": "Transition where the fire condition is set by a modification of variable condition", + "composition": { + "element_list": [ + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "condition", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + }, + "description": { + "description_string": "= true, if transition may fire (time varying expression)", + "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": "\"Fire condition\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + ] + } + }, + { + "extends_clause": { + "name": "Interfaces.PartialTransition", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "localCondition", + "modification": { + "equal": true, + "expression": { + "simple_expression": "condition" + } + } + } + } + } + ] + } + } + ], + "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": -10, + "y": 100 + }, + { + "x": 10, + "y": -100 + } + ], + "fillColor": { + "r": 0, + "g": 0, + "b": null + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -30, + "y": 0 + }, + { + "x": -10, + "y": 0 + } + ] + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 200, + "y": 110 + }, + { + "x": -200, + "y": 150 + } + ], + "textString": "\"%name\"", + "lineColor": { + "r": 0, + "g": 0, + "b": 255 + } + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 20, + "y": 20 + }, + { + "x": 200, + "y": 45 + } + ], + "textString": "\"%waitTime\"", + "lineColor": { + "r": 0, + "g": 0, + "b": null + } + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -200, + "y": -120 + }, + { + "x": 200, + "y": -145 + } + ], + "textString": "\"%condition\"", + "lineColor": { + "r": 0, + "g": 0, + "b": null + } + } + } + ] + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Diagram", + "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": "Line", + "attribute": { + "points": [ + { + "x": -31, + "y": 0 + }, + { + "x": -11, + "y": 0 + } + ] + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -10, + "y": 100 + }, + { + "x": 10, + "y": -100 + } + ], + "fillPattern": "FillPattern.Solid" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "block", + "class_specifier": { + "long_class_specifier": { + "identifier": "TransitionWithSignal", + "description_string": "Transition where the fire condition is set by a Boolean input signal", + "composition": { + "element_list": [ + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Interfaces.BooleanInput", + "component_list": [ + { + "declaration": { + "identifier": "condition" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "origin": { + "x": 0, + "y": -120 + }, + "extent": [ + { + "x": -20, + "y": -20 + }, + { + "x": 20, + "y": 20 + } + ], + "rotation": 90 + } + } + } + } + } + ] + } + } + ] + } + }, + { + "extends_clause": { + "name": "Interfaces.PartialTransition", + "class_modification": [ + { + "element_modification_or_replaceable": { + "final": true, + "element_modification": { + "name": "localCondition", + "modification": { + "equal": true, + "expression": { + "simple_expression": "condition" + } + } + } + } + } + ] + } + } + ], + "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": "Text", + "attribute": { + "extent": [ + { + "x": 20, + "y": 20 + }, + { + "x": 200, + "y": 45 + } + ], + "textString": "\"%waitTime\"", + "lineColor": { + "r": 0, + "g": 0, + "b": null + } + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -10, + "y": 100 + }, + { + "x": 10, + "y": -100 + } + ], + "fillColor": { + "r": 0, + "g": 0, + "b": null + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -30, + "y": 0 + }, + { + "x": -10, + "y": 0 + } + ] + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 200, + "y": 110 + }, + { + "x": -200, + "y": 150 + } + ], + "textString": "\"%name\"", + "lineColor": { + "r": 0, + "g": 0, + "b": 255 + } + } + }, + { + "name": "Ellipse", + "attribute": { + "extent": [ + { + "x": 7, + "y": -81 + }, + { + "x": -7, + "y": -95 + } + ], + "lineColor": { + "r": 0, + "g": 0, + "b": null + }, + "fillColor": { + "r": 0, + "g": 0, + "b": null + }, + "fillPattern": "FillPattern.Solid" + } + } + ] + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Diagram", + "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": "Line", + "attribute": { + "points": [ + { + "x": -31, + "y": 0 + }, + { + "x": -11, + "y": 0 + } + ] + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -10, + "y": 100 + }, + { + "x": 10, + "y": -100 + } + ], + "fillPattern": "FillPattern.Solid" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "block", + "class_specifier": { + "long_class_specifier": { + "identifier": "Alternative", + "description_string": "Alternative splitting of execution path (use component between two steps)", + "composition": { + "element_list": [ + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Integer", + "component_list": [ + { + "declaration": { + "identifier": "nBranches", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + } + } + } + ], + "equal": true, + "expression": { + "simple_expression": "2" + } + } + }, + "description": { + "description_string": "Number of alternative branches" + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Interfaces.Transition_in", + "component_list": [ + { + "declaration": { + "identifier": "inPort" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -106, + "y": -3 + }, + { + "x": -100, + "y": 3 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Interfaces.Transition_out", + "component_list": [ + { + "declaration": { + "identifier": "outPort" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 100, + "y": -2 + }, + { + "x": 104, + "y": 2 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step_in_forAlternative", + "component_list": [ + { + "declaration": { + "identifier": "join", + "array_subscripts": [] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 78, + "y": 100 + }, + { + "x": 80, + "y": -100 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Step_out_forAlternative", + "component_list": [ + { + "declaration": { + "identifier": "split", + "array_subscripts": [] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -78, + "y": 100 + }, + { + "x": -80, + "y": -100 + } + ] + } + } + } + } + } + ] + } + } + ] + } + } + ], + "element_sections": [ + { + "protected_element_list": [ + { + "class_definition": [ + { + "class_prefixes": "connector", + "class_specifier": { + "long_class_specifier": { + "identifier": "Step_in_forAlternative", + "description_string": "Input port of a step (has special icon for usage in component 'Alternative')", + "composition": { + "element_list": [ + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "occupied" + }, + "description": { + "description_string": "true, if step is active", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "set" + }, + "description": { + "description_string": "true, if transition fires and step is activated", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + } + ], + "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 + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": 100 + }, + { + "x": 100, + "y": -100 + } + ], + "fillColor": { + "r": 175, + "g": 175, + "b": 175 + }, + "fillPattern": "FillPattern.Solid" + } + } + ] + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Diagram", + "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": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": 100 + }, + { + "x": 100, + "y": -100 + } + ], + "fillColor": { + "r": 175, + "g": 175, + "b": 175 + }, + "fillPattern": "FillPattern.Solid" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "connector", + "class_specifier": { + "long_class_specifier": { + "identifier": "Step_out_forAlternative", + "description_string": "Output port of a step (has special icon for usage in component 'Alternative')", + "composition": { + "element_list": [ + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "available" + }, + "description": { + "description_string": "true, if step is active", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "reset" + }, + "description": { + "description_string": "true, if transition fires and step is deactivated", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + } + ], + "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 + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": 100 + }, + { + "x": 100, + "y": -100 + } + ], + "fillColor": { + "r": 175, + "g": 175, + "b": 175 + }, + "fillPattern": "FillPattern.Solid" + } + } + ] + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Diagram", + "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": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": 100 + }, + { + "x": 100, + "y": -100 + } + ], + "fillColor": { + "r": 175, + "g": 175, + "b": 175 + }, + "fillPattern": "FillPattern.Solid" + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + } + ] + }, + { + "equation_section": { + "equation": [ + { + "function_call_equation": { + "function_name": "assert", + "function_call_args": { + "function_argument": { + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "cardinality(inPort)" + }, + { + "name": "1" + } + ], + "relation_operator": "==" + } + ] + } + ] + } + } + } + }, + "function_arguments": { + "function_argument": { + "expression": { + "simple_expression": "\"Connector inPort is not connected to exactly one other connector\"" + } + } + } + } + } + }, + { + "function_call_equation": { + "function_name": "assert", + "function_call_args": { + "function_argument": { + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "cardinality(outPort)" + }, + { + "name": "1" + } + ], + "relation_operator": "==" + } + ] + } + ] + } + } + } + }, + "function_arguments": { + "function_argument": { + "expression": { + "simple_expression": "\"Connector outPort is not connected to exactly one other connector\"" + } + } + } + } + } + }, + { + "for_equation": { + "for_indices": [ + { + "identifier": "i", + "expression": { + "simple_expression": "1:nBranches" + } + } + ], + "loop_equations": [ + { + "function_call_equation": { + "function_name": "assert", + "function_call_args": { + "function_argument": { + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "cardinality(split[i])" + }, + { + "name": "1" + } + ], + "relation_operator": "==" + } + ] + } + ] + } + } + } + }, + "function_arguments": { + "function_argument": { + "expression": { + "simple_expression": "\"Connector is not connected to exactly one other connector\"" + } + } + } + } + } + }, + { + "function_call_equation": { + "function_name": "assert", + "function_call_args": { + "function_argument": { + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "cardinality(join[i])" + }, + { + "name": "1" + } + ], + "relation_operator": "==" + } + ] + } + ] + } + } + } + }, + "function_arguments": { + "function_argument": { + "expression": { + "simple_expression": "\"Connector is not connected to exactly one other connector\"" + } + } + } + } + } + } + ] + } + }, + { + "for_equation": { + "for_indices": [ + { + "identifier": "i", + "expression": { + "simple_expression": "1:nBranches" + } + } + ], + "loop_equations": [ + { + "assignment_equation": { + "lhs": "split[i].available", + "rhs": { + "if_expression": { + "if_elseif": [ + { + "condition": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "i" + }, + { + "name": "1" + } + ], + "relation_operator": "==" + } + ] + } + ] + } + } + }, + "then": { + "simple_expression": "inPort.available" + } + } + ], + "else_expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "split[i -1].available" + } + ] + }, + { + "not": true, + "arithmetic_expressions": [ + { + "name": "split[i -1].reset" + } + ] + } + ] + } + ] + } + } + } + } + } + } + } + ] + } + }, + { + "assignment_equation": { + "lhs": "join.occupied", + "rhs": { + "simple_expression": { + "function_call": { + "name": "fill", + "arguments": [ + { + "name": "outPort.occupied" + }, + { + "name": "nBranches" + } + ] + } + } + } + } + }, + { + "assignment_equation": { + "lhs": "inPort.reset", + "rhs": { + "simple_expression": { + "function_call": { + "name": "StateGraph.Temporary.anyTrue", + "arguments": [ + { + "name": "split.reset" + } + ] + } + } + } + } + }, + { + "assignment_equation": { + "lhs": "outPort.set", + "rhs": { + "simple_expression": { + "function_call": { + "name": "StateGraph.Temporary.anyTrue", + "arguments": [ + { + "name": "join.set" + } + ] + } + } + } + } + } + ] + } + } + ], + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -80, + "y": 100 + }, + { + "x": 80, + "y": 100 + } + ], + "pattern": "LinePattern.Dot" + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -80, + "y": -100 + }, + { + "x": 80, + "y": -100 + } + ], + "pattern": "LinePattern.Dot" + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -100, + "y": 0 + }, + { + "x": -80, + "y": 0 + } + ] + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 80, + "y": 0 + }, + { + "x": 100, + "y": 0 + } + ] + } + } + ] + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Diagram", + "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": "Line", + "attribute": { + "points": [ + { + "x": -100, + "y": 0 + }, + { + "x": -80, + "y": 0 + } + ] + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 80, + "y": 0 + }, + { + "x": 100, + "y": 0 + } + ] + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "block", + "class_specifier": { + "long_class_specifier": { + "identifier": "Parallel", + "description_string": "Parallel splitting of execution path (use component between two transitions)", + "composition": { + "element_list": [ + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Integer", + "component_list": [ + { + "declaration": { + "identifier": "nBranches", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + } + } + } + ], + "equal": true, + "expression": { + "simple_expression": "2" + } + } + }, + "description": { + "description_string": "Number of parallel branches that are executed in parallel" + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Interfaces.Step_in", + "component_list": [ + { + "declaration": { + "identifier": "inPort" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -106, + "y": -3 + }, + { + "x": -100, + "y": 3 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Interfaces.Step_out", + "component_list": [ + { + "declaration": { + "identifier": "outPort" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 100, + "y": -2 + }, + { + "x": 104, + "y": 2 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition_in_forParallel", + "component_list": [ + { + "declaration": { + "identifier": "join", + "array_subscripts": [] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 75, + "y": 100 + }, + { + "x": 80, + "y": -100 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Transition_out_forParallel", + "component_list": [ + { + "declaration": { + "identifier": "split", + "array_subscripts": [] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -75, + "y": 100 + }, + { + "x": -80, + "y": -100 + } + ] + } + } + } + } + } + ] + } + } + ] + } + } + ], + "element_sections": [ + { + "protected_element_list": [ + { + "class_definition": [ + { + "class_prefixes": "connector", + "class_specifier": { + "long_class_specifier": { + "identifier": "Transition_in_forParallel", + "description_string": "Input port of a transition (has special icon for usage in component 'Parallel')", + "composition": { + "element_list": [ + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "available" + }, + "description": { + "description_string": "true, if step connected to the transition input is active", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "reset" + }, + "description": { + "description_string": "true, if transition fires and the step connected to the transition input is deactivated", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + } + ], + "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 + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": 100 + }, + { + "x": 100, + "y": -100 + } + ], + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": 100 + }, + { + "x": 100, + "y": -100 + } + ], + "lineColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -100, + "y": 100 + }, + { + "x": -100, + "y": -100 + } + ], + "thickness": 0.5 + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 100, + "y": 100 + }, + { + "x": 100, + "y": -100 + } + ], + "thickness": 0.5 + } + } + ] + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Diagram", + "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": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": 100 + }, + { + "x": 100, + "y": -100 + } + ], + "lineColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -100, + "y": 100 + }, + { + "x": -100, + "y": -100 + } + ], + "thickness": 0.5 + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 100, + "y": 100 + }, + { + "x": 100, + "y": -100 + } + ], + "thickness": 0.5 + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "connector", + "class_specifier": { + "long_class_specifier": { + "identifier": "Transition_out_forParallel", + "description_string": "Output port of a transition (has special icon for usage in component 'Parallel')", + "composition": { + "element_list": [ + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "occupied" + }, + "description": { + "description_string": "true, if step connected to the transition output is active", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "set" + }, + "description": { + "description_string": "true, if transition fires and step connected to the transition output becomes active", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + } + ], + "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 + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": 100 + }, + { + "x": 100, + "y": -100 + } + ], + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": 100 + }, + { + "x": 100, + "y": -100 + } + ], + "lineColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -100, + "y": 100 + }, + { + "x": -100, + "y": -100 + } + ], + "thickness": 0.5 + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 100, + "y": 100 + }, + { + "x": 100, + "y": -100 + } + ], + "thickness": 0.5 + } + } + ] + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Diagram", + "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": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": 100 + }, + { + "x": 100, + "y": -100 + } + ], + "lineColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -100, + "y": 100 + }, + { + "x": -100, + "y": -100 + } + ], + "thickness": 0.5 + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 100, + "y": 100 + }, + { + "x": 100, + "y": -100 + } + ], + "thickness": 0.5 + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + } + ] + }, + { + "equation_section": { + "equation": [ + { + "function_call_equation": { + "function_name": "assert", + "function_call_args": { + "function_argument": { + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "cardinality(inPort)" + }, + { + "name": "1" + } + ], + "relation_operator": "==" + } + ] + } + ] + } + } + } + }, + "function_arguments": { + "function_argument": { + "expression": { + "simple_expression": "\"Connector inPort is not connected to exactly one other connector\"" + } + } + } + } + } + }, + { + "function_call_equation": { + "function_name": "assert", + "function_call_args": { + "function_argument": { + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "cardinality(outPort)" + }, + { + "name": "1" + } + ], + "relation_operator": "==" + } + ] + } + ] + } + } + } + }, + "function_arguments": { + "function_argument": { + "expression": { + "simple_expression": "\"Connector outPort is not connected to exactly one other connector\"" + } + } + } + } + } + }, + { + "for_equation": { + "for_indices": [ + { + "identifier": "i", + "expression": { + "simple_expression": "1:nBranches" + } + } + ], + "loop_equations": [ + { + "function_call_equation": { + "function_name": "assert", + "function_call_args": { + "function_argument": { + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "cardinality(split[i])" + }, + { + "name": "1" + } + ], + "relation_operator": "==" + } + ] + } + ] + } + } + } + }, + "function_arguments": { + "function_argument": { + "expression": { + "simple_expression": "\"Connector is not connected to exactly one other connector\"" + } + } + } + } + } + }, + { + "function_call_equation": { + "function_name": "assert", + "function_call_args": { + "function_argument": { + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "cardinality(join[i])" + }, + { + "name": "1" + } + ], + "relation_operator": "==" + } + ] + } + ] + } + } + } + }, + "function_arguments": { + "function_argument": { + "expression": { + "simple_expression": "\"Connector is not connected to exactly one other connector\"" + } + } + } + } + } + } + ] + } + }, + { + "assignment_equation": { + "lhs": "split.set", + "rhs": { + "simple_expression": { + "function_call": { + "name": "fill", + "arguments": [ + { + "name": "inPort.set" + }, + { + "name": "nBranches" + } + ] + } + } + } + } + }, + { + "assignment_equation": { + "lhs": "join.reset", + "rhs": { + "simple_expression": { + "function_call": { + "name": "fill", + "arguments": [ + { + "name": "outPort.reset" + }, + { + "name": "nBranches" + } + ] + } + } + } + } + }, + { + "assignment_equation": { + "lhs": "inPort.occupied", + "rhs": { + "simple_expression": { + "function_call": { + "name": "StateGraph.Temporary.anyTrue", + "arguments": [ + { + "name": "split.occupied" + } + ] + } + } + } + } + }, + { + "assignment_equation": { + "lhs": "outPort.available", + "rhs": { + "simple_expression": { + "function_call": { + "name": "StateGraph.Temporary.allTrue", + "arguments": [ + { + "name": "join.available" + } + ] + } + } + } + } + } + ] + } + } + ], + "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": "false" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -100, + "y": 0 + }, + { + "x": -80, + "y": 0 + } + ] + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 80, + "y": 0 + }, + { + "x": 100, + "y": 0 + } + ] + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -80, + "y": 100 + }, + { + "x": 80, + "y": 100 + } + ], + "pattern": "LinePattern.Dot" + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -80, + "y": -100 + }, + { + "x": 80, + "y": -100 + } + ], + "pattern": "LinePattern.Dot" + } + } + ] + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Diagram", + "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": "Line", + "attribute": { + "points": [ + { + "x": -100, + "y": 0 + }, + { + "x": -80, + "y": 0 + } + ] + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 80, + "y": 0 + }, + { + "x": 100, + "y": 0 + } + ] + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "partial model", + "class_specifier": { + "long_class_specifier": { + "identifier": "PartialCompositeStep", + "description_string": "Superclass of a subgraph, i.e., a composite step that has internally a StateGraph", + "composition": { + "element_list": [ + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Integer", + "component_list": [ + { + "declaration": { + "identifier": "nSuspend", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + }, + "description": { + "description_string": "Number of suspend ports", + "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": "\"Exception connections\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Integer", + "component_list": [ + { + "declaration": { + "identifier": "nResume", + "modification": { + "equal": true, + "expression": { + "simple_expression": "1" + } + } + }, + "description": { + "description_string": "Number of resume ports", + "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": "\"Exception connections\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + ] + } + }, + { + "inner": true, + "outer": true, + "component_clause": { + "type_specifier": "StateGraph.Interfaces.CompositeStepState", + "component_list": [ + { + "declaration": { + "identifier": "stateGraphRoot", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "suspend", + "modification": { + "equal": true, + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "StateGraph.Temporary.anyTrue(suspend.reset)" + } + ] + } + ] + }, + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "outerState.subgraphStatePort.suspend" + } + ] + } + ] + } + ] + } + } + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "resume", + "modification": { + "equal": true, + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "StateGraph.Temporary.anyTrue(resume.set)" + } + ] + } + ] + }, + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "outerState.subgraphStatePort.resume" + } + ] + } + ] + } + ] + } + } + } + } + } + } + } + ] + } + }, + "description": { + "description_string": "Communication port between the CompositeStep and the steps within the CompositeStep" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "active" + }, + "description": { + "description_string": "= true if step is active, otherwise the step is not active" + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "StateGraph.Interfaces.Step_in", + "component_list": [ + { + "declaration": { + "identifier": "inPort" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -170, + "y": 10 + }, + { + "x": -150, + "y": -10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "StateGraph.Interfaces.Step_out", + "component_list": [ + { + "declaration": { + "identifier": "outPort" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 150, + "y": 5 + }, + { + "x": 160, + "y": -5 + } + ] + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "StateGraph.Interfaces.CompositeStep_suspend", + "component_list": [ + { + "declaration": { + "identifier": "suspend", + "array_subscripts": [] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "origin": { + "x": -75, + "y": -155 + }, + "extent": [ + { + "x": -5, + "y": 5 + }, + { + "x": 5, + "y": -5 + } + ], + "rotation": 270 + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "StateGraph.Interfaces.CompositeStep_resume", + "component_list": [ + { + "declaration": { + "identifier": "resume", + "array_subscripts": [] + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "origin": { + "x": 75, + "y": -160 + }, + "extent": [ + { + "x": -10, + "y": -10 + }, + { + "x": 10, + "y": 10 + } + ], + "rotation": 90 + } + } + } + } + } + ] + } + } + ] + } + }, + { + "class_definition": [ + { + "class_prefixes": "model", + "class_specifier": { + "long_class_specifier": { + "identifier": "OuterState", + "description_string": "Block containing the port that is connected to the outer stateGraphRoot", + "composition": { + "element_list": [ + { + "component_clause": { + "type_specifier": "Interfaces.CompositeStepStatePort_in", + "component_list": [ + { + "declaration": { + "identifier": "subgraphStatePort" + }, + "description": { + "description_string": "Port connected to outer stateGraphRoot" + } + } + ] + } + } + ] + } + } + } + } + ] + }, + { + "component_clause": { + "type_specifier": "OuterState", + "component_list": [ + { + "declaration": { + "identifier": "outerState" + } + } + ] + } + } + ], + "element_sections": [ + { + "protected_element_list": [ + { + "class_definition": [ + { + "class_prefixes": "model", + "class_specifier": { + "long_class_specifier": { + "identifier": "InnerState", + "composition": { + "element_list": [ + { + "outer": true, + "component_clause": { + "type_specifier": "Interfaces.CompositeStepState", + "component_list": [ + { + "declaration": { + "identifier": "stateGraphRoot" + } + } + ] + } + } + ] + } + } + } + } + ] + }, + { + "component_clause": { + "type_specifier": "InnerState", + "component_list": [ + { + "declaration": { + "identifier": "innerState" + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "newActive" + }, + "description": { + "description_string": "Value of active in the next iteration", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "HideResult", + "modification": { + "equal": true, + "expression": { + "simple_expression": "true" + } + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Integer", + "component_list": [ + { + "declaration": { + "identifier": "activeSteps" + }, + "description": { + "description_string": "Number of active steps within the CompositeStep" + } + } + ] + } + } + ] + }, + { + "equation_section": { + "initial": true, + "equation": [ + { + "assignment_equation": { + "lhs": { + "function_call": { + "name": "pre", + "arguments": [ + { + "name": "newActive" + } + ] + } + }, + "rhs": { + "simple_expression": "false" + } + } + } + ] + } + }, + { + "equation_section": { + "equation": [ + { + "connect_clause": { + "from": [ + { + "dot_op": false, + "identifier": "outerState" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "subgraphStatePort" + } + ], + "to": [ + { + "dot_op": false, + "identifier": "stateGraphRoot" + }, + { + "dot_op": true + }, + { + "dot_op": false, + "identifier": "subgraphStatePort" + } + ] + } + }, + { + "assignment_equation": { + "lhs": "outerState.subgraphStatePort.activeSteps", + "rhs": { + "if_expression": { + "if_elseif": [ + { + "condition": { + "simple_expression": "active" + }, + "then": { + "simple_expression": "1" + } + } + ], + "else_expression": { + "simple_expression": "0" + } + } + } + } + }, + { + "assignment_equation": { + "lhs": "activeSteps", + "rhs": { + "simple_expression": "-integer(innerState.stateGraphRoot.subgraphStatePort.activeSteps)" + } + } + }, + { + "assignment_equation": { + "lhs": "active", + "rhs": { + "simple_expression": { + "function_call": { + "name": "pre", + "arguments": [ + { + "name": "newActive" + } + ] + } + } + } + } + }, + { + "assignment_equation": { + "lhs": "newActive", + "rhs": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "activeSteps" + }, + { + "name": "0" + } + ], + "relation_operator": ">" + }, + { + "not": true, + "arithmetic_expressions": [ + { + "name": "StateGraph.Temporary.anyTrue(suspend.reset)" + } + ] + }, + { + "not": true, + "arithmetic_expressions": [ + { + "name": "outerState.subgraphStatePort.suspend" + } + ] + } + ] + }, + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "StateGraph.Temporary.anyTrue(resume.set)" + } + ] + } + ] + }, + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "outerState.subgraphStatePort.resume" + } + ] + } + ] + } + ] + } + } + } + } + }, + { + "for_equation": { + "for_indices": [ + { + "identifier": "i", + "expression": { + "simple_expression": "1:nResume" + } + } + ], + "loop_equations": [ + { + "assignment_equation": { + "lhs": "resume[i].occupied", + "rhs": { + "if_expression": { + "if_elseif": [ + { + "condition": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "i" + }, + { + "name": "1" + } + ], + "relation_operator": "==" + } + ] + } + ] + } + } + }, + "then": { + "simple_expression": "active" + } + } + ], + "else_expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "resume[i -1].occupied" + } + ] + } + ] + }, + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "resume[i -1].set" + } + ] + } + ] + } + ] + } + } + } + } + } + } + } + ] + } + }, + { + "for_equation": { + "for_indices": [ + { + "identifier": "i", + "expression": { + "simple_expression": "1:nSuspend" + } + } + ], + "loop_equations": [ + { + "assignment_equation": { + "lhs": "suspend[i].available", + "rhs": { + "if_expression": { + "if_elseif": [ + { + "condition": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "i" + }, + { + "name": "1" + } + ], + "relation_operator": "==" + } + ] + } + ] + } + } + }, + "then": { + "simple_expression": "active" + } + } + ], + "else_expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "suspend[i -1].available" + } + ] + }, + { + "not": true, + "arithmetic_expressions": [ + { + "name": "suspend[i -1].reset" + } + ] + } + ] + } + ] + } + } + } + } + } + } + } + ] + } + }, + { + "for_equation": { + "for_indices": [ + { + "identifier": "i", + "expression": { + "simple_expression": "1:nSuspend" + } + } + ], + "loop_equations": [ + { + "function_call_equation": { + "function_name": "assert", + "function_call_args": { + "function_argument": { + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "cardinality(suspend[i])" + }, + { + "name": "1" + } + ], + "relation_operator": "<=" + } + ] + } + ] + } + } + } + }, + "function_arguments": { + "function_argument": { + "expression": { + "simple_expression": "\"Connector suspend[\" +String(i) +\"] of the CompositeStep is connected\nto more than one transition\"" + } + } + } + } + } + }, + { + "if_equation": { + "if_elseif": [ + { + "condition": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "cardinality(suspend[i])" + }, + { + "name": "0" + } + ], + "relation_operator": "==" + } + ] + } + ] + } + } + }, + "then": [ + { + "equation": { + "assignment_equation": { + "lhs": "suspend[i].reset", + "rhs": { + "simple_expression": "false" + } + } + } + } + ] + } + ] + } + } + ] + } + }, + { + "for_equation": { + "for_indices": [ + { + "identifier": "i", + "expression": { + "simple_expression": "1:nResume" + } + } + ], + "loop_equations": [ + { + "function_call_equation": { + "function_name": "assert", + "function_call_args": { + "function_argument": { + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "cardinality(resume[i])" + }, + { + "name": "1" + } + ], + "relation_operator": "<=" + } + ] + } + ] + } + } + } + }, + "function_arguments": { + "function_argument": { + "expression": { + "simple_expression": "\"Connector resume[\" +String(i) +\"] of the CompositeStep is connected\nto more than one transition\"" + } + } + } + } + } + }, + { + "if_equation": { + "if_elseif": [ + { + "condition": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "cardinality(resume[i])" + }, + { + "name": "0" + } + ], + "relation_operator": "==" + } + ] + } + ] + } + } + }, + "then": [ + { + "equation": { + "assignment_equation": { + "lhs": "resume[i].set", + "rhs": { + "simple_expression": "false" + } + } + } + } + ] + } + ] + } + } + ] + } + }, + { + "if_equation": { + "if_elseif": [ + { + "condition": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "cardinality(inPort)" + }, + { + "name": "2" + } + ], + "relation_operator": "<" + } + ] + } + ] + } + } + }, + "then": [ + { + "equation": { + "assignment_equation": { + "lhs": "inPort.occupied", + "rhs": { + "simple_expression": "false" + } + } + } + }, + { + "equation": { + "assignment_equation": { + "lhs": "inPort.set", + "rhs": { + "simple_expression": "false" + } + } + } + } + ] + } + ] + } + }, + { + "if_equation": { + "if_elseif": [ + { + "condition": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "cardinality(outPort)" + }, + { + "name": "2" + } + ], + "relation_operator": "<" + } + ] + } + ] + } + } + }, + "then": [ + { + "equation": { + "assignment_equation": { + "lhs": "outPort.available", + "rhs": { + "simple_expression": "false" + } + } + } + }, + { + "equation": { + "assignment_equation": { + "lhs": "outPort.reset", + "rhs": { + "simple_expression": "false" + } + } + } + } + ] + } + ] + } + }, + { + "function_call_equation": { + "function_name": "assert", + "function_call_args": { + "function_argument": { + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "cardinality(inPort)" + }, + { + "name": "2" + } + ], + "relation_operator": "<=" + } + ] + } + ] + } + } + } + }, + "function_arguments": { + "function_argument": { + "expression": { + "simple_expression": "\"Connector inPort of the CompositeStep has more than 2 connections.\nIt should have only one connection from the outside to the\ninPort and one connection to a step inside the CompositeStep.\"" + } + } + } + } + } + }, + { + "function_call_equation": { + "function_name": "assert", + "function_call_args": { + "function_argument": { + "expression": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "cardinality(outPort)" + }, + { + "name": "2" + } + ], + "relation_operator": "<=" + } + ] + } + ] + } + } + } + }, + "function_arguments": { + "function_argument": { + "expression": { + "simple_expression": "\"Connector outPort of the CompositeStep has more than 2 connections.\nIt should have only one connection from the outPort to the\noutside to the CompositeStep and one connection from a step\ninside the CompositeStep to the outPort connector.\"" + } + } + } + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Icon", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -150, + "y": -150 + }, + { + "x": 150, + "y": 150 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -250, + "y": 160 + }, + { + "x": 250, + "y": 200 + } + ], + "textString": "\"%name\"", + "lineColor": { + "r": 0, + "g": 0, + "b": 255 + } + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -150, + "y": 150 + }, + { + "x": 150, + "y": -150 + } + ], + "fillColor": { + "r": 255, + "g": 255, + "b": null + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": 4, + "y": -115 + }, + { + "x": 145, + "y": -130 + } + ], + "textString": "\"resume\"" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -144, + "y": -114 + }, + { + "x": -3, + "y": -129 + } + ], + "textString": "\"suspend\"" + } + } + ] + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Diagram", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "coordinateSystem": { + "extent": [ + { + "x": -150, + "y": -150 + }, + { + "x": 150, + "y": 150 + } + ], + "preserveAspectRatio": "true" + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -150, + "y": 150 + }, + { + "x": 150, + "y": -150 + } + ] + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "model", + "class_specifier": { + "long_class_specifier": { + "identifier": "StateGraphRoot", + "description_string": "Root of a StateGraph (has to be present on the highest level of a StateGraph)", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "StateGraph.Interfaces.CompositeStepState" + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Integer", + "component_list": [ + { + "declaration": { + "identifier": "activeSteps" + }, + "description": { + "description_string": "Number of active steps within the stategraph" + } + } + ] + } + } + ], + "element_sections": [ + { + "equation_section": { + "equation": [ + { + "assignment_equation": { + "lhs": "activeSteps", + "rhs": { + "simple_expression": "-integer(subgraphStatePort.activeSteps)" + } + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "defaultComponentName", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"stateGraphRoot\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "defaultComponentPrefixes", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"inner\"" + } + } + } + } + }, + { + "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": -200, + "y": 110 + }, + { + "x": 200, + "y": 150 + } + ], + "textString": "\"%name\"", + "lineColor": { + "r": 0, + "g": 0, + "b": 255 + } + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": 100 + }, + { + "x": 100, + "y": -100 + } + ] + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -92, + "y": 78 + }, + { + "x": 96, + "y": 34 + } + ], + "textString": "\"root\"" + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -82, + "y": -6 + }, + { + "x": -44, + "y": -40 + } + ] + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 0, + "y": 10 + }, + { + "x": 0, + "y": -60 + } + ] + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": 48, + "y": -6 + }, + { + "x": 86, + "y": -40 + } + ] + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -12, + "y": -16 + }, + { + "x": 0, + "y": -22 + }, + { + "x": -12, + "y": -28 + }, + { + "x": -12, + "y": -16 + } + ], + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": -44, + "y": -22 + }, + { + "x": -12, + "y": -22 + } + ] + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": 36, + "y": -16 + }, + { + "x": 48, + "y": -22 + }, + { + "x": 36, + "y": -28 + }, + { + "x": 36, + "y": -16 + } + ], + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 0, + "y": -22 + }, + { + "x": 36, + "y": -22 + } + ] + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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

\nOn the highest level of a StateGraph, an instance of StateGraphRoot\nhas to be present.\n

\n

\nThe StateGraphRoot object is needed, since all Step objects have\nan \\\"outer\\\" reference to communicate with the \\\"nearest\\\" CompositeStep\n(which inherits from PartialCompositeStep), especially to abort\na CompositeStep via the \\\"suspend\\\" port. Even if no \\\"CompositeStep\\\" is present,\non highest level a corresponding \\\"inner\\\" definition is needed\nand is provided by the StateGraphRoot object.\n

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "package", + "class_specifier": { + "long_class_specifier": { + "identifier": "Temporary", + "description_string": "Components that will be provided by other libraries in the future", + "composition": { + "element_list": [ + { + "class_definition": [ + { + "class_prefixes": "type", + "class_specifier": { + "short_class_specifier": { + "identifier": "SetRealParameter", + "value": { + "name": "Real", + "description": { + "description_string": "Define Real parameter (GUI not yet satisfactory)", + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "obsolete", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Obsolete type due to experimental design\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "Dialog" + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "defaultComponentName", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"name\"" + } + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "defaultComponentPrefixes", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"parameter\"" + } + } + } + } + }, + { + "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": 40 + }, + { + "x": 100, + "y": -40 + } + ], + "borderPattern": "BorderPattern.Raised", + "fillColor": { + "r": 245, + "g": 245, + "b": 245 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -150, + "y": 90 + }, + { + "x": 150, + "y": 50 + } + ], + "textString": ",textString=" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -96, + "y": 15 + }, + { + "x": 96, + "y": -15 + } + ], + "textString": "\"%value\"" + } + } + ] + } + } + } + ] + } + } + } + }, + { + "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 is an experimental component to define a\nReal parameter\nin the diagram layer. The idea is to drag the icon from the\npackage browser into the diagram layer. Then a window pops\nup in which the properties of this parameter can be defined\n(such as the default value). The name and default value of the\nparameter are displayed in the icon of this component. Whenever\nclicking on it, the dialog to change parameter settings pops-up.\n

\n

\nIn Dymola, the described property is not fully available.\nCurrently, when dragging this component in the diagram layer,\na dialog pops up in which the properties of the parameter\ncan be defined. However, afterwards, the parameter is not\nvisible in the diagram layer. Making it visible requires to\ngo into the text layer and add an annotation with the\ncomponent size, resulting for example in:\n

\n
\n  parameter StateGraph.Temporary.SetRealParameter name = 2\n                       annotation(Placement(transformation(extent={{-10,-10},{10,10}})));\n
\n

\nThis change makes the parameter icon visible in the\ndiagram layer. However, clicking on this icon has no\neffect. Changing parameter properties, such as the default\nvalue, still requires to go in to the text layer.\n

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + } + ] + }, + { + "extends_clause": { + "name": "Modelica.Icons.Package" + } + }, + { + "extends_clause": { + "name": "Modelica.Icons.ObsoleteModel" + } + }, + { + "class_definition": [ + { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "anyTrue", + "description_string": "Returns true, if at least on element of the Boolean input vector is true", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Function" + } + }, + { + "extends_clause": { + "name": "Modelica.Icons.ObsoleteModel" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "b", + "array_subscripts": [] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "result" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "result" + } + ], + "value": { + "simple_expression": "false" + } + } + }, + { + "for_statement": { + "for_indices": [ + { + "identifier": "i", + "expression": { + "simple_expression": "1:size(b,1)" + } + } + ], + "loop_statements": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "result" + } + ], + "value": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "result" + } + ] + } + ] + }, + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "b[i]" + } + ] + } + ] + } + ] + } + } + } + } + } + ] + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "obsolete", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Obsolete function - use Modelica.Math.BooleanVectors.anyTrue instead\"" + } + } + } + } + }, + { + "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": "\"\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "function", + "class_specifier": { + "long_class_specifier": { + "identifier": "allTrue", + "description_string": "Returns true, if all elements of the Boolean input vector are true", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.Function" + } + }, + { + "extends_clause": { + "name": "Modelica.Icons.ObsoleteModel" + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "b", + "array_subscripts": [] + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "output", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "result" + } + } + ] + } + } + ], + "element_sections": [ + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "result" + } + ], + "value": { + "simple_expression": "true" + } + } + }, + { + "for_statement": { + "for_indices": [ + { + "identifier": "i", + "expression": { + "simple_expression": "1:size(b,1)" + } + } + ], + "loop_statements": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "result" + } + ], + "value": { + "simple_expression": { + "logical_expression": { + "logical_or": [ + { + "logical_and": [ + { + "arithmetic_expressions": [ + { + "name": "result" + } + ] + }, + { + "arithmetic_expressions": [ + { + "name": "b[i]" + } + ] + } + ] + } + ] + } + } + } + } + } + ] + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "obsolete", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Obsolete function - use Modelica.Math.BooleanVectors.allTrue instead\"" + } + } + } + } + }, + { + "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": "\"\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "block", + "class_specifier": { + "long_class_specifier": { + "identifier": "RadioButton", + "description_string": "Button that sets its output to true when pressed and is reset when an element of 'reset' becomes true", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.ObsoleteModel" + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Modelica.SIunits.Time", + "component_list": [ + { + "declaration": { + "identifier": "buttonTimeTable", + "array_subscripts": [], + "modification": { + "equal": true, + "expression": { + "simple_expression": "{0}" + } + } + }, + "description": { + "description_string": "Time instants where button is pressed and released" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "input", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "reset", + "array_subscripts": [], + "modification": { + "equal": true, + "expression": { + "simple_expression": "{false}" + } + } + }, + "description": { + "description_string": "Reset button to false, if an element of reset becomes true", + "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": "\"Time varying expressions\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Interfaces.BooleanOutput", + "component_list": [ + { + "declaration": { + "identifier": "on" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": 100, + "y": -10 + }, + { + "x": 120, + "y": 10 + } + ] + } + } + } + } + } + ] + } + } + ] + } + } + ], + "element_sections": [ + { + "protected_element_list": [ + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Sources.BooleanTable", + "component_list": [ + { + "declaration": { + "identifier": "table", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "table", + "modification": { + "equal": true, + "expression": { + "simple_expression": "buttonTimeTable" + } + } + } + } + } + ] + } + } + } + ] + } + } + ] + }, + { + "equation_section": { + "initial": true, + "equation": [ + { + "assignment_equation": { + "lhs": { + "function_call": { + "name": "pre", + "arguments": [ + { + "name": "reset" + } + ] + } + }, + "rhs": { + "simple_expression": { + "function_call": { + "name": "fill", + "arguments": [ + { + "name": "false" + }, + { + "name": "size(reset,1)" + } + ] + } + } + } + } + } + ] + } + }, + { + "algorithm_section": { + "statement": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "on" + } + ], + "value": { + "simple_expression": "table.y" + } + } + }, + { + "when_statement": [ + { + "condition": { + "simple_expression": { + "function_call": { + "name": "pre", + "arguments": [ + { + "name": "reset" + } + ] + } + } + }, + "then": [ + { + "assignment_statement": { + "identifier": [ + { + "dot_op": false, + "identifier": "on" + } + ], + "value": { + "simple_expression": "false" + } + } + } + ] + } + ] + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "obsolete", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Obsolete model due to experimental design, that will be moved to Modelica.Blocks.Interaction in future\"" + } + } + } + } + }, + { + "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": "Rectangle", + "attribute": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "lineColor": { + "r": 128, + "g": 128, + "b": 128 + }, + "fillColor": { + "r": 192, + "g": 192, + "b": null + }, + "fillPattern": "FillPattern.Solid", + "lineThickness": 0.5 + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -80, + "y": -40 + }, + { + "x": 80, + "y": 40 + } + ], + "textString": "\"%name\"" + } + } + ] + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "interaction", + "modification": { + "equal": true, + "expression": { + "simple_expression": "{OnMouseDownSetBoolean(on,true)}" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "model", + "class_specifier": { + "long_class_specifier": { + "identifier": "NumericValue", + "description_string": "Show value of Real input signal dynamically", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.ObsoleteModel" + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Integer", + "component_list": [ + { + "declaration": { + "identifier": "precision", + "modification": { + "class_modification": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "min", + "modification": { + "equal": true, + "expression": { + "simple_expression": "0" + } + } + } + } + } + ], + "equal": true, + "expression": { + "simple_expression": "3" + } + } + }, + "description": { + "description_string": "Number of significant digits to be shown" + } + } + ] + } + }, + { + "component_clause": { + "type_prefix": "parameter", + "type_specifier": "Boolean", + "component_list": [ + { + "declaration": { + "identifier": "hideConnector", + "modification": { + "equal": true, + "expression": { + "simple_expression": "false" + } + } + }, + "description": { + "description_string": "= true, if connector is not shown in the dynamic object diagram" + } + } + ] + } + }, + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Interfaces.RealInput", + "component_list": [ + { + "declaration": { + "identifier": "Value" + }, + "description": { + "description_string": "Real value to be shown in icon", + "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": "hideConnector" + } + } + } + } + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -140, + "y": -20 + }, + { + "x": -100, + "y": 20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "obsolete", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Obsolete model - use Modelica.Blocks.Interaction.Show.RealValue instead\"" + } + } + } + } + }, + { + "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": 50 + }, + { + "x": -100, + "y": -50 + } + ], + "borderPattern": "BorderPattern.Raised", + "lineColor": { + "r": 0, + "g": 0, + "b": 255 + }, + "fillColor": { + "r": 236, + "g": 233, + "b": 216 + }, + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -90, + "y": -46 + }, + { + "x": 90, + "y": 34 + } + ], + "textString": "DynamicSelect(\" \",String(Value", + "lineColor": { + "r": 0, + "g": 0, + "b": 255 + } + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + { + "class_definition": [ + { + "class_prefixes": "model", + "class_specifier": { + "long_class_specifier": { + "identifier": "IndicatorLamp", + "description_string": "Dynamically show Boolean input signal (false/true = white/green color)", + "composition": { + "element_list": [ + { + "extends_clause": { + "name": "Modelica.Icons.ObsoleteModel" + } + }, + { + "component_clause": { + "type_specifier": "Modelica.Blocks.Interfaces.BooleanInput", + "component_list": [ + { + "declaration": { + "identifier": "u" + }, + "description": { + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "Placement": { + "transformation": { + "extent": [ + { + "x": -140, + "y": -20 + }, + { + "x": -100, + "y": 20 + } + ] + } + } + } + } + } + ] + } + } + ] + } + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "obsolete", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Obsolete model - use Modelica.Blocks.Interaction.Show.BooleanValue instead\"" + } + } + } + } + }, + { + "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": "Ellipse", + "attribute": { + "extent": [ + { + "x": -100, + "y": -100 + }, + { + "x": 100, + "y": 100 + } + ], + "fillColor": { + "r": 235, + "g": 235, + "b": null + }, + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Sphere" + } + }, + { + "name": "Text", + "attribute": { + "extent": [ + { + "x": -150, + "y": 150 + }, + { + "x": 150, + "y": 110 + } + ], + "textString": "\"%name\"", + "lineColor": { + "r": 0, + "g": 0, + "b": 255 + } + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + } + ], + "annotation": [ + { + "element_modification_or_replaceable": { + "element_modification": { + "name": "obsolete", + "modification": { + "equal": true, + "expression": { + "simple_expression": "\"Obsolete package due to experimental design\"" + } + } + } + } + }, + { + "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 library is just temporarily present. The components of\nthis library will be present in the future in the Modelica\nstandard library (with the new block connectors) and in the\nInteraction library .\n

\n\"" + } + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + } + ], + "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

\nNote, there is a much improved version of this library called\n\\\"Modelica_StateGraph2\\\". If this library is not yet distributed with your\nModelica tool, you can download it from\nhttps://github.com/modelica/Modelica_StateGraph2.\nIn the\nUsers Guide\na detailed comparison is given. It is highly recommended to use Modelica_StateGraph2 instead\nof Modelica.StateGraph.\n

\n\n

\nLibrary StateGraph is a free Modelica package providing\ncomponents to model discrete event and reactive\nsystems in a convenient\nway. It is based on the JGrafchart method and\ntakes advantage of Modelica features for\nthe \\\"action\\\" language. JGrafchart is a further development of\nGrafcet to include elements of StateCharts that are not present\nin Grafcet/Sequential Function Charts. Therefore, the StateGraph\nlibrary has a similar modeling power as StateCharts but avoids\nsome deficiencies of StateCharts.\n

\n

\nFor an introduction, have especially a look at:\n

\n\n

\nA typical model generated with this library is shown\nin the next figure where on the left hand side a two-tank\nsystem with a tank controller and on the right hand side the\ntop-level part of the tank controller as a StateGraph is shown:\n

\n\n

\n\n\n\n

\n\n

\nThe unique feature of the StateGraph library with respect to JGrafcharts,\nGrafcet, Sequential Function Charts, and StateCharts, is Modelica's\n\\\"single assignment rule\\\" that requires that every variable is defined\nby exactly one equation. This leads to a different \\\"action\\\" definition\nas in these formalisms. The advantage is that the translator can either\ndetermine a useful evaluation sequence by equation sorting or\nreports an error if this is not possible, e.g., because a model\nwould lead to a non-determinism or to a dead-lock. As a side effect,\nthis leads also to simpler and more easier to understand models and\nglobal variables are no longer needed (whereas in JGrafcharts,\nGrafcet, Sequential Function Charts and StateCharts global variables\nare nearly always needed).\n

\n\n

\nCopyright © 1998-2019, Modelica Association and contributors\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 + } + ] + } + } + } + }, + { + "element_modification_or_replaceable": { + "element_modification": { + "graphics": [ + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -20, + "y": -20 + }, + { + "x": 20, + "y": 20 + } + ], + "origin": { + "x": -70, + "y": 0 + }, + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + } + } + }, + { + "name": "Rectangle", + "attribute": { + "extent": [ + { + "x": -20, + "y": -20 + }, + { + "x": 20, + "y": 20 + } + ], + "origin": { + "x": 70, + "y": 0 + }, + "fillColor": { + "r": 255, + "g": 255, + "b": 255 + } + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 0, + "y": 50 + }, + { + "x": 0, + "y": -50 + } + ] + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -3.3333, + "y": 10 + }, + { + "x": 16.667, + "y": 0 + }, + { + "x": -3.3333, + "y": -10 + } + ], + "origin": { + "x": -16.6667, + "y": 0 + }, + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 15, + "y": 0 + }, + { + "x": -15, + "y": 0 + } + ] + } + }, + { + "name": "Polygon", + "attribute": { + "points": [ + { + "x": -3.3333, + "y": 10 + }, + { + "x": 16.667, + "y": 0 + }, + { + "x": -3.3333, + "y": -10 + } + ], + "origin": { + "x": 33.3333, + "y": 0 + }, + "pattern": "LinePattern.None", + "fillPattern": "FillPattern.Solid" + } + }, + { + "name": "Line", + "attribute": { + "points": [ + { + "x": 15, + "y": 0 + }, + { + "x": -15, + "y": 0 + } + ] + } + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ], + "modelicaFile": "Modelica/StateGraph.mo", + "fullMoFilePath": "/opt/oct/ThirdParty/MSL/MSL323/Modelica/StateGraph.mo", + "checksum": "575f29809697b2aba92edcfe09693c2f" +} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/Block1.json b/test/reference/json/test/FromModelica/Block1.json index 6892fc10..41d851fa 100644 --- a/test/reference/json/test/FromModelica/Block1.json +++ b/test/reference/json/test/FromModelica/Block1.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"Block1","description_string":"A block that instantiates nothing"}}}],"modelicaFile":"test/FromModelica/Block1.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/Block1.mo","checksum":"0ac032b3cd1dc28b1ce78d31c2b74fc8"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"Block1","description_string":"A block that instantiates nothing"}}}],"modelicaFile":"test/FromModelica/Block1.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/Block1.mo","checksum":"0ac032b3cd1dc28b1ce78d31c2b74fc8"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/BlockInputOutput.json b/test/reference/json/test/FromModelica/BlockInputOutput.json index d6c117f9..ec401cbb 100644 --- a/test/reference/json/test/FromModelica/BlockInputOutput.json +++ b/test/reference/json/test/FromModelica/BlockInputOutput.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"BlockInputOutput","description_string":"A block with an input and an output signal","composition":{"element_list":[{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"u"},"description":{"description_string":"Input connector","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]},"iconTransformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"y"},"description":{"description_string":"Output connector","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-10},{"x":120,"y":10}]}}}}}]}}]}}]}}}}],"modelicaFile":"test/FromModelica/BlockInputOutput.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/BlockInputOutput.mo","checksum":"6b3a426c9d74156de11eca45268af019"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"BlockInputOutput","description_string":"A block with an input and an output signal","composition":{"element_list":[{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"u"},"description":{"description_string":"Input connector","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]},"iconTransformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"y"},"description":{"description_string":"Output connector","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-10},{"x":120,"y":10}]}}}}}]}}]}}]}}}}],"modelicaFile":"test/FromModelica/BlockInputOutput.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/BlockInputOutput.mo","checksum":"6b3a426c9d74156de11eca45268af019"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/BlockWithBlock1.json b/test/reference/json/test/FromModelica/BlockWithBlock1.json index 331e299f..5ac58076 100644 --- a/test/reference/json/test/FromModelica/BlockWithBlock1.json +++ b/test/reference/json/test/FromModelica/BlockWithBlock1.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"BlockWithBlock1","description_string":"A block that instantiates another public and protected block","composition":{"element_list":[{"component_clause":{"type_specifier":"Block1","component_list":[{"declaration":{"identifier":"bloPub"},"description":{"description_string":"A public block"}}]}}],"element_sections":[{"protected_element_list":[{"component_clause":{"type_specifier":"Block1","component_list":[{"declaration":{"identifier":"bloPro"},"description":{"description_string":"A protected block"}}]}}]}]}}}}],"modelicaFile":"test/FromModelica/BlockWithBlock1.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/BlockWithBlock1.mo","checksum":"ff65a62871564710f765eb9ca9dd4b06"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"BlockWithBlock1","description_string":"A block that instantiates another public and protected block","composition":{"element_list":[{"component_clause":{"type_specifier":"Block1","component_list":[{"declaration":{"identifier":"bloPub"},"description":{"description_string":"A public block"}}]}}],"element_sections":[{"protected_element_list":[{"component_clause":{"type_specifier":"Block1","component_list":[{"declaration":{"identifier":"bloPro"},"description":{"description_string":"A protected block"}}]}}]}]}}}}],"modelicaFile":"test/FromModelica/BlockWithBlock1.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/BlockWithBlock1.mo","checksum":"ff65a62871564710f765eb9ca9dd4b06"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/ConditionalBlock.json b/test/reference/json/test/FromModelica/ConditionalBlock.json index 5a9e6c1f..2c4a4cff 100644 --- a/test/reference/json/test/FromModelica/ConditionalBlock.json +++ b/test/reference/json/test/FromModelica/ConditionalBlock.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"ConditionalBlock","description_string":"A block with a flag for disabling instances","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Boolean","component_list":[{"declaration":{"identifier":"enaBlo","modification":{"equal":true,"expression":{"simple_expression":"true"}}},"description":{"description_string":"Flag for enabling instance"}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"u"},"condition_attribute":{"expression":{"simple_expression":"enaBlo"}},"description":{"description_string":"Input connector","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]},"iconTransformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"y"},"description":{"description_string":"Output connector","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-10},{"x":120,"y":10}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Abs","component_list":[{"declaration":{"identifier":"abs"},"condition_attribute":{"expression":{"simple_expression":"not enaBlo"}},"description":{"description_string":"Instance could be conditional disabled","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-8,"y":-10},{"x":12,"y":10}]}}}}}]}}]}}]}}}}],"modelicaFile":"test/FromModelica/ConditionalBlock.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/ConditionalBlock.mo","checksum":"ee394cf3dfa2083239e2f8d009c2cd51"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"ConditionalBlock","description_string":"A block with a flag for disabling instances","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Boolean","component_list":[{"declaration":{"identifier":"enaBlo","modification":{"equal":true,"expression":{"simple_expression":"true"}}},"description":{"description_string":"Flag for enabling instance"}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"u"},"condition_attribute":{"expression":{"simple_expression":"enaBlo"}},"description":{"description_string":"Input connector","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]},"iconTransformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"y"},"description":{"description_string":"Output connector","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-10},{"x":120,"y":10}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Abs","component_list":[{"declaration":{"identifier":"abs"},"condition_attribute":{"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":[{"name":"enaBlo"}]}]}]}}}},"description":{"description_string":"Instance could be conditional disabled","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-8,"y":-10},{"x":12,"y":10}]}}}}}]}}]}}]}}}}],"modelicaFile":"test/FromModelica/ConditionalBlock.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/ConditionalBlock.mo","checksum":"ee394cf3dfa2083239e2f8d009c2cd51"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/CustomPWithLimiter.json b/test/reference/json/test/FromModelica/CustomPWithLimiter.json index 0770f291..748bf05a 100644 --- a/test/reference/json/test/FromModelica/CustomPWithLimiter.json +++ b/test/reference/json/test/FromModelica/CustomPWithLimiter.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"CustomPWithLimiter","description_string":"Custom implementation of a P controller with variable output limiter","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"k","modification":{"equal":true,"expression":{"simple_expression":"2"}}},"description":{"description_string":"Constant gain"}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"yMax"},"description":{"description_string":"Maximum value of output signal","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":20},{"x":-100,"y":60}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"e"},"description":{"description_string":"Control error","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-60},{"x":-100,"y":-20}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"y"},"description":{"description_string":"Control signal","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-10},{"x":120,"y":10}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter","component_list":[{"declaration":{"identifier":"gain","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"k","modification":{"equal":true,"expression":{"simple_expression":"k"}}}}}]}},"description":{"description_string":"Constant gain","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-60,"y":-50},{"x":-40,"y":-30}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Min","component_list":[{"declaration":{"identifier":"minValue"},"description":{"description_string":"Outputs the minimum of its inputs","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":20,"y":-10},{"x":40,"y":10}]}}}}}]}}]}}],"element_sections":[{"equation_section":{"equation":[{"connect_clause":{"from":[{"dot_op":false,"identifier":"yMax"}],"to":[{"dot_op":false,"identifier":"minValue"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":40},{"x":-120,"y":40},{"x":-20,"y":40},{"x":-20,"y":6},{"x":18,"y":6}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"e"}],"to":[{"dot_op":false,"identifier":"gain"},{"dot_op":true},{"dot_op":false,"identifier":"u"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":-40},{"x":-92,"y":-40},{"x":-62,"y":-40}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"gain"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"minValue"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-39,"y":-40},{"x":-20,"y":-40},{"x":-20,"y":-6},{"x":18,"y":-6}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"minValue"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"y"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":41,"y":0},{"x":110,"y":0}],"color":{"r":0,"g":0,"b":127}}}}}]}}]}}],"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

\nBlock that outputs y = min(yMax, k*e),\nwhere\nyMax and e are real-valued input signals and\nk is a parameter.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/CustomPWithLimiter.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/CustomPWithLimiter.mo","checksum":"98dd51d06629ef56bcb826106c56a9a8"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"CustomPWithLimiter","description_string":"Custom implementation of a P controller with variable output limiter","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"k","modification":{"equal":true,"expression":{"simple_expression":"2"}}},"description":{"description_string":"Constant gain"}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"yMax"},"description":{"description_string":"Maximum value of output signal","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":20},{"x":-100,"y":60}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"e"},"description":{"description_string":"Control error","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-60},{"x":-100,"y":-20}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"y"},"description":{"description_string":"Control signal","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-10},{"x":120,"y":10}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter","component_list":[{"declaration":{"identifier":"gain","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"k","modification":{"equal":true,"expression":{"simple_expression":"k"}}}}}]}},"description":{"description_string":"Constant gain","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-60,"y":-50},{"x":-40,"y":-30}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Min","component_list":[{"declaration":{"identifier":"minValue"},"description":{"description_string":"Outputs the minimum of its inputs","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":20,"y":-10},{"x":40,"y":10}]}}}}}]}}]}}],"element_sections":[{"equation_section":{"equation":[{"connect_clause":{"from":[{"dot_op":false,"identifier":"yMax"}],"to":[{"dot_op":false,"identifier":"minValue"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":40},{"x":-120,"y":40},{"x":-20,"y":40},{"x":-20,"y":6},{"x":18,"y":6}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"e"}],"to":[{"dot_op":false,"identifier":"gain"},{"dot_op":true},{"dot_op":false,"identifier":"u"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":-40},{"x":-92,"y":-40},{"x":-62,"y":-40}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"gain"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"minValue"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-39,"y":-40},{"x":-20,"y":-40},{"x":-20,"y":-6},{"x":18,"y":-6}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"minValue"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"y"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":41,"y":0},{"x":110,"y":0}],"color":{"r":0,"g":0,"b":127}}}}}]}}]}}],"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

\nBlock that outputs y = min(yMax, k*e),\nwhere\nyMax and e are real-valued input signals and\nk is a parameter.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/CustomPWithLimiter.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/CustomPWithLimiter.mo","checksum":"98dd51d06629ef56bcb826106c56a9a8"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/DynamicTextColor.json b/test/reference/json/test/FromModelica/DynamicTextColor.json index d7dd397c..b8daf62f 100644 --- a/test/reference/json/test/FromModelica/DynamicTextColor.json +++ b/test/reference/json/test/FromModelica/DynamicTextColor.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"DynamicTextColor","description_string":"Some class comment","composition":{"element_list":[{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.Boolean","component_list":[{"declaration":{"identifier":"u"},"description":{"description_string":"Input connector","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]},"iconTransformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]}}}}}]}}]}}],"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 is the info section.\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":"true"}}}},{"element_modification_or_replaceable":{"element_modification":{"graphics":[{"name":"Text","attribute":{"extent":[{"x":-90,"y":80},{"x":-46,"y":54}],"textString":"\"true\"","lineColor":{"r":0,"g":0,"b":null}}},{"name":"Text","attribute":{"extent":[{"x":-150,"y":150},{"x":150,"y":110}],"textString":"\"%name\"","lineColor":{"r":0,"g":0,"b":255}}}]}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/DynamicTextColor.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/DynamicTextColor.mo","checksum":"2b2ee39f32acc385c42dd85bb20449ef"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"DynamicTextColor","description_string":"Some class comment","composition":{"element_list":[{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.Boolean","component_list":[{"declaration":{"identifier":"u"},"description":{"description_string":"Input connector","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]},"iconTransformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]}}}}}]}}]}}],"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 is the info section.\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":"true"}}}},{"element_modification_or_replaceable":{"element_modification":{"graphics":[{"name":"Text","attribute":{"extent":[{"x":-90,"y":80},{"x":-46,"y":54}],"textString":"\"true\"","lineColor":{"r":0,"g":0,"b":null}}},{"name":"Text","attribute":{"extent":[{"x":-150,"y":150},{"x":150,"y":110}],"textString":"\"%name\"","lineColor":{"r":0,"g":0,"b":255}}}]}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/DynamicTextColor.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/DynamicTextColor.mo","checksum":"2b2ee39f32acc385c42dd85bb20449ef"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/EmptyEquation.json b/test/reference/json/test/FromModelica/EmptyEquation.json index 3b303a31..54efb958 100644 --- a/test/reference/json/test/FromModelica/EmptyEquation.json +++ b/test/reference/json/test/FromModelica/EmptyEquation.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"EmptyEquation","description_string":"A block that instantiates nothing","composition":{"element_sections":[{"equation_section":{"equation":[]}}]}}}}],"modelicaFile":"test/FromModelica/EmptyEquation.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/EmptyEquation.mo","checksum":"c59d73edc2ea3867f7a1a3dfa344844c"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"EmptyEquation","description_string":"A block that instantiates nothing","composition":{"element_sections":[{"equation_section":{"equation":[]}}]}}}}],"modelicaFile":"test/FromModelica/EmptyEquation.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/EmptyEquation.mo","checksum":"c59d73edc2ea3867f7a1a3dfa344844c"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/Enable.json b/test/reference/json/test/FromModelica/Enable.json index d90c1917..167f2905 100644 --- a/test/reference/json/test/FromModelica/Enable.json +++ b/test/reference/json/test/FromModelica/Enable.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"Enable","description_string":"Multi zone VAV AHU economizer enable/disable switch","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Boolean","component_list":[{"declaration":{"identifier":"use_enthalpy","modification":{"equal":true,"expression":{"simple_expression":"true"}}},"description":{"description_string":"Set to true to evaluate outdoor air (OA) enthalpy in addition to 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":"\"Conditional\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"delTOutHis","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"K\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"K\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"TemperatureDifference\""}}}}}],"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"Delta between the temperature hysteresis high and low limit","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":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Hysteresis\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"delEntHis","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"J/kg\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"SpecificEnergy\""}}}}}],"equal":true,"expression":{"simple_expression":"1000"}}},"description":{"description_string":"Delta between the enthalpy hysteresis high and low limits","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":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Hysteresis\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"use_enthalpy"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"retDamFulOpeTim","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"s\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"Time\""}}}}}],"equal":true,"expression":{"simple_expression":"180"}}},"description":{"description_string":"Time period to keep RA damper fully open before releasing it for minimum outdoor airflow control\n at disable to avoid pressure fluctuations","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":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Delays at disable\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"disDel","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"s\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"Time\""}}}}}],"equal":true,"expression":{"simple_expression":"15"}}},"description":{"description_string":"Short time delay before closing the OA damper at disable to avoid pressure fluctuations","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":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Delays at disable\""}}}}}]}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"TOut","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"K\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"degC\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"ThermodynamicTemperature\""}}}}}]}},"description":{"description_string":"Outdoor air temperature","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-300,"y":232},{"x":-260,"y":272}]},"iconTransformation":{"extent":[{"x":-140,"y":110},{"x":-100,"y":150}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"hOut","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"J/kg\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"SpecificEnergy\""}}}}}]}},"condition_attribute":{"expression":{"simple_expression":"use_enthalpy"}},"description":{"description_string":"Outdoor air enthalpy","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-300,"y":152},{"x":-260,"y":192}]},"iconTransformation":{"extent":[{"x":-140,"y":60},{"x":-100,"y":100}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"TOutCut","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"K\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"degC\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"ThermodynamicTemperature\""}}}}}]}},"description":{"description_string":"OA temperature high limit cutoff. For differential dry bulb temperature condition use return air temperature measurement","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-300,"y":192},{"x":-260,"y":232}]},"iconTransformation":{"extent":[{"x":-140,"y":90},{"x":-100,"y":130}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"hOutCut","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"J/kg\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"SpecificEnergy\""}}}}}]}},"condition_attribute":{"expression":{"simple_expression":"use_enthalpy"}},"description":{"description_string":"OA enthalpy high limit cutoff. For differential enthalpy use return air enthalpy measurement","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-300,"y":112},{"x":-260,"y":152}]},"iconTransformation":{"extent":[{"x":-140,"y":40},{"x":-100,"y":80}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"uOutDam_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"}}}}}]}},"description":{"description_string":"Minimum outdoor air damper position, output from damper position limits sequence","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-300,"y":-98},{"x":-260,"y":-58}]},"iconTransformation":{"extent":[{"x":-140,"y":-60},{"x":-100,"y":-20}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"uOutDam_max","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"}}}}}]}},"description":{"description_string":"Maximum outdoor air damper position, output from damper position limits sequence","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-300,"y":-58},{"x":-260,"y":-18}]},"iconTransformation":{"extent":[{"x":-140,"y":-40},{"x":-100,"y":0}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"uRetDam_max","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"}}}}}]}},"description":{"description_string":"Maximum return air damper position, output from damper position limits sequence","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-300,"y":-178},{"x":-260,"y":-138}]},"iconTransformation":{"extent":[{"x":-140,"y":-130},{"x":-100,"y":-90}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"uRetDam_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"}}}}}]}},"description":{"description_string":"Minimum return air damper position, output from damper position limits sequence","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-300,"y":-218},{"x":-260,"y":-178}]},"iconTransformation":{"extent":[{"x":-140,"y":-150},{"x":-100,"y":-110}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"uRetDamPhy_max","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"}}}}}]}},"description":{"description_string":"Physical maximum return air damper position, output from damper position limits sequence","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-300,"y":-138},{"x":-260,"y":-98}]},"iconTransformation":{"extent":[{"x":-140,"y":-110},{"x":-100,"y":-70}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.BooleanInput","component_list":[{"declaration":{"identifier":"u1SupFan"},"description":{"description_string":"Supply fan proven on","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-300,"y":62},{"x":-260,"y":102}]},"iconTransformation":{"extent":[{"x":-140,"y":10},{"x":-100,"y":50}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.IntegerInput","component_list":[{"declaration":{"identifier":"uFreProSta"},"description":{"description_string":"Freeze protection stage status signal","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-300,"y":22},{"x":-260,"y":62}]},"iconTransformation":{"extent":[{"x":-140,"y":-10},{"x":-100,"y":30}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"yOutDam_max","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"}}}}}]}},"description":{"description_string":"Maximum outdoor air damper position","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":240,"y":22},{"x":280,"y":62}]},"iconTransformation":{"extent":[{"x":100,"y":80},{"x":140,"y":120}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"yRetDam_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"}}}}}]}},"description":{"description_string":"Minimum return air damper position","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":240,"y":-98},{"x":280,"y":-58}]},"iconTransformation":{"extent":[{"x":100,"y":-120},{"x":140,"y":-80}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"yRetDam_max","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"}}}}}]}},"description":{"description_string":"Maximum return air damper position","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":240,"y":-38},{"x":280,"y":2}]},"iconTransformation":{"extent":[{"x":100,"y":-20},{"x":140,"y":20}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.TrueFalseHold","component_list":[{"declaration":{"identifier":"truFalHol","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"trueHoldDuration","modification":{"equal":true,"expression":{"simple_expression":"600"}}}}}]}},"description":{"description_string":"Economizer should not be enabled or disabled within 10 minutes of change","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":20,"y":182},{"x":40,"y":202}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.And","component_list":[{"declaration":{"identifier":"andEnaDis"},"description":{"description_string":"Check freeze protection stage and zone state","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":60,"y":12},{"x":80,"y":32}]}}}}}]}}]}}],"element_sections":[{"protected_element_list":[{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"TOutHigLimCutHig","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"K\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"K\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"TemperatureDifference\""}}}}}],"equal":true,"expression":{"simple_expression":"0"}}},"description":{"description_string":"Hysteresis high limit cutoff"}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"TOutHigLimCutLow","modification":{"equal":true,"expression":{"simple_expression":"TOutHigLimCutHig -delTOutHis"}}},"description":{"description_string":"Hysteresis low limit cutoff"}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"hOutHigLimCutHig","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"J/kg\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"SpecificEnergy\""}}}}}],"equal":true,"expression":{"simple_expression":"0"}}},"description":{"description_string":"Hysteresis block high limit cutoff"}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"hOutHigLimCutLow","modification":{"equal":true,"expression":{"simple_expression":"hOutHigLimCutHig -delEntHis"}}},"description":{"description_string":"Hysteresis block low limit cutoff"}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Subtract","component_list":[{"declaration":{"identifier":"sub2"},"condition_attribute":{"expression":{"simple_expression":"use_enthalpy"}},"description":{"description_string":"Add block determines difference between hOut and hOutCut","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-200,"y":140},{"x":-180,"y":160}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Subtract","component_list":[{"declaration":{"identifier":"sub1"},"description":{"description_string":"Add block determines difference between TOut and TOutCut","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-200,"y":220},{"x":-180,"y":240}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Hysteresis","component_list":[{"declaration":{"identifier":"hysOutTem","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"uLow","modification":{"equal":true,"expression":{"simple_expression":"TOutHigLimCutLow"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"uHigh","modification":{"equal":true,"expression":{"simple_expression":"TOutHigLimCutHig"}}}}}]}},"description":{"description_string":"Outdoor air temperature hysteresis for both fixed and differential dry bulb temperature cutoff conditions","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-160,"y":220},{"x":-140,"y":240}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Hysteresis","component_list":[{"declaration":{"identifier":"hysOutEnt","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"uLow","modification":{"equal":true,"expression":{"simple_expression":"hOutHigLimCutLow"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"uHigh","modification":{"equal":true,"expression":{"simple_expression":"hOutHigLimCutHig"}}}}}]}},"condition_attribute":{"expression":{"simple_expression":"use_enthalpy"}},"description":{"description_string":"Outdoor air enthalpy hysteresis for both fixed and differential enthalpy cutoff conditions","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-160,"y":140},{"x":-140,"y":160}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Switch","component_list":[{"declaration":{"identifier":"outDamSwitch"},"description":{"description_string":"Set maximum OA damper position to minimum at disable (after a given time delay)","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":82,"y":-78},{"x":102,"y":-58}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Switch","component_list":[{"declaration":{"identifier":"retDamSwitch"},"description":{"description_string":"Set minimum RA damper position to maximum at disable","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-20,"y":-176},{"x":0,"y":-156}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Switch","component_list":[{"declaration":{"identifier":"maxRetDamSwitch"},"description":{"description_string":"Keep maximum RA damper position at physical maximum for a short time period after disable signal","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":60,"y":-136},{"x":80,"y":-116}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Switch","component_list":[{"declaration":{"identifier":"minRetDamSwitch"},"description":{"description_string":"Keep minimum RA damper position at physical maximum for a short time period after disable","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":60,"y":-178},{"x":80,"y":-158}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.Not","component_list":[{"declaration":{"identifier":"not2"},"description":{"description_string":"Logical not that starts the timer at disable signal ","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-60,"y":-58},{"x":-40,"y":-38}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.And","component_list":[{"declaration":{"identifier":"and2"},"description":{"description_string":"Logical and","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":160,"y":-100},{"x":180,"y":-80}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.And","component_list":[{"declaration":{"identifier":"and1"},"description":{"description_string":"Check supply fan status","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":20,"y":80},{"x":40,"y":100}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.And","component_list":[{"declaration":{"identifier":"and3"},"description":{"description_string":"Check if delay time has been passed after economizer being disabled","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":40,"y":-54},{"x":60,"y":-34}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Integers.Equal","component_list":[{"declaration":{"identifier":"intEqu"},"description":{"description_string":"Logical block to check if the freeze protection is deactivated","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-78,"y":32},{"x":-58,"y":52}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.TrueDelay","component_list":[{"declaration":{"identifier":"delOutDamOsc","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"delayTime","modification":{"equal":true,"expression":{"simple_expression":"disDel"}}}}}]}},"description":{"description_string":"Small delay before closing the outdoor air damper to avoid pressure fluctuations","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-20,"y":-58},{"x":0,"y":-38}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.TrueDelay","component_list":[{"declaration":{"identifier":"delRetDam","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"delayTime","modification":{"equal":true,"expression":{"simple_expression":"retDamFulOpeTim"}}}}}]}},"description":{"description_string":"Keep return damper open to its physical maximum for a short period of time before closing the outdoor air damper and resuming the maximum return air damper position, per G36 Part N7","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-20,"y":-108},{"x":0,"y":-88}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.Not","component_list":[{"declaration":{"identifier":"not1"},"description":{"description_string":"Logical not","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":20,"y":-108},{"x":40,"y":-88}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Integers.Sources.Constant","component_list":[{"declaration":{"identifier":"conInt","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"k","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeProtectionStages.stage0"}}}}}]}},"description":{"description_string":"Integer constant, stage 0","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-118,"y":12},{"x":-98,"y":32}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.Sources.Constant","component_list":[{"declaration":{"identifier":"entSubst1","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"k","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}},"condition_attribute":{"expression":{"simple_expression":"not use_enthalpy"}},"description":{"description_string":"Deactivates outdoor air enthalpy condition if there is no enthalpy sensor","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-160,"y":180},{"x":-140,"y":200}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.Or","component_list":[{"declaration":{"identifier":"or2"},"description":{"description_string":"Check if either the temperature or the enthalpy condition is satisfied","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-60,"y":182},{"x":-40,"y":202}]}}}}}]}}]}}]},{"equation_section":{"equation":[{"connect_clause":{"from":[{"dot_op":false,"identifier":"TOut"}],"to":[{"dot_op":false,"identifier":"sub1"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":252},{"x":-240,"y":252},{"x":-240,"y":236},{"x":-202,"y":236}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"TOutCut"}],"to":[{"dot_op":false,"identifier":"sub1"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":212},{"x":-240,"y":212},{"x":-240,"y":224},{"x":-202,"y":224}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"sub1"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"hysOutTem"},{"dot_op":true},{"dot_op":false,"identifier":"u"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-178,"y":230},{"x":-162,"y":230}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"hOut"}],"to":[{"dot_op":false,"identifier":"sub2"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":172},{"x":-240,"y":172},{"x":-240,"y":156},{"x":-202,"y":156}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"hOutCut"}],"to":[{"dot_op":false,"identifier":"sub2"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":132},{"x":-240,"y":132},{"x":-240,"y":144},{"x":-202,"y":144}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"sub2"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"hysOutEnt"},{"dot_op":true},{"dot_op":false,"identifier":"u"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-178,"y":150},{"x":-162,"y":150}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"uOutDam_min"}],"to":[{"dot_op":false,"identifier":"outDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":-78},{"x":10,"y":-78},{"x":10,"y":-60},{"x":80,"y":-60}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"uOutDam_max"}],"to":[{"dot_op":false,"identifier":"outDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"u3"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":-38},{"x":-220,"y":-38},{"x":-220,"y":-76},{"x":80,"y":-76}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"uRetDamPhy_max"}],"to":[{"dot_op":false,"identifier":"maxRetDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":-118},{"x":58,"y":-118}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"uRetDam_max"}],"to":[{"dot_op":false,"identifier":"maxRetDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"u3"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":-158},{"x":-158,"y":-158},{"x":-158,"y":-134},{"x":58,"y":-134}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"andEnaDis"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"not2"},{"dot_op":true},{"dot_op":false,"identifier":"u"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":82,"y":22},{"x":92,"y":22},{"x":92,"y":-8},{"x":-80,"y":-8},{"x":-80,"y":-48},{"x":-62,"y":-48}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"maxRetDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"yRetDam_max"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":82,"y":-126},{"x":200,"y":-126},{"x":200,"y":-18},{"x":260,"y":-18}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"and2"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"maxRetDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":182,"y":-90},{"x":190,"y":-90},{"x":190,"y":-148},{"x":40,"y":-148},{"x":40,"y":-126},{"x":58,"y":-126}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"and2"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"minRetDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":182,"y":-90},{"x":190,"y":-90},{"x":190,"y":-148},{"x":40,"y":-148},{"x":40,"y":-168},{"x":58,"y":-168}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"not2"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"retDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-38,"y":-48},{"x":-30,"y":-48},{"x":-30,"y":-166},{"x":-22,"y":-166}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"uRetDam_max"}],"to":[{"dot_op":false,"identifier":"retDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":-158},{"x":-22,"y":-158}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"uRetDam_min"}],"to":[{"dot_op":false,"identifier":"retDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"u3"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":-198},{"x":-152,"y":-198},{"x":-152,"y":-174},{"x":-22,"y":-174}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"retDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"minRetDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"u3"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":2,"y":-166},{"x":20,"y":-166},{"x":20,"y":-176},{"x":58,"y":-176}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"uRetDamPhy_max"}],"to":[{"dot_op":false,"identifier":"minRetDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":-118},{"x":20,"y":-118},{"x":20,"y":-160},{"x":58,"y":-160}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"truFalHol"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"and1"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":42,"y":192},{"x":50,"y":192},{"x":50,"y":112},{"x":10,"y":112},{"x":10,"y":90},{"x":18,"y":90}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"and1"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"andEnaDis"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":42,"y":90},{"x":50,"y":90},{"x":50,"y":22},{"x":58,"y":22}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"u1SupFan"}],"to":[{"dot_op":false,"identifier":"and1"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":82},{"x":18,"y":82}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"outDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}],"to":[{"dot_op":false,"identifier":"and3"},{"dot_op":true},{"dot_op":false,"identifier":"y"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":80,"y":-68},{"x":70,"y":-68},{"x":70,"y":-44},{"x":62,"y":-44}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"not2"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"and3"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-38,"y":-48},{"x":-30,"y":-48},{"x":-30,"y":-22},{"x":28,"y":-22},{"x":28,"y":-44},{"x":38,"y":-44}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"and2"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}],"to":[{"dot_op":false,"identifier":"not2"},{"dot_op":true},{"dot_op":false,"identifier":"y"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":158,"y":-90},{"x":126,"y":-90},{"x":126,"y":-22},{"x":-30,"y":-22},{"x":-30,"y":-48},{"x":-38,"y":-48}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"and3"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}],"to":[{"dot_op":false,"identifier":"delOutDamOsc"},{"dot_op":true},{"dot_op":false,"identifier":"y"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":38,"y":-52},{"x":20,"y":-52},{"x":20,"y":-48},{"x":2,"y":-48}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"delOutDamOsc"},{"dot_op":true},{"dot_op":false,"identifier":"u"}],"to":[{"dot_op":false,"identifier":"not2"},{"dot_op":true},{"dot_op":false,"identifier":"y"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-22,"y":-48},{"x":-38,"y":-48}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"not2"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"delRetDam"},{"dot_op":true},{"dot_op":false,"identifier":"u"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-38,"y":-48},{"x":-30,"y":-48},{"x":-30,"y":-98},{"x":-22,"y":-98}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"delRetDam"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"not1"},{"dot_op":true},{"dot_op":false,"identifier":"u"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":2,"y":-98},{"x":18,"y":-98}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"not1"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"and2"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":42,"y":-98},{"x":158,"y":-98}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"uFreProSta"}],"to":[{"dot_op":false,"identifier":"intEqu"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":42},{"x":-80,"y":42}],"color":{"r":255,"g":127,"b":0}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"conInt"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"intEqu"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-96,"y":22},{"x":-90,"y":22},{"x":-90,"y":34},{"x":-80,"y":34}],"color":{"r":255,"g":127,"b":0}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"intEqu"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"andEnaDis"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-56,"y":42},{"x":40,"y":42},{"x":40,"y":14},{"x":58,"y":14}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"outDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"yOutDam_max"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":104,"y":-68},{"x":190,"y":-68},{"x":190,"y":42},{"x":260,"y":42}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"minRetDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"yRetDam_min"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":82,"y":-168},{"x":210,"y":-168},{"x":210,"y":-78},{"x":260,"y":-78}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"or2"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"truFalHol"},{"dot_op":true},{"dot_op":false,"identifier":"u"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-38,"y":192},{"x":18,"y":192}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"hysOutTem"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"or2"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-138,"y":230},{"x":-80,"y":230},{"x":-80,"y":192},{"x":-62,"y":192}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"hysOutEnt"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"or2"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-138,"y":150},{"x":-100,"y":150},{"x":-100,"y":184},{"x":-62,"y":184}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"entSubst1"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"or2"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-138,"y":190},{"x":-100,"y":190},{"x":-100,"y":184},{"x":-62,"y":184}],"color":{"r":255,"g":0,"b":255}}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"enaDis\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Icon","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"coordinateSystem":{"extent":[{"x":-100,"y":-140},{"x":100,"y":140}]}}}},{"element_modification_or_replaceable":{"element_modification":{"graphics":[{"name":"Rectangle","attribute":{"extent":[{"x":-100,"y":-140},{"x":100,"y":140}],"lineColor":{"r":0,"g":0,"b":127},"fillColor":{"r":255,"g":255,"b":255},"fillPattern":"FillPattern.Solid"}},{"name":"Text","attribute":{"extent":[{"x":-100,"y":180},{"x":100,"y":140}],"textString":"\"%name\"","textColor":{"r":0,"g":0,"b":255}}},{"name":"Line","attribute":{"points":[{"x":0,"y":60},{"x":80,"y":60}],"color":{"r":0,"g":0,"b":127},"thickness":0.5}},{"name":"Line","attribute":{"points":[{"x":-80,"y":-60},{"x":0,"y":-60},{"x":0,"y":60}],"color":{"r":0,"g":0,"b":127},"thickness":0.5}},{"name":"Text","attribute":{"extent":[{"x":-98,"y":38},{"x":-56,"y":24}],"textString":"\"u1SupFan\"","textColor":{"r":255,"g":0,"b":255},"pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":-100,"y":18},{"x":-44,"y":4}],"textString":"\"uFreProSta\"","textColor":{"r":255,"g":127,"b":0},"pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":-100,"y":68},{"x":-56,"y":54}],"textString":"\"hOutCut\"","textColor":{"r":0,"g":0,"b":127},"visible":"use_enthalpy","pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":-100,"y":86},{"x":-70,"y":72}],"textString":"\"hOut\"","textColor":{"r":0,"g":0,"b":127},"visible":"use_enthalpy","pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":-100,"y":116},{"x":-56,"y":102}],"textString":"\"TOutCut\"","textColor":{"r":0,"g":0,"b":127},"pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":-100,"y":138},{"x":-72,"y":124}],"textString":"\"TOut\"","textColor":{"r":0,"g":0,"b":127},"pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":-96,"y":-100},{"x":-32,"y":-118}],"textString":"\"uRetDam_max\"","textColor":{"r":0,"g":0,"b":127},"pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":-96,"y":-10},{"x":-28,"y":-28}],"textString":"\"uOutDam_max\"","textColor":{"r":0,"g":0,"b":127},"pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":-96,"y":-30},{"x":-28,"y":-48}],"textString":"\"uOutDam_min\"","textColor":{"r":0,"g":0,"b":127},"pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":-96,"y":-80},{"x":-12,"y":-98}],"textString":"\"uRetDamPhy_max\"","textColor":{"r":0,"g":0,"b":127},"pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":-96,"y":-120},{"x":-32,"y":-138}],"textString":"\"uRetDam_min\"","textColor":{"r":0,"g":0,"b":127},"pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":36,"y":110},{"x":96,"y":92}],"textString":"\"yOutDam_max\"","textColor":{"r":0,"g":0,"b":127},"pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":36,"y":12},{"x":96,"y":-6}],"textString":"\"yRetDam_max\"","textColor":{"r":0,"g":0,"b":127},"pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":36,"y":-88},{"x":96,"y":-106}],"textString":"\"yRetDam_min\"","textColor":{"r":0,"g":0,"b":127},"pattern":"LinePattern.Dash"}}]}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Diagram","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"coordinateSystem":{"extent":[{"x":-260,"y":-280},{"x":240,"y":280}],"preserveAspectRatio":"false","initialScale":0.05}}}},{"element_modification_or_replaceable":{"element_modification":{"graphics":[{"name":"Rectangle","attribute":{"extent":[{"x":-240,"y":-2},{"x":220,"y":-250}],"lineColor":{"r":215,"g":215,"b":215},"fillColor":{"r":215,"g":215,"b":215},"fillPattern":"FillPattern.Solid"}},{"name":"Rectangle","attribute":{"extent":[{"x":-240,"y":58},{"x":220,"y":6}],"lineColor":{"r":215,"g":215,"b":215},"fillColor":{"r":215,"g":215,"b":215},"fillPattern":"FillPattern.Solid"}},{"name":"Rectangle","attribute":{"extent":[{"x":-240,"y":118},{"x":220,"y":66}],"lineColor":{"r":215,"g":215,"b":215},"fillColor":{"r":215,"g":215,"b":215},"fillPattern":"FillPattern.Solid"}},{"name":"Rectangle","attribute":{"extent":[{"x":-240,"y":258},{"x":220,"y":130}],"lineColor":{"r":215,"g":215,"b":215},"fillColor":{"r":215,"g":215,"b":215},"fillPattern":"FillPattern.Solid"}},{"name":"Text","attribute":{"extent":[{"x":120,"y":158},{"x":204,"y":138}],"textString":"\"Outdoor air\nconditions\"","textColor":{"r":0,"g":0,"b":0},"horizontalAlignment":"TextAlignment.Left"}},{"name":"Text","attribute":{"extent":[{"x":120,"y":52},{"x":298,"y":18}],"textString":"\"Freeze protection -\ndisable if stage1\nand above\"","textColor":{"r":0,"g":0,"b":0},"horizontalAlignment":"TextAlignment.Left"}},{"name":"Text","attribute":{"extent":[{"x":120,"y":-198},{"x":288,"y":-246}],"textString":"\"Damper position\nlimit assignments\nwith delays\"","textColor":{"r":0,"g":0,"b":0},"horizontalAlignment":"TextAlignment.Left"}},{"name":"Text","attribute":{"extent":[{"x":120,"y":84},{"x":214,"y":74}],"textString":"\"Supply fan status\"","textColor":{"r":0,"g":0,"b":0},"horizontalAlignment":"TextAlignment.Left"}}]}}}]}}}},{"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 is a multi zone VAV AHU economizer enable/disable sequence\nbased on the Section 5.16.7 of the ASHRAE Guideline 36, May 2020. Additional\nconditions included in the sequence are: freeze protection (freeze protection\nstage 0-3, see Section 5.16.12), supply fan status (on or off, see Section 5.16.5).\n

\n

\nThe economizer is disabled whenever the outdoor air conditions\nexceed the economizer high limit setpoint.\nThis sequence allows for all device types listed in\nASHRAE 90.1-2013 and Title 24-2013.\n

\n

\nIn addition, the economizer gets disabled without a delay whenever any of the\nfollowing is true:\n

\n\n

\nThe following state machine chart illustrates the transitions between enabling and disabling:\n

\n

\n\\\"Image\n

\n

\nAfter the disable signal is activated, the following procedure is applied, in order to\nprevent pressure fluctuations in the HVAC system:\n

\n
    \n
  • \nThe return damper gets fully opened (yRetDam_max = uRetDamPhy_max and\nyRetDam_min = uRetDamPhy_max) for retDamFulOpeTim\ntime period, after which the return damper gets released to its minimum outdoor airflow control position\n(yRetDam_max = uRetDam_max and yRetDam_min = uRetDam_max).\n
  • \n
  • \nThe outdoor air damper is closed to its minimum outoor airflow control limit (yOutDam_max = uOutDam_min)\nafter a disDel time delay.\n
  • \n
\n\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"revisions","modification":{"equal":true,"expression":{"simple_expression":"\"\n
    \n
  • \nOctober 13, 2017, by Michael Wetter:
    \nAdded freeze protection that tracks mixed air temperature.\n
  • \n
  • \nAugust 3, 2017, by Michael Wetter:
    \nRemoved unrequired input into block and2 as this input\nwas always true if and2.u2 = true.\n
  • \n
  • \nJune 27, 2017, by Milica Grahovac:
    \nFirst implementation.\n
  • \n
\n\""}}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/Enable.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/Enable.mo","checksum":"91bcd83720b7c80a8ac4c5c5ea9bebac"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"Enable","description_string":"Multi zone VAV AHU economizer enable/disable switch","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Boolean","component_list":[{"declaration":{"identifier":"use_enthalpy","modification":{"equal":true,"expression":{"simple_expression":"true"}}},"description":{"description_string":"Set to true to evaluate outdoor air (OA) enthalpy in addition to 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":"\"Conditional\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"delTOutHis","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"K\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"K\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"TemperatureDifference\""}}}}}],"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"Delta between the temperature hysteresis high and low limit","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":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Hysteresis\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"delEntHis","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"J/kg\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"SpecificEnergy\""}}}}}],"equal":true,"expression":{"simple_expression":"1000"}}},"description":{"description_string":"Delta between the enthalpy hysteresis high and low limits","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":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Hysteresis\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"use_enthalpy"}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"retDamFulOpeTim","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"s\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"Time\""}}}}}],"equal":true,"expression":{"simple_expression":"180"}}},"description":{"description_string":"Time period to keep RA damper fully open before releasing it for minimum outdoor airflow control\n at disable to avoid pressure fluctuations","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":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Delays at disable\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"disDel","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"s\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"Time\""}}}}}],"equal":true,"expression":{"simple_expression":"15"}}},"description":{"description_string":"Short time delay before closing the OA damper at disable to avoid pressure fluctuations","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":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Delays at disable\""}}}}}]}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"TOut","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"K\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"degC\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"ThermodynamicTemperature\""}}}}}]}},"description":{"description_string":"Outdoor air temperature","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-300,"y":232},{"x":-260,"y":272}]},"iconTransformation":{"extent":[{"x":-140,"y":110},{"x":-100,"y":150}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"hOut","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"J/kg\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"SpecificEnergy\""}}}}}]}},"condition_attribute":{"expression":{"simple_expression":"use_enthalpy"}},"description":{"description_string":"Outdoor air enthalpy","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-300,"y":152},{"x":-260,"y":192}]},"iconTransformation":{"extent":[{"x":-140,"y":60},{"x":-100,"y":100}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"TOutCut","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"K\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"degC\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"ThermodynamicTemperature\""}}}}}]}},"description":{"description_string":"OA temperature high limit cutoff. For differential dry bulb temperature condition use return air temperature measurement","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-300,"y":192},{"x":-260,"y":232}]},"iconTransformation":{"extent":[{"x":-140,"y":90},{"x":-100,"y":130}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"hOutCut","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"J/kg\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"SpecificEnergy\""}}}}}]}},"condition_attribute":{"expression":{"simple_expression":"use_enthalpy"}},"description":{"description_string":"OA enthalpy high limit cutoff. For differential enthalpy use return air enthalpy measurement","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-300,"y":112},{"x":-260,"y":152}]},"iconTransformation":{"extent":[{"x":-140,"y":40},{"x":-100,"y":80}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"uOutDam_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"}}}}}]}},"description":{"description_string":"Minimum outdoor air damper position, output from damper position limits sequence","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-300,"y":-98},{"x":-260,"y":-58}]},"iconTransformation":{"extent":[{"x":-140,"y":-60},{"x":-100,"y":-20}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"uOutDam_max","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"}}}}}]}},"description":{"description_string":"Maximum outdoor air damper position, output from damper position limits sequence","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-300,"y":-58},{"x":-260,"y":-18}]},"iconTransformation":{"extent":[{"x":-140,"y":-40},{"x":-100,"y":0}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"uRetDam_max","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"}}}}}]}},"description":{"description_string":"Maximum return air damper position, output from damper position limits sequence","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-300,"y":-178},{"x":-260,"y":-138}]},"iconTransformation":{"extent":[{"x":-140,"y":-130},{"x":-100,"y":-90}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"uRetDam_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"}}}}}]}},"description":{"description_string":"Minimum return air damper position, output from damper position limits sequence","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-300,"y":-218},{"x":-260,"y":-178}]},"iconTransformation":{"extent":[{"x":-140,"y":-150},{"x":-100,"y":-110}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"uRetDamPhy_max","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"}}}}}]}},"description":{"description_string":"Physical maximum return air damper position, output from damper position limits sequence","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-300,"y":-138},{"x":-260,"y":-98}]},"iconTransformation":{"extent":[{"x":-140,"y":-110},{"x":-100,"y":-70}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.BooleanInput","component_list":[{"declaration":{"identifier":"u1SupFan"},"description":{"description_string":"Supply fan proven on","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-300,"y":62},{"x":-260,"y":102}]},"iconTransformation":{"extent":[{"x":-140,"y":10},{"x":-100,"y":50}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.IntegerInput","component_list":[{"declaration":{"identifier":"uFreProSta"},"description":{"description_string":"Freeze protection stage status signal","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-300,"y":22},{"x":-260,"y":62}]},"iconTransformation":{"extent":[{"x":-140,"y":-10},{"x":-100,"y":30}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"yOutDam_max","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"}}}}}]}},"description":{"description_string":"Maximum outdoor air damper position","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":240,"y":22},{"x":280,"y":62}]},"iconTransformation":{"extent":[{"x":100,"y":80},{"x":140,"y":120}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"yRetDam_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"}}}}}]}},"description":{"description_string":"Minimum return air damper position","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":240,"y":-98},{"x":280,"y":-58}]},"iconTransformation":{"extent":[{"x":100,"y":-120},{"x":140,"y":-80}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"yRetDam_max","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"}}}}}]}},"description":{"description_string":"Maximum return air damper position","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":240,"y":-38},{"x":280,"y":2}]},"iconTransformation":{"extent":[{"x":100,"y":-20},{"x":140,"y":20}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.TrueFalseHold","component_list":[{"declaration":{"identifier":"truFalHol","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"trueHoldDuration","modification":{"equal":true,"expression":{"simple_expression":"600"}}}}}]}},"description":{"description_string":"Economizer should not be enabled or disabled within 10 minutes of change","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":20,"y":182},{"x":40,"y":202}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.And","component_list":[{"declaration":{"identifier":"andEnaDis"},"description":{"description_string":"Check freeze protection stage and zone state","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":60,"y":12},{"x":80,"y":32}]}}}}}]}}]}}],"element_sections":[{"protected_element_list":[{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"TOutHigLimCutHig","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"K\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"K\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"TemperatureDifference\""}}}}}],"equal":true,"expression":{"simple_expression":"0"}}},"description":{"description_string":"Hysteresis high limit cutoff"}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"TOutHigLimCutLow","modification":{"equal":true,"expression":{"simple_expression":"TOutHigLimCutHig -delTOutHis"}}},"description":{"description_string":"Hysteresis low limit cutoff"}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"hOutHigLimCutHig","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"J/kg\""}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"SpecificEnergy\""}}}}}],"equal":true,"expression":{"simple_expression":"0"}}},"description":{"description_string":"Hysteresis block high limit cutoff"}}]}},{"final":true,"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"hOutHigLimCutLow","modification":{"equal":true,"expression":{"simple_expression":"hOutHigLimCutHig -delEntHis"}}},"description":{"description_string":"Hysteresis block low limit cutoff"}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Subtract","component_list":[{"declaration":{"identifier":"sub2"},"condition_attribute":{"expression":{"simple_expression":"use_enthalpy"}},"description":{"description_string":"Add block determines difference between hOut and hOutCut","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-200,"y":140},{"x":-180,"y":160}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Subtract","component_list":[{"declaration":{"identifier":"sub1"},"description":{"description_string":"Add block determines difference between TOut and TOutCut","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-200,"y":220},{"x":-180,"y":240}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Hysteresis","component_list":[{"declaration":{"identifier":"hysOutTem","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"uLow","modification":{"equal":true,"expression":{"simple_expression":"TOutHigLimCutLow"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"uHigh","modification":{"equal":true,"expression":{"simple_expression":"TOutHigLimCutHig"}}}}}]}},"description":{"description_string":"Outdoor air temperature hysteresis for both fixed and differential dry bulb temperature cutoff conditions","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-160,"y":220},{"x":-140,"y":240}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Hysteresis","component_list":[{"declaration":{"identifier":"hysOutEnt","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"uLow","modification":{"equal":true,"expression":{"simple_expression":"hOutHigLimCutLow"}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"uHigh","modification":{"equal":true,"expression":{"simple_expression":"hOutHigLimCutHig"}}}}}]}},"condition_attribute":{"expression":{"simple_expression":"use_enthalpy"}},"description":{"description_string":"Outdoor air enthalpy hysteresis for both fixed and differential enthalpy cutoff conditions","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-160,"y":140},{"x":-140,"y":160}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Switch","component_list":[{"declaration":{"identifier":"outDamSwitch"},"description":{"description_string":"Set maximum OA damper position to minimum at disable (after a given time delay)","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":82,"y":-78},{"x":102,"y":-58}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Switch","component_list":[{"declaration":{"identifier":"retDamSwitch"},"description":{"description_string":"Set minimum RA damper position to maximum at disable","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-20,"y":-176},{"x":0,"y":-156}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Switch","component_list":[{"declaration":{"identifier":"maxRetDamSwitch"},"description":{"description_string":"Keep maximum RA damper position at physical maximum for a short time period after disable signal","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":60,"y":-136},{"x":80,"y":-116}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Switch","component_list":[{"declaration":{"identifier":"minRetDamSwitch"},"description":{"description_string":"Keep minimum RA damper position at physical maximum for a short time period after disable","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":60,"y":-178},{"x":80,"y":-158}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.Not","component_list":[{"declaration":{"identifier":"not2"},"description":{"description_string":"Logical not that starts the timer at disable signal ","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-60,"y":-58},{"x":-40,"y":-38}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.And","component_list":[{"declaration":{"identifier":"and2"},"description":{"description_string":"Logical and","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":160,"y":-100},{"x":180,"y":-80}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.And","component_list":[{"declaration":{"identifier":"and1"},"description":{"description_string":"Check supply fan status","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":20,"y":80},{"x":40,"y":100}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.And","component_list":[{"declaration":{"identifier":"and3"},"description":{"description_string":"Check if delay time has been passed after economizer being disabled","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":40,"y":-54},{"x":60,"y":-34}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Integers.Equal","component_list":[{"declaration":{"identifier":"intEqu"},"description":{"description_string":"Logical block to check if the freeze protection is deactivated","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-78,"y":32},{"x":-58,"y":52}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.TrueDelay","component_list":[{"declaration":{"identifier":"delOutDamOsc","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"delayTime","modification":{"equal":true,"expression":{"simple_expression":"disDel"}}}}}]}},"description":{"description_string":"Small delay before closing the outdoor air damper to avoid pressure fluctuations","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-20,"y":-58},{"x":0,"y":-38}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.TrueDelay","component_list":[{"declaration":{"identifier":"delRetDam","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"delayTime","modification":{"equal":true,"expression":{"simple_expression":"retDamFulOpeTim"}}}}}]}},"description":{"description_string":"Keep return damper open to its physical maximum for a short period of time before closing the outdoor air damper and resuming the maximum return air damper position, per G36 Part N7","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-20,"y":-108},{"x":0,"y":-88}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.Not","component_list":[{"declaration":{"identifier":"not1"},"description":{"description_string":"Logical not","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":20,"y":-108},{"x":40,"y":-88}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Integers.Sources.Constant","component_list":[{"declaration":{"identifier":"conInt","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"k","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Controls.OBC.ASHRAE.G36.Types.FreezeProtectionStages.stage0"}}}}}]}},"description":{"description_string":"Integer constant, stage 0","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-118,"y":12},{"x":-98,"y":32}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.Sources.Constant","component_list":[{"declaration":{"identifier":"entSubst1","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"k","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}},"condition_attribute":{"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":[{"name":"use_enthalpy"}]}]}]}}}},"description":{"description_string":"Deactivates outdoor air enthalpy condition if there is no enthalpy sensor","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-160,"y":180},{"x":-140,"y":200}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.Or","component_list":[{"declaration":{"identifier":"or2"},"description":{"description_string":"Check if either the temperature or the enthalpy condition is satisfied","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-60,"y":182},{"x":-40,"y":202}]}}}}}]}}]}}]},{"equation_section":{"equation":[{"connect_clause":{"from":[{"dot_op":false,"identifier":"TOut"}],"to":[{"dot_op":false,"identifier":"sub1"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":252},{"x":-240,"y":252},{"x":-240,"y":236},{"x":-202,"y":236}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"TOutCut"}],"to":[{"dot_op":false,"identifier":"sub1"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":212},{"x":-240,"y":212},{"x":-240,"y":224},{"x":-202,"y":224}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"sub1"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"hysOutTem"},{"dot_op":true},{"dot_op":false,"identifier":"u"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-178,"y":230},{"x":-162,"y":230}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"hOut"}],"to":[{"dot_op":false,"identifier":"sub2"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":172},{"x":-240,"y":172},{"x":-240,"y":156},{"x":-202,"y":156}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"hOutCut"}],"to":[{"dot_op":false,"identifier":"sub2"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":132},{"x":-240,"y":132},{"x":-240,"y":144},{"x":-202,"y":144}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"sub2"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"hysOutEnt"},{"dot_op":true},{"dot_op":false,"identifier":"u"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-178,"y":150},{"x":-162,"y":150}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"uOutDam_min"}],"to":[{"dot_op":false,"identifier":"outDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":-78},{"x":10,"y":-78},{"x":10,"y":-60},{"x":80,"y":-60}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"uOutDam_max"}],"to":[{"dot_op":false,"identifier":"outDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"u3"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":-38},{"x":-220,"y":-38},{"x":-220,"y":-76},{"x":80,"y":-76}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"uRetDamPhy_max"}],"to":[{"dot_op":false,"identifier":"maxRetDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":-118},{"x":58,"y":-118}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"uRetDam_max"}],"to":[{"dot_op":false,"identifier":"maxRetDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"u3"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":-158},{"x":-158,"y":-158},{"x":-158,"y":-134},{"x":58,"y":-134}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"andEnaDis"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"not2"},{"dot_op":true},{"dot_op":false,"identifier":"u"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":82,"y":22},{"x":92,"y":22},{"x":92,"y":-8},{"x":-80,"y":-8},{"x":-80,"y":-48},{"x":-62,"y":-48}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"maxRetDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"yRetDam_max"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":82,"y":-126},{"x":200,"y":-126},{"x":200,"y":-18},{"x":260,"y":-18}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"and2"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"maxRetDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":182,"y":-90},{"x":190,"y":-90},{"x":190,"y":-148},{"x":40,"y":-148},{"x":40,"y":-126},{"x":58,"y":-126}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"and2"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"minRetDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":182,"y":-90},{"x":190,"y":-90},{"x":190,"y":-148},{"x":40,"y":-148},{"x":40,"y":-168},{"x":58,"y":-168}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"not2"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"retDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-38,"y":-48},{"x":-30,"y":-48},{"x":-30,"y":-166},{"x":-22,"y":-166}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"uRetDam_max"}],"to":[{"dot_op":false,"identifier":"retDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":-158},{"x":-22,"y":-158}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"uRetDam_min"}],"to":[{"dot_op":false,"identifier":"retDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"u3"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":-198},{"x":-152,"y":-198},{"x":-152,"y":-174},{"x":-22,"y":-174}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"retDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"minRetDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"u3"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":2,"y":-166},{"x":20,"y":-166},{"x":20,"y":-176},{"x":58,"y":-176}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"uRetDamPhy_max"}],"to":[{"dot_op":false,"identifier":"minRetDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":-118},{"x":20,"y":-118},{"x":20,"y":-160},{"x":58,"y":-160}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"truFalHol"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"and1"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":42,"y":192},{"x":50,"y":192},{"x":50,"y":112},{"x":10,"y":112},{"x":10,"y":90},{"x":18,"y":90}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"and1"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"andEnaDis"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":42,"y":90},{"x":50,"y":90},{"x":50,"y":22},{"x":58,"y":22}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"u1SupFan"}],"to":[{"dot_op":false,"identifier":"and1"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":82},{"x":18,"y":82}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"outDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}],"to":[{"dot_op":false,"identifier":"and3"},{"dot_op":true},{"dot_op":false,"identifier":"y"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":80,"y":-68},{"x":70,"y":-68},{"x":70,"y":-44},{"x":62,"y":-44}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"not2"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"and3"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-38,"y":-48},{"x":-30,"y":-48},{"x":-30,"y":-22},{"x":28,"y":-22},{"x":28,"y":-44},{"x":38,"y":-44}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"and2"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}],"to":[{"dot_op":false,"identifier":"not2"},{"dot_op":true},{"dot_op":false,"identifier":"y"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":158,"y":-90},{"x":126,"y":-90},{"x":126,"y":-22},{"x":-30,"y":-22},{"x":-30,"y":-48},{"x":-38,"y":-48}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"and3"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}],"to":[{"dot_op":false,"identifier":"delOutDamOsc"},{"dot_op":true},{"dot_op":false,"identifier":"y"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":38,"y":-52},{"x":20,"y":-52},{"x":20,"y":-48},{"x":2,"y":-48}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"delOutDamOsc"},{"dot_op":true},{"dot_op":false,"identifier":"u"}],"to":[{"dot_op":false,"identifier":"not2"},{"dot_op":true},{"dot_op":false,"identifier":"y"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-22,"y":-48},{"x":-38,"y":-48}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"not2"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"delRetDam"},{"dot_op":true},{"dot_op":false,"identifier":"u"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-38,"y":-48},{"x":-30,"y":-48},{"x":-30,"y":-98},{"x":-22,"y":-98}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"delRetDam"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"not1"},{"dot_op":true},{"dot_op":false,"identifier":"u"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":2,"y":-98},{"x":18,"y":-98}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"not1"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"and2"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":42,"y":-98},{"x":158,"y":-98}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"uFreProSta"}],"to":[{"dot_op":false,"identifier":"intEqu"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-280,"y":42},{"x":-80,"y":42}],"color":{"r":255,"g":127,"b":0}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"conInt"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"intEqu"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-96,"y":22},{"x":-90,"y":22},{"x":-90,"y":34},{"x":-80,"y":34}],"color":{"r":255,"g":127,"b":0}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"intEqu"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"andEnaDis"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-56,"y":42},{"x":40,"y":42},{"x":40,"y":14},{"x":58,"y":14}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"outDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"yOutDam_max"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":104,"y":-68},{"x":190,"y":-68},{"x":190,"y":42},{"x":260,"y":42}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"minRetDamSwitch"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"yRetDam_min"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":82,"y":-168},{"x":210,"y":-168},{"x":210,"y":-78},{"x":260,"y":-78}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"or2"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"truFalHol"},{"dot_op":true},{"dot_op":false,"identifier":"u"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-38,"y":192},{"x":18,"y":192}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"hysOutTem"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"or2"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-138,"y":230},{"x":-80,"y":230},{"x":-80,"y":192},{"x":-62,"y":192}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"hysOutEnt"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"or2"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-138,"y":150},{"x":-100,"y":150},{"x":-100,"y":184},{"x":-62,"y":184}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"entSubst1"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"or2"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-138,"y":190},{"x":-100,"y":190},{"x":-100,"y":184},{"x":-62,"y":184}],"color":{"r":255,"g":0,"b":255}}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"enaDis\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Icon","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"coordinateSystem":{"extent":[{"x":-100,"y":-140},{"x":100,"y":140}]}}}},{"element_modification_or_replaceable":{"element_modification":{"graphics":[{"name":"Rectangle","attribute":{"extent":[{"x":-100,"y":-140},{"x":100,"y":140}],"lineColor":{"r":0,"g":0,"b":127},"fillColor":{"r":255,"g":255,"b":255},"fillPattern":"FillPattern.Solid"}},{"name":"Text","attribute":{"extent":[{"x":-100,"y":180},{"x":100,"y":140}],"textString":"\"%name\"","textColor":{"r":0,"g":0,"b":255}}},{"name":"Line","attribute":{"points":[{"x":0,"y":60},{"x":80,"y":60}],"color":{"r":0,"g":0,"b":127},"thickness":0.5}},{"name":"Line","attribute":{"points":[{"x":-80,"y":-60},{"x":0,"y":-60},{"x":0,"y":60}],"color":{"r":0,"g":0,"b":127},"thickness":0.5}},{"name":"Text","attribute":{"extent":[{"x":-98,"y":38},{"x":-56,"y":24}],"textString":"\"u1SupFan\"","textColor":{"r":255,"g":0,"b":255},"pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":-100,"y":18},{"x":-44,"y":4}],"textString":"\"uFreProSta\"","textColor":{"r":255,"g":127,"b":0},"pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":-100,"y":68},{"x":-56,"y":54}],"textString":"\"hOutCut\"","textColor":{"r":0,"g":0,"b":127},"visible":"use_enthalpy","pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":-100,"y":86},{"x":-70,"y":72}],"textString":"\"hOut\"","textColor":{"r":0,"g":0,"b":127},"visible":"use_enthalpy","pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":-100,"y":116},{"x":-56,"y":102}],"textString":"\"TOutCut\"","textColor":{"r":0,"g":0,"b":127},"pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":-100,"y":138},{"x":-72,"y":124}],"textString":"\"TOut\"","textColor":{"r":0,"g":0,"b":127},"pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":-96,"y":-100},{"x":-32,"y":-118}],"textString":"\"uRetDam_max\"","textColor":{"r":0,"g":0,"b":127},"pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":-96,"y":-10},{"x":-28,"y":-28}],"textString":"\"uOutDam_max\"","textColor":{"r":0,"g":0,"b":127},"pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":-96,"y":-30},{"x":-28,"y":-48}],"textString":"\"uOutDam_min\"","textColor":{"r":0,"g":0,"b":127},"pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":-96,"y":-80},{"x":-12,"y":-98}],"textString":"\"uRetDamPhy_max\"","textColor":{"r":0,"g":0,"b":127},"pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":-96,"y":-120},{"x":-32,"y":-138}],"textString":"\"uRetDam_min\"","textColor":{"r":0,"g":0,"b":127},"pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":36,"y":110},{"x":96,"y":92}],"textString":"\"yOutDam_max\"","textColor":{"r":0,"g":0,"b":127},"pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":36,"y":12},{"x":96,"y":-6}],"textString":"\"yRetDam_max\"","textColor":{"r":0,"g":0,"b":127},"pattern":"LinePattern.Dash"}},{"name":"Text","attribute":{"extent":[{"x":36,"y":-88},{"x":96,"y":-106}],"textString":"\"yRetDam_min\"","textColor":{"r":0,"g":0,"b":127},"pattern":"LinePattern.Dash"}}]}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Diagram","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"coordinateSystem":{"extent":[{"x":-260,"y":-280},{"x":240,"y":280}],"preserveAspectRatio":"false","initialScale":0.05}}}},{"element_modification_or_replaceable":{"element_modification":{"graphics":[{"name":"Rectangle","attribute":{"extent":[{"x":-240,"y":-2},{"x":220,"y":-250}],"lineColor":{"r":215,"g":215,"b":215},"fillColor":{"r":215,"g":215,"b":215},"fillPattern":"FillPattern.Solid"}},{"name":"Rectangle","attribute":{"extent":[{"x":-240,"y":58},{"x":220,"y":6}],"lineColor":{"r":215,"g":215,"b":215},"fillColor":{"r":215,"g":215,"b":215},"fillPattern":"FillPattern.Solid"}},{"name":"Rectangle","attribute":{"extent":[{"x":-240,"y":118},{"x":220,"y":66}],"lineColor":{"r":215,"g":215,"b":215},"fillColor":{"r":215,"g":215,"b":215},"fillPattern":"FillPattern.Solid"}},{"name":"Rectangle","attribute":{"extent":[{"x":-240,"y":258},{"x":220,"y":130}],"lineColor":{"r":215,"g":215,"b":215},"fillColor":{"r":215,"g":215,"b":215},"fillPattern":"FillPattern.Solid"}},{"name":"Text","attribute":{"extent":[{"x":120,"y":158},{"x":204,"y":138}],"textString":"\"Outdoor air\nconditions\"","textColor":{"r":0,"g":0,"b":0},"horizontalAlignment":"TextAlignment.Left"}},{"name":"Text","attribute":{"extent":[{"x":120,"y":52},{"x":298,"y":18}],"textString":"\"Freeze protection -\ndisable if stage1\nand above\"","textColor":{"r":0,"g":0,"b":0},"horizontalAlignment":"TextAlignment.Left"}},{"name":"Text","attribute":{"extent":[{"x":120,"y":-198},{"x":288,"y":-246}],"textString":"\"Damper position\nlimit assignments\nwith delays\"","textColor":{"r":0,"g":0,"b":0},"horizontalAlignment":"TextAlignment.Left"}},{"name":"Text","attribute":{"extent":[{"x":120,"y":84},{"x":214,"y":74}],"textString":"\"Supply fan status\"","textColor":{"r":0,"g":0,"b":0},"horizontalAlignment":"TextAlignment.Left"}}]}}}]}}}},{"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 is a multi zone VAV AHU economizer enable/disable sequence\nbased on the Section 5.16.7 of the ASHRAE Guideline 36, May 2020. Additional\nconditions included in the sequence are: freeze protection (freeze protection\nstage 0-3, see Section 5.16.12), supply fan status (on or off, see Section 5.16.5).\n

\n

\nThe economizer is disabled whenever the outdoor air conditions\nexceed the economizer high limit setpoint.\nThis sequence allows for all device types listed in\nASHRAE 90.1-2013 and Title 24-2013.\n

\n

\nIn addition, the economizer gets disabled without a delay whenever any of the\nfollowing is true:\n

\n\n

\nThe following state machine chart illustrates the transitions between enabling and disabling:\n

\n

\n\\\"Image\n

\n

\nAfter the disable signal is activated, the following procedure is applied, in order to\nprevent pressure fluctuations in the HVAC system:\n

\n
    \n
  • \nThe return damper gets fully opened (yRetDam_max = uRetDamPhy_max and\nyRetDam_min = uRetDamPhy_max) for retDamFulOpeTim\ntime period, after which the return damper gets released to its minimum outdoor airflow control position\n(yRetDam_max = uRetDam_max and yRetDam_min = uRetDam_max).\n
  • \n
  • \nThe outdoor air damper is closed to its minimum outoor airflow control limit (yOutDam_max = uOutDam_min)\nafter a disDel time delay.\n
  • \n
\n\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"revisions","modification":{"equal":true,"expression":{"simple_expression":"\"\n
    \n
  • \nOctober 13, 2017, by Michael Wetter:
    \nAdded freeze protection that tracks mixed air temperature.\n
  • \n
  • \nAugust 3, 2017, by Michael Wetter:
    \nRemoved unrequired input into block and2 as this input\nwas always true if and2.u2 = true.\n
  • \n
  • \nJune 27, 2017, by Milica Grahovac:
    \nFirst implementation.\n
  • \n
\n\""}}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/Enable.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/Enable.mo","checksum":"91bcd83720b7c80a8ac4c5c5ea9bebac"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/ExtendsClause_1.json b/test/reference/json/test/FromModelica/ExtendsClause_1.json index f5834a1e..bf701af4 100644 --- a/test/reference/json/test/FromModelica/ExtendsClause_1.json +++ b/test/reference/json/test/FromModelica/ExtendsClause_1.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"ExtendsClause_1","description_string":"model with extends clause","composition":{"element_list":[{"extends_clause":{"name":"Buildings.Controls.OBC.CDL.Continuous.PID","class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"k","modification":{"equal":true,"expression":{"simple_expression":"2"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Ti","modification":{"equal":true,"expression":{"simple_expression":"2"}}}}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter","component_list":[{"declaration":{"identifier":"gain","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"k","modification":{"equal":true,"expression":{"simple_expression":"k"}}}}}]}},"description":{"description_string":"Constant gain","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-60,"y":-50},{"x":-40,"y":-30}]}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.SIunits.Length","component_list":[{"declaration":{"identifier":"length"},"description":{"description_string":"Length of the pipe"}}]}}],"element_sections":[{"protected_element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.SIunits.Area","component_list":[{"declaration":{"identifier":"ARound","modification":{"equal":true,"expression":{"simple_expression":"dh^2*Modelica.Constants.pi/4"}}},"description":{"description_string":"Cross sectional area (assuming a round cross section area)"}}]}}]}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"res\""}}}}},{"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":"\"\ntest...test...test...test...test...\n\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"revisions","modification":{"equal":true,"expression":{"simple_expression":"\"\ntest...test...test...\n\""}}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/ExtendsClause_1.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/ExtendsClause_1.mo","checksum":"ab233c80e87d84cacf5f9fef7718057d"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"ExtendsClause_1","description_string":"model with extends clause","composition":{"element_list":[{"extends_clause":{"name":"Buildings.Controls.OBC.CDL.Continuous.PID","class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"k","modification":{"equal":true,"expression":{"simple_expression":"2"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Ti","modification":{"equal":true,"expression":{"simple_expression":"2"}}}}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter","component_list":[{"declaration":{"identifier":"gain","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"k","modification":{"equal":true,"expression":{"simple_expression":"k"}}}}}]}},"description":{"description_string":"Constant gain","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-60,"y":-50},{"x":-40,"y":-30}]}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.SIunits.Length","component_list":[{"declaration":{"identifier":"length"},"description":{"description_string":"Length of the pipe"}}]}}],"element_sections":[{"protected_element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.SIunits.Area","component_list":[{"declaration":{"identifier":"ARound","modification":{"equal":true,"expression":{"simple_expression":"dh^2*Modelica.Constants.pi/4"}}},"description":{"description_string":"Cross sectional area (assuming a round cross section area)"}}]}}]}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"res\""}}}}},{"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":"\"\ntest...test...test...test...test...\n\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"revisions","modification":{"equal":true,"expression":{"simple_expression":"\"\ntest...test...test...\n\""}}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/ExtendsClause_1.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/ExtendsClause_1.mo","checksum":"ab233c80e87d84cacf5f9fef7718057d"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/ExtendsClause_2.json b/test/reference/json/test/FromModelica/ExtendsClause_2.json index 47c45e54..132c875d 100644 --- a/test/reference/json/test/FromModelica/ExtendsClause_2.json +++ b/test/reference/json/test/FromModelica/ExtendsClause_2.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"ExtendsClause_2","description_string":"model with extends clause","composition":{"element_list":[{"extends_clause":{"name":"Buildings.Controls.OBC.CDL.Continuous.PID","class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"k","modification":{"equal":true,"expression":{"simple_expression":"2"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Ti","modification":{"equal":true,"expression":{"simple_expression":"2"}}}}}]}},{"extends_clause":{"name":"Buildings.Controls.OBC.CDL.Logical.TrueHoldWithReset","class_modification":[{"element_redeclaration":{"component_clause1":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.TrueDelay","component_declaration1":{"declaration":{"identifier":"onDelay","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"delayTime","modification":{"equal":true,"expression":{"simple_expression":"duration"}}}}}]}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"duration","modification":{"equal":true,"expression":{"simple_expression":"300"}}}}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter","component_list":[{"declaration":{"identifier":"gain","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"k","modification":{"equal":true,"expression":{"simple_expression":"k"}}}}}]}},"description":{"description_string":"Constant gain","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-60,"y":-50},{"x":-40,"y":-30}]}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.SIunits.Length","component_list":[{"declaration":{"identifier":"length"},"description":{"description_string":"Length of the pipe"}}]}}],"element_sections":[{"protected_element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.SIunits.Area","component_list":[{"declaration":{"identifier":"ARound","modification":{"equal":true,"expression":{"simple_expression":"dh^2*Modelica.Constants.pi/4"}}},"description":{"description_string":"Cross sectional area (assuming a round cross section area)"}}]}}]}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"res\""}}}}},{"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":"\"\ntest...test...test...test...test...\n\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"revisions","modification":{"equal":true,"expression":{"simple_expression":"\"\ntest...test...test...\n\""}}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/ExtendsClause_2.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/ExtendsClause_2.mo","checksum":"fa2f4fe2baeef61e8180cd6e1734c6ec"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"ExtendsClause_2","description_string":"model with extends clause","composition":{"element_list":[{"extends_clause":{"name":"Buildings.Controls.OBC.CDL.Continuous.PID","class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"k","modification":{"equal":true,"expression":{"simple_expression":"2"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Ti","modification":{"equal":true,"expression":{"simple_expression":"2"}}}}}]}},{"extends_clause":{"name":"Buildings.Controls.OBC.CDL.Logical.TrueHoldWithReset","class_modification":[{"element_redeclaration":{"component_clause1":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.TrueDelay","component_declaration1":{"declaration":{"identifier":"onDelay","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"delayTime","modification":{"equal":true,"expression":{"simple_expression":"duration"}}}}}]}}}}}},{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"duration","modification":{"equal":true,"expression":{"simple_expression":"300"}}}}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter","component_list":[{"declaration":{"identifier":"gain","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"k","modification":{"equal":true,"expression":{"simple_expression":"k"}}}}}]}},"description":{"description_string":"Constant gain","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-60,"y":-50},{"x":-40,"y":-30}]}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.SIunits.Length","component_list":[{"declaration":{"identifier":"length"},"description":{"description_string":"Length of the pipe"}}]}}],"element_sections":[{"protected_element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.SIunits.Area","component_list":[{"declaration":{"identifier":"ARound","modification":{"equal":true,"expression":{"simple_expression":"dh^2*Modelica.Constants.pi/4"}}},"description":{"description_string":"Cross sectional area (assuming a round cross section area)"}}]}}]}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"res\""}}}}},{"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":"\"\ntest...test...test...test...test...\n\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"revisions","modification":{"equal":true,"expression":{"simple_expression":"\"\ntest...test...test...\n\""}}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/ExtendsClause_2.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/ExtendsClause_2.mo","checksum":"fa2f4fe2baeef61e8180cd6e1734c6ec"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/ExtendsClause_3.json b/test/reference/json/test/FromModelica/ExtendsClause_3.json index 4c7a5c04..570fa6ec 100644 --- a/test/reference/json/test/FromModelica/ExtendsClause_3.json +++ b/test/reference/json/test/FromModelica/ExtendsClause_3.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"ExtendsClause_3","description_string":"model with extends clause","composition":{"element_list":[{"extends_clause":{"name":"Buildings.Controls.OBC.CDL.Constants"}},{"extends_clause":{"name":"Buildings.Controls.OBC.CDL.Logical.TrueHoldWithReset","class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"duration","modification":{"equal":true,"expression":{"simple_expression":"300"}}}}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter","component_list":[{"declaration":{"identifier":"gain","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"k","modification":{"equal":true,"expression":{"simple_expression":"k"}}}}}]}},"description":{"description_string":"Constant gain","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-60,"y":-50},{"x":-40,"y":-30}]}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.SIunits.Length","component_list":[{"declaration":{"identifier":"length"},"description":{"description_string":"Length of the pipe"}}]}}],"element_sections":[{"protected_element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.SIunits.Area","component_list":[{"declaration":{"identifier":"ARound","modification":{"equal":true,"expression":{"simple_expression":"dh^2*Modelica.Constants.pi/4"}}},"description":{"description_string":"Cross sectional area (assuming a round cross section area)"}}]}}]}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"res\""}}}}},{"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":"\"\ntest...test...test...test...test...\n\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"revisions","modification":{"equal":true,"expression":{"simple_expression":"\"\ntest...test...test...\n\""}}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/ExtendsClause_3.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/ExtendsClause_3.mo","checksum":"532ee5bd5fcbb5ec416583ec9c536b15"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"ExtendsClause_3","description_string":"model with extends clause","composition":{"element_list":[{"extends_clause":{"name":"Buildings.Controls.OBC.CDL.Constants"}},{"extends_clause":{"name":"Buildings.Controls.OBC.CDL.Logical.TrueHoldWithReset","class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"duration","modification":{"equal":true,"expression":{"simple_expression":"300"}}}}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter","component_list":[{"declaration":{"identifier":"gain","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"k","modification":{"equal":true,"expression":{"simple_expression":"k"}}}}}]}},"description":{"description_string":"Constant gain","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-60,"y":-50},{"x":-40,"y":-30}]}}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.SIunits.Length","component_list":[{"declaration":{"identifier":"length"},"description":{"description_string":"Length of the pipe"}}]}}],"element_sections":[{"protected_element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.SIunits.Area","component_list":[{"declaration":{"identifier":"ARound","modification":{"equal":true,"expression":{"simple_expression":"dh^2*Modelica.Constants.pi/4"}}},"description":{"description_string":"Cross sectional area (assuming a round cross section area)"}}]}}]}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"res\""}}}}},{"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":"\"\ntest...test...test...test...test...\n\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"revisions","modification":{"equal":true,"expression":{"simple_expression":"\"\ntest...test...test...\n\""}}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/ExtendsClause_3.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/ExtendsClause_3.mo","checksum":"532ee5bd5fcbb5ec416583ec9c536b15"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/MisplacedInfoWithComponent.json b/test/reference/json/test/FromModelica/MisplacedInfoWithComponent.json index 2e8d9eea..6b4a908b 100644 --- a/test/reference/json/test/FromModelica/MisplacedInfoWithComponent.json +++ b/test/reference/json/test/FromModelica/MisplacedInfoWithComponent.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"MisplacedInfoWithComponent","description_string":"A block that places info section in component annotation","composition":{"element_list":[{"component_clause":{"type_specifier":"Block1","component_list":[{"declaration":{"identifier":"bloPub"},"description":{"description_string":"A public block","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 is the info section.\n

\n\""}}}}}]}}}}]}}]}}]}}}}],"modelicaFile":"test/FromModelica/MisplacedInfoWithComponent.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/MisplacedInfoWithComponent.mo","checksum":"281aad05f29e1c0dbe664b7fd994584b"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"MisplacedInfoWithComponent","description_string":"A block that places info section in component annotation","composition":{"element_list":[{"component_clause":{"type_specifier":"Block1","component_list":[{"declaration":{"identifier":"bloPub"},"description":{"description_string":"A public block","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 is the info section.\n

\n\""}}}}}]}}}}]}}]}}]}}}}],"modelicaFile":"test/FromModelica/MisplacedInfoWithComponent.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/MisplacedInfoWithComponent.mo","checksum":"281aad05f29e1c0dbe664b7fd994584b"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/MisplacedInfoWithEquation.json b/test/reference/json/test/FromModelica/MisplacedInfoWithEquation.json index 248562fe..908790aa 100644 --- a/test/reference/json/test/FromModelica/MisplacedInfoWithEquation.json +++ b/test/reference/json/test/FromModelica/MisplacedInfoWithEquation.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"MisplacedInfoWithEquation","description_string":"A block that places info section in equation section","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"k","modification":{"equal":true,"expression":{"simple_expression":"2"}}},"description":{"description_string":"Constant gain"}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"u"},"description":{"description_string":"Input signal","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]},"iconTransformation":{"extent":[{"x":-140,"y":20},{"x":-100,"y":60}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"y1"},"description":{"description_string":"Output signal","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-10},{"x":120,"y":10}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"y2"},"description":{"description_string":"Output signal","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-10},{"x":120,"y":10}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter","component_list":[{"declaration":{"identifier":"gain","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"k","modification":{"equal":true,"expression":{"simple_expression":"k"}}}}}]}},"description":{"description_string":"Constant gain","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":0,"y":-10},{"x":20,"y":10}]}}}}}]}}]}}],"element_sections":[{"equation_section":{"equation":[{"connect_clause":{"from":[{"dot_op":false,"identifier":"u"}],"to":[{"dot_op":false,"identifier":"gain"},{"dot_op":true},{"dot_op":false,"identifier":"u"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":0},{"x":-2,"y":0}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"gain"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"y"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":22,"y":0},{"x":110,"y":0}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"assignment_equation":{"lhs":"y2","rhs":{"simple_expression":"k*u"}},"description":{"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

\nBlock that outputs y = 2 * u.\n

\n\""}}}}}]}}}}]}}]}}]}}}}],"modelicaFile":"test/FromModelica/MisplacedInfoWithEquation.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/MisplacedInfoWithEquation.mo","checksum":"e9204a19fd3627d713513dff12e923f1"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"MisplacedInfoWithEquation","description_string":"A block that places info section in equation section","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"k","modification":{"equal":true,"expression":{"simple_expression":"2"}}},"description":{"description_string":"Constant gain"}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"u"},"description":{"description_string":"Input signal","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]},"iconTransformation":{"extent":[{"x":-140,"y":20},{"x":-100,"y":60}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"y1"},"description":{"description_string":"Output signal","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-10},{"x":120,"y":10}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"y2"},"description":{"description_string":"Output signal","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-10},{"x":120,"y":10}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter","component_list":[{"declaration":{"identifier":"gain","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"k","modification":{"equal":true,"expression":{"simple_expression":"k"}}}}}]}},"description":{"description_string":"Constant gain","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":0,"y":-10},{"x":20,"y":10}]}}}}}]}}]}}],"element_sections":[{"equation_section":{"equation":[{"connect_clause":{"from":[{"dot_op":false,"identifier":"u"}],"to":[{"dot_op":false,"identifier":"gain"},{"dot_op":true},{"dot_op":false,"identifier":"u"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":0},{"x":-2,"y":0}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"gain"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"y"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":22,"y":0},{"x":110,"y":0}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"assignment_equation":{"lhs":"y2","rhs":{"simple_expression":"k*u"}},"description":{"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

\nBlock that outputs y = 2 * u.\n

\n\""}}}}}]}}}}]}}]}}]}}}}],"modelicaFile":"test/FromModelica/MisplacedInfoWithEquation.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/MisplacedInfoWithEquation.mo","checksum":"e9204a19fd3627d713513dff12e923f1"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/MisplacedInfoWithParameter.json b/test/reference/json/test/FromModelica/MisplacedInfoWithParameter.json index 58207f21..f60d9f62 100644 --- a/test/reference/json/test/FromModelica/MisplacedInfoWithParameter.json +++ b/test/reference/json/test/FromModelica/MisplacedInfoWithParameter.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"MisplacedInfoWithParameter","description_string":"A block that places info section in parameter annotation","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"kP","modification":{"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"Some comment","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 is the info section.\n

\n\""}}}}}]}}}}]}}]}}]}}}}],"modelicaFile":"test/FromModelica/MisplacedInfoWithParameter.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/MisplacedInfoWithParameter.mo","checksum":"c204c4aff17fd78827ce77399626da43"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"MisplacedInfoWithParameter","description_string":"A block that places info section in parameter annotation","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"kP","modification":{"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"Some comment","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 is the info section.\n

\n\""}}}}}]}}}}]}}]}}]}}}}],"modelicaFile":"test/FromModelica/MisplacedInfoWithParameter.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/MisplacedInfoWithParameter.mo","checksum":"c204c4aff17fd78827ce77399626da43"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/MyController.json b/test/reference/json/test/FromModelica/MyController.json index d35a09d1..e2219d6a 100644 --- a/test/reference/json/test/FromModelica/MyController.json +++ b/test/reference/json/test/FromModelica/MyController.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"MyController","description_string":"My controller","composition":{"element_list":[{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"u1"},"description":{"description_string":"Real input 1","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":20},{"x":-100,"y":60}]},"iconTransformation":{"extent":[{"x":-140,"y":40},{"x":-100,"y":80}]}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"connection","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"hardwired","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"trend","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"interval","modification":{"equal":true,"expression":{"simple_expression":"60"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}}]}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"u2"},"description":{"description_string":"Real input 2","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-60},{"x":-100,"y":-20}]},"iconTransformation":{"extent":[{"x":-140,"y":-80},{"x":-100,"y":-40}]}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"connection","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"hardwired","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"trend","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"interval","modification":{"equal":true,"expression":{"simple_expression":"60"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}}]}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"y"},"description":{"description_string":"Real output","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-20},{"x":140,"y":20}]},"iconTransformation":{"extent":[{"x":100,"y":-20},{"x":140,"y":20}]}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"connection","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"hardwired","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"trend","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"interval","modification":{"equal":true,"expression":{"simple_expression":"60"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}}]}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Add","component_list":[{"declaration":{"identifier":"add2"},"description":{"description_string":"Add two real inputs","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-10,"y":-10},{"x":10,"y":10}]}}}}}]}}]}},{"component_clause":{"type_specifier":"SubController","component_list":[{"declaration":{"identifier":"subCon1"},"description":{"description_string":"Sub controller","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-10,"y":-50},{"x":10,"y":-30}]}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"generatePointlist","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}}]}}]}},{"component_clause":{"type_specifier":"SubController","component_list":[{"declaration":{"identifier":"subCon2"},"description":{"description_string":"Sub controller","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-10,"y":-90},{"x":10,"y":-70}]}}}}}]}}]}}],"element_sections":[{"equation_section":{"equation":[{"connect_clause":{"from":[{"dot_op":false,"identifier":"u1"}],"to":[{"dot_op":false,"identifier":"add2"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":40},{"x":-60,"y":40},{"x":-60,"y":6},{"x":-12,"y":6}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"u2"}],"to":[{"dot_op":false,"identifier":"add2"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":-40},{"x":-60,"y":-40},{"x":-60,"y":-6},{"x":-12,"y":-6}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"add2"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"y"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":12,"y":0},{"x":120,"y":0}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"u2"}],"to":[{"dot_op":false,"identifier":"subCon1"},{"dot_op":true},{"dot_op":false,"identifier":"u"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":-40},{"x":-12,"y":-40}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"u2"}],"to":[{"dot_op":false,"identifier":"subCon2"},{"dot_op":true},{"dot_op":false,"identifier":"u"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":-40},{"x":-60,"y":-40},{"x":-60,"y":-80},{"x":-12,"y":-80}],"color":{"r":0,"g":0,"b":127}}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"generatePointlist","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"controlledDevice","modification":{"equal":true,"expression":{"simple_expression":"\"My Device\""}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"myCon\""}}}}},{"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":-100,"y":-100},{"x":100,"y":100}],"lineColor":{"r":0,"g":0,"b":127},"fillColor":{"r":255,"g":255,"b":255},"fillPattern":"FillPattern.Solid"}},{"name":"Text","attribute":{"extent":[{"x":-100,"y":100},{"x":100,"y":140}],"textString":"\"%name\"","lineColor":{"r":0,"g":0,"b":255}}}]}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Diagram","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"coordinateSystem":{"preserveAspectRatio":"false"}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/MyController.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/MyController.mo","checksum":"f24bbd7358809191544bc5c2f05ea2be"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"MyController","description_string":"My controller","composition":{"element_list":[{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"u1"},"description":{"description_string":"Real input 1","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":20},{"x":-100,"y":60}]},"iconTransformation":{"extent":[{"x":-140,"y":40},{"x":-100,"y":80}]}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"connection","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"hardwired","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"trend","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"interval","modification":{"equal":true,"expression":{"simple_expression":"60"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}}]}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"u2"},"description":{"description_string":"Real input 2","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-60},{"x":-100,"y":-20}]},"iconTransformation":{"extent":[{"x":-140,"y":-80},{"x":-100,"y":-40}]}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"connection","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"hardwired","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"trend","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"interval","modification":{"equal":true,"expression":{"simple_expression":"60"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}}]}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"y"},"description":{"description_string":"Real output","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-20},{"x":140,"y":20}]},"iconTransformation":{"extent":[{"x":100,"y":-20},{"x":140,"y":20}]}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"connection","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"hardwired","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"trend","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"interval","modification":{"equal":true,"expression":{"simple_expression":"60"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}}]}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Add","component_list":[{"declaration":{"identifier":"add2"},"description":{"description_string":"Add two real inputs","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-10,"y":-10},{"x":10,"y":10}]}}}}}]}}]}},{"component_clause":{"type_specifier":"SubController","component_list":[{"declaration":{"identifier":"subCon1"},"description":{"description_string":"Sub controller","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-10,"y":-50},{"x":10,"y":-30}]}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"generatePointlist","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}}]}}]}},{"component_clause":{"type_specifier":"SubController","component_list":[{"declaration":{"identifier":"subCon2"},"description":{"description_string":"Sub controller","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-10,"y":-90},{"x":10,"y":-70}]}}}}}]}}]}}],"element_sections":[{"equation_section":{"equation":[{"connect_clause":{"from":[{"dot_op":false,"identifier":"u1"}],"to":[{"dot_op":false,"identifier":"add2"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":40},{"x":-60,"y":40},{"x":-60,"y":6},{"x":-12,"y":6}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"u2"}],"to":[{"dot_op":false,"identifier":"add2"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":-40},{"x":-60,"y":-40},{"x":-60,"y":-6},{"x":-12,"y":-6}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"add2"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"y"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":12,"y":0},{"x":120,"y":0}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"u2"}],"to":[{"dot_op":false,"identifier":"subCon1"},{"dot_op":true},{"dot_op":false,"identifier":"u"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":-40},{"x":-12,"y":-40}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"u2"}],"to":[{"dot_op":false,"identifier":"subCon2"},{"dot_op":true},{"dot_op":false,"identifier":"u"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":-40},{"x":-60,"y":-40},{"x":-60,"y":-80},{"x":-12,"y":-80}],"color":{"r":0,"g":0,"b":127}}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"generatePointlist","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"controlledDevice","modification":{"equal":true,"expression":{"simple_expression":"\"My Device\""}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"myCon\""}}}}},{"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":-100,"y":-100},{"x":100,"y":100}],"lineColor":{"r":0,"g":0,"b":127},"fillColor":{"r":255,"g":255,"b":255},"fillPattern":"FillPattern.Solid"}},{"name":"Text","attribute":{"extent":[{"x":-100,"y":100},{"x":100,"y":140}],"textString":"\"%name\"","lineColor":{"r":0,"g":0,"b":255}}}]}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Diagram","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"coordinateSystem":{"preserveAspectRatio":"false"}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/MyController.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/MyController.mo","checksum":"f24bbd7358809191544bc5c2f05ea2be"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/NoClassComment.json b/test/reference/json/test/FromModelica/NoClassComment.json index 894da52e..6cade5b9 100644 --- a/test/reference/json/test/FromModelica/NoClassComment.json +++ b/test/reference/json/test/FromModelica/NoClassComment.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"NoClassComment","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"kP","modification":{"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"Some comment"}}]}}]}}}}],"modelicaFile":"test/FromModelica/NoClassComment.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/NoClassComment.mo","checksum":"bc50f3b9de57424453c131ccb74edd18"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"NoClassComment","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"kP","modification":{"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"Some comment"}}]}}]}}}}],"modelicaFile":"test/FromModelica/NoClassComment.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/NoClassComment.mo","checksum":"bc50f3b9de57424453c131ccb74edd18"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/NoWithin.json b/test/reference/json/test/FromModelica/NoWithin.json index 303fa7bc..dd90894e 100644 --- a/test/reference/json/test/FromModelica/NoWithin.json +++ b/test/reference/json/test/FromModelica/NoWithin.json @@ -1 +1 @@ -{"class_definition":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"FromModelica","description_string":"Package with test models","composition":{"element_list":[{"component_clause":{"type_prefix":"constant","type_specifier":"Integer","component_list":[{"declaration":{"identifier":"one","modification":{"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"An integer constant with value 1"}}]}}]}}}}],"modelicaFile":"test/FromModelica/NoWithin.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/NoWithin.mo","checksum":"6946b4805e8b2df0d49bf78a3b7dcbf1"} \ No newline at end of file +{"class_definition":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"FromModelica","description_string":"Package with test models","composition":{"element_list":[{"component_clause":{"type_prefix":"constant","type_specifier":"Integer","component_list":[{"declaration":{"identifier":"one","modification":{"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"An integer constant with value 1"}}]}}]}}}}],"modelicaFile":"test/FromModelica/NoWithin.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/NoWithin.mo","checksum":"6946b4805e8b2df0d49bf78a3b7dcbf1"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/Parameter1.json b/test/reference/json/test/FromModelica/Parameter1.json index c0ef24e2..d41d115d 100644 --- a/test/reference/json/test/FromModelica/Parameter1.json +++ b/test/reference/json/test/FromModelica/Parameter1.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"Parameter1","description_string":"Some class comment","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"kP","modification":{"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"Some comment"}}]}}]}}}}],"modelicaFile":"test/FromModelica/Parameter1.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/Parameter1.mo","checksum":"0e923225decf43f3a5d2909de067020a"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"Parameter1","description_string":"Some class comment","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"kP","modification":{"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"Some comment"}}]}}]}}}}],"modelicaFile":"test/FromModelica/Parameter1.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/Parameter1.mo","checksum":"0e923225decf43f3a5d2909de067020a"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/Parameter1WithVendorAnnotation.json b/test/reference/json/test/FromModelica/Parameter1WithVendorAnnotation.json index 1358d3f9..38f09c67 100644 --- a/test/reference/json/test/FromModelica/Parameter1WithVendorAnnotation.json +++ b/test/reference/json/test/FromModelica/Parameter1WithVendorAnnotation.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"Parameter1WithVendorAnnotation","description_string":"Some class comment","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"kP","modification":{"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"Some comment","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"haystack","modification":{"equal":true,"expression":{"simple_expression":"\"{ \\\"dis\\\": \\\"site\\\",\n \\\"area\\\": 400 }\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"brick","modification":{"equal":true,"expression":{"simple_expression":"\"xxxxx\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"point","modification":{"equal":true,"expression":{"simple_expression":"digital"}}}}}]}}}}]}}]}}]}}}}],"modelicaFile":"test/FromModelica/Parameter1WithVendorAnnotation.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/Parameter1WithVendorAnnotation.mo","checksum":"0989e7e5efae6c250452ffe516f27b6a"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"Parameter1WithVendorAnnotation","description_string":"Some class comment","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"kP","modification":{"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"Some comment","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"haystack","modification":{"equal":true,"expression":{"simple_expression":"\"{ \\\"dis\\\": \\\"site\\\",\n \\\"area\\\": 400 }\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"brick","modification":{"equal":true,"expression":{"simple_expression":"\"xxxxx\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"point","modification":{"equal":true,"expression":{"simple_expression":"digital"}}}}}]}}}}]}}]}}]}}}}],"modelicaFile":"test/FromModelica/Parameter1WithVendorAnnotation.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/Parameter1WithVendorAnnotation.mo","checksum":"0989e7e5efae6c250452ffe516f27b6a"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/Parameter2.json b/test/reference/json/test/FromModelica/Parameter2.json index 3edf68a5..c4996c80 100644 --- a/test/reference/json/test/FromModelica/Parameter2.json +++ b/test/reference/json/test/FromModelica/Parameter2.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"Parameter2","description_string":"Some class comment","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"myPar1","modification":{"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"Some comment"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"myParNoValue"},"description":{"description_string":"Some comment"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"myParMin","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Some comment"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"myParMax","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"max","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Some comment"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"myParUnit","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"K\""}}}}}]}},"description":{"description_string":"Some comment"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"myParInGroup"},"description":{"description_string":"Some comment","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":"\"Gains\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"myParInTab"},"description":{"description_string":"Some comment","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":"\"Initialization tab\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"myParInTabInGroup1"},"description":{"description_string":"Some comment 1","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":"\"Initialization tab\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Initial state\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"myParInTabInGroup2"},"description":{"description_string":"Some comment 2","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":"\"Initialization tab\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Initial state\""}}}}}]}}}}]}}]}}]}}}}],"modelicaFile":"test/FromModelica/Parameter2.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/Parameter2.mo","checksum":"f32d29f67c0b2c67f8d9d1cc431a9a7a"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"Parameter2","description_string":"Some class comment","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"myPar1","modification":{"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"Some comment"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"myParNoValue"},"description":{"description_string":"Some comment"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"myParMin","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Some comment"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"myParMax","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"max","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}]}},"description":{"description_string":"Some comment"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"myParUnit","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"K\""}}}}}]}},"description":{"description_string":"Some comment"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"myParInGroup"},"description":{"description_string":"Some comment","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":"\"Gains\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"myParInTab"},"description":{"description_string":"Some comment","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":"\"Initialization tab\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"myParInTabInGroup1"},"description":{"description_string":"Some comment 1","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":"\"Initialization tab\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Initial state\""}}}}}]}}}}]}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"myParInTabInGroup2"},"description":{"description_string":"Some comment 2","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":"\"Initialization tab\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"group","modification":{"equal":true,"expression":{"simple_expression":"\"Initial state\""}}}}}]}}}}]}}]}}]}}}}],"modelicaFile":"test/FromModelica/Parameter2.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/Parameter2.mo","checksum":"f32d29f67c0b2c67f8d9d1cc431a9a7a"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/Parameter3.json b/test/reference/json/test/FromModelica/Parameter3.json index 4e6e9206..ee11b77f 100644 --- a/test/reference/json/test/FromModelica/Parameter3.json +++ b/test/reference/json/test/FromModelica/Parameter3.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"Parameter3","description_string":"Some class comment","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"myPar1","modification":{"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"Some comment"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.SIunits.Temperature","component_list":[{"declaration":{"identifier":"myParUnit"},"description":{"description_string":"Some comment"}}]}}]}}}}],"modelicaFile":"test/FromModelica/Parameter3.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/Parameter3.mo","checksum":"501764c45f288d6fc10f2033200915fe"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"Parameter3","description_string":"Some class comment","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"myPar1","modification":{"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"Some comment"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Modelica.SIunits.Temperature","component_list":[{"declaration":{"identifier":"myParUnit"},"description":{"description_string":"Some comment"}}]}}]}}}}],"modelicaFile":"test/FromModelica/Parameter3.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/Parameter3.mo","checksum":"501764c45f288d6fc10f2033200915fe"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/ParameterWithAttributes.json b/test/reference/json/test/FromModelica/ParameterWithAttributes.json index 9f15a5d0..b4478568 100644 --- a/test/reference/json/test/FromModelica/ParameterWithAttributes.json +++ b/test/reference/json/test/FromModelica/ParameterWithAttributes.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"ParameterWithAttributes","description_string":"Some class comment","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"kP","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0.2"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"fixed","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}},{"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":"2"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"PressureDifference\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"Pa\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"nominal","modification":{"equal":true,"expression":{"simple_expression":"0.5"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"stateSelect","modification":{"equal":true,"expression":{"simple_expression":"StateSelect.default"}}}}}],"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"Some comment"}}]}}],"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 is the info section.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/ParameterWithAttributes.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/ParameterWithAttributes.mo","checksum":"eb2254fd49d797804e87f15abe4f5f90"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"ParameterWithAttributes","description_string":"Some class comment","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"kP","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"start","modification":{"equal":true,"expression":{"simple_expression":"0.2"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"fixed","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}},{"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":"2"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"PressureDifference\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"Pa\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"nominal","modification":{"equal":true,"expression":{"simple_expression":"0.5"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"stateSelect","modification":{"equal":true,"expression":{"simple_expression":"StateSelect.default"}}}}}],"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"Some comment"}}]}}],"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 is the info section.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/ParameterWithAttributes.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/ParameterWithAttributes.mo","checksum":"eb2254fd49d797804e87f15abe4f5f90"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/ParameterWithDefaultName.json b/test/reference/json/test/FromModelica/ParameterWithDefaultName.json index a71da5bb..531d1582 100644 --- a/test/reference/json/test/FromModelica/ParameterWithDefaultName.json +++ b/test/reference/json/test/FromModelica/ParameterWithDefaultName.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"ParameterWithDefaultName","description_string":"Some class comment","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"kP","modification":{"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"Some comment"}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"testName\""}}}}},{"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 is the info section.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/ParameterWithDefaultName.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/ParameterWithDefaultName.mo","checksum":"5f503f9e0a1faba6be8d40bf8b47b17a"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"ParameterWithDefaultName","description_string":"Some class comment","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"kP","modification":{"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"Some comment"}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"testName\""}}}}},{"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 is the info section.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/ParameterWithDefaultName.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/ParameterWithDefaultName.mo","checksum":"5f503f9e0a1faba6be8d40bf8b47b17a"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/ParameterWithInfo.json b/test/reference/json/test/FromModelica/ParameterWithInfo.json index ab33e03f..962d428d 100644 --- a/test/reference/json/test/FromModelica/ParameterWithInfo.json +++ b/test/reference/json/test/FromModelica/ParameterWithInfo.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"ParameterWithInfo","description_string":"Some class comment","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"kP","modification":{"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"Some comment"}}]}}],"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 is the info section.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/ParameterWithInfo.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/ParameterWithInfo.mo","checksum":"fa8ebd448412a8412c3e7c9a5e435b54"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"ParameterWithInfo","description_string":"Some class comment","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"kP","modification":{"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"Some comment"}}]}}],"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 is the info section.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/ParameterWithInfo.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/ParameterWithInfo.mo","checksum":"fa8ebd448412a8412c3e7c9a5e435b54"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/ParameterWithVendorAnnotationInInfo.json b/test/reference/json/test/FromModelica/ParameterWithVendorAnnotationInInfo.json index 10c3f620..3acdf4e7 100644 --- a/test/reference/json/test/FromModelica/ParameterWithVendorAnnotationInInfo.json +++ b/test/reference/json/test/FromModelica/ParameterWithVendorAnnotationInInfo.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"ParameterWithVendorAnnotationInInfo","description_string":"Some class comment","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"kP","modification":{"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"Some comment"}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"haystack","modification":{"equal":true,"expression":{"simple_expression":"\"{ \\\"dis\\\": \\\"site\\\",\n \\\"area\\\": 400 }\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"brick","modification":{"equal":true,"expression":{"simple_expression":"\"xxxxx\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"point","modification":{"equal":true,"expression":{"simple_expression":"digital"}}}}}]}}}},{"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 is the info section.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/ParameterWithVendorAnnotationInInfo.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/ParameterWithVendorAnnotationInInfo.mo","checksum":"83588dec36f54d69b94596dffb0570c6"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"ParameterWithVendorAnnotationInInfo","description_string":"Some class comment","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"kP","modification":{"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"Some comment"}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"haystack","modification":{"equal":true,"expression":{"simple_expression":"\"{ \\\"dis\\\": \\\"site\\\",\n \\\"area\\\": 400 }\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"brick","modification":{"equal":true,"expression":{"simple_expression":"\"xxxxx\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"point","modification":{"equal":true,"expression":{"simple_expression":"digital"}}}}}]}}}},{"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 is the info section.\n

\n\""}}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/ParameterWithVendorAnnotationInInfo.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/ParameterWithVendorAnnotationInInfo.mo","checksum":"83588dec36f54d69b94596dffb0570c6"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/PointList.json b/test/reference/json/test/FromModelica/PointList.json index 31fd35ce..e9259674 100644 --- a/test/reference/json/test/FromModelica/PointList.json +++ b/test/reference/json/test/FromModelica/PointList.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"PointList","description_string":"Block demonstrating point list generation","composition":{"element_list":[{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"u1"},"description":{"description_string":"Input one","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":40},{"x":-100,"y":80}]},"iconTransformation":{"extent":[{"x":-140,"y":40},{"x":-100,"y":80}]}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"connection","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"hardwired","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"trend","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"interval","modification":{"equal":true,"expression":{"simple_expression":"60"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}}]}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"u2"},"description":{"description_string":"Input two","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-80},{"x":-100,"y":-40}]},"iconTransformation":{"extent":[{"x":-140,"y":-80},{"x":-100,"y":-40}]}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"connection","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"hardwired","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"trend","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"interval","modification":{"equal":true,"expression":{"simple_expression":"120"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}}]}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"y1"},"description":{"description_string":"Output one","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-80},{"x":140,"y":-40}]},"iconTransformation":{"extent":[{"x":100,"y":40},{"x":140,"y":80}]}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"connection","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"hardwired","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"trend","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"interval","modification":{"equal":true,"expression":{"simple_expression":"60"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}}]}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"y2"},"description":{"description_string":"Output two","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":40},{"x":140,"y":80}]},"iconTransformation":{"extent":[{"x":100,"y":-80},{"x":140,"y":-40}]}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"connection","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"hardwired","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"trend","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"interval","modification":{"equal":true,"expression":{"simple_expression":"60"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}}]}}}}]}}]}},{"component_clause":{"type_specifier":"MyController","component_list":[{"declaration":{"identifier":"con1"},"description":{"description_string":"Subcontroller one","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"propagate","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"instance","modification":{"equal":true,"expression":{"simple_expression":"\"subCon1\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"generatePointlist","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"propagate","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"instance","modification":{"equal":true,"expression":{"simple_expression":"\"subCon2\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"generatePointlist","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"propagate","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"instance","modification":{"equal":true,"expression":{"simple_expression":"\"subCon2.u\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"connection","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"hardwired","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"trend","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"interval","modification":{"equal":true,"expression":{"simple_expression":"120"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}}]}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-10,"y":50},{"x":10,"y":70}]}}}}}]}}]}},{"component_clause":{"type_specifier":"MyController","component_list":[{"declaration":{"identifier":"con2"},"description":{"description_string":"Subcontroller two","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"generatePointlist","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-10,"y":-70},{"x":10,"y":-50}]}}}}}]}}]}}],"element_sections":[{"equation_section":{"equation":[{"connect_clause":{"from":[{"dot_op":false,"identifier":"u1"}],"to":[{"dot_op":false,"identifier":"con1"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":60},{"x":-80,"y":60},{"x":-80,"y":66},{"x":-12,"y":66}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"u1"}],"to":[{"dot_op":false,"identifier":"con2"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":60},{"x":-80,"y":60},{"x":-80,"y":-54},{"x":-12,"y":-54}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"u2"}],"to":[{"dot_op":false,"identifier":"con1"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":-60},{"x":-60,"y":-60},{"x":-60,"y":54},{"x":-12,"y":54}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"u2"}],"to":[{"dot_op":false,"identifier":"con2"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":-60},{"x":-60,"y":-60},{"x":-60,"y":-66},{"x":-12,"y":-66}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"con1"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"y2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":12,"y":60},{"x":120,"y":60}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"con2"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"y1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":12,"y":-60},{"x":120,"y":-60}],"color":{"r":0,"g":0,"b":127}}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"generatePointlist","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"controlledDevice","modification":{"equal":true,"expression":{"simple_expression":"\"Test device\""}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"poiLis\""}}}}},{"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":-100,"y":-100},{"x":100,"y":100}],"lineColor":{"r":0,"g":0,"b":127},"fillColor":{"r":255,"g":255,"b":255},"fillPattern":"FillPattern.Solid"}},{"name":"Text","attribute":{"extent":[{"x":-100,"y":100},{"x":100,"y":140}],"textString":"\"%name\"","lineColor":{"r":0,"g":0,"b":255}}}]}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Diagram","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"coordinateSystem":{"preserveAspectRatio":"false"}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/PointList.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/PointList.mo","checksum":"a338cdddb4ffca9427753c7e548c9913"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"PointList","description_string":"Block demonstrating point list generation","composition":{"element_list":[{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"u1"},"description":{"description_string":"Input one","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":40},{"x":-100,"y":80}]},"iconTransformation":{"extent":[{"x":-140,"y":40},{"x":-100,"y":80}]}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"connection","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"hardwired","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"trend","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"interval","modification":{"equal":true,"expression":{"simple_expression":"60"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}}]}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"u2"},"description":{"description_string":"Input two","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-80},{"x":-100,"y":-40}]},"iconTransformation":{"extent":[{"x":-140,"y":-80},{"x":-100,"y":-40}]}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"connection","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"hardwired","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"trend","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"interval","modification":{"equal":true,"expression":{"simple_expression":"120"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}}]}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"y1"},"description":{"description_string":"Output one","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-80},{"x":140,"y":-40}]},"iconTransformation":{"extent":[{"x":100,"y":40},{"x":140,"y":80}]}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"connection","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"hardwired","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"trend","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"interval","modification":{"equal":true,"expression":{"simple_expression":"60"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}}]}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"y2"},"description":{"description_string":"Output two","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":40},{"x":140,"y":80}]},"iconTransformation":{"extent":[{"x":100,"y":-80},{"x":140,"y":-40}]}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"connection","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"hardwired","modification":{"equal":true,"expression":{"simple_expression":"false"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"trend","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"interval","modification":{"equal":true,"expression":{"simple_expression":"60"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}}]}}}}]}}]}},{"component_clause":{"type_specifier":"MyController","component_list":[{"declaration":{"identifier":"con1"},"description":{"description_string":"Subcontroller one","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"propagate","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"instance","modification":{"equal":true,"expression":{"simple_expression":"\"subCon1\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"generatePointlist","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"propagate","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"instance","modification":{"equal":true,"expression":{"simple_expression":"\"subCon2\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"generatePointlist","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"propagate","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"instance","modification":{"equal":true,"expression":{"simple_expression":"\"subCon2.u\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"connection","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"hardwired","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"trend","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"interval","modification":{"equal":true,"expression":{"simple_expression":"120"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}}]}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-10,"y":50},{"x":10,"y":70}]}}}}}]}}]}},{"component_clause":{"type_specifier":"MyController","component_list":[{"declaration":{"identifier":"con2"},"description":{"description_string":"Subcontroller two","annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"generatePointlist","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-10,"y":-70},{"x":10,"y":-50}]}}}}}]}}]}}],"element_sections":[{"equation_section":{"equation":[{"connect_clause":{"from":[{"dot_op":false,"identifier":"u1"}],"to":[{"dot_op":false,"identifier":"con1"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":60},{"x":-80,"y":60},{"x":-80,"y":66},{"x":-12,"y":66}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"u1"}],"to":[{"dot_op":false,"identifier":"con2"},{"dot_op":true},{"dot_op":false,"identifier":"u1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":60},{"x":-80,"y":60},{"x":-80,"y":-54},{"x":-12,"y":-54}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"u2"}],"to":[{"dot_op":false,"identifier":"con1"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":-60},{"x":-60,"y":-60},{"x":-60,"y":54},{"x":-12,"y":54}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"u2"}],"to":[{"dot_op":false,"identifier":"con2"},{"dot_op":true},{"dot_op":false,"identifier":"u2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-120,"y":-60},{"x":-60,"y":-60},{"x":-60,"y":-66},{"x":-12,"y":-66}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"con1"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"y2"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":12,"y":60},{"x":120,"y":60}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"con2"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"y1"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":12,"y":-60},{"x":120,"y":-60}],"color":{"r":0,"g":0,"b":127}}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"generatePointlist","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"controlledDevice","modification":{"equal":true,"expression":{"simple_expression":"\"Test device\""}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"poiLis\""}}}}},{"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":-100,"y":-100},{"x":100,"y":100}],"lineColor":{"r":0,"g":0,"b":127},"fillColor":{"r":255,"g":255,"b":255},"fillPattern":"FillPattern.Solid"}},{"name":"Text","attribute":{"extent":[{"x":-100,"y":100},{"x":100,"y":140}],"textString":"\"%name\"","lineColor":{"r":0,"g":0,"b":255}}}]}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Diagram","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"coordinateSystem":{"preserveAspectRatio":"false"}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/PointList.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/PointList.mo","checksum":"a338cdddb4ffca9427753c7e548c9913"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/RemovableInputs.json b/test/reference/json/test/FromModelica/RemovableInputs.json index 15b02227..f6ce35da 100644 --- a/test/reference/json/test/FromModelica/RemovableInputs.json +++ b/test/reference/json/test/FromModelica/RemovableInputs.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"RemovableInputs","description_string":"A block with a flag for disabling instances","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Boolean","component_list":[{"declaration":{"identifier":"enaBlo","modification":{"equal":true,"expression":{"simple_expression":"true"}}},"description":{"description_string":"Flag for enabling instance"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Boolean","component_list":[{"declaration":{"identifier":"have_winSen"},"description":{"description_string":"True: there is window status sensor"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Boolean","component_list":[{"declaration":{"identifier":"have_occSen"},"description":{"description_string":"True: there is occupancy sensor"}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"u"},"condition_attribute":{"expression":{"simple_expression":"enaBlo"}},"description":{"description_string":"Input connector","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]},"iconTransformation":{"extent":[{"x":-140,"y":-40},{"x":-100,"y":0}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"TOut","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"K\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"ThermodynamicTemperature\""}}}}}]}},"condition_attribute":{"expression":{"simple_expression":"enaBlo"}},"description":{"description_string":"Temperature input","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":20},{"x":-100,"y":60}]},"iconTransformation":{"extent":[{"x":-140,"y":20},{"x":-100,"y":60}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"TOutWitDef","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"K\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"ThermodynamicTemperature\""}}}}}]}},"condition_attribute":{"expression":{"simple_expression":"enaBlo"}},"description":{"description_string":"Temperature input with specified default value","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-70},{"x":-100,"y":-30}]},"iconTransformation":{"extent":[{"x":-140,"y":-80},{"x":-100,"y":-40}]}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"default","modification":{"equal":true,"expression":{"simple_expression":"300.15"}}}}}]}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.BooleanInput","component_list":[{"declaration":{"identifier":"uWin"},"condition_attribute":{"expression":{"simple_expression":"have_winSen"}},"description":{"description_string":"Window opening status","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-100},{"x":-100,"y":-60}]},"iconTransformation":{"extent":[{"x":-140,"y":-110},{"x":-100,"y":-70}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.IntegerInput","component_list":[{"declaration":{"identifier":"nOcc"},"condition_attribute":{"expression":{"simple_expression":"have_occSen"}},"description":{"description_string":"Occupancy","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":60},{"x":-100,"y":100}]},"iconTransformation":{"extent":[{"x":-140,"y":60},{"x":-100,"y":100}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"y"},"description":{"description_string":"Output connector","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-10},{"x":120,"y":10}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Abs","component_list":[{"declaration":{"identifier":"abs"},"condition_attribute":{"expression":{"simple_expression":"not enaBlo"}},"description":{"description_string":"Instance could be conditional disabled","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-8,"y":-10},{"x":12,"y":10}]}}}}}]}}]}}]}}}}],"modelicaFile":"test/FromModelica/RemovableInputs.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/RemovableInputs.mo","checksum":"7a988d501ae4cbf362d7ebe12fc22ec3"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"RemovableInputs","description_string":"A block with a flag for disabling instances","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Boolean","component_list":[{"declaration":{"identifier":"enaBlo","modification":{"equal":true,"expression":{"simple_expression":"true"}}},"description":{"description_string":"Flag for enabling instance"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Boolean","component_list":[{"declaration":{"identifier":"have_winSen"},"description":{"description_string":"True: there is window status sensor"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Boolean","component_list":[{"declaration":{"identifier":"have_occSen"},"description":{"description_string":"True: there is occupancy sensor"}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"u"},"condition_attribute":{"expression":{"simple_expression":"enaBlo"}},"description":{"description_string":"Input connector","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]},"iconTransformation":{"extent":[{"x":-140,"y":-40},{"x":-100,"y":0}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"TOut","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"K\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"ThermodynamicTemperature\""}}}}}]}},"condition_attribute":{"expression":{"simple_expression":"enaBlo"}},"description":{"description_string":"Temperature input","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":20},{"x":-100,"y":60}]},"iconTransformation":{"extent":[{"x":-140,"y":20},{"x":-100,"y":60}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"TOutWitDef","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"K\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"ThermodynamicTemperature\""}}}}}]}},"condition_attribute":{"expression":{"simple_expression":"enaBlo"}},"description":{"description_string":"Temperature input with specified default value","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-70},{"x":-100,"y":-30}]},"iconTransformation":{"extent":[{"x":-140,"y":-80},{"x":-100,"y":-40}]}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"default","modification":{"equal":true,"expression":{"simple_expression":"300.15"}}}}}]}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.BooleanInput","component_list":[{"declaration":{"identifier":"uWin"},"condition_attribute":{"expression":{"simple_expression":"have_winSen"}},"description":{"description_string":"Window opening status","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-100},{"x":-100,"y":-60}]},"iconTransformation":{"extent":[{"x":-140,"y":-110},{"x":-100,"y":-70}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.IntegerInput","component_list":[{"declaration":{"identifier":"nOcc"},"condition_attribute":{"expression":{"simple_expression":"have_occSen"}},"description":{"description_string":"Occupancy","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":60},{"x":-100,"y":100}]},"iconTransformation":{"extent":[{"x":-140,"y":60},{"x":-100,"y":100}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"y"},"description":{"description_string":"Output connector","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-10},{"x":120,"y":10}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Abs","component_list":[{"declaration":{"identifier":"abs"},"condition_attribute":{"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":[{"name":"enaBlo"}]}]}]}}}},"description":{"description_string":"Instance could be conditional disabled","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-8,"y":-10},{"x":12,"y":10}]}}}}}]}}]}}]}}}}],"modelicaFile":"test/FromModelica/RemovableInputs.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/RemovableInputs.mo","checksum":"7a988d501ae4cbf362d7ebe12fc22ec3"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/SubController.json b/test/reference/json/test/FromModelica/SubController.json index 5f57f3e8..678f4082 100644 --- a/test/reference/json/test/FromModelica/SubController.json +++ b/test/reference/json/test/FromModelica/SubController.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"SubController","description_string":"Subsequence","composition":{"element_list":[{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"u"},"description":{"description_string":"Real input","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]},"iconTransformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"connection","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"hardwired","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"trend","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"interval","modification":{"equal":true,"expression":{"simple_expression":"60"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}}]}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"y"},"description":{"description_string":"Real output","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-20},{"x":140,"y":20}]},"iconTransformation":{"extent":[{"x":100,"y":-20},{"x":140,"y":20}]}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"connection","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"hardwired","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"trend","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"interval","modification":{"equal":true,"expression":{"simple_expression":"60"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}}]}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"generatePointlist","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"controlledDevice","modification":{"equal":true,"expression":{"simple_expression":"\"Sub Device\""}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"subCon\""}}}}},{"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":-100,"y":-100},{"x":100,"y":100}],"lineColor":{"r":0,"g":0,"b":127},"fillColor":{"r":255,"g":255,"b":255},"fillPattern":"FillPattern.Solid"}},{"name":"Text","attribute":{"extent":[{"x":-100,"y":100},{"x":100,"y":140}],"textString":"\"%name\"","lineColor":{"r":0,"g":0,"b":255}}}]}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Diagram","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"coordinateSystem":{"preserveAspectRatio":"false"}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/SubController.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/SubController.mo","checksum":"38c289724f1c7e4b77eaf836a931110c"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"SubController","description_string":"Subsequence","composition":{"element_list":[{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"u"},"description":{"description_string":"Real input","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]},"iconTransformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"connection","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"hardwired","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"trend","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"interval","modification":{"equal":true,"expression":{"simple_expression":"60"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}}]}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"y"},"description":{"description_string":"Real output","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-20},{"x":140,"y":20}]},"iconTransformation":{"extent":[{"x":100,"y":-20},{"x":140,"y":20}]}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"connection","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"hardwired","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"trend","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"interval","modification":{"equal":true,"expression":{"simple_expression":"60"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"enable","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}}]}}}}]}}}}]}}]}}],"annotation":[{"element_modification_or_replaceable":{"element_modification":{"name":"__cdl","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"generatePointlist","modification":{"equal":true,"expression":{"simple_expression":"true"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"controlledDevice","modification":{"equal":true,"expression":{"simple_expression":"\"Sub Device\""}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"defaultComponentName","modification":{"equal":true,"expression":{"simple_expression":"\"subCon\""}}}}},{"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":-100,"y":-100},{"x":100,"y":100}],"lineColor":{"r":0,"g":0,"b":127},"fillColor":{"r":255,"g":255,"b":255},"fillPattern":"FillPattern.Solid"}},{"name":"Text","attribute":{"extent":[{"x":-100,"y":100},{"x":100,"y":140}],"textString":"\"%name\"","lineColor":{"r":0,"g":0,"b":255}}}]}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"Diagram","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"coordinateSystem":{"preserveAspectRatio":"false"}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/SubController.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/SubController.mo","checksum":"38c289724f1c7e4b77eaf836a931110c"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/TestEvaluation_1.json b/test/reference/json/test/FromModelica/TestEvaluation_1.json index 01ace663..37d80d02 100644 --- a/test/reference/json/test/FromModelica/TestEvaluation_1.json +++ b/test/reference/json/test/FromModelica/TestEvaluation_1.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"TestEvaluation_1","description_string":"Example for real parameter evaluation","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"k1","modification":{"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"Constant output value"}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Sources.Constant","component_list":[{"declaration":{"identifier":"con","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"k","modification":{"equal":true,"expression":{"simple_expression":"k1"}}}}}]}},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-20,"y":10},{"x":0,"y":30}]}}}}}]}}]}}],"annotation":[{"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":{"name":"Diagram","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"coordinateSystem":{"preserveAspectRatio":"false"}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"uses","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"Buildings","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"version","modification":{"equal":true,"expression":{"simple_expression":"\"8.0.0\""}}}}}]}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/TestEvaluation_1.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/TestEvaluation_1.mo","checksum":"0676898cf3a851d88a18a05c8341d611"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"TestEvaluation_1","description_string":"Example for real parameter evaluation","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"k1","modification":{"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"Constant output value"}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Sources.Constant","component_list":[{"declaration":{"identifier":"con","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"k","modification":{"equal":true,"expression":{"simple_expression":"k1"}}}}}]}},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-20,"y":10},{"x":0,"y":30}]}}}}}]}}]}}],"annotation":[{"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":{"name":"Diagram","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"coordinateSystem":{"preserveAspectRatio":"false"}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"uses","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"Buildings","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"version","modification":{"equal":true,"expression":{"simple_expression":"\"8.0.0\""}}}}}]}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/TestEvaluation_1.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/TestEvaluation_1.mo","checksum":"0676898cf3a851d88a18a05c8341d611"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/TestEvaluation_2.json b/test/reference/json/test/FromModelica/TestEvaluation_2.json index 6a289d78..06446580 100644 --- a/test/reference/json/test/FromModelica/TestEvaluation_2.json +++ b/test/reference/json/test/FromModelica/TestEvaluation_2.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"TestEvaluation_2","description_string":"Example for real parameter evaluation","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"uLow","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}],"equal":true,"expression":{"simple_expression":"0.5"}}},"description":{"description_string":"if y=true and uuHigh, switch to y=true"}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"u"},"description":{"description_string":"Real input signal","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]},"iconTransformation":{"extent":[{"x":-118,"y":-20},{"x":-78,"y":20}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput","component_list":[{"declaration":{"identifier":"y"},"description":{"description_string":"Boolean output signal","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-20},{"x":140,"y":20}]},"iconTransformation":{"extent":[{"x":80,"y":-20},{"x":120,"y":20}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Hysteresis","component_list":[{"declaration":{"identifier":"hys","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"uLow","modification":{"equal":true,"expression":{"simple_expression":"uLow"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"uHigh","modification":{"equal":true,"expression":{"simple_expression":"uHigh"}}}}}]}},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-10,"y":-10},{"x":10,"y":10}]}}}}}]}}]}}],"element_sections":[{"equation_section":{"equation":[{"connect_clause":{"from":[{"dot_op":false,"identifier":"hys"},{"dot_op":true},{"dot_op":false,"identifier":"u"}],"to":[{"dot_op":false,"identifier":"u"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-12,"y":0},{"x":-120,"y":0}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"hys"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"y"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":12,"y":0},{"x":120,"y":0}],"color":{"r":255,"g":0,"b":255}}}}}]}}]}}],"annotation":[{"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":{"name":"Diagram","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"coordinateSystem":{"preserveAspectRatio":"false"}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"uses","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"Buildings","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"version","modification":{"equal":true,"expression":{"simple_expression":"\"8.0.0\""}}}}}]}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/TestEvaluation_2.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/TestEvaluation_2.mo","checksum":"4c2cde0f2d1974697cd2c355f56ce1c0"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"TestEvaluation_2","description_string":"Example for real parameter evaluation","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"uLow","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"min","modification":{"equal":true,"expression":{"simple_expression":"0"}}}}}],"equal":true,"expression":{"simple_expression":"0.5"}}},"description":{"description_string":"if y=true and uuHigh, switch to y=true"}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"u"},"description":{"description_string":"Real input signal","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]},"iconTransformation":{"extent":[{"x":-118,"y":-20},{"x":-78,"y":20}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput","component_list":[{"declaration":{"identifier":"y"},"description":{"description_string":"Boolean output signal","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-20},{"x":140,"y":20}]},"iconTransformation":{"extent":[{"x":80,"y":-20},{"x":120,"y":20}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Hysteresis","component_list":[{"declaration":{"identifier":"hys","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"uLow","modification":{"equal":true,"expression":{"simple_expression":"uLow"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"uHigh","modification":{"equal":true,"expression":{"simple_expression":"uHigh"}}}}}]}},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-10,"y":-10},{"x":10,"y":10}]}}}}}]}}]}}],"element_sections":[{"equation_section":{"equation":[{"connect_clause":{"from":[{"dot_op":false,"identifier":"hys"},{"dot_op":true},{"dot_op":false,"identifier":"u"}],"to":[{"dot_op":false,"identifier":"u"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-12,"y":0},{"x":-120,"y":0}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"hys"},{"dot_op":true},{"dot_op":false,"identifier":"y"}],"to":[{"dot_op":false,"identifier":"y"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":12,"y":0},{"x":120,"y":0}],"color":{"r":255,"g":0,"b":255}}}}}]}}]}}],"annotation":[{"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":{"name":"Diagram","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"coordinateSystem":{"preserveAspectRatio":"false"}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"uses","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"Buildings","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"version","modification":{"equal":true,"expression":{"simple_expression":"\"8.0.0\""}}}}}]}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/TestEvaluation_2.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/TestEvaluation_2.mo","checksum":"4c2cde0f2d1974697cd2c355f56ce1c0"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/TestEvaluation_3.json b/test/reference/json/test/FromModelica/TestEvaluation_3.json index a12a1a49..da3d58d4 100644 --- a/test/reference/json/test/FromModelica/TestEvaluation_3.json +++ b/test/reference/json/test/FromModelica/TestEvaluation_3.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"TestEvaluation_3","description_string":"Example for boolean parameter evaluation","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Boolean","component_list":[{"declaration":{"identifier":"k1","modification":{"equal":true,"expression":{"simple_expression":"true"}}},"description":{"description_string":"Constant output value"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Boolean","component_list":[{"declaration":{"identifier":"k2","modification":{"equal":true,"expression":{"simple_expression":"not k1"}}}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.Sources.Constant","component_list":[{"declaration":{"identifier":"con","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"k","modification":{"equal":true,"expression":{"simple_expression":"k2"}}}}}]}},"condition_attribute":{"expression":{"simple_expression":"not k1"}},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-10,"y":10},{"x":10,"y":30}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.Sources.Constant","component_list":[{"declaration":{"identifier":"con1","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"k","modification":{"equal":true,"expression":{"simple_expression":"k1"}}}}}]}},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-8,"y":-30},{"x":12,"y":-10}]}}}}}]}}]}}],"annotation":[{"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":{"name":"Diagram","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"coordinateSystem":{"preserveAspectRatio":"false"}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/TestEvaluation_3.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/TestEvaluation_3.mo","checksum":"a5e1a1f6126e2aa9474451639d6d6b01"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"TestEvaluation_3","description_string":"Example for boolean parameter evaluation","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Boolean","component_list":[{"declaration":{"identifier":"k1","modification":{"equal":true,"expression":{"simple_expression":"true"}}},"description":{"description_string":"Constant output value"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Boolean","component_list":[{"declaration":{"identifier":"k2","modification":{"equal":true,"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":[{"name":"k1"}]}]}]}}}}}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.Sources.Constant","component_list":[{"declaration":{"identifier":"con","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"k","modification":{"equal":true,"expression":{"simple_expression":"k2"}}}}}]}},"condition_attribute":{"expression":{"simple_expression":{"logical_expression":{"logical_or":[{"logical_and":[{"not":true,"arithmetic_expressions":[{"name":"k1"}]}]}]}}}},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-10,"y":10},{"x":10,"y":30}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Logical.Sources.Constant","component_list":[{"declaration":{"identifier":"con1","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"k","modification":{"equal":true,"expression":{"simple_expression":"k1"}}}}}]}},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-8,"y":-30},{"x":12,"y":-10}]}}}}}]}}]}}],"annotation":[{"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":{"name":"Diagram","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"coordinateSystem":{"preserveAspectRatio":"false"}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/TestEvaluation_3.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/TestEvaluation_3.mo","checksum":"a5e1a1f6126e2aa9474451639d6d6b01"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/TestEvaluation_4.json b/test/reference/json/test/FromModelica/TestEvaluation_4.json index 6b8b5da3..f11713d5 100644 --- a/test/reference/json/test/FromModelica/TestEvaluation_4.json +++ b/test/reference/json/test/FromModelica/TestEvaluation_4.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"TestEvaluation_4","description_string":"Example for enumerate parameter evaluation","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Controls.OBC.CDL.Types.SimpleController","component_list":[{"declaration":{"identifier":"controllerTypeCooCoi","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Controls.OBC.CDL.Types.SimpleController.PI"}}},"description":{"description_string":"Type of controller"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"kCooCoi","modification":{"equal":true,"expression":{"simple_expression":"0.1"}}},"description":{"description_string":"Gain for cooling coil control loop signal"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"TiCooCoi","modification":{"equal":true,"expression":{"simple_expression":"900"}}},"description":{"description_string":"Time constant of integrator block for cooling coil control loop signal"}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"TSupCooSet"},"description":{"description_string":"Cooling supply air temperature setpoint","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":40},{"x":-100,"y":80}]},"iconTransformation":{"extent":[{"x":-140,"y":60},{"x":-100,"y":100}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"TAirSup"},"description":{"description_string":"Supply air temperature measurement","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":0},{"x":-100,"y":40}]},"iconTransformation":{"extent":[{"x":-140,"y":20},{"x":-100,"y":60}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.IntegerInput","component_list":[{"declaration":{"identifier":"uZonSta"},"description":{"description_string":"Zone state","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-40},{"x":-100,"y":0}]},"iconTransformation":{"extent":[{"x":-140,"y":-60},{"x":-100,"y":-20}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.BooleanInput","component_list":[{"declaration":{"identifier":"u1SupFan"},"description":{"description_string":"Supply fan proven on","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-80},{"x":-100,"y":-40}]},"iconTransformation":{"extent":[{"x":-140,"y":-98},{"x":-100,"y":-58}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"yCooCoi"},"description":{"description_string":"Cooling coil position","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-20},{"x":140,"y":20}]},"iconTransformation":{"extent":[{"x":100,"y":-20},{"x":140,"y":20}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.CoolingCoil","component_list":[{"declaration":{"identifier":"cooCoi","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"controllerTypeCooCoi","modification":{"equal":true,"expression":{"simple_expression":"controllerTypeCooCoi"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"kCooCoi","modification":{"equal":true,"expression":{"simple_expression":"kCooCoi"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"TiCooCoi","modification":{"equal":true,"expression":{"simple_expression":"TiCooCoi"}}}}}]}},"description":{"description_string":"Cooling coil control","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-10,"y":-10},{"x":10,"y":10}]}}}}}]}}]}}],"element_sections":[{"equation_section":{"equation":[{"connect_clause":{"from":[{"dot_op":false,"identifier":"cooCoi"},{"dot_op":true},{"dot_op":false,"identifier":"TSupCooSet"}],"to":[{"dot_op":false,"identifier":"TSupCooSet"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-12,"y":8},{"x":-40,"y":8},{"x":-40,"y":60},{"x":-120,"y":60}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"cooCoi"},{"dot_op":true},{"dot_op":false,"identifier":"TAirSup"}],"to":[{"dot_op":false,"identifier":"TAirSup"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-12,"y":4},{"x":-60,"y":4},{"x":-60,"y":20},{"x":-120,"y":20}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"cooCoi"},{"dot_op":true},{"dot_op":false,"identifier":"uZonSta"}],"to":[{"dot_op":false,"identifier":"uZonSta"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-12,"y":-4},{"x":-60,"y":-4},{"x":-60,"y":-20},{"x":-120,"y":-20}],"color":{"r":255,"g":127,"b":0}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"cooCoi"},{"dot_op":true},{"dot_op":false,"identifier":"u1SupFan"}],"to":[{"dot_op":false,"identifier":"u1SupFan"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-12,"y":-8},{"x":-40,"y":-8},{"x":-40,"y":-60},{"x":-120,"y":-60}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"cooCoi"},{"dot_op":true},{"dot_op":false,"identifier":"yCooCoi"}],"to":[{"dot_op":false,"identifier":"yCooCoi"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":12,"y":0},{"x":58,"y":0},{"x":58,"y":0},{"x":120,"y":0}],"color":{"r":0,"g":0,"b":127}}}}}]}}]}}],"annotation":[{"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":{"name":"Diagram","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"coordinateSystem":{"preserveAspectRatio":"false"}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/TestEvaluation_4.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/TestEvaluation_4.mo","checksum":"c082f3e1f48da1d1fbcccde2a6123039"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"TestEvaluation_4","description_string":"Example for enumerate parameter evaluation","composition":{"element_list":[{"component_clause":{"type_prefix":"parameter","type_specifier":"Buildings.Controls.OBC.CDL.Types.SimpleController","component_list":[{"declaration":{"identifier":"controllerTypeCooCoi","modification":{"equal":true,"expression":{"simple_expression":"Buildings.Controls.OBC.CDL.Types.SimpleController.PI"}}},"description":{"description_string":"Type of controller"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"kCooCoi","modification":{"equal":true,"expression":{"simple_expression":"0.1"}}},"description":{"description_string":"Gain for cooling coil control loop signal"}}]}},{"component_clause":{"type_prefix":"parameter","type_specifier":"Real","component_list":[{"declaration":{"identifier":"TiCooCoi","modification":{"equal":true,"expression":{"simple_expression":"900"}}},"description":{"description_string":"Time constant of integrator block for cooling coil control loop signal"}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"TSupCooSet"},"description":{"description_string":"Cooling supply air temperature setpoint","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":40},{"x":-100,"y":80}]},"iconTransformation":{"extent":[{"x":-140,"y":60},{"x":-100,"y":100}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"TAirSup"},"description":{"description_string":"Supply air temperature measurement","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":0},{"x":-100,"y":40}]},"iconTransformation":{"extent":[{"x":-140,"y":20},{"x":-100,"y":60}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.IntegerInput","component_list":[{"declaration":{"identifier":"uZonSta"},"description":{"description_string":"Zone state","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-40},{"x":-100,"y":0}]},"iconTransformation":{"extent":[{"x":-140,"y":-60},{"x":-100,"y":-20}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.BooleanInput","component_list":[{"declaration":{"identifier":"u1SupFan"},"description":{"description_string":"Supply fan proven on","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-80},{"x":-100,"y":-40}]},"iconTransformation":{"extent":[{"x":-140,"y":-98},{"x":-100,"y":-58}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"yCooCoi"},"description":{"description_string":"Cooling coil position","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-20},{"x":140,"y":20}]},"iconTransformation":{"extent":[{"x":100,"y":-20},{"x":140,"y":20}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.ASHRAE.G36.AHUs.SingleZone.VAV.SetPoints.CoolingCoil","component_list":[{"declaration":{"identifier":"cooCoi","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"controllerTypeCooCoi","modification":{"equal":true,"expression":{"simple_expression":"controllerTypeCooCoi"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"kCooCoi","modification":{"equal":true,"expression":{"simple_expression":"kCooCoi"}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"TiCooCoi","modification":{"equal":true,"expression":{"simple_expression":"TiCooCoi"}}}}}]}},"description":{"description_string":"Cooling coil control","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-10,"y":-10},{"x":10,"y":10}]}}}}}]}}]}}],"element_sections":[{"equation_section":{"equation":[{"connect_clause":{"from":[{"dot_op":false,"identifier":"cooCoi"},{"dot_op":true},{"dot_op":false,"identifier":"TSupCooSet"}],"to":[{"dot_op":false,"identifier":"TSupCooSet"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-12,"y":8},{"x":-40,"y":8},{"x":-40,"y":60},{"x":-120,"y":60}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"cooCoi"},{"dot_op":true},{"dot_op":false,"identifier":"TAirSup"}],"to":[{"dot_op":false,"identifier":"TAirSup"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-12,"y":4},{"x":-60,"y":4},{"x":-60,"y":20},{"x":-120,"y":20}],"color":{"r":0,"g":0,"b":127}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"cooCoi"},{"dot_op":true},{"dot_op":false,"identifier":"uZonSta"}],"to":[{"dot_op":false,"identifier":"uZonSta"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-12,"y":-4},{"x":-60,"y":-4},{"x":-60,"y":-20},{"x":-120,"y":-20}],"color":{"r":255,"g":127,"b":0}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"cooCoi"},{"dot_op":true},{"dot_op":false,"identifier":"u1SupFan"}],"to":[{"dot_op":false,"identifier":"u1SupFan"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":-12,"y":-8},{"x":-40,"y":-8},{"x":-40,"y":-60},{"x":-120,"y":-60}],"color":{"r":255,"g":0,"b":255}}}}}]}},{"connect_clause":{"from":[{"dot_op":false,"identifier":"cooCoi"},{"dot_op":true},{"dot_op":false,"identifier":"yCooCoi"}],"to":[{"dot_op":false,"identifier":"yCooCoi"}]},"description":{"annotation":[{"element_modification_or_replaceable":{"element_modification":{"Line":{"points":[{"x":12,"y":0},{"x":58,"y":0},{"x":58,"y":0},{"x":120,"y":0}],"color":{"r":0,"g":0,"b":127}}}}}]}}]}}],"annotation":[{"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":{"name":"Diagram","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"coordinateSystem":{"preserveAspectRatio":"false"}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/TestEvaluation_4.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/TestEvaluation_4.mo","checksum":"c082f3e1f48da1d1fbcccde2a6123039"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/VariableModification.json b/test/reference/json/test/FromModelica/VariableModification.json index e8727469..557e5ad3 100644 --- a/test/reference/json/test/FromModelica/VariableModification.json +++ b/test/reference/json/test/FromModelica/VariableModification.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"VariableModification","description_string":"Block with instantiated class that the connector attribute being specified","composition":{"element_list":[{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"u"},"description":{"description_string":"Input connector","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]},"iconTransformation":{"extent":[{"x":-140,"y":-40},{"x":-100,"y":0}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"TOut","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"K\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"ThermodynamicTemperature\""}}}}}]}},"description":{"description_string":"Temperature input","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":20},{"x":-100,"y":60}]},"iconTransformation":{"extent":[{"x":-140,"y":20},{"x":-100,"y":60}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Abs","component_list":[{"declaration":{"identifier":"abs","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"u","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"K\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"degC\""}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"y","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"K\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"degC\""}}}}}]}}}}]}},"description":{"description_string":"Instance with modified input and output attributes","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-8,"y":-10},{"x":12,"y":10}]}}}}}]}}]}}]}}}}],"modelicaFile":"test/FromModelica/VariableModification.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/VariableModification.mo","checksum":"3e596d52cb5abe379faf93b30dca6e4a"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"VariableModification","description_string":"Block with instantiated class that the connector attribute being specified","composition":{"element_list":[{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"u"},"description":{"description_string":"Input connector","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]},"iconTransformation":{"extent":[{"x":-140,"y":-40},{"x":-100,"y":0}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"TOut","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"K\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"quantity","modification":{"equal":true,"expression":{"simple_expression":"\"ThermodynamicTemperature\""}}}}}]}},"description":{"description_string":"Temperature input","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":20},{"x":-100,"y":60}]},"iconTransformation":{"extent":[{"x":-140,"y":20},{"x":-100,"y":60}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Abs","component_list":[{"declaration":{"identifier":"abs","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"u","modification":{"class_modification":[{"element_modification_or_replaceable":{"final":true,"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"K\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"degC\""}}}}}]}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"y","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"name":"unit","modification":{"equal":true,"expression":{"simple_expression":"\"K\""}}}}},{"element_modification_or_replaceable":{"element_modification":{"name":"displayUnit","modification":{"equal":true,"expression":{"simple_expression":"\"degC\""}}}}}]}}}}]}},"description":{"description_string":"Instance with modified input and output attributes","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-8,"y":-10},{"x":12,"y":10}]}}}}}]}}]}}]}}}}],"modelicaFile":"test/FromModelica/VariableModification.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/VariableModification.mo","checksum":"3e596d52cb5abe379faf93b30dca6e4a"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/WithCDLElementary.json b/test/reference/json/test/FromModelica/WithCDLElementary.json index 6b353988..ec8c4b3a 100644 --- a/test/reference/json/test/FromModelica/WithCDLElementary.json +++ b/test/reference/json/test/FromModelica/WithCDLElementary.json @@ -1 +1 @@ -{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"WithCDLElementary","description_string":"Block that instantiates CDL elementary block that there is inside class","composition":{"element_list":[{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Greater","component_list":[{"declaration":{"identifier":"gre"},"description":{"description_string":"CDL elementary block with inside class","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-8,"y":-10},{"x":12,"y":10}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"u"},"description":{"description_string":"Real input","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]},"iconTransformation":{"extent":[{"x":-212,"y":-12},{"x":-172,"y":28}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"y"},"description":{"description_string":"Real output","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-20},{"x":140,"y":20}]},"iconTransformation":{"extent":[{"x":-184,"y":-4},{"x":-144,"y":36}]}}}}}]}}]}}],"annotation":[{"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":{"name":"Diagram","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"coordinateSystem":{"preserveAspectRatio":"false"}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/WithCDLElementary.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/WithCDLElementary.mo","checksum":"b5aa5a10d527ee146cd5b35d14da12e8"} \ No newline at end of file +{"within":"FromModelica","class_definition":[{"class_prefixes":"block","class_specifier":{"long_class_specifier":{"identifier":"WithCDLElementary","description_string":"Block that instantiates CDL elementary block that there is inside class","composition":{"element_list":[{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Continuous.Greater","component_list":[{"declaration":{"identifier":"gre"},"description":{"description_string":"CDL elementary block with inside class","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-8,"y":-10},{"x":12,"y":10}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealInput","component_list":[{"declaration":{"identifier":"u"},"description":{"description_string":"Real input","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":-140,"y":-20},{"x":-100,"y":20}]},"iconTransformation":{"extent":[{"x":-212,"y":-12},{"x":-172,"y":28}]}}}}}]}}]}},{"component_clause":{"type_specifier":"Buildings.Controls.OBC.CDL.Interfaces.RealOutput","component_list":[{"declaration":{"identifier":"y"},"description":{"description_string":"Real output","annotation":[{"element_modification_or_replaceable":{"element_modification":{"Placement":{"transformation":{"extent":[{"x":100,"y":-20},{"x":140,"y":20}]},"iconTransformation":{"extent":[{"x":-184,"y":-4},{"x":-144,"y":36}]}}}}}]}}]}}],"annotation":[{"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":{"name":"Diagram","modification":{"class_modification":[{"element_modification_or_replaceable":{"element_modification":{"coordinateSystem":{"preserveAspectRatio":"false"}}}}]}}}}]}}}}],"modelicaFile":"test/FromModelica/WithCDLElementary.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/WithCDLElementary.mo","checksum":"b5aa5a10d527ee146cd5b35d14da12e8"} \ No newline at end of file diff --git a/test/reference/json/test/FromModelica/package.json b/test/reference/json/test/FromModelica/package.json index 1dcd2bcd..7490bb4c 100644 --- a/test/reference/json/test/FromModelica/package.json +++ b/test/reference/json/test/FromModelica/package.json @@ -1 +1 @@ -{"class_definition":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"FromModelica","description_string":"Package with test models","composition":{"element_list":[{"component_clause":{"type_prefix":"constant","type_specifier":"Integer","component_list":[{"declaration":{"identifier":"one","modification":{"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"An integer constant with value 1"}}]}}]}}}}],"modelicaFile":"test/FromModelica/package.mo","fullMoFilePath":"/Users/akprakash/Programming/modelica/modelica-json/test/FromModelica/package.mo","checksum":"b2a471abbf3ca9f2e2d994e7ce1539b4"} \ No newline at end of file +{"class_definition":[{"class_prefixes":"package","class_specifier":{"long_class_specifier":{"identifier":"FromModelica","description_string":"Package with test models","composition":{"element_list":[{"component_clause":{"type_prefix":"constant","type_specifier":"Integer","component_list":[{"declaration":{"identifier":"one","modification":{"equal":true,"expression":{"simple_expression":"1"}}},"description":{"description_string":"An integer constant with value 1"}}]}}]}}}}],"modelicaFile":"test/FromModelica/package.mo","fullMoFilePath":"/home/jianjunhu/GitFolder/modelica-json/test/FromModelica/package.mo","checksum":"b2a471abbf3ca9f2e2d994e7ce1539b4"} \ No newline at end of file