# MOOSE News (May 2019)

## Relationship Managers (New API and enhancements)

RelationshipManagers give developers full control of the parallel ghosting of both the geometric (elements and nodes) and algebraic (solution) information with your simulation. This allows developers to reach beyond their normal partitions to run algorithms that may need to access off-partition information without manual parallel communication. You may notice information about which RelationshipManagers are active in your simulation in the information printout. For more information on this important capability, click here.

## Pragma once

MOOSE is moving away from traditional include guards and using `#pragma once`

instead. This is slightly less error prone since you don't need to use a different CPP variable in every file and also reduces the amount of clutter in your header files. Please start using this new scheme if you contribute to MOOSE.

```
#pragma once
class SomeObject
{
};
```

## Method of Manufactured Solution (MMS)

The method of manufactured solutions is a robust means to verify that simulation tools are correct. Therefore, tools and documentation for performing this type of analysis has been added to the code base.

## AuxKernel Documentation

The documentation for the AuxKernels System has been improved to include a few examples of how the system should be utilized.

## Vector Variable Support for Auxiliary System

The `VectorAuxKernel base class was created to allow for vector auxiliary variables. For example, it is now possible to create an auxiliary variable that is populated by a parsed function. The following partial input file shows an example of populating a vector auxiliary variable using a parsed function.

```
[AuxVariables]
[vec]
family = LAGRANGE_VEC
order = FIRST
[]
[]
[Functions]
[function]
type = ParsedVectorFunction
value_x = t*x
value_y = t*y
[]
[]
[AuxKernels]
[vec]
type = VectorFunctionAux
variable = vec
function = function
execute_on = 'INITIAL TIMESTEP_END'
[../]
[]
```

(test/tests/auxkernels/vector_function_aux/vector_function_aux.i)## Improved Support for AD Objects in MOOSEDocs

The need to include the `<RESIDUAL>`

template argument for AD objects is no longer needed within the MOOSEDocs syntax calls. For example, the following command can be used to list the available parameters for the `ADDiffusion`

object.

```
!syntax parameters /Kernels/ADDiffusion
```

(framework/doc/content/source/kernels/ADDiffusion.md)## What is a Requirement?

If you are using MOOSEDocs for tracking requirements within a test specification, the following pages provide detailed information about what is expected.

## AD Time Kernels Generalized

There are now three ADKernel base objects, as listed below, that may be used for time derivative portions of partial differential equations. More information about Kernel object in general is provided in the Kernels System documentation.

Object | Purpose |
---|---|

ADTimeKernelValue | This object should be used for time derivative terms that require only the test function. |

ADTimeKernelGrad | This object should be used for time derivative terms that require only the gradient of the test function. |

ADTimeKernel | This object should be used for time derivative terms that require both the test function and the gradient of the test function. |

## GrainTracker/FeatureFloodCount enhancements

The FeatureFloodCount object can now detect "percolation" among any feature in your domain. This is done by supplying a list of primary and secondary boundaries between which a percolation track would be of interest. Additionally, the FeatureFloodCount object can now calculate percent of boundary coverage, where boundary may be an external boundary or an internal boundary defined by a sideset.

## Miscellaneous enhancements and bug fixes

`Executioner/start_time`

now works correctly when performing a Restart simulation.Reformatting of

`time`

and`dt`

printouts. "Dt" is no longer printed on the initial condition, which was misleading.Fix bug where second level Multiapps where not properly restored when doing a Picard iteration.