<commit_before># MOOSE Newsletter (July 2019)

## MOOSE Workshop

The MOOSE workshop slides have been updated: [MOOSE Workshop](https://mooseframework.org/workshop).

## Array variable

We added in MOOSE a new capability, namely [array variable](ArrayMooseVariable.md).
A set of new objects making use of it including array kernels, boundary conditions, etc. was also added.
An array variable is define as a set of standard field variables with the same finite element family and order.
Each standard variable of an array variable is referred to as a component of the array variable.
An array variable can be added as

!listing tests/kernels/array_kernels/array_diffusion_test.i block=Variables

by specifying the number of components with parmaeter *component*.
The default value of the parameter is one, meaning that the variable is either a standard variable or a vector variable depending on the family.

An array kernel is a MOOSE kernel operating on an array variable and assembles the residuals and Jacobians for all the components of the array variable.
A sample array kernel can be found at [ArrayDiffusion.md].
Similarly as array kernel, we have array initial conditions, array boundary conditions, array DG kernels, array interface kernels, array constraints, etc.
A complete input file with an array variable can be found [array_diffusion_test.i].
Array variables can be coupled into standard kernels and vice versa as showed in [array_diffusion_reaction_coupling.i] and [array_diffusion_reaction_other_coupling.i]<commit_msg>Add automatic scaling blurb<commit_after># MOOSE Newsletter (July 2019)

## MOOSE Workshop

The MOOSE workshop slides have been updated: [MOOSE Workshop](https://mooseframework.org/workshop).

## Automatic Scaling

We have added the ability to automatically scale variable blocks in the
preconditioning matrix in order to improve the convergence of linear
solves. If the user sets `automatic_scaling=true` in their `Executioner` block,
then MOOSE will run an initial Jacobian calculation using just on-diagonal
`computeQpJacobian` statements from `Kernel` objects. MOOSE then inspects the
resulting matrix and then scales each
variable's residual and Jacobian entries in subsequent calculations by the
reciprocal of the largest magnitude diagonal element corresponding to that
variable. Consequently, the largest diagonal entry for each variable should be
of order unity. The user can also elect to do scaling calculations at every
time-step by setting `compute_scaling_once=false` in the `Executioner` block (by
default scaling factors will only be calculated at the initial time-step). This
can be useful in a transient simulation where the physics may change
substantially over time.

## Array variable

We added in MOOSE a new capability, namely [array variable](ArrayMooseVariable.md).
A set of new objects making use of it including array kernels, boundary conditions, etc. was also added.
An array variable is define as a set of standard field variables with the same finite element family and order.
Each standard variable of an array variable is referred to as a component of the array variable.
An array variable can be added as

!listing tests/kernels/array_kernels/array_diffusion_test.i block=Variables

by specifying the number of components with parmaeter *component*.
The default value of the parameter is one, meaning that the variable is either a standard variable or a vector variable depending on the family.

An array kernel is a MOOSE kernel operating on an array variable and assembles the residuals and Jacobians for all the components of the array variable.
A sample array kernel can be found at [ArrayDiffusion.md].
Similarly as array kernel, we have array initial conditions, array boundary conditions, array DG kernels, array interface kernels, array constraints, etc.
A complete input file with an array variable can be found [array_diffusion_test.i].
Array variables can be coupled into standard kernels and vice versa as showed in [array_diffusion_reaction_coupling.i] and [array_diffusion_reaction_other_coupling.i]
{'fraction_non_alphanumeric': 0.0401468788249694, 'fraction_numerical': 0.0019583843329253367, 'mean_word_length': 5.315301391035549, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1202205', 'n_tokens_mistral': 1017, 'n_tokens_neox': 950, 'n_words': 567}