Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The RC User Object and other stuff for monotonicity #18563

Merged
merged 33 commits into from
Feb 11, 2022

Conversation

lindsayad
Copy link
Member

@lindsayad lindsayad commented Aug 9, 2021

Key points:

  • Shows monotone pressure field in a discontinuous body force test due to interpolation (essentially smoothing) of body forces. More reconstructions may be necessary (current number is 1) for a given problem
  • Shows monotone pressure field at porosity discontinuities given sufficient porosity reconstructions

Key additions:

  • Global Moose::FV::greenGaussGradient function which represents an abstraction away from variables and towards functors. We can now compute a gradient for any functor field
  • Ability to perform successive interpolations and reconstructions, e.g. interpolate a face quantity back to cell centers, in a general way using a global Moose::FV::interpolateReconstruct function
  • In conjunction with interpolation-reconstruction, I've created a CellCenteredMapFunctor for holding the resulting interpolated-reconstructed field and in conjunction with that, I've created a VectorComponentFunctor which is automatically invoked when someone calls greenGaussGradient with a vector functor. This was done to allow easy reconstruction of vector fields
  • introduces an oscillation correction kernel created by Mauricio that corrects pressure interpolation in the presence of variations in body forces

Other items

  • Computes RC velocity directly in user object
  • Adds MMS tests for multiple interpolations-reconstructions of the porosity field single interpolation-reconstruction of body forces in accordance with Moukalled (as well as a follow-on interpolation necessary for the Rhie-Chow velocity)
  • Applies necessary ghost layers from INSFVElementalKernel due to body force interpolations and reconstruction
  • Closes Remove smooth_porosity related booleans from PINSFV #19425 Consistent FV variable evaluations on surfaces between objects #16585
  • Removes PINSFVMomentumAdvectionPorosityGradient
  • Adds additional porosity factor to PINSFVMomentumDiffusion
  • MMS tests the oscillation correction kernel

To-do

  • Only compute a "residual" once per face for non-advection residual flux objects (this will mean overriding computeResidual and computeJacobian as empty {})

Maybe to-do

  • iterate over exactly as many elements/faces as we need for body forces/porosity in our interpolator objects. This means looping over exactly local + 'x' layers. Maybe can leverage existing code from libMesh DefaultCoupling and split out a utility

lindsayad and others added 21 commits February 10, 2022 17:49
Simultaneously convert INSFVScalarFieldAdvection to transport C as
opposed to rho*c.
I guess we don't test skew correction NS on CIVET otherwise I feel like
we would have caught this sooner.
This enables coverage of a couple NS tests. NS is the module that is
most sensitive to upticks in container size because we cache AD data,
which is a memory cost. Other AD users should not experience any CPU or
memory penalties because of this uptick
This enables backwards and forward compatibility with a libmesh update
I'm just not sure that they're necessary for stability and they are not
physical. I am going to keep around the ability to interpolate and
reconstruct porosity because in the three region test from Sebastian
which varies porosity, putting 10 smoothing layers on the porosity
allows you to have 1000 times less diffusivity in the
`PINSFVMomentumFriction` kernel
Co-authored-by: Guillaume Giudicelli <guillaume.giudicelli@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Remove smooth_porosity related booleans from PINSFV
6 participants