Employing Task Parallelism to Facilitate Dynamic Comparison of Model Output
A major aspect of building the web interface was rewriting the CESM Ocean Model Working Group's (OMWG) model diagnostics c-shell driver scripts as a Python library. This was done mainly to simplify the process of running the diagnostics with user defined settings, but also to improve their usability, maintainability, robustness, and extensibility. Python was chosen in large part because it has extensive support for managing calls to shell utilities, which was crucial because the diagnostics depend very heavily on numerous shell and ncl scripts that would take an extensive amount of time to convert to Python. The library wraps the Swift parallel scripting language version of the diagnostics so that the NCL scripts at the core of the diagnostics can be run in parallel instead of serially. Functions for creating swift configurations were also built into the library to make working with swift easier. The web version takes full advantage of this by running independently configured jobs on every call and returning the results as either an archive, a styled folder, or a plain folder, depending on the URL. This flexibility was a major design goal in creating this tool, because that makes it easier for users to fit it into their workflow, which is key to any form of widespread adoption of the tool. We created a maintainable and highly documented web interface to the parallel version of CESM-OMWG diagnostics so that researchers outside of NCAR could more easily work with the CESM and so that researchers could extend this tool to other datasets and diagnostics, or build their own, thereby increasing public access to both data and the tools used to understand it.