Home
Overview
Groups
Models
Laws
Operators
Laws
JIT-differentiable conservation and constitutive laws. All return a residual R; R = 0 means the law is satisfied. Use in physics-informed loss terms. Supports single-point or batched inputs.
Fluid dynamics
Laws.mass_incompressible(u_grad)
div(u) = 0
Continuity (incompressible). u_grad shape (..., d, d) [1/s]. Returns scalar residual (...,). Ma < 0.3.
Laws.mass_compressible(rho, rho_t, u, rho_grad, u_grad)
∂ρ/∂t + div(ρ u) = 0
Compressible continuity. rho [kg/m³], rho_t [kg/(m³·s)], u (..., d), rho_grad, u_grad. High-speed gas.
Laws.momentum_navier_stokes(u_t, u, u_grad, p_grad, u_laplacian, re)
∂u/∂t + (u·∇)u + ∇p − (1/Re)∇²u = 0
Vector residual (..., d). re from Groups.re(). Newtonian flow.
Laws.stokes_flow(p_grad, u_laplacian, re)
∇p − (1/Re)∇²u = 0
Creeping flow, inertia neglected. Re ≪ 1.
Laws.euler_momentum(u_t, u, u_grad, p_grad, eu)
Inviscid: ∂u/∂t + (u·∇)u + ∇p = 0
Vector residual. eu from Groups.eu(). p_grad dimensionless (scale by ρU²). High-speed aerodynamics.
Laws.viscous_dissipation(u_grad, re, ec, U, L)
Dimensionless heat source (Ec/Re)·2|S*|²
re, ec from Groups. U, L scale. High-speed or viscous heating.
Heat and mass transport
Laws.fourier_conduction(T_t, T_laplacian, fo, t, L)
∂T/∂t = α ∇²T, α = fo·L²/t
fo from Groups.fo(alpha, t, L). Pure conduction.
Laws.advection_diffusion(phi_t, u, phi_grad, phi_laplacian, pe)
∂φ/∂t + u·∇φ − (1/Pe)∇²φ = 0
pe from Groups.pe(). Temperature or concentration in flow.
Laws.fick_diffusion(phi_t, phi_laplacian, fo_mass, t, L)
∂φ/∂t − D ∇²φ = 0, D = fo_mass·L²/t
fo_mass from Groups.fo_mass(D, t, L). Mixing, chemical diffusion.
Porous media and solid mechanics
Laws.darcy_flow(u, p_grad, da, L, mu)
u + (Da·L²/μ) ∇p = 0
da from Groups.da(K, L). Groundwater, reservoirs.
Laws.brinkman_extension(u, u_laplacian, p_grad, re, da, mu, L)
−∇p + (μ/Re)∇²u − (μ/(Da·L²))u = 0
re, da from Groups. Viscous shear + Darcy. High-porosity media.
Laws.hookes_law_residual(stress, strain, stiffness_tensor)
σ − C : ε = 0
Linear elasticity. stress, strain (..., d), C (..., d, d). Structural AI.
Potential and electromagnetics
Laws.laplace_equation(phi_laplacian)
∇²φ = 0
Steady potential flow or heat without sources.
Laws.poisson_equation(phi_laplacian, source, epsilon)
∇²φ + source/ε = 0
Electrostatics, gravity, pressure-Poisson in CFD.
Laws.faraday_law(E_curl, B_t)
∇×E + ∂B/∂t = 0
E_curl, B_t shape (..., 3). Induction.
Waves and time-second-order
Laws.wave_equation(phi_tt, phi_laplacian, st_wave, omega, L)
∂²φ/∂t² − c² ∇²φ = 0, c = ωL/st_wave
st_wave from Groups.st_wave(omega, L, c). Acoustics, seismic, strings.
Laws.helmholtz_equation(phi, phi_laplacian, kL, L)
∇²φ + (kL/L)² φ = 0
kL from Groups.wavenumber(k, L). Frequency-domain waves, resonance.
Other
Laws.burgers_equation(u_t, u, u_grad, u_laplacian, re, U, L)
∂u/∂t + (u·∇)u − ν ∇²u = 0, ν = U·L/Re
re from Groups.re(). U, L scale. Simplified turbulence, shocks.
Laws.schrodinger_steady(psi_laplacian, V, E, psi, sch_kin_l2)
−L²∇²ψ + K(V − E)ψ = 0, K = 2mL²/ℏ² (Groups.schrodinger_kinetic_length_squared)
psi_laplacian = L²∇²ψ. Law-FD multiplies grid Laplacian by L² when L is in state. Breaking vs m,h_bar API.
Laws.laplace_beltrami(phi_laplacian_g)
Laplacian on manifold (metric g)
Diffusion on curved surfaces, geometric deep learning.