For geometries with intersecting surfaces, e.g. a wing and a fuselage, a special means of control is used. This assumes one surface (or set of surfaces) is the driving surface, and another surface (or set of surfaces) is driven surface. The driving surface's control points are embedded in, and controlled by, the FFD (or other geometry control framework) and their movement is propagated along the driven surface. This is illustrated below, where the changes are made to the wing and the propagated along the fuselage in the "k" directions. The propagation along the driven surface is done via an algebraic expression, as described in Section 2.1.3 in Tom Reist's thesis.Â
To use this method, the option jtstrm%mvBodyPtch = .true. is set in the input file, and the additional file wbpatches.dat must be provided in the run directory. An example of this file is shown below, together with a portion of the geometry (with patch numbers identified) to which it corresponds. The first column simply contains the dependency number. The second contains the patch number of the driven patch, e.g. those on the fuselage, and the third column contains the corresponding driving patch. The last column contains the number of control points on the driven patch over which to propagate the deformation. Selecting a large number will cause it to be propagated over the whole patch (decaying as it moves away from the driver patch as described above.) The dependency of the upper surface and fuselage for a sample wing-body is shown below to illustrate this and corresponds to the wbpatches.dat file shown. The only additional complexity is at the leading and trailing edges for O topology grids, e.g. for patches 18, 11, and 13 in the example below. This effectively requires a second level of dependency. For example, consider the leading edge. For dependency number 5 in the sample file, the shape change from the LE (patch 18) is propagated to the fuselage (patch 12). However, patch 13 needs to be modified, but is not attached to a surface that is explicitly moved (e.g. the wing). So, an additional dependency is setup (number 6) where patch 12 now becomes the driver (since it has been updated based on patch 18) and patch 13 is driven based on patch 12. Note that the order is important: Patch 12 had to be updated based on the wing before it can be used as a driving surface to move patch 13. This order of dependencies must be reflected in the dependency number order in the wbpatches.dat file.
This functionality is not limited to wing-body junctions. For example, it has been used for hybrid wing-bodies with fins, where both the body and fin are controlled by FFDs, and a number of patches at the fin base are left unembedded and their position is then set using this method. Also, a more complex version activated with jtstrm%mvJunctionPtch is also available. This has been used for more complicated cases such as strut-braced wings. Contact a senior lab member or take a look at the source code to learn about its use.