Architecture
Simplified graph
%%{init: {"themeCSS": ".label, .nodeLabel, .edgeLabel, .label text, .nodeLabel text, .edgeLabel text, text, tspan, foreignObject, foreignObject div, foreignObject span { fill: #000 !important; color: #000 !important; } .edgePath .path, .flowchart-link, path.path, .path, .edge-thickness-normal, .edge-thickness-thick, .edge-pattern-solid, .edge-pattern-dotted, .edge-pattern-dashed { stroke: #000 !important; } marker path, .arrowheadPath, .arrowhead path, .marker { fill: #000 !important; stroke: #000 !important; }"}}%%
flowchart TB
U["<img src='../../icons/user-outline.svg' width='18' height='18'/><br/>User"]
WEB["<img src='../../icons/noun-transmission-control-protocol-6111114.svg' width='18' height='18'/><br/>Web API"]
CLI["<img src='../../logos/typer.svg' width='18' height='18'/><br/>CLI"]
API["<img src='../../icons/files.svg' width='18' height='18'/><br/>Core API"]
subgraph ALGO[Algorithms]
SP["<img src='../../icons/sun-angle-outline.svg' width='18' height='18'/><br/>Solar Position"]
SI["<img src='../../icons/sun-wireless-outline.svg' width='18' height='18'/><br/>Solar Irradiance"]
MV["<img src='../../icons/weather-partly-cloudy.svg' width='18' height='18'/><br/>Meteorological Variables"]
PP["<img src='../../icons/noun-solar-panel-6862742.svg' width='18' height='18'/><br/>Photovoltaic Performance"]
end
subgraph DATA[Data Inputs]
X["<img src='../../logos/Xarray_RGB.svg' width='18' height='18'/><br/>Xarray Input Layer"]
GHI["<img src='../../icons/noun_global_horizontal_irradiance.svg' width='18' height='18'/><br/>Global Horizontal Irradiance"]
DHI["<img src='../../icons/noun_direct_horizontal_irradiance.svg' width='18' height='18'/><br/>Direct Horizontal Irradiance"]
T["<img src='../../icons/thermometer.svg' width='18' height='18'/><br/>Temperature"]
W["<img src='../../icons/noun-windsock-4502486.svg' width='18' height='18'/><br/>Wind Speed"]
end
subgraph LIBS[Libraries]
NP["<img src='../../logos/numpy.svg' width='18' height='18'/><br/>NumPy"]
PD["<img src='../../logos/pandas.svg' width='18' height='18'/><br/>Pandas"]
SC["<img src='../../logos/scipy.svg' width='18' height='18'/><br/>SciPy"]
PYD["<img src='../../logos/pydantic.svg' width='18' height='18'/><br/>Pydantic"]
end
U --> WEB
U --> CLI
WEB --> API
CLI --> API
API --> SP --> SI --> MV --> PP
PP --> API
API --> WEB
API --> CLI
WEB --> U
CLI --> U
X --> SI
X --> MV
GHI --> SI
DHI --> SI
T --> MV
W --> MV
NP -.array computing.-> SI
NP -.array computing.-> PP
SC -.optimization.-> PP
PD -.timestamping.-> API
PYD -.validation.-> WEB
PYD -.validation.-> CLI