//! Finite element model export library. //! //! This crate provides data structures and I/O capabilities for finite element //! models, with support for various FEM solver formats including LS-DYNA. //! //! # Features //! //! - **Model Data Structures**: Nodes, elements, parts, materials //! - **LS-DYNA Export**: Write .k keyword files for LS-DYNA //! - **LS-DYNA Import**: Read .k keyword files //! - **Material Support**: Linear elastic and Kelvin-Maxwell viscoelastic //! //! # Example //! //! ```ignore //! use rtx_fem_export::{FEModel, FEModelBuilder, ElementType, Material}; //! use rtx_fem_export::lsdyna::write_k_file; //! use rtx_materials::LinearElastic; //! //! // Build a simple tetrahedral model //! let mut builder = FEModelBuilder::new("Brain Model", "MRI Study"); //! //! // Add nodes //! let n1 = builder.add_node(0.0, 0.0, 0.0); //! let n2 = builder.add_node(1.0, 0.0, 0.0); //! let n3 = builder.add_node(0.5, 1.0, 0.0); //! let n4 = builder.add_node(0.5, 0.5, 1.0); //! //! // Add brain tissue material //! let mat_id = builder.add_material(Material::Elastic(LinearElastic::brain_tissue())); //! //! // Create part //! let part_id = builder.add_part("Brain", mat_id, ElementType::Tet4); //! //! // Add element //! builder.add_tet4(part_id, n1, n2, n3, n4); //! //! // Build and export //! let model = builder.build(); //! write_k_file(&model, "brain.k")?; //! ``` pub mod error; pub mod lsdyna; pub mod model; // Re-exports for convenience pub use error::{FemExportError, Result}; pub use model::{Element, ElementType, FEModel, FEModelBuilder, Material, Node, NodeSet, Part}; /// Prelude module for commonly used items. pub mod prelude { pub use crate::error::{FemExportError, Result}; pub use crate::lsdyna::{LsDynaOptions, read_k_file, write_k_file}; pub use crate::model::{ Element, ElementType, FEModel, FEModelBuilder, Material, Node, NodeSet, Part, }; }