November+2013+Merge+Notes

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

Summary of Changes

 * Generalized file naming convention for GRID%READ_FINE_GRID option. Previously, the grid file containing block edge-spacing parameters suitable for flow solutions had to be named GRID_FILE_PREFIX//turb.g// regardless of whether or not the case was for a turbulent RANS flow solution. Now the "flow-solution" grid can be given any prefix. When using the GRID%READ_FINE_GRID option, you must now have an input parameter called GRIDFS_FILE_PREFIX in the &FILES namelist that specifies the "flow-solution" grid prefix.
 * A new solid surface boundary type 100 has been added. This performs the same role as type 1,101,102,103,etc, except boundaries with type 100 are not included in force/moment calculations. This can be useful for selective force computations such that changes must only be made at a very high level in the code and do not propagate into the heart of the code. In places which used to have checks such as "case(1,101:)", in the future use "case(1,100:)", except obviously in routines which perform force calculations such as "case(1,101:) call calcBoundaryForce". This change has been applied to all of the code as of this group merge.
 * High-order LHS now implemented for the Euler equations and SBP dissipation model (both matrix and scalar; id model 3/4 respectively). Two methods can be used for jtstrm% adj_matv : 'jacbn' or 'reverse'. 'jacbn' forms the flux Jacobian matrix explicity and matrix vector products are performed using the stored matrix. 'reverse' never stores the flux Jacobian matrix and thus has the potential for memory savings. The matrix vector products are performed analytically on a row by row basis. Initial testing shows a consistent increase in adjoint solve time of 50% when using diablo% adj_matv = 'reverse', with a nearly identical convergence history (meaning the matvecs are the source of time increase). Use 'reverse' if you want to benefit from the memory savings of never forming Jmat. Memory savings have not yet been quantified. asStencil now corresponds with diablo%order while paStencil corresponds with diablo%fjac_order (preconditioning order of accuracy)
 * Shock capturing added to scalar SBP dissipation. Pressure switch linearization remains untested with SBP dissipation.

Changes To Input Parameters

 * Column scaling for the RANS equations now can be an input parameter diablo%turb_sfac. Default is 1.d-3, formerly a hard-coded value.
 * diablo%nk_its increased from 20 to 200. I'm assuming no one actually used the old default value so I set it to something more reasonable.
 * diablo%col_scale now entirely obsolete, though still in the codes so as to not break input files
 * A root bending constraint has been added (so far in usrfun_rgndv only) via jtstrm% bend_cnstrnt, which gets the bending moment from wing in isolation.
 * diablo%SBPtype is an integer which allows for choice between the standard SBP operator (diablo%SBPtype=1; default) and the extended boundary operator (diablo%SBPtype=2). diablo%Q12 is the free parameter within the extended boundary operator (diablo%Q12 = 7/12 by default and represents the minimum Average Boundary Truncation Error (ABTE))
 * diablo%SBP_MIN_BANDWIDTH = .false. by default. Set to .true. to take advantage of the reduced storage requirements when the globally 4th-order operator is used and minimum bandwidth is desired.
 * diablo% verify_matv = 'frcht' by default, can also be set to 'cmplx'. Dictates which matvec technique is to be used when testing flux Jacobians with testMatrixAccuracy or testReverseMatVec

Changes to Subroutines

 * Some routines in Verify_Mod have been greatly altered. However, previous functionality should be easily returned with a few pre-processing directives.

Changes To Modules

 * RANS equations can now be non-dimensionalized.with diablo%tnd_fac (turbulent non-dimensionalization factor). This has been tested with all pushed RANS features, including optimization, QCR, SA_NEG, etc. Obviously, it can cause problems with local unmerged changes, so you might want to run a RANS test case if you made any changes to any RANS routines.
 * New module: ViscousdRdQ_Mod. This module is similar to EulerdRdQ_Mod, and is used when jtstrm% adj_matv = 'reverse'.

New Features (non-critical)

 * Line search method can be used for extra robustness for harder flow solves
 * Additional options for enforcing physicality constraints pro-actively
 * New scaling options: diablo%row_norm and diablo%col_norm flags can be set to normalize rows and columns in the flow solve instead of the usual Jacobian and blanket scaling
 * New matvec option available for RANS solves: diablo%newton%matvec='hysa2', which is a hybrid Frechet/approx method that uses part of the preconditioner to give better accuracy than Frechet matvecs. The method involves fewer floating point operations but more interprocessor communication than Frechet, and also requires more data access time, so it might be a bit slower on highly parallelized meshes.
 * Full-configuration optimization capability as well as trim-effector models have been improved/implemented when using region design variables (RDVs)
 * opt_method = 'trim' now allows for full trimming (both lift and moment) at a series of conditions more efficiently.