moose icon indicating copy to clipboard operation
moose copied to clipboard

Add a test matrix for coupleable interface / mooseVariableData underlying values provided

Open GiudGiud opened this issue 1 year ago • 0 comments

Motivation

This interface has to deal with a combinatorial problem but its design relies on using references to a coupled stored attributes in the variableData class. These attributes can be lagged if not properly recomputed on the various reinit called in SystemBase. For example, a nodal aux-kernel can retrieve elemental values by accident if the quantity is not computed in computeNodalValues

Why is it combinatorial?

  • 5 locations to reinit on (elem, neighbor, node, face, lowerD)
  • 3 variable types (FE, FV, linear FV)
  • 3 data sizes (single valued, 3-valued vector, arbitrary size array)
  • 2 AD status (AD or not)
  • 2 data types (dof and u values)
  • 3 states (current, old, older)
  • 5 quantity types (value, gradient, div, curl, second space derivative)
  • 3 time derivative types (current, dot, dotdot)

so potentially up to 8,100 routines in the data class. This is strongly reduced by

  • the Coupleable interface centralizes/down-selects this a lot and needs a lot less routines, for example coupledValue works for all 4 locations, genericCoupledValue can also handle the AD status
  • templating on the data size
  • the variable dispatches to several mooseVariableData members: one for the elem, one for the neighbor and one for the lower D, so this removes the "locations" dimension

Design

Organized and systematic test suite covering all independent cases It would be worth using a unit test for this as a thousand regression test, even using CSVs, is undesirable

Impact

Catching any potential bug with the Coupleable API with near 100% coverage Giving us great confidence in its results and establishing a pathway for expansion

GiudGiud avatar Oct 16 '24 16:10 GiudGiud