Skip to main content

Explicit Disciplines

The previous section described how data is represented by Philote. Individual disciplines are described as a service. This section describes the conventions for the ExplicitDiscipline:

service ExplicitService {
// Calls the discipline Compute function
rpc ComputeFunction(stream Array) returns (stream Array) {}

// Calls the discipline ComputePartials function
rpc ComputeGradient(stream Array) returns (stream Array) {}
}

ComputeFunction

The most basic RPC required by an MDO framework is a function evaluation. The Compute RPC sends the input variables (Variables, chunked) to the analysis server. The server then conducts a function evaluation and assigns output data to a Variables datatype, chunks it, and streams the chunks back over the wire to the MDO framework.

Compute Gradient

This RPC enables the MDO framework to query the discipline derivatives. Naturally, not all disciplines are differentiable or meant to be used in gradient-based optimization. As such, this function is optional.

Inputs are sent to the analysis server as a stream of chunks containing a Variables datatype. After the analysis server has evaluated and assigned the derivatives, the are returned (chunked) as a Partials datatypes.