Design or adapt a Deployment DSL for Ocean Models

Type Bachelor (evaluation with MITgcm or UVic scenarios)

Type Master (evaluation with MITgcm and UVic scenarios and in conjunction with domain experts)

Tasks Based on a given set of domain knowledge, concepts and sample deployment scripts, design a textual, external DSL to control deployment of models based on the two case studies UVic and MITgcm addressing all three deployment scenarios (local, dedicated host/node, and kubernetes). The DSL includes a code generator, interpreter or Jupyter kernel which performs the deployment.

Deployment is handled differently in the scientific modeling domain than it is in enterprise and embedded systems. Starting configured and compiled models is done with scheduling systems/schedulers, e.g., Slurm ​[5]​ and OpenPBS ​[2]​. On top of such schedulers tooling, like CYLC are proposed, as an overall workflow engine ​[3]​.

CYLC could already cover all our needs or parts of them. Therefore, it is your task to analyze the domain to understand what scientists do to configure and setup scientific models and then run them. Show whether this can be achieved with CYLC (if possible), what is missing, and how to integrate this with our other DSLs.

Resources and Notes

  • Introductions to how to write a thesis
  • Ansible is a deployment and configuration language
  • The deployment process for ocean models can be quite different from those established in enterprise software where Ansible is designed for. Typical processes is (so far) configure code, compile, configure program, setup, run. All these tests can be done locally or remote. However, at the point when it goes remote it stays remote from that point on. That means when code configuration happens locally, but compiling is done remote, the rest is also done remote.
  • Access to remote machines happen via ssh (legacy) or via Jupyter (latest).
  • Version management and file synchronization is done via git.
  • The DSL must be able to describe all phases of the deployment. This could be done similarly to a build pipeline from
  • Sprat Deployment based on Ansible
  • The Sprat Approach (see also below), specifically the simulation configuration DSL
    • Sprat
      • Chapter 7 Especially 7-7.2.2
      • Metamodel in 7.2.3 to understand the general relationship of the terminology, the property definition in 7.2.3 is done in Object-Z, but essentially the name on the top refers to the class from the metamodel and the pairs of names in the inner frame are the properties for the class and additional constraints. Inheritance in Object-Z is shown in the defition of Internal_DSL and External_DSL (the internal DSL has also a property host language).
      • 7.3 Applying the Sprat Approach To understand how and where the separation between domains happen, you need to define roles. This is described in 7.3.1
    • Source Code
  • Case Studies
  • External DSL notation for syntax and semantics Syntax EBNF
  • Operational semantics for programming languages
  1. [1]
    Reiner Jung. 2016. Generator-Composition for Aspect-Oriented Domain-Specific Languages. Kiel University, Kiel. Retrieved from
  2. [2]
    Linuxfoundation. OpenPBS. OpenPBS Open Source Project. Retrieved January 28, 2021 from
  3. [3]
    Hilary Oliver, Matthew Shin, David Matthews, Oliver Sanders, Sadie Bartholomew, Andrew Clark, Ben Fitzpatrick, Ronald van Haren, Rolf Hut, and Niels Drost. 2019. Workflow Automation for Cycling Systems. Computing in Science & Engineering, 7–21. DOI:
  4. [4]
    Benjamin C. Pierce. 2002. Types and Programming Languages. The MIT Press.
  5. [5]
    Slurm Commercial Support and Development. Slurm Workload Manager. Slurm Workload Manager. Retrieved January 28, 2022 from