Library Reference¶
ImmersX: embedded & mixed-dimensional simulation framework¶
- page ImmersX: embedded & mixed-dimensional simulation framework

ImmersX is a C++ framework for embedded and mixed-dimensional finite element simulations, with tools for immersed coupling, reduced multiplier spaces, elasticity, Poisson-type models, and coupled 3D/1D workflows. It is built on top of deal.II. Required version: 9.7.1 or later.
The website documentation is available at https://luca-heltai.github.io/immersx/.
Quick Start¶
mkdir -p build cd build cmake -DDEAL_II_DIR=/path/to/deal.II .. cmake --build . -j ./elasticity path/to/input.prm # or any other app_*.cc executable cd .. python3 -m pip install -r doc/requirements.txt ./scripts/build_doc.sh
Repository Layout¶
include/,source/: library headers and implementations.apps/: executable entry points derived fromapp_*.cc.tests/,gtests/: regression and GoogleTest-based test suites.doc/: Doxygen and Sphinx source for the published documentation site.scripts/: helper scripts, includingscripts/build_doc.sh.prms/,benchmarks/: parameter files, meshes, and benchmark assets.blood/: auxiliary 1D hemodynamics code and data used by coupled workflows.
Notes¶
This repository contains large benchmark/data files
Coupled 3D/1D workflow¶
For setup/build/run notes specific to the coupled elasticity problem, see
COUPLED_PROBLEM.md.References¶
Giovanni Alzetta and Luca Heltai, Multiscale modeling of fiber reinforced materials via non-matching immersed methods, Computers & Structures, 239 (2020), 106334. DOI: https://doi.org/10.1016/j.compstruc.2020.106334
Camilla Belponer, Alfonso Caiazzo, and Luca Heltai, Mixed-dimensional modeling of vascular tissues with reduced Lagrange multipliers (2025). Local PDF:
doc/papers/2309.06797v2.pdfLuca Heltai and Alfonso Caiazzo, Multiscale modeling of vascularized tissues via nonmatching immersed methods, International Journal for Numerical Methods in Biomedical Engineering, 35(12) (2019), e3264. DOI: https://doi.org/10.1002/cnm.3264
Luca Heltai, Alfonso Caiazzo, and Lucas O. Muller, Multiscale Coupling of One-dimensional Vascular Models and Elastic Tissues, Annals of Biomedical Engineering, 49 (2021), 3243-3254. DOI: https://doi.org/10.1007/s10439-021-02804-0
Luca Heltai and Paolo Zunino, Reduced Lagrange multiplier approach for non-matching coupling of mixed-dimensional domains, Mathematical Models and Methods in Applied Sciences, 33(12) (2023), 2425-2462. DOI: https://doi.org/10.1142/S0218202523500525
Yashasvi Verma, Jakob Schattenfroh, Ingolf Sack, Silvia Budday, Paul Steinmann, and Luca Heltai, Simulation Platform to Evaluate Inversion Techniques for Magnetic Resonance Elastography Data (2026).
License¶
See
LICENSE.md.
Page Hierarchy¶
Class Hierarchy¶
File Hierarchy¶
Full API¶
Namespaces¶
Classes and Structs¶
- Template Class ElasticityProblem
- Inheritance Relationships
- Class Documentation
ElasticityProblemdhowned_dofsrelevant_dofsconstraintsinclusion_constraintsmean_value_constraintsstiffness_matrixnewmark_matrixmass_matrixcoupling_matrixdamping_matrixprec_Aprec_newmarkprec_Cprec_Minclusion_matrixsolutionvelocityaccelerationpredictorcorrectorlocally_relevant_solutionforce_rhsbc_rhsneumann_bc_rhssystem_rhsforcesaverage_displacementsaverage_normalsareassigma_nDistributedTriangulationFullyDistributedTriangulationTriangulationVariantElasticityProblem()make_grid()setup_fe()setup_dofs()assemble_elasticity_system()assemble_forcing_terms()compute_system_rhs()assemble_coupling()run()run_static()run_quasistatic()run_newmark()assemble_coupling_sparsity()solve()solve_static()solve_quasistatic()solve_newmark()refine_and_transfer()refine_and_transfer_around_inclusions()execute_actual_refine_and_transfer()output_solution()output_results()print_parameters()compute_internal_and_boundary_stress()uses_fully_distributed_triangulation()output_lambda()output_stresses()parmpi_communicatorpcoutcomputing_timertriangulation_storagetriafeinclusionsquadratureface_quadrature_formulaglobal_bounding_boxescycletime_stepdisplacementcurrent_time
- Template Class ElasticityProblemParameters
- Inheritance Relationships
- Class Documentation
ElasticityProblemParametersoutput_directoryoutput_namefe_degreeinitial_refinementdirichlet_idsweak_dirichlet_idsneumann_idsnormal_flux_idsdefault_material_propertiesmaterial_tags_by_material_idmaterial_properties_by_idrhs_material_idsdomain_typetriangulation_typename_of_gridarguments_for_gridgrid_scalerefinement_strategycoarsening_fractionrefinement_fractionn_refinement_cyclesmax_cellsoutput_pressurepenalty_termrhsrhs_by_material_idbcdirichlet_bc_by_idNeumann_bcneumann_bc_by_iddisplacement_solver_controlreduced_mass_solver_controlaugmented_lagrange_solver_controlschur_complement_solver_controlinitial_timefinal_timedtrefine_time_stepbetagammaElasticityProblemParameters()get_material_properties()get_dirichlet_bc()get_neumann_bc()get_rhs()set_rhs_times()set_boundary_condition_times()check_model_consistency()time_modeelasticity_modelpressure_couplingexact_solutioninitial_displacementinitial_velocityweight_expressionoutput_results_before_solvingconvergence_table
- Template Class Inclusions
- Inheritance Relationships
- Class Documentation
InclusionsInclusions()n_dofs()n_particles()n_inclusions()n_global_segments()n_local_segments()n_dofs_per_inclusion()initialize()get_dof_indices()setup_inclusions_particles()get_inclusion_id()get_component()get_fourier_component()get_inclusion_data()get_inclusion_data()get_normal()get_JxW()get_fe_values()get_center()get_radius()get_section_measure()get_direction()get_rotation()get_current_support_points()output_particles()update_displacement_hdf5()update_inclusions_data()update_inclusions_data()get_vesselID()update_single_inclusion_data_along_normal()update_single_vessel_data()get_n_vessels()get_n_coefficients()get_offset_coefficients()get_inclusions_in_vessel()get_selected_coefficients()set_n_q_points()set_n_coefficients()set_fourier_coefficients()build_segment_index_vector()get_segment_index()inclusions_rhsmodulation_frequencyphase_shiftinclusions_as_particlesparticles_on_centerlineinclusionsdata_fileinclusions_datareference_inclusion_datamap_vessel_inclusionscluster_with_segments
- Template Class TensorProductSpace
- Class Documentation
TensorProductSpaceTensorProductSpace()initialize()get_reference_cross_section()make_reduced_grid_and_properties()get_dof_handler()get_locally_owned_qpoints()get_locally_owned_weights()get_locally_owned_reduced_qpoints()get_locally_owned_reduced_weights()get_locally_owned_section_measure()update_local_dof_indices()get_dof_indices()particle_id_to_cell_and_qpoint_indices()locally_owned_qpoints()locally_relevant_indices()get_quadrature()compute_points_and_weights()get_triangulation()get_scaling()get_properties()get_properties_dh()get_properties_dh()get_properties_names()get_properties_names()cross_section_dimsetup_dofs()local_q_point_indices_to_global_cell_indices()mpi_communicatorparreference_cross_sectiontriangulationfequadrature_formuladof_handlerglobal_cell_to_dof_indicesall_qpointsall_weightsreduced_qpointsreduced_weightspropertiesproperties_dhproperties_names
- Class Documentation