diff --git a/AmesimModels/test_mql/README.md b/AmesimModels/test_mql/README.md new file mode 100644 index 0000000..dacba8c --- /dev/null +++ b/AmesimModels/test_mql/README.md @@ -0,0 +1,16 @@ +# test_mql + +Model name used in this repository: `test_mql`. + +Source AMESim archive: `AmesimModels/test_mql.ame`. + +Python port files added for this model: + +- `PythonModels/systems/test_mql.py` +- `PythonModels/scripts/run_test_mql.py` + +Current status: structural port scaffold. It records the AMESim component +inventory, global parameters, submodel counts, connection topology, and the +AMESim modelinfo state counts. Existing PythonModels code is not modified. +Detailed physical equations should be filled in incrementally per AMESim +submodel family. diff --git a/PythonModels/scripts/run_test_mql.py b/PythonModels/scripts/run_test_mql.py new file mode 100644 index 0000000..0fd7977 --- /dev/null +++ b/PythonModels/scripts/run_test_mql.py @@ -0,0 +1,74 @@ +from __future__ import annotations + +from dataclasses import dataclass, field +from datetime import UTC, datetime +from pathlib import Path + +from PythonModels.systems.test_mql import TestMqlRunConfig, TestMqlSystem + + +@dataclass(frozen=True) +class TestMqlPathConfig: + output_dir: Path | None = None + + +@dataclass(frozen=True) +class TestMqlExecutionConfig: + write_summary: bool = True + + +@dataclass(frozen=True) +class TestMqlScriptConfig: + run: TestMqlRunConfig = field(default_factory=TestMqlRunConfig) + paths: TestMqlPathConfig = field(default_factory=TestMqlPathConfig) + execution: TestMqlExecutionConfig = field(default_factory=TestMqlExecutionConfig) + + +def _default_output_dir() -> Path: + pythonmodels_root = Path(__file__).resolve().parents[1] + timestamp = datetime.now(UTC).strftime("test_mql_%Y%m%d_%H%M%S_%f") + return pythonmodels_root / "runs" / timestamp + + +def format_test_mql_summary(system: TestMqlSystem) -> str: + snapshot = system.snapshot() + lines = [ + "Model: test_mql", + f"Source archive: {system.archive_path}", + f"Components: {snapshot.component_count}", + f"Connections: {snapshot.connection_count}", + f"Continuous states in AMESim modelinfo: {snapshot.continuous_state_count}", + f"Discrete states in AMESim modelinfo: {snapshot.discrete_state_count}", + "Global parameters:", + ] + for name, value in sorted(snapshot.global_parameters.items()): + lines.append(f" - {name}: {value}") + lines.append("Component submodels:") + for name, count in sorted(snapshot.submodel_counts.items()): + lines.append(f" - {name}: {count}") + return "\n".join(lines) + "\n" + + +def run_test_mql(config: TestMqlScriptConfig | None = None): + config = config or TestMqlScriptConfig() + system = TestMqlSystem() + result = system.simulate(config.run) + output_dir = config.paths.output_dir or _default_output_dir() + if config.execution.write_summary: + output_dir.mkdir(parents=True, exist_ok=True) + (output_dir / "test_mql_model_summary.txt").write_text( + format_test_mql_summary(system), + encoding="utf-8", + ) + return system, result, output_dir + + +def main() -> None: + system, result, output_dir = run_test_mql() + print(format_test_mql_summary(system), end="") + print(f"Samples: {len(result.t)}") + print(f"Output directory: {output_dir}") + + +if __name__ == "__main__": + main() diff --git a/PythonModels/systems/test_mql.py b/PythonModels/systems/test_mql.py new file mode 100644 index 0000000..d3857a6 --- /dev/null +++ b/PythonModels/systems/test_mql.py @@ -0,0 +1,3917 @@ +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 diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_test_mql_structural.py b/tests/test_test_mql_structural.py new file mode 100644 index 0000000..dd76bf4 --- /dev/null +++ b/tests/test_test_mql_structural.py @@ -0,0 +1,46 @@ +from __future__ import annotations + +import unittest + +from PythonModels.systems.test_mql import GLOBAL_PARAMETERS, SUBMODEL_COUNTS, TestMqlSystem + + +class TestMqlStructuralTest(unittest.TestCase): + def test_snapshot_matches_amesim_archive_metadata(self) -> None: + snapshot = TestMqlSystem().snapshot() + + self.assertEqual(snapshot.model_name, "test_mql") + self.assertEqual(snapshot.component_count, 117) + self.assertEqual(snapshot.connection_count, 84) + self.assertEqual(snapshot.continuous_state_count, 132) + self.assertEqual(snapshot.discrete_state_count, 24) + self.assertEqual(snapshot.global_parameters["P0"], "153") + self.assertEqual(snapshot.global_parameters["cf"], "0.45") + + def test_network_preserves_component_and_connection_counts(self) -> None: + system = TestMqlSystem() + + self.assertEqual(len(system.network.components), 117) + self.assertEqual(len(system.network.connections), 84) + self.assertIn("pn_brp2_8", system.network.components) + self.assertIn("pn_gas_data", system.network.components) + + def test_submodel_counts_keep_key_amesim_families(self) -> None: + self.assertEqual(SUBMODEL_COUNTS["PNRP17"], 8) + self.assertEqual(SUBMODEL_COUNTS["PNCH012"], 8) + self.assertEqual(SUBMODEL_COUNTS["PNOR001"], 8) + self.assertEqual(SUBMODEL_COUNTS["PNVO001"], 8) + self.assertEqual(SUBMODEL_COUNTS["PNGD00"], 1) + self.assertEqual(GLOBAL_PARAMETERS["V"], "15") + + def test_structural_simulation_shape(self) -> None: + result = TestMqlSystem().simulate() + + self.assertEqual(len(result.t), 101) + self.assertEqual(len(result.y), 132) + self.assertEqual(result.series["component_count"][0], 117.0) + self.assertEqual(result.series["connection_count"][0], 84.0) + + +if __name__ == "__main__": + unittest.main()