MicroPoroChemoMechanics is a GitHub organization of which I am one of the owners. It hosts a collection of Julia packages for multiscale modeling of porous reactive materials — from molecular-level thermodynamic equilibrium to macroscopic poromechanical response. The packages are designed to compose cleanly: they share conventions, are ForwardDiff-compatible, and plug into the SciML ecosystem.
Core packages
TensND.jl
Symbolic and numerical tensor calculations of any order and dimension in arbitrary coordinate systems, with structured isotropic, transversely isotropic, orthotropic and cubic types, projection onto each symmetry class, and curvilinear differential operators. It is the tensor foundation of the whole ecosystem.
MeanFieldHomogenization.jl
Mean-field homogenization framework for heterogeneous materials: Hill polarization tensors for ellipsoidal inclusions and infinite cylinders, crack-opening-displacement tensors with stress and displacement intensity factors, second-order Hill tensors for transport problems, layered spheres and confocal spheroids with imperfect interfaces, aging viscoelasticity and hereditary conduction as Volterra operators, all the classical schemes, and morphologies with no closed form entered by finite elements or a neural surrogate.
ChemistryLab.jl
Computational chemistry, from formulas to a certified equilibrium — species, reactions and stoichiometric matrices, thermodynamic databases imported in the formats in common use, activity models up to SIT and Pitzer, solid solutions, surface complexation, kinetics and calorimetry, and Gibbs energy minimization returned with a certificate stating what it proves. Every quantity carries its unit, via DynamicQuantities.
Backend packages
OptimaSolver.jl
Certified Gibbs energy minimization — by default the active-set iteration of Allan Leal’s Optima C++ library, in an independent port, beside a log-barrier interior-point method and a Newton method in the space of the Lagrange multipliers, every answer checked by a KKT certificate, with exact derivatives through the solve. The default equilibrium backend of ChemistryLab.jl.
DECUHR.jl
Pure-Julia port of the DECUHR algorithm of Espelid & Genz (Numerical Algorithms 8, 1994, 201–220) for automatic adaptive integration of functions with vertex singularities over hyper-rectangles of dimension 2 to 15. Exposed as a pluggable algorithm for the SciML Integrals.jl ecosystem, and differentiable with ForwardDiff.
Installation and registry
TensND.jl, MeanFieldHomogenization.jl, ChemistryLab.jl, OptimaSolver.jl and DECUHR.jl are registered in Julia’s General registry and installed with a plain Pkg.add (see MeanFieldHomogenization.jl’s page for details).
The dedicated MPCM-Registry is deprecated and kept only as a frozen historical snapshot; if you added it in the past, remove it with Pkg.Registry.rm("MPCM-Registry").
