Go-Smart Simulation Model FamiliesΒΆ
Families represent groups of workflows that are simulated in
approximately the same way, or at least by using the same tools. This is
slightly more specific than a workflow as, for example, the Docker
workflow has a separate family for each Docker image. It corresponds
more accurately to a single configuration system. This comprises a pair:
a subclass of gssa.family.Family
that contains instructions for
interpreting GSSA-XML for this type of simulation and
writing any necessary tool-specific configuration files, and the
simulation tools themselves.
Two examples are GSSF, which is also a fully fledged workflow, and FEniCS, which depends on pre-meshing by the GSSF CGAL mesher component.
To find families, the gssa.family
module scans for files in the
directory of the gssa.families
module.
TODO: extend this to user-configurable locations.
Note: family modules are run as part of the Python server - this
means they are privileged and should only be included from highly
trusted sources, as with other codes running as www-data
. They are
not sandboxed or intended to be user-supplied, but constitute a basic
plug-in framework. The longer-term intention is to migrate to a proper
plug-in framework, where community developed families may be added in,
running as an unprivileged user. Of course, this would still require a
higher level of trust than given to external user code, which only runs
sandboxed in Docker.