Rose application question

At the heart of our workflow(s) we run the NEMO model. The “modeling” portion of out workflow is quite complex, here’s the graph:

How can I best use rose to manage this? It seems to me that creating an app for each individual component in the graph (which corresponds to running a specific script or binary) is a bit too much, but maybe it is the right way to proceed?

It is mentioned in the doc that you can have more than one command in the rose-app.conf but nowhere is an example given and how it would be used

Thanx
Gaby

Hi,

Rose Applications:

Rose application configurations can be useful if the commands you run require more configuration than can be provided by setting environment variables with Cylc. E.g, you might want to use a Rose application:

  • If you want to configure fortran namelists.
  • If you need to install files from external repositories / sources.
  • If your inputs require documentation and validation.
  • If you want to isolate the resources required for a model execution into a bundle you can more easily execute inside or outside of Cylc.

Complex tasks, such as numerical models often benefit from being wrapped up into Rose applications. Simple tasks such as housekeep tasks, generally don’t require these things.

My advice would be to use Rose application configurations only where there is a benefit to doing so, rather than using one for every task in the workflow.

Rose App Command Keys:

Rose applications can have multiple commands configured to allow them to do different things, e.g:

[command]
default=echo 'this is run by default'
alternate=echo 'this is run instead if the "alternate" command key is specified'

A short tutorial can be found here: Command Keys — Rose Documentation 2.4.0 documentation

Command keys can be useful if your task has multiple “modes” which can be easily toggled between, just by changing the command alone.

Rose Optional Configurations:

In some situations, you might need to change more than just the command to switch the application from running in one mode to another.

For example, your application might have a “live” mode for running within a Cylc workflow (where various inputs are passed through from Cylc), and a “development” mode for running outside of Cylc on the CLI (where more inputs must be specified by hand) and a “test” mode for running against canned data (where no inputs are required).

For this scenario, you might need to change more than just the command alone. Rose optional configurations are like include files for Rose configurations which are read in on request. They allow you to specify different commands, environment variables, namelists and files to run the application with.

There’s also a short tutorial on optional configurations: Optional Configurations — Rose Documentation 2.4.0 documentation

For a more practical example, the main tutorial takes a more complex task from a Cylc workflow and extracts it into a dedicated Rose application with an optional configuration for testing the application: Rose Applications — Rose Documentation 2.4.0 documentation

Thank you Oliver.Food for thought…