//! # rtx-neuro-fem //! //! GPU-Accelerated Finite Element Head Modeling for MEG/EEG forward solutions. //! //! This crate provides realistic head models using the Finite Element Method (FEM) //! with GPU-accelerated solvers for computing electric potentials and lead fields. //! //! ## Key Features //! //! - **Tetrahedral Meshing**: Automatic mesh generation from FreeSurfer surfaces //! - **Multi-Layer Models**: Support for scalp, skull, CSF, gray/white matter //! - **Anisotropic Conductivity**: DTI-based white matter anisotropy //! - **GPU Acceleration**: Leverages rtx-fea for fast sparse solvers //! - **Lead Field Computation**: Efficient gain matrix calculation //! //! ## Head Model Layers //! //! ```text //! ┌─────────────────────────────────────┐ //! │ Scalp (σ=0.43 S/m) │ //! ├─────────────────────────────────────┤ //! │ Skull (σ=0.01 S/m) │ ← Anisotropic //! ├─────────────────────────────────────┤ //! │ CSF (σ=1.79 S/m) │ //! ├─────────────────────────────────────┤ //! │ Gray Matter (σ=0.33 S/m) │ //! ├─────────────────────────────────────┤ //! │ White Matter (σ=0.14 S/m tensor) │ ← Anisotropic from DTI //! └─────────────────────────────────────┘ //! ``` //! //! ## Example //! //! ```ignore //! use rtx_neuro_fem::{HeadFEM, HeadFEMConfig, TissueConfig}; //! //! // Create FEM model from FreeSurfer surfaces //! let config = HeadFEMConfig::standard_5_layer(); //! //! let mut fem = HeadFEM::new(config)?; //! //! // Generate mesh from surfaces //! fem.mesh_from_surfaces(&surfaces)?; //! //! // Compute lead field matrix //! let leadfield = fem.compute_leadfield(&source_space, &sensors)?; //! ``` #![warn(missing_docs)] pub mod assembly; pub mod conductivity; pub mod error; pub mod leadfield; pub mod mesh; pub mod solver; // Re-export main types pub use assembly::{FemAssembler, StiffnessMatrix}; pub use conductivity::{AnisotropicModel, ConductivityTensor, TissueConductivity}; pub use error::{FemError, FemResult}; pub use leadfield::{LeadField, LeadFieldConfig}; pub use mesh::{HeadMesh, MeshQuality, TetElement}; pub use solver::{FemSolver, SolverConfig}; #[cfg(test)] mod tests { use super::*; #[test] fn test_basic_imports() { // Test that main types are accessible let _: FemResult<()> = Ok(()); } }