Skip to content

Bubbler / Bubbler4 block crashes during graph assembly when input vector has one value instead of two #298

@K0ati

Description

@K0ati

Description

I’m seeing a simulation failure when loading/running a minimal .pvm case that includes a tritium bubbler block.
When running a minimal .pvm case with a tritium Bubbler block, the simulation fails during initialization.

SIMULATION ERROR

Traceback (most recent call last):
  File "<exec>", line 37, in <module>
  File "/lib/python3.12/site-packages/pathsim/simulation.py", line 271, in __init__
    self._assemble_graph()
  File "/lib/python3.12/site-packages/pathsim/simulation.py", line 695, in _assemble_graph
    self.graph = Graph(self.blocks, self.connections)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.12/site-packages/pathsim/utils/graph.py", line 73, in __init__
    self._build_all_maps()
  File "/lib/python3.12/site-packages/pathsim/utils/graph.py", line 147, in _build_all_maps
    if len(blk) > 0:
       ^^^^^^^^
  File "/lib/python3.12/site-packages/pathsim/blocks/dynsys.py", line 97, in __len__
    has_passthrough = np.any(self.op_alg.jac_u(x, u, 0.0))
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.12/site-packages/pathsim/optim/operator.py", line 380, in jac_u
    return num_jac(func_u, u)
           ^^^^^^^^^^^^^^^^^^
  File "/lib/python3.12/site-packages/pathsim/optim/numerical.py", line 52, in num_jac
    [(func(x + hv) - func(x - hv)) / h
     ^^^^^^^^^^^^
  File "/lib/python3.12/site-packages/pathsim/optim/operator.py", line 378, in func_u
    return self._func(x, _u, t)
           ^^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.12/site-packages/pathsim_chem/tritium/bubbler.py", line 146, in _fn_a
    sol, ins = u
    ^^^^^^^^
ValueError: not enough values to unpack (expected 2, got 1)


Streaming simulation failed: Traceback (most recent call last):
  File "/lib/python312.zip/_pyodide/_base.py", line 596, in eval_code_async
    await CodeRunner(
  File "/lib/python312.zip/_pyodide/_base.py", line 410, in run_async
    coroutine = eval(self.code, globals, locals)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<exec>", line 37, in <module>
  File "/lib/python3.12/site-packages/pathsim/simulation.py", line 271, in __init__
    self._assemble_graph()
  File "/lib/python3.12/site-packages/pathsim/simulation.py", line 695, in _assemble_graph
    self.graph = Graph(self.blocks, self.connections)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.12/site-packages/pathsim/utils/graph.py", line 73, in __init__
    self._build_all_maps()
  File "/lib/python3.12/site-packages/pathsim/utils/graph.py", line 147, in _build_all_maps
    if len(blk) > 0:
       ^^^^^^^^
  File "/lib/python3.12/site-packages/pathsim/blocks/dynsys.py", line 97, in __len__
    has_passthrough = np.any(self.op_alg.jac_u(x, u, 0.0))
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.12/site-packages/pathsim/optim/operator.py", line 380, in jac_u
    return num_jac(func_u, u)
           ^^^^^^^^^^^^^^^^^^
  File "/lib/python3.12/site-packages/pathsim/optim/numerical.py", line 52, in num_jac
    [(func(x + hv) - func(x - hv)) / h
     ^^^^^^^^^^^^
  File "/lib/python3.12/site-packages/pathsim/optim/operator.py", line 378, in func_u
    return self._func(x, _u, t)
           ^^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.12/site-packages/pathsim_chem/tritium/bubbler.py", line 146, in _fn_a
    sol, ins = u
    ^^^^^^^^
ValueError: not enough values to unpack (expected 2, got 1)

NoneType: None

Essentially,

Bubbler._fn_a() expects two inputs, but during graph assembly / passthrough detection, PathSim calls it with only one input.

Minimal case file attached

Steps to Reproduce

min_bubbler_case.json

Expected Behavior

Either:

the bubbler block should validate that both required inputs are connected and raise a clearer error, or
graph assembly / passthrough detection should not call _fn_a() with an incorrectly sized dummy input vector.

Version

No response

Browser

No response

Additional Context

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions