- variableThe name of the variable that this kernel operates on
C++ Type:NonlinearVariableName
Description:The name of the variable that this kernel operates on
ODETimeDerivative

The ODETimeDerivative has not been documented. The content listed below should be used as a starting point for documenting the class, which includes the typical automatic documentation associated with a MooseObject; however, what is contained is ultimately determined by what is necessary to make the documentation clear for users.
# ODETimeDerivative
!syntax description /ScalarKernels/ODETimeDerivative
## Overview
!! Replace these lines with information regarding the ODETimeDerivative object.
## Example Input File Syntax
!! Describe and include an example of how to use the ODETimeDerivative object.
!syntax parameters /ScalarKernels/ODETimeDerivative
!syntax inputs /ScalarKernels/ODETimeDerivative
!syntax children /ScalarKernels/ODETimeDerivative
!syntax description /ScalarKernels/ODETimeDerivative
Input Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector
Options:
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Options:
Description:Set the enabled status of the MooseObject.
- implicitTrueDetermines whether this object is calculated using an implicit or explicit form
Default:True
C++ Type:bool
Options:
Description:Determines whether this object is calculated using an implicit or explicit form
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Options:
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Advanced Parameters
- extra_matrix_tagsThe extra tags for the matrices this Kernel should fill
C++ Type:std::vector
Options:
Description:The extra tags for the matrices this Kernel should fill
- extra_vector_tagsThe extra tags for the vectors this Kernel should fill
C++ Type:std::vector
Options:
Description:The extra tags for the vectors this Kernel should fill
- matrix_tagssystem timeThe tag for the matrices this Kernel should fill
Default:system time
C++ Type:MultiMooseEnum
Options:nontime system time
Description:The tag for the matrices this Kernel should fill
- vector_tagstimeThe tag for the vectors this Kernel should fill
Default:time
C++ Type:MultiMooseEnum
Options:nontime time
Description:The tag for the vectors this Kernel should fill
Tagging Parameters
Input Files
- test/tests/postprocessors/scalar_coupled_postprocessor/scalar_coupled_postprocessor_test.i
- test/tests/scalar_kernels/ad_coupled_scalar/ad_coupled_scalar.i
- examples/ex18_scalar_kernel/ex18.i
- test/tests/misc/check_error/scalar_kernel_with_var.i
- examples/ex18_scalar_kernel/ex18_parsed.i
- test/tests/postprocessors/scalar_variable/scalar_variable_pps.i
- test/tests/bcs/periodic/no_add_scalar.i
- test/tests/tag/scalar_tag_vector.i
- test/tests/outputs/variables/output_vars_nonexistent.i
- test/tests/kernels/ode/ode_sys_impl_test.i
- test/tests/controls/time_periods/scalarkernels/scalarkernels.i
- test/tests/ics/function_scalar_ic/function_scalar_ic.i
- test/tests/time_integrators/scalar/stiff.i
- test/tests/outputs/variables/output_vars_test.i
- test/tests/kernels/bad_scaling_scalar_kernels/ill_conditioned_field_scalar_system.i
- test/tests/kernels/ode/parsedode_pp_test.i
- test/tests/controls/conditional_functional_enable/conditional_function_enable.i
- test/tests/time_integrators/actually_explicit_euler_verification/ee-ode.i
- test/tests/time_integrators/explicit_ssp_runge_kutta/explicit_ssp_runge_kutta.i
- test/tests/kernels/ode/parsedode_sys_impl_test.i
- test/tests/time_integrators/scalar/scalar.i
- test/tests/outputs/variables/output_vars_hidden_shown_check.i
test/tests/postprocessors/scalar_coupled_postprocessor/scalar_coupled_postprocessor_test.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 5
ny = 5
xmax = 1
ymax = 1
elem_type = QUAD4
[]
[Variables]
[./u]
initial_condition = 1
[../]
[./scalar_variable]
family = SCALAR
order = FIRST
initial_condition = 2
[../]
[]
[Kernels]
[./diff]
type = Diffusion
variable = u
[../]
[]
[ScalarKernels]
[./td1]
type = ODETimeDerivative
variable = scalar_variable
[../]
[]
[BCs]
[./leftDirichlet]
type = DirichletBC
variable = u
boundary = 'left'
value = 1
[../]
[./rightDirichlet]
type = DirichletBC
variable = u
boundary = 'right'
value = 0
[../]
[]
[Postprocessors]
[./totalFlux]
type = ScalarCoupledPostprocessor
variable = u
coupled_scalar = scalar_variable
boundary = left
[../]
[]
[Executioner]
type = Transient
dt = 1
num_steps = 1
solve_type = JFNK
l_max_its = 30
l_tol = 1e-6
nl_max_its = 20
nl_rel_tol = 1e-5
[]
[Outputs]
csv = true
[]
test/tests/scalar_kernels/ad_coupled_scalar/ad_coupled_scalar.i
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[time]
type = TimeDerivative
variable = u
[]
[]
[ScalarKernels]
[time]
type = ODETimeDerivative
variable = v
[]
[flux_sink]
type = PostprocessorSinkScalarKernel
variable = v
postprocessor = scale_flux
[]
[]
[BCs]
[right]
type = DirichletBC
value = 0
variable = u
boundary = 'right'
[]
[left]
type = ADMatchedScalarValueBC
variable = u
v = v
boundary = 'left'
[]
[]
[Variables]
[u][]
[v]
family = SCALAR
order = FIRST
initial_condition = 1
[]
[]
[Postprocessors]
[flux]
type = SideFluxIntegral
variable = u
diffusivity = 1
boundary = 'left'
execute_on = 'initial nonlinear linear timestep_end'
[]
[scale_flux]
type = ScalePostprocessor
scaling_factor = -1
value = flux
execute_on = 'initial nonlinear linear timestep_end'
[]
[]
[Executioner]
type = Transient
dt = .1
end_time = 1
solve_type = PJFNK
nl_rel_tol = 1e-12
[]
[Outputs]
exodus = true
[]
examples/ex18_scalar_kernel/ex18.i
[Mesh]
type = GeneratedMesh
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 10
ny = 10
elem_type = QUAD4
[]
[Functions]
# ODEs
[./exact_x_fn]
type = ParsedFunction
value = (-1/3)*exp(-t)+(4/3)*exp(5*t)
[../]
[./exact_y_fn]
type = ParsedFunction
value = (2/3)*exp(-t)+(4/3)*exp(5*t)
[../]
[]
[Variables]
[./diffused]
order = FIRST
family = LAGRANGE
[../]
# ODE variables
[./x]
family = SCALAR
order = FIRST
initial_condition = 1
[../]
[./y]
family = SCALAR
order = FIRST
initial_condition = 2
[../]
[]
[Kernels]
[./td]
type = TimeDerivative
variable = diffused
[../]
[./diff]
type = Diffusion
variable = diffused
[../]
[]
[ScalarKernels]
[./td1]
type = ODETimeDerivative
variable = x
[../]
[./ode1]
type = ImplicitODEx
variable = x
y = y
[../]
[./td2]
type = ODETimeDerivative
variable = y
[../]
[./ode2]
type = ImplicitODEy
variable = y
x = x
[../]
[]
[BCs]
[./right]
type = ScalarDirichletBC
variable = diffused
boundary = 1
scalar_var = x
[../]
[./left]
type = ScalarDirichletBC
variable = diffused
boundary = 3
scalar_var = y
[../]
[]
[Postprocessors]
# to print the values of x, y into a file so we can plot it
[./x]
type = ScalarVariable
variable = x
execute_on = timestep_end
[../]
[./y]
type = ScalarVariable
variable = y
execute_on = timestep_end
[../]
[./exact_x]
type = FunctionValuePostprocessor
function = exact_x_fn
execute_on = timestep_end
point = '0 0 0'
[../]
[./exact_y]
type = FunctionValuePostprocessor
function = exact_y_fn
execute_on = timestep_end
point = '0 0 0'
[../]
# Measure the error in ODE solution for 'x'.
[./l2err_x]
type = ScalarL2Error
variable = x
function = exact_x_fn
[../]
# Measure the error in ODE solution for 'y'.
[./l2err_y]
type = ScalarL2Error
variable = y
function = exact_y_fn
[../]
[]
[Executioner]
type = Transient
start_time = 0
dt = 0.01
num_steps = 10
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
[]
[Outputs]
exodus = true
[]
test/tests/misc/check_error/scalar_kernel_with_var.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 2
[]
[Variables]
[./u]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./v]
[../]
[]
[Kernels]
[./diff]
type = Diffusion
variable = u
[../]
[./rea]
type = Reaction
variable = u
[../]
[]
[ScalarKernels]
[./nope]
type = ODETimeDerivative
variable = u
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
boundary = 1
value = 0
[../]
[./right]
type = DirichletBC
variable = u
boundary = 2
value = 1
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
[]
[Outputs]
file_base = out
exodus = true
[]
examples/ex18_scalar_kernel/ex18_parsed.i
#
# Example 18 modified to use parsed ODE kernels.
#
# The ParsedODEKernel takes function expressions in the input file and computes
# Jacobian entries via automatic differentiation. It allows for rapid development
# of new models without the need for code recompilation.
#
# This input file should produce the exact same result as ex18.i
#
[Mesh]
type = GeneratedMesh
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 10
ny = 10
elem_type = QUAD4
[]
[Functions]
# ODEs
[./exact_x_fn]
type = ParsedFunction
value = (-1/3)*exp(-t)+(4/3)*exp(5*t)
[../]
[./exact_y_fn]
type = ParsedFunction
value = (2/3)*exp(-t)+(4/3)*exp(5*t)
[../]
[]
[Variables]
[./diffused]
order = FIRST
family = LAGRANGE
[../]
# ODE variables
[./x]
family = SCALAR
order = FIRST
initial_condition = 1
[../]
[./y]
family = SCALAR
order = FIRST
initial_condition = 2
[../]
[]
[Kernels]
[./td]
type = TimeDerivative
variable = diffused
[../]
[./diff]
type = Diffusion
variable = diffused
[../]
[]
[ScalarKernels]
[./td1]
type = ODETimeDerivative
variable = x
[../]
#
# This parsed expression ODE Kernel behaves exactly as the ImplicitODEx kernel
# in the main example. Checkout ImplicitODEx::computeQpResidual() in the
# source code file ImplicitODEx.C to see the matching residual function.
#
# The ParsedODEKernel automaticaly generates the On- and Off-Diagonal Jacobian
# entries.
#
[./ode1]
type = ParsedODEKernel
function = '-3*x - 2*y'
variable = x
args = y
[../]
[./td2]
type = ODETimeDerivative
variable = y
[../]
#
# This parsed expression ODE Kernel behaves exactly as the ImplicitODEy Kernel
# in the main example.
#
[./ode2]
type = ParsedODEKernel
function = '-4*x - y'
variable = y
args = x
[../]
[]
[BCs]
[./right]
type = ScalarDirichletBC
variable = diffused
boundary = 1
scalar_var = x
[../]
[./left]
type = ScalarDirichletBC
variable = diffused
boundary = 3
scalar_var = y
[../]
[]
[Postprocessors]
# to print the values of x, y into a file so we can plot it
[./x]
type = ScalarVariable
variable = x
execute_on = timestep_end
[../]
[./y]
type = ScalarVariable
variable = y
execute_on = timestep_end
[../]
[./exact_x]
type = FunctionValuePostprocessor
function = exact_x_fn
execute_on = timestep_end
[../]
[./exact_y]
type = FunctionValuePostprocessor
function = exact_y_fn
execute_on = timestep_end
point = '0 0 0'
[../]
# Measure the error in ODE solution for 'x'.
[./l2err_x]
type = ScalarL2Error
variable = x
function = exact_x_fn
[../]
# Measure the error in ODE solution for 'y'.
[./l2err_y]
type = ScalarL2Error
variable = y
function = exact_y_fn
[../]
[]
[Executioner]
type = Transient
start_time = 0
dt = 0.01
num_steps = 10
solve_type = 'PJFNK'
[]
[Outputs]
file_base = 'ex18_out'
exodus = true
[]
test/tests/postprocessors/scalar_variable/scalar_variable_pps.i
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[time]
type = TimeDerivative
variable = u
[]
[]
[ScalarKernels]
[time]
type = ODETimeDerivative
variable = v
[]
[flux_sink]
type = PostprocessorSinkScalarKernel
variable = v
postprocessor = scale_flux
[]
[]
[BCs]
[right]
type = DirichletBC
value = 0
variable = u
boundary = 'right'
[]
[left]
type = ADMatchedScalarValueBC
variable = u
v = v
boundary = 'left'
[]
[]
[Variables]
[u][]
[v]
family = SCALAR
order = FIRST
initial_condition = 1
[]
[]
[Postprocessors]
[flux]
type = SideFluxIntegral
variable = u
diffusivity = 1
boundary = 'left'
execute_on = 'initial nonlinear linear timestep_end'
[]
[scale_flux]
type = ScalePostprocessor
scaling_factor = -1
value = flux
execute_on = 'initial nonlinear linear timestep_end'
[]
[reporter]
type = ScalarVariable
variable = v
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
dt = .1
end_time = 1
solve_type = PJFNK
nl_rel_tol = 1e-12
[]
[Outputs]
csv = true
[]
test/tests/bcs/periodic/no_add_scalar.i
# Test to make sure that periodic boundaries
# are not applied to scalar variables.
[Mesh]
type = GeneratedMesh
dim = 1
nx = 20
[]
[Variables]
[./c]
[./InitialCondition]
type = FunctionIC
function = x
[../]
[../]
[./scalar]
family = SCALAR
[../]
[]
[BCs]
[./Periodic]
[./all]
auto_direction = x
[../]
[../]
[]
[Kernels]
[./dt]
type = TimeDerivative
variable = c
[../]
[./diff]
type = Diffusion
variable = c
[../]
[]
[ScalarKernels]
[./scalar]
type = ODETimeDerivative
variable = scalar
[../]
[]
[Executioner]
type = Transient
dt = 0.1
num_steps = 3
[]
[Outputs]
exodus = true
[]
test/tests/tag/scalar_tag_vector.i
[Mesh]
type = GeneratedMesh
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 1
ny = 1
elem_type = QUAD4
[]
[Variables]
[./n]
family = SCALAR
order = FIRST
initial_condition = 1
[../]
[]
[AuxVariables]
[./tag_vector_var1]
family = SCALAR
order = FIRST
[../]
[./tag_vector_var2]
family = SCALAR
order = FIRST
[../]
[./tag_matrix_var2]
family = SCALAR
order = FIRST
[../]
[]
[ScalarKernels]
[./dn]
type = ODETimeDerivative
variable = n
extra_matrix_tags = 'mat_tag1 mat_tag2'
extra_vector_tags = 'vec_tag1'
[../]
[./ode1]
type = ParsedODEKernel
function = '-n'
variable = n
extra_matrix_tags = 'mat_tag1'
extra_vector_tags = 'vec_tag1'
[../]
[./ode2]
type = ParsedODEKernel
function = '-n'
variable = n
vector_tags = 'vec_tag2'
matrix_tags = 'mat_tag2'
[../]
[]
[AuxScalarKernels]
[./TagVectorAux]
type = ScalarTagVectorAux
variable = tag_vector_var1
v = n
vector_tag = vec_tag1
execute_on = timestep_end
[../]
[./TagVectorAux2]
type = ScalarTagVectorAux
variable = tag_vector_var2
v = n
vector_tag = vec_tag2
execute_on = timestep_end
[../]
[./TagMatrixAux2]
type = ScalarTagMatrixAux
variable = tag_matrix_var2
v = n
matrix_tag = mat_tag2
execute_on = timestep_end
[../]
[]
[Problem]
type = TagTestProblem
test_tag_vectors = 'time nontime residual vec_tag1 vec_tag2'
test_tag_matrices = 'mat_tag1 mat_tag2'
extra_tag_matrices = 'mat_tag1 mat_tag2'
extra_tag_vectors = 'vec_tag1 vec_tag2'
[]
[Executioner]
type = Transient
start_time = 0
num_steps = 10
dt = 0.001
dtmin = 0.001 # Don't allow timestep cutting
solve_type = NEWTON
nl_max_its = 2
nl_abs_tol = 1.e-12 # This is an ODE, so nl_abs_tol makes sense.
[]
[Functions]
[./exact_solution]
type = ParsedFunction
value = exp(t)
[../]
[]
[Postprocessors]
[./error_n]
# Post processor that computes the difference between the computed
# and exact solutions. For the exact solution used here, the
# error at the final time should converge at O(dt^p), where p is
# the order of the method.
type = ScalarL2Error
variable = n
function = exact_solution
# final is not currently supported for Postprocessor execute_on...
# execute_on = 'final'
[../]
[]
[Outputs]
csv = true
[]
test/tests/outputs/variables/output_vars_nonexistent.i
[Mesh]
type = GeneratedMesh
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 10
ny = 10
elem_type = QUAD9
[]
[Variables]
[./u]
order = FIRST
family = LAGRANGE
[../]
[./v]
order = SECOND
family = LAGRANGE
[../]
# ODE variables
[./x]
family = SCALAR
order = FIRST
initial_condition = 1
[../]
[./y]
family = SCALAR
order = FIRST
initial_condition = 2
[../]
[]
[AuxVariables]
[./elemental]
order = CONSTANT
family = MONOMIAL
[../]
[./elemental_restricted]
order = CONSTANT
family = MONOMIAL
[../]
[./nodal]
order = FIRST
family = LAGRANGE
[../]
[./nodal_restricted]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./td]
type = TimeDerivative
variable = u
[../]
[./diff_u]
type = Diffusion
variable = u
[../]
[./conv_u]
type = CoupledForce
variable = u
v = v
[../]
[./diff_v]
type = Diffusion
variable = v
[../]
[]
[AuxKernels]
[./elemental]
type = ConstantAux
variable = elemental
value = 1
[../]
[./elemental_restricted]
type = ConstantAux
variable = elemental_restricted
value = 1
[../]
[./nodal]
type = ConstantAux
variable = elemental
value = 2
[../]
[./nodal_restricted]
type = ConstantAux
variable = elemental_restricted
value = 2
[../]
[]
[ScalarKernels]
[./td1]
type = ODETimeDerivative
variable = x
[../]
[./ode1]
type = ImplicitODEx
variable = x
y = y
[../]
[./td2]
type = ODETimeDerivative
variable = y
[../]
[./ode2]
type = ImplicitODEy
variable = y
x = x
[../]
[]
[BCs]
active = 'left_u right_u left_v'
[./left_u]
type = DirichletBC
variable = u
boundary = 1
value = 1
[../]
[./right_u]
type = DirichletBC
variable = u
boundary = 3
value = 9
[../]
[./left_v]
type = DirichletBC
variable = v
boundary = 1
value = 5
[../]
[./right_v]
type = DirichletBC
variable = v
boundary = 2
value = 2
[../]
[]
[Postprocessors]
[./x]
type = ScalarVariable
variable = x
execute_on = timestep_end
[../]
[./y]
type = ScalarVariable
variable = y
execute_on = timestep_end
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
dt = 0.01
num_steps = 10
[]
[Outputs]
file_base = out_nonexistent
exodus = true
show = 'u elemental nodal x foo1 foo2'
[]
test/tests/kernels/ode/ode_sys_impl_test.i
[Mesh]
type = GeneratedMesh
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 2
ny = 2
elem_type = QUAD4
[]
[Functions]
[./f_fn]
type = ParsedFunction
value = -4
[../]
[./bc_all_fn]
type = ParsedFunction
value = x*x+y*y
[../]
# ODEs
[./exact_x_fn]
type = ParsedFunction
value = (-1/3)*exp(-t)+(4/3)*exp(5*t)
[../]
[]
# NL
[Variables]
[./u]
family = LAGRANGE
order = FIRST
[../]
# ODE variables
[./x]
family = SCALAR
order = FIRST
initial_condition = 1
[../]
[./y]
family = SCALAR
order = FIRST
initial_condition = 2
[../]
[]
[Kernels]
[./td]
type = TimeDerivative
variable = u
[../]
[./diff]
type = Diffusion
variable = u
[../]
[./uff]
type = BodyForce
variable = u
function = f_fn
[../]
[]
[ScalarKernels]
[./td1]
type = ODETimeDerivative
variable = x
[../]
[./ode1]
type = ImplicitODEx
variable = x
y = y
[../]
[./td2]
type = ODETimeDerivative
variable = y
[../]
[./ode2]
type = ImplicitODEy
variable = y
x = x
[../]
[]
[BCs]
[./all]
type = FunctionDirichletBC
variable = u
boundary = '0 1 2 3'
function = bc_all_fn
[../]
[]
[Postprocessors]
active = 'exact_x l2err_x x y'
[./x]
type = ScalarVariable
variable = x
execute_on = 'initial timestep_end'
[../]
[./y]
type = ScalarVariable
variable = y
execute_on = 'initial timestep_end'
[../]
[./exact_x]
type = FunctionValuePostprocessor
function = exact_x_fn
execute_on = 'initial timestep_end'
point = '0 0 0'
[../]
[./l2err_x]
type = ScalarL2Error
variable = x
function = exact_x_fn
execute_on = 'initial timestep_end'
[../]
[]
[Executioner]
type = Transient
start_time = 0
dt = 0.01
num_steps = 100
solve_type = 'PJFNK'
[]
[Outputs]
exodus = true
[]
test/tests/controls/time_periods/scalarkernels/scalarkernels.i
# This tests controllability of the enable parameter of scalar kernels.
#
# There are 2 scalar variables, {u, v}, with the ODEs:
# du/dt = 1 u(0) = 0
# v = u v(0) = -10
# A control switches the ODE 'v = u' to the following ODE when t >= 2:
# dv/dt = 2
#
# 5 time steps (of size dt = 1) will be taken, and the predicted values are as follows:
# t u v
# ------------------
# 0 0 -10
# 1 1 1
# 2 2 2
# 3 3 4
# 4 4 6
# 5 5 8
u_initial = 0
u_growth = 1
v_initial = -10
v_growth = 2
t_transition = 2
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
[]
[Variables]
[./u]
family = SCALAR
order = FIRST
[../]
[./v]
family = SCALAR
order = FIRST
[../]
[]
[ICs]
[./u_ic]
type = ScalarConstantIC
variable = u
value = ${u_initial}
[../]
[./v_ic]
type = ScalarConstantIC
variable = v
value = ${v_initial}
[../]
[]
[ScalarKernels]
[./u_time]
type = ODETimeDerivative
variable = u
[../]
[./u_src]
type = ParsedODEKernel
variable = u
function = '-${u_growth}'
[../]
[./v_time]
type = ODETimeDerivative
variable = v
enable = false
[../]
[./v_src]
type = ParsedODEKernel
variable = v
function = '-${v_growth}'
enable = false
[../]
[./v_constraint]
type = ParsedODEKernel
variable = v
args = 'u'
function = 'v - u'
[../]
[]
[Controls]
[./time_period_control]
type = TimePeriod
end_time = ${t_transition}
enable_objects = 'ScalarKernel::v_constraint'
disable_objects = 'ScalarKernel::v_time ScalarKernel::v_src'
execute_on = 'INITIAL TIMESTEP_END'
[../]
[]
[Executioner]
type = Transient
scheme = implicit-euler
dt = 1
num_steps = 5
abort_on_solve_fail = true
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
[]
[Outputs]
csv = true
[]
test/tests/ics/function_scalar_ic/function_scalar_ic.i
[Mesh]
# a dummy mesh
type = GeneratedMesh
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 1
ny = 1
elem_type = QUAD4
[]
[Variables]
[./n]
family = SCALAR
order = FIRST
[../]
[]
[Functions]
[./f]
type = ParsedFunction
value = cos(t)
[../]
[]
[ICs]
[./f]
type = FunctionScalarIC
variable = n
function = f
[../]
[]
[ScalarKernels]
[./dn]
type = ODETimeDerivative
variable = n
[../]
[./ode1]
type = ParsedODEKernel
function = '-n'
variable = n
[../]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 1
dt = 0.01
scheme = bdf2
solve_type = 'PJFNK'
timestep_tolerance = 1e-12
[]
[Outputs]
csv = true
[]
test/tests/time_integrators/scalar/stiff.i
# This is a linear model problem described in Frank et al, "Order
# results for implicit Runge-Kutta methods applied to stiff systems",
# SIAM J. Numerical Analysis, vol. 22, no. 3, 1985, pp. 515-534.
#
# Problems "PL" and "PNL" from page 527 of the paper:
# { dy1/dt = lambda*y1 + y2**p, y1(0) = -1/(lambda+p)
# { dy2/dt = -y2, y2(0) = 1
#
# The exact solution is:
# y1 = -exp(-p*t)/(lambda+p)
# y2 = exp(-t)
#
# According to the following paragraph from the reference above, the
# p=1 version of this problem should not exhibit order reductions
# regardless of stiffness, while the nonlinear version (p>=2) will
# exhibit order reductions down to the "stage order" of the method for
# lambda large, negative.
# Use Dollar Bracket Expressions (DBEs) to set the value of LAMBDA in
# a single place. You can also set this on the command line with
# e.g. LAMBDA=-4, but note that this does not seem to override the
# value set in the input file. This is a bit different from the way
# that command line values normally work...
# Note that LAMBDA == Y2_EXPONENT is not allowed!
# LAMBDA = -10
# Y2_EXPONENT = 2
[Mesh]
type = GeneratedMesh
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 1
ny = 1
elem_type = QUAD4
[]
[Variables]
[./y1]
family = SCALAR
order = FIRST
[../]
[./y2]
family = SCALAR
order = FIRST
[../]
[]
[ICs]
[./y1_init]
type = FunctionScalarIC
variable = y1
function = y1_exact
[../]
[./y2_init]
type = FunctionScalarIC
variable = y2
function = y2_exact
[../]
[]
[ScalarKernels]
[./y1_time]
type = ODETimeDerivative
variable = y1
[../]
[./y1_space]
type = ParsedODEKernel
variable = y1
function = '-(${LAMBDA})*y1 - y2^${Y2_EXPONENT}'
args = 'y2'
[../]
[./y2_time]
type = ODETimeDerivative
variable = y2
[../]
[./y2_space]
type = ParsedODEKernel
variable = y2
function = 'y2'
[../]
[]
[Executioner]
type = Transient
[./TimeIntegrator]
type = LStableDirk2
[../]
start_time = 0
end_time = 1
dt = 0.125
solve_type = 'PJFNK'
nl_max_its = 6
nl_abs_tol = 1.e-13
nl_rel_tol = 1.e-32 # Force nl_abs_tol to be used.
line_search = 'none'
[]
[Functions]
[./y1_exact]
type = ParsedFunction
value = '-exp(-${Y2_EXPONENT}*t)/(lambda+${Y2_EXPONENT})'
vars = 'lambda'
vals = ${LAMBDA}
[../]
[./y2_exact]
type = ParsedFunction
value = exp(-t)
[../]
[]
[Postprocessors]
[./error_y1]
type = ScalarL2Error
variable = y1
function = y1_exact
execute_on = 'initial timestep_end'
[../]
[./error_y2]
type = ScalarL2Error
variable = y2
function = y2_exact
execute_on = 'initial timestep_end'
[../]
[./max_error_y1]
# Estimate ||e_1||_{\infty}
type = TimeExtremeValue
value_type = max
postprocessor = error_y1
execute_on = 'initial timestep_end'
[../]
[./max_error_y2]
# Estimate ||e_2||_{\infty}
type = TimeExtremeValue
value_type = max
postprocessor = error_y2
execute_on = 'initial timestep_end'
[../]
[./value_y1]
type = ScalarVariable
variable = y1
execute_on = 'initial timestep_end'
[../]
[./value_y2]
type = ScalarVariable
variable = y2
execute_on = 'initial timestep_end'
[../]
[./value_y1_abs_max]
type = TimeExtremeValue
value_type = abs_max
postprocessor = value_y1
execute_on = 'initial timestep_end'
[../]
[./value_y2_abs_max]
type = TimeExtremeValue
value_type = abs_max
postprocessor = value_y2
execute_on = 'initial timestep_end'
[../]
[]
[Outputs]
csv = true
[]
test/tests/outputs/variables/output_vars_test.i
[Mesh]
type = GeneratedMesh
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 10
ny = 10
elem_type = QUAD9
[]
[Variables]
[./u]
order = FIRST
family = LAGRANGE
[../]
[./v]
order = SECOND
family = LAGRANGE
[../]
# ODE variables
[./x]
family = SCALAR
order = FIRST
initial_condition = 1
[../]
[./y]
family = SCALAR
order = FIRST
initial_condition = 2
[../]
[]
[AuxVariables]
[./elemental]
order = CONSTANT
family = MONOMIAL
[../]
[./elemental_restricted]
order = CONSTANT
family = MONOMIAL
[../]
[./nodal]
order = FIRST
family = LAGRANGE
[../]
[./nodal_restricted]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./td]
type = TimeDerivative
variable = u
[../]
[./diff_u]
type = Diffusion
variable = u
[../]
[./conv_u]
type = CoupledForce
variable = u
v = v
[../]
[./diff_v]
type = Diffusion
variable = v
[../]
[]
[AuxKernels]
[./elemental]
type = ConstantAux
variable = elemental
value = 1
[../]
[./elemental_restricted]
type = ConstantAux
variable = elemental_restricted
value = 1
[../]
[./nodal]
type = ConstantAux
variable = elemental
value = 2
[../]
[./nodal_restricted]
type = ConstantAux
variable = elemental_restricted
value = 2
[../]
[]
[ScalarKernels]
[./td1]
type = ODETimeDerivative
variable = x
[../]
[./ode1]
type = ImplicitODEx
variable = x
y = y
[../]
[./td2]
type = ODETimeDerivative
variable = y
[../]
[./ode2]
type = ImplicitODEy
variable = y
x = x
[../]
[]
[BCs]
active = 'left_u right_u left_v'
[./left_u]
type = DirichletBC
variable = u
boundary = 1
value = 1
[../]
[./right_u]
type = DirichletBC
variable = u
boundary = 3
value = 9
[../]
[./left_v]
type = DirichletBC
variable = v
boundary = 1
value = 5
[../]
[./right_v]
type = DirichletBC
variable = v
boundary = 2
value = 2
[../]
[]
[Postprocessors]
[./x]
type = ScalarVariable
variable = x
execute_on = 'initial timestep_end'
[../]
[./y]
type = ScalarVariable
variable = y
execute_on = 'initial timestep_end'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
dt = 0.01
num_steps = 1
[]
[Outputs]
show = 'x u nodal elemental'
[./out]
type = Exodus
elemental_as_nodal = true
scalar_as_nodal = true
[../]
[]
test/tests/kernels/bad_scaling_scalar_kernels/ill_conditioned_field_scalar_system.i
[Mesh]
type = GeneratedMesh
dim = 1
nx = 2
[]
[Variables]
[./u]
[../]
[v]
family = SCALAR
initial_condition = 1
[]
[]
[Kernels]
[./diff]
type = Diffusion
variable = u
[../]
[scalar]
type = ScalarLagrangeMultiplier
variable = u
lambda = v
[]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
boundary = left
value = 0
[../]
[./right]
type = DirichletBC
variable = u
boundary = right
value = 1
[../]
[]
[ScalarKernels]
[reaction]
type = ParsedODEKernel
function = '10^20 * v'
variable = v
[]
[time]
type = ODETimeDerivative
variable = v
[]
[]
[Executioner]
type = Transient
num_steps = 1
dtmin = 1
solve_type = NEWTON
petsc_options = '-pc_svd_monitor -ksp_view_pmat -snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -snes_stol'
petsc_options_value = 'svd 0'
[]
[Outputs]
exodus = true
[]
test/tests/kernels/ode/parsedode_pp_test.i
[Mesh]
type = GeneratedMesh
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 2
ny = 2
elem_type = QUAD4
[]
[Variables]
[./x]
family = SCALAR
order = FIRST
initial_condition = 0
[../]
[]
[ScalarKernels]
[./dt]
type = ODETimeDerivative
variable = x
[../]
[./ode1]
type = ParsedODEKernel
function = '-mytime'
postprocessors = mytime
variable = x
[../]
[]
[Postprocessors]
[./computed_x]
type = ScalarVariable
variable = x
execute_on = 'initial timestep_end'
[../]
[./mytime]
type = FunctionValuePostprocessor
function = t
execute_on = 'initial timestep_begin'
[../]
[./exact_x]
type = FunctionValuePostprocessor
function = '0.5*t^2'
execute_on = 'initial timestep_end'
[../]
[./l2err_x]
type = ScalarL2Error
variable = x
function = '0.5*t^2'
execute_on = 'initial timestep_end'
[../]
[]
[Executioner]
type = Transient
scheme = bdf2
dt = 0.1
num_steps = 10
solve_type = 'NEWTON'
[]
[Outputs]
file_base = ode_pp_test_out
hide = 'x mytime'
csv = true
[]
test/tests/controls/conditional_functional_enable/conditional_function_enable.i
# This tests controllability of the enable parameter of a MOOSE object via a
# conditional function.
#
# There are 2 scalar variables, {u, v}, with the ODEs:
# du/dt = 1 u(0) = 0
# v = u v(0) = -10
# A control switches the ODE 'v = u' to the following ODE when u >= 1.99:
# dv/dt = 2
#
# 5 time steps (of size dt = 1) will be taken, and the predicted values are as follows:
# t u v
# ------------------
# 0 0 -10
# 1 1 1
# 2 2 2
# 3 3 4
# 4 4 6
# 5 5 8
u_initial = 0
u_growth = 1
u_threshold = 1.99
v_initial = -10
v_growth = 2
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
[]
[Variables]
[./u]
family = SCALAR
order = FIRST
[../]
[./v]
family = SCALAR
order = FIRST
[../]
[]
[ICs]
[./u_ic]
type = ScalarConstantIC
variable = u
value = ${u_initial}
[../]
[./v_ic]
type = ScalarConstantIC
variable = v
value = ${v_initial}
[../]
[]
[ScalarKernels]
[./u_time]
type = ODETimeDerivative
variable = u
[../]
[./u_src]
type = ParsedODEKernel
variable = u
function = '-${u_growth}'
[../]
[./v_time]
type = ODETimeDerivative
variable = v
enable = false
[../]
[./v_src]
type = ParsedODEKernel
variable = v
function = '-${v_growth}'
enable = false
[../]
[./v_constraint]
type = ParsedODEKernel
variable = v
args = 'u'
function = 'v - u'
[../]
[]
[Functions]
[./conditional_function]
type = ParsedFunction
vars = 'u_sol'
vals = 'u'
value = 'u_sol >= ${u_threshold}'
[../]
[]
[Controls]
[./u_threshold]
type = ConditionalFunctionEnableControl
conditional_function = conditional_function
enable_objects = 'ScalarKernel::v_time ScalarKernel::v_src'
disable_objects = 'ScalarKernel::v_constraint'
execute_on = 'INITIAL TIMESTEP_END'
[../]
[]
[Executioner]
type = Transient
scheme = implicit-euler
dt = 1
num_steps = 5
abort_on_solve_fail = true
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
[]
[Outputs]
csv = true
[]
test/tests/time_integrators/actually_explicit_euler_verification/ee-ode.i
# Tests that ActuallyExplicitEuler works with scalar variables.
#
# The ODE and IC used are the following:
# du/dt = 2, u(0) = 0
# Thus the solution is u(t) = 2*t.
[Mesh]
type = GeneratedMesh
dim = 1
nx = 1
[]
[Variables]
[./u]
family = SCALAR
order = FIRST
initial_condition = 0
[../]
[]
[ScalarKernels]
[./time]
type = ODETimeDerivative
variable = u
[../]
[./source]
type = ParsedODEKernel
variable = u
function = -2
[../]
[]
[Executioner]
type = Transient
[./TimeIntegrator]
type = ActuallyExplicitEuler
[../]
dt = 1
num_steps = 5
[]
[Outputs]
csv = true
[]
test/tests/time_integrators/explicit_ssp_runge_kutta/explicit_ssp_runge_kutta.i
# This test solves the following IVP:
# du/dt = f(u(t), t), u(0) = 1
# f(u(t), t) = -u(t) + t^3 + 3t^2
# The exact solution is the following:
# u(t) = exp(-t) + t^3
[Mesh]
[./mesh]
type = GeneratedMeshGenerator
dim = 1
nx = 1
[../]
[]
[Variables]
[./u]
family = SCALAR
order = FIRST
initial_condition = 1
[../]
[]
[ScalarKernels]
[./time_derivative]
type = ODETimeDerivative
variable = u
[../]
[./source_part1]
type = ParsedODEKernel
variable = u
function = 'u'
[../]
[./source_part2]
type = PostprocessorSinkScalarKernel
variable = u
postprocessor = sink_pp
[../]
[]
[Functions]
[./sink_fn]
type = ParsedFunction
value = '-t^3 - 3*t^2'
[../]
[]
[Postprocessors]
[./sink_pp]
type = FunctionValuePostprocessor
function = sink_fn
execute_on = 'LINEAR NONLINEAR'
[../]
[./l2_err]
type = ScalarL2Error
variable = u
function = ${fparse exp(-0.5) + 0.5^3}
[../]
[]
[Executioner]
type = Transient
[./TimeIntegrator]
type = ExplicitSSPRungeKutta
order = 1
[../]
end_time = 0.5
dt = 0.1
[]
[Outputs]
file_base = 'first_order'
exodus = true
[./csv]
type = CSV
show = 'u'
execute_on = 'FINAL'
[../]
[]
test/tests/kernels/ode/parsedode_sys_impl_test.i
[Mesh]
type = GeneratedMesh
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 2
ny = 2
elem_type = QUAD4
[]
[Functions]
[./f_fn]
type = ParsedFunction
value = -4
[../]
[./bc_all_fn]
type = ParsedFunction
value = x*x+y*y
[../]
# ODEs
[./exact_x_fn]
type = ParsedFunction
value = (-1/3)*exp(-t)+(4/3)*exp(5*t)
[../]
[]
# NL
[Variables]
[./u]
family = LAGRANGE
order = FIRST
[../]
# ODE variables
[./x]
family = SCALAR
order = FIRST
initial_condition = 1
[../]
[./y]
family = SCALAR
order = FIRST
initial_condition = 2
[../]
[]
[Kernels]
[./td]
type = TimeDerivative
variable = u
[../]
[./diff]
type = Diffusion
variable = u
[../]
[./uff]
type = BodyForce
variable = u
function = f_fn
[../]
[]
[ScalarKernels]
[./td1]
type = ODETimeDerivative
variable = x
[../]
[./ode1]
type = ParsedODEKernel
function = '-3*x - 2*y'
variable = x
args = y
[../]
[./td2]
type = ODETimeDerivative
variable = y
[../]
[./ode2]
type = ParsedODEKernel
function = '-4*x - y'
variable = y
args = x
[../]
[]
[BCs]
[./all]
type = FunctionDirichletBC
variable = u
boundary = '0 1 2 3'
function = bc_all_fn
[../]
[]
[Postprocessors]
active = 'exact_x l2err_x x y'
[./x]
type = ScalarVariable
variable = x
execute_on = 'initial timestep_end'
[../]
[./y]
type = ScalarVariable
variable = y
execute_on = 'initial timestep_end'
[../]
[./exact_x]
type = FunctionValuePostprocessor
function = exact_x_fn
execute_on = 'initial timestep_end'
point = '0 0 0'
[../]
[./l2err_x]
type = ScalarL2Error
variable = x
function = exact_x_fn
execute_on = 'initial timestep_end'
[../]
[]
[Executioner]
type = Transient
start_time = 0
dt = 0.01
num_steps = 100
solve_type = 'PJFNK'
[]
[Outputs]
file_base = ode_sys_impl_test_out
exodus = true
[]
test/tests/time_integrators/scalar/scalar.i
[Mesh]
type = GeneratedMesh
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 1
ny = 1
elem_type = QUAD4
[]
[Variables]
[./n]
family = SCALAR
order = FIRST
initial_condition = 1
[../]
[]
[ScalarKernels]
[./dn]
type = ODETimeDerivative
variable = n
[../]
[./ode1]
type = ParsedODEKernel
function = '-n'
variable = n
# implicit = false
[../]
[]
[Executioner]
type = Transient
[./TimeIntegrator]
# type = ImplicitEuler
# type = BDF2
type = CrankNicolson
# type = ImplicitMidpoint
# type = LStableDirk2
# type = LStableDirk3
# type = LStableDirk4
# type = AStableDirk4
#
# Explicit methods
# type = ExplicitEuler
# type = ExplicitMidpoint
# type = Heun
# type = Ralston
[../]
start_time = 0
end_time = 1
dt = 0.001
dtmin = 0.001 # Don't allow timestep cutting
solve_type = 'PJFNK'
nl_max_its = 2
nl_abs_tol = 1.e-12 # This is an ODE, so nl_abs_tol makes sense.
[]
[Functions]
[./exact_solution]
type = ParsedFunction
value = exp(t)
[../]
[]
[Postprocessors]
[./error_n]
# Post processor that computes the difference between the computed
# and exact solutions. For the exact solution used here, the
# error at the final time should converge at O(dt^p), where p is
# the order of the method.
type = ScalarL2Error
variable = n
function = exact_solution
# final is not currently supported for Postprocessor execute_on...
# execute_on = 'final'
[../]
[]
[Outputs]
csv = true
[]
test/tests/outputs/variables/output_vars_hidden_shown_check.i
[Mesh]
type = GeneratedMesh
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 10
ny = 10
elem_type = QUAD9
[]
[Variables]
[./u]
order = FIRST
family = LAGRANGE
[../]
[./v]
order = SECOND
family = LAGRANGE
[../]
# ODE variables
[./x]
family = SCALAR
order = FIRST
initial_condition = 1
[../]
[./y]
family = SCALAR
order = FIRST
initial_condition = 2
[../]
[]
[AuxVariables]
[./elemental]
order = CONSTANT
family = MONOMIAL
[../]
[./elemental_restricted]
order = CONSTANT
family = MONOMIAL
[../]
[./nodal]
order = FIRST
family = LAGRANGE
[../]
[./nodal_restricted]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./td]
type = TimeDerivative
variable = u
[../]
[./diff_u]
type = Diffusion
variable = u
[../]
[./conv_u]
type = CoupledForce
variable = u
v = v
[../]
[./diff_v]
type = Diffusion
variable = v
[../]
[]
[AuxKernels]
[./elemental]
type = ConstantAux
variable = elemental
value = 1
[../]
[./elemental_restricted]
type = ConstantAux
variable = elemental_restricted
value = 1
[../]
[./nodal]
type = ConstantAux
variable = elemental
value = 2
[../]
[./nodal_restricted]
type = ConstantAux
variable = elemental_restricted
value = 2
[../]
[]
[ScalarKernels]
[./td1]
type = ODETimeDerivative
variable = x
[../]
[./ode1]
type = ImplicitODEx
variable = x
y = y
[../]
[./td2]
type = ODETimeDerivative
variable = y
[../]
[./ode2]
type = ImplicitODEy
variable = y
x = x
[../]
[]
[BCs]
active = 'left_u right_u left_v'
[./left_u]
type = DirichletBC
variable = u
boundary = 1
value = 1
[../]
[./right_u]
type = DirichletBC
variable = u
boundary = 3
value = 9
[../]
[./left_v]
type = DirichletBC
variable = v
boundary = 1
value = 5
[../]
[./right_v]
type = DirichletBC
variable = v
boundary = 2
value = 2
[../]
[]
[Postprocessors]
[./x]
type = ScalarVariable
variable = x
execute_on = timestep_end
[../]
[./y]
type = ScalarVariable
variable = y
execute_on = timestep_end
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
dt = 0.01
num_steps = 10
[]
[Outputs]
file_base = out_hidden
exodus = true
hide = 'u elemental nodal x'
show = u
[]