Example #1
0
def test_load_composite_connections():
    JSON_STRING = """
    {"systems": {
        "controlled_spring": {
            "type": "CompositeSystem",
            "module": "pysim.compositesystem",
            "connections": [],
            "inputs": {"amp": 0.0},
            "ports": {
                "in": {
                    "amp": {
                        "connections": [{"input": "amplitude", "subsystem": "wave_sys"}],
                        "description": "amplitude of wave",
                        "type": "scalar",
                        "value": 0.0
                        }
                    },
                "out": {
                    "out": {
                        "connections": [{"output": "x1", "subsystem": "msd"}],
                        "description": "position",
                        "type": "scalar",
                        "value": 0.0
                        },
                    "signal": {
                        "connections": [{"output": "signal", "subsystem": "wave_sys"}],
                        "description": "signal from wave",
                        "type": "scalar",
                        "value": 0.0
                        }
                    }
                },
            "stores": [],
            "subsystems": {
                "msd": {
                    "connections": [],
                    "inputs": {"b": 80.0, "f": 0.0, "k": 50.0, "m": 50.0},
                    "module": "pysim.systems.defaultsystemcollection1",
                    "stores": [],
                    "type": "MassSpringDamper"
                    },
                "wave_sys": {
                    "connections": [["signal", "msd", "f"]],
                    "inputs": {"amplitude": 50.0, "freq": 0.1, "phaseRad": 0.0},
                    "module": "pysim.systems.defaultsystemcollection1",
                    "stores": [],
                    "type": "SquareWave"
                    }
                }
            }
        }
    }
    """
    sim = Sim()
    file = tempfile.NamedTemporaryFile(delete=False, mode="w+")
    file.write(JSON_STRING)
    file.close()
    sim.load_config(file.name)
    sim.simulate(2, 0.1)
    assert np.abs(sim.systems["controlled_spring"].outputs.out-0.3240587706226495) < 1e-10
Example #2
0
def test_load_connections():
    JSON_STRING = """
    {"systems": {
        "msd": {
            "connections": [],
            "inputs": {"b": 80.0, "f": 0.0, "k": 50.0, "m": 50.0},
            "module": "pysim.systems.defaultsystemcollection1",
            "stores": [],
            "type": "MassSpringDamper"
            },
        "wave_sys": {
            "connections": [["signal", "msd", "f"]],
            "inputs": {"amplitude": 50.0, "freq": 0.1,"phaseRad": 0.0},
            "module": "pysim.systems.defaultsystemcollection1",
            "stores": [],
            "type": "SquareWave"
            }
        }
    }
    """
    sim = Sim()
    file = tempfile.NamedTemporaryFile(delete=False, mode="w+")
    file.write(JSON_STRING)
    file.close()
    sim.load_config(file.name)
    sim.simulate(2, 0.1)
    res = sim.systems["msd"].states.x1
    assert np.abs(sim.systems["msd"].states.x1-0.3240587706226495) < 1e-10
Example #3
0
def test_load_config():
    """Tests the loading of a system configuration from file"""

    configstring = """{
    "systems": {
        "vanderpol1": {
            "inputs": {
                "a": 1.234,
                "b": 1.0
            },
            "module": "pysim.systems.defaultsystemcollection1",
            "type": "VanDerPol",
            "connections": []
        },
       "vanderpol2": {
            "inputs": {
                "a": 1.0,
                "b": 3.456
            },
            "module": "pysim.systems.python_systems",
            "type": "VanDerPol",
            "connections": []
        }
    }
}
"""

    sim = Sim()
    file = tempfile.NamedTemporaryFile(delete=False, mode="w+")
    file.write(configstring)
    file.close()
    sim.load_config(file.name)
    assert sim.systems["vanderpol1"].inputs.a == 1.234
    assert sim.systems["vanderpol2"].inputs.b == 3.456
Example #4
0
def test_load_connections():
    JSON_STRING = """
    {"systems": {
        "msd": {
            "connections": [],
            "inputs": {"b": 80.0, "f": 0.0, "k": 50.0, "m": 50.0},
            "module": "pysim.systems.defaultsystemcollection1",
            "stores": [],
            "type": "MassSpringDamper"
            },
        "wave_sys": {
            "connections": [["signal", "msd", "f"]],
            "inputs": {"amplitude": 50.0, "freq": 0.1,"phaseRad": 0.0},
            "module": "pysim.systems.defaultsystemcollection1",
            "stores": [],
            "type": "SquareWave"
            }
        }
    }
    """
    sim = Sim()
    file = tempfile.NamedTemporaryFile(delete=False, mode="w+")
    file.write(JSON_STRING)
    file.close()
    sim.load_config(file.name)
    sim.simulate(2, 0.1)
    res = sim.systems["msd"].states.x1
    assert np.abs(sim.systems["msd"].states.x1 - 0.3240587706226495) < 1e-10
Example #5
0
def test_load_config():
    """Tests the loading of a system configuration from file"""

    configstring = """{
    "systems": {
        "vanderpol1": {
            "inputs": {
                "a": 1.234,
                "b": 1.0
            },
            "module": "pysim.systems.defaultsystemcollection1",
            "type": "VanDerPol",
            "connections": []
        },
       "vanderpol2": {
            "inputs": {
                "a": 1.0,
                "b": 3.456
            },
            "module": "pysim.systems.python_systems",
            "type": "VanDerPol",
            "connections": []
        }
    }
}
"""

    sim = Sim()
    file = tempfile.NamedTemporaryFile(delete=False, mode="w+")
    file.write(configstring)
    file.close()
    sim.load_config(file.name)
    assert sim.systems["vanderpol1"].inputs.a == 1.234
    assert sim.systems["vanderpol2"].inputs.b == 3.456
Example #6
0
def test_load_composite_connections():
    JSON_STRING = """
    {"systems": {
        "controlled_spring": {
            "type": "CompositeSystem",
            "module": "pysim.compositesystem",
            "connections": [],
            "inputs": {"amp": 0.0},
            "ports": {
                "in": {
                    "amp": {
                        "connections": [{"input": "amplitude", "subsystem": "wave_sys"}],
                        "description": "amplitude of wave",
                        "type": "scalar",
                        "value": 0.0
                        }
                    },
                "out": {
                    "out": {
                        "connections": [{"output": "x1", "subsystem": "msd"}],
                        "description": "position",
                        "type": "scalar",
                        "value": 0.0
                        },
                    "signal": {
                        "connections": [{"output": "signal", "subsystem": "wave_sys"}],
                        "description": "signal from wave",
                        "type": "scalar",
                        "value": 0.0
                        }
                    }
                },
            "stores": [],
            "subsystems": {
                "msd": {
                    "connections": [],
                    "inputs": {"b": 80.0, "f": 0.0, "k": 50.0, "m": 50.0},
                    "module": "pysim.systems.defaultsystemcollection1",
                    "stores": [],
                    "type": "MassSpringDamper"
                    },
                "wave_sys": {
                    "connections": [["signal", "msd", "f"]],
                    "inputs": {"amplitude": 50.0, "freq": 0.1, "phaseRad": 0.0},
                    "module": "pysim.systems.defaultsystemcollection1",
                    "stores": [],
                    "type": "SquareWave"
                    }
                }
            }
        }
    }
    """
    sim = Sim()
    file = tempfile.NamedTemporaryFile(delete=False, mode="w+")
    file.write(JSON_STRING)
    file.close()
    sim.load_config(file.name)
    sim.simulate(2, 0.1)
    assert np.abs(sim.systems["controlled_spring"].outputs.out -
                  0.3240587706226495) < 1e-10