# robertsj/flare architecture

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

- Interactive diagram: https://gitdiagram.com/robertsj/flare
- Repository: https://github.com/robertsj/flare

## Overview

FLARE is a compact Fortran 90 program for 2-D reactor core physics calculations. Its documented workflow is that a user supplies simple text input and obtains calculation results; alternatively, Python can access the Fortran modules through f2py. The tree identifies likely internal responsibilities, but source excerpts were unavailable, so internal call relationships are not inferred. The README also describes the model as old and outdated.

Main entry points: [`src/flare.f90`](https://github.com/robertsj/flare/blob/master/src/flare.f90) (FLARE program), [`src/solver.f90`](https://github.com/robertsj/flare/blob/master/src/solver.f90) (Solver), [`src/geometry.f90`](https://github.com/robertsj/flare/blob/master/src/geometry.f90) (Geometry), [`src/coefficients.f90`](https://github.com/robertsj/flare/blob/master/src/coefficients.f90) (Coefficients)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Fortran runtime"]
  node_flare["FLARE program<br/>[flare.f90]"]
  node_solver["Solver<br/>[solver.f90]"]
  node_geometry["Geometry<br/>[geometry.f90]"]
  node_coefficients["Coefficients<br/>[coefficients.f90]"]
  node_group_data["Group data<br/>[group_data.f90]"]
  node_state["State<br/>[state.f90]"]
end

subgraph group_python["Python access"]
  node_f2py["f2py access"]
end

node_user(("User"))
node_input["Text input"]
node_results["Calculation results"]
node_python_user(("Python caller"))

node_user -->|"writes"| node_input
node_input -->|"supplies input"| node_flare
node_flare -->|"produces"| node_results
node_python_user -.->|"accesses modules"| node_f2py
node_f2py -.->|"exposes"| node_solver
node_f2py -.->|"exposes"| node_geometry
node_f2py -.->|"exposes"| node_coefficients
node_f2py -.->|"exposes"| node_group_data
node_f2py -.->|"exposes"| node_state

click node_flare "https://github.com/robertsj/flare/blob/master/src/flare.f90"
click node_solver "https://github.com/robertsj/flare/blob/master/src/solver.f90"
click node_geometry "https://github.com/robertsj/flare/blob/master/src/geometry.f90"
click node_coefficients "https://github.com/robertsj/flare/blob/master/src/coefficients.f90"
click node_group_data "https://github.com/robertsj/flare/blob/master/src/group_data.f90"
click node_state "https://github.com/robertsj/flare/blob/master/src/state.f90"

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_flare,node_solver,node_geometry,node_coefficients,node_group_data,node_state,node_user toneBlue
class node_f2py toneAmber
class node_input,node_results,node_python_user toneIndigo
```

## Components

### Fortran runtime

- [FLARE program](https://github.com/robertsj/flare/blob/master/src/flare.f90): `src/flare.f90`
- [Solver](https://github.com/robertsj/flare/blob/master/src/solver.f90): `src/solver.f90`
- [Geometry](https://github.com/robertsj/flare/blob/master/src/geometry.f90): `src/geometry.f90`
- [Coefficients](https://github.com/robertsj/flare/blob/master/src/coefficients.f90): `src/coefficients.f90`
- [Group data](https://github.com/robertsj/flare/blob/master/src/group_data.f90): `src/group_data.f90`
- [State](https://github.com/robertsj/flare/blob/master/src/state.f90): `src/state.f90`

### Python access

- **f2py access**

### Other components

- **User**
- **Text input**
- **Calculation results**
- **Python caller**

## Connections

- User → Text input: writes
- Text input → FLARE program: supplies input
- FLARE program → Calculation results: produces
- Python caller → f2py access: accesses modules
- f2py access → Solver: exposes
- f2py access → Geometry: exposes
- f2py access → Coefficients: exposes
- f2py access → Group data: exposes
- f2py access → State: exposes
