# jacquescarette/drasil architecture

> Architecture diagram of the GitHub repository jacquescarette/drasil, 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/jacquescarette/drasil
- Repository: https://github.com/jacquescarette/drasil

## Overview

Drasil is a framework for generating coherent software artifacts from domain knowledge for well-understood scientific domains. Its principal workflow is to capture domain concepts and design decisions, then render different views—such as specifications, documentation, and programs—from that shared knowledge, preserving traceability between them. The README also highlights example-driven case studies and generated examples across several scientific domains. The available source excerpts mostly show generated programs and vendored numerical-library code, not Drasil’s generator internals, so the generator-stage links below reflect README documentation rather than inspected implementation calls.

Main entry points: [`code`](https://github.com/jacquescarette/drasil/tree/main/code) (Case studies), [`code/stable`](https://github.com/jacquescarette/drasil/tree/main/code/stable) (Generated programs), [`code/stable/glassbr/src/swift/main.swift`](https://github.com/jacquescarette/drasil/blob/main/code/stable/glassbr/src/swift/main.swift) (Glass-BR), [`code/stable/projectile/projectile_m_p_nol_b_u_v_d/src/swift/main.swift`](https://github.com/jacquescarette/drasil/blob/main/code/stable/projectile/projectile_m_p_nol_b_u_v_d/src/swift/main.swift) (Projectile analysis)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_knowledge["Domain knowledge"]
  node_domain["Domain concepts"]
  node_decisions["Design rationale"]
end

subgraph group_generation["Artifact generation"]
  node_views["Artifact views"]
  node_traceability["Traceability"]
  node_srs["Specifications"]
  node_documentation["Documentation"]
  node_programs["Generated programs"]
  node_tests["Generated tests"]
end

subgraph group_examples["Case studies"]
  node_case_studies["Case studies"]
  node_glassbr["Glass-BR<br/>[main.swift]"]
  node_projectile["Projectile analysis<br/>[main.swift]"]
  node_swhs["Solar water heating"]
  node_physics["Physics and pendulums"]
  node_ssp["Slope stability"]
  node_controller["PD controller"]
  node_hghc["HGHC example<br/>[main.c]"]
end

node_engineer(("Software engineer"))

node_engineer -->|"defines"| node_domain
node_engineer -->|"records"| node_decisions
node_case_studies -->|"ground in"| node_domain
node_domain -->|"render as"| node_views
node_decisions -->|"inform"| node_views
node_views -->|"generate"| node_srs
node_views -->|"generate"| node_documentation
node_views -->|"generate"| node_programs
node_views -->|"generate"| node_tests
node_traceability -->|"relate"| node_srs
node_traceability -->|"relate"| node_programs
node_case_studies -->|"includes"| node_glassbr
node_case_studies -->|"includes"| node_projectile
node_case_studies -->|"includes"| node_swhs
node_case_studies -->|"includes"| node_physics
node_case_studies -->|"includes"| node_ssp
node_case_studies -->|"includes"| node_controller
node_case_studies -->|"includes"| node_hghc

click node_domain "https://github.com/jacquescarette/drasil/tree/main/code"
click node_decisions "https://github.com/jacquescarette/drasil/tree/main/code"
click node_views "https://github.com/jacquescarette/drasil/tree/main/code"
click node_traceability "https://github.com/jacquescarette/drasil/tree/main/code"
click node_srs "https://github.com/jacquescarette/drasil/tree/main/code"
click node_documentation "https://github.com/jacquescarette/drasil/tree/main/code"
click node_programs "https://github.com/jacquescarette/drasil/tree/main/code/stable"
click node_tests "https://github.com/jacquescarette/drasil/tree/main/code"
click node_case_studies "https://github.com/jacquescarette/drasil/tree/main/code"
click node_glassbr "https://github.com/jacquescarette/drasil/blob/main/code/stable/glassbr/src/swift/main.swift"
click node_projectile "https://github.com/jacquescarette/drasil/blob/main/code/stable/projectile/projectile_m_p_nol_b_u_v_d/src/swift/main.swift"
click node_swhs "https://github.com/jacquescarette/drasil/tree/main/code"
click node_physics "https://github.com/jacquescarette/drasil/tree/main/code"
click node_ssp "https://github.com/jacquescarette/drasil/tree/main/code"
click node_controller "https://github.com/jacquescarette/drasil/tree/main/code"
click node_hghc "https://github.com/jacquescarette/drasil/blob/main/People/Steve/hghc_expanded_example/code/src/main.c"

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_domain,node_decisions toneBlue
class node_views,node_traceability,node_srs,node_documentation,node_programs,node_tests toneAmber
class node_case_studies,node_glassbr,node_projectile,node_swhs,node_physics,node_ssp,node_controller,node_hghc toneMint
class node_engineer toneIndigo
```

## Components

### Domain knowledge

- [Domain concepts](https://github.com/jacquescarette/drasil/tree/main/code): `code`
- [Design rationale](https://github.com/jacquescarette/drasil/tree/main/code): `code`

### Artifact generation

- [Artifact views](https://github.com/jacquescarette/drasil/tree/main/code): `code`
- [Traceability](https://github.com/jacquescarette/drasil/tree/main/code): `code`
- [Specifications](https://github.com/jacquescarette/drasil/tree/main/code): `code`
- [Documentation](https://github.com/jacquescarette/drasil/tree/main/code): `code`
- [Generated programs](https://github.com/jacquescarette/drasil/tree/main/code/stable): `code/stable`
- [Generated tests](https://github.com/jacquescarette/drasil/tree/main/code): `code`

### Case studies

- [Case studies](https://github.com/jacquescarette/drasil/tree/main/code): `code`
- [Glass-BR](https://github.com/jacquescarette/drasil/blob/main/code/stable/glassbr/src/swift/main.swift): `code/stable/glassbr/src/swift/main.swift`
- [Projectile analysis](https://github.com/jacquescarette/drasil/blob/main/code/stable/projectile/projectile_m_p_nol_b_u_v_d/src/swift/main.swift): `code/stable/projectile/projectile_m_p_nol_b_u_v_d/src/swift/main.swift`
- [Solar water heating](https://github.com/jacquescarette/drasil/tree/main/code): `code`
- [Physics and pendulums](https://github.com/jacquescarette/drasil/tree/main/code): `code`
- [Slope stability](https://github.com/jacquescarette/drasil/tree/main/code): `code`
- [PD controller](https://github.com/jacquescarette/drasil/tree/main/code): `code`
- [HGHC example](https://github.com/jacquescarette/drasil/blob/main/People/Steve/hghc_expanded_example/code/src/main.c): `People/Steve/hghc_expanded_example/code/src/main.c`

### Other components

- **Software engineer**

## Connections

- Software engineer → Domain concepts: defines
- Software engineer → Design rationale: records
- Case studies → Domain concepts: ground in
- Domain concepts → Artifact views: render as
- Design rationale → Artifact views: inform
- Artifact views → Specifications: generate
- Artifact views → Documentation: generate
- Artifact views → Generated programs: generate
- Artifact views → Generated tests: generate
- Traceability → Specifications: relate
- Traceability → Generated programs: relate
- Case studies → Glass-BR: includes
- Case studies → Projectile analysis: includes
- Case studies → Solar water heating: includes
- Case studies → Physics and pendulums: includes
- Case studies → Slope stability: includes
- Case studies → PD controller: includes
- Case studies → HGHC example: includes
