Skip to content

Shape Optimization YAML Input Options

Description of inputs for a yaml file provided to the optLAVA class for aerodynamic shape optimization with LAVA. Example yaml files, named opt.yaml, can be found in the shape optimization tutorials provided in the LAVA Curvilinear tutorials.

objective

  • name (String, Default=obj)

    • Name of the objective function.
  • scale (Float, Default=1.0)

    • Scaling factor applied to objective function.
  • functionals [SEQUENCE]

    • A sequence specifying the functionals used as the objective function for optimization. Multiple functionals can be specified, these will all be multiplied by the user-specified weight for each, and then summed together to get the objective function value. Surface (aka BC) families for aerodynamic objectives can be specified for given functionals.

    • func (String)

      • Name of the functional used for the objective. For example, cl, cd, or cmy.
    • families (List)

      • List of surface (aka BC) families on which this functional is computed. The name of the families must match the name given in the LAVA yaml and grid.bc files. As an example use, if we only want \(C_L\) on the wing and tail, then we may set the families to be [wing, tail].
    • weight (Float, Default=1.0)

      • The weight multiplied to this functional in the calculation of the total objective function. Typically, with multiple objective functions all the weights should sum to 1.
    • target (Float)

      • The target for this functional. Default is none, for which the optimizer attempts to minimize (or maximize) the functional on its own. If a target is specified, then the objective function for this functional is modified to be (func - target)^2.
  • probetarget [SEQUENCE]

    • probename (String, Required)

      • Name of the probe for which this target is set. This probe, and its corresponding name, must exist in the 'probes' section of the LAVA yaml file.
    • filename (String(FileName), Required)

      • Name of the probe solution file that holds the target values. For example, this solution file should contain the pressure targets if we are targetting pressure on a given probe.
    • sourcefiletype (String(FileName), Default=tri)

      • File type of the probe target file. Acceptable values are: [tri, plot3d, tecplot]
    • targetvars (String|List, Required)

      • Variables that we are targeting on the probe surface.
    • precision (String)

      • Precision of the file containing the probe target solution.

restart (String)

lava

  • suffix (String)

    • Suffix for the dynamic library lavacurv name. For example, if given suffix=GNU, the dynamic library lavacurv.GNU.so will be used for optimization.
  • libpath (String)

    • Absolute path to the directory containing the lavacurv dynamic library file.
  • warmstart (Boolean, Default=False)

    • Boolean, if true then we never reset the solution (Q) vector in LAVA to freestream, all flow solves start from the solution vector obtained from the last flow solve.

