|
| 1 | +Overset Tips |
| 2 | +============ |
| 3 | +-------------------------------------------------------------------------------- |
| 4 | +General |
| 5 | +-------------------------------------------------------------------------------- |
| 6 | + - all meshes should have same off-wall spacing |
| 7 | + - intersecting meshes must have mating surfaces (no actual intersections) |
| 8 | + - once you have a valid hole-cutting, decrease the 'nearwalldist' to the |
| 9 | + minimum possible value |
| 10 | + - each compute cell must have at least two donor cells in each orthogonal |
| 11 | + direction and one cell in each diagonal direction otherwise, it will be |
| 12 | + flagged as an orphan (see ASCII art below) |
| 13 | + |
| 14 | + |---|---|---|---|---| The compute cell in the center would |
| 15 | + | B | B | D | B | B | not be flagged as an orphan as long |
| 16 | + |---|---|---|---|---| as it maintains the stencil of donor |
| 17 | + | B | D | D | D | B | cells (marked with D) in 3D. |
| 18 | + |---|---|---|---|---| |
| 19 | + | D | D | C | D | D | Key: |
| 20 | + |---|---|---|---|---| D (donor) - compute or interpolate |
| 21 | + | B | D | D | D | B | B (blanked) - blanked, flooded, |
| 22 | + |---|---|---|---|---| flood seed or explicitly blanked |
| 23 | + | B | B | D | B | B | |
| 24 | + |---|---|---|---|---| |
| 25 | +-------------------------------------------------------------------------------- |
| 26 | +Collar meshes |
| 27 | +-------------------------------------------------------------------------------- |
| 28 | + - must be much finer mesh in comparison to overlapping meshes |
| 29 | + |
| 30 | +-------------------------------------------------------------------------------- |
| 31 | +How Implicit Hole Cutting Works |
| 32 | +-------------------------------------------------------------------------------- |
| 33 | +1) Determine Overlap of N Blocks |
| 34 | + Create an N x N matrix that tells, for a given block, which other blocks |
| 35 | + overlap it. |
| 36 | + |
| 37 | +*) Designate Flood Seeds |
| 38 | + Any cell farther than 'nearwalldist' from a wall in its own block that |
| 39 | + intersects a wall on another block will be flagged as a flood seed. |
| 40 | + |
| 41 | +m) Flooding |
| 42 | + In a given block, any compute cells that interface with a flood seed or a |
| 43 | + flooded cell are converted to flooded cells. The flood is only contained |
| 44 | + by interpolate cells. |
| 45 | + |
| 46 | +n) Fringe Reduction |
| 47 | + After the iterative portion of the algorithm is over, excess fringe cells |
| 48 | + are converted to blanked cells if they do not influence any compute cells. |
| 49 | + |
| 50 | +iBlank Values |
| 51 | + 1 : Compute |
| 52 | + 0 : Blanked |
| 53 | +-1 : Fringe (interpolate) |
| 54 | +-2 : Flooded |
| 55 | +-3 : Flood seed |
| 56 | +-4 : Explicitly blanked (cutCallBack) |
| 57 | + |
| 58 | +-------------------------------------------------------------------------------- |
| 59 | +Adjusting Implicit Hole Cutting Process |
| 60 | +-------------------------------------------------------------------------------- |
| 61 | +There are two related flags in pyADflow to help with this: |
| 62 | + |
| 63 | + 'usezippermesh': False (default=True) |
| 64 | + Sometimes if your mesh is flooding out, the zipper mesh will fail and |
| 65 | + the mesh will not be written to file. This is basically impossible to |
| 66 | + troubleshoot. This can be avoided by setting 'usezippermesh' to False. |
| 67 | + |
| 68 | + 'nrefine': 1 (default=10) |
| 69 | + You can choose how many cycles to run the hole cutting algorithm. In |
| 70 | + flood-out cases, you may want to stop after 1 cycle to see where a leak |
| 71 | + is occurring. |
| 72 | + |
| 73 | +Within each hole cutting cycle, there is a flooding procedure which generally |
| 74 | +takes at least two iterations. If the mesh is flooding out, you can go into the |
| 75 | +Fortran code to limit the number of iterations in this cycle so that you can |
| 76 | +tell where the leak starts. |
| 77 | + |
| 78 | + > Open adflow/src/overset/floodInteriorCells.F90 |
| 79 | + |
| 80 | + > Insert an additional if statement in the code after line 231. |
| 81 | + |
| 82 | + 231 loopIter = loopIter + 1 |
| 83 | + 232 |
| 84 | + 233 ! Choose number of flood cycles |
| 85 | + 234 if (loopIter == 2) then |
| 86 | + 235 exit parallelSyncLoop |
| 87 | + 236 end if |
| 88 | + 237 |
| 89 | + 238 end do parallelSyncLoop |
| 90 | + |
| 91 | + > Using 'loopIter == 2' will stop the cycle after one Flood Iteration. |
| 92 | + |
| 93 | + > Don't forget to recompile the code. (make in hg/adflow) |
| 94 | + |
| 95 | +-------------------------------------------------------------------------------- |
| 96 | +Viewing iBlanks in Tecplot |
| 97 | +-------------------------------------------------------------------------------- |
| 98 | +1. One Tecplot zone per CGNS/zone solution |
| 99 | +2. Check "Load Cell-centered Directly" (default) |
| 100 | +3. Change Surfaces to "Exposed cell faces" |
| 101 | +4. Change Contour Type to "Primary value flood" |
| 102 | +5. Contour Levels |
| 103 | + - Minimum = -3 |
| 104 | + - Maximum = 0 |
| 105 | + - N levels = 4 |
| 106 | +6. Blanking |
| 107 | + |
| 108 | +-------------------------------------------------------------------------------- |
| 109 | +Generating grid families for a grid convergence study |
| 110 | +-------------------------------------------------------------------------------- |
| 111 | +Say we have a base grid with level = j. |
| 112 | +Another grid with level "i" should be generated such that: |
| 113 | + - Number of cells: Ni = Nj / (2**dim)**(i-j) |
| 114 | + - Number of nodes on an edge: add one to # of cells |
| 115 | + - Growth ratio: ri = rj**(i+1-j) |
| 116 | + |
| 117 | +For more information, see https://www.grc.nasa.gov/www/wind/valid/tutorial/spatconv.html |
0 commit comments