jsitaraman / tioga

Tioga is a library for overset grid assembly on parallel distributed systems
GNU Lesser General Public License v3.0
64 stars 36 forks source link

How to get multiple layers of fringe cells? #45

Closed mennodeij closed 3 years ago

mennodeij commented 3 years ago

Again I refer to the branch https://github.com/mennodeij/tioga/tree/grid2d_driver (driver/grid2d.f90:200)

I would like to get two layers of fringe cells on the foreground grid, but calling tioga_setnfringe(2) or tioga_setnfringe(3) does not seem to work (is the value given to this function the number of cells or the number of nodes?).

How can I get two layers of fringe cells?

Possibly related: what does the parameter mexclude do?

jsitaraman commented 3 years ago

nfringe is currently active only for hole-painting, i.e. determining how layers around the hole-points you want to mark mandatory receptors. If there are no hole points then tioga_setnfringe(..) does not make a difference.

I think at some point there was coding in there to paint more outer layers as well, but it was removed since nodal codes needed only 2 layers of nodes and this is guaranteed. If you want to increase the number of outer fringes, you can simply add more indices to the obcnode list corresponding to the second layer of nodes for the foreground grid.

I could also quickly implement painting from the outer layers inwards to create larger fringe, would that be better ?

Jay

On Fri, Oct 23, 2020 at 11:21 AM Shreyas Ananthan notifications@github.com wrote:

Assigned #45 https://github.com/jsitaraman/tioga/issues/45 to @jsitaraman https://github.com/jsitaraman.

— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub https://github.com/jsitaraman/tioga/issues/45#event-3915162918, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACH3YMHFDJPKYEKDO7ANJMLSMHCTJANCNFSM4S4V3QRQ .

jsitaraman commented 3 years ago

Forgot, mexclude is the number of layers of cells to exclude from being donor cells for the foreground mesh. This will help you increase or decrease overlap , if desired. By default of three layers of cells will be excluded.

On Fri, Oct 23, 2020 at 3:08 PM jsitaraman@gmail.com wrote:

nfringe is currently active only for hole-painting, i.e. determining how layers around the hole-points you want to mark mandatory receptors. If there are no hole points then tioga_setnfringe(..) does not make a difference.

I think at some point there was coding in there to paint more outer layers as well, but it was removed since nodal codes needed only 2 layers of nodes and this is guaranteed. If you want to increase the number of outer fringes, you can simply add more indices to the obcnode list corresponding to the second layer of nodes for the foreground grid.

I could also quickly implement painting from the outer layers inwards to create larger fringe, would that be better ?

Jay

On Fri, Oct 23, 2020 at 11:21 AM Shreyas Ananthan < notifications@github.com> wrote:

Assigned #45 https://github.com/jsitaraman/tioga/issues/45 to @jsitaraman https://github.com/jsitaraman.

— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub https://github.com/jsitaraman/tioga/issues/45#event-3915162918, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACH3YMHFDJPKYEKDO7ANJMLSMHCTJANCNFSM4S4V3QRQ .

mennodeij commented 3 years ago

Thanks for the explanation on mexclude - I can see the difference now that I know where to look 😉

As for the nfringe value > 1; I'm working with a cell-centred code, and need two layers of fringe cells.

I could also quickly implement painting from the outer layers inwards to create larger fringe, would that be better ?

That would be very helpful, yes! 🙂

sayerhs commented 3 years ago

@mennodeij One workaround you can use is to set a very high cell/node resolution for those two layers of cells near the overset boundary that you want to treat as fringes.

mennodeij commented 3 years ago

Ok, I need to try that. Also adding an additional layer of fringe cells can be done in the solver code by tagging cells that have at least one fringe cell as neighbor, or by tagging any cell as fringe if it has at least one fringe vertex.