idaholab / moose

Multiphysics Object Oriented Simulation Environment
https://www.mooseframework.org
GNU Lesser General Public License v2.1
1.75k stars 1.05k forks source link

Create PorousFlowHeatMassTransfer Kernel #11050

Closed WilkAndy closed 5 years ago

WilkAndy commented 6 years ago

Rationale

We need a Kernel that transfers heat or mass from one Variable to another. This is useful for simplified modelling of precipitation/dissolution, where the Variable is the concentration. It is also useful for transferring heat from a fracture to a surrounding matrix.

Description

Residual = r (u - v)

where r is the transfer_coefficient (Real, not range-checked), u is the variable (typically temperature, porepressure or mass-fraction), and v is a coupledVariable (typically constant-in-time AuxVariable, or a fracture/matrix temperature in the above fracture-matrix example).

This needs to compute the derivatives wrt u and v.

I don't think we have to worry about any lumping-to-the nodes: v is just a coupledValue (not coupledNodalValue) and we evaluate at ordinary quadpoints.

Later we might want to optionally pre-multiply by mobility in a certain direction, relative permeability, enthalpy, density and/or mass fraction, just like in PorousFlowSink, but let's not do this at the moment because it's not needed right now.

Impact

Ability to model heat or mass transfer between different components of a simulation.

WilkAndy commented 6 years ago

I'm hoping @philippschaedle can do this.