# avi-avishekh/pinn-at-y-x-2 architecture

> Architecture diagram of the GitHub repository avi-avishekh/pinn-at-y-x-2, 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/avi-avishekh/pinn-at-y-x-2
- Repository: https://github.com/avi-avishekh/pinn-at-y-x-2

## Overview

This repository is a small PyTorch physics-informed neural network (PINN) example for approximating a function subject to a derivative equation and boundary condition. The main workflow in `training.py` builds collocation inputs, trains the network against physics and boundary losses, then compares predictions with an exact solution and plots the results. `derivative.py` is a separate one-step autograd and optimizer demonstration; it does not import or invoke the training script. The README is empty, and the notebook was not sampled, so its behavior is not represented.

Main entry points: [`training.py`](https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/training.py) (Training Run), [`derivative.py`](https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/derivative.py) (PINN Network)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_training["PINN Training"]
  node_training_run["Training Run<br/>[training.py]"]
  node_train_inputs["Collocation Inputs<br/>[training.py]"]
  node_train_model["PINN Network<br/>[training.py]"]
  node_train_autograd["Autograd Derivative<br/>[training.py]"]
  node_train_objective["Physics and Boundary Loss<br/>[training.py]"]
  node_train_optimizer["Adam Updates<br/>[training.py]"]
end

subgraph group_evaluation["Evaluation"]
  node_predictions["Predictions<br/>[training.py]"]
  node_exact_solution["Exact Solution<br/>[training.py]"]
  node_error_metrics["Absolute Error and MAE<br/>[training.py]"]
  node_visualization["Comparison Plot<br/>[training.py]"]
end

subgraph group_demo["Derivative Demo"]
  node_derivative_demo["Single-Step Demo<br/>[derivative.py]"]
  node_demo_inputs["Collocation Inputs<br/>[derivative.py]"]
  node_demo_model["PINN Network<br/>[derivative.py]"]
  node_demo_autograd["Autograd Derivative<br/>[derivative.py]"]
  node_demo_objective["Physics and Boundary Loss<br/>[derivative.py]"]
  node_demo_optimizer["Adam Update<br/>[derivative.py]"]
end

node_user(("User"))

node_user -->|"starts"| node_training_run
node_training_run -->|"creates"| node_train_inputs
node_training_run -->|"creates"| node_train_model
node_training_run -->|"creates"| node_train_optimizer
node_train_inputs -->|"supplies inputs"| node_train_model
node_train_model -->|"produces values"| node_train_autograd
node_train_inputs -->|"provides coordinates"| node_train_autograd
node_train_autograd -->|"supplies derivative"| node_train_objective
node_train_model -->|"supplies boundary value"| node_train_objective
node_train_objective -->|"backpropagates loss"| node_train_optimizer
node_train_optimizer -->|"updates parameters"| node_train_model
node_training_run -->|"evaluates"| node_predictions
node_train_model -->|"produces"| node_predictions
node_train_inputs -->|"provides coordinates"| node_predictions
node_training_run -->|"computes"| node_exact_solution
node_predictions -->|"compared against"| node_error_metrics
node_exact_solution -->|"provides reference"| node_error_metrics
node_training_run -->|"plots"| node_visualization
node_predictions -->|"supplies values"| node_visualization
node_exact_solution -->|"supplies reference"| node_visualization
node_user -->|"starts"| node_derivative_demo
node_derivative_demo -->|"creates"| node_demo_inputs
node_derivative_demo -->|"creates"| node_demo_model
node_derivative_demo -->|"creates"| node_demo_optimizer
node_demo_inputs -->|"supplies inputs"| node_demo_model
node_demo_model -->|"produces values"| node_demo_autograd
node_demo_inputs -->|"provides coordinates"| node_demo_autograd
node_demo_autograd -->|"supplies derivative"| node_demo_objective
node_demo_model -->|"supplies boundary value"| node_demo_objective
node_demo_objective -->|"backpropagates loss"| node_demo_optimizer
node_demo_optimizer -->|"updates parameters"| node_demo_model

