# Variables System

## Description

The `Variables`

block within an input file is utilized to define the unknowns within a system of partial differential equations. These unknowns are often referred to as nonlinear variables within documentation. The nonlinear variables defined within this block are used by Kernel objects to define the equations for a simulation.

TODO: mention FV variables and how they are similar+different

## Example

The following input file snippet demonstrates the creation of a single nonlinear variable that is used by two Kernel objects, refer to Example 2 for more details.

```
[Variables]
[convected]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = convected
[]
[conv]
type = ExampleConvection
variable = convected
velocity = '0.0 0.0 1.0'
[]
[]
```

(examples/ex02_kernel/ex02.i)## Input Parameters

- active__all__ If specified only the blocks named will be visited and made active
Default:__all__

C++ Type:std::vector

Description:If specified only the blocks named will be visited and made active

- familyLAGRANGESpecifies the family of FE shape functions to use for this variable
Default:LAGRANGE

C++ Type:MooseEnum

Description:Specifies the family of FE shape functions to use for this variable

- inactiveIf specified blocks matching these identifiers will be skipped.
C++ Type:std::vector

Description:If specified blocks matching these identifiers will be skipped.

- isObjectActionTrueIndicates that this is a MooseObjectAction.
Default:True

C++ Type:bool

Description:Indicates that this is a MooseObjectAction.

- orderFIRSTSpecifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)
Default:FIRST

C++ Type:MooseEnum

Description:Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)

- scalingSpecifies a scaling factor to apply to this variable
C++ Type:std::vector

Description:Specifies a scaling factor to apply to this variable

## Available Objects

- Moose App
- ArrayMooseVariableUsed for grouping standard field variables with the same finite element family and order
- MooseVariableRepresents standard field variables, e.g. Lagrange, Hermite, or non-constant Monomials
- MooseVariableBaseBase class for Moose variables. This should never be the terminal object type
- MooseVariableConstMonomialSpecialization for constant monomials that avoids unnecessary loops
- MooseVariableFVRealBase class for Moose variables. This should never be the terminal object type
- MooseVariableScalarMoose wrapper class around scalar variables
- VectorMooseVariableRepresents vector field variables, e.g. Vector Lagrange or Nedelec

## Available Subsystems

## Available Actions

- Moose App
- AddVariableAction
- CopyNodalVarsAction