The scope of MilleFEuiIle
MilleFEuiIle [mil·fœj], a short for Multi-InstrumentaL Lagrangian-Eulerian FEniCS-Using Ice-I Layer Explorer, is a computational code built upon the open-source finite-element python library FEniCS, developed to solve thermo-mechanical evolution of ice shells of icy bodies. Combining finite element method and Lagrangian markers, MilleFEuiIle can be used to address a variety of problems in 2D Cartesian geometry, such as
thermal and thermo-compositional convection
evolution of surface and ice-ocean interface
phase transition at the ice-ocean interface
tectonic deformation with visco-elasto-plastic rheology
melt generation and transport inside the ice shell (using Rayleigh-Taylor approximation)
Support
Information on the methodology and the benchmarks performed can be found in Chapter 4 of my dissertation thesis.
This page was last updated on Jul 01, 2026 and is still under development. With any questions, issues or ideas, please contact me at martin.kihoulou@mff.cuni.cz.
Citation
Kihoulou, M. (2026). MilleFEuiIle (Multi-InstrumentaL Lagrangian-Eulerian FEniCS-Using Ice-I Layer Explorer) (1.0.1). Zenodo. https://doi.org/10.5281/zenodo.18641506
MilleFEuiIle in publications
Aygün, B., Kihoulou, M. and Čadek, O. (2026). Titan’s heat budget indicates a rapidly emerging subsurface ocean. Submitted to Geophys. Res. Lett., https://doi.org/10.22541/essoar.177307884.44798188/v1 (PREPRINT)
Kihoulou, M., Choblet, G., Tobie, G., Kalousová, K. and Čadek, O. (2025). Subduction-like process in Europa’s ice shell triggered by enhanced eccentricity periods. Science Advances 11, eadq8719, https://www.science.org/doi/10.1126/sciadv.adq8719
Kihoulou, M., Čadek, O., Kvorka, J., Kalousová, K., Choblet, G. and Tobie, G. (2023). Topographic response to ocean heat flux anomaly on the icy moons of Jupiter and Saturn. Icarus 391, 115337, https://doi.org/10.1016/j.icarus.2022.115337
Explore
- Getting started
- Tutorials
- Computational modules
- m_boundary_conditions.py
- m_check.py
- m_constants.py
- m_elements.py
- m_equations.py
- m_filenames.py
- m_interpolation.py
- m_incompatibility.py
- m_material_properties.py
- m_melting.py
- m_mesh.py
- m_parameters.py
BC_Stokes_problemBC_heat_transferDAL_factorG_iceLtPicard_iter_errorPicard_iter_maxQ_activT_meltcflcohesion_strongcohesion_weakcos_perturbationdT_melt_treshd_grainelasticityempty_cells_allowedempty_cells_compositionempty_cells_regioneps_strongeps_weakerror_typeeta_0eta_maxeta_mingh_bot_inih_top_inihealinghealing_timescaleheightinit_cond_profileinitial_topographyint_friction_angle2integration_methodinterface()internal_meltinglengthloading_meshmaterialsmesh_displacement_laplacemesh_namemonitor_cachenamenonlinear_heat_equationoutput_frequencyparaview_outputparaview_output_iniperiodic_BCsperturb_amplperturb_freqphase_transitionplasticityprotect_directoryrefinementreloadreload_namereload_steprestart_timerho_lrho_mrho_ssave_tracer_trajectorysolve_energy_problemstat_outputstokes_nulltermination_conditiontidal_dissipationtime_step_positiontime_step_strategytime_units_stringtracer_trajectory_outputtracers_outputtriangle_typesviscosity_typex_divyield_stress_maxyield_stress_minz_div
- m_postproc.py
- m_rheology.py
G()cohesion()eta()eta_BS()eta_GBS()eta_diff()eta_disl()eta_ductile()eta_eff()get_mechanisms()get_new_stress()get_new_stress_iter()get_yield_function()max_function()plastic_strain_integration()sigma_yield()strain_rate_II()strain_rate_II_fast()tensor_2nd_invariant()tidal_heating()z()z_fast()
- m_timestep.py
- m_tracers.py
- main.py
- Plotting modules