Skip to content
Permalink
Browse files

Merge pull request #13506 from aeslaughter/mooseletter-11446

June 2019 News
  • Loading branch information...
aeslaughter committed Jun 6, 2019
2 parents f9e8f16 + c974359 commit cb5373f3d41b44a3756d83f4774ea4d6907fa76d
@@ -1,5 +1,126 @@
# MOOSE News (June 2019)

## Revamped Mortar FEM

`MortarConstraint` has been revamped. Mortar now relies on an `AutomaticMortarGeneration` object
that, as its name suggests, automatically generates a mortar segment mesh for performing
integrations. For static mesh problems the mortar segment mesh generation is done once upon initial
setup. For dynamic problems with a displaced mesh, mortar mesh generation is done every residual
evaluation. We have verified that the new mortar system satisfies *a prior* error estimates, e.g.
in the L2 norm we observe order 3 and order 2.5 convergence for the primal and lagrange multiplier
variables respectively for a P2P1 discretization, as well as 2 and 1.5 for P1P1 and P1P0. Plots of
these results as well as some technical discussion can be found on the mortar
[github issue](https://github.com/idaholab/moose/issues/13080). Additionally, an excellent overview
of the mortar implementation is given in
[this technical report](https://www.osti.gov/biblio/1468630/). Examples of using the new mortar
constraint can be found in the `$MOOSE_DIR/test/tests/mortar` directory. These examples demonstrate
use of mortar with conforming and non-conforming meshes, as well as for periodic boundary
conditions. Physics examples include solution continuity, thermal, and mechanical contact. In the
latter case a finite difference Jacobian is used; however, a
[follow-on PR](https://github.com/idaholab/moose/pull/13508) will demonstrate use of automatic
differentiation and PJFNK for solving frictionless and frictional contact with the new mortar
constraint system.

## PorousFlow: Reduction of Numerical Diffusion

A new type of numerical stabilization has been added to PorousFlow to complement the existing "full upwind" and "no stabilization" choices. The aim is to reduce numerical diffusion. The code is based on the theoretical work of Kuzmin and Turek. Users are strongly encouraged to experiment with this new feature so we can collectively learn the strengths and weaknesses in real simulations. Only [minor changes to input files](porous_flow/kt.md) are needed to activate the new stabilization. The numerical stabilization [lead page](porous_flow/stabilization.md) lists pros and cons of various stabilization schemes and provides links to pages that explain and quantify numerical diffusion.

## Stochastic Tools "Batch" Mode

The [Stochastic Tools module](stochastic_tools/index.md) now includes the ability to run
full and transient solves using "batch" mode, which is useful when a MultiApp contains
a large number of sub-applications. In batch mode the MultiApp creates a single sub-application
and re-uses it to perform the multiple simulations, allowing for reduced memory usage when
compared to the default behavior. For more information please refer to [batch_mode.md].

## RankMap and HardwareIDAux

A new capaility has been added to MOOSE that enables the ability to query information about the
physical node each MPI process is running on. In particular, it allows the user to find which
MPI processes are located on the same physical node in the cluster. This can be useful for
partitioning and advanced transfer capabilities.

In addition, a new [AuxKernel.md] has been added: [HardwareIDAux.md]. This `AuxKernel` allows
you to visualize the placement of the MPI processes on the physical nodes in the cluster. This is
extremely useful for understanding the outcome of advanced mesh partitioners such as the [PetscExternalPartitioner.md].
For more information see the [HardwareIDAux documentation](HardwareIDAux.md)

## CombinerGenerator

A new [MeshGenerator.md] called the [CombinerGenerator.md] which allows the output of multiple
`MeshGenerator`s to be combined into a single mesh. This is somewhat similar to [StitchedMeshGenerator.md]
except that it makes no attempt at all to actually stitch the meshes together. Instead, it merely
copies one mesh into another.

## FancyExtruder

Another new [MeshGenerator.md] is the [FancyExtruderGenerator.md]. This new `MeshGenerator` is similar to
the [MeshExtruderGenerator.md], in that it extrudes a 2D mesh into a 3D mesh,
except it provides many more options. In particular, the `height` of
multiple elevations can be specified and subdomain IDs within each elevation can be swapped. This object
has been optimized to handle extremely large meshes.

## PlaneDeletionGenerator

Yet another new [MeshGenerator.md] is the [PlaneDeletionGenerator.md]. This `MeshGenerator` takes
a plane as input and will delete all of the elements on one side of the plane from your mesh. This is
extremely handy for taking a geometry and slicing it down into a region of interest or a region which
represents a symmetric portion of the whole.

## PETSc Upgrade

PETSc was upgraded to 3.10.5; the new version provides better performance.
We encourage MOOSE users to use this new version. To use this version of PETSc, follow
instructions on [moose website](getting_started/index.md) to update the environment package.

## Conservative Transfer

Conservative transfers have been added to MOOSE to support transfer of a physics quantity
in a conservative way. Conservative transfers currently work with `MultiAppMeshFunctionTransfer`,
`MultiAppInterpolationTransfer`, `MultiAppNearestNodeTransfer` and `MultiAppUserObjectTransfer`.

## Vector Support in InterfaceKernel

The `InterfaceKernel` system has been updated to add compatibility with vector finite
elements. Usage of `InterfaceKernel` for standard finite element variables remains the same as
before, but `VectorInterfaceKernel` is now available for vector finite element variables. Examples
of usage for `VectorInterfaceKernel` with `NEDELEC_ONE` variables in 2D and 3D can be found in the
following two input files:

- [test/tests/interfacekernels/2d_interface/vector_2d.i]
- [test/tests/interfacekernels/3d_interface/vector_3d.i]

## Simplified Module Makefile

MOOSE now contains 18 physics modules, several of which depend on each other. The "make" system
has been simplified at the module level so dependencies no longer need to appear in the Makefile.
Dependencies are listed in a single place (e.g. modules.mk).

The relevant section for every module has been abbreviated. Here is the relevant section for the
phase_field Makefile:

```
# Module
MODULE_NAME := phase_field
include $(MODULE_DIR)/modules.mk
```

## Improved Dynamic Loading Error Messages

MOOSE has long had the capability to load objects from dynamic libraries. The problem is that
when a failure occurs the error message states that the file cannot be opened. This is rarely
the case, so the error is misleading. An improved error message now differentiates between
a missing or unreadable file and one that exists but fails to load for other reasons (such
as missing expected functions or lack of dynamic loading support).

## Parallel Testing in the Physics Modules

Parallel testing has been turned on by default for most of the physics modules. If you are
building tests for the physics modules, make sure that your tests produce the same result
when running serially or in parallel.

## Improved Simulation Information Output (Console)

MOOSE has been displaying information about your simulation's active "RelationshipManagers"
on the console for a few months now. This information has recently been augmented to display
when pure libMesh "GhostingFunctors" (not wrapped by a MOOSE RelationshipManager) are active.
@@ -0,0 +1 @@
# MOOSE Newsletter (July 2019)
@@ -6,6 +6,7 @@ monthly to the [MOOSE users](contact_us.md) as well as provided below.

## 2019

- [June, 2019](2019_06.md)
- [May, 2019](2019_05.md)
- [April, 2019](2019_04.md)
- [March, 2019](2019_03.md)

0 comments on commit cb5373f

Please sign in to comment.
You can’t perform that action at this time.