diff --git a/pathview/data/registry.json b/pathview/data/registry.json index cf3fb20..11555c3 100644 --- a/pathview/data/registry.json +++ b/pathview/data/registry.json @@ -138,7 +138,8 @@ "blockClass": "Delay", "importPath": "pathsim.blocks", "params": [ - "tau" + "tau", + "sampling_period" ] }, "ODE": { @@ -304,6 +305,14 @@ "importPath": "pathsim.blocks", "params": [] }, + "Divider": { + "blockClass": "Divider", + "importPath": "pathsim.blocks", + "params": [ + "operations", + "zero_div" + ] + }, "Amplifier": { "blockClass": "Amplifier", "importPath": "pathsim.blocks", @@ -385,11 +394,32 @@ "exponent" ] }, + "Atan2": { + "blockClass": "Atan2", + "importPath": "pathsim.blocks", + "params": [] + }, + "Rescale": { + "blockClass": "Rescale", + "importPath": "pathsim.blocks", + "params": [ + "i0", + "i1", + "o0", + "o1", + "saturate" + ] + }, + "Alias": { + "blockClass": "Alias", + "importPath": "pathsim.blocks", + "params": [] + }, "Switch": { "blockClass": "Switch", "importPath": "pathsim.blocks", "params": [ - "state" + "switch_state" ] }, "LUT": { @@ -409,6 +439,38 @@ "fill_value" ] }, + "GreaterThan": { + "blockClass": "GreaterThan", + "importPath": "pathsim.blocks", + "params": [] + }, + "LessThan": { + "blockClass": "LessThan", + "importPath": "pathsim.blocks", + "params": [] + }, + "Equal": { + "blockClass": "Equal", + "importPath": "pathsim.blocks", + "params": [ + "tolerance" + ] + }, + "LogicAnd": { + "blockClass": "LogicAnd", + "importPath": "pathsim.blocks", + "params": [] + }, + "LogicOr": { + "blockClass": "LogicOr", + "importPath": "pathsim.blocks", + "params": [] + }, + "LogicNot": { + "blockClass": "LogicNot", + "importPath": "pathsim.blocks", + "params": [] + }, "SampleHold": { "blockClass": "SampleHold", "importPath": "pathsim.blocks", @@ -480,6 +542,15 @@ "value_down" ] }, + "Wrapper": { + "blockClass": "Wrapper", + "importPath": "pathsim.blocks", + "params": [ + "func", + "T", + "tau" + ] + }, "Scope": { "blockClass": "Scope", "importPath": "pathsim.blocks", @@ -511,32 +582,43 @@ }, "Process": { "blockClass": "Process", - "importPath": "pathsim_chem.tritium", + "importPath": "pathsim_chem", "params": [ "tau", "initial_value", "source_term" ] }, - "Bubbler4": { - "blockClass": "Bubbler4", - "importPath": "pathsim_chem.tritium", + "ResidenceTime": { + "blockClass": "ResidenceTime", + "importPath": "pathsim_chem", "params": [ - "conversion_efficiency", - "vial_efficiency", - "replacement_times" + "tau", + "betas", + "gammas", + "initial_value", + "source_term" ] }, "Splitter": { "blockClass": "Splitter", - "importPath": "pathsim_chem.tritium", + "importPath": "pathsim_chem", "params": [ "fractions" ] }, + "Bubbler4": { + "blockClass": "Bubbler4", + "importPath": "pathsim_chem", + "params": [ + "conversion_efficiency", + "vial_efficiency", + "replacement_times" + ] + }, "GLC": { "blockClass": "GLC", - "importPath": "pathsim_chem.tritium", + "importPath": "pathsim_chem", "params": [ "P_in", "L", @@ -546,6 +628,99 @@ "g", "initial_nb_of_elements" ] + }, + "CSTR": { + "blockClass": "CSTR", + "importPath": "pathsim_chem", + "params": [ + "V", + "F", + "k0", + "Ea", + "n", + "dH_rxn", + "rho", + "Cp", + "UA", + "C_A0", + "T0" + ] + }, + "PFR": { + "blockClass": "PFR", + "importPath": "pathsim_chem", + "params": [ + "N_cells", + "V", + "F", + "k0", + "Ea", + "n", + "dH_rxn", + "rho", + "Cp", + "C0", + "T0" + ] + }, + "HeatExchanger": { + "blockClass": "HeatExchanger", + "importPath": "pathsim_chem", + "params": [ + "N_cells", + "F_h", + "F_c", + "V_h", + "V_c", + "UA", + "rho_h", + "Cp_h", + "rho_c", + "Cp_c", + "T_h0", + "T_c0" + ] + }, + "FlashDrum": { + "blockClass": "FlashDrum", + "importPath": "pathsim_chem", + "params": [ + "holdup", + "antoine_A", + "antoine_B", + "antoine_C", + "N0" + ] + }, + "Mixer": { + "blockClass": "Mixer", + "importPath": "pathsim_chem", + "params": [] + }, + "Valve": { + "blockClass": "Valve", + "importPath": "pathsim_chem", + "params": [ + "Cv" + ] + }, + "Heater": { + "blockClass": "Heater", + "importPath": "pathsim_chem", + "params": [ + "rho", + "Cp" + ] + }, + "PointKinetics": { + "blockClass": "PointKinetics", + "importPath": "pathsim_chem", + "params": [ + "n0", + "Lambda", + "beta", + "lam" + ] } }, "events": { diff --git a/scripts/generated/registry.json b/scripts/generated/registry.json index cf3fb20..11555c3 100644 --- a/scripts/generated/registry.json +++ b/scripts/generated/registry.json @@ -138,7 +138,8 @@ "blockClass": "Delay", "importPath": "pathsim.blocks", "params": [ - "tau" + "tau", + "sampling_period" ] }, "ODE": { @@ -304,6 +305,14 @@ "importPath": "pathsim.blocks", "params": [] }, + "Divider": { + "blockClass": "Divider", + "importPath": "pathsim.blocks", + "params": [ + "operations", + "zero_div" + ] + }, "Amplifier": { "blockClass": "Amplifier", "importPath": "pathsim.blocks", @@ -385,11 +394,32 @@ "exponent" ] }, + "Atan2": { + "blockClass": "Atan2", + "importPath": "pathsim.blocks", + "params": [] + }, + "Rescale": { + "blockClass": "Rescale", + "importPath": "pathsim.blocks", + "params": [ + "i0", + "i1", + "o0", + "o1", + "saturate" + ] + }, + "Alias": { + "blockClass": "Alias", + "importPath": "pathsim.blocks", + "params": [] + }, "Switch": { "blockClass": "Switch", "importPath": "pathsim.blocks", "params": [ - "state" + "switch_state" ] }, "LUT": { @@ -409,6 +439,38 @@ "fill_value" ] }, + "GreaterThan": { + "blockClass": "GreaterThan", + "importPath": "pathsim.blocks", + "params": [] + }, + "LessThan": { + "blockClass": "LessThan", + "importPath": "pathsim.blocks", + "params": [] + }, + "Equal": { + "blockClass": "Equal", + "importPath": "pathsim.blocks", + "params": [ + "tolerance" + ] + }, + "LogicAnd": { + "blockClass": "LogicAnd", + "importPath": "pathsim.blocks", + "params": [] + }, + "LogicOr": { + "blockClass": "LogicOr", + "importPath": "pathsim.blocks", + "params": [] + }, + "LogicNot": { + "blockClass": "LogicNot", + "importPath": "pathsim.blocks", + "params": [] + }, "SampleHold": { "blockClass": "SampleHold", "importPath": "pathsim.blocks", @@ -480,6 +542,15 @@ "value_down" ] }, + "Wrapper": { + "blockClass": "Wrapper", + "importPath": "pathsim.blocks", + "params": [ + "func", + "T", + "tau" + ] + }, "Scope": { "blockClass": "Scope", "importPath": "pathsim.blocks", @@ -511,32 +582,43 @@ }, "Process": { "blockClass": "Process", - "importPath": "pathsim_chem.tritium", + "importPath": "pathsim_chem", "params": [ "tau", "initial_value", "source_term" ] }, - "Bubbler4": { - "blockClass": "Bubbler4", - "importPath": "pathsim_chem.tritium", + "ResidenceTime": { + "blockClass": "ResidenceTime", + "importPath": "pathsim_chem", "params": [ - "conversion_efficiency", - "vial_efficiency", - "replacement_times" + "tau", + "betas", + "gammas", + "initial_value", + "source_term" ] }, "Splitter": { "blockClass": "Splitter", - "importPath": "pathsim_chem.tritium", + "importPath": "pathsim_chem", "params": [ "fractions" ] }, + "Bubbler4": { + "blockClass": "Bubbler4", + "importPath": "pathsim_chem", + "params": [ + "conversion_efficiency", + "vial_efficiency", + "replacement_times" + ] + }, "GLC": { "blockClass": "GLC", - "importPath": "pathsim_chem.tritium", + "importPath": "pathsim_chem", "params": [ "P_in", "L", @@ -546,6 +628,99 @@ "g", "initial_nb_of_elements" ] + }, + "CSTR": { + "blockClass": "CSTR", + "importPath": "pathsim_chem", + "params": [ + "V", + "F", + "k0", + "Ea", + "n", + "dH_rxn", + "rho", + "Cp", + "UA", + "C_A0", + "T0" + ] + }, + "PFR": { + "blockClass": "PFR", + "importPath": "pathsim_chem", + "params": [ + "N_cells", + "V", + "F", + "k0", + "Ea", + "n", + "dH_rxn", + "rho", + "Cp", + "C0", + "T0" + ] + }, + "HeatExchanger": { + "blockClass": "HeatExchanger", + "importPath": "pathsim_chem", + "params": [ + "N_cells", + "F_h", + "F_c", + "V_h", + "V_c", + "UA", + "rho_h", + "Cp_h", + "rho_c", + "Cp_c", + "T_h0", + "T_c0" + ] + }, + "FlashDrum": { + "blockClass": "FlashDrum", + "importPath": "pathsim_chem", + "params": [ + "holdup", + "antoine_A", + "antoine_B", + "antoine_C", + "N0" + ] + }, + "Mixer": { + "blockClass": "Mixer", + "importPath": "pathsim_chem", + "params": [] + }, + "Valve": { + "blockClass": "Valve", + "importPath": "pathsim_chem", + "params": [ + "Cv" + ] + }, + "Heater": { + "blockClass": "Heater", + "importPath": "pathsim_chem", + "params": [ + "rho", + "Cp" + ] + }, + "PointKinetics": { + "blockClass": "PointKinetics", + "importPath": "pathsim_chem", + "params": [ + "n0", + "Lambda", + "beta", + "lam" + ] } }, "events": { diff --git a/src/lib/pyodide/pathsimRunner.ts b/src/lib/pyodide/pathsimRunner.ts index 9c83bb1..d9dbea1 100644 --- a/src/lib/pyodide/pathsimRunner.ts +++ b/src/lib/pyodide/pathsimRunner.ts @@ -396,8 +396,13 @@ export function generatePythonCode( } else { lines.push('from pathsim import Simulation, Connection'); } - for (const [importPath] of importGroups) { - lines.push(`from ${importPath} import *`); + for (const [importPath, classes] of importGroups) { + const sorted = [...classes].sort(); + if (sorted.length === 1) { + lines.push(`from ${importPath} import ${sorted[0]}`); + } else { + lines.push(`from ${importPath} import ${sorted.join(', ')}`); + } } // Ensure at least pathsim.blocks is imported even if no blocks if (!importGroups.has('pathsim.blocks')) {