[{"data":1,"prerenderedAt":408},["ShallowReactive",2],{"doc-core-concepts":3,"documentation-nav-slug":396},{"id":4,"title":5,"body":6,"category":386,"description":387,"extension":388,"meta":389,"navigation":390,"order":136,"path":391,"seo":392,"status":393,"stem":394,"__hash__":395},"documentation\u002Fdocumentation\u002Fcore-concepts\u002Findex.md","Core Concepts",{"type":7,"value":8,"toc":364},"minimark",[9,13,17,22,30,35,40,43,59,63,66,80,84,87,101,105,109,116,146,150,229,233,237,258,262,277,281,285,293,297,305,309,313,324,328,339,343,360],[10,11,5],"h1",{"id":12},"core-concepts",[14,15,16],"p",{},"Understanding the fundamental concepts behind SimFusion's visual programming model.",[18,19,21],"h2",{"id":20},"the-block-paradigm","The Block Paradigm",[14,23,24,25,29],{},"SimFusion uses a ",[26,27,28],"strong",{},"dataflow programming"," model where computation is represented as a directed graph of connected blocks.",[31,32,34],"h3",{"id":33},"types-of-blocks","Types of Blocks",[36,37,39],"h4",{"id":38},"source-blocks","Source Blocks",[14,41,42],{},"Generate or import data into the system:",[44,45,46,50,53,56],"ul",{},[47,48,49],"li",{},"Signal generators (sine, square, noise)",[47,51,52],{},"File readers (CSV, JSON, Excel)",[47,54,55],{},"Live data streams (MQTT, IoT feeds)",[47,57,58],{},"Database connectors",[36,60,62],{"id":61},"processing-blocks","Processing Blocks",[14,64,65],{},"Transform and analyze data:",[44,67,68,71,74,77],{},[47,69,70],{},"Mathematical operations (add, multiply, FFT)",[47,72,73],{},"Filters (low-pass, high-pass, Butterworth)",[47,75,76],{},"Statistical analysis (mean, variance, correlation)",[47,78,79],{},"Machine learning inference",[36,81,83],{"id":82},"sink-blocks","Sink Blocks",[14,85,86],{},"Output or visualize results:",[44,88,89,92,95,98],{},[47,90,91],{},"Real-time plots and charts",[47,93,94],{},"File writers",[47,96,97],{},"Live data streams",[47,99,100],{},"Cloud exporters",[18,102,104],{"id":103},"signals-and-data","Signals and Data",[31,106,108],{"id":107},"ndarray-first-design","NDArray-First Design",[14,110,111,112,115],{},"SimFusion is built around ",[26,113,114],{},"N-dimensional arrays"," (tensors) as the primary data type:",[117,118,123],"pre",{"className":119,"code":120,"language":121,"meta":122,"style":122},"language-python shiki shiki-themes github-light github-dark","# Example: 3-channel audio signal\nshape: (3, 1024)  # (channels, samples)\ndtype: float64\n","python","",[124,125,126,134,140],"code",{"__ignoreMap":122},[127,128,131],"span",{"class":129,"line":130},"line",1,[127,132,133],{},"# Example: 3-channel audio signal\n",[127,135,137],{"class":129,"line":136},2,[127,138,139],{},"shape: (3, 1024)  # (channels, samples)\n",[127,141,143],{"class":129,"line":142},3,[127,144,145],{},"dtype: float64\n",[31,147,149],{"id":148},"data-types","Data Types",[151,152,153,169],"table",{},[154,155,156],"thead",{},[157,158,159,163,166],"tr",{},[160,161,162],"th",{},"Type",[160,164,165],{},"Description",[160,167,168],{},"Example",[170,171,172,188,203,216],"tbody",{},[157,173,174,180,183],{},[175,176,177],"td",{},[124,178,179],{},"scalar",[175,181,182],{},"Single value",[175,184,185],{},[124,186,187],{},"3.14159",[157,189,190,195,198],{},[175,191,192],{},[124,193,194],{},"vector",[175,196,197],{},"1D array",[175,199,200],{},[124,201,202],{},"[1, 2, 3, 4, 5]",[157,204,205,210,213],{},[175,206,207],{},[124,208,209],{},"matrix",[175,211,212],{},"2D array",[175,214,215],{},"Image data, spectrogram",[157,217,218,223,226],{},[175,219,220],{},[124,221,222],{},"tensor",[175,224,225],{},"N-D array",[175,227,228],{},"Video (frames, height, width, channels)",[18,230,232],{"id":231},"data-flow","Data Flow",[31,234,236],{"id":235},"execution-model","Execution Model",[238,239,240,246,252],"ol",{},[47,241,242,245],{},[26,243,244],{},"Discrete-time",": Models advance sample by sample on a simulation clock",[47,247,248,251],{},[26,249,250],{},"Push-based",": Data flows from sources to sinks",[47,253,254,257],{},[26,255,256],{},"Vectorized",": Operations apply to entire arrays",[31,259,261],{"id":260},"sample-rate-and-timing","Sample Rate and Timing",[44,263,264,271,274],{},[47,265,266,267,270],{},"Each signal carries a ",[26,268,269],{},"sample rate"," metadata",[47,272,273],{},"Blocks can upsample, downsample, or resample",[47,275,276],{},"Real-time execution maintains timing constraints",[18,278,280],{"id":279},"projects-and-workspaces","Projects and Workspaces",[31,282,284],{"id":283},"project-structure","Project Structure",[117,286,291],{"className":287,"code":289,"language":290},[288],"language-text","MyProject\u002F\n├── model.sdl           # Main model file\n├── blocks\u002F\n│   ├── custom_block.py\n│   └── helpers.cpp\n├── data\u002F\n│   └── input.csv\n└── config.yaml\n","text",[124,292,289],{"__ignoreMap":122},[31,294,296],{"id":295},"project-history","Project History",[44,298,299,302],{},[47,300,301],{},"Track changes to models and custom blocks",[47,303,304],{},"Restore earlier snapshots of your project",[18,306,308],{"id":307},"execution-modes","Execution Modes",[31,310,312],{"id":311},"simulation-mode","Simulation Mode",[44,314,315,318,321],{},[47,316,317],{},"Run discrete-time simulations on virtual time",[47,319,320],{},"Fast-forward, pause, rewind",[47,322,323],{},"Ideal for development and testing",[31,325,327],{"id":326},"debugging-a-simulation","Debugging a Simulation",[44,329,330,333,336],{},[47,331,332],{},"Set breakpoints at a time (in seconds) or at an exact sample",[47,334,335],{},"Inspect any block's buffers at the paused point",[47,337,338],{},"Every block is well documented — check its docs right from the project workspace",[18,340,342],{"id":341},"further-reading","Further Reading",[44,344,345,353],{},[47,346,347,352],{},[348,349,351],"a",{"href":350},"\u002Fdocumentation\u002Fblock-system","Block System"," — Detailed block documentation",[47,354,355,359],{},[348,356,358],{"href":357},"\u002Fdocumentation\u002Fapi","API Reference"," — Programmatic access",[361,362,363],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":122,"searchDepth":136,"depth":136,"links":365},[366,369,373,377,381,385],{"id":20,"depth":136,"text":21,"children":367},[368],{"id":33,"depth":142,"text":34},{"id":103,"depth":136,"text":104,"children":370},[371,372],{"id":107,"depth":142,"text":108},{"id":148,"depth":142,"text":149},{"id":231,"depth":136,"text":232,"children":374},[375,376],{"id":235,"depth":142,"text":236},{"id":260,"depth":142,"text":261},{"id":279,"depth":136,"text":280,"children":378},[379,380],{"id":283,"depth":142,"text":284},{"id":295,"depth":142,"text":296},{"id":307,"depth":136,"text":308,"children":382},[383,384],{"id":311,"depth":142,"text":312},{"id":326,"depth":142,"text":327},{"id":341,"depth":136,"text":342},"Concepts","Understanding blocks, signals, data flow, and the SimFusion architecture","md",{},true,"\u002Fdocumentation\u002Fcore-concepts",{"title":5,"description":387},"stable","documentation\u002Fcore-concepts\u002Findex","XgfSYY5g8BPFMnXsj8Vwdl5p2nD2NEVOmhaSFbME_pI",[397,400,401,404,406],{"title":398,"path":399,"order":130},"Getting Started","\u002Fdocumentation\u002Fgetting-started",{"title":5,"path":391,"order":136},{"title":402,"path":403,"order":142},"Understanding Signals","\u002Fdocumentation\u002Fcore-concepts\u002Fsignals",{"title":351,"path":350,"order":405},4,{"title":358,"path":357,"order":407},5,1784562699556]