Skip to main content

oxiphysics_fem/
lib.rs

1// Copyright 2026 COOLJAPAN OU (Team KitaSan)
2// SPDX-License-Identifier: Apache-2.0
3
4//! Finite element method for the OxiPhysics engine.
5//!
6//! Provides a complete linear elastic FEM pipeline including:
7//!
8//! - **Sparse matrix** types ([`sparse::CsrMatrix`], [`sparse::SparseVector`])
9//! - **Mesh** representation ([`mesh::TetrahedralMesh`]) with beam generation
10//! - **Element** formulation ([`element::LinearTetrahedron`]) for 4-node tetrahedra
11//! - **Constitutive** models ([`constitutive::LinearElasticMaterial`])
12//! - **Assembly** of global stiffness and load vectors
13//! - **Boundary conditions** (Dirichlet and Neumann)
14//! - **Iterative solvers** (CG, preconditioned CG)
15//! - **Static analysis** driver ([`analysis::LinearStaticAnalysis`])
16#![warn(missing_docs)]
17
18pub mod adaptive_mesh;
19pub mod analysis;
20pub mod assembly;
21pub mod boundary;
22pub mod buckling;
23pub mod cohesive;
24pub mod composite_fem;
25pub mod constitutive;
26pub mod contact;
27pub mod contact_fem;
28pub mod contact_mechanics;
29pub mod coupled_fem;
30pub mod coupled_physics_fem;
31pub mod damage;
32pub mod dynamic;
33pub mod dynamics;
34pub mod eigen;
35pub mod eigenvalue;
36pub mod electrochemical_fem;
37pub mod electromagnetic;
38pub mod electromechanics;
39pub mod element;
40mod error;
41pub mod error_estimation;
42pub mod error_estimator;
43pub mod fluid_fem;
44pub mod fluid_structure;
45pub mod fracture;
46pub mod geomechanics_fem;
47pub mod homogenization;
48pub mod hyperelastic;
49pub mod inverse_problems;
50pub mod isogeometric;
51pub mod lbm_coupling;
52pub mod level_set;
53pub mod mesh;
54pub mod meshless;
55pub mod mixed_elements;
56pub mod modal;
57pub mod multiphysics_fem;
58pub mod multiscale;
59pub mod multiscale_fem;
60pub mod nonlinear;
61pub mod nonlinear_dynamics;
62pub mod nonlinear_fem;
63pub mod nonlinear_solver;
64pub mod optimization_fem;
65pub mod piezo;
66pub mod poromechanics;
67pub mod reduced_order;
68pub mod reliability;
69pub mod reliability_fem;
70pub mod shell;
71pub mod solvers;
72pub mod sparse;
73pub mod spectral_fem;
74pub mod stochastic_fem;
75pub mod thermal;
76pub mod thermal_fem;
77pub mod thermal_stress;
78pub mod topology_opt;
79pub mod topology_optimization;
80pub mod viscoelastic_fem;
81pub mod wave_propagation;
82pub mod xfem;
83
84pub mod parallel_solver;
85pub use parallel_solver::{
86    CsrMatrix as ParCsrMatrix, GmresWithAmg, ParallelAssembler, ParallelGmresSolver,
87    ParallelPcgSolver, PcgWithAmg, PcgWithPrecond,
88};
89
90pub mod perf_bench;
91pub use perf_bench::{
92    BenchHarness, BenchReport, BenchResult, SuiteConfig, banded_csr, bench_assembly,
93    bench_element_stiffness, bench_gmres, bench_pcg, bench_spmv, bench_spmv_parallel,
94    run_full_suite, run_suite, tridiagonal_csr,
95};
96
97pub use damage::{
98    CoupledDamagePlasticity, CrackBandModel, DamageBandLocalization, DamageCreepCoupling,
99    DamageEvolutionLaw, DamageHomogenization, DamageLawType, DamageMechanicsElement,
100    DamagePlasticityState, DamageRateLimiter, DamageState, DamageVisualization,
101    ElementDeletionManager, FailureMode, FatigueDamageModel, GursonModel, IsotropicDamage,
102    LemaitreCDM, LemaitreChabocheDamage, LemaitreDamage, MazarsDamage, NonLocalDamage,
103    NonlocalContinuumDamage, ScalarIsotropicDamage, ThermalDamage,
104};
105pub use electromechanics::*;
106pub use error::*;
107pub use homogenization::*;
108pub use modal::{ModalResult, inverse_iteration};
109pub use nonlinear::{ArcLengthControl, ConvergenceCriteria, NrResult, newton_raphson};
110pub use nonlinear_solver::*;
111
112/// Trait for finite element solvers.
113pub trait FemSolver {
114    /// Initialize this component.
115    fn init(&mut self);
116}
117pub mod adaptive_fem;
118pub mod additive_manufacturing_fem;
119pub mod beam_fem;
120pub mod biomechanics_fem;
121pub mod boundary_element;
122pub mod contact_mech;
123pub mod crystal_plasticity;
124pub mod damage_mechanics;
125pub mod discontinuous_galerkin;
126pub mod explicit_fem;
127pub mod fatigue_fem;
128pub mod isogeometric_fem;
129pub mod meshfree_fem;
130pub mod probabilistic_fem;
131pub mod reduced_order_fem;
132pub mod shell_fem;
133pub mod soil_fem;
134pub mod topology_opt_fem;
135pub mod topology_optimization_ext;
136pub mod truss_frame;