AeroSolver

class baseclasses.AeroSolver(name, category, defaultOptions={}, options={}, immutableOptions={}, deprecatedOptions={}, comm=None, informs={})[source]

Abstract Class for Aerodynamic Solver Object

AeroSolver Class Initialization

addFamilyGroup(groupName, families)[source]

Add a custom grouping of families called groupName. The groupName must be distinct from the existing families. All families must in the ‘families’ list must be present in the CGNS file.

Parameters:
groupNamestr

User-supplied custom name for the family groupings

familieslist

List of string. Family names to combine into the family group

checkAdjointFailure(aeroProblem, funcsSens)[source]

Take in a an aeroProblem and check for adjoint failure, Then append the fail flag in funcsSens. Information regarding whether or not the last analysis with the aeroProblem was sucessful is included. This information is included as “funcsSens[‘fail’]”. If the ‘fail’ entry already exits in the dictionary the following operation is performed:

funcsSens[‘fail’] = funcsSens[‘fail’] or <did this problem fail>

In other words, if any one problem fails, the funcsSens[‘fail’] entry will be True. This information can then be used directly in multiPointSparse. For direct interface with pyOptSparse the fail flag needs to be returned separately from the funcs.

Parameters:
aeroProblempyAero_problem class

The aerodynamic problem to to get the solution for

funcsSensdict

Dictionary into which the functions are saved.

checkSolutionFailure(aeroProblem, funcs)[source]

Take in a an aeroProblem and check for failure. Then append the fail flag in funcs. Information regarding whether or not the last analysis with the aeroProblem was sucessful is included. This information is included as “funcs[‘fail’]”. If the ‘fail’ entry already exits in the dictionary the following operation is performed:

funcs[‘fail’] = funcs[‘fail’] or <did this problem fail>

In other words, if any one problem fails, the funcs[‘fail’] entry will be True. This information can then be used directly in multiPointSparse. For direct interface with pyOptSparse the fail flag needs to be returned separately from the funcs.

Parameters:
aeroProblempyAero_problem class

The aerodynamic problem to to get the solution for

funcsdict

Dictionary into which the functions are saved.

getForces(group_name)[source]

Return the set of forces at the locations defined by getSurfaceCoordinates

getResNorms()[source]

Return the inital,starting and final residual norms for the solver

getResidual()[source]

Return the reisudals on this processor.

getSolution()[source]

Retrieve the solution dictionary from the solver

getStateSize()[source]

Return the number of degrees of freedom (states) that are on this processor

getStates()[source]

Return the states on this processor.

getSurfaceCoordinates(group_name)[source]

Return the set of surface coordinates cooresponding to a Particular group name

getTriangulatedMeshSurface(groupName=None, **kwargs)[source]

This function returns a trianguled verision of the surface mesh on all processors. The intent is to use this for doing constraints in DVConstraints.

Returns:
surflist

List of points and vectors describing the surface. This may be passed directly to DVConstraint setSurface() function.

globalNKPreCon(in_vec)[source]

Precondition the residual in in_vec for a coupled Newton-Krylov Method

printFamilyList()[source]

Print a nicely formatted dictionary of the family names

resetFlow()[source]

Reset the flow to a uniform state

setDVGeo(DVGeo, pointSetKwargs=None, customPointSetFamilies=None)[source]

Set the DVGeometry object that will manipulate ‘geometry’ in this object. Note that <SOLVER> does not strictly need a DVGeometry object, but if optimization with geometric changes is desired, then it is required.

Parameters:
DVGeoA DVGeometry object.

Object responsible for manipulating the geometry.

pointSetKwargsdict

Keyword arguments to be passed to the DVGeo addPointSet call. Useful for DVGeometryMulti, specifying FFD projection tolerances, etc. These arguments are used for all point sets added by this solver.

customPointSetFamiliesdict of dicts

This argument is used to split up the surface points added to the DVGeo by the solver into potentially multiple subsets. The keys of the dictionary will be used to determine what families should be added to the dvgeo object as separate point sets. The values of each key is another dictionary, which can be empty. If desired, the inner dictionaries can contain custom kwargs for the addPointSet call for each surface family, specified by the keys of the top level dictionary. The surface families need to be all part of the designSurfaceFamily. Useful for DVGeometryMulti, specifying FFD projection tolerances, etc. If this is provided together with pointSetKwargs, the regular pointSetKwargs will be appended to each component’s dictionary. If the same argument is also provided in pointSetKwargs, the value specified in customPointSetFamilies will be used.

Examples

>>> CFDsolver = <SOLVER>(comm=comm, options=CFDoptions)
>>> CFDsolver.setDVGeo(DVGeo)
setMesh(mesh)[source]

Set the mesh object to the aero_solver to do geometric deformations

Parameters:
meshMBMesh or USMesh object

The mesh object for doing the warping

setStates(states)[source]

Set the states on this processor.

setSurfaceCoordinates(coordinates, groupName=None)[source]

Set the updated surface coordinates for a particular group.

Parameters:
coordinatesnumpy array

Numpy array of size Nx3, where N is the number of coordinates on this processor. This array must have the same shape as the array obtained with getSurfaceCoordinates()

groupNamestr

Name of family or group of families for which to return coordinates for.

solveAdjoint(objective, *args, **kwargs)[source]

Solve the adjoint problem for the desired objective functions.

objectives - List of objective functions

totalAeroDerivative(objective)[source]

Return the total derivative of the objective with respect to aerodynamic-only variables

totalSurfaceDerivative(objective)[source]

Return the total derivative of the objective at surface coordinates

writeTriangulatedSurfaceTecplot(fileName, groupName=None, **kwargs)[source]

Write the triangulated surface mesh from the solver in tecplot.

Parameters:
fileNamestr

File name for tecplot file. Should have a .dat extension.

groupNamestr

Set of boundaries to include in the surface.