designvars

  • ffd [SEQUENCE]

    • name (String, Required)

      • Unique name for this FFD parameterization.
    • filename (String(FileName), Required)

      • Name of the plot3d file containing the FFD control point coordinates.
    • families (List, Default=['*'])

      • List of surface families to be included in this FFD. Default is [all] which includes all surfaces.
    • blocks (List)

      • List of mesh blocks that will be warped based on the deformation of the surface families listed in the families entry. Default is none, for which all mesh blocks will be deformed. Note that this option is not used if MultiFFD is specified.
    • shape

      • Creates local shape design variables via pyGeo.DVGeometry.addLocalDV. See the official pyGeo documentation.

      • name (String, Required)

        • Unique name for this design variable group
      • lower (Float)

        • Lower bound applied to all local shape variables.
      • upper (Float)

        • Upper bound applied to all local shape variables.
      • scale (Float, Default=1.0)

        • Scaling factor for the variables.
      • axis (String, Default=y)

        • Direction of control-point motion. One of {'x','y','z'}. Use multiple entries if you need more than one direction.
      • vollist (List)

        • Indices of FFD volumes whose control points are used for this DV group.
      • config (String|List)

        • Apply this DV group to one or more DVGeo configurations (None applies to all configurations).
    • sectionshape

      • Creates section-local shape design variables via pyGeo.DVGeometry.addLocalSectionDV. See the official pyGeo documentation.

      • name (String, Required)

        • Unique name for this section-local DV group
      • secindex (String|List, Required)

        • Sectioning index per volume: choose 'i', 'j', or 'k' (list allowed). The chosen index defines the transverse (2) direction for section-local perturbations.
      • lower (Float)

        • Lower bound applied to all section-local shape variables.
      • upper (Float)

        • Upper bound applied to all section-local shape variables.
      • scale (Float, Default=1.0)

        • Scaling factor for the variables.
      • axis (Integer, Default=1)

        • Direction within/out of the section plane: 0=longitudinal (in-plane), 1=latitudinal (in-plane), 2=transverse (out-of-plane).
      • vollist (List)

        • Indices of FFD volumes to include (None uses all volumes).
      • orient0 (String|List)

        • How to orient the in-plane '0' axis: None (best-fit through section points), one of {'i','j','k'} (mean FFD-edge direction), or a vector [x,y,z] (projected onto the section plane).
      • orient2 (String, Default=svd)

        • Method for the out-of-plane '2' axis: 'svd' (from section-plane SVD) or 'ffd' (use FFD direction of secIndex).
      • config (String|List)

        • Apply this DV group to one or more DVGeo configurations (None applies to all configurations).
    • spanwiselocal

      • Creates spanwise-constant local shape variables via pyGeo.DVGeometry.addSpanwiseLocalDV. See the official pyGeo documentation.

      • name (String, Required)

        • Unique name for this spanwise-local DV group.
      • spanindex (String, Required)

        • Axis along which DVs are constant: one of {'i','j','k'} (the FFD index specifying the spanwise direction).
      • axis (String, Default=y)

        • Direction of control-point motion. One of {'x','y','z'}. Use multiple entries if you need more than one direction.
      • lower (Float)

        • Lower bound applied to all spanwise-local shape variables.
      • upper (Float)

        • Upper bound applied to all spanwise-local shape variables.
      • scale (Float, Default=1.0)

        • Scaling factor for the variables.
      • vollist (List)

        • Indices of FFD volumes whose control points are used.
      • config (String|List)

        • Apply this DV group to one or more DVGeo configurations (None applies to all configurations).
    • axialcurve [SEQUENCE]

      • Creates a reference axis for global design variables via pyGeo.DVGeometry.addRefAxis. See the official pyGeo documentation

      • name (String, Required)

        • Name of axial curve
      • pts (String|List)

        • A set of (x, y, z) coordinates for which a B-Spline curve is constructed. The resulting B-Spline curve is used as the axis. pts can be given directly as a list of (x, y, z) points in the yaml file, for example
          pts : [[0., 0. , 0.],
                 [0., 0.5, 0.],
                 [0., 1. , 0.]]
          
        • Alternatively, a file name pts : axis.dat can be given, for which the corresponding file contains the (x,y,z) points. The file should list the coordinates of each point, with x, y, and z separated by the delimiter specified in the yaml (see next yaml entry). For example, to create an axis that runs along the y-coordinate, we can use the following entries in a file axis.dat:
          0., 0., 0.
          0., 0.25, 0.
          0., 0.5, 0.
          0., 0.75, 0.
          0., 1., 0.
          
        • This option cannot be used in conjuction with the options xFraction, yFraction, and zFraction.
      • delimiter (String)

        • The delimiter used to separate the x, y, and z values in the file containing the axis points. This is only used if a file name is specified for the pts entry above.
      • xfraction (Float)

        • Parametric streamwise location of the reference axis node relative to front/rear control points.This option cannot be used in conjunction with the option pts.
      • yfraction (Float)

        • Parametric location along axis 1 relative to top/bottom control points. This option cannot be used in conjunction with the option pts.
      • zfraction (Float)

        • Parametric location along axis 2 relative to top/bottom control points. This option cannot be used in conjunction with the option pts.
      • alignindex (String)

        • FFD axis along which the reference axis will lie (i, j, or k). Required when using xFraction.
      • axis (String|List, Default=x)

        • Controls how links between control points and the reference axis are computed. Use 'x','y','z' for ray-based projection or a 3-element vector for plane-based projection (recommended for angled axes).
    • twist

      • Add the global design variable for twist to the pyGeo.DVGeometry object.

      • name (String, Required)

        • A unique name to be given to the twist design variable. This may be useful if multiple twist variables are present.
      • curve (String, Required)

        • Name of the axial curve about which this twist variable is defined.
      • axis (String, Required)

        • Cartesian axis about which to perform the rotation about the axial curve. Allowed values are x, y, or z. For example, if the span-wise direction of a wing is \(y\), then the twist axis should be set to y.
      • value (Float|List, Default=0.0)

        • The initial value of the twist DV. Can be either a single float applied to all twist DVs, or a list of values.
      • lower (Float|List, Required)

        • The lower bound(s) for the variable(s).
      • upper (Float|List, Required)

        • The upper bound(s) for the variable(s).
      • scale (Float|List, Required)

        • The scaling of the variables.
      • rigid (Boolean, Default=False)

        • Boolean, set to true if the FFD rotates rigidly. In other words, all control point stations rotate the same amount.
  • aero [SEQUENCE]

    • List of aerodynamic design variables.

    • name (String, Required)

      • Name of the aerodynamic design variable.
    • value (Float, Default=0.0)

      • Starting value for the aerodynamic design variable.
    • lower (Float)

      • Lower bound for the design variable value.
    • upper (Float)

      • Upper bound for the design variable value.
    • scale (Float, Default=1.0)

      • A scaling factor for the dv.
  • multiffd

    • Options for the pyGeo object DVGeoMulti. This can handle intersections where two bodies (e.g. wing and fuselage) are parameterized by separate FFDs. As a result, one body can be deformed while the other remains unchanged around the intersection. See the official pyGeo documentation

    • components [SEQUENCE]

      • Sequence of components added to DVGeoMulti. See addComponent in the official pyGeo documentation.

      • name (String, Required)

        • User-defined name for this component.
      • ffdname (String, Required)

        • Name of the FFD volume that will be given as a component to the DVGeoMulti object. This name must match an entry given in the designVars.FFD.name section of the yaml file
      • trimesh (String, Required)

        • Name of the CGNS file which contains (1) the triangulation of the surface for this component and (2) the feature curves for this surface.
    • intersections [SEQUENCE]

      • Sequence of intersection definitions between components. See addIntersection in the official pyGeo documentation.

      • compa (String, Required)

        • Name of the first component in the intersection.Must match an entry given in designVars.MultiFFD.components.name.
      • compb (String, Required)

        • Name of the second component in the intersection.Must match an entry given in designVars.MultiFFD.components.name.
      • dstara (Float, Default=0.2)

        • Distance over which inverse-distance deformation is applied on compA.
      • dstarb (Float, Default=0.2)

        • Distance over which inverse-distance deformation is applied on compB.
      • featurecurves (List)

        • List of curves used as 'feature' curves for the deformation. Points on feature curves will remain on the same curve after deformations and projections.the march direction for all curves is marchDirThe name of these curves must match the zone_section name for a curve specified in the triMesh CGNS files listed in the component options. For e.g., say we have a curve named con-1 in the zone wing in the CGNS file given to a component. The feature curve name for this is wing_con-1.
      • disttol (Float, Default=1e-14)

        • Tolerance for merging nearby nodes in intersection curves.
      • project (Boolean, Default=False)

        • If True, projects points to curves and surfaces after deformation.
      • marchdir (Integer, Default=1)

        • Axis and direction for remeshing feature curves (1=x, 2=y, 3=z).
      • includecurves (Boolean, Default=False)

        • If True, includes feature curves in inverse-distance deformation.
      • intdir (Integer)

        • Specifies which intersection curve to use when multiple exist (sign and axis).
      • curveeps [SEQUENCE]

        • Required if using feature curves. Specifies curve names and point distances.

        • name (String, Required)

          • Name of the feature curve.
        • distance (Float, Required)

          • Distance threshold for considering points on the curve.
      • tracksurfaces [SEQUENCE]

        • Specifies surfaces whose points should remain on the same surfaces after deformation and projection

        • name (String, Required)

          • Name of the surface. This must correspond to a surface available in a triMesh CGNS file given to one of the components. The name convention is zone_section name. For example, if a surface called triElements is in zone wing of the CGNS file, then the specified surface name is wing_triElements.
        • distance (Float, Required)

          • Distance threshold for tracking points on the surface.
      • excludesurfaces [SEQUENCE]

        • Specifies surfaces to exclude from intersection computations.

        • name (String, Required)

          • Name of the surface. This must correspond to a surface available in a triMesh CGNS file given to one of the components. The name convention is zone_section name. For example, if a surface called triElements is in zone wing of the CGNS file, then the specified surface name is wing_triElements.
        • distance (Float, Required)

          • Distance threshold for excluding points on the surface.
      • remeshbwd (Boolean, Default=True)

        • If True, remesh feature curves on both sides of the intersection.
      • anisotropy (List, Default=[1.0, 1.0, 1.0])

        • Scaling factors [x,y,z] for curve-based deformation to improve mesh quality.
    • pointsets [SEQUENCE]

      • Sequence of point sets (or surface meshes) to be added to the DVGeoMulti object for parameterization. See addPointSet in the official pyGeo documentation.

      • name (String, Required)

        • Surface name for this point set within the context of all the point sets given to the DVGeoMulti object.This must correspond to the BC family names from the grid.bc and lava.yaml files
      • compnames (List)

        • List of components to which this point set is added (default: all components).
      • applyic (Boolean, Default=False)

        • If True, point set follows updated intersection curves (typically for CFD meshes).
    • debug (Boolean, Default=False)

      • If true, writes out debug info for DVGeometryMulti Object.

