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