• In order to implement the Darcy pressure equation, a Kernel object is needed to represent:

$$$$-\nabla \cdot \frac{\mathbf{K}}{\mu} \nabla p = 0$$$$

  • The weak form of this equation is:

$$$$\left (\frac{\mathbf{K}}{\mu} \nabla p, \nabla \psi_i \right ) - \left <\frac{\mathbf{K}}{\mu} \nabla p \cdot \mathbf{n}, \psi_i \right > = 0$$$$

  • For now we'll ignore the boundary term (essentially setting $$$\frac{\mathbf{K}}{\mu} \nabla p \cdot \mathbf{n} = 0$$$ : a "no-flux" boundary condition).
  • The volume integral looks exactly like the Diffusion equation multiplied by some constants: so we can simply extend the Diffusion Kernel by inheriting from it...

MOOSE Mesh

MOOSE Outputs

Coordinate Systems

Anatomy of a MooseObject

InputParameters and MOOSE Types

Kernels

Step 2: Source Code

include/kernels/DarcyPressure.h

src/kernels/DarcyPressure.C

src/base/DarcyThermoMechApp.C

problems/step2.i

Create a Test

  • Create a simple test that mimics the behavior of the problem above, i.e., a test that verifies that the DarcyPressure kernel is operating as expected.

tutorials/darcy_thermo_mech/step02_darcy_pressure/tests/kernels/darcy_pressure/tests

tutorials/darcy_thermo_mech/step02_darcy_pressure/tests/kernels/darcy_pressure/darcy_pressure.i