-
Notifications
You must be signed in to change notification settings - Fork 186
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
Distinguish between "masking" and "enforcing impenetrability" in immersed boundary routines #2249
Comments
You are correct that we don't need to mask scalars (also the free surface should not need masking) |
Maybe if we want to be defensive we should implement both
For the implementations we have now, these are identical (thus we use |
I agree, also we have to remember to remove the masking of the tracers as that is not required... |
Maybe a silly question, but don't we want to allow for the masking of tracers? I'm thinking about #2251, which is trying to mask a tracer. |
We should have a way to mask the tracers for sure. On the other hand, in our current algorithm we do not "use" immersed "halo" nodes because we impose a no-flux condition by just setting to zero the fluxes on the immersed boundaries - opposed to actual boundaries where the "no-flux" condition is imposed by mirroring the values outside the boundary and explicitly calculating a flux. For this reason, we don't need to mask the tracer within the time integration. So, it is not necessary, but It is definitely a function we want to allow... |
Right. The masking is "only" for things like visualization / inspection of field values. We have implemented (or have tried to implement) a fully featured system for reducing fields in the presence of immersed boundaries; furthermore the tendency functions are "boundary aware", so the values of the fields inside the immersed boundaries should be irrelevant. They could be NaN (maybe...). So we don't need the mask for calculations. In fact I think we may want to use On #2251 it seems we are basically using the mask to debug |
Thanks for the explainations. I like the idea of defaulting the masked regions to |
scalar_mask
uses solid_interface
Is this correct?
Oceananigans.jl/src/ImmersedBoundaries/mask_immersed_field.jl
Line 53 in adffd0c
I'd expect it to use
solid_node
for masking scalars. Right?For masking velocity fields for the purpose of enforcing impenetrable boundary conditions, it makes sense to me that we'd use
solid_interface
. But we should have a separate function for that.In reality, we only need masking for the velocity field for our algorithm to work correctly. However, being able to mask scalars is sometimes useful for development purposes.
@simone-silvestri can you shed some light?
The text was updated successfully, but these errors were encountered: