PorousFlowBasicAdvection
Advective flux of a Variable using the Darcy velocity of the fluid phase
This Kernel implements the differential expression where is Darcy velocity of fluid phase . That is, the advection of a variable . The Darcy velocity is defined to be where is the permeability tensor, is the relative permeability, is the viscosity, is the porepressure, is the density and is the gravitational acceleration.
This Kernel is designed to be used with tracers or other similar variables that are not described by the mass fraction variables of PorousFlow. It requires the use of the PorousFlowDarcyVelocityMaterial
material.
warningwarning
The most naive implementation of advection is used. You will almost definitely see spurious overshoots and undershoots as well as numerical diffusion when using this Kernel
. It is usually better to use the PorousFlowAdvectiveFlux
if possible.
The typical usage of this Kernel
is to model the advection equation , which is implemented by the following:
[Kernels]
[u_dot]
type = TimeDerivative
variable = u
[]
[u_advection]
type = PorousFlowBasicAdvection
variable = u
phase = 0
[]
[]
(modules/porous_flow/test/tests/basic_advection/1phase.i)(modules/porous_flow/test/tests/basic_advection/1phase.i)
# Basic advection of u in a 1-phase situation
#
# grad(P) = -2
# density * gravity = 4 * 0.25
# grad(P) - density * gravity = -3
# permeability = 5
# viscosity = 150
# so Darcy velocity = 0.1
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
xmin = 0
xmax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[P]
[]
[]
[ICs]
[P]
type = FunctionIC
variable = P
function = '2*(1-x)'
[]
[u]
type = FunctionIC
variable = u
function = 'if(x<0.1,1,0)'
[]
[]
[Kernels]
[u_dot]
type = TimeDerivative
variable = u
[]
[u_advection]
type = PorousFlowBasicAdvection
variable = u
phase = 0
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = ''
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureConst
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2e9
density0 = 4
thermal_expansion = 0
viscosity = 150.0
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = P
capillary_pressure = pc
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '5 0 0 0 5 0 0 0 5'
[]
[relperm]
type = PorousFlowRelativePermeabilityCorey
n = 0
phase = 0
[]
[darcy_velocity]
type = PorousFlowDarcyVelocityMaterial
gravity = '0.25 0 0'
[]
[]
[BCs]
[left]
type = DirichletBC
boundary = left
value = 1
variable = u
[]
[right]
type = DirichletBC
boundary = right
value = 0
variable = u
[]
[]
[Preconditioning]
[basic]
type = SMP
full = true
petsc_options_iname = '-pc_type -snes_rtol'
petsc_options_value = ' lu 1E-10'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 1
end_time = 5
[]
[Outputs]
exodus = true
print_linear_residuals = false
[]
(modules/porous_flow/test/tests/jacobian/basic_advection4.i)
# Basic advection with 1 porepressure and temperature as PorousFlow variables
# Constant permeability
[Mesh]
type = GeneratedMesh
dim = 1
nx = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[u]
[]
[T]
[]
[P]
[]
[]
[ICs]
[P]
type = RandomIC
variable = P
min = 2E5
max = 4E5
[]
[T]
type = RandomIC
variable = T
min = 300
max = 900
[]
[u]
type = RandomIC
variable = u
[]
[]
[Kernels]
[dummy_T]
type = NullKernel
variable = T
[]
[dummy_P]
type = NullKernel
variable = P
[]
[u_advection]
type = PorousFlowBasicAdvection
variable = u
phase = 0
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'P T'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
alpha = 1E-5
m = 0.6
sat_lr = 0.1
[]
[]
[FluidProperties]
[methane]
type = MethaneFluidProperties
[]
[]
[Materials]
[temperature_qp]
type = PorousFlowTemperature
temperature = T
[]
[ppss_qp]
type = PorousFlow1PhaseP
porepressure = P
capillary_pressure = pc
[]
[fluid_qp]
type = PorousFlowSingleComponentFluid
fp = methane
phase = 0
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '5 0 0 0 5 0 0 0 5'
[]
[relperm_qp]
type = PorousFlowRelativePermeabilityCorey
n = 2
phase = 0
s_res = 0.1
sum_s_res = 0.1
[]
[darcy_velocity_qp]
type = PorousFlowDarcyVelocityMaterial
gravity = '0.25 0 0'
[]
[]
[Preconditioning]
[check]
type = SMP
full = true
#petsc_options = '-snes_test_display'
petsc_options_iname = '-snes_type'
petsc_options_value = ' test'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 1
[]
(modules/porous_flow/test/tests/basic_advection/1phase.i)
# Basic advection of u in a 1-phase situation
#
# grad(P) = -2
# density * gravity = 4 * 0.25
# grad(P) - density * gravity = -3
# permeability = 5
# viscosity = 150
# so Darcy velocity = 0.1
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
xmin = 0
xmax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[P]
[]
[]
[ICs]
[P]
type = FunctionIC
variable = P
function = '2*(1-x)'
[]
[u]
type = FunctionIC
variable = u
function = 'if(x<0.1,1,0)'
[]
[]
[Kernels]
[u_dot]
type = TimeDerivative
variable = u
[]
[u_advection]
type = PorousFlowBasicAdvection
variable = u
phase = 0
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = ''
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureConst
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2e9
density0 = 4
thermal_expansion = 0
viscosity = 150.0
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = P
capillary_pressure = pc
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '5 0 0 0 5 0 0 0 5'
[]
[relperm]
type = PorousFlowRelativePermeabilityCorey
n = 0
phase = 0
[]
[darcy_velocity]
type = PorousFlowDarcyVelocityMaterial
gravity = '0.25 0 0'
[]
[]
[BCs]
[left]
type = DirichletBC
boundary = left
value = 1
variable = u
[]
[right]
type = DirichletBC
boundary = right
value = 0
variable = u
[]
[]
[Preconditioning]
[basic]
type = SMP
full = true
petsc_options_iname = '-pc_type -snes_rtol'
petsc_options_value = ' lu 1E-10'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 1
end_time = 5
[]
[Outputs]
exodus = true
print_linear_residuals = false
[]
(modules/porous_flow/test/tests/basic_advection/except2.i)
# PorousFlowDarcyVelocityMaterial attempts to have at_nodes = true
[Mesh]
type = GeneratedMesh
dim = 1
nx = 100
xmin = 0
xmax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[P]
[]
[]
[ICs]
[P]
type = FunctionIC
variable = P
function = '2*(1-x)'
[]
[u]
type = FunctionIC
variable = u
function = 'if(x<0.1,1,0)'
[]
[]
[Kernels]
[u_dot]
type = TimeDerivative
variable = u
[]
[u_advection]
type = PorousFlowBasicAdvection
variable = u
phase = 1
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = ''
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureConst
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2e9
density0 = 4
thermal_expansion = 0
viscosity = 150.0
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = P
capillary_pressure = pc
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '5 0 0 0 5 0 0 0 5'
[]
[relperm]
type = PorousFlowRelativePermeabilityCorey
n = 0
phase = 0
[]
[darcy_velocity]
type = PorousFlowDarcyVelocityMaterial
gravity = '0.25 0 0'
at_nodes = true
[]
[]
[BCs]
[left]
type = DirichletBC
boundary = left
value = 1
variable = u
[]
[right]
type = DirichletBC
boundary = right
value = 0
variable = u
[]
[]
[Preconditioning]
[basic]
type = SMP
full = true
petsc_options_iname = '-pc_type -snes_rtol'
petsc_options_value = ' lu 1E-10'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 1
end_time = 5
[]
[Outputs]
exodus = true
print_linear_residuals = false
[]
(modules/porous_flow/test/tests/jacobian/basic_advection1.i)
# Basic advection with no PorousFlow variables
[Mesh]
type = GeneratedMesh
dim = 1
nx = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[P]
[]
[]
[ICs]
[P]
type = FunctionIC
variable = P
function = '2*(1-x)'
[]
[u]
type = RandomIC
variable = u
[]
[]
[Kernels]
[u_advection]
type = PorousFlowBasicAdvection
variable = u
phase = 0
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = ''
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureConst
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2e9
density0 = 4
thermal_expansion = 0
viscosity = 150.0
[]
[]
[Materials]
[temperature_qp]
type = PorousFlowTemperature
[]
[ppss_qp]
type = PorousFlow1PhaseP
porepressure = P
capillary_pressure = pc
[]
[simple_fluid_qp]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '5 0 0 0 5 0 0 0 5'
[]
[relperm_qp]
type = PorousFlowRelativePermeabilityCorey
n = 0
phase = 0
[]
[darcy_velocity_qp]
type = PorousFlowDarcyVelocityMaterial
gravity = '0.25 0 0'
[]
[]
[Preconditioning]
[check]
type = SMP
full = true
#petsc_options = '-snes_test_display'
petsc_options_iname = '-snes_type'
petsc_options_value = ' test'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 1
[]
(modules/porous_flow/test/tests/jacobian/basic_advection6.i)
# Basic advection with 2 porepressure as PorousFlow variables
[Mesh]
type = GeneratedMesh
dim = 1
nx = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[u]
[]
[P0]
[]
[P1]
[]
[]
[ICs]
[P0]
type = RandomIC
variable = P0
min = -1
max = 0
[]
[P1]
type = RandomIC
variable = P1
min = 0
max = 1
[]
[u]
type = RandomIC
variable = u
[]
[]
[Kernels]
[dummy_P0]
type = NullKernel
variable = P0
[]
[dummy_P1]
type = NullKernel
variable = P1
[]
[u_advection]
type = PorousFlowBasicAdvection
variable = u
phase = 0
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'P0 P1'
number_fluid_phases = 2
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
alpha = 1
m = 0.6
sat_lr = 0.1
[]
[]
[FluidProperties]
[simple_fluid0]
type = SimpleFluidProperties
bulk_modulus = 3
density0 = 4
thermal_expansion = 0
viscosity = 150.0
[]
[simple_fluid1]
type = SimpleFluidProperties
bulk_modulus = 4
density0 = 3
thermal_expansion = 0
viscosity = 130.0
[]
[]
[Materials]
[temperature_qp]
type = PorousFlowTemperature
[]
[ppss_qp]
type = PorousFlow2PhasePP
phase0_porepressure = P0
phase1_porepressure = P1
capillary_pressure = pc
[]
[simple_fluid0_qp]
type = PorousFlowSingleComponentFluid
fp = simple_fluid0
phase = 0
[]
[simple_fluid1_qp]
type = PorousFlowSingleComponentFluid
fp = simple_fluid1
phase = 1
[]
[effective_fluid_pressure]
type = PorousFlowEffectiveFluidPressure
[]
[porosity]
type = PorousFlowPorosity
porosity_zero = 0.1
fluid = true
biot_coefficient = 0.5
solid_bulk = 1
[]
[permeability]
type = PorousFlowPermeabilityKozenyCarman
poroperm_function = kozeny_carman_phi0
k0 = 5
m = 2
n = 2
phi0 = 0.1
[]
[relperm0_qp]
type = PorousFlowRelativePermeabilityCorey
n = 2
phase = 0
s_res = 0.1
sum_s_res = 0.1
[]
[relperm1_qp]
type = PorousFlowRelativePermeabilityCorey
n = 3
phase = 1
s_res = 0.0
sum_s_res = 0.1
[]
[darcy_velocity_qp]
type = PorousFlowDarcyVelocityMaterial
gravity = '0.25 0 0'
[]
[]
[Preconditioning]
[check]
type = SMP
full = true
petsc_options = '-snes_test_display'
petsc_options_iname = '-snes_type'
petsc_options_value = ' test'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 1
[]
(modules/porous_flow/test/tests/jacobian/basic_advection2.i)
# Basic advection with 1 porepressure as a PorousFlow variable
# Fully saturated
# Constant permeability
# Constant viscosity
[Mesh]
type = GeneratedMesh
dim = 1
nx = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[u]
[]
[P]
[]
[]
[ICs]
[P]
type = RandomIC
variable = P
[]
[u]
type = RandomIC
variable = u
[]
[]
[Kernels]
[dummy_P]
type = NullKernel
variable = P
[]
[u_advection]
type = PorousFlowBasicAdvection
variable = u
phase = 0
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = P
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
alpha = 1
m = 0.6
sat_lr = 0.1
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 3
density0 = 4
thermal_expansion = 0
viscosity = 150.0
[]
[]
[Materials]
[temperature_qp]
type = PorousFlowTemperature
[]
[ppss_qp]
type = PorousFlow1PhaseP
porepressure = P
capillary_pressure = pc
[]
[simple_fluid_qp]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '5 0 0 0 5 0 0 0 5'
[]
[relperm_qp]
type = PorousFlowRelativePermeabilityCorey
n = 2
phase = 0
s_res = 0.1
sum_s_res = 0.1
[]
[darcy_velocity_qp]
type = PorousFlowDarcyVelocityMaterial
gravity = '0.25 0 0'
[]
[]
[Preconditioning]
[check]
type = SMP
full = true
#petsc_options = '-snes_test_display'
petsc_options_iname = '-snes_type'
petsc_options_value = ' test'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 1
[]
(modules/porous_flow/test/tests/jacobian/basic_advection3.i)
# Basic advection with 1 porepressure as a PorousFlow variable
# Constant permeability
# Constant viscosity
[Mesh]
type = GeneratedMesh
dim = 1
nx = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[u]
[]
[P]
[]
[]
[ICs]
[P]
type = RandomIC
variable = P
min = -1
max = 0
[]
[u]
type = RandomIC
variable = u
[]
[]
[Kernels]
[dummy_P]
type = NullKernel
variable = P
[]
[u_advection]
type = PorousFlowBasicAdvection
variable = u
phase = 0
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = P
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
alpha = 1
m = 0.6
sat_lr = 0.1
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 3
density0 = 4
thermal_expansion = 0
viscosity = 150.0
[]
[]
[Materials]
[temperature_qp]
type = PorousFlowTemperature
[]
[ppss_qp]
type = PorousFlow1PhaseP
porepressure = P
capillary_pressure = pc
[]
[simple_fluid_qp]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '5 0 0 0 5 0 0 0 5'
[]
[relperm_qp]
type = PorousFlowRelativePermeabilityCorey
n = 2
phase = 0
s_res = 0.1
sum_s_res = 0.1
[]
[darcy_velocity_qp]
type = PorousFlowDarcyVelocityMaterial
gravity = '0.25 0 0'
[]
[]
[Preconditioning]
[check]
type = SMP
full = true
#petsc_options = '-snes_test_display'
petsc_options_iname = '-snes_type'
petsc_options_value = ' test'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 1
[]
(modules/porous_flow/test/tests/basic_advection/2phase.i)
# Basic advection of u in a 2-phase situation
#
# grad(P) = -2
# density * gravity = 4 * 0.25
# grad(P) - density * gravity = -3
# permeability = 10
# relative permeability = 0.5
# viscosity = 150
# so Darcy velocity = 0.1
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
xmin = 0
xmax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[P0]
[]
[P1]
[]
[]
[ICs]
[P0]
type = FunctionIC
variable = P0
function = '0'
[]
[P1]
type = FunctionIC
variable = P1
function = '2*(1-x)'
[]
[u]
type = FunctionIC
variable = u
function = 'if(x<0.1,1,0)'
[]
[]
[Kernels]
[u_dot]
type = TimeDerivative
variable = u
[]
[u_advection]
type = PorousFlowBasicAdvection
variable = u
phase = 1
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = ''
number_fluid_phases = 2
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureConst
[]
[]
[FluidProperties]
[simple_fluid0]
type = SimpleFluidProperties
density0 = 32
viscosity = 123
[]
[simple_fluid1]
type = SimpleFluidProperties
bulk_modulus = 2e9
density0 = 4
thermal_expansion = 0
viscosity = 150.0
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow2PhasePP
phase0_porepressure = P0
phase1_porepressure = P1
capillary_pressure = pc
[]
[simple_fluid0]
type = PorousFlowSingleComponentFluid
fp = simple_fluid0
phase = 0
[]
[simple_fluid1]
type = PorousFlowSingleComponentFluid
fp = simple_fluid1
phase = 1
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '10 0 0 0 10 0 0 0 10'
[]
[relperm0]
type = PorousFlowRelativePermeabilityCorey
n = 2
phase = 0
[]
[relperm1]
type = PorousFlowRelativePermeabilityConst
kr = 0.5
phase = 1
[]
[darcy_velocity]
type = PorousFlowDarcyVelocityMaterial
gravity = '0.25 0 0'
[]
[]
[BCs]
[left]
type = DirichletBC
boundary = left
value = 1
variable = u
[]
[right]
type = DirichletBC
boundary = right
value = 0
variable = u
[]
[]
[Preconditioning]
[basic]
type = SMP
full = true
petsc_options_iname = '-pc_type -snes_rtol'
petsc_options_value = ' lu 1E-10'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 1
end_time = 5
[]
[Outputs]
exodus = true
print_linear_residuals = false
[]
(modules/porous_flow/test/tests/basic_advection/except1.i)
# phase number is too high in PorousFlowBasicAdvection
[Mesh]
type = GeneratedMesh
dim = 1
nx = 100
xmin = 0
xmax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[P]
[]
[]
[ICs]
[P]
type = FunctionIC
variable = P
function = '2*(1-x)'
[]
[u]
type = FunctionIC
variable = u
function = 'if(x<0.1,1,0)'
[]
[]
[Kernels]
[u_dot]
type = TimeDerivative
variable = u
[]
[u_advection]
type = PorousFlowBasicAdvection
variable = u
phase = 1
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = ''
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureConst
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2e9
density0 = 4
thermal_expansion = 0
viscosity = 150.0
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = P
capillary_pressure = pc
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '5 0 0 0 5 0 0 0 5'
[]
[relperm]
type = PorousFlowRelativePermeabilityCorey
n = 0
phase = 0
[]
[darcy_velocity]
type = PorousFlowDarcyVelocityMaterial
gravity = '0.25 0 0'
[]
[]
[BCs]
[left]
type = DirichletBC
boundary = left
value = 1
variable = u
[]
[right]
type = DirichletBC
boundary = right
value = 0
variable = u
[]
[]
[Preconditioning]
[basic]
type = SMP
full = true
petsc_options_iname = '-pc_type -snes_rtol'
petsc_options_value = ' lu 1E-10'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 1
end_time = 5
[]
[Outputs]
exodus = true
print_linear_residuals = false
[]
(modules/porous_flow/test/tests/jacobian/basic_advection5.i)
# Basic advection with 1 porepressure as a PorousFlow variable
[Mesh]
type = GeneratedMesh
dim = 1
nx = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
[]
[Variables]
[u]
[]
[P]
[]
[]
[ICs]
[P]
type = RandomIC
variable = P
min = -1
max = 1
[]
[u]
type = RandomIC
variable = u
[]
[]
[Kernels]
[dummy_P]
type = NullKernel
variable = P
[]
[u_advection]
type = PorousFlowBasicAdvection
variable = u
phase = 0
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = P
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
alpha = 1
m = 0.6
sat_lr = 0.1
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 3
density0 = 4
thermal_expansion = 0
viscosity = 150.0
[]
[]
[Materials]
[temperature_qp]
type = PorousFlowTemperature
[]
[ppss_qp]
type = PorousFlow1PhaseP
porepressure = P
capillary_pressure = pc
[]
[simple_fluid_qp]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[effective_fluid_pressure]
type = PorousFlowEffectiveFluidPressure
[]
[porosity]
type = PorousFlowPorosity
porosity_zero = 0.1
fluid = true
biot_coefficient = 0.5
solid_bulk = 1
[]
[permeability]
type = PorousFlowPermeabilityKozenyCarman
poroperm_function = kozeny_carman_phi0
k0 = 5
m = 2
n = 2
phi0 = 0.1
[]
[relperm_qp]
type = PorousFlowRelativePermeabilityCorey
n = 2
phase = 0
[]
[darcy_velocity_qp]
type = PorousFlowDarcyVelocityMaterial
gravity = '0.25 0 0'
[]
[]
[Preconditioning]
[check]
type = SMP
full = true
#petsc_options = '-snes_test_display'
petsc_options_iname = '-snes_type'
petsc_options_value = ' test'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 1
[]