Skip to content

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