# nasa/practical-micromechanics architecture

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

- Interactive diagram: https://gitdiagram.com/nasa/practical-micromechanics
- Repository: https://github.com/nasa/practical-micromechanics

## Overview

This MATLAB repository appears to provide composite-material analysis: laminate and micromechanics problem definitions feed analysis and damage/margin calculations, with result writers producing tables, plots, and reports. The tree supports these as distinct capabilities, but no source excerpts or README relationships were provided, so the inferred workflow links are dashed and have no evidence path.

Main entry points: [`LamAnalysis.m`](https://github.com/nasa/practical-micromechanics/blob/main/LamAnalysis.m) (Laminate Analysis), [`MicroAnalysis.m`](https://github.com/nasa/practical-micromechanics/blob/main/MicroAnalysis.m) (Micro Analysis), [`Functions/Micromechanics/RunMicro.m`](https://github.com/nasa/practical-micromechanics/blob/main/Functions/Micromechanics/RunMicro.m) (Run Micromechanics), [`LamProblemDef.m`](https://github.com/nasa/practical-micromechanics/blob/main/LamProblemDef.m) (Laminate Definition)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_problem["Problem Setup"]
  node_lamdef["Laminate Definition<br/>[LamProblemDef.m]"]
  node_microdef["Microstructure Definition<br/>[MicroProblemDef.m]"]
end

subgraph group_analysis["Material Analysis"]
  node_lamanalysis["Laminate Analysis<br/>[LamAnalysis.m]"]
  node_clt["Laminate Theory<br/>[CLT.m]"]
  node_thermalloads["Thermal Loads<br/>[GetThermLoadsNM.m]"]
  node_plyprops["Ply Properties<br/>[GetPlyProps.m]"]
  node_microanalysis["Micro Analysis<br/>[MicroAnalysis.m]"]
  node_runmicro["Run Micromechanics<br/>[RunMicro.m]"]
  node_ruc["RUC Generation<br/>[GetRUC.m]"]
  node_micromethods["Micromechanics Models"]
  node_effprops["Effective Properties<br/>[GetEffProps.m]"]
end

subgraph group_assessment["Damage And Margins"]
  node_lamdamage["Laminate Damage<br/>[LamSimDamage.m]"]
  node_microdamage["Micro Damage<br/>[MicroSimDamage.m]"]
  node_damageconst["Constituent Damage<br/>[DamageConstit.m]"]
  node_damagelam["Laminate Damage Model<br/>[DamageLam.m]"]
  node_damagemicro["Micro Damage Model<br/>[DamageMicro.m]"]
  node_margins["Strength Margins<br/>[CalcLamMargins.m]"]
  node_micromargins["Micro Margins<br/>[CalcMicroMargins.m]"]
end

subgraph group_results["Results"]
  node_outputlam["Laminate Results<br/>[OutputLam.m]"]
  node_outputmicro["Micro Results<br/>[OutputMicro.m]"]
  node_microfields["Micro Field Plots<br/>[PlotMicroFields.m]"]
  node_writer["Report Writers<br/>[WriteText.m]"]
end

node_user(("Analyst"))

node_user -.->|"defines laminate"| node_lamdef
node_user -.->|"defines microstructure"| node_microdef
node_lamdef -.->|"configures analysis"| node_lamanalysis
node_microdef -.->|"configures analysis"| node_microanalysis
node_lamanalysis -.->|"uses theory"| node_clt
node_clt -.->|"uses loads"| node_thermalloads
node_lamanalysis -.->|"uses properties"| node_plyprops
node_microanalysis -.->|"runs models"| node_runmicro
node_runmicro -.->|"generates RUC"| node_ruc
node_runmicro -.->|"evaluates models"| node_micromethods
node_microanalysis -.->|"computes properties"| node_effprops
node_lamanalysis -.->|"assesses damage"| node_lamdamage
node_microanalysis -.->|"assesses damage"| node_microdamage
node_lamdamage -.->|"uses damage model"| node_damagelam
node_microdamage -.->|"uses damage model"| node_damagemicro
node_lamanalysis -.->|"evaluates constituents"| node_damageconst
node_lamanalysis -.->|"calculates margins"| node_margins
node_microanalysis -.->|"calculates margins"| node_micromargins
node_lamanalysis -.->|"produces results"| node_outputlam
node_microanalysis -.->|"produces results"| node_outputmicro
node_microanalysis -.->|"plots fields"| node_microfields
node_outputlam -.->|"formats reports"| node_writer
node_outputmicro -.->|"formats reports"| node_writer

click node_lamdef "https://github.com/nasa/practical-micromechanics/blob/main/LamProblemDef.m"
click node_microdef "https://github.com/nasa/practical-micromechanics/blob/main/MicroProblemDef.m"
click node_lamanalysis "https://github.com/nasa/practical-micromechanics/blob/main/LamAnalysis.m"
click node_clt "https://github.com/nasa/practical-micromechanics/blob/main/Functions/CLT/CLT.m"
click node_thermalloads "https://github.com/nasa/practical-micromechanics/blob/main/Functions/CLT/GetThermLoadsNM.m"
click node_plyprops "https://github.com/nasa/practical-micromechanics/blob/main/GetPlyProps.m"
click node_microanalysis "https://github.com/nasa/practical-micromechanics/blob/main/MicroAnalysis.m"
click node_runmicro "https://github.com/nasa/practical-micromechanics/blob/main/Functions/Micromechanics/RunMicro.m"
click node_ruc "https://github.com/nasa/practical-micromechanics/blob/main/Functions/Micromechanics/GetRUC.m"
click node_micromethods "https://github.com/nasa/practical-micromechanics/tree/main/Functions/Micromechanics"
click node_effprops "https://github.com/nasa/practical-micromechanics/blob/main/GetEffProps.m"
click node_lamdamage "https://github.com/nasa/practical-micromechanics/blob/main/LamSimDamage.m"
click node_microdamage "https://github.com/nasa/practical-micromechanics/blob/main/MicroSimDamage.m"
click node_damageconst "https://github.com/nasa/practical-micromechanics/blob/main/Functions/Damage/DamageConstit.m"
click node_damagelam "https://github.com/nasa/practical-micromechanics/blob/main/Functions/Damage/DamageLam.m"
click node_damagemicro "https://github.com/nasa/practical-micromechanics/blob/main/Functions/Damage/DamageMicro.m"
click node_margins "https://github.com/nasa/practical-micromechanics/blob/main/Functions/Margins/CalcLamMargins.m"
click node_micromargins "https://github.com/nasa/practical-micromechanics/blob/main/Functions/Margins/CalcMicroMargins.m"
click node_outputlam "https://github.com/nasa/practical-micromechanics/blob/main/Functions/WriteResults/OutputLam.m"
click node_outputmicro "https://github.com/nasa/practical-micromechanics/blob/main/Functions/WriteResults/OutputMicro.m"
click node_microfields "https://github.com/nasa/practical-micromechanics/blob/main/Functions/WriteResults/PlotMicroFields.m"
click node_writer "https://github.com/nasa/practical-micromechanics/blob/main/Functions/WriteResults/WriteText.m"

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_lamdef,node_microdef toneBlue
class node_lamanalysis,node_clt,node_thermalloads,node_plyprops,node_microanalysis,node_runmicro,node_ruc,node_micromethods,node_effprops toneAmber
class node_lamdamage,node_microdamage,node_damageconst,node_damagelam,node_damagemicro,node_margins,node_micromargins toneMint
class node_outputlam,node_outputmicro,node_microfields,node_writer toneRose
class node_user toneIndigo
```

## Components

### Problem Setup

- [Laminate Definition](https://github.com/nasa/practical-micromechanics/blob/main/LamProblemDef.m): `LamProblemDef.m`
- [Microstructure Definition](https://github.com/nasa/practical-micromechanics/blob/main/MicroProblemDef.m): `MicroProblemDef.m`

### Material Analysis

- [Laminate Analysis](https://github.com/nasa/practical-micromechanics/blob/main/LamAnalysis.m): `LamAnalysis.m`
- [Laminate Theory](https://github.com/nasa/practical-micromechanics/blob/main/Functions/CLT/CLT.m): `Functions/CLT/CLT.m`
- [Thermal Loads](https://github.com/nasa/practical-micromechanics/blob/main/Functions/CLT/GetThermLoadsNM.m): `Functions/CLT/GetThermLoadsNM.m`
- [Ply Properties](https://github.com/nasa/practical-micromechanics/blob/main/GetPlyProps.m): `GetPlyProps.m`
- [Micro Analysis](https://github.com/nasa/practical-micromechanics/blob/main/MicroAnalysis.m): `MicroAnalysis.m`
- [Run Micromechanics](https://github.com/nasa/practical-micromechanics/blob/main/Functions/Micromechanics/RunMicro.m): `Functions/Micromechanics/RunMicro.m`
- [RUC Generation](https://github.com/nasa/practical-micromechanics/blob/main/Functions/Micromechanics/GetRUC.m): `Functions/Micromechanics/GetRUC.m`
- [Micromechanics Models](https://github.com/nasa/practical-micromechanics/tree/main/Functions/Micromechanics): `Functions/Micromechanics`
- [Effective Properties](https://github.com/nasa/practical-micromechanics/blob/main/GetEffProps.m): `GetEffProps.m`

### Damage And Margins

- [Laminate Damage](https://github.com/nasa/practical-micromechanics/blob/main/LamSimDamage.m): `LamSimDamage.m`
- [Micro Damage](https://github.com/nasa/practical-micromechanics/blob/main/MicroSimDamage.m): `MicroSimDamage.m`
- [Constituent Damage](https://github.com/nasa/practical-micromechanics/blob/main/Functions/Damage/DamageConstit.m): `Functions/Damage/DamageConstit.m`
- [Laminate Damage Model](https://github.com/nasa/practical-micromechanics/blob/main/Functions/Damage/DamageLam.m): `Functions/Damage/DamageLam.m`
- [Micro Damage Model](https://github.com/nasa/practical-micromechanics/blob/main/Functions/Damage/DamageMicro.m): `Functions/Damage/DamageMicro.m`
- [Strength Margins](https://github.com/nasa/practical-micromechanics/blob/main/Functions/Margins/CalcLamMargins.m): `Functions/Margins/CalcLamMargins.m`
- [Micro Margins](https://github.com/nasa/practical-micromechanics/blob/main/Functions/Margins/CalcMicroMargins.m): `Functions/Margins/CalcMicroMargins.m`

### Results

- [Laminate Results](https://github.com/nasa/practical-micromechanics/blob/main/Functions/WriteResults/OutputLam.m): `Functions/WriteResults/OutputLam.m`
- [Micro Results](https://github.com/nasa/practical-micromechanics/blob/main/Functions/WriteResults/OutputMicro.m): `Functions/WriteResults/OutputMicro.m`
- [Micro Field Plots](https://github.com/nasa/practical-micromechanics/blob/main/Functions/WriteResults/PlotMicroFields.m): `Functions/WriteResults/PlotMicroFields.m`
- [Report Writers](https://github.com/nasa/practical-micromechanics/blob/main/Functions/WriteResults/WriteText.m): `Functions/WriteResults/WriteText.m`

### Other components

- **Analyst**

## Connections

- Analyst → Laminate Definition: defines laminate
- Analyst → Microstructure Definition: defines microstructure
- Laminate Definition → Laminate Analysis: configures analysis
- Microstructure Definition → Micro Analysis: configures analysis
- Laminate Analysis → Laminate Theory: uses theory
- Laminate Theory → Thermal Loads: uses loads
- Laminate Analysis → Ply Properties: uses properties
- Micro Analysis → Run Micromechanics: runs models
- Run Micromechanics → RUC Generation: generates RUC
- Run Micromechanics → Micromechanics Models: evaluates models
- Micro Analysis → Effective Properties: computes properties
- Laminate Analysis → Laminate Damage: assesses damage
- Micro Analysis → Micro Damage: assesses damage
- Laminate Damage → Laminate Damage Model: uses damage model
- Micro Damage → Micro Damage Model: uses damage model
- Laminate Analysis → Constituent Damage: evaluates constituents
- Laminate Analysis → Strength Margins: calculates margins
- Micro Analysis → Micro Margins: calculates margins
- Laminate Analysis → Laminate Results: produces results
- Micro Analysis → Micro Results: produces results
- Micro Analysis → Micro Field Plots: plots fields
- Laminate Results → Report Writers: formats reports
- Micro Results → Report Writers: formats reports
