idaholab/moose

Extend `unique_node_execute` for boundaries

Opened this issue · 0 comments

Bug Description

unique_node_execute does not do anything for boundaries. MWE below shows that for a postprocessor, a single boundary is needed to be created to get the correct Nodal Sum. This is because there is double counting of nodes that exist in two boundaries.

Same problem exists for NodalValueSampler

Steps to Reproduce

[Mesh]
  [gmg]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 1
    ny = 1
  []
  [sideset]
    type = SideSetsAroundSubdomainGenerator
    input = gmg
    block = 0
    new_boundary = all
  []
[]

[AuxVariables]
  [ones]
    initial_condition = 1
  []
[]

[Problem]
  solve = false
[]

[Executioner]
  type = Steady
  solve_type = NEWTON
[]

[Postprocessors]
  [sep_bc]
    type = NodalSum
    variable = ones
    boundary = 'left right top bottom'
    unique_node_execute = true
  []
  [all_bc]
    type = NodalSum
    variable = ones
    boundary = 'all'
    unique_node_execute = true
  []
[]
Postprocessor Values:
+----------------+----------------+----------------+
| time           | all_bc         | sep_bc         |
+----------------+----------------+----------------+
|   0.000000e+00 |   0.000000e+00 |   0.000000e+00 |
|   1.000000e+00 |   4.000000e+00 |   8.000000e+00 |
+----------------+----------------+----------------+

Impact

Wrong answers and wasted time debugging.

[Optional] Diagnostics

No response