click node_training_run "https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/training.py"
click node_train_inputs "https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/training.py"
click node_train_model "https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/training.py"
click node_train_autograd "https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/training.py"
click node_train_objective "https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/training.py"
click node_train_optimizer "https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/training.py"
click node_predictions "https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/training.py"
click node_exact_solution "https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/training.py"
click node_error_metrics "https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/training.py"
click node_visualization "https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/training.py"
click node_derivative_demo "https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/derivative.py"
click node_demo_inputs "https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/derivative.py"
click node_demo_model "https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/derivative.py"
click node_demo_autograd "https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/derivative.py"
click node_demo_objective "https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/derivative.py"
click node_demo_optimizer "https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/derivative.py"

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_training_run,node_train_inputs,node_train_model,node_train_autograd,node_train_objective,node_train_optimizer,node_user toneBlue
class node_predictions,node_exact_solution,node_error_metrics,node_visualization toneAmber
class node_derivative_demo,node_demo_inputs,node_demo_model,node_demo_autograd,node_demo_objective,node_demo_optimizer toneMint
```

## Components

### PINN Training

- [Training Run](https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/training.py): `training.py`
- [Collocation Inputs](https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/training.py): `training.py`
- [PINN Network](https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/training.py): `training.py`
- [Autograd Derivative](https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/training.py): `training.py`
- [Physics and Boundary Loss](https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/training.py): `training.py`
- [Adam Updates](https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/training.py): `training.py`

### Evaluation

- [Predictions](https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/training.py): `training.py`
- [Exact Solution](https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/training.py): `training.py`
- [Absolute Error and MAE](https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/training.py): `training.py`
- [Comparison Plot](https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/training.py): `training.py`

### Derivative Demo

- [Single-Step Demo](https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/derivative.py): `derivative.py`
- [Collocation Inputs](https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/derivative.py): `derivative.py`
- [PINN Network](https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/derivative.py): `derivative.py`
- [Autograd Derivative](https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/derivative.py): `derivative.py`
- [Physics and Boundary Loss](https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/derivative.py): `derivative.py`
- [Adam Update](https://github.com/avi-avishekh/pinn-at-y-x-2/blob/main/derivative.py): `derivative.py`

### Other components

- **User**

## Connections

- User → Training Run: starts
- Training Run → Collocation Inputs: creates
- Training Run → PINN Network: creates
- Training Run → Adam Updates: creates
- Collocation Inputs → PINN Network: supplies inputs
- PINN Network → Autograd Derivative: produces values
- Collocation Inputs → Autograd Derivative: provides coordinates
- Autograd Derivative → Physics and Boundary Loss: supplies derivative
- PINN Network → Physics and Boundary Loss: supplies boundary value
- Physics and Boundary Loss → Adam Updates: backpropagates loss
- Adam Updates → PINN Network: updates parameters
- Training Run → Predictions: evaluates
- PINN Network → Predictions: produces
- Collocation Inputs → Predictions: provides coordinates
- Training Run → Exact Solution: computes
- Predictions → Absolute Error and MAE: compared against
- Exact Solution → Absolute Error and MAE: provides reference
- Training Run → Comparison Plot: plots
- Predictions → Comparison Plot: supplies values
- Exact Solution → Comparison Plot: supplies reference
- User → Single-Step Demo: starts
- Single-Step Demo → Collocation Inputs: creates
- Single-Step Demo → PINN Network: creates
- Single-Step Demo → Adam Update: creates
- Collocation Inputs → PINN Network: supplies inputs
- PINN Network → Autograd Derivative: produces values
- Collocation Inputs → Autograd Derivative: provides coordinates
- Autograd Derivative → Physics and Boundary Loss: supplies derivative
- PINN Network → Physics and Boundary Loss: supplies boundary value
- Physics and Boundary Loss → Adam Update: backpropagates loss
- Adam Update → PINN Network: updates parameters
