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.