<commit_before># MOOSE Newsletter (April 2020)

## SoftwareX Paper Published

The new MOOSE paper was published in SoftwareX: [MOOSE: Enabling massively parallel multiphysics simulation](https://doi.org/10.1016/j.softx.2020.100430).

## Update `validParams`

The framework and all modules have been updated to use a static function for `validParams`. Please
update your applications to use the new static function and see
[#14135](https://github.com/idaholab/moose/issues/14135) see the changes in MOOSE. To update
application perform the following steps.

1. In the header (.h) file, +remove the class forward declaration and declaration of the template
   specialization+ of `validParams`.

   ```C++
   // Forward Declarations
   class MyCustomObject;

   template <>
   InputParameters validParams<MyCustomObject>();
   ```

2. In the header (.h) file, +add a static member function for `validParams` in the class definition+.

   ```
   class MyCustomObject : public AuxKernel
   {
   public:
     static InputParameters validParams();
   ```

3. In the source (.C) file, the definition of the template specialization,

   ```C++
   InputParameters
   validParams<MyCustomObject>()
   {
     InputParameters params = validParams<AuxKernel>();
     return params;
   }
   ```

   should be updated to define the static member function as follows. Be sure to update the
   call to the parent class `validParams` function to use the static version as well.

   ```C++
   InputParameters
   MyCustomObject::validParams()
   {
     InputParameters params = AuxKernel::validParams();
     return params;
   }
   ```

## ImageFunction Documentation

The [ImageFunction.md] documentation was moved from the old wiki!

## Stochastic Tools Module

- Added a [LatinHypercubeSampler.md]
- Generalized [SobolSampler.md] to operate with arbitrary sampling schemes
- [PolynomialChaos.md] surrogate modeling now includes vector postprocessors for computing [statistical moments](PolynomialChaosStatistics.md), [local sensitivity](PolynomialChaosLocalSensitivity.md), and [global sensitivity](PolynomialChaosSobolStatistics.md)
- [QuadratureSampler.md] now includes sparse grid techniques including Gauss-Smolyak and Clenshaw-Curtis quadrature grids.

## New "executable-only" applications on HPC clusters

A new way to gain access to internal INL codes is being rolled out in April. Internal and external licensed users will be able to login to INL computing resources and access MOOSE-based application binaries built natively for each cluster. This will make the build process unnecessary for many users and analysts who just wish to run our codes. More information on this capability will be made available shortly.

## Bug Fixes

- The modules Makefile had a missing dependency which occasionally caused corruption in the combined library file. This has been resolved.
- Users using the new experimental Conda environment may have experienced some tests being skipped due to the odd compiler names Conda uses. This issue has been resolved.<commit_msg>Fande's contribution<commit_after># MOOSE Newsletter (April 2020)

## SoftwareX Paper Published

The new MOOSE paper was published in SoftwareX: [MOOSE: Enabling massively parallel multiphysics simulation](https://doi.org/10.1016/j.softx.2020.100430).

## Update `validParams`

The framework and all modules have been updated to use a static function for `validParams`. Please
update your applications to use the new static function and see
[#14135](https://github.com/idaholab/moose/issues/14135) see the changes in MOOSE. To update
application perform the following steps.

1. In the header (.h) file, +remove the class forward declaration and declaration of the template
   specialization+ of `validParams`.

   ```C++
   // Forward Declarations
   class MyCustomObject;

   template <>
   InputParameters validParams<MyCustomObject>();
   ```

2. In the header (.h) file, +add a static member function for `validParams` in the class definition+.

   ```
   class MyCustomObject : public AuxKernel
   {
   public:
     static InputParameters validParams();
   ```

3. In the source (.C) file, the definition of the template specialization,

   ```C++
   InputParameters
   validParams<MyCustomObject>()
   {
     InputParameters params = validParams<AuxKernel>();
     return params;
   }
   ```

   should be updated to define the static member function as follows. Be sure to update the
   call to the parent class `validParams` function to use the static version as well.

   ```C++
   InputParameters
   MyCustomObject::validParams()
   {
     InputParameters params = AuxKernel::validParams();
     return params;
   }
   ```

## ImageFunction Documentation

The [ImageFunction.md] documentation was moved from the old wiki!

## Stochastic Tools Module

- Added a [LatinHypercubeSampler.md]
- Generalized [SobolSampler.md] to operate with arbitrary sampling schemes
- [PolynomialChaos.md] surrogate modeling now includes vector postprocessors for computing [statistical moments](PolynomialChaosStatistics.md), [local sensitivity](PolynomialChaosLocalSensitivity.md), and [global sensitivity](PolynomialChaosSobolStatistics.md)
- [QuadratureSampler.md] now includes sparse grid techniques including Gauss-Smolyak and Clenshaw-Curtis quadrature grids.

## New "executable-only" applications on HPC clusters

A new way to gain access to internal INL codes is being rolled out in April. Internal and external licensed users will be able to login to INL computing resources and access MOOSE-based application binaries built natively for each cluster. This will make the build process unnecessary for many users and analysts who just wish to run our codes. More information on this capability will be made available shortly.

## Bug Fixes

- The modules Makefile had a missing dependency which occasionally caused corruption in the combined library file. This has been resolved.
- Users using the new experimental Conda environment may have experienced some tests being skipped due to the odd compiler names Conda uses. This issue has been resolved.

## Real distributed mesh generator

[A distributed mesh generator](DistributedRectilinearMeshGenerator.md) was developed. The generator works by
first creating a distributed graph in parallel to represent the element connectivities of the mesh we are
going to create. And then it partitions the dual graph using the [petsc partitioner](PetscExternalPartitioner.md)
into the desired number of equally-sized subgraphs. According to the graph partition, the underlying mesh elements
are assigned to the corresponding MPI ranks, where each MPI rank builds only the elements that need to be on
that MPI rank. Finally, the ghosted elements are added to the right places using parallel pull and push.
{'fraction_non_alphanumeric': 0.06539027982326952, 'fraction_numerical': 0.009720176730486009, 'mean_word_length': 4.512175324675325, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 11, 'https://': 4, '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': '7474853', 'n_tokens_mistral': 1797, 'n_tokens_neox': 1673, 'n_words': 801}