# giancarloantonucci/nsdemovingwindow.jl architecture

> Architecture diagram of the GitHub repository giancarloantonucci/nsdemovingwindow.jl, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/giancarloantonucci/nsdemovingwindow.jl
- Repository: https://github.com/giancarloantonucci/nsdemovingwindow.jl
- Video tour (about a minute): https://gitdiagram.com/giancarloantonucci/nsdemovingwindow.jl/video

## Overview

NSDEMovingWindow.jl solves a dynamical-system problem across overlapping time windows, using Parareal as the local solver. The README documents window-to-window seeding, retained window solutions and diagnostics, solution lookup, and ensemble statistics, plus configurable window strategies and optional plotting. The graph reflects only those documented relationships; source excerpts were unavailable, so internal call details and links to unsampled capabilities are omitted.

Main entry points: [`src/mowi/solve.jl`](https://github.com/giancarloantonucci/nsdemovingwindow.jl/blob/master/src/mowi/solve.jl) (Window execution), [`src/solve.jl`](https://github.com/giancarloantonucci/nsdemovingwindow.jl/blob/master/src/solve.jl) (Solve entry), [`src/mowi/solution.jl`](https://github.com/giancarloantonucci/nsdemovingwindow.jl/blob/master/src/mowi/solution.jl) (Moving-window solution), [`src/mowi/adaptive.jl`](https://github.com/giancarloantonucci/nsdemovingwindow.jl/blob/master/src/mowi/adaptive.jl) (Window strategies)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_configuration["Solver configuration"]
  node_mowi["MoWi configuration<br/>[constructor.jl]"]
  node_strategies["Window strategies<br/>[adaptive.jl]"]
end

subgraph group_runtime["Window runtime"]
  node_solve["Solve entry<br/>[solve.jl]"]
  node_window_run["Window execution<br/>[solve.jl]"]
  node_window_state["Window state and cache<br/>[cache.jl]"]
end

subgraph group_results["Solutions and analysis"]
  node_solution["Moving-window solution<br/>[solution.jl]"]
  node_statistics["Ensemble statistics<br/>[solution.jl]"]
  node_plotting["Plot recipes<br/>[plots_recipes.jl]"]
end

node_user(("User"))
node_problem["Dynamical problem"]
node_parareal["Parareal local solver"]

node_user -->|"calls solve"| node_solve
node_user -->|"configures windows"| node_mowi
node_user -->|"selects local solver"| node_parareal
node_user -->|"provides problem"| node_problem
node_solve -.->|"runs windows"| node_window_run
node_window_run -->|"uses local solver"| node_parareal
node_window_run -->|"seeds next window"| node_window_state
node_window_run -->|"retains results"| node_solution
node_user -->|"receives result"| node_solution
node_user -->|"computes ensemble mean"| node_statistics
node_user -.->|"uses plotting"| node_plotting
node_strategies -.->|"configures windows"| node_window_run

click node_solve "https://github.com/giancarloantonucci/nsdemovingwindow.jl/blob/master/src/solve.jl"
click node_mowi "https://github.com/giancarloantonucci/nsdemovingwindow.jl/blob/master/src/mowi/constructor.jl"
click node_strategies "https://github.com/giancarloantonucci/nsdemovingwindow.jl/blob/master/src/mowi/adaptive.jl"
click node_window_run "https://github.com/giancarloantonucci/nsdemovingwindow.jl/blob/master/src/mowi/solve.jl"
click node_window_state "https://github.com/giancarloantonucci/nsdemovingwindow.jl/blob/master/src/mowi/cache.jl"
click node_solution "https://github.com/giancarloantonucci/nsdemovingwindow.jl/blob/master/src/mowi/solution.jl"
click node_statistics "https://github.com/giancarloantonucci/nsdemovingwindow.jl/blob/master/src/mowi/solution.jl"
click node_plotting "https://github.com/giancarloantonucci/nsdemovingwindow.jl/blob/master/src/plots_recipes.jl"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_mowi,node_strategies,node_user toneBlue
class node_solve,node_window_run,node_window_state toneAmber
class node_solution,node_statistics,node_plotting toneMint
class node_problem,node_parareal toneIndigo
```

## Components

### Solver configuration

- [MoWi configuration](https://github.com/giancarloantonucci/nsdemovingwindow.jl/blob/master/src/mowi/constructor.jl): `src/mowi/constructor.jl`
- [Window strategies](https://github.com/giancarloantonucci/nsdemovingwindow.jl/blob/master/src/mowi/adaptive.jl): `src/mowi/adaptive.jl`

### Window runtime

- [Solve entry](https://github.com/giancarloantonucci/nsdemovingwindow.jl/blob/master/src/solve.jl): `src/solve.jl`
- [Window execution](https://github.com/giancarloantonucci/nsdemovingwindow.jl/blob/master/src/mowi/solve.jl): `src/mowi/solve.jl`
- [Window state and cache](https://github.com/giancarloantonucci/nsdemovingwindow.jl/blob/master/src/mowi/cache.jl): `src/mowi/cache.jl`

### Solutions and analysis

- [Moving-window solution](https://github.com/giancarloantonucci/nsdemovingwindow.jl/blob/master/src/mowi/solution.jl): `src/mowi/solution.jl`
- [Ensemble statistics](https://github.com/giancarloantonucci/nsdemovingwindow.jl/blob/master/src/mowi/solution.jl): `src/mowi/solution.jl`
- [Plot recipes](https://github.com/giancarloantonucci/nsdemovingwindow.jl/blob/master/src/plots_recipes.jl): `src/plots_recipes.jl`

### Other components

- **User**
- **Dynamical problem**
- **Parareal local solver**

## Connections

- User → Solve entry: calls solve (evidence: `README.md`)
- User → MoWi configuration: configures windows (evidence: `README.md`)
- User → Parareal local solver: selects local solver (evidence: `README.md`)
- User → Dynamical problem: provides problem (evidence: `README.md`)
- Solve entry → Window execution: runs windows
- Window execution → Parareal local solver: uses local solver (evidence: `README.md`)
- Window execution → Window state and cache: seeds next window (evidence: `README.md`)
- Window execution → Moving-window solution: retains results (evidence: `README.md`)
- User → Moving-window solution: receives result (evidence: `README.md`)
- User → Ensemble statistics: computes ensemble mean (evidence: `README.md`)
- User → Plot recipes: uses plotting (evidence: `README.md`)
- Window strategies → Window execution: configures windows
