Go-Smart Simulation Algorithms

These are members of the CDM that provide something akin to lambda calculus to Go-Smart. They are database defined, have textual body in an unspecified language, return a parameter as a Result and take named arguments that must be supplied by the numerical model as a condition of forming a valid Combination.

Definition

They can be defined in GSSA-XML, within the <algorithms /> node as follows:

<algorithm result="RESULT">
    <arguments>
        <argument name="ARGNAME" />
    </arguments>
    <content>
        ALGORITHMDEFINITION
    </content>
</algorithm>

The ALGORITHMDEFINITION may be defined in any language the simulation family will understand (or, more accurately, the ultimate third-party simulation tool). Examples include MATC (for GSSF) and Python (for FEniCS). The RESULT is conventionally an upper-case, underscore-spaced slug that can be used in place of a conventional “constant” parameter. Arguments are specified solely by name, not type (as we do not even know the applicable language). They are expected to be supplied by the simulation procedure at run-time.

While this is no less secure than the numerical model running on the Docker instance from an administrator perspective, it should be noted that the provenance of the algorithm may well be different, and if the author of the numerical model (or Docker instance) is concerned about data leakage from their instance, they should take adequate precaution. Within the Python Docker module, the algorithm will not be called except as requested by the numerical module.