Click here to return to top level Jetstream Merge Notes page.

Modifications

  • Added sectional lift constraints for Euler optimization cases (code implementation for RANS optimization is currently underway). Intended for minimizing wave drag while maintaining a prescribed lift distribution. Sectional lift constraints are specified in an input file named 'secLiftCons.dat'. This file specifies the number of sectional lift constraints, the number of operating conditions (for multipoint optimization cases), and a list of ordered pairs specifying the spanwise location of a sectional lift constraint and the corresponding constraint value. See Jetstream Test Suite case 033 for further details.
  • An opt_method = 'trim' has been added. This will satisfy the lift constraint(s) by changing the AoA for a given geometry. If GRID% EXPLICIT_MAP = .true. then the grid is fit, initOptimize is called and the geometry changed to meet what is set in userSurface. If GRID% EXPLICIT_MAP = .false. then no fitting is done and the geometry is exactly as in the grid file. This method is faster than using optimization with only an AoA DV, and is much more robust if multiple points are being trimmed. Typically convergence will be obtained in 3-4 flow solves/gradient solves.
  • Multipoint optimization has been parallelized. Some notes on how input parameters are handled:
    If there is more than one point the op_pts% list must be used to specify constraints, etc. If there is one point either the 'old' jtstrm% list or the op_pts% list can be used. This ensures back compatibility. An internal check is done to determine which list you've used. Either way the input is specified, some processing is done to make the op_pts%<option>(opt) 'global' (i.e. each process has knowledge of it) while the jtstrm% <option> only contains info about the operating point assigned to this process. This was done to minimize code changes. Thus, checking for options can still be done through the jtstrm% list. The only place checking op_pts% should be checked is in initOptimize (or equivalent). Off-design constraints can be specified simply by activating the constraint at that operating point and setting the corresponding objective weight (op_pts%wmpo) to 0.0.
  • The cummunicators have been split such that COMM_CURRENT contains each operating point. Only the global root calls the optimizer, writes shape files, etc. This is specified by the rank_ctrl == 0. The communicator COMM_CONTROL is assigned in this global sense. Efforts have been to reuse as many communicators, etc as before. Each process is assigned a value to 'opt' variable which indicates it's operating point. Thus jtstrm%<> = op_pts%<>(opt).
  • An option jtstrm% dJdX_plot allows the sensitivities of Cd, Cl, Cm (if they were calculated) w.r.t. the surface and control points to be written on the surface in the surfCPs_XXX.dat file. Thus, surfCPs.dat is written with the shape at start of usrfun() and the sensitivities are added at the end of usrfun().
  • If requested, the lift distribution is now written in results-XXX.ldist instead of lift_dist.dat due to multipoint optimization. All lift distributions throughout optimization are included in this file. (i.e. zone 1 is first flow solve, zone N is the Nth flow solve)
  • Important note for turbulent analysis runs: the incorporation of a second variant of the Spalart-Allamaras turbulence model ("negative" version of model that can accept value of turbulence quantity below 0 without destabilization) necessitated the rewriting of the subroutines that calculate the diffusive fluxes. While mathematically equivalent to the previous implementation, the numerical results of the updated computation are slightly different. This will result in the final stages of convergence producing different values of the residual, even though lift and drag should remain unchanged.

Bug Fixes