mirror of
https://github.com/JuliaFEM/JuliaFEM.jl.git
synced 2026-09-27 20:26:58 +00:00
feat(domains): add DarcyPotentialKernel wrapping HeatKernel
Expose steady primal Darcy head formulation as thermal diffusion with `HydraulicConductivity` and `PressurePotential` fields on shared assembler paths.
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
# This file is a part of JuliaFEM.
|
||||
# License is MIT: see https://github.com/JuliaFEM/JuliaFEM.jl/blob/master/LICENSE.md
|
||||
|
||||
"""
|
||||
Primal **Darcy flow potential** on a conforming scalar vertex field.
|
||||
|
||||
Steady saturated flow with hydraulic head `p` obeys
|
||||
|
||||
``-\\nabla \\cdot (K \\nabla p) = f``
|
||||
|
||||
(weak form identical to steady heat conduction with conductivity `K`).
|
||||
[`DarcyPotentialKernel`](@ref) is a thin constructor around [`HeatKernel`](@ref)
|
||||
with [`HydraulicConductivity`](@ref) and [`PressurePotential`](@ref).
|
||||
|
||||
Mixed lowest-order H(div) flux + cell pressure on Tet4 lives in
|
||||
[`DarcyMixedRT0P0Kernel`](@ref) (`mixed_rt0.jl`). Transient storage is still future work.
|
||||
"""
|
||||
|
||||
using ..JuliaFEM: ContinuumFormulation, HeatKernel, HydraulicConductivity,
|
||||
ElementWiseScalarDiffusion, PressurePotential
|
||||
|
||||
"""
|
||||
DarcyPotentialKernel(formulation, material[, field])
|
||||
|
||||
Return [`HeatKernel`](@ref)`{…, HydraulicConductivity, PressurePotential}` for
|
||||
steady primal Darcy: same assembly path as thermal diffusion with tensor
|
||||
[`hydraulic_conductivity_tensor`](@ref).
|
||||
|
||||
# Example
|
||||
|
||||
```julia
|
||||
kernel = DarcyPotentialKernel(
|
||||
ContinuumFormulation{FullThreeD}(),
|
||||
HydraulicConductivity(K = 1e-4),
|
||||
)
|
||||
```
|
||||
"""
|
||||
function DarcyPotentialKernel(
|
||||
formulation::ContinuumFormulation{Theory},
|
||||
material::HydraulicConductivity,
|
||||
field::PressurePotential = PressurePotential(),
|
||||
) where {Theory}
|
||||
return HeatKernel(formulation, material, field; heat_capacity = 0.0)
|
||||
end
|
||||
|
||||
function DarcyPotentialKernel(
|
||||
formulation::ContinuumFormulation{Theory},
|
||||
material::ElementWiseScalarDiffusion,
|
||||
field::PressurePotential = PressurePotential(),
|
||||
) where {Theory}
|
||||
return HeatKernel(formulation, material, field; heat_capacity = 0.0)
|
||||
end
|
||||
Reference in New Issue
Block a user