constraints

  • aero [SEQUENCE]

    • Aerodynamic-functional-based constraints. For example, an equality on \(C_L\), or an inequality constraint \(C_{My}\).

    • name (String, Required)

      • Unique name of the aerodynamic constraint. This may be the name of the function we wish to constrain, e.g. cl. However, when dealing with surface families, we may have various cl's to constrain, hence this should be a unique name for this aerodynamic constraint. For example, if we have different cl constraints for a wing and tail, we may choose to name them 'cl_wing' and 'cl_tail', hence giving them unique names.
    • functionals [SEQUENCE]

      • List of functions and weights to be used in this constraints. This list allows us to create compound constraints by taking the sum of multiple aerodynamic functionals. E.g., we may want to have a constraint such as lift = drag (I don't know why, but just go with it). We would then specify :
      • constraints :
      • aero :
        • name : cl_cd
      • func :
        • name : cl
      • weight : 1.0
        • name : cd
      • weight : -1.0
      • upper : 0.0
      • lower : 0.0
      • If none is given, then the 'name' option is taken as the functional.

      • func (String, Required)

        • Name of the aerodynamic functionals to constrain.
      • families (List)

        • LAVA surface families for which to apply this aerodynamic constraint. For example, if we only want to constrain the lift coef on the wing and body of a full configuration, then we would have name = cl and families=[wing, body].
      • weight (Float, Default=1.0)

        • The weight to apply to this functional.
    • designvars [SEQUENCE]

      • List of design variables to be used in this constraints. This list allows us to create compound constraints by including of multiple design variables. E.g., we may want to have a constraint such as drag=thrust. We would then specify :
      • constraints :
      • aero :
        • name : cd_thrust
      • func :
        • name : cd
      • weight : 1.0
      • designVars :
        • name : acd.1.thrust
      • weight : -1.0
      • upper : 0.0
      • lower : 0.0

      • name (String, Required)

        • Name of the design variable to include in this constraint.
      • weight (Float, Default=1.0)

        • Weight applied to this design variable for this constraint.
    • lower (Float)

      • Lower bound on this functional. If upper and lower bounds are equal, then the constraint is an equality.
    • upper (Float)

      • Upper bound on this functional. If upper and lower bounds are equal, then the constraint is an equality.
    • scale (Float, Default=1.0)

      • A scaling factor for the constraint. It is generally advisable to have most optimization constraint around the same order of magnitude.
  • surfaces [SEQUENCE]

    • Entries pertaining to the surfaces that will be passed to pyGeo.DVCon on which the constraints will be placed.

    • name (String, Required)

      • Unique name of the aerodynamic surface. If no filename is provided for this surface, then optLAVA will get the surface from the LAVA grid families. Thus, unless a filename is provided, this family MUST be present in LAVA's YAML input file.
    • dvgeoname (String, Default=default)

      • Name of the DVGeo object to compute the constraint with. You only need to set this if you're using multiple DVGeo objects for a problem. For backward compatibility, the name is 'default' by default
    • filename (String(FileName))

      • File name for the surface. This is an optional argument, if it is not provided, then optLAVA will get the surface from LAVA's grid families. Currently, the surface file must be a CART3D-style tri file.
  • pinnedlete [SEQUENCE]

    • Adds leading-edge/trailing-edge pinning constraints via pyGeo.DVConstraints.addLeTeConstraints. See the official pyGeo documentation. These constraints enforce equal and opposite movement of paired control points on LE/TE faces to prevent unintended twist.

    • volid (Integer, Required)

      • Single integer specifying the volume index.
    • faceid (String, Required)

      • Face identifier for the constraint. Must be one of: ['iLow', 'iHigh', 'jLow', 'jHigh', 'kLow', 'kHigh'].
    • start (Integer)

      • The control point index in the edge-wise direction for which to start placing the pinned constraint. For example, start : 3 and end : 3 will only pin the third control point along the edge of the FFD.
    • end (Integer)

      • The control point index in the edge-wise direction for which to place the last pinned constraint. For example, start : 3 and end : 3 will only pin the third control point along the edge of the FFD.
    • dvgeoname (String, Default=default)

      • Name of the DVGeo object associated with this constraint (default: 'default').
    • comp (String)

      • Component name when using DVGeometryMulti.
    • topid (String)

      • Symmetry direction identifier for 2×2 faces. Must be one of: {'i', 'j', 'k'}.
  • volume [SEQUENCE]

    • Adds a wing volume constraint via pyGeo.DVConstraints.addVolumeConstraint. See the official pyGeo documentation.
    • Defines a 2D domain between leading and trailing edges (leList/teList), subdivided into nSpan × nChord points and projected onto the surface to compute volume.

    • lelist (List|String, Required)

      • List/array of Nx3 points (N ≥ 2) defining the leading edge of the domain.
    • telist (List|String, Required)

      • List/array of Nx3 points defining the trailing edge of the domain.
    • nspan (Integer|List, Required)

      • Number of points interpolated along leList/teList; a list can specify per-segment counts.
    • nchord (Integer, Required)

      • Number of points interpolated between leading and trailing edges.
    • lower (Float, Default=1.0)

      • The lower bound for the volume constraint.
    • upper (Float, Default=3.0)

      • The upper bound for the volume constraint.
    • scaled (Boolean, Default=True)

      • If True, bounds are relative to the initial volume (e.g., 0.85–1.15 permits ±15%). If False, bounds are absolute physical volumes.
    • scale (Float, Default=1.0)

      • Optimization scaling factor; typically left at 1.0 unless magnitudes differ significantly.
    • name (String)

      • Optional identifier for this constraint (useful with multiple DVCon objects).
    • addtopyopt (Boolean, Default=True)

      • Set False if not adding directly to the optimization problem.
    • surfacename (String, Default=default)

      • Name of the projection surface (matches the name used in setSurface()).
    • dvgeoname (String, Default=default)

      • Name of the DVGeo object associated with this constraint.
    • compnames (List)

      • For DVGeometryMulti, list components to which the point set is added (default: all).
  • thickness [SEQUENCE]

    • Adds spanwise/chordwise thickness constraints via pyGeo.DVConstraints.addThicknessConstraints2D. See the official pyGeo documentation
    • Defines a 2D region between leading and trailing edges (leList/teList), subdivided into nSpan × nChord and projected onto the surface; each grid point enforces a local thickness bound.

    • lelist (List|String, Required)

      • Leading-edge definition: either an Nx3 array of points (N ≥ 2) or a filename containing that array in text form (first line: count; subsequent lines: X Y Z).
    • telist (List|String, Required)

      • Trailing-edge definition (same formats as leList).
    • nspan (Integer|List, Required)

      • Number of thickness sample locations along leList/teList. A list can specify per-segment counts.
    • nchord (Integer, Required)

      • Number of thickness sample locations between leading and trailing edges.
    • lower (Float|List, Default=1.0)

      • Lower bound. Use a single float (applies to all samples) or an array of size (nSpan × nChord) for per-sample bounds.
    • upper (Float|List, Default=3.0)

      • Upper bound. Use a single float or an array of size (nSpan × nChord) for per-sample bounds.
    • scaled (Boolean, Default=True)

      • If True, bounds are relative to initial thickness at each location (e.g., 0.85–1.15 allows ±15%). If False, bounds are specified as absolute physical lengths.
    • scale (Float|List, Default=1.0)

      • Optimization scaling factor(s). Typically 1.0; when using arrays, supply size (nSpan × nChord).
    • name (String)

      • Optional identifier for this constraint (useful when multiple DVCon objects are present).
    • addtopyopt (Boolean, Default=True)

      • Set False to compute thickness values without adding them directly to the optimization problem.
    • surfacename (String, Default=default)

      • Name of the projection surface (must match the name used in setSurface()).
    • dvgeoname (String, Default=default)

      • Name of the DVGeo object associated with this constraint.
    • compnames (List)

      • For DVGeometryMulti, list components to which the point set is added (default: all).
    • projected (Boolean, Default=False)

      • If True, uses the component of thickness aligned with the original thickness direction.
  • shapethickness [SEQUENCE]

    • If included in the yaml file, this option will add a thickness constraint to the control points of the FFD volume. This is done by making a call to the function addLinearConstraintsShape in the pyGeo.DVConstraint object . See the official pyGeo documentation for details on addLinearConstraintsShape.

    • volid (Integer, Required)

      • Single integer specifying the volume index.
    • dirindex (String, Required)

      • One of i, j, or k. Specifies the direction for which the constraint is placed. For example, an FFD for a wing may have all the control points below the wing at k=0, and all the control points above the wing at k=1. In this example, dirIndex would be set to k.
    • axis (String, Required)

      • One of x, y, or z. The cartesian coordinate along which to place the thickness constraint.
    • lower (Float, Default=0.1)

      • Lower bound based on the initial thickness, for example 'lower : 0.25' is a 25% thickness lower bound. Default is 10%.
    • upper (Float, Default=10)

      • Upper bound based on the initial thickness, for example 'upper : 1.25' is a 125% thickness upper bound. Default is 1000%.
    • name (String)

      • Unique name for this constraint.
    • config (String)

      • The DVGeo configuration to apply this constraint to. Must be either None which will apply to ALL the local DV groups or a single string specifying a particular configuration.
    • childname (Integer)

      • Name of the child FFD, if this constraint is being applied to a child FFD
    • comp (String)

      • The component name if using DVGeometryMulti
    • dvgeoname (String, Default=default)

      • Name of the dv geo object to which this constraint is applied.
  • monotonic [SEQUENCE]

    • Adds monotonic constraints via pyGeo.DVConstraints.addMonotonicConstraints. See the official pyGeo documentation.

    • key (String, Required)

      • Name of the global design variable to constrain.
      • NOTE : When using the DVGeoMulti, you must define the key as 'ffdname_key'. For example, if an ffd named wingffd has the design var twist, then the key entry when using DVGeoMulti is wingffd_twist.
    • slope (Float, Default=1.0)

      • Direction of monotonicity along the DV vector: 1.0 enforces monotonic decrease left→right; −1.0 enforces monotonic decrease right→left.
    • name (String)

      • Optional identifier for this constraint (useful when multiple DVCon objects are present).
    • start (Integer, Default=0)

      • Inclusive start index of the DV slice to constrain (use with stop to constrain a subset).
    • stop (Integer, Default=-1)

      • Inclusive end index of the DV slice to constrain (use with start to constrain a subset).
    • config (String)

      • Apply the constraint to a specific DVGeo configuration (None applies to all local DV groups).
    • childidx (Integer)

      • Zero-based index of the child FFD to which this constraint applies (if constraining a child FFD).
    • comp (String)

      • Component name when using DVGeometryMulti.
    • dvgeoname (String, Default=default)

      • Name of the DVGeo object associated with this constraint (default: 'default').

optimizer

  • name (String, Required, Default=SNOPT)

  • options

    • The set of options given to pyOptSparse's OPT class. See official pyOptSparse documentation. Note that all the keys in this section are case sensitive. Dependent on the selected optimizer. See the tutorials for examples.

output

  • Options which control the outputs from the optimization process.

  • outputdir (String, Default=.)

    • Directory into which to write all the output files.
  • monitor

    • These options are used to specify the variables that a user wants to monitor during the optimization. Specified variables are written to the file specified by the filename option.

    • filename (String(FileName), Default=optMonitor.txt)

      • Name of the file in which the monitored variables are written.
    • variables (List, Default=[])

      • List of variable names (strings) which the user is interested in monitoring during the optimization process. (I'll write more about what is supported in a future iteration of this documentation.)
  • history

    • List (a short list) of options for the history file written by pyOptSparse reflecting the history of the optimization problem. This history file is written in a SQL-type database format. It contains the values of the functionals, gradients, and design variables for each function/gradient evaluation done during the optimization.
    • It later can be used as a restart file for optimization assuming all parameters are exactly the same for the optimization problem.
    • See the official pyOptSparse documentation.

    • filename (String(FileName), Required)

      • Name of the history file.
  • surface [SEQUENCE]

    • List of options to write out the surface geometry. Note that these files are written to a tecplot .plt file, and contain both surface and FFD coordinate information. Thus, they can be used to visualize the FFD volume and control points as well as the surface.

    • filename (String(FileName), Default=surface.opt)

      • Filename for the surface geometry information. When writing the files, this will be appended with the iteration number, e.g. surface.opt.0000010.plt.
    • frequency (Integer, Default=-1)

      • Frequency at which to write the surface information. If set to -1, then no file is written.
    • variables (List, Default=[])

      • List of strings containing the flow field variables that a user wants plotted on the surface. For example, if a user wants to see the primitive variables on the surface, they can write
      • variables : [pressure, velocityx, velocityy, velocityz, temperature]
      • Any variable output option available in LAVA can be plotted on the surface.
    • first (Boolean, Default=False)

      • If set to True, then write the surface geometry output at the first design iteration before any changes have been made.
    • latest (Boolean, Default=False)

      • If set to True, then write a file called, for example, surface.opt.latest.plt which holds the geometry for the latest function evaluation. Note that if the file already exists from a previous 'latest' write, then that file is deleted before writing the new 'latest'. If the latest surface geometry has been written out from the frequency output, then a link is created for the 'latest' file for that iteration.
  • volume [SEQUENCE]

    • List of options to write out the volume grid and solution to file. Writing the files is done by LAVA, not by python. Hence, most options mimic the volume output options from the standard LAVA yaml. A volume grid file is always written. If either the variables entry if non-empty, or the filetype is specified as plot3dsolution, then a volume solution file is also written.

    • filename (String(FileName), Default=volume.opt)

      • Filename for the volume geometry information. When writing the files, this will be appended with the iteration number, e.g. volume.opt.0000010.plt.
    • filetype (String(FileName), Default=plot3d)

      • File type for the resulting volume output. Options include
        • plot3d
        • cgns (only available if code is compiled with cgns capability)
        • plot3dsolution
      • Note: if plot3dsolution is specified, then a solution file containing the conservative flow variable is also written.
    • variables (List, Default=[])

      • List of strings containing the flow field variables that a user wants plotted on the volume. For example, if a user wants to see the primitive variables on the volume, they can write
      • variables : [pressure, velocityx, velocityy, velocityz, temperature]
      • Any variable output option available in LAVA can be plotted in the volume.
      • Note: if plot3dsolution is specified as the file type, then all user-specified variables are ignored. Only conservative flow variables are written for this file type.
    • frequency (Integer, Default=-1)

      • Frequency at which to write the volume information. If set to -1, then no file is written.
    • first (Boolean, Default=False)

      • If set to True, then write the volume output at the first design iteration before any changes have been made.
    • latest (Boolean, Default=False)

      • If set to True, then write a file called, for example, volume.opt.latest.x which holds the geometry for the latest function evaluation. Note that if the file already exists from a previous 'latest' write, then that file is deleted before writing the new 'latest'. If the latest volume file has been written out from the frequency output, then a link is created for the 'latest' file for that iteration.
    • usesingle (Boolean, Default=False)

      • Use single precision for volume output.
  • designvars [SEQUENCE]

    • List of options to write out the design variable values to a file for given iteration numbers.
    • Note : this output is under construction, and thus far only geometric design variables such as sectionShape and twist are supported for this output. More support to come in the near future.

    • variables (List, Required, Default=False)

      • List of strings containing the design variables to include in the file. These strings must match the names of the design variables given in the designVars section of the YAML.
    • filename (String(FileName), Default=dvs)

      • Filename for the design variable information. When writing the files, this will be appended with the iteration number, e.g. dvs.0000010.dat.
    • frequency (Integer, Default=-1)

      • Frequency at which to write the design variable information. If set to -1, then no file is written.
    • first (Boolean, Default=False)

      • If set to True, then write the design vars are output at the first design iteration before any changes have been made.
      • If set to True, then the information that is written to the file is also printed to the screen.
    • latest (Boolean, Default=False)

      • If set to True, then write a file called, for example, dvs.latest.dat which holds the geometry for the latest function evaluation. Note that if the file already exists from a previous 'latest' write, then that file is deleted before writing the new 'latest'. If the latest volume file has been written out from the frequency output, then a link is created for the 'latest' file for that iteration.
  • ffd [SEQUENCE]

    • List of options to write out pyGeo's FFD volumes to file. Writing the files is done by pyGeo's writeTecplot function.

    • filename (String(FileName), Default=ffd)

      • Filename for the ffd file. Note that the file will be appended by the name of the FFD and the iteration number. So for example, if we have two FFDsnamed 'wingFFD' and 'tailFFD', and we choose to write them both,we will get two files: 'ffd.wingFFD.0000001.dat' and 'ffd.airfoilFFD.0000001.dat
    • names (List)

      • List of FFD names to write to file. These names should match the names given in the designVars.FFD.nameinputs in the yaml file. The default is None, which writes all FFDs.
    • frequency (Integer, Default=-1)

      • Frequency at which to write the volume information. If set to -1, then no file is written.
    • first (Boolean, Default=False)

      • If set to True, then write the ffd output at the first design iteration before any changes have been made.