# gbarivazhagan/multirheoflow architecture

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

- Interactive diagram: https://gitdiagram.com/gbarivazhagan/multirheoflow
- Repository: https://github.com/gbarivazhagan/multirheoflow

## Overview

MultiRheoFlow extends Basilisk C for multiphase simulations with complex rheology. The principal workflow is to select a case, compile and run it with Basilisk, evolve flow and interface fields with a rheology model, and inspect simulation output. The graph retains documented adaptive/parallel computing and rheology capabilities. The tree and README establish the broader subsystem boundaries; the sampled log-conformation source confirms its tensor-evolution role, but most runtime wiring was not sampled, so uncertain calls are omitted.

Main entry points: [`basilisk/src/navier-stokes/centered.h`](https://github.com/gbarivazhagan/multirheoflow/blob/main/basilisk/src/navier-stokes/centered.h) (Navier–Stokes), [`simulationCases/dropImpact.c`](https://github.com/gbarivazhagan/multirheoflow/blob/main/simulationCases/dropImpact.c) (Simulation cases), [`basilisk/src/output.h`](https://github.com/gbarivazhagan/multirheoflow/blob/main/basilisk/src/output.h) (Simulation output), [`basilisk/src/qcc.c`](https://github.com/gbarivazhagan/multirheoflow/blob/main/basilisk/src/qcc.c) (qcc compiler)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cases["Simulation cases"]
  node_casesrc["Simulation cases<br/>[dropImpact.c]"]
end

subgraph group_runtime["Basilisk runtime"]
  node_compiler["qcc compiler<br/>[qcc.c]"]
  node_grid["Adaptive grids<br/>[tree.h]"]
  node_events["Event runtime<br/>[events.h]"]
end

subgraph group_physics["Flow physics"]
  node_solver["Navier–Stokes<br/>[centered.h]"]
  node_interface["VOF interface<br/>[vof.h]"]
  node_capillary["Surface tension<br/>[tension.h]"]
  node_constitutive["Rheology models"]
  node_log2d["Log conformation"]
  node_log3d["3D log conformation"]
  node_modelcatalog["Additional models"]
end

subgraph group_results["Results"]
  node_output["Simulation output<br/>[output.h]"]
  node_postproc["Post-processing"]
  node_visualization["Visualization<br/>[view.h]"]
end

node_engineer(("Researcher"))

node_engineer -->|"selects case"| node_casesrc
node_engineer -->|"runs compilation"| node_compiler
node_casesrc -->|"compiles with"| node_compiler
node_compiler -->|"generates executable"| node_grid
node_casesrc -->|"defines simulation"| node_events
node_events -->|"dispatches events"| node_solver
node_solver -->|"updates fields"| node_grid
node_solver -->|"uses interface"| node_interface
node_solver -->|"uses stresses"| node_capillary
node_solver -->|"uses rheology"| node_constitutive
node_constitutive -.->|"uses method"| node_log2d
node_constitutive -.->|"uses method"| node_log3d
node_casesrc -->|"writes results"| node_output
node_output -->|"provides data"| node_postproc
node_output -->|"provides fields"| node_visualization

click node_casesrc "https://github.com/gbarivazhagan/multirheoflow/blob/main/simulationCases/dropImpact.c"
click node_compiler "https://github.com/gbarivazhagan/multirheoflow/blob/main/basilisk/src/qcc.c"
click node_grid "https://github.com/gbarivazhagan/multirheoflow/blob/main/basilisk/src/grid/tree.h"
click node_events "https://github.com/gbarivazhagan/multirheoflow/blob/main/basilisk/src/grid/events.h"
click node_solver "https://github.com/gbarivazhagan/multirheoflow/blob/main/basilisk/src/navier-stokes/centered.h"
click node_interface "https://github.com/gbarivazhagan/multirheoflow/blob/main/basilisk/src/vof.h"
click node_capillary "https://github.com/gbarivazhagan/multirheoflow/blob/main/basilisk/src/tension.h"
click node_log3d "https://github.com/gbarivazhagan/multirheoflow/blob/main/src-local/log-conform-viscoelastic-scalar-3D.h"
click node_modelcatalog "https://github.com/gbarivazhagan/multirheoflow/tree/main/basilisk/src/compressible"
click node_output "https://github.com/gbarivazhagan/multirheoflow/blob/main/basilisk/src/output.h"
click node_postproc "https://github.com/gbarivazhagan/multirheoflow/tree/main/postProcess"
click node_visualization "https://github.com/gbarivazhagan/multirheoflow/blob/main/basilisk/src/view.h"

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_casesrc toneBlue
class node_compiler,node_grid,node_events toneAmber
class node_solver,node_interface,node_capillary,node_constitutive,node_log2d,node_log3d,node_modelcatalog toneMint
class node_output,node_postproc,node_visualization toneRose
class node_engineer toneIndigo
```

## Components

### Simulation cases

- [Simulation cases](https://github.com/gbarivazhagan/multirheoflow/blob/main/simulationCases/dropImpact.c): `simulationCases/dropImpact.c`

### Basilisk runtime

- [qcc compiler](https://github.com/gbarivazhagan/multirheoflow/blob/main/basilisk/src/qcc.c): `basilisk/src/qcc.c`
- [Adaptive grids](https://github.com/gbarivazhagan/multirheoflow/blob/main/basilisk/src/grid/tree.h): `basilisk/src/grid/tree.h`
- [Event runtime](https://github.com/gbarivazhagan/multirheoflow/blob/main/basilisk/src/grid/events.h): `basilisk/src/grid/events.h`

### Flow physics

- [Navier–Stokes](https://github.com/gbarivazhagan/multirheoflow/blob/main/basilisk/src/navier-stokes/centered.h): `basilisk/src/navier-stokes/centered.h`
- [VOF interface](https://github.com/gbarivazhagan/multirheoflow/blob/main/basilisk/src/vof.h): `basilisk/src/vof.h`
- [Surface tension](https://github.com/gbarivazhagan/multirheoflow/blob/main/basilisk/src/tension.h): `basilisk/src/tension.h`
- **Rheology models**
- **Log conformation**
- [3D log conformation](https://github.com/gbarivazhagan/multirheoflow/blob/main/src-local/log-conform-viscoelastic-scalar-3D.h): `src-local/log-conform-viscoelastic-scalar-3D.h`
- [Additional models](https://github.com/gbarivazhagan/multirheoflow/tree/main/basilisk/src/compressible): `basilisk/src/compressible`

### Results

- [Simulation output](https://github.com/gbarivazhagan/multirheoflow/blob/main/basilisk/src/output.h): `basilisk/src/output.h`
- [Post-processing](https://github.com/gbarivazhagan/multirheoflow/tree/main/postProcess): `postProcess`
- [Visualization](https://github.com/gbarivazhagan/multirheoflow/blob/main/basilisk/src/view.h): `basilisk/src/view.h`

### Other components

- **Researcher**

## Connections

- Researcher → Simulation cases: selects case
- Researcher → qcc compiler: runs compilation
- Simulation cases → qcc compiler: compiles with
- qcc compiler → Adaptive grids: generates executable
- Simulation cases → Event runtime: defines simulation
- Event runtime → Navier–Stokes: dispatches events
- Navier–Stokes → Adaptive grids: updates fields
- Navier–Stokes → VOF interface: uses interface
- Navier–Stokes → Surface tension: uses stresses
- Navier–Stokes → Rheology models: uses rheology
- Rheology models → Log conformation: uses method
- Rheology models → 3D log conformation: uses method
- Simulation cases → Simulation output: writes results
- Simulation output → Post-processing: provides data
- Simulation output → Visualization: provides fields
