from __future__ import annotations from dataclasses import dataclass, field from pathlib import Path from types import SimpleNamespace from PythonModels.core.base import Component from PythonModels.core.network import SimulationNetwork MODEL_NAME = "test_mql" AMESIM_ARCHIVE_RELATIVE_PATH = Path("AmesimModels/test_mql.ame") # Extracted from AmesimModels/test_mql.ame on the model-development branch. # This is a structural Python port scaffold: it preserves the AMESim component # inventory, parameters, and connection topology without changing the existing # Testmodel implementation. The detailed AMESim submodel equations should be # replaced incrementally per submodel family. MODEL_INFO = {'num_states': 132, 'num_discrete_states': 24, 'is_explicit': 1} SIMULATION_SETTINGS = {'raw': '0 10 0.01 1e+30 1e-07 0.001 1 0.1\r\n0 0 0 0 8 0 0 0 0 0', 't_start': 0.0, 't_stop': 10.0, 'print_interval': 0.01, 'max_step': 0.001, 'sample_step': 0.1} GLOBAL_PARAMETERS = {'D2': '20', 'D1': '20', 'D3': '14', 'Pdq': '1', 'P0': '153', 'V': '15', 'cf': '0.45'} SUBMODEL_COUNTS = {'PNRP17': 8, 'F000': 16, 'MECMAS21': 10, 'LMECHN1': 2, 'LSTP00A': 8, 'PNCH012': 8, 'PNPL01': 16, 'FORC': 2, 'PNCH023': 4, 'PNOR001': 8, 'PN3NODE2': 8, 'P4NODE2': 8, 'PNVO001': 8, 'STEP0': 8, 'UD00': 2, 'PNGD00': 1} LINE_SUBMODEL_COUNTS = {'DIRECT': 44, 'PNL0001': 20, 'PNL0003': 8, 'PNL0002': 8, 'PNL00R': 4} COMPONENT_SPECS = [{'index': 0, 'alias': 'pn_brp2_8', 'component_name': 'pn_brp2', 'library_id': 'pcd.pn_brp2', 'submodel': 'PNRP17', 'label': 'pneumatic piston with moving body', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'lshaft', 'face': '2'}, {'name': 'port_3', 'type': 'lshaft', 'face': '2'}, {'name': 'port_4', 'type': 'lshaft', 'face': '3'}, {'name': 'port_5', 'type': 'lshaft', 'face': '3'}], 'parameters': [{'name': 'dp', 'title': 'piston diameter', 'value': '2.00000000000000e+02', 'units': 'mm'}, {'name': 'dr', 'title': 'rod diameter', 'value': '1.00000000000000e+00', 'units': 'mm'}, {'name': 'x0', 'title': 'chamber length at zero relative displacement', 'value': '0.00000000000000e+00', 'units': 'mm'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}]}, {'index': 1, 'alias': 'pn_brp2_9', 'component_name': 'pn_brp2', 'library_id': 'pcd.pn_brp2', 'submodel': 'PNRP17', 'label': 'pneumatic piston with moving body', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'lshaft', 'face': '2'}, {'name': 'port_3', 'type': 'lshaft', 'face': '2'}, {'name': 'port_4', 'type': 'lshaft', 'face': '3'}, {'name': 'port_5', 'type': 'lshaft', 'face': '3'}], 'parameters': [{'name': 'dp', 'title': 'piston diameter', 'value': '2.00000000000000e+02', 'units': 'mm'}, {'name': 'dr', 'title': 'rod diameter', 'value': '1.00000000000000e+00', 'units': 'mm'}, {'name': 'x0', 'title': 'chamber length at zero relative displacement', 'value': '0.00000000000000e+00', 'units': 'mm'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}]}, {'index': 2, 'alias': 'pn_brp2_10', 'component_name': 'pn_brp2', 'library_id': 'pcd.pn_brp2', 'submodel': 'PNRP17', 'label': 'pneumatic piston with moving body', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'lshaft', 'face': '2'}, {'name': 'port_3', 'type': 'lshaft', 'face': '2'}, {'name': 'port_4', 'type': 'lshaft', 'face': '3'}, {'name': 'port_5', 'type': 'lshaft', 'face': '3'}], 'parameters': [{'name': 'dp', 'title': 'piston diameter', 'value': '2.00000000000000e+02', 'units': 'mm'}, {'name': 'dr', 'title': 'rod diameter', 'value': '1.00000000000000e+00', 'units': 'mm'}, {'name': 'x0', 'title': 'chamber length at zero relative displacement', 'value': '0.00000000000000e+00', 'units': 'mm'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}]}, {'index': 3, 'alias': 'pn_brp2_11', 'component_name': 'pn_brp2', 'library_id': 'pcd.pn_brp2', 'submodel': 'PNRP17', 'label': 'pneumatic piston with moving body', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'lshaft', 'face': '2'}, {'name': 'port_3', 'type': 'lshaft', 'face': '2'}, {'name': 'port_4', 'type': 'lshaft', 'face': '3'}, {'name': 'port_5', 'type': 'lshaft', 'face': '3'}], 'parameters': [{'name': 'dp', 'title': 'piston diameter', 'value': '2.00000000000000e+02', 'units': 'mm'}, {'name': 'dr', 'title': 'rod diameter', 'value': '1.00000000000000e+00', 'units': 'mm'}, {'name': 'x0', 'title': 'chamber length at zero relative displacement', 'value': '0.00000000000000e+00', 'units': 'mm'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}]}, {'index': 4, 'alias': 'pn_brp2_12', 'component_name': 'pn_brp2', 'library_id': 'pcd.pn_brp2', 'submodel': 'PNRP17', 'label': 'pneumatic piston with moving body', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'lshaft', 'face': '2'}, {'name': 'port_3', 'type': 'lshaft', 'face': '2'}, {'name': 'port_4', 'type': 'lshaft', 'face': '3'}, {'name': 'port_5', 'type': 'lshaft', 'face': '3'}], 'parameters': [{'name': 'dp', 'title': 'piston diameter', 'value': '2.00000000000000e+02', 'units': 'mm'}, {'name': 'dr', 'title': 'rod diameter', 'value': '1.00000000000000e+00', 'units': 'mm'}, {'name': 'x0', 'title': 'chamber length at zero relative displacement', 'value': '0.00000000000000e+00', 'units': 'mm'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}]}, {'index': 5, 'alias': 'pn_brp2_13', 'component_name': 'pn_brp2', 'library_id': 'pcd.pn_brp2', 'submodel': 'PNRP17', 'label': 'pneumatic piston with moving body', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'lshaft', 'face': '2'}, {'name': 'port_3', 'type': 'lshaft', 'face': '2'}, {'name': 'port_4', 'type': 'lshaft', 'face': '3'}, {'name': 'port_5', 'type': 'lshaft', 'face': '3'}], 'parameters': [{'name': 'dp', 'title': 'piston diameter', 'value': '2.00000000000000e+02', 'units': 'mm'}, {'name': 'dr', 'title': 'rod diameter', 'value': '1.00000000000000e+00', 'units': 'mm'}, {'name': 'x0', 'title': 'chamber length at zero relative displacement', 'value': '0.00000000000000e+00', 'units': 'mm'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}]}, {'index': 6, 'alias': 'pn_brp2_14', 'component_name': 'pn_brp2', 'library_id': 'pcd.pn_brp2', 'submodel': 'PNRP17', 'label': 'pneumatic piston with moving body', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'lshaft', 'face': '2'}, {'name': 'port_3', 'type': 'lshaft', 'face': '2'}, {'name': 'port_4', 'type': 'lshaft', 'face': '3'}, {'name': 'port_5', 'type': 'lshaft', 'face': '3'}], 'parameters': [{'name': 'dp', 'title': 'piston diameter', 'value': '2.00000000000000e+02', 'units': 'mm'}, {'name': 'dr', 'title': 'rod diameter', 'value': '1.00000000000000e+00', 'units': 'mm'}, {'name': 'x0', 'title': 'chamber length at zero relative displacement', 'value': '0.00000000000000e+00', 'units': 'mm'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}]}, {'index': 7, 'alias': 'pn_brp2_15', 'component_name': 'pn_brp2', 'library_id': 'pcd.pn_brp2', 'submodel': 'PNRP17', 'label': 'pneumatic piston with moving body', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'lshaft', 'face': '2'}, {'name': 'port_3', 'type': 'lshaft', 'face': '2'}, {'name': 'port_4', 'type': 'lshaft', 'face': '3'}, {'name': 'port_5', 'type': 'lshaft', 'face': '3'}], 'parameters': [{'name': 'dp', 'title': 'piston diameter', 'value': '2.00000000000000e+02', 'units': 'mm'}, {'name': 'dr', 'title': 'rod diameter', 'value': '1.00000000000000e+00', 'units': 'mm'}, {'name': 'x0', 'title': 'chamber length at zero relative displacement', 'value': '0.00000000000000e+00', 'units': 'mm'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}]}, {'index': 8, 'alias': 'zeroforcesource_17', 'component_name': 'zeroforcesource', 'library_id': 'meca.zeroforcesource', 'submodel': 'F000', 'label': 'zero force source', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '3'}], 'parameters': []}, {'index': 9, 'alias': 'mass_friction_endstops_10', 'component_name': 'mass_friction_endstops', 'library_id': 'meca.mass_friction_endstops', 'submodel': 'MECMAS21', 'label': '1D translation mass', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '3'}, {'name': 'port_2', 'type': 'lshaft', 'face': '2'}], 'parameters': [{'name': 'mass', 'title': 'mass', 'value': '5.00000000000000e+01', 'units': 'kg'}, {'name': 'fstick', 'title': 'stiction force', 'value': '0.00000000000000e+00', 'units': 'N'}, {'name': 'fcoul', 'title': 'Coulomb friction force', 'value': '0.00000000000000e+00', 'units': 'N'}, {'name': 'rvisc', 'title': 'coefficient of viscous friction', 'value': '0.00000000000000e+00', 'units': 'N/(m/s)'}, {'name': 'wind', 'title': 'coefficient of windage', 'value': '0.00000000000000e+00', 'units': 'N/(m/s)**2'}, {'name': 'dvel', 'title': 'stick velocity threshold', 'value': '1.00000000000000e-06', 'units': 'm/s'}, {'name': 'restdvel', 'title': 'velocity threshold', 'value': '1.00000000000000e-06', 'units': 'm/s'}, {'name': 'restcoeff', 'title': 'restitution coefficient', 'value': '6.50000000000000e-01', 'units': 'null'}, {'name': 'astrib', 'title': 'Stribeck constant', 'value': '1.00000000000000e-03', 'units': 'm/s'}, {'name': 'xmin', 'title': 'lower displacement limit', 'value': '-1.00000000000000e+00', 'units': 'm'}, {'name': 'Kbmin', 'title': 'lower limit stiffness', 'value': '1.00000000000000e+06', 'units': 'N/mm'}, {'name': 'Dbmin', 'title': 'lower limit contact damping coefficient', 'value': '1.00000000000000e+01', 'units': 'N/(mm/s)'}, {'name': 'Pdmin', 'title': 'lower limit penetration for full damping', 'value': '1.00000000000000e-01', 'units': 'mm'}, {'name': 'xmax', 'title': 'higher displacement limit', 'value': '8.00000000000000e-01', 'units': 'm'}, {'name': 'Kbmax', 'title': 'higher limit stiffness', 'value': '1.00000000000000e+06', 'units': 'N/mm'}, {'name': 'Dbmax', 'title': 'higher limit contact damping coefficient', 'value': '1.00000000000000e+01', 'units': 'N/(mm/s)'}, {'name': 'Pdmax', 'title': 'higher limit penetration for full damping', 'value': '1.00000000000000e-01', 'units': 'mm'}, {'name': 'theta', 'title': 'inclination (+90 port 1 lowest, -90 port 1 highest)', 'value': '0.00000000000000e+00', 'units': 'degree'}, {'name': 'useFriction', 'title': 'use friction', 'value': '1', 'units': ''}, {'name': 'stoptype', 'title': 'endstop type', 'value': '4', 'units': ''}, {'name': 'discContactOption', 'title': 'negative contact force', 'value': '1', 'units': ''}, {'name': 'strib', 'title': 'Stribeck effect', 'value': '1', 'units': ''}, {'name': 'frictionType', 'title': 'friction type', 'value': '1', 'units': ''}]}, {'index': 10, 'alias': 'zeroforcesource_18', 'component_name': 'zeroforcesource', 'library_id': 'meca.zeroforcesource', 'submodel': 'F000', 'label': 'zero force source', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '3'}], 'parameters': []}, {'index': 11, 'alias': 'mass_friction_endstops_11', 'component_name': 'mass_friction_endstops', 'library_id': 'meca.mass_friction_endstops', 'submodel': 'MECMAS21', 'label': '1D translation mass', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '3'}, {'name': 'port_2', 'type': 'lshaft', 'face': '2'}], 'parameters': [{'name': 'mass', 'title': 'mass', 'value': '5.00000000000000e+01', 'units': 'kg'}, {'name': 'fstick', 'title': 'stiction force', 'value': '0.00000000000000e+00', 'units': 'N'}, {'name': 'fcoul', 'title': 'Coulomb friction force', 'value': '0.00000000000000e+00', 'units': 'N'}, {'name': 'rvisc', 'title': 'coefficient of viscous friction', 'value': '0.00000000000000e+00', 'units': 'N/(m/s)'}, {'name': 'wind', 'title': 'coefficient of windage', 'value': '0.00000000000000e+00', 'units': 'N/(m/s)**2'}, {'name': 'dvel', 'title': 'stick velocity threshold', 'value': '1.00000000000000e-06', 'units': 'm/s'}, {'name': 'restdvel', 'title': 'velocity threshold', 'value': '1.00000000000000e-06', 'units': 'm/s'}, {'name': 'restcoeff', 'title': 'restitution coefficient', 'value': '6.50000000000000e-01', 'units': 'null'}, {'name': 'astrib', 'title': 'Stribeck constant', 'value': '1.00000000000000e-03', 'units': 'm/s'}, {'name': 'xmin', 'title': 'lower displacement limit', 'value': '-1.00000000000000e+00', 'units': 'm'}, {'name': 'Kbmin', 'title': 'lower limit stiffness', 'value': '1.00000000000000e+06', 'units': 'N/mm'}, {'name': 'Dbmin', 'title': 'lower limit contact damping coefficient', 'value': '1.00000000000000e+01', 'units': 'N/(mm/s)'}, {'name': 'Pdmin', 'title': 'lower limit penetration for full damping', 'value': '1.00000000000000e-01', 'units': 'mm'}, {'name': 'xmax', 'title': 'higher displacement limit', 'value': '8.00000000000000e-01', 'units': 'm'}, {'name': 'Kbmax', 'title': 'higher limit stiffness', 'value': '1.00000000000000e+06', 'units': 'N/mm'}, {'name': 'Dbmax', 'title': 'higher limit contact damping coefficient', 'value': '1.00000000000000e+01', 'units': 'N/(mm/s)'}, {'name': 'Pdmax', 'title': 'higher limit penetration for full damping', 'value': '1.00000000000000e-01', 'units': 'mm'}, {'name': 'theta', 'title': 'inclination (+90 port 1 lowest, -90 port 1 highest)', 'value': '0.00000000000000e+00', 'units': 'degree'}, {'name': 'useFriction', 'title': 'use friction', 'value': '1', 'units': ''}, {'name': 'stoptype', 'title': 'endstop type', 'value': '4', 'units': ''}, {'name': 'discContactOption', 'title': 'negative contact force', 'value': '1', 'units': ''}, {'name': 'strib', 'title': 'Stribeck effect', 'value': '1', 'units': ''}, {'name': 'frictionType', 'title': 'friction type', 'value': '1', 'units': ''}]}, {'index': 12, 'alias': 'zeroforcesource_19', 'component_name': 'zeroforcesource', 'library_id': 'meca.zeroforcesource', 'submodel': 'F000', 'label': 'zero force source', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '3'}], 'parameters': []}, {'index': 13, 'alias': 'mass_friction_endstops_12', 'component_name': 'mass_friction_endstops', 'library_id': 'meca.mass_friction_endstops', 'submodel': 'MECMAS21', 'label': '1D translation mass', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '3'}, {'name': 'port_2', 'type': 'lshaft', 'face': '2'}], 'parameters': [{'name': 'mass', 'title': 'mass', 'value': '5.00000000000000e+01', 'units': 'kg'}, {'name': 'fstick', 'title': 'stiction force', 'value': '0.00000000000000e+00', 'units': 'N'}, {'name': 'fcoul', 'title': 'Coulomb friction force', 'value': '0.00000000000000e+00', 'units': 'N'}, {'name': 'rvisc', 'title': 'coefficient of viscous friction', 'value': '0.00000000000000e+00', 'units': 'N/(m/s)'}, {'name': 'wind', 'title': 'coefficient of windage', 'value': '0.00000000000000e+00', 'units': 'N/(m/s)**2'}, {'name': 'dvel', 'title': 'stick velocity threshold', 'value': '1.00000000000000e-06', 'units': 'm/s'}, {'name': 'restdvel', 'title': 'velocity threshold', 'value': '1.00000000000000e-06', 'units': 'm/s'}, {'name': 'restcoeff', 'title': 'restitution coefficient', 'value': '6.50000000000000e-01', 'units': 'null'}, {'name': 'astrib', 'title': 'Stribeck constant', 'value': '1.00000000000000e-03', 'units': 'm/s'}, {'name': 'xmin', 'title': 'lower displacement limit', 'value': '-1.00000000000000e+00', 'units': 'm'}, {'name': 'Kbmin', 'title': 'lower limit stiffness', 'value': '1.00000000000000e+06', 'units': 'N/mm'}, {'name': 'Dbmin', 'title': 'lower limit contact damping coefficient', 'value': '1.00000000000000e+01', 'units': 'N/(mm/s)'}, {'name': 'Pdmin', 'title': 'lower limit penetration for full damping', 'value': '1.00000000000000e-01', 'units': 'mm'}, {'name': 'xmax', 'title': 'higher displacement limit', 'value': '8.00000000000000e-01', 'units': 'm'}, {'name': 'Kbmax', 'title': 'higher limit stiffness', 'value': '1.00000000000000e+06', 'units': 'N/mm'}, {'name': 'Dbmax', 'title': 'higher limit contact damping coefficient', 'value': '1.00000000000000e+01', 'units': 'N/(mm/s)'}, {'name': 'Pdmax', 'title': 'higher limit penetration for full damping', 'value': '1.00000000000000e-01', 'units': 'mm'}, {'name': 'theta', 'title': 'inclination (+90 port 1 lowest, -90 port 1 highest)', 'value': '0.00000000000000e+00', 'units': 'degree'}, {'name': 'useFriction', 'title': 'use friction', 'value': '1', 'units': ''}, {'name': 'stoptype', 'title': 'endstop type', 'value': '4', 'units': ''}, {'name': 'discContactOption', 'title': 'negative contact force', 'value': '1', 'units': ''}, {'name': 'strib', 'title': 'Stribeck effect', 'value': '1', 'units': ''}, {'name': 'frictionType', 'title': 'friction type', 'value': '1', 'units': ''}]}, {'index': 14, 'alias': 'zeroforcesource_20', 'component_name': 'zeroforcesource', 'library_id': 'meca.zeroforcesource', 'submodel': 'F000', 'label': 'zero force source', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '3'}], 'parameters': []}, {'index': 15, 'alias': 'mass_friction_endstops_13', 'component_name': 'mass_friction_endstops', 'library_id': 'meca.mass_friction_endstops', 'submodel': 'MECMAS21', 'label': '1D translation mass', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '3'}, {'name': 'port_2', 'type': 'lshaft', 'face': '2'}], 'parameters': [{'name': 'mass', 'title': 'mass', 'value': '5.00000000000000e+01', 'units': 'kg'}, {'name': 'fstick', 'title': 'stiction force', 'value': '0.00000000000000e+00', 'units': 'N'}, {'name': 'fcoul', 'title': 'Coulomb friction force', 'value': '0.00000000000000e+00', 'units': 'N'}, {'name': 'rvisc', 'title': 'coefficient of viscous friction', 'value': '0.00000000000000e+00', 'units': 'N/(m/s)'}, {'name': 'wind', 'title': 'coefficient of windage', 'value': '0.00000000000000e+00', 'units': 'N/(m/s)**2'}, {'name': 'dvel', 'title': 'stick velocity threshold', 'value': '1.00000000000000e-06', 'units': 'm/s'}, {'name': 'restdvel', 'title': 'velocity threshold', 'value': '1.00000000000000e-06', 'units': 'm/s'}, {'name': 'restcoeff', 'title': 'restitution coefficient', 'value': '6.50000000000000e-01', 'units': 'null'}, {'name': 'astrib', 'title': 'Stribeck constant', 'value': '1.00000000000000e-03', 'units': 'm/s'}, {'name': 'xmin', 'title': 'lower displacement limit', 'value': '-1.00000000000000e+00', 'units': 'm'}, {'name': 'Kbmin', 'title': 'lower limit stiffness', 'value': '1.00000000000000e+06', 'units': 'N/mm'}, {'name': 'Dbmin', 'title': 'lower limit contact damping coefficient', 'value': '1.00000000000000e+01', 'units': 'N/(mm/s)'}, {'name': 'Pdmin', 'title': 'lower limit penetration for full damping', 'value': '1.00000000000000e-01', 'units': 'mm'}, {'name': 'xmax', 'title': 'higher displacement limit', 'value': '8.00000000000000e-01', 'units': 'm'}, {'name': 'Kbmax', 'title': 'higher limit stiffness', 'value': '1.00000000000000e+06', 'units': 'N/mm'}, {'name': 'Dbmax', 'title': 'higher limit contact damping coefficient', 'value': '1.00000000000000e+01', 'units': 'N/(mm/s)'}, {'name': 'Pdmax', 'title': 'higher limit penetration for full damping', 'value': '1.00000000000000e-01', 'units': 'mm'}, {'name': 'theta', 'title': 'inclination (+90 port 1 lowest, -90 port 1 highest)', 'value': '0.00000000000000e+00', 'units': 'degree'}, {'name': 'useFriction', 'title': 'use friction', 'value': '1', 'units': ''}, {'name': 'stoptype', 'title': 'endstop type', 'value': '4', 'units': ''}, {'name': 'discContactOption', 'title': 'negative contact force', 'value': '1', 'units': ''}, {'name': 'strib', 'title': 'Stribeck effect', 'value': '1', 'units': ''}, {'name': 'frictionType', 'title': 'friction type', 'value': '1', 'units': ''}]}, {'index': 16, 'alias': 'zeroforcesource_21', 'component_name': 'zeroforcesource', 'library_id': 'meca.zeroforcesource', 'submodel': 'F000', 'label': 'zero force source', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '3'}], 'parameters': []}, {'index': 17, 'alias': 'mass_friction_endstops_14', 'component_name': 'mass_friction_endstops', 'library_id': 'meca.mass_friction_endstops', 'submodel': 'MECMAS21', 'label': '1D translation mass', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '3'}, {'name': 'port_2', 'type': 'lshaft', 'face': '2'}], 'parameters': [{'name': 'mass', 'title': 'mass', 'value': '5.00000000000000e+01', 'units': 'kg'}, {'name': 'fstick', 'title': 'stiction force', 'value': '0.00000000000000e+00', 'units': 'N'}, {'name': 'fcoul', 'title': 'Coulomb friction force', 'value': '0.00000000000000e+00', 'units': 'N'}, {'name': 'rvisc', 'title': 'coefficient of viscous friction', 'value': '0.00000000000000e+00', 'units': 'N/(m/s)'}, {'name': 'wind', 'title': 'coefficient of windage', 'value': '0.00000000000000e+00', 'units': 'N/(m/s)**2'}, {'name': 'dvel', 'title': 'stick velocity threshold', 'value': '1.00000000000000e-06', 'units': 'm/s'}, {'name': 'restdvel', 'title': 'velocity threshold', 'value': '1.00000000000000e-06', 'units': 'm/s'}, {'name': 'restcoeff', 'title': 'restitution coefficient', 'value': '6.50000000000000e-01', 'units': 'null'}, {'name': 'astrib', 'title': 'Stribeck constant', 'value': '1.00000000000000e-03', 'units': 'm/s'}, {'name': 'xmin', 'title': 'lower displacement limit', 'value': '-1.00000000000000e+00', 'units': 'm'}, {'name': 'Kbmin', 'title': 'lower limit stiffness', 'value': '1.00000000000000e+06', 'units': 'N/mm'}, {'name': 'Dbmin', 'title': 'lower limit contact damping coefficient', 'value': '1.00000000000000e+01', 'units': 'N/(mm/s)'}, {'name': 'Pdmin', 'title': 'lower limit penetration for full damping', 'value': '1.00000000000000e-01', 'units': 'mm'}, {'name': 'xmax', 'title': 'higher displacement limit', 'value': '8.00000000000000e-01', 'units': 'm'}, {'name': 'Kbmax', 'title': 'higher limit stiffness', 'value': '1.00000000000000e+06', 'units': 'N/mm'}, {'name': 'Dbmax', 'title': 'higher limit contact damping coefficient', 'value': '1.00000000000000e+01', 'units': 'N/(mm/s)'}, {'name': 'Pdmax', 'title': 'higher limit penetration for full damping', 'value': '1.00000000000000e-01', 'units': 'mm'}, {'name': 'theta', 'title': 'inclination (+90 port 1 lowest, -90 port 1 highest)', 'value': '0.00000000000000e+00', 'units': 'degree'}, {'name': 'useFriction', 'title': 'use friction', 'value': '1', 'units': ''}, {'name': 'stoptype', 'title': 'endstop type', 'value': '4', 'units': ''}, {'name': 'discContactOption', 'title': 'negative contact force', 'value': '1', 'units': ''}, {'name': 'strib', 'title': 'Stribeck effect', 'value': '1', 'units': ''}, {'name': 'frictionType', 'title': 'friction type', 'value': '1', 'units': ''}]}, {'index': 18, 'alias': 'zeroforcesource_22', 'component_name': 'zeroforcesource', 'library_id': 'meca.zeroforcesource', 'submodel': 'F000', 'label': 'zero force source', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '3'}], 'parameters': []}, {'index': 19, 'alias': 'mass_friction_endstops_15', 'component_name': 'mass_friction_endstops', 'library_id': 'meca.mass_friction_endstops', 'submodel': 'MECMAS21', 'label': '1D translation mass', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '3'}, {'name': 'port_2', 'type': 'lshaft', 'face': '2'}], 'parameters': [{'name': 'mass', 'title': 'mass', 'value': '5.00000000000000e+01', 'units': 'kg'}, {'name': 'fstick', 'title': 'stiction force', 'value': '0.00000000000000e+00', 'units': 'N'}, {'name': 'fcoul', 'title': 'Coulomb friction force', 'value': '0.00000000000000e+00', 'units': 'N'}, {'name': 'rvisc', 'title': 'coefficient of viscous friction', 'value': '0.00000000000000e+00', 'units': 'N/(m/s)'}, {'name': 'wind', 'title': 'coefficient of windage', 'value': '0.00000000000000e+00', 'units': 'N/(m/s)**2'}, {'name': 'dvel', 'title': 'stick velocity threshold', 'value': '1.00000000000000e-06', 'units': 'm/s'}, {'name': 'restdvel', 'title': 'velocity threshold', 'value': '1.00000000000000e-06', 'units': 'm/s'}, {'name': 'restcoeff', 'title': 'restitution coefficient', 'value': '6.50000000000000e-01', 'units': 'null'}, {'name': 'astrib', 'title': 'Stribeck constant', 'value': '1.00000000000000e-03', 'units': 'm/s'}, {'name': 'xmin', 'title': 'lower displacement limit', 'value': '-1.00000000000000e+00', 'units': 'm'}, {'name': 'Kbmin', 'title': 'lower limit stiffness', 'value': '1.00000000000000e+06', 'units': 'N/mm'}, {'name': 'Dbmin', 'title': 'lower limit contact damping coefficient', 'value': '1.00000000000000e+01', 'units': 'N/(mm/s)'}, {'name': 'Pdmin', 'title': 'lower limit penetration for full damping', 'value': '1.00000000000000e-01', 'units': 'mm'}, {'name': 'xmax', 'title': 'higher displacement limit', 'value': '8.00000000000000e-01', 'units': 'm'}, {'name': 'Kbmax', 'title': 'higher limit stiffness', 'value': '1.00000000000000e+06', 'units': 'N/mm'}, {'name': 'Dbmax', 'title': 'higher limit contact damping coefficient', 'value': '1.00000000000000e+01', 'units': 'N/(mm/s)'}, {'name': 'Pdmax', 'title': 'higher limit penetration for full damping', 'value': '1.00000000000000e-01', 'units': 'mm'}, {'name': 'theta', 'title': 'inclination (+90 port 1 lowest, -90 port 1 highest)', 'value': '0.00000000000000e+00', 'units': 'degree'}, {'name': 'useFriction', 'title': 'use friction', 'value': '1', 'units': ''}, {'name': 'stoptype', 'title': 'endstop type', 'value': '4', 'units': ''}, {'name': 'discContactOption', 'title': 'negative contact force', 'value': '1', 'units': ''}, {'name': 'strib', 'title': 'Stribeck effect', 'value': '1', 'units': ''}, {'name': 'frictionType', 'title': 'friction type', 'value': '1', 'units': ''}]}, {'index': 20, 'alias': 'zeroforcesource_23', 'component_name': 'zeroforcesource', 'library_id': 'meca.zeroforcesource', 'submodel': 'F000', 'label': 'zero force source', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '3'}], 'parameters': []}, {'index': 21, 'alias': 'mass_friction_endstops_16', 'component_name': 'mass_friction_endstops', 'library_id': 'meca.mass_friction_endstops', 'submodel': 'MECMAS21', 'label': '1D translation mass', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '3'}, {'name': 'port_2', 'type': 'lshaft', 'face': '2'}], 'parameters': [{'name': 'mass', 'title': 'mass', 'value': '5.00000000000000e+01', 'units': 'kg'}, {'name': 'fstick', 'title': 'stiction force', 'value': '0.00000000000000e+00', 'units': 'N'}, {'name': 'fcoul', 'title': 'Coulomb friction force', 'value': '0.00000000000000e+00', 'units': 'N'}, {'name': 'rvisc', 'title': 'coefficient of viscous friction', 'value': '0.00000000000000e+00', 'units': 'N/(m/s)'}, {'name': 'wind', 'title': 'coefficient of windage', 'value': '0.00000000000000e+00', 'units': 'N/(m/s)**2'}, {'name': 'dvel', 'title': 'stick velocity threshold', 'value': '1.00000000000000e-06', 'units': 'm/s'}, {'name': 'restdvel', 'title': 'velocity threshold', 'value': '1.00000000000000e-06', 'units': 'm/s'}, {'name': 'restcoeff', 'title': 'restitution coefficient', 'value': '6.50000000000000e-01', 'units': 'null'}, {'name': 'astrib', 'title': 'Stribeck constant', 'value': '1.00000000000000e-03', 'units': 'm/s'}, {'name': 'xmin', 'title': 'lower displacement limit', 'value': '-1.00000000000000e+00', 'units': 'm'}, {'name': 'Kbmin', 'title': 'lower limit stiffness', 'value': '1.00000000000000e+06', 'units': 'N/mm'}, {'name': 'Dbmin', 'title': 'lower limit contact damping coefficient', 'value': '1.00000000000000e+01', 'units': 'N/(mm/s)'}, {'name': 'Pdmin', 'title': 'lower limit penetration for full damping', 'value': '1.00000000000000e-01', 'units': 'mm'}, {'name': 'xmax', 'title': 'higher displacement limit', 'value': '8.00000000000000e-01', 'units': 'm'}, {'name': 'Kbmax', 'title': 'higher limit stiffness', 'value': '1.00000000000000e+06', 'units': 'N/mm'}, {'name': 'Dbmax', 'title': 'higher limit contact damping coefficient', 'value': '1.00000000000000e+01', 'units': 'N/(mm/s)'}, {'name': 'Pdmax', 'title': 'higher limit penetration for full damping', 'value': '1.00000000000000e-01', 'units': 'mm'}, {'name': 'theta', 'title': 'inclination (+90 port 1 lowest, -90 port 1 highest)', 'value': '0.00000000000000e+00', 'units': 'degree'}, {'name': 'useFriction', 'title': 'use friction', 'value': '1', 'units': ''}, {'name': 'stoptype', 'title': 'endstop type', 'value': '4', 'units': ''}, {'name': 'discContactOption', 'title': 'negative contact force', 'value': '1', 'units': ''}, {'name': 'strib', 'title': 'Stribeck effect', 'value': '1', 'units': ''}, {'name': 'frictionType', 'title': 'friction type', 'value': '1', 'units': ''}]}, {'index': 22, 'alias': 'zeroforcesource_24', 'component_name': 'zeroforcesource', 'library_id': 'meca.zeroforcesource', 'submodel': 'F000', 'label': 'zero force source', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '3'}], 'parameters': []}, {'index': 23, 'alias': 'mass_friction_endstops_17', 'component_name': 'mass_friction_endstops', 'library_id': 'meca.mass_friction_endstops', 'submodel': 'MECMAS21', 'label': '1D translation mass', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '3'}, {'name': 'port_2', 'type': 'lshaft', 'face': '2'}], 'parameters': [{'name': 'mass', 'title': 'mass', 'value': '5.00000000000000e+01', 'units': 'kg'}, {'name': 'fstick', 'title': 'stiction force', 'value': '0.00000000000000e+00', 'units': 'N'}, {'name': 'fcoul', 'title': 'Coulomb friction force', 'value': '0.00000000000000e+00', 'units': 'N'}, {'name': 'rvisc', 'title': 'coefficient of viscous friction', 'value': '0.00000000000000e+00', 'units': 'N/(m/s)'}, {'name': 'wind', 'title': 'coefficient of windage', 'value': '0.00000000000000e+00', 'units': 'N/(m/s)**2'}, {'name': 'dvel', 'title': 'stick velocity threshold', 'value': '1.00000000000000e-06', 'units': 'm/s'}, {'name': 'restdvel', 'title': 'velocity threshold', 'value': '1.00000000000000e-06', 'units': 'm/s'}, {'name': 'restcoeff', 'title': 'restitution coefficient', 'value': '6.50000000000000e-01', 'units': 'null'}, {'name': 'astrib', 'title': 'Stribeck constant', 'value': '1.00000000000000e-03', 'units': 'm/s'}, {'name': 'xmin', 'title': 'lower displacement limit', 'value': '-1.00000000000000e+00', 'units': 'm'}, {'name': 'Kbmin', 'title': 'lower limit stiffness', 'value': '1.00000000000000e+06', 'units': 'N/mm'}, {'name': 'Dbmin', 'title': 'lower limit contact damping coefficient', 'value': '1.00000000000000e+01', 'units': 'N/(mm/s)'}, {'name': 'Pdmin', 'title': 'lower limit penetration for full damping', 'value': '1.00000000000000e-01', 'units': 'mm'}, {'name': 'xmax', 'title': 'higher displacement limit', 'value': '8.00000000000000e-01', 'units': 'm'}, {'name': 'Kbmax', 'title': 'higher limit stiffness', 'value': '1.00000000000000e+06', 'units': 'N/mm'}, {'name': 'Dbmax', 'title': 'higher limit contact damping coefficient', 'value': '1.00000000000000e+01', 'units': 'N/(mm/s)'}, {'name': 'Pdmax', 'title': 'higher limit penetration for full damping', 'value': '1.00000000000000e-01', 'units': 'mm'}, {'name': 'theta', 'title': 'inclination (+90 port 1 lowest, -90 port 1 highest)', 'value': '0.00000000000000e+00', 'units': 'degree'}, {'name': 'useFriction', 'title': 'use friction', 'value': '1', 'units': ''}, {'name': 'stoptype', 'title': 'endstop type', 'value': '4', 'units': ''}, {'name': 'discContactOption', 'title': 'negative contact force', 'value': '1', 'units': ''}, {'name': 'strib', 'title': 'Stribeck effect', 'value': '1', 'units': ''}, {'name': 'frictionType', 'title': 'friction type', 'value': '1', 'units': ''}]}, {'index': 24, 'alias': 'dynamic_mechanical_node_alternative_2', 'component_name': 'dynamic_mechanical_node_alternative', 'library_id': 'meca.dynamic_mechanical_node_alternative', 'submodel': 'LMECHN1', 'label': 'dynamic linear mechanical node (velocity and displacement)', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '2'}, {'name': 'port_2', 'type': 'lshaft', 'face': '2'}, {'name': 'port_3', 'type': 'lshaft', 'face': '2'}, {'name': 'port_4', 'type': 'lshaft', 'face': '2'}, {'name': 'port_5', 'type': 'lshaft', 'face': '2'}, {'name': 'port_6', 'type': 'lshaft', 'face': '2'}, {'name': 'port_7', 'type': 'lshaft', 'face': '2'}, {'name': 'port_8', 'type': 'lshaft', 'face': '2'}, {'name': 'port_9', 'type': 'lshaft', 'face': '3'}], 'parameters': [{'name': 'v1', 'title': 'number of ports at right', 'value': '8', 'units': ''}, {'name': 'sum', 'title': 'node sum', 'value': '1', 'units': ''}]}, {'index': 25, 'alias': 'mass_friction_endstops_18', 'component_name': 'mass_friction_endstops', 'library_id': 'meca.mass_friction_endstops', 'submodel': 'MECMAS21', 'label': '1D translation mass', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '3'}, {'name': 'port_2', 'type': 'lshaft', 'face': '2'}], 'parameters': [{'name': 'mass', 'title': 'mass', 'value': '1.70000000000000e+05', 'units': 'kg'}, {'name': 'fstick', 'title': 'stiction force', 'value': '0.00000000000000e+00', 'units': 'N'}, {'name': 'fcoul', 'title': 'Coulomb friction force', 'value': '0.00000000000000e+00', 'units': 'N'}, {'name': 'rvisc', 'title': 'coefficient of viscous friction', 'value': '0.00000000000000e+00', 'units': 'N/(m/s)'}, {'name': 'wind', 'title': 'coefficient of windage', 'value': '0.00000000000000e+00', 'units': 'N/(m/s)**2'}, {'name': 'dvel', 'title': 'stick velocity threshold', 'value': '1.00000000000000e-06', 'units': 'm/s'}, {'name': 'restdvel', 'title': 'velocity threshold', 'value': '1.00000000000000e-06', 'units': 'm/s'}, {'name': 'restcoeff', 'title': 'restitution coefficient', 'value': '6.50000000000000e-01', 'units': 'null'}, {'name': 'astrib', 'title': 'Stribeck constant', 'value': '1.00000000000000e-03', 'units': 'm/s'}, {'name': 'xmin', 'title': 'lower displacement limit', 'value': '0.00000000000000e+00', 'units': 'm'}, {'name': 'Kbmin', 'title': 'lower limit stiffness', 'value': '1.00000000000000e+06', 'units': 'N/mm'}, {'name': 'Dbmin', 'title': 'lower limit contact damping coefficient', 'value': '1.00000000000000e+01', 'units': 'N/(mm/s)'}, {'name': 'Pdmin', 'title': 'lower limit penetration for full damping', 'value': '1.00000000000000e-01', 'units': 'mm'}, {'name': 'xmax', 'title': 'higher displacement limit', 'value': '3.70000000000000e-01', 'units': 'm'}, {'name': 'Kbmax', 'title': 'higher limit stiffness', 'value': '1.00000000000000e+06', 'units': 'N/mm'}, {'name': 'Dbmax', 'title': 'higher limit contact damping coefficient', 'value': '1.00000000000000e+01', 'units': 'N/(mm/s)'}, {'name': 'Pdmax', 'title': 'higher limit penetration for full damping', 'value': '1.00000000000000e-01', 'units': 'mm'}, {'name': 'theta', 'title': 'inclination (+90 port 1 lowest, -90 port 1 highest)', 'value': '0.00000000000000e+00', 'units': 'degree'}, {'name': 'useFriction', 'title': 'use friction', 'value': '1', 'units': ''}, {'name': 'stoptype', 'title': 'endstop type', 'value': '1', 'units': ''}, {'name': 'discContactOption', 'title': 'negative contact force', 'value': '1', 'units': ''}, {'name': 'strib', 'title': 'Stribeck effect', 'value': '1', 'units': ''}, {'name': 'frictionType', 'title': 'friction type', 'value': '1', 'units': ''}]}, {'index': 26, 'alias': 'elasticendstop_8', 'component_name': 'elasticendstop', 'library_id': 'meca.elasticendstop', 'submodel': 'LSTP00A', 'label': 'elastic contact (no states)', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '2'}, {'name': 'port_2', 'type': 'lshaft', 'face': '3'}], 'parameters': [{'name': 'na', 'title': 'number of active coils', 'value': '1.00000000000000e+01', 'units': 'null'}, {'name': 'gap0', 'title': 'gap or clearance with both displacements zero', 'value': '0.00000000000000e+00', 'units': 'mm'}, {'name': 'kcont', 'title': 'contact stiffness', 'value': '1.00000000000000e+11', 'units': 'N/m'}, {'name': 'G', 'title': 'material shear modulus', 'value': '8.57000000000000e+10', 'units': 'N/m**2'}, {'name': 'sdiam', 'title': 'spring diameter', 'value': '2.00000000000000e+01', 'units': 'mm'}, {'name': 'wdiam', 'title': 'wire diameter', 'value': '2.00000000000000e+00', 'units': 'mm'}, {'name': 'rcont', 'title': 'contact damping', 'value': '1.00000000000000e+11', 'units': 'N/(m/s)'}, {'name': 'Pdis', 'title': 'penetration for full damping', 'value': '1.00000000000000e-04', 'units': 'mm'}, {'name': 'stiffmode', 'title': 'spring stiffness mode', 'value': '1', 'units': ''}, {'name': 'discContactOption', 'title': 'negative contact force', 'value': '1', 'units': ''}]}, {'index': 27, 'alias': 'elasticendstop_9', 'component_name': 'elasticendstop', 'library_id': 'meca.elasticendstop', 'submodel': 'LSTP00A', 'label': 'elastic contact (no states)', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '2'}, {'name': 'port_2', 'type': 'lshaft', 'face': '3'}], 'parameters': [{'name': 'na', 'title': 'number of active coils', 'value': '1.00000000000000e+01', 'units': 'null'}, {'name': 'gap0', 'title': 'gap or clearance with both displacements zero', 'value': '0.00000000000000e+00', 'units': 'mm'}, {'name': 'kcont', 'title': 'contact stiffness', 'value': '1.00000000000000e+11', 'units': 'N/m'}, {'name': 'G', 'title': 'material shear modulus', 'value': '8.57000000000000e+10', 'units': 'N/m**2'}, {'name': 'sdiam', 'title': 'spring diameter', 'value': '2.00000000000000e+01', 'units': 'mm'}, {'name': 'wdiam', 'title': 'wire diameter', 'value': '2.00000000000000e+00', 'units': 'mm'}, {'name': 'rcont', 'title': 'contact damping', 'value': '1.00000000000000e+11', 'units': 'N/(m/s)'}, {'name': 'Pdis', 'title': 'penetration for full damping', 'value': '1.00000000000000e-04', 'units': 'mm'}, {'name': 'stiffmode', 'title': 'spring stiffness mode', 'value': '1', 'units': ''}, {'name': 'discContactOption', 'title': 'negative contact force', 'value': '1', 'units': ''}]}, {'index': 28, 'alias': 'elasticendstop_10', 'component_name': 'elasticendstop', 'library_id': 'meca.elasticendstop', 'submodel': 'LSTP00A', 'label': 'elastic contact (no states)', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '2'}, {'name': 'port_2', 'type': 'lshaft', 'face': '3'}], 'parameters': [{'name': 'na', 'title': 'number of active coils', 'value': '1.00000000000000e+01', 'units': 'null'}, {'name': 'gap0', 'title': 'gap or clearance with both displacements zero', 'value': '0.00000000000000e+00', 'units': 'mm'}, {'name': 'kcont', 'title': 'contact stiffness', 'value': '1.00000000000000e+11', 'units': 'N/m'}, {'name': 'G', 'title': 'material shear modulus', 'value': '8.57000000000000e+10', 'units': 'N/m**2'}, {'name': 'sdiam', 'title': 'spring diameter', 'value': '2.00000000000000e+01', 'units': 'mm'}, {'name': 'wdiam', 'title': 'wire diameter', 'value': '2.00000000000000e+00', 'units': 'mm'}, {'name': 'rcont', 'title': 'contact damping', 'value': '1.00000000000000e+11', 'units': 'N/(m/s)'}, {'name': 'Pdis', 'title': 'penetration for full damping', 'value': '1.00000000000000e-04', 'units': 'mm'}, {'name': 'stiffmode', 'title': 'spring stiffness mode', 'value': '1', 'units': ''}, {'name': 'discContactOption', 'title': 'negative contact force', 'value': '1', 'units': ''}]}, {'index': 29, 'alias': 'elasticendstop_11', 'component_name': 'elasticendstop', 'library_id': 'meca.elasticendstop', 'submodel': 'LSTP00A', 'label': 'elastic contact (no states)', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '2'}, {'name': 'port_2', 'type': 'lshaft', 'face': '3'}], 'parameters': [{'name': 'na', 'title': 'number of active coils', 'value': '1.00000000000000e+01', 'units': 'null'}, {'name': 'gap0', 'title': 'gap or clearance with both displacements zero', 'value': '0.00000000000000e+00', 'units': 'mm'}, {'name': 'kcont', 'title': 'contact stiffness', 'value': '1.00000000000000e+11', 'units': 'N/m'}, {'name': 'G', 'title': 'material shear modulus', 'value': '8.57000000000000e+10', 'units': 'N/m**2'}, {'name': 'sdiam', 'title': 'spring diameter', 'value': '2.00000000000000e+01', 'units': 'mm'}, {'name': 'wdiam', 'title': 'wire diameter', 'value': '2.00000000000000e+00', 'units': 'mm'}, {'name': 'rcont', 'title': 'contact damping', 'value': '1.00000000000000e+11', 'units': 'N/(m/s)'}, {'name': 'Pdis', 'title': 'penetration for full damping', 'value': '1.00000000000000e-04', 'units': 'mm'}, {'name': 'stiffmode', 'title': 'spring stiffness mode', 'value': '1', 'units': ''}, {'name': 'discContactOption', 'title': 'negative contact force', 'value': '1', 'units': ''}]}, {'index': 30, 'alias': 'elasticendstop_12', 'component_name': 'elasticendstop', 'library_id': 'meca.elasticendstop', 'submodel': 'LSTP00A', 'label': 'elastic contact (no states)', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '2'}, {'name': 'port_2', 'type': 'lshaft', 'face': '3'}], 'parameters': [{'name': 'na', 'title': 'number of active coils', 'value': '1.00000000000000e+01', 'units': 'null'}, {'name': 'gap0', 'title': 'gap or clearance with both displacements zero', 'value': '0.00000000000000e+00', 'units': 'mm'}, {'name': 'kcont', 'title': 'contact stiffness', 'value': '1.00000000000000e+11', 'units': 'N/m'}, {'name': 'G', 'title': 'material shear modulus', 'value': '8.57000000000000e+10', 'units': 'N/m**2'}, {'name': 'sdiam', 'title': 'spring diameter', 'value': '2.00000000000000e+01', 'units': 'mm'}, {'name': 'wdiam', 'title': 'wire diameter', 'value': '2.00000000000000e+00', 'units': 'mm'}, {'name': 'rcont', 'title': 'contact damping', 'value': '1.00000000000000e+11', 'units': 'N/(m/s)'}, {'name': 'Pdis', 'title': 'penetration for full damping', 'value': '1.00000000000000e-04', 'units': 'mm'}, {'name': 'stiffmode', 'title': 'spring stiffness mode', 'value': '1', 'units': ''}, {'name': 'discContactOption', 'title': 'negative contact force', 'value': '1', 'units': ''}]}, {'index': 31, 'alias': 'elasticendstop_13', 'component_name': 'elasticendstop', 'library_id': 'meca.elasticendstop', 'submodel': 'LSTP00A', 'label': 'elastic contact (no states)', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '2'}, {'name': 'port_2', 'type': 'lshaft', 'face': '3'}], 'parameters': [{'name': 'na', 'title': 'number of active coils', 'value': '1.00000000000000e+01', 'units': 'null'}, {'name': 'gap0', 'title': 'gap or clearance with both displacements zero', 'value': '0.00000000000000e+00', 'units': 'mm'}, {'name': 'kcont', 'title': 'contact stiffness', 'value': '1.00000000000000e+11', 'units': 'N/m'}, {'name': 'G', 'title': 'material shear modulus', 'value': '8.57000000000000e+10', 'units': 'N/m**2'}, {'name': 'sdiam', 'title': 'spring diameter', 'value': '2.00000000000000e+01', 'units': 'mm'}, {'name': 'wdiam', 'title': 'wire diameter', 'value': '2.00000000000000e+00', 'units': 'mm'}, {'name': 'rcont', 'title': 'contact damping', 'value': '1.00000000000000e+11', 'units': 'N/(m/s)'}, {'name': 'Pdis', 'title': 'penetration for full damping', 'value': '1.00000000000000e-04', 'units': 'mm'}, {'name': 'stiffmode', 'title': 'spring stiffness mode', 'value': '1', 'units': ''}, {'name': 'discContactOption', 'title': 'negative contact force', 'value': '1', 'units': ''}]}, {'index': 32, 'alias': 'elasticendstop_14', 'component_name': 'elasticendstop', 'library_id': 'meca.elasticendstop', 'submodel': 'LSTP00A', 'label': 'elastic contact (no states)', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '2'}, {'name': 'port_2', 'type': 'lshaft', 'face': '3'}], 'parameters': [{'name': 'na', 'title': 'number of active coils', 'value': '1.00000000000000e+01', 'units': 'null'}, {'name': 'gap0', 'title': 'gap or clearance with both displacements zero', 'value': '0.00000000000000e+00', 'units': 'mm'}, {'name': 'kcont', 'title': 'contact stiffness', 'value': '1.00000000000000e+11', 'units': 'N/m'}, {'name': 'G', 'title': 'material shear modulus', 'value': '8.57000000000000e+10', 'units': 'N/m**2'}, {'name': 'sdiam', 'title': 'spring diameter', 'value': '2.00000000000000e+01', 'units': 'mm'}, {'name': 'wdiam', 'title': 'wire diameter', 'value': '2.00000000000000e+00', 'units': 'mm'}, {'name': 'rcont', 'title': 'contact damping', 'value': '1.00000000000000e+11', 'units': 'N/(m/s)'}, {'name': 'Pdis', 'title': 'penetration for full damping', 'value': '1.00000000000000e-04', 'units': 'mm'}, {'name': 'stiffmode', 'title': 'spring stiffness mode', 'value': '1', 'units': ''}, {'name': 'discContactOption', 'title': 'negative contact force', 'value': '1', 'units': ''}]}, {'index': 33, 'alias': 'elasticendstop_15', 'component_name': 'elasticendstop', 'library_id': 'meca.elasticendstop', 'submodel': 'LSTP00A', 'label': 'elastic contact (no states)', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '2'}, {'name': 'port_2', 'type': 'lshaft', 'face': '3'}], 'parameters': [{'name': 'na', 'title': 'number of active coils', 'value': '1.00000000000000e+01', 'units': 'null'}, {'name': 'gap0', 'title': 'gap or clearance with both displacements zero', 'value': '0.00000000000000e+00', 'units': 'mm'}, {'name': 'kcont', 'title': 'contact stiffness', 'value': '1.00000000000000e+11', 'units': 'N/m'}, {'name': 'G', 'title': 'material shear modulus', 'value': '8.57000000000000e+10', 'units': 'N/m**2'}, {'name': 'sdiam', 'title': 'spring diameter', 'value': '2.00000000000000e+01', 'units': 'mm'}, {'name': 'wdiam', 'title': 'wire diameter', 'value': '2.00000000000000e+00', 'units': 'mm'}, {'name': 'rcont', 'title': 'contact damping', 'value': '1.00000000000000e+11', 'units': 'N/(m/s)'}, {'name': 'Pdis', 'title': 'penetration for full damping', 'value': '1.00000000000000e-04', 'units': 'mm'}, {'name': 'stiffmode', 'title': 'spring stiffness mode', 'value': '1', 'units': ''}, {'name': 'discContactOption', 'title': 'negative contact force', 'value': '1', 'units': ''}]}, {'index': 34, 'alias': 'dynamic_mechanical_node_alternative_3', 'component_name': 'dynamic_mechanical_node_alternative', 'library_id': 'meca.dynamic_mechanical_node_alternative', 'submodel': 'LMECHN1', 'label': 'dynamic linear mechanical node (velocity and displacement)', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '3'}, {'name': 'port_2', 'type': 'lshaft', 'face': '3'}, {'name': 'port_3', 'type': 'lshaft', 'face': '3'}, {'name': 'port_4', 'type': 'lshaft', 'face': '3'}, {'name': 'port_5', 'type': 'lshaft', 'face': '3'}, {'name': 'port_6', 'type': 'lshaft', 'face': '3'}, {'name': 'port_7', 'type': 'lshaft', 'face': '3'}, {'name': 'port_8', 'type': 'lshaft', 'face': '3'}, {'name': 'port_9', 'type': 'lshaft', 'face': '2'}], 'parameters': [{'name': 'v1', 'title': 'number of ports at right', 'value': '8', 'units': ''}, {'name': 'sum', 'title': 'node sum', 'value': '1', 'units': ''}]}, {'index': 35, 'alias': 'mass_friction_endstops_19', 'component_name': 'mass_friction_endstops', 'library_id': 'meca.mass_friction_endstops', 'submodel': 'MECMAS21', 'label': '1D translation mass', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '3'}, {'name': 'port_2', 'type': 'lshaft', 'face': '2'}], 'parameters': [{'name': 'mass', 'title': 'mass', 'value': '9.00000000000000e+04', 'units': 'kg'}, {'name': 'fstick', 'title': 'stiction force', 'value': '0.00000000000000e+00', 'units': 'N'}, {'name': 'fcoul', 'title': 'Coulomb friction force', 'value': '0.00000000000000e+00', 'units': 'N'}, {'name': 'rvisc', 'title': 'coefficient of viscous friction', 'value': '0.00000000000000e+00', 'units': 'N/(m/s)'}, {'name': 'wind', 'title': 'coefficient of windage', 'value': '0.00000000000000e+00', 'units': 'N/(m/s)**2'}, {'name': 'dvel', 'title': 'stick velocity threshold', 'value': '1.00000000000000e-06', 'units': 'm/s'}, {'name': 'restdvel', 'title': 'velocity threshold', 'value': '1.00000000000000e-06', 'units': 'm/s'}, {'name': 'restcoeff', 'title': 'restitution coefficient', 'value': '6.50000000000000e-01', 'units': 'null'}, {'name': 'astrib', 'title': 'Stribeck constant', 'value': '1.00000000000000e-03', 'units': 'm/s'}, {'name': 'xmin', 'title': 'lower displacement limit', 'value': '-7.20000000000000e-01', 'units': 'm'}, {'name': 'Kbmin', 'title': 'lower limit stiffness', 'value': '1.00000000000000e+06', 'units': 'N/mm'}, {'name': 'Dbmin', 'title': 'lower limit contact damping coefficient', 'value': '1.00000000000000e+01', 'units': 'N/(mm/s)'}, {'name': 'Pdmin', 'title': 'lower limit penetration for full damping', 'value': '1.00000000000000e-01', 'units': 'mm'}, {'name': 'xmax', 'title': 'higher displacement limit', 'value': '0.00000000000000e+00', 'units': 'm'}, {'name': 'Kbmax', 'title': 'higher limit stiffness', 'value': '1.00000000000000e+06', 'units': 'N/mm'}, {'name': 'Dbmax', 'title': 'higher limit contact damping coefficient', 'value': '1.00000000000000e+01', 'units': 'N/(mm/s)'}, {'name': 'Pdmax', 'title': 'higher limit penetration for full damping', 'value': '1.00000000000000e-01', 'units': 'mm'}, {'name': 'theta', 'title': 'inclination (+90 port 1 lowest, -90 port 1 highest)', 'value': '0.00000000000000e+00', 'units': 'degree'}, {'name': 'useFriction', 'title': 'use friction', 'value': '1', 'units': ''}, {'name': 'stoptype', 'title': 'endstop type', 'value': '1', 'units': ''}, {'name': 'discContactOption', 'title': 'negative contact force', 'value': '1', 'units': ''}, {'name': 'strib', 'title': 'Stribeck effect', 'value': '1', 'units': ''}, {'name': 'frictionType', 'title': 'friction type', 'value': '1', 'units': ''}]}, {'index': 36, 'alias': 'pn_c1_8', 'component_name': 'pn_c1', 'library_id': 'pcd.pn_c1', 'submodel': 'PNCH012', 'label': 'variable volume pneumatic chamber with heat exchange (preferred)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '2'}, {'name': 'port_2', 'type': 'pflow', 'face': '1'}, {'name': 'port_3', 'type': 'pflow', 'face': '3'}, {'name': 'port_4', 'type': 'pflow', 'face': '0'}], 'parameters': [{'name': 'cvol0', 'title': 'dead volume', 'value': 'V', 'units': 'L'}, {'name': 'kth', 'title': 'thermal exchange coefficient', 'value': '1.50000000000000e+03', 'units': 'J/m**2/K/s'}, {'name': 'sth', 'title': 'thermal exchange area', 'value': '7.00000000000000e-01', 'units': 'm**2'}, {'name': 'extemp', 'title': 'external temperature', 'value': '2.93150000000000e+02', 'units': 'K'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}]}, {'index': 37, 'alias': 'pn_plug_16', 'component_name': 'pn_plug', 'library_id': 'pn.pn_plug', 'submodel': 'PNPL01', 'label': 'zero pneumatic flow source', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}], 'parameters': []}, {'index': 38, 'alias': 'pn_plug_17', 'component_name': 'pn_plug', 'library_id': 'pn.pn_plug', 'submodel': 'PNPL01', 'label': 'zero pneumatic flow source', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '0'}], 'parameters': []}, {'index': 39, 'alias': 'pn_c1_9', 'component_name': 'pn_c1', 'library_id': 'pcd.pn_c1', 'submodel': 'PNCH012', 'label': 'variable volume pneumatic chamber with heat exchange (preferred)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '2'}, {'name': 'port_2', 'type': 'pflow', 'face': '1'}, {'name': 'port_3', 'type': 'pflow', 'face': '3'}, {'name': 'port_4', 'type': 'pflow', 'face': '0'}], 'parameters': [{'name': 'cvol0', 'title': 'dead volume', 'value': 'V', 'units': 'L'}, {'name': 'kth', 'title': 'thermal exchange coefficient', 'value': '1.50000000000000e+03', 'units': 'J/m**2/K/s'}, {'name': 'sth', 'title': 'thermal exchange area', 'value': '7.00000000000000e-01', 'units': 'm**2'}, {'name': 'extemp', 'title': 'external temperature', 'value': '2.93150000000000e+02', 'units': 'K'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}]}, {'index': 40, 'alias': 'pn_plug_18', 'component_name': 'pn_plug', 'library_id': 'pn.pn_plug', 'submodel': 'PNPL01', 'label': 'zero pneumatic flow source', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}], 'parameters': []}, {'index': 41, 'alias': 'pn_plug_19', 'component_name': 'pn_plug', 'library_id': 'pn.pn_plug', 'submodel': 'PNPL01', 'label': 'zero pneumatic flow source', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '0'}], 'parameters': []}, {'index': 42, 'alias': 'pn_c1_10', 'component_name': 'pn_c1', 'library_id': 'pcd.pn_c1', 'submodel': 'PNCH012', 'label': 'variable volume pneumatic chamber with heat exchange (preferred)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '2'}, {'name': 'port_2', 'type': 'pflow', 'face': '1'}, {'name': 'port_3', 'type': 'pflow', 'face': '3'}, {'name': 'port_4', 'type': 'pflow', 'face': '0'}], 'parameters': [{'name': 'cvol0', 'title': 'dead volume', 'value': 'V', 'units': 'L'}, {'name': 'kth', 'title': 'thermal exchange coefficient', 'value': '1.50000000000000e+03', 'units': 'J/m**2/K/s'}, {'name': 'sth', 'title': 'thermal exchange area', 'value': '7.00000000000000e-01', 'units': 'm**2'}, {'name': 'extemp', 'title': 'external temperature', 'value': '2.93150000000000e+02', 'units': 'K'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}]}, {'index': 43, 'alias': 'pn_plug_20', 'component_name': 'pn_plug', 'library_id': 'pn.pn_plug', 'submodel': 'PNPL01', 'label': 'zero pneumatic flow source', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}], 'parameters': []}, {'index': 44, 'alias': 'pn_plug_21', 'component_name': 'pn_plug', 'library_id': 'pn.pn_plug', 'submodel': 'PNPL01', 'label': 'zero pneumatic flow source', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '0'}], 'parameters': []}, {'index': 45, 'alias': 'pn_c1_11', 'component_name': 'pn_c1', 'library_id': 'pcd.pn_c1', 'submodel': 'PNCH012', 'label': 'variable volume pneumatic chamber with heat exchange (preferred)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '2'}, {'name': 'port_2', 'type': 'pflow', 'face': '1'}, {'name': 'port_3', 'type': 'pflow', 'face': '3'}, {'name': 'port_4', 'type': 'pflow', 'face': '0'}], 'parameters': [{'name': 'cvol0', 'title': 'dead volume', 'value': 'V', 'units': 'L'}, {'name': 'kth', 'title': 'thermal exchange coefficient', 'value': '1.50000000000000e+03', 'units': 'J/m**2/K/s'}, {'name': 'sth', 'title': 'thermal exchange area', 'value': '7.00000000000000e-01', 'units': 'm**2'}, {'name': 'extemp', 'title': 'external temperature', 'value': '2.93150000000000e+02', 'units': 'K'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}]}, {'index': 46, 'alias': 'pn_plug_22', 'component_name': 'pn_plug', 'library_id': 'pn.pn_plug', 'submodel': 'PNPL01', 'label': 'zero pneumatic flow source', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}], 'parameters': []}, {'index': 47, 'alias': 'pn_plug_23', 'component_name': 'pn_plug', 'library_id': 'pn.pn_plug', 'submodel': 'PNPL01', 'label': 'zero pneumatic flow source', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '0'}], 'parameters': []}, {'index': 48, 'alias': 'pn_c1_12', 'component_name': 'pn_c1', 'library_id': 'pcd.pn_c1', 'submodel': 'PNCH012', 'label': 'variable volume pneumatic chamber with heat exchange (preferred)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '2'}, {'name': 'port_2', 'type': 'pflow', 'face': '1'}, {'name': 'port_3', 'type': 'pflow', 'face': '3'}, {'name': 'port_4', 'type': 'pflow', 'face': '0'}], 'parameters': [{'name': 'cvol0', 'title': 'dead volume', 'value': 'V', 'units': 'L'}, {'name': 'kth', 'title': 'thermal exchange coefficient', 'value': '1.50000000000000e+03', 'units': 'J/m**2/K/s'}, {'name': 'sth', 'title': 'thermal exchange area', 'value': '7.00000000000000e-01', 'units': 'm**2'}, {'name': 'extemp', 'title': 'external temperature', 'value': '2.93150000000000e+02', 'units': 'K'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}]}, {'index': 49, 'alias': 'pn_plug_24', 'component_name': 'pn_plug', 'library_id': 'pn.pn_plug', 'submodel': 'PNPL01', 'label': 'zero pneumatic flow source', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}], 'parameters': []}, {'index': 50, 'alias': 'pn_plug_25', 'component_name': 'pn_plug', 'library_id': 'pn.pn_plug', 'submodel': 'PNPL01', 'label': 'zero pneumatic flow source', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '0'}], 'parameters': []}, {'index': 51, 'alias': 'pn_c1_13', 'component_name': 'pn_c1', 'library_id': 'pcd.pn_c1', 'submodel': 'PNCH012', 'label': 'variable volume pneumatic chamber with heat exchange (preferred)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '2'}, {'name': 'port_2', 'type': 'pflow', 'face': '1'}, {'name': 'port_3', 'type': 'pflow', 'face': '3'}, {'name': 'port_4', 'type': 'pflow', 'face': '0'}], 'parameters': [{'name': 'cvol0', 'title': 'dead volume', 'value': 'V', 'units': 'L'}, {'name': 'kth', 'title': 'thermal exchange coefficient', 'value': '1.50000000000000e+03', 'units': 'J/m**2/K/s'}, {'name': 'sth', 'title': 'thermal exchange area', 'value': '7.00000000000000e-01', 'units': 'm**2'}, {'name': 'extemp', 'title': 'external temperature', 'value': '2.93150000000000e+02', 'units': 'K'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}]}, {'index': 52, 'alias': 'pn_plug_26', 'component_name': 'pn_plug', 'library_id': 'pn.pn_plug', 'submodel': 'PNPL01', 'label': 'zero pneumatic flow source', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}], 'parameters': []}, {'index': 53, 'alias': 'pn_plug_27', 'component_name': 'pn_plug', 'library_id': 'pn.pn_plug', 'submodel': 'PNPL01', 'label': 'zero pneumatic flow source', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '0'}], 'parameters': []}, {'index': 54, 'alias': 'pn_c1_14', 'component_name': 'pn_c1', 'library_id': 'pcd.pn_c1', 'submodel': 'PNCH012', 'label': 'variable volume pneumatic chamber with heat exchange (preferred)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '2'}, {'name': 'port_2', 'type': 'pflow', 'face': '1'}, {'name': 'port_3', 'type': 'pflow', 'face': '3'}, {'name': 'port_4', 'type': 'pflow', 'face': '0'}], 'parameters': [{'name': 'cvol0', 'title': 'dead volume', 'value': 'V', 'units': 'L'}, {'name': 'kth', 'title': 'thermal exchange coefficient', 'value': '1.50000000000000e+03', 'units': 'J/m**2/K/s'}, {'name': 'sth', 'title': 'thermal exchange area', 'value': '7.00000000000000e-01', 'units': 'm**2'}, {'name': 'extemp', 'title': 'external temperature', 'value': '2.93150000000000e+02', 'units': 'K'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}]}, {'index': 55, 'alias': 'pn_plug_28', 'component_name': 'pn_plug', 'library_id': 'pn.pn_plug', 'submodel': 'PNPL01', 'label': 'zero pneumatic flow source', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}], 'parameters': []}, {'index': 56, 'alias': 'pn_plug_29', 'component_name': 'pn_plug', 'library_id': 'pn.pn_plug', 'submodel': 'PNPL01', 'label': 'zero pneumatic flow source', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '0'}], 'parameters': []}, {'index': 57, 'alias': 'pn_c1_15', 'component_name': 'pn_c1', 'library_id': 'pcd.pn_c1', 'submodel': 'PNCH012', 'label': 'variable volume pneumatic chamber with heat exchange (preferred)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '2'}, {'name': 'port_2', 'type': 'pflow', 'face': '1'}, {'name': 'port_3', 'type': 'pflow', 'face': '3'}, {'name': 'port_4', 'type': 'pflow', 'face': '0'}], 'parameters': [{'name': 'cvol0', 'title': 'dead volume', 'value': 'V', 'units': 'L'}, {'name': 'kth', 'title': 'thermal exchange coefficient', 'value': '1.50000000000000e+03', 'units': 'J/m**2/K/s'}, {'name': 'sth', 'title': 'thermal exchange area', 'value': '7.00000000000000e-01', 'units': 'm**2'}, {'name': 'extemp', 'title': 'external temperature', 'value': '2.93150000000000e+02', 'units': 'K'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}]}, {'index': 58, 'alias': 'pn_plug_30', 'component_name': 'pn_plug', 'library_id': 'pn.pn_plug', 'submodel': 'PNPL01', 'label': 'zero pneumatic flow source', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}], 'parameters': []}, {'index': 59, 'alias': 'pn_plug_31', 'component_name': 'pn_plug', 'library_id': 'pn.pn_plug', 'submodel': 'PNPL01', 'label': 'zero pneumatic flow source', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '0'}], 'parameters': []}, {'index': 60, 'alias': 'zeroforcesource_26', 'component_name': 'zeroforcesource', 'library_id': 'meca.zeroforcesource', 'submodel': 'F000', 'label': 'zero force source', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '2'}], 'parameters': []}, {'index': 61, 'alias': 'zeroforcesource_27', 'component_name': 'zeroforcesource', 'library_id': 'meca.zeroforcesource', 'submodel': 'F000', 'label': 'zero force source', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '2'}], 'parameters': []}, {'index': 62, 'alias': 'zeroforcesource_28', 'component_name': 'zeroforcesource', 'library_id': 'meca.zeroforcesource', 'submodel': 'F000', 'label': 'zero force source', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '2'}], 'parameters': []}, {'index': 63, 'alias': 'zeroforcesource_29', 'component_name': 'zeroforcesource', 'library_id': 'meca.zeroforcesource', 'submodel': 'F000', 'label': 'zero force source', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '2'}], 'parameters': []}, {'index': 64, 'alias': 'zeroforcesource_30', 'component_name': 'zeroforcesource', 'library_id': 'meca.zeroforcesource', 'submodel': 'F000', 'label': 'zero force source', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '2'}], 'parameters': []}, {'index': 65, 'alias': 'zeroforcesource_31', 'component_name': 'zeroforcesource', 'library_id': 'meca.zeroforcesource', 'submodel': 'F000', 'label': 'zero force source', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '2'}], 'parameters': []}, {'index': 66, 'alias': 'zeroforcesource_32', 'component_name': 'zeroforcesource', 'library_id': 'meca.zeroforcesource', 'submodel': 'F000', 'label': 'zero force source', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '2'}], 'parameters': []}, {'index': 67, 'alias': 'zeroforcesource_33', 'component_name': 'zeroforcesource', 'library_id': 'meca.zeroforcesource', 'submodel': 'F000', 'label': 'zero force source', 'ports': [{'name': 'port_1', 'type': 'lshaft', 'face': '2'}], 'parameters': []}, {'index': 68, 'alias': 'forcecon_1', 'component_name': 'forcecon', 'library_id': 'meca.forcecon', 'submodel': 'FORC', 'label': 'conversion of signal input into a force in N', 'ports': [{'name': 'port_1', 'type': 'signal', 'face': '2'}, {'name': 'port_2', 'type': 'lshaft', 'face': '3'}], 'parameters': []}, {'index': 69, 'alias': 'pn_general_chamber', 'component_name': 'pn_general_chamber', 'library_id': 'pn.pn_general_chamber', 'submodel': 'PNCH023', 'label': 'simple pneumatic chamber with heat exchange', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '0'}], 'parameters': [{'name': 'cvol', 'title': 'volume', 'value': '5.70000000000000e+01', 'units': 'L'}, {'name': 'kth', 'title': 'thermal exchange coefficient', 'value': '0.00000000000000e+00', 'units': 'J/m**2/K/s'}, {'name': 'sth', 'title': 'thermal exchange area', 'value': '1.00000000000000e-01', 'units': 'm**2'}, {'name': 'extemp', 'title': 'external temperature', 'value': '2.93150000000000e+02', 'units': 'K'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}]}, {'index': 70, 'alias': 'pn_orifice_18', 'component_name': 'pn_orifice', 'library_id': 'pn.pn_orifice', 'submodel': 'PNOR001', 'label': 'pneumatic orifice (constant flow coefficient)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '0'}], 'parameters': [{'name': 'cq', 'title': 'flow coefficient (Cq)', 'value': '9.00000000000000e-01', 'units': 'null'}, {'name': 'area', 'title': 'orifice area', 'value': '3.14*10^2/4', 'units': 'mm**2'}, {'name': 'Cv', 'title': 'flow coefficient (Cv)', 'value': '5.00000000000000e-01', 'units': 'null'}, {'name': 'Kv', 'title': 'flow coefficient (Kv)', 'value': '4.00000000000000e-01', 'units': 'null'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}, {'name': 'flowset', 'title': 'flow coefficient setting', 'value': '1', 'units': ''}]}, {'index': 71, 'alias': 'pn_orifice_19', 'component_name': 'pn_orifice', 'library_id': 'pn.pn_orifice', 'submodel': 'PNOR001', 'label': 'pneumatic orifice (constant flow coefficient)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '0'}], 'parameters': [{'name': 'cq', 'title': 'flow coefficient (Cq)', 'value': '9.00000000000000e-01', 'units': 'null'}, {'name': 'area', 'title': 'orifice area', 'value': '3.14*10^2/4', 'units': 'mm**2'}, {'name': 'Cv', 'title': 'flow coefficient (Cv)', 'value': '5.00000000000000e-01', 'units': 'null'}, {'name': 'Kv', 'title': 'flow coefficient (Kv)', 'value': '4.00000000000000e-01', 'units': 'null'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}, {'name': 'flowset', 'title': 'flow coefficient setting', 'value': '1', 'units': ''}]}, {'index': 72, 'alias': 'pn_node3_8', 'component_name': 'pn_node3', 'library_id': 'pn.pn_node3', 'submodel': 'PN3NODE2', 'label': 'pneumatic junction 3 ports (temperature and pressure fixed by port 2)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '3'}, {'name': 'port_3', 'type': 'pflow', 'face': '0'}], 'parameters': []}, {'index': 73, 'alias': 'pn_node3_9', 'component_name': 'pn_node3', 'library_id': 'pn.pn_node3', 'submodel': 'PN3NODE2', 'label': 'pneumatic junction 3 ports (temperature and pressure fixed by port 2)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '3'}, {'name': 'port_3', 'type': 'pflow', 'face': '0'}], 'parameters': []}, {'index': 74, 'alias': 'pn_general_chamber_2', 'component_name': 'pn_general_chamber', 'library_id': 'pn.pn_general_chamber', 'submodel': 'PNCH023', 'label': 'simple pneumatic chamber with heat exchange', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '0'}], 'parameters': [{'name': 'cvol', 'title': 'volume', 'value': '5.70000000000000e+01', 'units': 'L'}, {'name': 'kth', 'title': 'thermal exchange coefficient', 'value': '0.00000000000000e+00', 'units': 'J/m**2/K/s'}, {'name': 'sth', 'title': 'thermal exchange area', 'value': '1.00000000000000e-01', 'units': 'm**2'}, {'name': 'extemp', 'title': 'external temperature', 'value': '2.93150000000000e+02', 'units': 'K'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}]}, {'index': 75, 'alias': 'pn_orifice_20', 'component_name': 'pn_orifice', 'library_id': 'pn.pn_orifice', 'submodel': 'PNOR001', 'label': 'pneumatic orifice (constant flow coefficient)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '0'}], 'parameters': [{'name': 'cq', 'title': 'flow coefficient (Cq)', 'value': '9.00000000000000e-01', 'units': 'null'}, {'name': 'area', 'title': 'orifice area', 'value': '3.14*10^2/4', 'units': 'mm**2'}, {'name': 'Cv', 'title': 'flow coefficient (Cv)', 'value': '5.00000000000000e-01', 'units': 'null'}, {'name': 'Kv', 'title': 'flow coefficient (Kv)', 'value': '4.00000000000000e-01', 'units': 'null'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}, {'name': 'flowset', 'title': 'flow coefficient setting', 'value': '1', 'units': ''}]}, {'index': 76, 'alias': 'pn_orifice_21', 'component_name': 'pn_orifice', 'library_id': 'pn.pn_orifice', 'submodel': 'PNOR001', 'label': 'pneumatic orifice (constant flow coefficient)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '0'}], 'parameters': [{'name': 'cq', 'title': 'flow coefficient (Cq)', 'value': '9.00000000000000e-01', 'units': 'null'}, {'name': 'area', 'title': 'orifice area', 'value': '3.14*10^2/4', 'units': 'mm**2'}, {'name': 'Cv', 'title': 'flow coefficient (Cv)', 'value': '5.00000000000000e-01', 'units': 'null'}, {'name': 'Kv', 'title': 'flow coefficient (Kv)', 'value': '4.00000000000000e-01', 'units': 'null'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}, {'name': 'flowset', 'title': 'flow coefficient setting', 'value': '1', 'units': ''}]}, {'index': 77, 'alias': 'pn_node3_10', 'component_name': 'pn_node3', 'library_id': 'pn.pn_node3', 'submodel': 'PN3NODE2', 'label': 'pneumatic junction 3 ports (temperature and pressure fixed by port 2)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '3'}, {'name': 'port_3', 'type': 'pflow', 'face': '0'}], 'parameters': []}, {'index': 78, 'alias': 'pn_node3_11', 'component_name': 'pn_node3', 'library_id': 'pn.pn_node3', 'submodel': 'PN3NODE2', 'label': 'pneumatic junction 3 ports (temperature and pressure fixed by port 2)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '3'}, {'name': 'port_3', 'type': 'pflow', 'face': '0'}], 'parameters': []}, {'index': 79, 'alias': 'pn_general_chamber_4', 'component_name': 'pn_general_chamber', 'library_id': 'pn.pn_general_chamber', 'submodel': 'PNCH023', 'label': 'simple pneumatic chamber with heat exchange', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '0'}], 'parameters': [{'name': 'cvol', 'title': 'volume', 'value': '5.70000000000000e+01', 'units': 'L'}, {'name': 'kth', 'title': 'thermal exchange coefficient', 'value': '0.00000000000000e+00', 'units': 'J/m**2/K/s'}, {'name': 'sth', 'title': 'thermal exchange area', 'value': '1.00000000000000e-01', 'units': 'm**2'}, {'name': 'extemp', 'title': 'external temperature', 'value': '2.93150000000000e+02', 'units': 'K'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}]}, {'index': 80, 'alias': 'pn_orifice_22', 'component_name': 'pn_orifice', 'library_id': 'pn.pn_orifice', 'submodel': 'PNOR001', 'label': 'pneumatic orifice (constant flow coefficient)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '0'}], 'parameters': [{'name': 'cq', 'title': 'flow coefficient (Cq)', 'value': '9.00000000000000e-01', 'units': 'null'}, {'name': 'area', 'title': 'orifice area', 'value': '3.14*10^2/4', 'units': 'mm**2'}, {'name': 'Cv', 'title': 'flow coefficient (Cv)', 'value': '5.00000000000000e-01', 'units': 'null'}, {'name': 'Kv', 'title': 'flow coefficient (Kv)', 'value': '4.00000000000000e-01', 'units': 'null'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}, {'name': 'flowset', 'title': 'flow coefficient setting', 'value': '1', 'units': ''}]}, {'index': 81, 'alias': 'pn_orifice_23', 'component_name': 'pn_orifice', 'library_id': 'pn.pn_orifice', 'submodel': 'PNOR001', 'label': 'pneumatic orifice (constant flow coefficient)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '0'}], 'parameters': [{'name': 'cq', 'title': 'flow coefficient (Cq)', 'value': '9.00000000000000e-01', 'units': 'null'}, {'name': 'area', 'title': 'orifice area', 'value': '3.14*10^2/4', 'units': 'mm**2'}, {'name': 'Cv', 'title': 'flow coefficient (Cv)', 'value': '5.00000000000000e-01', 'units': 'null'}, {'name': 'Kv', 'title': 'flow coefficient (Kv)', 'value': '4.00000000000000e-01', 'units': 'null'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}, {'name': 'flowset', 'title': 'flow coefficient setting', 'value': '1', 'units': ''}]}, {'index': 82, 'alias': 'pn_node3_12', 'component_name': 'pn_node3', 'library_id': 'pn.pn_node3', 'submodel': 'PN3NODE2', 'label': 'pneumatic junction 3 ports (temperature and pressure fixed by port 2)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '3'}, {'name': 'port_3', 'type': 'pflow', 'face': '0'}], 'parameters': []}, {'index': 83, 'alias': 'pn_node3_13', 'component_name': 'pn_node3', 'library_id': 'pn.pn_node3', 'submodel': 'PN3NODE2', 'label': 'pneumatic junction 3 ports (temperature and pressure fixed by port 2)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '3'}, {'name': 'port_3', 'type': 'pflow', 'face': '0'}], 'parameters': []}, {'index': 84, 'alias': 'pn_general_chamber_5', 'component_name': 'pn_general_chamber', 'library_id': 'pn.pn_general_chamber', 'submodel': 'PNCH023', 'label': 'simple pneumatic chamber with heat exchange', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '0'}], 'parameters': [{'name': 'cvol', 'title': 'volume', 'value': '5.70000000000000e+01', 'units': 'L'}, {'name': 'kth', 'title': 'thermal exchange coefficient', 'value': '0.00000000000000e+00', 'units': 'J/m**2/K/s'}, {'name': 'sth', 'title': 'thermal exchange area', 'value': '1.00000000000000e-01', 'units': 'm**2'}, {'name': 'extemp', 'title': 'external temperature', 'value': '2.93150000000000e+02', 'units': 'K'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}]}, {'index': 85, 'alias': 'pn_orifice_24', 'component_name': 'pn_orifice', 'library_id': 'pn.pn_orifice', 'submodel': 'PNOR001', 'label': 'pneumatic orifice (constant flow coefficient)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '0'}], 'parameters': [{'name': 'cq', 'title': 'flow coefficient (Cq)', 'value': '9.00000000000000e-01', 'units': 'null'}, {'name': 'area', 'title': 'orifice area', 'value': '3.14*10^2/4', 'units': 'mm**2'}, {'name': 'Cv', 'title': 'flow coefficient (Cv)', 'value': '5.00000000000000e-01', 'units': 'null'}, {'name': 'Kv', 'title': 'flow coefficient (Kv)', 'value': '4.00000000000000e-01', 'units': 'null'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}, {'name': 'flowset', 'title': 'flow coefficient setting', 'value': '1', 'units': ''}]}, {'index': 86, 'alias': 'pn_orifice_25', 'component_name': 'pn_orifice', 'library_id': 'pn.pn_orifice', 'submodel': 'PNOR001', 'label': 'pneumatic orifice (constant flow coefficient)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '0'}], 'parameters': [{'name': 'cq', 'title': 'flow coefficient (Cq)', 'value': '9.00000000000000e-01', 'units': 'null'}, {'name': 'area', 'title': 'orifice area', 'value': '3.14*10^2/4', 'units': 'mm**2'}, {'name': 'Cv', 'title': 'flow coefficient (Cv)', 'value': '5.00000000000000e-01', 'units': 'null'}, {'name': 'Kv', 'title': 'flow coefficient (Kv)', 'value': '4.00000000000000e-01', 'units': 'null'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}, {'name': 'flowset', 'title': 'flow coefficient setting', 'value': '1', 'units': ''}]}, {'index': 87, 'alias': 'pn_node3_14', 'component_name': 'pn_node3', 'library_id': 'pn.pn_node3', 'submodel': 'PN3NODE2', 'label': 'pneumatic junction 3 ports (temperature and pressure fixed by port 2)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '3'}, {'name': 'port_3', 'type': 'pflow', 'face': '0'}], 'parameters': []}, {'index': 88, 'alias': 'pn_node3_15', 'component_name': 'pn_node3', 'library_id': 'pn.pn_node3', 'submodel': 'PN3NODE2', 'label': 'pneumatic junction 3 ports (temperature and pressure fixed by port 2)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '3'}, {'name': 'port_3', 'type': 'pflow', 'face': '0'}], 'parameters': []}, {'index': 89, 'alias': 'pnnode4_16', 'component_name': 'pnnode4', 'library_id': 'pn.pnnode4', 'submodel': 'P4NODE2', 'label': 'pneumatic junction 4 ports (temperature and pressure fixed by port 2)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '3'}, {'name': 'port_3', 'type': 'pflow', 'face': '0'}, {'name': 'port_4', 'type': 'pflow', 'face': '2'}], 'parameters': []}, {'index': 90, 'alias': 'pnnode4_17', 'component_name': 'pnnode4', 'library_id': 'pn.pnnode4', 'submodel': 'P4NODE2', 'label': 'pneumatic junction 4 ports (temperature and pressure fixed by port 2)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '3'}, {'name': 'port_3', 'type': 'pflow', 'face': '0'}, {'name': 'port_4', 'type': 'pflow', 'face': '2'}], 'parameters': []}, {'index': 91, 'alias': 'pnnode4_18', 'component_name': 'pnnode4', 'library_id': 'pn.pnnode4', 'submodel': 'P4NODE2', 'label': 'pneumatic junction 4 ports (temperature and pressure fixed by port 2)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '3'}, {'name': 'port_3', 'type': 'pflow', 'face': '0'}, {'name': 'port_4', 'type': 'pflow', 'face': '2'}], 'parameters': []}, {'index': 92, 'alias': 'pnnode4_19', 'component_name': 'pnnode4', 'library_id': 'pn.pnnode4', 'submodel': 'P4NODE2', 'label': 'pneumatic junction 4 ports (temperature and pressure fixed by port 2)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '3'}, {'name': 'port_3', 'type': 'pflow', 'face': '0'}, {'name': 'port_4', 'type': 'pflow', 'face': '2'}], 'parameters': []}, {'index': 93, 'alias': 'pnnode4_20', 'component_name': 'pnnode4', 'library_id': 'pn.pnnode4', 'submodel': 'P4NODE2', 'label': 'pneumatic junction 4 ports (temperature and pressure fixed by port 2)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '3'}, {'name': 'port_3', 'type': 'pflow', 'face': '0'}, {'name': 'port_4', 'type': 'pflow', 'face': '2'}], 'parameters': []}, {'index': 94, 'alias': 'pnnode4_21', 'component_name': 'pnnode4', 'library_id': 'pn.pnnode4', 'submodel': 'P4NODE2', 'label': 'pneumatic junction 4 ports (temperature and pressure fixed by port 2)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '3'}, {'name': 'port_3', 'type': 'pflow', 'face': '0'}, {'name': 'port_4', 'type': 'pflow', 'face': '2'}], 'parameters': []}, {'index': 95, 'alias': 'pnnode4_22', 'component_name': 'pnnode4', 'library_id': 'pn.pnnode4', 'submodel': 'P4NODE2', 'label': 'pneumatic junction 4 ports (temperature and pressure fixed by port 2)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '3'}, {'name': 'port_3', 'type': 'pflow', 'face': '0'}, {'name': 'port_4', 'type': 'pflow', 'face': '2'}], 'parameters': []}, {'index': 96, 'alias': 'pnnode4_23', 'component_name': 'pnnode4', 'library_id': 'pn.pnnode4', 'submodel': 'P4NODE2', 'label': 'pneumatic junction 4 ports (temperature and pressure fixed by port 2)', 'ports': [{'name': 'port_1', 'type': 'pflow', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '3'}, {'name': 'port_3', 'type': 'pflow', 'face': '0'}, {'name': 'port_4', 'type': 'pflow', 'face': '2'}], 'parameters': []}, {'index': 97, 'alias': 'pn_morifice_11', 'component_name': 'pn_morifice', 'library_id': 'pn.pn_morifice', 'submodel': 'PNVO001', 'label': 'modulated pneumatic orifice (constant flow coefficient)', 'ports': [{'name': 'port_1', 'type': 'signal', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '3'}, {'name': 'port_3', 'type': 'pflow', 'face': '2'}], 'parameters': [{'name': 'cq', 'title': 'flow coefficient (Cq)', 'value': 'cf', 'units': 'null'}, {'name': 'area0', 'title': 'orifice area at maximum opening', 'value': '3.14*10^2/4', 'units': 'mm**2'}, {'name': 'Cv', 'title': 'maximum flow coefficient (Cv)', 'value': '5.00000000000000e-01', 'units': 'null'}, {'name': 'Kv', 'title': 'maximum flow coefficient (Kv)', 'value': '4.00000000000000e-01', 'units': 'null'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}, {'name': 'flowset', 'title': 'flow coefficient setting', 'value': '1', 'units': ''}]}, {'index': 98, 'alias': 'step_8', 'component_name': 'step', 'library_id': 'sig.step', 'submodel': 'STEP0', 'label': 'step function', 'ports': [{'name': 'port_1', 'type': 'signal', 'face': '3'}], 'parameters': [{'name': 'out0', 'title': 'value before step', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 'out1', 'title': 'value after step', 'value': '1.00000000000000e+00', 'units': 'null'}, {'name': 't0', 'title': 'step time', 'value': '4.00000000000000e-02', 'units': 's'}, {'name': 'td', 'title': 'transition duration', 'value': '1.00000000000000e-01', 'units': 's'}, {'name': 'transitionType', 'title': 'transition type', 'value': '1', 'units': ''}]}, {'index': 99, 'alias': 'pn_morifice_12', 'component_name': 'pn_morifice', 'library_id': 'pn.pn_morifice', 'submodel': 'PNVO001', 'label': 'modulated pneumatic orifice (constant flow coefficient)', 'ports': [{'name': 'port_1', 'type': 'signal', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '3'}, {'name': 'port_3', 'type': 'pflow', 'face': '2'}], 'parameters': [{'name': 'cq', 'title': 'flow coefficient (Cq)', 'value': 'cf', 'units': 'null'}, {'name': 'area0', 'title': 'orifice area at maximum opening', 'value': '3.14*10^2/4', 'units': 'mm**2'}, {'name': 'Cv', 'title': 'maximum flow coefficient (Cv)', 'value': '5.00000000000000e-01', 'units': 'null'}, {'name': 'Kv', 'title': 'maximum flow coefficient (Kv)', 'value': '4.00000000000000e-01', 'units': 'null'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}, {'name': 'flowset', 'title': 'flow coefficient setting', 'value': '1', 'units': ''}]}, {'index': 100, 'alias': 'step_9', 'component_name': 'step', 'library_id': 'sig.step', 'submodel': 'STEP0', 'label': 'step function', 'ports': [{'name': 'port_1', 'type': 'signal', 'face': '3'}], 'parameters': [{'name': 'out0', 'title': 'value before step', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 'out1', 'title': 'value after step', 'value': '1.00000000000000e+00', 'units': 'null'}, {'name': 't0', 'title': 'step time', 'value': '4.00000000000000e-02', 'units': 's'}, {'name': 'td', 'title': 'transition duration', 'value': '1.00000000000000e-01', 'units': 's'}, {'name': 'transitionType', 'title': 'transition type', 'value': '1', 'units': ''}]}, {'index': 101, 'alias': 'pn_morifice_13', 'component_name': 'pn_morifice', 'library_id': 'pn.pn_morifice', 'submodel': 'PNVO001', 'label': 'modulated pneumatic orifice (constant flow coefficient)', 'ports': [{'name': 'port_1', 'type': 'signal', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '3'}, {'name': 'port_3', 'type': 'pflow', 'face': '2'}], 'parameters': [{'name': 'cq', 'title': 'flow coefficient (Cq)', 'value': 'cf', 'units': 'null'}, {'name': 'area0', 'title': 'orifice area at maximum opening', 'value': '3.14*10^2/4', 'units': 'mm**2'}, {'name': 'Cv', 'title': 'maximum flow coefficient (Cv)', 'value': '5.00000000000000e-01', 'units': 'null'}, {'name': 'Kv', 'title': 'maximum flow coefficient (Kv)', 'value': '4.00000000000000e-01', 'units': 'null'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}, {'name': 'flowset', 'title': 'flow coefficient setting', 'value': '1', 'units': ''}]}, {'index': 102, 'alias': 'step_10', 'component_name': 'step', 'library_id': 'sig.step', 'submodel': 'STEP0', 'label': 'step function', 'ports': [{'name': 'port_1', 'type': 'signal', 'face': '3'}], 'parameters': [{'name': 'out0', 'title': 'value before step', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 'out1', 'title': 'value after step', 'value': '1.00000000000000e+00', 'units': 'null'}, {'name': 't0', 'title': 'step time', 'value': '4.00000000000000e-02', 'units': 's'}, {'name': 'td', 'title': 'transition duration', 'value': '1.00000000000000e-01', 'units': 's'}, {'name': 'transitionType', 'title': 'transition type', 'value': '1', 'units': ''}]}, {'index': 103, 'alias': 'pn_morifice_14', 'component_name': 'pn_morifice', 'library_id': 'pn.pn_morifice', 'submodel': 'PNVO001', 'label': 'modulated pneumatic orifice (constant flow coefficient)', 'ports': [{'name': 'port_1', 'type': 'signal', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '3'}, {'name': 'port_3', 'type': 'pflow', 'face': '2'}], 'parameters': [{'name': 'cq', 'title': 'flow coefficient (Cq)', 'value': 'cf', 'units': 'null'}, {'name': 'area0', 'title': 'orifice area at maximum opening', 'value': '3.14*10^2/4', 'units': 'mm**2'}, {'name': 'Cv', 'title': 'maximum flow coefficient (Cv)', 'value': '5.00000000000000e-01', 'units': 'null'}, {'name': 'Kv', 'title': 'maximum flow coefficient (Kv)', 'value': '4.00000000000000e-01', 'units': 'null'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}, {'name': 'flowset', 'title': 'flow coefficient setting', 'value': '1', 'units': ''}]}, {'index': 104, 'alias': 'step_11', 'component_name': 'step', 'library_id': 'sig.step', 'submodel': 'STEP0', 'label': 'step function', 'ports': [{'name': 'port_1', 'type': 'signal', 'face': '3'}], 'parameters': [{'name': 'out0', 'title': 'value before step', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 'out1', 'title': 'value after step', 'value': '1.00000000000000e+00', 'units': 'null'}, {'name': 't0', 'title': 'step time', 'value': '4.00000000000000e-02', 'units': 's'}, {'name': 'td', 'title': 'transition duration', 'value': '1.00000000000000e-01', 'units': 's'}, {'name': 'transitionType', 'title': 'transition type', 'value': '1', 'units': ''}]}, {'index': 105, 'alias': 'forcecon_2', 'component_name': 'forcecon', 'library_id': 'meca.forcecon', 'submodel': 'FORC', 'label': 'conversion of signal input into a force in N', 'ports': [{'name': 'port_1', 'type': 'signal', 'face': '3'}, {'name': 'port_2', 'type': 'lshaft', 'face': '2'}], 'parameters': []}, {'index': 106, 'alias': 'piecewiselinear', 'component_name': 'piecewiselinear', 'library_id': 'sig.piecewiselinear', 'submodel': 'UD00', 'label': 'piecewise linear signal source', 'ports': [{'name': 'port_1', 'type': 'signal', 'face': '3'}], 'parameters': [{'name': 'tstart', 'title': 'time at which duty cycle starts', 'value': '0.00000000000000e+00', 'units': 's'}, {'name': 'start1', 'title': 'output at start of stage 1', 'value': '1.00000000000000e+17', 'units': 'null'}, {'name': 'end1', 'title': 'output at end of stage 1', 'value': '1.00000000000000e+17', 'units': 'null'}, {'name': 't1', 'title': 'duration of stage 1', 'value': '8.00000000000000e-01', 'units': 's'}, {'name': 'start2', 'title': 'output at start of stage 2', 'value': '4.90000000000000e+04', 'units': 'null'}, {'name': 'end2', 'title': 'output at end of stage 2', 'value': '4.90000000000000e+04', 'units': 'null'}, {'name': 't2', 'title': 'duration of stage 2', 'value': '1.00000000000000e+01', 'units': 's'}, {'name': 'start3', 'title': 'output at start of stage 3', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 'end3', 'title': 'output at end of stage 3', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 't3', 'title': 'duration of stage 3', 'value': '3.00000000000000e+00', 'units': 's'}, {'name': 'start4', 'title': 'output at start of stage 4', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 'end4', 'title': 'output at end of stage 4', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 't4', 'title': 'duration of stage 4', 'value': '3.00000000000000e+00', 'units': 's'}, {'name': 'start5', 'title': 'output at start of stage 5', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 'end5', 'title': 'output at end of stage 5', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 't5', 'title': 'duration of stage 5', 'value': '3.00000000000000e+00', 'units': 's'}, {'name': 'start6', 'title': 'output at start of stage 6', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 'end6', 'title': 'output at end of stage 6', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 't6', 'title': 'duration of stage 6', 'value': '3.00000000000000e+00', 'units': 's'}, {'name': 'start7', 'title': 'output at start of stage 7', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 'end7', 'title': 'output at end of stage 7', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 't7', 'title': 'duration of stage 7', 'value': '3.00000000000000e+00', 'units': 's'}, {'name': 'start8', 'title': 'output at start of stage 8', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 'end8', 'title': 'output at end of stage 8', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 't8', 'title': 'duration of stage 8', 'value': '3.00000000000000e+00', 'units': 's'}, {'name': 'nstages', 'title': 'number of stages', 'value': '2', 'units': ''}, {'name': 'iscyclic', 'title': 'cyclic', 'value': '1', 'units': ''}]}, {'index': 107, 'alias': 'piecewiselinear_1', 'component_name': 'piecewiselinear', 'library_id': 'sig.piecewiselinear', 'submodel': 'UD00', 'label': 'piecewise linear signal source', 'ports': [{'name': 'port_1', 'type': 'signal', 'face': '2'}], 'parameters': [{'name': 'tstart', 'title': 'time at which duty cycle starts', 'value': '0.00000000000000e+00', 'units': 's'}, {'name': 'start1', 'title': 'output at start of stage 1', 'value': '1.00000000000000e+12', 'units': 'null'}, {'name': 'end1', 'title': 'output at end of stage 1', 'value': '1.00000000000000e+12', 'units': 'null'}, {'name': 't1', 'title': 'duration of stage 1', 'value': '8.00000000000000e-01', 'units': 's'}, {'name': 'start2', 'title': 'output at start of stage 2', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 'end2', 'title': 'output at end of stage 2', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 't2', 'title': 'duration of stage 2', 'value': '1.00000000000000e+01', 'units': 's'}, {'name': 'start3', 'title': 'output at start of stage 3', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 'end3', 'title': 'output at end of stage 3', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 't3', 'title': 'duration of stage 3', 'value': '3.00000000000000e+00', 'units': 's'}, {'name': 'start4', 'title': 'output at start of stage 4', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 'end4', 'title': 'output at end of stage 4', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 't4', 'title': 'duration of stage 4', 'value': '3.00000000000000e+00', 'units': 's'}, {'name': 'start5', 'title': 'output at start of stage 5', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 'end5', 'title': 'output at end of stage 5', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 't5', 'title': 'duration of stage 5', 'value': '3.00000000000000e+00', 'units': 's'}, {'name': 'start6', 'title': 'output at start of stage 6', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 'end6', 'title': 'output at end of stage 6', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 't6', 'title': 'duration of stage 6', 'value': '3.00000000000000e+00', 'units': 's'}, {'name': 'start7', 'title': 'output at start of stage 7', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 'end7', 'title': 'output at end of stage 7', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 't7', 'title': 'duration of stage 7', 'value': '3.00000000000000e+00', 'units': 's'}, {'name': 'start8', 'title': 'output at start of stage 8', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 'end8', 'title': 'output at end of stage 8', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 't8', 'title': 'duration of stage 8', 'value': '3.00000000000000e+00', 'units': 's'}, {'name': 'nstages', 'title': 'number of stages', 'value': '2', 'units': ''}, {'name': 'iscyclic', 'title': 'cyclic', 'value': '1', 'units': ''}]}, {'index': 108, 'alias': 'pn_morifice_1', 'component_name': 'pn_morifice', 'library_id': 'pn.pn_morifice', 'submodel': 'PNVO001', 'label': 'modulated pneumatic orifice (constant flow coefficient)', 'ports': [{'name': 'port_1', 'type': 'signal', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '3'}, {'name': 'port_3', 'type': 'pflow', 'face': '2'}], 'parameters': [{'name': 'cq', 'title': 'flow coefficient (Cq)', 'value': 'cf', 'units': 'null'}, {'name': 'area0', 'title': 'orifice area at maximum opening', 'value': '3.14*10^2/4', 'units': 'mm**2'}, {'name': 'Cv', 'title': 'maximum flow coefficient (Cv)', 'value': '5.00000000000000e-01', 'units': 'null'}, {'name': 'Kv', 'title': 'maximum flow coefficient (Kv)', 'value': '4.00000000000000e-01', 'units': 'null'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}, {'name': 'flowset', 'title': 'flow coefficient setting', 'value': '1', 'units': ''}]}, {'index': 109, 'alias': 'step_12', 'component_name': 'step', 'library_id': 'sig.step', 'submodel': 'STEP0', 'label': 'step function', 'ports': [{'name': 'port_1', 'type': 'signal', 'face': '3'}], 'parameters': [{'name': 'out0', 'title': 'value before step', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 'out1', 'title': 'value after step', 'value': '1.00000000000000e+00', 'units': 'null'}, {'name': 't0', 'title': 'step time', 'value': '4.00000000000000e-02', 'units': 's'}, {'name': 'td', 'title': 'transition duration', 'value': '1.00000000000000e-01', 'units': 's'}, {'name': 'transitionType', 'title': 'transition type', 'value': '1', 'units': ''}]}, {'index': 110, 'alias': 'pn_morifice_9', 'component_name': 'pn_morifice', 'library_id': 'pn.pn_morifice', 'submodel': 'PNVO001', 'label': 'modulated pneumatic orifice (constant flow coefficient)', 'ports': [{'name': 'port_1', 'type': 'signal', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '3'}, {'name': 'port_3', 'type': 'pflow', 'face': '2'}], 'parameters': [{'name': 'cq', 'title': 'flow coefficient (Cq)', 'value': 'cf', 'units': 'null'}, {'name': 'area0', 'title': 'orifice area at maximum opening', 'value': '3.14*10^2/4', 'units': 'mm**2'}, {'name': 'Cv', 'title': 'maximum flow coefficient (Cv)', 'value': '5.00000000000000e-01', 'units': 'null'}, {'name': 'Kv', 'title': 'maximum flow coefficient (Kv)', 'value': '4.00000000000000e-01', 'units': 'null'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}, {'name': 'flowset', 'title': 'flow coefficient setting', 'value': '1', 'units': ''}]}, {'index': 111, 'alias': 'step_13', 'component_name': 'step', 'library_id': 'sig.step', 'submodel': 'STEP0', 'label': 'step function', 'ports': [{'name': 'port_1', 'type': 'signal', 'face': '3'}], 'parameters': [{'name': 'out0', 'title': 'value before step', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 'out1', 'title': 'value after step', 'value': '1.00000000000000e+00', 'units': 'null'}, {'name': 't0', 'title': 'step time', 'value': '4.00000000000000e-02', 'units': 's'}, {'name': 'td', 'title': 'transition duration', 'value': '1.00000000000000e-01', 'units': 's'}, {'name': 'transitionType', 'title': 'transition type', 'value': '1', 'units': ''}]}, {'index': 112, 'alias': 'pn_morifice_10', 'component_name': 'pn_morifice', 'library_id': 'pn.pn_morifice', 'submodel': 'PNVO001', 'label': 'modulated pneumatic orifice (constant flow coefficient)', 'ports': [{'name': 'port_1', 'type': 'signal', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '3'}, {'name': 'port_3', 'type': 'pflow', 'face': '2'}], 'parameters': [{'name': 'cq', 'title': 'flow coefficient (Cq)', 'value': 'cf', 'units': 'null'}, {'name': 'area0', 'title': 'orifice area at maximum opening', 'value': '3.14*10^2/4', 'units': 'mm**2'}, {'name': 'Cv', 'title': 'maximum flow coefficient (Cv)', 'value': '5.00000000000000e-01', 'units': 'null'}, {'name': 'Kv', 'title': 'maximum flow coefficient (Kv)', 'value': '4.00000000000000e-01', 'units': 'null'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}, {'name': 'flowset', 'title': 'flow coefficient setting', 'value': '1', 'units': ''}]}, {'index': 113, 'alias': 'step_14', 'component_name': 'step', 'library_id': 'sig.step', 'submodel': 'STEP0', 'label': 'step function', 'ports': [{'name': 'port_1', 'type': 'signal', 'face': '3'}], 'parameters': [{'name': 'out0', 'title': 'value before step', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 'out1', 'title': 'value after step', 'value': '1.00000000000000e+00', 'units': 'null'}, {'name': 't0', 'title': 'step time', 'value': '4.00000000000000e-02', 'units': 's'}, {'name': 'td', 'title': 'transition duration', 'value': '1.00000000000000e-01', 'units': 's'}, {'name': 'transitionType', 'title': 'transition type', 'value': '1', 'units': ''}]}, {'index': 114, 'alias': 'pn_morifice_15', 'component_name': 'pn_morifice', 'library_id': 'pn.pn_morifice', 'submodel': 'PNVO001', 'label': 'modulated pneumatic orifice (constant flow coefficient)', 'ports': [{'name': 'port_1', 'type': 'signal', 'face': '1'}, {'name': 'port_2', 'type': 'pflow', 'face': '3'}, {'name': 'port_3', 'type': 'pflow', 'face': '2'}], 'parameters': [{'name': 'cq', 'title': 'flow coefficient (Cq)', 'value': 'cf', 'units': 'null'}, {'name': 'area0', 'title': 'orifice area at maximum opening', 'value': '3.14*10^2/4', 'units': 'mm**2'}, {'name': 'Cv', 'title': 'maximum flow coefficient (Cv)', 'value': '5.00000000000000e-01', 'units': 'null'}, {'name': 'Kv', 'title': 'maximum flow coefficient (Kv)', 'value': '4.00000000000000e-01', 'units': 'null'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}, {'name': 'flowset', 'title': 'flow coefficient setting', 'value': '1', 'units': ''}]}, {'index': 115, 'alias': 'step_15', 'component_name': 'step', 'library_id': 'sig.step', 'submodel': 'STEP0', 'label': 'step function', 'ports': [{'name': 'port_1', 'type': 'signal', 'face': '3'}], 'parameters': [{'name': 'out0', 'title': 'value before step', 'value': '0.00000000000000e+00', 'units': 'null'}, {'name': 'out1', 'title': 'value after step', 'value': '1.00000000000000e+00', 'units': 'null'}, {'name': 't0', 'title': 'step time', 'value': '4.00000000000000e-02', 'units': 's'}, {'name': 'td', 'title': 'transition duration', 'value': '1.00000000000000e-01', 'units': 's'}, {'name': 'transitionType', 'title': 'transition type', 'value': '1', 'units': ''}]}, {'index': 116, 'alias': 'pn_gas_data', 'component_name': 'pn_gas_data', 'library_id': 'pn.pn_gas_data', 'submodel': 'PNGD00', 'label': 'gas definition for helium (He)', 'ports': [], 'parameters': [{'name': 'cp', 'title': 'constant-pressure specific heat (Cp)', 'value': '1.00520000000000e+03', 'units': 'J/kg/K'}, {'name': 'cv', 'title': 'constant-volume specific heat (Cv)', 'value': '7.18000000000000e+02', 'units': 'J/kg/K'}, {'name': 'gamma', 'title': 'specific heat ratio (gamma)', 'value': '1.40000000000000e+00', 'units': 'null'}, {'name': 'rGas', 'title': 'specific gas constant (r)', 'value': '2.87200000000000e+02', 'units': 'J/kg/K'}, {'name': 'mu', 'title': 'absolute viscosity (mu)', 'value': '1.82000000000000e-02', 'units': 'cP'}, {'name': 'lam', 'title': 'thermal conductivity', 'value': '2.64000000000000e-02', 'units': 'W/m/K'}, {'name': 'M', 'title': 'molar mass', 'value': '2.89651300000000e+01', 'units': 'g/mol'}, {'name': 'operatingTempK', 'title': 'operating temperature', 'value': '2.98150000000000e+02', 'units': 'K'}, {'name': 'enthForm', 'title': 'enthalpy of formation', 'value': '-1.25530000000000e+02', 'units': 'J/mol'}, {'name': 'gi', 'title': 'gas type index', 'value': '1', 'units': ''}, {'name': 'fluidType', 'title': 'fluid definition', 'value': '12', 'units': ''}, {'name': 'eosType', 'title': 'properties definition', 'value': '6', 'units': ''}, {'name': 'gasSetting', 'title': 'setting properties through', 'value': '1', 'units': ''}]}] CONNECTION_SPECS = [{'index': 0, 'alias': 'linear_24', 'source_component': 'pn_brp2_8', 'source_port': 'port_5', 'target_component': 'elasticendstop_8', 'target_port': 'port_1', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 1, 'alias': 'linear_25', 'source_component': 'elasticendstop_8', 'source_port': 'port_2', 'target_component': 'dynamic_mechanical_node_alternative_2', 'target_port': 'port_1', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 2, 'alias': 'linear_26', 'source_component': 'pn_brp2_9', 'source_port': 'port_5', 'target_component': 'elasticendstop_9', 'target_port': 'port_1', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 3, 'alias': 'linear_27', 'source_component': 'elasticendstop_9', 'source_port': 'port_2', 'target_component': 'dynamic_mechanical_node_alternative_2', 'target_port': 'port_2', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 4, 'alias': 'linear_28', 'source_component': 'pn_brp2_10', 'source_port': 'port_5', 'target_component': 'elasticendstop_10', 'target_port': 'port_1', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 5, 'alias': 'linear_29', 'source_component': 'pn_brp2_11', 'source_port': 'port_5', 'target_component': 'elasticendstop_11', 'target_port': 'port_1', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 6, 'alias': 'linear_30', 'source_component': 'pn_brp2_12', 'source_port': 'port_5', 'target_component': 'elasticendstop_12', 'target_port': 'port_1', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 7, 'alias': 'linear_31', 'source_component': 'pn_brp2_13', 'source_port': 'port_5', 'target_component': 'elasticendstop_13', 'target_port': 'port_1', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 8, 'alias': 'linear_32', 'source_component': 'pn_brp2_14', 'source_port': 'port_5', 'target_component': 'elasticendstop_14', 'target_port': 'port_1', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 9, 'alias': 'linear_33', 'source_component': 'pn_brp2_15', 'source_port': 'port_5', 'target_component': 'elasticendstop_15', 'target_port': 'port_1', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 10, 'alias': 'linear_34', 'source_component': 'elasticendstop_10', 'source_port': 'port_2', 'target_component': 'dynamic_mechanical_node_alternative_2', 'target_port': 'port_3', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 11, 'alias': 'linear_35', 'source_component': 'elasticendstop_11', 'source_port': 'port_2', 'target_component': 'dynamic_mechanical_node_alternative_2', 'target_port': 'port_4', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 12, 'alias': 'linear_36', 'source_component': 'elasticendstop_12', 'source_port': 'port_2', 'target_component': 'dynamic_mechanical_node_alternative_2', 'target_port': 'port_5', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 13, 'alias': 'linear_37', 'source_component': 'elasticendstop_13', 'source_port': 'port_2', 'target_component': 'dynamic_mechanical_node_alternative_2', 'target_port': 'port_6', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 14, 'alias': 'linear_38', 'source_component': 'elasticendstop_14', 'source_port': 'port_2', 'target_component': 'dynamic_mechanical_node_alternative_2', 'target_port': 'port_7', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 15, 'alias': 'linear_39', 'source_component': 'elasticendstop_15', 'source_port': 'port_2', 'target_component': 'dynamic_mechanical_node_alternative_2', 'target_port': 'port_8', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 16, 'alias': 'linear_40', 'source_component': 'dynamic_mechanical_node_alternative_3', 'source_port': 'port_8', 'target_component': 'pn_brp2_8', 'target_port': 'port_3', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 17, 'alias': 'linear_41', 'source_component': 'dynamic_mechanical_node_alternative_3', 'source_port': 'port_7', 'target_component': 'pn_brp2_9', 'target_port': 'port_3', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 18, 'alias': 'linear_42', 'source_component': 'dynamic_mechanical_node_alternative_3', 'source_port': 'port_6', 'target_component': 'pn_brp2_10', 'target_port': 'port_3', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 19, 'alias': 'linear_43', 'source_component': 'dynamic_mechanical_node_alternative_3', 'source_port': 'port_5', 'target_component': 'pn_brp2_11', 'target_port': 'port_3', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 20, 'alias': 'linear_44', 'source_component': 'dynamic_mechanical_node_alternative_3', 'source_port': 'port_4', 'target_component': 'pn_brp2_12', 'target_port': 'port_3', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 21, 'alias': 'linear_45', 'source_component': 'dynamic_mechanical_node_alternative_3', 'source_port': 'port_3', 'target_component': 'pn_brp2_13', 'target_port': 'port_3', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 22, 'alias': 'linear_46', 'source_component': 'dynamic_mechanical_node_alternative_3', 'source_port': 'port_2', 'target_component': 'pn_brp2_14', 'target_port': 'port_3', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 23, 'alias': 'linear_47', 'source_component': 'dynamic_mechanical_node_alternative_3', 'source_port': 'port_1', 'target_component': 'pn_brp2_15', 'target_port': 'port_3', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 24, 'alias': 'pneumatic_56', 'source_component': 'pn_c1_8', 'source_port': 'port_3', 'target_component': 'pn_brp2_8', 'target_port': 'port_1', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 25, 'alias': 'pneumatic_57', 'source_component': 'pn_c1_9', 'source_port': 'port_3', 'target_component': 'pn_brp2_9', 'target_port': 'port_1', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 26, 'alias': 'pneumatic_58', 'source_component': 'pn_c1_10', 'source_port': 'port_3', 'target_component': 'pn_brp2_10', 'target_port': 'port_1', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 27, 'alias': 'pneumatic_59', 'source_component': 'pn_c1_11', 'source_port': 'port_3', 'target_component': 'pn_brp2_11', 'target_port': 'port_1', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 28, 'alias': 'pneumatic_60', 'source_component': 'pn_c1_12', 'source_port': 'port_3', 'target_component': 'pn_brp2_12', 'target_port': 'port_1', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 29, 'alias': 'pneumatic_61', 'source_component': 'pn_c1_13', 'source_port': 'port_3', 'target_component': 'pn_brp2_13', 'target_port': 'port_1', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 30, 'alias': 'pneumatic_62', 'source_component': 'pn_c1_14', 'source_port': 'port_3', 'target_component': 'pn_brp2_14', 'target_port': 'port_1', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 31, 'alias': 'pneumatic_63', 'source_component': 'pn_c1_15', 'source_port': 'port_3', 'target_component': 'pn_brp2_15', 'target_port': 'port_1', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 32, 'alias': 'pneumatic_64', 'source_component': 'pn_morifice_15', 'source_port': 'port_2', 'target_component': 'pnnode4_19', 'target_port': 'port_4', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 33, 'alias': 'pneumatic_65', 'source_component': 'pnnode4_19', 'source_port': 'port_2', 'target_component': 'pn_c1_11', 'target_port': 'port_1', 'submodel': 'PNL0001', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R)'}, {'index': 34, 'alias': 'pneumatic_66', 'source_component': 'pnnode4_18', 'source_port': 'port_2', 'target_component': 'pn_c1_10', 'target_port': 'port_1', 'submodel': 'PNL0001', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R)'}, {'index': 35, 'alias': 'pneumatic_67', 'source_component': 'pn_morifice_10', 'source_port': 'port_2', 'target_component': 'pnnode4_18', 'target_port': 'port_4', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 36, 'alias': 'pneumatic_68', 'source_component': 'pnnode4_17', 'source_port': 'port_2', 'target_component': 'pn_c1_9', 'target_port': 'port_1', 'submodel': 'PNL0001', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R)'}, {'index': 37, 'alias': 'pneumatic_69', 'source_component': 'pnnode4_16', 'source_port': 'port_2', 'target_component': 'pn_c1_8', 'target_port': 'port_1', 'submodel': 'PNL0001', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R)'}, {'index': 38, 'alias': 'pneumatic_70', 'source_component': 'pn_morifice_12', 'source_port': 'port_2', 'target_component': 'pnnode4_20', 'target_port': 'port_4', 'submodel': 'PNL0001', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R)'}, {'index': 39, 'alias': 'pneumatic_71', 'source_component': 'pnnode4_23', 'source_port': 'port_2', 'target_component': 'pn_c1_12', 'target_port': 'port_1', 'submodel': 'PNL0001', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R)'}, {'index': 40, 'alias': 'pneumatic_72', 'source_component': 'pnnode4_20', 'source_port': 'port_2', 'target_component': 'pn_c1_13', 'target_port': 'port_1', 'submodel': 'PNL0001', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R)'}, {'index': 41, 'alias': 'pneumatic_73', 'source_component': 'pnnode4_21', 'source_port': 'port_2', 'target_component': 'pn_c1_14', 'target_port': 'port_1', 'submodel': 'PNL0001', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R)'}, {'index': 42, 'alias': 'pneumatic_74', 'source_component': 'pnnode4_22', 'source_port': 'port_2', 'target_component': 'pn_c1_15', 'target_port': 'port_1', 'submodel': 'PNL0001', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R)'}, {'index': 43, 'alias': 'pneumatic_75', 'source_component': 'pn_node3_10', 'source_port': 'port_2', 'target_component': 'pn_morifice_10', 'target_port': 'port_3', 'submodel': 'PNL0003', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R-C)'}, {'index': 44, 'alias': 'pneumatic_76', 'source_component': 'pn_node3_11', 'source_port': 'port_2', 'target_component': 'pn_morifice_15', 'target_port': 'port_3', 'submodel': 'PNL0003', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R-C)'}, {'index': 45, 'alias': 'pneumatic_77', 'source_component': 'pn_node3_12', 'source_port': 'port_2', 'target_component': 'pn_morifice_11', 'target_port': 'port_3', 'submodel': 'PNL0003', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R-C)'}, {'index': 46, 'alias': 'pneumatic_78', 'source_component': 'pn_node3_13', 'source_port': 'port_2', 'target_component': 'pn_morifice_12', 'target_port': 'port_3', 'submodel': 'PNL0003', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R-C)'}, {'index': 47, 'alias': 'pneumatic_79', 'source_component': 'pnnode4_23', 'source_port': 'port_4', 'target_component': 'pn_morifice_11', 'target_port': 'port_2', 'submodel': 'PNL0001', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R)'}, {'index': 48, 'alias': 'pneumatic_80', 'source_component': 'pnnode4_18', 'source_port': 'port_1', 'target_component': 'pnnode4_19', 'target_port': 'port_3', 'submodel': 'PNL0002', 'label': 'Compressibility + friction submodel of pneumatic pipe (R-C-R)'}, {'index': 49, 'alias': 'pneumatic_81', 'source_component': 'pnnode4_23', 'source_port': 'port_1', 'target_component': 'pnnode4_20', 'target_port': 'port_3', 'submodel': 'PNL0002', 'label': 'Compressibility + friction submodel of pneumatic pipe (R-C-R)'}, {'index': 50, 'alias': 'pneumatic_82', 'source_component': 'pnnode4_21', 'source_port': 'port_1', 'target_component': 'pnnode4_22', 'target_port': 'port_3', 'submodel': 'PNL0002', 'label': 'Compressibility + friction submodel of pneumatic pipe (R-C-R)'}, {'index': 51, 'alias': 'pneumatic_83', 'source_component': 'pnnode4_16', 'source_port': 'port_1', 'target_component': 'pnnode4_17', 'target_port': 'port_3', 'submodel': 'PNL0002', 'label': 'Compressibility + friction submodel of pneumatic pipe (R-C-R)'}, {'index': 52, 'alias': 'pneumatic_84', 'source_component': 'pnnode4_20', 'source_port': 'port_1', 'target_component': 'pnnode4_21', 'target_port': 'port_3', 'submodel': 'PNL0002', 'label': 'Compressibility + friction submodel of pneumatic pipe (R-C-R)'}, {'index': 53, 'alias': 'pneumatic_85', 'source_component': 'pnnode4_19', 'source_port': 'port_1', 'target_component': 'pnnode4_23', 'target_port': 'port_3', 'submodel': 'PNL0002', 'label': 'Compressibility + friction submodel of pneumatic pipe (R-C-R)'}, {'index': 54, 'alias': 'pneumatic_86', 'source_component': 'pnnode4_17', 'source_port': 'port_1', 'target_component': 'pnnode4_18', 'target_port': 'port_3', 'submodel': 'PNL0002', 'label': 'Compressibility + friction submodel of pneumatic pipe (R-C-R)'}, {'index': 55, 'alias': 'pneumatic_87', 'source_component': 'pn_node3_8', 'source_port': 'port_2', 'target_component': 'pn_morifice_1', 'target_port': 'port_3', 'submodel': 'PNL0003', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R-C)'}, {'index': 56, 'alias': 'pneumatic_88', 'source_component': 'pn_node3_9', 'source_port': 'port_2', 'target_component': 'pn_morifice_9', 'target_port': 'port_3', 'submodel': 'PNL0003', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R-C)'}, {'index': 57, 'alias': 'pneumatic_89', 'source_component': 'pn_morifice_1', 'source_port': 'port_2', 'target_component': 'pnnode4_16', 'target_port': 'port_4', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 58, 'alias': 'pneumatic_90', 'source_component': 'pn_morifice_9', 'source_port': 'port_2', 'target_component': 'pnnode4_17', 'target_port': 'port_4', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 59, 'alias': 'pneumatic_91', 'source_component': 'pn_node3_14', 'source_port': 'port_2', 'target_component': 'pn_morifice_13', 'target_port': 'port_3', 'submodel': 'PNL0003', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R-C)'}, {'index': 60, 'alias': 'pneumatic_92', 'source_component': 'pn_node3_15', 'source_port': 'port_2', 'target_component': 'pn_morifice_14', 'target_port': 'port_3', 'submodel': 'PNL0003', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R-C)'}, {'index': 61, 'alias': 'pneumatic_93', 'source_component': 'pn_morifice_13', 'source_port': 'port_2', 'target_component': 'pnnode4_21', 'target_port': 'port_4', 'submodel': 'PNL0001', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R)'}, {'index': 62, 'alias': 'pneumatic_94', 'source_component': 'pn_morifice_14', 'source_port': 'port_2', 'target_component': 'pnnode4_22', 'target_port': 'port_4', 'submodel': 'PNL0001', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R)'}, {'index': 63, 'alias': 'pneumatic_95', 'source_component': 'pnnode4_22', 'source_port': 'port_1', 'target_component': 'pnnode4_16', 'target_port': 'port_3', 'submodel': 'PNL0002', 'label': 'Compressibility + friction submodel of pneumatic pipe (R-C-R)'}, {'index': 64, 'alias': 'pneumatic_96', 'source_component': 'pn_node3_8', 'source_port': 'port_1', 'target_component': 'pn_orifice_18', 'target_port': 'port_2', 'submodel': 'PNL0001', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R)'}, {'index': 65, 'alias': 'pneumatic_97', 'source_component': 'pn_orifice_19', 'source_port': 'port_1', 'target_component': 'pn_node3_9', 'target_port': 'port_3', 'submodel': 'PNL0001', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R)'}, {'index': 66, 'alias': 'pneumatic_98', 'source_component': 'pn_node3_10', 'source_port': 'port_1', 'target_component': 'pn_orifice_20', 'target_port': 'port_2', 'submodel': 'PNL0001', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R)'}, {'index': 67, 'alias': 'pneumatic_99', 'source_component': 'pn_orifice_21', 'source_port': 'port_1', 'target_component': 'pn_node3_11', 'target_port': 'port_3', 'submodel': 'PNL0001', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R)'}, {'index': 68, 'alias': 'pneumatic_100', 'source_component': 'pn_node3_9', 'source_port': 'port_1', 'target_component': 'pn_node3_10', 'target_port': 'port_3', 'submodel': 'PNL00R', 'label': 'Friction submodel of pneumatic pipe (R)'}, {'index': 69, 'alias': 'pneumatic_101', 'source_component': 'pn_node3_12', 'source_port': 'port_1', 'target_component': 'pn_orifice_22', 'target_port': 'port_2', 'submodel': 'PNL0001', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R)'}, {'index': 70, 'alias': 'pneumatic_102', 'source_component': 'pn_orifice_23', 'source_port': 'port_1', 'target_component': 'pn_node3_13', 'target_port': 'port_3', 'submodel': 'PNL0001', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R)'}, {'index': 71, 'alias': 'pneumatic_103', 'source_component': 'pn_node3_14', 'source_port': 'port_1', 'target_component': 'pn_orifice_24', 'target_port': 'port_2', 'submodel': 'PNL0001', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R)'}, {'index': 72, 'alias': 'pneumatic_104', 'source_component': 'pn_orifice_25', 'source_port': 'port_1', 'target_component': 'pn_node3_15', 'target_port': 'port_3', 'submodel': 'PNL0001', 'label': 'Compressibility + friction submodel of pneumatic pipe (C-R)'}, {'index': 73, 'alias': 'pneumatic_105', 'source_component': 'pn_node3_8', 'source_port': 'port_3', 'target_component': 'pn_node3_15', 'target_port': 'port_1', 'submodel': 'PNL00R', 'label': 'Friction submodel of pneumatic pipe (R)'}, {'index': 74, 'alias': 'pneumatic_106', 'source_component': 'pn_node3_13', 'source_port': 'port_1', 'target_component': 'pn_node3_14', 'target_port': 'port_3', 'submodel': 'PNL00R', 'label': 'Friction submodel of pneumatic pipe (R)'}, {'index': 75, 'alias': 'pneumatic_107', 'source_component': 'pn_node3_11', 'source_port': 'port_1', 'target_component': 'pn_node3_12', 'target_port': 'port_3', 'submodel': 'PNL00R', 'label': 'Friction submodel of pneumatic pipe (R)'}, {'index': 76, 'alias': 'control_8', 'source_component': 'step_8', 'source_port': 'port_1', 'target_component': 'pn_morifice_11', 'target_port': 'port_1', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 77, 'alias': 'control_9', 'source_component': 'step_9', 'source_port': 'port_1', 'target_component': 'pn_morifice_12', 'target_port': 'port_1', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 78, 'alias': 'control_10', 'source_component': 'step_10', 'source_port': 'port_1', 'target_component': 'pn_morifice_13', 'target_port': 'port_1', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 79, 'alias': 'control_11', 'source_component': 'step_11', 'source_port': 'port_1', 'target_component': 'pn_morifice_14', 'target_port': 'port_1', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 80, 'alias': 'control_12', 'source_component': 'step_12', 'source_port': 'port_1', 'target_component': 'pn_morifice_1', 'target_port': 'port_1', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 81, 'alias': 'control_13', 'source_component': 'step_13', 'source_port': 'port_1', 'target_component': 'pn_morifice_9', 'target_port': 'port_1', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 82, 'alias': 'control_14', 'source_component': 'step_14', 'source_port': 'port_1', 'target_component': 'pn_morifice_10', 'target_port': 'port_1', 'submodel': 'DIRECT', 'label': 'Direct connection'}, {'index': 83, 'alias': 'control_15', 'source_component': 'step_15', 'source_port': 'port_1', 'target_component': 'pn_morifice_15', 'target_port': 'port_1', 'submodel': 'DIRECT', 'label': 'Direct connection'}] @dataclass(frozen=True) class TestMqlRunConfig: t_start: float = SIMULATION_SETTINGS["t_start"] t_stop: float = SIMULATION_SETTINGS["t_stop"] sample_step: float = SIMULATION_SETTINGS["sample_step"] def sample_times(self) -> list[float]: if self.sample_step <= 0.0: raise ValueError("sample_step must be positive") point_count = int(round((self.t_stop - self.t_start) / self.sample_step)) return [self.t_start + index * self.sample_step for index in range(point_count + 1)] @dataclass(frozen=True) class TestMqlSnapshot: model_name: str component_count: int connection_count: int continuous_state_count: int discrete_state_count: int global_parameters: dict[str, str] submodel_counts: dict[str, int] @dataclass(frozen=True) class TestMqlSimulationResult: t: list[float] y: list[list[float]] series: dict[str, list[float]] class AmesimStructuralComponent(Component): def __init__(self, spec: dict[str, object]) -> None: super().__init__(name=str(spec["alias"])) self.spec = spec self.submodel = str(spec["submodel"]) self.component_name = str(spec["component_name"]) self.parameters = { str(parameter["name"]): parameter for parameter in spec.get("parameters", []) } @property def port_names(self) -> tuple[str, ...]: return tuple(str(port["name"]) for port in self.spec.get("ports", [])) class TestMqlSystem: """Structural Python port scaffold for AMESim model ``test_mql``.""" def __init__(self, archive_path: Path | None = None) -> None: self.archive_path = archive_path or Path(__file__).resolve().parents[2] / AMESIM_ARCHIVE_RELATIVE_PATH self.network = SimulationNetwork(name=MODEL_NAME) for spec in COMPONENT_SPECS: self.network.add_component(AmesimStructuralComponent(spec)) for spec in CONNECTION_SPECS: self.network.connect( str(spec["source_component"]), str(spec["source_port"]), str(spec["target_component"]), str(spec["target_port"]), ) def snapshot(self) -> TestMqlSnapshot: return TestMqlSnapshot( model_name=MODEL_NAME, component_count=len(COMPONENT_SPECS), connection_count=len(CONNECTION_SPECS), continuous_state_count=int(MODEL_INFO.get("num_states", 0)), discrete_state_count=int(MODEL_INFO.get("num_discrete_states", 0)), global_parameters=dict(GLOBAL_PARAMETERS), submodel_counts=dict(SUBMODEL_COUNTS), ) def initial_state_vector(self) -> list[float]: return [0.0] * int(MODEL_INFO.get("num_states", 0)) def simulate(self, config: TestMqlRunConfig | None = None) -> TestMqlSimulationResult: run_config = config or TestMqlRunConfig() times = run_config.sample_times() state_count = int(MODEL_INFO.get("num_states", 0)) y = [[0.0 for _ in times] for _ in range(state_count)] series = self.evaluate_solution(SimpleNamespace(t=times, y=y)) return TestMqlSimulationResult(t=times, y=y, series=series) def evaluate_solution(self, solution: object) -> dict[str, list[float]]: times = [float(value) for value in solution.t] return { "time": times, "component_count": [float(len(COMPONENT_SPECS)) for _ in times], "connection_count": [float(len(CONNECTION_SPECS)) for _ in times], "continuous_state_count": [float(MODEL_INFO.get("num_states", 0)) for _ in times], "discrete_state_count": [float(MODEL_INFO.get("num_discrete_states", 0)) for _ in times], } def component_specs_by_submodel(self) -> dict[str, list[dict[str, object]]]: grouped: dict[str, list[dict[str, object]]] = {} for spec in COMPONENT_SPECS: grouped.setdefault(str(spec["submodel"]), []).append(spec) return grouped def connection_specs_by_submodel(self) -> dict[str, list[dict[str, object]]]: grouped: dict[str, list[dict[str, object]]] = {} for spec in CONNECTION_SPECS: grouped.setdefault(str(spec["submodel"]), []).append(spec) return grouped def build_test_mql() -> SimulationNetwork: return TestMqlSystem().network