Library Reference¶
Reduced Lagrange Multipliers¶
- page Reduced Lagrange Multipliers
This repository contains C++ implementations of reduced Lagrange multiplier methods for mixed-dimensional coupling problems, built on top of deal.II.
Overview¶
The codebase is centered on:
bulk elasticity and Poisson solvers with immersed coupling;
reduced-order coupling operators and tensor-product spaces;
benchmark parameter sets and coupled workflows built around
deal.II.
Quick Start¶
mkdir -p build cd build cmake -DDEAL_II_DIR=/path/to/deal.II .. cmake --build . -j ./elasticity path/to/input.prm 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 may contain large benchmark/data files and local experiment artifacts.
Some coupled-elasticity paths depend on an external
lib1dsolverlibrary and related inputs underblood/.
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_nElasticityProblem()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()output_lambda()output_stresses()parmpi_communicatorpcoutcomputing_timertriafeinclusionsquadratureface_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_iddomain_typename_of_gridarguments_for_gridrefinement_strategycoarsening_fractionrefinement_fractionn_refinement_cyclesmax_cellsoutput_pressurepenalty_termrhsrhs_modulationbcbc_modulationNeumann_bcneumann_bc_modulationdisplacement_solver_controlreduced_mass_solver_controlaugmented_lagrange_solver_controlschur_complement_solver_controlinitial_timefinal_timedtrefine_time_stepbetagammaElasticityProblemParameters()get_material_properties()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_frequencyinclusions_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