@@ -11,7 +11,7 @@ export const external = {
1111 consulting : 'https://milanrother.com/#services'
1212} ;
1313
14- export type PackageId = 'pathsim' | 'chem' | 'batt' | 'vehicle' | 'flight' | 'rf' ;
14+ export type PackageId = 'pathsim' | 'chem' | 'batt' | 'vehicle' | 'flight' | 'rf' | 'fmi' ;
1515
1616export interface Feature {
1717 title : string ;
@@ -292,11 +292,57 @@ scope.plot()`,
292292 { pip : 'pathsim' , import : 'pathsim' , pre : true } ,
293293 { pip : 'pathsim-rf' , import : 'pathsim_rf' , pre : true }
294294 ]
295+ } ,
296+ fmi : {
297+ id : 'fmi' ,
298+ name : 'PathSim-FMI' ,
299+ shortName : 'fmi' ,
300+ description : 'Wrap Co-Simulation and Model-Exchange FMUs (FMI 2.0 / 3.0) as PathSim blocks, driven by FMPy.' ,
301+ logo : 'pathsim_fmi_logo.png' ,
302+ docs : 'fmi' ,
303+ api : 'fmi/api' ,
304+ pypi : `${ external . pypi } /pathsim-fmi` ,
305+ conda : null ,
306+ github : `${ external . github } /pathsim-fmi` ,
307+ features : [
308+ { title : 'FMI 2.0 & 3.0' , description : 'Version-agnostic wrapper around the FMI standard via FMPy' } ,
309+ { title : 'Co-Simulation' , description : 'Drive an FMU as a slave on a fixed communication grid' } ,
310+ { title : 'Model Exchange' , description : 'Integrate an FMU with PathSim\'s own adaptive solvers' } ,
311+ { title : 'Low-level Access' , description : 'FMUWrapper exposes the full FMI API for advanced use cases' }
312+ ] ,
313+ installation : [
314+ { name : 'pip' , command : 'pip install pathsim-fmi' }
315+ ] ,
316+ quickstart : {
317+ description : 'Drop an FMU into a PathSim simulation as a co-simulation slave or a model-exchange system.' ,
318+ code : `from pathsim import Simulation, Connection
319+ from pathsim.blocks import Scope
320+ from pathsim_fmi import ModelExchangeFMU
321+
322+ fmu = ModelExchangeFMU("VanDerPol.fmu")
323+ sco = Scope(labels=["x0", "x1"], sampling_period=0.02)
324+
325+ sim = Simulation(
326+ blocks=[fmu, sco],
327+ connections=[
328+ Connection(fmu[0], sco[0]),
329+ Connection(fmu[1], sco[1]),
330+ ],
331+ dt=0.01,
332+ )
333+ sim.run(5.0)
334+ sco.plot()` ,
335+ title : 'Example'
336+ } ,
337+ apiModules : [
338+ { name : 'pathsim_fmi' , description : 'FMU blocks (CoSimulationFMU, ModelExchangeFMU) and low-level FMUWrapper' }
339+ ] ,
340+ pyodidePackages : [ ]
295341 }
296342} ;
297343
298344// Ordered list for tabs/navigation
299- export const packageOrder : PackageId [ ] = [ 'pathsim' , 'chem' , 'batt' , 'vehicle' , 'flight' , 'rf' ] ;
345+ export const packageOrder : PackageId [ ] = [ 'pathsim' , 'chem' , 'batt' , 'vehicle' , 'flight' , 'rf' , 'fmi' ] ;
300346
301347// Sidebar navigation (auto-generated from package config)
302348export interface SidebarItem {
0 commit comments