Internal API
The internal API is meant for users wanting to run a standard computational procedure on a classic lifting configuration. The procedures that are currently implemented can be found under api/internal:
- a polar analysis, to compute the aerodynamic coefficients for various angles of attack,
- a trim analysis, to find the angle of attack that produces a desired lift coefficient. Sample cases making use of the internal API can be found under cases.
1. Defining the parameters
In practise, all the internal APIs use the Core API to initialize DART using a dictionary of parameters. Some additional parameters need to be defined and are listed hereunder.
Additional common parameters:
# Post-pro
cfg['Slice'] = list of float # y-coordinates of cutting planes to extract slices on the geometry (optional, will only work with VTK)
cfg['TagId'] = int # id of physical group to be sliced (id can be obtained through gmsh)
Additional parameters specific to Polar class:
cfg['AoA_begin'] = float # first value of the angle of attack [degrees]
cfg['AoA_end'] = float # last value of the angle of attack [degrees]
cfg['AoA_step'] = float # step in the angle of attack [degrees]
Additional parameters specific to Trim class:
cfg['CL'] = float # target lift coefficient
cfg['AoA'] = float # guess (first) angle of attack
cfg['dCL'] = float # guess (first) slope of CL w.r.t AoA [1/rad]
2. Using the solver
After the parameters have been defined, the solver can be set up automatically by instantiating the object as,
import dart.api.internal.polar as pol
polar = pol.Polar(cfg)
# or
import dart.api.internal.trim as trm
trim = trm.Trim(cfg)
The script can then be run by calling,
polar.run()
# or
trim.run()
Finally, the results can be displayed using,
polar.disp()
# or
trim.disp()