# delg11/topopt-slp-3d_julia architecture

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

- Interactive diagram: https://gitdiagram.com/delg11/topopt-slp-3d_julia
- Repository: https://github.com/delg11/topopt-slp-3d_julia

## Overview

This Julia repository implements 3D structural topology optimization using SLP, seeking a stiff material distribution under a volume constraint, with SIMP material penalization and a first-order optimality stopping criterion. The README documents the overall optimization and equilibrium-solving capabilities but not their module-level wiring; source excerpts were unavailable, so the graph shows only documented relationships. Multigrid and multiresolution are described as limitations, not implemented capabilities.

Main entry points: [`StrSLP.jl`](https://github.com/delg11/topopt-slp-3d_julia/blob/main/StrSLP.jl) (SLP optimization), [`TopOpt3d.jl`](https://github.com/delg11/topopt-slp-3d_julia/blob/main/TopOpt3d.jl) (Optimization entry), [`SolveMG.jl`](https://github.com/delg11/topopt-slp-3d_julia/blob/main/SolveMG.jl) (Equilibrium solver)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Optimization workflow"]
  node_topopt["Optimization entry<br/>[TopOpt3d.jl]"]
  node_slp["SLP optimization<br/>[StrSLP.jl]"]
  node_volume["Volume constraint<br/>[StrSLP.jl]"]
  node_simp["SIMP penalization<br/>[StrSLP.jl]"]
  node_stop["Optimality stopping<br/>[StrSLP.jl]"]
end

subgraph group_analysis["Structural analysis"]
  node_equilibrium["Equilibrium solver<br/>[SolveMG.jl]"]
  node_stiffness["Global stiffness"]
  node_displacement["Nodal displacement<br/>[NodalDisp.jl]"]
end

node_designer(("Problem designer"))
node_design["Optimized material distribution"]

node_designer -->|"provides problem"| node_topopt
node_topopt -->|"runs optimization"| node_slp
node_slp -->|"solves equilibrium"| node_equilibrium
node_slp -->|"enforces constraint"| node_volume
node_slp -->|"penalizes material"| node_simp
node_slp -->|"checks optimality"| node_stop
node_slp -->|"produces design"| node_design

click node_topopt "https://github.com/delg11/topopt-slp-3d_julia/blob/main/TopOpt3d.jl"
click node_slp "https://github.com/delg11/topopt-slp-3d_julia/blob/main/StrSLP.jl"
click node_volume "https://github.com/delg11/topopt-slp-3d_julia/blob/main/StrSLP.jl"
click node_simp "https://github.com/delg11/topopt-slp-3d_julia/blob/main/StrSLP.jl"
click node_stop "https://github.com/delg11/topopt-slp-3d_julia/blob/main/StrSLP.jl"
click node_equilibrium "https://github.com/delg11/topopt-slp-3d_julia/blob/main/SolveMG.jl"
click node_stiffness "https://github.com/delg11/topopt-slp-3d_julia/blob/main/GlobalStiffMatrix.jl"
click node_displacement "https://github.com/delg11/topopt-slp-3d_julia/blob/main/NodalDisp.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_topopt,node_slp,node_volume,node_simp,node_stop toneBlue
class node_equilibrium,node_stiffness,node_displacement toneAmber
class node_designer,node_design toneIndigo
```

## Components

### Optimization workflow

- [Optimization entry](https://github.com/delg11/topopt-slp-3d_julia/blob/main/TopOpt3d.jl): `TopOpt3d.jl`
- [SLP optimization](https://github.com/delg11/topopt-slp-3d_julia/blob/main/StrSLP.jl): `StrSLP.jl`
- [Volume constraint](https://github.com/delg11/topopt-slp-3d_julia/blob/main/StrSLP.jl): `StrSLP.jl`
- [SIMP penalization](https://github.com/delg11/topopt-slp-3d_julia/blob/main/StrSLP.jl): `StrSLP.jl`
- [Optimality stopping](https://github.com/delg11/topopt-slp-3d_julia/blob/main/StrSLP.jl): `StrSLP.jl`

### Structural analysis

- [Equilibrium solver](https://github.com/delg11/topopt-slp-3d_julia/blob/main/SolveMG.jl): `SolveMG.jl`
- [Global stiffness](https://github.com/delg11/topopt-slp-3d_julia/blob/main/GlobalStiffMatrix.jl): `GlobalStiffMatrix.jl`
- [Nodal displacement](https://github.com/delg11/topopt-slp-3d_julia/blob/main/NodalDisp.jl): `NodalDisp.jl`

### Other components

- **Problem designer**
- **Optimized material distribution**

## Connections

- Problem designer → Optimization entry: provides problem
- Optimization entry → SLP optimization: runs optimization
- SLP optimization → Equilibrium solver: solves equilibrium
- SLP optimization → Volume constraint: enforces constraint
- SLP optimization → SIMP penalization: penalizes material
- SLP optimization → Optimality stopping: checks optimality
- SLP optimization → Optimized material distribution: produces design
