59 lines
1.9 KiB
Rust
59 lines
1.9 KiB
Rust
//! 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,
|
|
};
|
|
}
|