66 lines
2.0 KiB
Rust
66 lines
2.0 KiB
Rust
//! 3D Thermal Ablation Bioheat Solver
|
||
//!
|
||
//! This crate implements a Physics-Informed Neural Network (PINN) for solving
|
||
//! the Pennes bioheat equation in 3D for thermal ablation simulation.
|
||
//!
|
||
//! # Physics Background
|
||
//!
|
||
//! The Pennes bioheat equation models heat transfer in biological tissue:
|
||
//!
|
||
//! ```text
|
||
//! ρc(∂T/∂t) = k∇²T + ωb·ρb·cb·(Ta - T) + Qm + Qs
|
||
//! ```
|
||
//!
|
||
//! where:
|
||
//! - `T(x,y,z,t)` is the temperature field (what we predict)
|
||
//! - `ρ, c` = tissue density and specific heat
|
||
//! - `k` = thermal conductivity
|
||
//! - `ωb` = blood perfusion rate (cooling effect)
|
||
//! - `ρb, cb` = blood density and specific heat
|
||
//! - `Ta` = arterial blood temperature
|
||
//! - `Qm` = metabolic heat generation
|
||
//! - `Qs` = external heat source (ablation probe)
|
||
//!
|
||
//! # Architecture
|
||
//!
|
||
//! The solver uses a PINN approach:
|
||
//! 1. **ThermalPinn**: Neural network predicting T(x,y,z,t) with 4D input
|
||
//! 2. **PennesResidual**: Computes physics residual from network outputs
|
||
//! 3. **ProbeHeatSource**: Models the ablation probe power deposition
|
||
//!
|
||
//! # Clinical Applications
|
||
//!
|
||
//! - Radiofrequency (RF) ablation planning
|
||
//! - Microwave ablation simulation
|
||
//! - Laser interstitial thermal therapy (LITT)
|
||
//! - Cryoablation (with modified heat source)
|
||
//! - Hyperthermia treatment optimization
|
||
|
||
pub mod ablation_zone;
|
||
pub mod config;
|
||
pub mod inference;
|
||
pub mod network;
|
||
pub mod pennes;
|
||
pub mod probe;
|
||
pub mod solver;
|
||
pub mod tissue;
|
||
pub mod training;
|
||
|
||
// Re-exports
|
||
pub use ablation_zone::AblationZoneComputer;
|
||
pub use config::BioheatConfig;
|
||
pub use inference::InferenceEngine;
|
||
pub use network::ThermalPinn;
|
||
pub use pennes::PennesResidual;
|
||
pub use probe::ProbeHeatSource;
|
||
pub use solver::BioheatSolver;
|
||
pub use tissue::TissueDomain;
|
||
pub use training::Trainer;
|
||
|
||
// Re-export shared types for convenience
|
||
pub use bioheat_shared::{
|
||
AblationZone, BioheatLossRecord, BioheatParams, BioheatSnapshot, BioheatStatus,
|
||
BloodProperties, BoundingBox3D, Point3D, ProbeGeometry, SimulationParams, SliceAxis, SliceData,
|
||
TemperatureField, TissueProperties, TissueType,
|
||
};
|