Supported Languages#
Direct Support#
As Philote uses gRPC and protocol buffers to define a data and communications standard for MDO applications, individual disciplines may be interface using any language with gRPC bindings. The official list of supported languages is (according to the gRPC website):
Additionally, unofficial third-party bindings exist for a variety of languages such as Rust.
Fortran#
Noticeably absent, yet an important language in scientific computing, is Fortran. There appear to be no gRPC binding, certainly no mature ones, available for Fortran. However, due to the widespread use of Fortran in high-performance scientific analyses (particularly legacy codes), ignoring it in an MDO setting is impractical.
Despite the absence of native bindings, however, Fortran codes can still be connected to Philote generated components. To do this, Philote must be used in another language (such as C/C++ or Rust) and the Fortran code must then be called via a foreign function interface. Another option is to wrap the Fortran code into Python using f2py and use Python’s gRPC bindings.
Client/Server Boilerplate Code#
While any language with gRPC bindings can, in principle, be used to create Philote analysis servers (or call existing servers), Philote is merely a standard defined with gRPC and protobuf. As such, the onus largely lies with the developer to create the code to prepare and consume data. Naturally, this may be a daunting task with a high threshold of entry. This is compounded by the fact that many MDO analysis devlopers are not necessarily well versed with networking or data serialization. As such, a number of libraries and examples containing boilerplate code have been developed to reduce the development effort required to get analysis servers running: