diff --git a/cset-workflow/includes/plot_spatial_mlevel_model_field.cylc b/cset-workflow/includes/plot_spatial_mlevel_model_field.cylc new file mode 100644 index 000000000..04d3fcb40 --- /dev/null +++ b/cset-workflow/includes/plot_spatial_mlevel_model_field.cylc @@ -0,0 +1,18 @@ +{% if PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD %} +[runtime] +{% for model_field in MODEL_LEVEL_MODEL_FIELDS %} +{% for mlevel in UM_MODEL_LEVELS %} + [[process_generic_mlevel_spatial_plot_sequence_{{model_field}}_{{mlevel}}]] + inherit = PARALLEL + [[[environment]]] + CSET_RECIPE_NAME = "generic_mlevel_spatial_plot_sequence.yaml" + CSET_ADDOPTS = "--VARNAME='{{model_field}}' --MLEVEL='{{mlevel}}'" + + [[collate_generic_mlevel_spatial_plot_sequence_{{model_field}}_{{mlevel}}]] + inherit = COLLATE + [[[environment]]] + CSET_RECIPE_NAME = "generic_mlevel_spatial_plot_sequence.yaml" + CSET_ADDOPTS = "--VARNAME='{{model_field}}' --MLEVEL='{{mlevel}}'" +{% endfor %} +{% endfor %} +{% endif %} diff --git a/cset-workflow/meta/rose-meta.conf b/cset-workflow/meta/rose-meta.conf index 564a5748e..78840dec3 100644 --- a/cset-workflow/meta/rose-meta.conf +++ b/cset-workflow/meta/rose-meta.conf @@ -578,6 +578,16 @@ trigger=template variables=PRESSURE_LEVEL_MODEL_FIELDS: True; compulsory=true sort-key=pressure1 +[template variables=PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD] +ns=Diagnostics +description=Create plots for the specified model level fields. +help=See includes/generic_spatial_mlevel_model_field.cylc +type=python_boolean +trigger=template variables=MODEL_LEVEL_MODEL_FIELDS: True; + template variables=UM_MODEL_LEVELS: True; +compulsory=true +sort-key=pressure1 + [template variables=PRESSURE_LEVEL_MODEL_FIELDS] ns=Diagnostics description=List of standard names of model fields on pressure levels to plot. diff --git a/cset-workflow/rose-suite.conf.example b/cset-workflow/rose-suite.conf.example index 2961b840f..53cbec68c 100644 --- a/cset-workflow/rose-suite.conf.example +++ b/cset-workflow/rose-suite.conf.example @@ -21,29 +21,45 @@ CSET_INPUT_FILE_PATH="" CSET_LOCAL_CSET_PATH="$HOME/CSET" CSET_RUNAHEAD_LIMIT=10 !!CSET_TIMES_PER_FILE=0 +DB_LONG_JOB=False DETERMINISTIC_PLOT_AGGREGATE_PRECIPITATION=False DETERMINISTIC_PLOT_CAPE_RATIO=False +DETERMINISTIC_PLOT_INFLOW_PROPERTIES=False DETERMINISTIC_PLOT_MODEL_LEVEL_AIR_TEMP=False DETERMINISTIC_PLOT_SURFACE_AIR_TEMP=False +DOMAIN_HISTOGRAM_SERIES_FIELD=False DOMAIN_MEAN_SURFACE_TIME_SERIES=False DOMAIN_MEAN_TIME_SERIES_STASH=False +DOMAIN_MEAN_VERTICAL_PROFILE_MODELLEVEL_SERIES=False +DOMAIN_MEAN_VERTICAL_PROFILE_SERIES=False +DOMAIN_SURFACE_HISTOGRAM_SERIES_FIELD=False ENSEMBLE_PLOT_SURFACE_AIR_TEMP=False FETCH_FCST_OPT_CONF="filesystem" HOUSEKEEPING_MODE=2 LFRIC_DOMAIN_MEAN_SURFACE_TIME_SERIES=False +LFRIC_DOMAIN_MEAN_VERTICAL_PROFILE_SERIES=False +LFRIC_MODEL_LEVELS=[] +LFRIC_MODEL_LEVEL_MODEL_FIELDS=[] +LFRIC_PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD=False +LFRIC_PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD=False LFRIC_PLOT_SPATIAL_SURFACE_MODEL_FIELD=False LFRIC_DOMAIN_MEAN_VERTICAL_PROFILE_SERIES=False LOGLEVEL="INFO" MEAN_HOURLY_ACCUMULATED_PRECIPITATION_ENSEMBLE_POSTAGE_STAMP_PLOT=False +METPLUS_ANA_DIR="" !!METPLUS_BASE="" !!METPLUS_OBS_DIR="" !!METPLUS_OPT_CONFIG_KEYS="" METPLUS_GRID_STAT=False +METPLUS_OBS_DIR="" +METPLUS_OPT_CONFIG_KEYS="" METPLUS_POINT_STAT=False !!MET_INSTALL_DIR="" !!MET_LIBRARIES="" +MODEL_LEVEL_MODEL_FIELDS=[] !!MODULES_LIST= !!MODULES_PURGE=True +PLOT_SPATIAL_MODEL_LEVEL_MODEL_FIELD=False PLOT_SPATIAL_PRESSURE_LEVEL_MODEL_FIELD=False PLOT_SPATIAL_STASH_FIELD=False PLOT_SPATIAL_SURFACE_MODEL_FIELD=False diff --git a/src/CSET/recipes/generic_mlevel_spatial_plot_sequence.yaml b/src/CSET/recipes/generic_mlevel_spatial_plot_sequence.yaml new file mode 100644 index 000000000..2b315f22a --- /dev/null +++ b/src/CSET/recipes/generic_mlevel_spatial_plot_sequence.yaml @@ -0,0 +1,32 @@ +category: Quick Look +title: $VARNAME $MLEVEL Level Spatial Plot +description: | + Extracts ands plots the $VARNAME from a file at model level $MLEVEL. + +parallel: + - operator: read.read_cubes + constraint: + operator: constraints.combine_constraints + variable_constraint: + operator: constraints.generate_var_constraint + varname: $VARNAME + validity_time_constraint: + operator: constraints.generate_time_constraint + time_start: $VALIDITY_TIME + model_level_constraint: + operator: constraints.generate_level_constraint + coordinate: "model_level_number" + levels: $MLEVEL + + - operator: write.write_cube_to_nc + filename: intermediate/model_level_field + +collate: + - operator: read.read_cube + filename_pattern: intermediate/*.nc + + - operator: plot.spatial_contour_plot + sequence_coordinate: time + + - operator: write.write_cube_to_nc + overwrite: True