From 1c35728e1eef796657529e1518bc23b8ee938a5c Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Mon, 19 Jan 2026 15:57:58 +0000 Subject: [PATCH 01/32] incremenental with core working --- build/extract/get_git_sources.py | 186 +++++++++++++++++++++++++++++++ build/local_build.py | 95 ++++++---------- 2 files changed, 223 insertions(+), 58 deletions(-) create mode 100644 build/extract/get_git_sources.py diff --git a/build/extract/get_git_sources.py b/build/extract/get_git_sources.py new file mode 100644 index 0000000000..bd790dd18b --- /dev/null +++ b/build/extract/get_git_sources.py @@ -0,0 +1,186 @@ +# *****************************COPYRIGHT******************************* +# (C) Crown copyright Met Office. All rights reserved. +# For further details please refer to the file COPYRIGHT.txt +# which you should have received as part of this distribution. +# *****************************COPYRIGHT******************************* +""" +Clone sources for a rose-stem run for use with git bdiff module in scripts +""" + +import re +import subprocess +from typing import Optional +from pathlib import Path +from shutil import rmtree +import shlex + + +def get_source( + source: str, + ref: str, + dest: Path, + repo: str, + use_mirrors: bool = False, + mirror_loc: Path = "", +) -> None: + + if ".git" in source: + if use_mirrors: + mirror_loc = Path(mirror_loc) / "MetOffice" / repo + print(f"Cloning/Updating {repo} from {mirror_loc} at ref {ref}") + clone_repo_mirror(source, repo, mirror_loc, dest) + else: + print(f"Cloning/Updating {repo} from {source} at ref {ref}") + clone_repo(source, ref, dest) + else: + print(f"Syncing {repo} at ref {ref}") + sync_repo(source, ref, dest) + + +def run_command( + command: str, rval: bool = False, check: bool = True +) -> Optional[subprocess.CompletedProcess]: + """ + Run a subprocess command and return the result object + Inputs: + - command, str with command to run + Outputs: + - result object from subprocess.run + """ + command = shlex.split(command) + result = subprocess.run( + command, + capture_output=True, + text=True, + timeout=300, + shell=False, + check=False, + ) + if check and result.returncode: + print(result.stdout, end="\n\n\n") + raise RuntimeError( + f"[FAIL] Issue found running command {command}\n\n{result.stderr}" + ) + if rval: + return result + + +def clone_repo_mirror( + source: str, repo_ref: str, parent: str, mirror_loc: Path, loc: Path +) -> None: + """ + Clone a repo source using a local git mirror. + Assume the mirror is set up as per the Met Office + """ + + # Remove if this clone already exists + if not loc.exists(): + command = f"git clone {mirror_loc} {loc}" + run_command(command) + + # If not provided a ref, return + if not repo_ref: + run_command(f"git -C {loc} pull") + return + + source = source.removeprefix("git@github.com:") + user = source.split("/")[0] + # Check that the user is different to the Upstream User + if user in parent.split("/")[0]: + user = None + + # If the ref is a hash then we don't need the fork user as part of the fetch. + # Equally, if the user is the Upstream User, it's not needed + if not user or re.match(r"^\s*([0-9a-f]{40})\s*$", repo_ref): + fetch = repo_ref + else: + fetch = f"{user}/{repo_ref}" + commands = ( + f"git -C {loc} fetch origin {fetch}", + f"git -C {loc} checkout FETCH_HEAD", + ) + for command in commands: + run_command(command) + + +def clone_repo(repo_source: str, repo_ref: str, loc: Path) -> None: + """ + Clone the repo and checkout the provided ref + Only if a remote source + """ + + # Remove if this clone already exists + if not loc.exists(): + # Create a clean clone location + loc.mkdir(parents=True) + + commands = ( + f"git -C {loc} init", + f"git -C {loc} remote add origin {repo_source}", + f"git -C {loc} fetch origin {repo_ref}", + f"git -C {loc} checkout FETCH_HEAD", + f"git -C {loc} fetch origin main:main", + ) + for command in commands: + run_command(command) + else: + commands = ( + f"git -C {loc} fetch origin {repo_ref}", + f"git -C {loc} checkout FETCH_HEAD", + ) + for command in commands: + run_command(command) + + +def sync_repo(repo_source: str, repo_ref: str, loc: Path) -> None: + """ + Rsync a local git clone and checkout the provided ref + """ + + # Remove if this clone already exists + if loc.exists(): + rmtree(loc) + + # Create a clean clone location + loc.mkdir(parents=True) + + exclude_dirs = ( + "applications/*/working", + "applications/*/test", + "applications/*/bin", + "science/*/working", + "science/*/test", + "science/*/bin", + "interfaces/*/working", + "interfaces/*/test", + "interfaces/*/bin", + "components/*/working", + "components/*/test", + "components/*/bin", + "infrastructure/*/working", + "infrastructure/*/test", + "infrastructure/*/bin", + "mesh_tools/*/working", + "mesh_tools/*/test", + "mesh_tools/*/bin", + ) + + # Trailing slash required for rsync + command = f"rsync -av {repo_source}/ {loc}" + for item in exclude_dirs: + command = f"{command} --exclude '{item}'" + run_command(command) + + # Fetch the main branch from origin + # Ignore errors - these are likely because the main branch already exists + # Instead write them as warnings + command = f"git -C {loc} fetch origin main:main" + result = run_command(command, check=False, rval=True) + if result.returncode: + print("Warning - fetching main from origin resulted in an error") + print("This is likely due to the main branch already existing") + print(f"Error message:\n\n{result.stderr}") + + if repo_ref: + command = f"git -C {loc} checkout {repo_ref}" + run_command(command) diff --git a/build/local_build.py b/build/local_build.py index 2c9d445e48..03212b3df2 100755 --- a/build/local_build.py +++ b/build/local_build.py @@ -17,6 +17,8 @@ import subprocess import argparse import yaml +from pathlib import Path +from extract.get_git_sources import get_source def subprocess_run(command): @@ -45,7 +47,7 @@ def get_root_path(): Get the root path of the current working copy """ - return os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + return Path(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) def determine_core_source(root_dir): @@ -56,7 +58,7 @@ def determine_core_source(root_dir): # Read through the dependencies file and populate revision and source # variables for requested repo - with open(os.path.join(root_dir, "dependencies.yaml"), "r") as stream: + with open(root_dir / "dependencies.yaml", "r") as stream: dependencies = yaml.safe_load(stream) return dependencies["lfric_core"] @@ -70,9 +72,9 @@ def determine_project_path(project, root_dir): # Find the project in either science/ interfaces/ or applications/ for drc in ["science/", "interfaces/", "applications/"]: - path = os.path.join(root_dir, drc) + path = root_dir / drc for item in os.listdir(path): - item_path = os.path.join(path, item) + item_path = path / item if item_path and item == project: return item_path @@ -82,45 +84,6 @@ def determine_project_path(project, root_dir): ) -def clone_dependency(values, temp_dep): - """ - Clone the physics dependencies into a temporary directory - """ - - source = values["source"] - ref = values["ref"] - - commands = ( - f"git -C {temp_dep} init", - f"git -C {temp_dep} remote add origin {source}", - f"git -C {temp_dep} fetch origin {ref}", - f"git -C {temp_dep} checkout FETCH_HEAD" - ) - for command in commands: - subprocess_run(command) - - -def get_lfric_core(core_source, working_dir): - """ - Clone the lfric_core source if the source is a git url - rsync this export into the working dir as the lfric_core source - done so - incremental builds can still be used. - If core_source is a local working copy just rsync from there. - """ - - if core_source["source"].endswith(".git"): - print("Cloning LFRic Core from Github") - lfric_core_loc = f"{working_dir}/scratch/core" - clone_dependency(core_source["source"], core_source["ref"], lfric_core_loc) - print("rsyncing the exported lfric_core source") - else: - lfric_core_loc = core_source["source"] - print("rsyncing the local lfric_core source") - - rsync_command = f"rsync -acvzq {lfric_core_loc}/ {working_dir}/lfric_core" - subprocess_run(rsync_command) - - def build_makefile( root_dir, project_path, @@ -140,13 +103,13 @@ def build_makefile( if target == "clean": working_path = working_dir else: - working_path = os.path.join(working_dir, f"{target}_{project}") + working_path = working_dir / f"{target}_{project}" print(f"Calling make command for makefile at {project_path}") make_command = ( f"make {target} -C {project_path} -j {ncores} " f"WORKING_DIR={working_path} " - f"CORE_ROOT_DIR={working_dir}/lfric_core " + f"CORE_ROOT_DIR={working_dir / 'scratch' / 'lfric_core'} " f"APPS_ROOT_DIR={root_dir} " ) if optlevel: @@ -171,14 +134,24 @@ def main(): ) parser.add_argument( "project", - help="project to build. Will search in both " - "science and projects dirs.", + help="project to build. Will search in both " "science and projects dirs.", ) parser.add_argument( "-c", "--core_source", default=None, - help="Source for lfric_core. Defaults to looking in " "dependencies file.", + help="Source for lfric_core. Defaults to looking in dependencies file.", + ) + parser.add_argument( + "-m", + "--mirrors", + action="store_true", + help="If true, attempts to use local git mirrors", + ) + parser.add_argument( + "--mirror_loc", + default="/data/users/gitassist/git_mirrors", + help="Location of github mirrors", ) parser.add_argument( "-w", @@ -237,24 +210,30 @@ def main(): # Set the working dir default of the project directory if not args.working_dir: - args.working_dir = os.path.join(project_path, "working") + args.working_dir = Path(project_path) / "working" else: # If the working dir doesn't end in working, set that here if not args.working_dir.strip("/").endswith("working"): - args.working_dir = os.path.join(args.working_dir, "working") - # Ensure that working_dir is an absolute path - args.working_dir = os.path.abspath(args.working_dir) - # Create the working_dir - subprocess_run(f"mkdir -p {args.working_dir}") + args.working_dir = Path(args.working_dir) / "working" + # Ensure that working_dir is an absolute path and make the directory + args.working_dir = args.working_dir.resolve() + args.working_dir.mkdir(parents=True, exist_ok=True) # Determine the core source if not provided if args.core_source is None: core_source = determine_core_source(root_dir) else: - core_source = {"source": args.core_source} - - # Export and rsync the lfric_core source - get_lfric_core(core_source, args.working_dir) + core_source = {"source": args.core_source, "ref": ""} + + # Clone/Sync the lfric core source + get_source( + core_source["source"], + core_source["ref"], + args.working_dir / "scratch" / "lfric_core", + "lfric_core", + use_mirrors=args.mirrors, + mirror_loc=args.mirror_loc, + ) # Build the makefile build_makefile( From cc1d00d689c31b1e640697db939b830e8b815823 Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Tue, 20 Jan 2026 10:17:41 +0000 Subject: [PATCH 02/32] incremental physics builds --- applications/lfric_atm/Makefile | 2 +- applications/lfric_coupled/Makefile | 2 +- applications/ngarch/Makefile | 2 +- build/extract/extract_physics.mk | 4 +- build/extract/extract_science.py | 63 +++++++++---------- build/extract/get_git_sources.py | 2 +- build/local_build.py | 21 +++---- interfaces/jules_interface/build/import.mk | 2 +- interfaces/socrates_interface/build/import.mk | 2 +- 9 files changed, 43 insertions(+), 57 deletions(-) diff --git a/applications/lfric_atm/Makefile b/applications/lfric_atm/Makefile index 98f689dee1..b7dd2db487 100644 --- a/applications/lfric_atm/Makefile +++ b/applications/lfric_atm/Makefile @@ -75,7 +75,7 @@ build: export BIN_DIR ?= $(PROJECT_DIR)/bin build: export CXX_LINK = YES build: export PROGRAMS := $(basename $(notdir $(shell find source -maxdepth 1 -name '*.[Ff]90' -exec egrep -l "^\s*program" {} \;))) build: export PROJECT = lfric_atm -build: export SCRATCH_DIR := $(WORKING_DIR)/../physics_scratch +build: export SCRATCH_DIR := $(WORKING_DIR)/.. build: export WORKING_DIR := $(WORKING_DIR) build: export LDFLAGS_GROUPS = OPENMP diff --git a/applications/lfric_coupled/Makefile b/applications/lfric_coupled/Makefile index bf65bb5d73..cdd86b3573 100644 --- a/applications/lfric_coupled/Makefile +++ b/applications/lfric_coupled/Makefile @@ -102,7 +102,7 @@ document-api: api-documentation build: export BIN_DIR ?= $(PROJECT_DIR)/bin build: export CXX_LINK = TRUE build: export PROGRAMS := $(basename $(notdir $(shell find source -maxdepth 1 -name '*.[Ff]90' -print))) -build: export SCRATCH_DIR := $(WORKING_DIR)/../physics_scratch +build: export SCRATCH_DIR := $(WORKING_DIR)/.. build: export PROJECT = $(PROJECT_NAME) build: export WORKING_DIR := $(WORKING_DIR)/$(PROJECT_NAME) diff --git a/applications/ngarch/Makefile b/applications/ngarch/Makefile index 9fa6855606..8b2a323007 100644 --- a/applications/ngarch/Makefile +++ b/applications/ngarch/Makefile @@ -100,7 +100,7 @@ document-api: api-documentation build: export BIN_DIR ?= $(PROJECT_DIR)/bin build: export CXX_LINK = TRUE build: export PROGRAMS := $(basename $(notdir $(shell find source -maxdepth 1 -name '*.[Ff]90' -print))) -build: export SCRATCH_DIR := $(WORKING_DIR)/../physics_scratch +build: export SCRATCH_DIR := $(WORKING_DIR)/.. build: export PROJECT = $(PROJECT_NAME) build: export WORKING_DIR := $(WORKING_DIR) diff --git a/build/extract/extract_physics.mk b/build/extract/extract_physics.mk index a4df2535b1..9f8c60e3fc 100644 --- a/build/extract/extract_physics.mk +++ b/build/extract/extract_physics.mk @@ -21,6 +21,6 @@ extract: # Retrieve and preprocess the UKCA and CASIM code python $(APPS_ROOT_DIR)/build/extract/extract_science.py -d $(APPS_ROOT_DIR)/dependencies.yaml -w $(SCRATCH_DIR) -e $(APPS_ROOT_DIR)/build/extract/extract.yaml - $Qrsync -acvz $(SCRATCH_DIR)/ukca $(WORKING_DIR)/science/ - $Qrsync -acvz $(SCRATCH_DIR)/casim $(WORKING_DIR)/science/ + $Qrsync -acvz $(SCRATCH_DIR)/scratch/ukca $(WORKING_DIR)/science/ + $Qrsync -acvz $(SCRATCH_DIR)/scratch/casim $(WORKING_DIR)/science/ diff --git a/build/extract/extract_science.py b/build/extract/extract_science.py index 042fe6f32d..dea2959748 100755 --- a/build/extract/extract_science.py +++ b/build/extract/extract_science.py @@ -1,11 +1,11 @@ import argparse import subprocess import os -import tempfile import yaml -from shutil import rmtree from pathlib import Path from typing import Dict, List +from get_git_sources import get_source +import shlex def run_command(command): @@ -14,7 +14,7 @@ def run_command(command): Inputs: - command, str with command to run """ - command = command.split() + command = shlex.split(command) result = subprocess.run( command, capture_output=True, @@ -40,24 +40,6 @@ def load_yaml(fpath: Path) -> Dict: return sources -def clone_dependency(values: Dict, temp_dep: Path) -> None: - """ - Clone the physics dependencies into a temporary directory - """ - - source = values["source"] - ref = values["ref"] - - commands = ( - f"git -C {temp_dep} init", - f"git -C {temp_dep} remote add origin {source}", - f"git -C {temp_dep} fetch origin {ref}", - f"git -C {temp_dep} checkout FETCH_HEAD" - ) - for command in commands: - run_command(command) - - def extract_files(dependency: str, values: Dict, files: List[str], working: Path): """ Clone the dependency to a temporary location @@ -65,30 +47,41 @@ def extract_files(dependency: str, values: Dict, files: List[str], working: Path Then delete the temporary directory """ - tempdir = Path(tempfile.mkdtemp()) + use_mirrors: bool = (os.getenv('LOCAL_BUILD_MIRRORS', 'False') == 'True') + mirror_loc: Path = os.getenv("MIRROR_LOC") + if ( "PHYSICS_ROOT" not in os.environ or not Path(os.environ["PHYSICS_ROOT"]).exists() ): - temp_dep = tempdir / dependency - temp_dep.mkdir(parents=True) - clone_dependency(values, temp_dep) + clone_loc = working / "clones" / dependency + get_source( + values["source"], + values["ref"], + clone_loc, + dependency, + use_mirrors, + mirror_loc + ) else: - temp_dep = Path(os.environ["PHYSICS_ROOT"]) / dependency + clone_loc = Path(os.environ["PHYSICS_ROOT"]) / dependency - working_dep = working / dependency + working_dep = working / "scratch" / dependency # make the working directory location - working_dep.mkdir(parents=True) + working_dep.mkdir(parents=True, exist_ok=True) + # rsync extract files from clone loc to the working directory + copy_command = "rsync --include='**/' " for extract_file in files: - source_file = temp_dep / extract_file - dest_file = working_dep / extract_file - run_command(f"mkdir -p {dest_file.parents[0]}") - copy_command = f"cp -r {source_file} {dest_file}" - run_command(copy_command) - - rmtree(tempdir) + if not extract_file: + continue + if Path(clone_loc / extract_file).is_dir(): + extract_file = extract_file.rstrip("/") + extract_file += "/**" + copy_command += f"--include='{extract_file}' " + copy_command += f"--exclude='*' -avmq {clone_loc}/ {working_dep}" + run_command(copy_command) def parse_args() -> argparse.Namespace: diff --git a/build/extract/get_git_sources.py b/build/extract/get_git_sources.py index bd790dd18b..2c46108fb0 100644 --- a/build/extract/get_git_sources.py +++ b/build/extract/get_git_sources.py @@ -27,7 +27,7 @@ def get_source( if ".git" in source: if use_mirrors: mirror_loc = Path(mirror_loc) / "MetOffice" / repo - print(f"Cloning/Updating {repo} from {mirror_loc} at ref {ref}") + print(f"Cloning/Updating {repo} from mirror {mirror_loc} at ref {ref}") clone_repo_mirror(source, repo, mirror_loc, dest) else: print(f"Cloning/Updating {repo} from {source} at ref {ref}") diff --git a/build/local_build.py b/build/local_build.py index 03212b3df2..c4cfde0394 100755 --- a/build/local_build.py +++ b/build/local_build.py @@ -93,7 +93,6 @@ def build_makefile( target, optlevel, psyclone, - um_fcm_platform, verbose, ): """ @@ -116,8 +115,6 @@ def build_makefile( make_command += f"PROFILE={optlevel} " if psyclone: make_command += f"PSYCLONE_TRANSFORMATION={psyclone} " - if um_fcm_platform: - make_command += f"UM_FCM_TARGET_PLATFORM={um_fcm_platform} " if verbose: make_command += "VERBOSE=1 " @@ -186,14 +183,6 @@ def main(): help="Value passed to PSYCLONE_TRANSFORMATION variable in makefile. " "Defaults to the makefile default", ) - parser.add_argument( - "-u", - "--um_fcm_platform", - default=None, - help="Value passed to UM_FCM_TARGET_PLATFORM variable in makefile, " - "used for build settings for extracted UM physics. Defaults to the " - "makefile default.", - ) parser.add_argument( "-v", "--verbose", @@ -202,6 +191,11 @@ def main(): ) args = parser.parse_args() + # If using mirrors, set environment variable for science extract step + if args.mirrors: + os.environ["USE_MIRRORS"] = True + os.environ["LOCAL_BUILD_MIRRORS"] = args.mirror_loc + # Find the root directory of the working copy root_dir = get_root_path() @@ -231,8 +225,8 @@ def main(): core_source["ref"], args.working_dir / "scratch" / "lfric_core", "lfric_core", - use_mirrors=args.mirrors, - mirror_loc=args.mirror_loc, + args.mirrors, + args.mirror_loc, ) # Build the makefile @@ -245,7 +239,6 @@ def main(): args.target, args.optlevel, args.psyclone, - args.um_fcm_platform, args.verbose, ) diff --git a/interfaces/jules_interface/build/import.mk b/interfaces/jules_interface/build/import.mk index bb1c8870ba..bfc1bff973 100644 --- a/interfaces/jules_interface/build/import.mk +++ b/interfaces/jules_interface/build/import.mk @@ -9,7 +9,7 @@ export PROJECT_SOURCE = $(APPS_ROOT_DIR)/interfaces/jules_interface/source import-jules_interface: # Get a copy of the source code from the JULES repository python $(APPS_ROOT_DIR)/build/extract/extract_science.py -d $(APPS_ROOT_DIR)/dependencies.yaml -w $(SCRATCH_DIR) -e $(APPS_ROOT_DIR)/interfaces/jules_interface/build/extract.yaml - $Qrsync -acvz $(SCRATCH_DIR)/jules $(WORKING_DIR)/ + $Qrsync -acvz $(SCRATCH_DIR)/scratch/jules $(WORKING_DIR)/ # Extract the interface code $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \ diff --git a/interfaces/socrates_interface/build/import.mk b/interfaces/socrates_interface/build/import.mk index 35e5a09b3f..fa488ad748 100644 --- a/interfaces/socrates_interface/build/import.mk +++ b/interfaces/socrates_interface/build/import.mk @@ -9,7 +9,7 @@ export PROJECT_SOURCE = $(APPS_ROOT_DIR)/interfaces/socrates_interface/source import-socrates_interface: # Get a copy of the source code from the SCORATES repository python $(APPS_ROOT_DIR)/build/extract/extract_science.py -d $(APPS_ROOT_DIR)/dependencies.yaml -w $(SCRATCH_DIR) -e $(APPS_ROOT_DIR)/interfaces/socrates_interface/build/extract.yaml - $Qrsync -acvz $(SCRATCH_DIR)/socrates $(WORKING_DIR)/ + $Qrsync -acvz $(SCRATCH_DIR)/scratch/socrates $(WORKING_DIR)/ # Extract the interface code $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \ From 132ccf8c799a6ee76344d1ea8ae37804353f5c75 Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Tue, 20 Jan 2026 14:31:11 +0000 Subject: [PATCH 03/32] incremental builds --- applications/lfric_atm/build/compile_options.mk | 3 ++- build/extract/extract_physics.mk | 5 +---- build/extract/extract_science.py | 12 ++++++------ interfaces/jules_interface/build/import.mk | 3 +-- interfaces/socrates_interface/build/import.mk | 3 +-- 5 files changed, 11 insertions(+), 15 deletions(-) diff --git a/applications/lfric_atm/build/compile_options.mk b/applications/lfric_atm/build/compile_options.mk index 143f09ae6c..842a61d608 100644 --- a/applications/lfric_atm/build/compile_options.mk +++ b/applications/lfric_atm/build/compile_options.mk @@ -13,7 +13,8 @@ $(info UM physics specific compile options) include $(PROJECT_DIR)/build/fortran/$(FORTRAN_COMPILER).mk -science/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +casim/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +ukca/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) jules/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) socrates/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) legacy/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) diff --git a/build/extract/extract_physics.mk b/build/extract/extract_physics.mk index 9f8c60e3fc..7e43cd1b05 100644 --- a/build/extract/extract_physics.mk +++ b/build/extract/extract_physics.mk @@ -20,7 +20,4 @@ extract: # Retrieve and preprocess the UKCA and CASIM code - python $(APPS_ROOT_DIR)/build/extract/extract_science.py -d $(APPS_ROOT_DIR)/dependencies.yaml -w $(SCRATCH_DIR) -e $(APPS_ROOT_DIR)/build/extract/extract.yaml - $Qrsync -acvz $(SCRATCH_DIR)/scratch/ukca $(WORKING_DIR)/science/ - $Qrsync -acvz $(SCRATCH_DIR)/scratch/casim $(WORKING_DIR)/science/ - + python $(APPS_ROOT_DIR)/build/extract/extract_science.py -d $(APPS_ROOT_DIR)/dependencies.yaml -w $(WORKING_DIR) -e $(APPS_ROOT_DIR)/build/extract/extract.yaml diff --git a/build/extract/extract_science.py b/build/extract/extract_science.py index dea2959748..5bde7a8348 100755 --- a/build/extract/extract_science.py +++ b/build/extract/extract_science.py @@ -54,7 +54,7 @@ def extract_files(dependency: str, values: Dict, files: List[str], working: Path "PHYSICS_ROOT" not in os.environ or not Path(os.environ["PHYSICS_ROOT"]).exists() ): - clone_loc = working / "clones" / dependency + clone_loc = working / ".." / "scratch" / dependency get_source( values["source"], values["ref"], @@ -66,10 +66,10 @@ def extract_files(dependency: str, values: Dict, files: List[str], working: Path else: clone_loc = Path(os.environ["PHYSICS_ROOT"]) / dependency - working_dep = working / "scratch" / dependency # make the working directory location - working_dep.mkdir(parents=True, exist_ok=True) + working_dir = working / dependency + working_dir.mkdir(parents=True, exist_ok=True) # rsync extract files from clone loc to the working directory copy_command = "rsync --include='**/' " @@ -80,7 +80,7 @@ def extract_files(dependency: str, values: Dict, files: List[str], working: Path extract_file = extract_file.rstrip("/") extract_file += "/**" copy_command += f"--include='{extract_file}' " - copy_command += f"--exclude='*' -avmq {clone_loc}/ {working_dep}" + copy_command += f"--exclude='*' -avmq {clone_loc}/ {working_dir}" run_command(copy_command) @@ -94,10 +94,10 @@ def parse_args() -> argparse.Namespace: "-d", "--dependencies", default="./dependencies.yaml", - help="The dependencies file for the apps working copy.", + help="The dependencies file for the apps working copy", ) parser.add_argument( - "-w", "--working", default=".", help="Location to perform extract steps in." + "-w", "--working", default=".", help="Build location" ) parser.add_argument( "-e", diff --git a/interfaces/jules_interface/build/import.mk b/interfaces/jules_interface/build/import.mk index bfc1bff973..73b35d2891 100644 --- a/interfaces/jules_interface/build/import.mk +++ b/interfaces/jules_interface/build/import.mk @@ -8,8 +8,7 @@ export PROJECT_SOURCE = $(APPS_ROOT_DIR)/interfaces/jules_interface/source .PHONY: import-jules_interface import-jules_interface: # Get a copy of the source code from the JULES repository - python $(APPS_ROOT_DIR)/build/extract/extract_science.py -d $(APPS_ROOT_DIR)/dependencies.yaml -w $(SCRATCH_DIR) -e $(APPS_ROOT_DIR)/interfaces/jules_interface/build/extract.yaml - $Qrsync -acvz $(SCRATCH_DIR)/scratch/jules $(WORKING_DIR)/ + python $(APPS_ROOT_DIR)/build/extract/extract_science.py -d $(APPS_ROOT_DIR)/dependencies.yaml -w $(WORKING_DIR) -e $(APPS_ROOT_DIR)/interfaces/jules_interface/build/extract.yaml # Extract the interface code $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \ diff --git a/interfaces/socrates_interface/build/import.mk b/interfaces/socrates_interface/build/import.mk index fa488ad748..a12f78739f 100644 --- a/interfaces/socrates_interface/build/import.mk +++ b/interfaces/socrates_interface/build/import.mk @@ -8,8 +8,7 @@ export PROJECT_SOURCE = $(APPS_ROOT_DIR)/interfaces/socrates_interface/source .PHONY: import-socrates_interface import-socrates_interface: # Get a copy of the source code from the SCORATES repository - python $(APPS_ROOT_DIR)/build/extract/extract_science.py -d $(APPS_ROOT_DIR)/dependencies.yaml -w $(SCRATCH_DIR) -e $(APPS_ROOT_DIR)/interfaces/socrates_interface/build/extract.yaml - $Qrsync -acvz $(SCRATCH_DIR)/scratch/socrates $(WORKING_DIR)/ + python $(APPS_ROOT_DIR)/build/extract/extract_science.py -d $(APPS_ROOT_DIR)/dependencies.yaml -w $(WORKING_DIR) -e $(APPS_ROOT_DIR)/interfaces/socrates_interface/build/extract.yaml # Extract the interface code $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \ From 82f3795839762d771f25e5a6509201cb7e6f7a41 Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Tue, 20 Jan 2026 15:02:44 +0000 Subject: [PATCH 04/32] minor changes --- applications/jules/build/compile_options.mk | 3 ++- applications/lfric_coupled/build/compile_options.mk | 3 ++- applications/ngarch/build/compile_options.mk | 3 ++- build/extract/get_git_sources.py | 2 +- build/local_build.py | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/applications/jules/build/compile_options.mk b/applications/jules/build/compile_options.mk index bf4bad5395..3ab2dcbf31 100644 --- a/applications/jules/build/compile_options.mk +++ b/applications/jules/build/compile_options.mk @@ -13,7 +13,8 @@ $(info UM physics specific compile options) include $(PROJECT_DIR)/build/fortran/$(FORTRAN_COMPILER).mk -science/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +casim/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +ukca/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) jules/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) socrates/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) legacy/%.o: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) diff --git a/applications/lfric_coupled/build/compile_options.mk b/applications/lfric_coupled/build/compile_options.mk index 10ad895f28..9623d56e15 100644 --- a/applications/lfric_coupled/build/compile_options.mk +++ b/applications/lfric_coupled/build/compile_options.mk @@ -9,7 +9,8 @@ $(info UM physics specific compile options for $(FORTRAN_COMPILER) compiler) include $(PROJECT_DIR)/build/fortran/$(FORTRAN_COMPILER).mk -science/%.o science/%.mod: private FFLAGS_EXTRA += $(FFLAGS_UM_PHYSICS) +casim/%.o science/%.mod: private FFLAGS_EXTRA += $(FFLAGS_UM_PHYSICS) +ukca/%.o science/%.mod: private FFLAGS_EXTRA += $(FFLAGS_UM_PHYSICS) jules/%.o jules/%.mod: private FFLAGS_EXTRA += $(FFLAGS_UM_PHYSICS) socrates/%.o socrates/%.mod: private FFLAGS_EXTRA += $(FFLAGS_UM_PHYSICS) legacy/%.o legacy/%.mod: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) diff --git a/applications/ngarch/build/compile_options.mk b/applications/ngarch/build/compile_options.mk index 810698d656..4ef9b69bdd 100644 --- a/applications/ngarch/build/compile_options.mk +++ b/applications/ngarch/build/compile_options.mk @@ -13,7 +13,8 @@ $(info UM physics specific compile options) include $(PROJECT_DIR)/build/fortran/$(FORTRAN_COMPILER).mk -science/%.o science/%.mod: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +casim/%.o science/%.mod: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) +ukca/%.o science/%.mod: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) jules/%.o jules/%.mod: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) socrates/%.o socrates/%.mod: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) legacy/%.o legacy/%.mod: private FFLAGS_EXTRA = $(FFLAGS_UM_PHYSICS) diff --git a/build/extract/get_git_sources.py b/build/extract/get_git_sources.py index 2c46108fb0..ef890f8953 100644 --- a/build/extract/get_git_sources.py +++ b/build/extract/get_git_sources.py @@ -28,7 +28,7 @@ def get_source( if use_mirrors: mirror_loc = Path(mirror_loc) / "MetOffice" / repo print(f"Cloning/Updating {repo} from mirror {mirror_loc} at ref {ref}") - clone_repo_mirror(source, repo, mirror_loc, dest) + clone_repo_mirror(source, ref, repo, mirror_loc, dest) else: print(f"Cloning/Updating {repo} from {source} at ref {ref}") clone_repo(source, ref, dest) diff --git a/build/local_build.py b/build/local_build.py index c4cfde0394..864052cc5e 100755 --- a/build/local_build.py +++ b/build/local_build.py @@ -193,7 +193,7 @@ def main(): # If using mirrors, set environment variable for science extract step if args.mirrors: - os.environ["USE_MIRRORS"] = True + os.environ["USE_MIRRORS"] = "True" os.environ["LOCAL_BUILD_MIRRORS"] = args.mirror_loc # Find the root directory of the working copy From 35903fb308c44f129e1d48122535c70354c008bd Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Tue, 20 Jan 2026 15:25:13 +0000 Subject: [PATCH 05/32] catch missing env var --- build/extract/extract_science.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/build/extract/extract_science.py b/build/extract/extract_science.py index 5bde7a8348..43f7a75811 100755 --- a/build/extract/extract_science.py +++ b/build/extract/extract_science.py @@ -48,7 +48,12 @@ def extract_files(dependency: str, values: Dict, files: List[str], working: Path """ use_mirrors: bool = (os.getenv('LOCAL_BUILD_MIRRORS', 'False') == 'True') - mirror_loc: Path = os.getenv("MIRROR_LOC") + mirror_loc: Path = os.getenv("MIRROR_LOC", "") + if not mirror_loc and use_mirrors: + raise KeyError( + "Use Mirrors is set true, but the MIRROR_LOC environment variable hasn't" + "been set" + ) if ( "PHYSICS_ROOT" not in os.environ From b6137e1f72a5673a8606808ee9e23654265a4ea2 Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Wed, 21 Jan 2026 14:15:56 +0000 Subject: [PATCH 06/32] update local build docs --- .../source/developer_guide/local_builds.rst | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/documentation/source/developer_guide/local_builds.rst b/documentation/source/developer_guide/local_builds.rst index 9e5bd9310e..c57f67e621 100644 --- a/documentation/source/developer_guide/local_builds.rst +++ b/documentation/source/developer_guide/local_builds.rst @@ -67,3 +67,19 @@ This table lists the command line arguments available: | | | will request verbose output | | | | from the makefile. | +----------------------+-----------------------------+-----------------------------+ +| ``-m --mirrors`` | False | If True, this will attempt | +| ``store_true`` | | to extract using local | +| | | github mirrors | ++----------------------+-----------------------------+-----------------------------+ +| ``--mirror-loc`` | MetOffice Mirror Location | The path to the github | +| | | mirror location | ++----------------------+-----------------------------+-----------------------------+ + +Incremental Builds +------------------ + +The local build script will attempt to build incrementally if a previous attempt +at the build exists. This should happen automatically if the working directory +is the same. If there are large changes then it may be sensible to start the +build afresh by cleaning the build ``-t clean`` (or deleting the working +directory). From 7500ed610246266dd7df186cb2ad2a65666719e4 Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Wed, 21 Jan 2026 17:06:13 +0000 Subject: [PATCH 07/32] review comments --- build/extract/extract_science.py | 8 +------- build/extract/get_git_sources.py | 33 ++++++++++++++++++++++++-------- build/local_build.py | 10 +++++----- 3 files changed, 31 insertions(+), 20 deletions(-) diff --git a/build/extract/extract_science.py b/build/extract/extract_science.py index 43f7a75811..3ab52c9c3b 100755 --- a/build/extract/extract_science.py +++ b/build/extract/extract_science.py @@ -47,13 +47,7 @@ def extract_files(dependency: str, values: Dict, files: List[str], working: Path Then delete the temporary directory """ - use_mirrors: bool = (os.getenv('LOCAL_BUILD_MIRRORS', 'False') == 'True') mirror_loc: Path = os.getenv("MIRROR_LOC", "") - if not mirror_loc and use_mirrors: - raise KeyError( - "Use Mirrors is set true, but the MIRROR_LOC environment variable hasn't" - "been set" - ) if ( "PHYSICS_ROOT" not in os.environ @@ -65,7 +59,7 @@ def extract_files(dependency: str, values: Dict, files: List[str], working: Path values["ref"], clone_loc, dependency, - use_mirrors, + bool(mirror_loc), mirror_loc ) else: diff --git a/build/extract/get_git_sources.py b/build/extract/get_git_sources.py index ef890f8953..2b5c1455be 100644 --- a/build/extract/get_git_sources.py +++ b/build/extract/get_git_sources.py @@ -4,7 +4,7 @@ # which you should have received as part of this distribution. # *****************************COPYRIGHT******************************* """ -Clone sources for a rose-stem run for use with git bdiff module in scripts +Helper functions for cloning git sources in command line builds """ import re @@ -66,25 +66,40 @@ def run_command( def clone_repo_mirror( - source: str, repo_ref: str, parent: str, mirror_loc: Path, loc: Path + repo_source: str, repo_ref: str, parent: str, mirror_loc: Path, loc: Path ) -> None: """ Clone a repo source using a local git mirror. Assume the mirror is set up as per the Met Office + - repo_source: ssh url of the source repository + - repo_ref: git ref for the source. An empty string will get the default branch + - parent: Owner of the github repository being cloned (required to construct the + mirror path) + - mirror_loc: path to the local git mirrors + - loc: path to clone the repository to """ - # Remove if this clone already exists - if not loc.exists(): + # If the repository exists and isn't a git repo, exit now as we don't want to + # overwrite it + if loc.exists(): + if not Path(loc / ".git").exists(): + raise RuntimeError( + f"The destination for the clone of {repo_source} already exists but " + "isn't a git directory. Exiting so as to not overwrite it." + ) + + # Clone if the repo doesn't exist + else: command = f"git clone {mirror_loc} {loc}" run_command(command) - # If not provided a ref, return + # If not provided a ref, pull the latest repository and return if not repo_ref: run_command(f"git -C {loc} pull") return - source = source.removeprefix("git@github.com:") - user = source.split("/")[0] + repo_source = repo_source.removeprefix("git@github.com:") + user = repo_source.split("/")[0] # Check that the user is different to the Upstream User if user in parent.split("/")[0]: user = None @@ -107,9 +122,11 @@ def clone_repo(repo_source: str, repo_ref: str, loc: Path) -> None: """ Clone the repo and checkout the provided ref Only if a remote source + - repo_source: ssh url of the source repository + - repo_ref: git ref for the source. An empty string will get the default branch + - loc: path to clone the repository to """ - # Remove if this clone already exists if not loc.exists(): # Create a clean clone location loc.mkdir(parents=True) diff --git a/build/local_build.py b/build/local_build.py index 864052cc5e..7c63d825a3 100755 --- a/build/local_build.py +++ b/build/local_build.py @@ -47,7 +47,7 @@ def get_root_path(): Get the root path of the current working copy """ - return Path(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + return Path(__file__).absolute().parent.parent def determine_core_source(root_dir): @@ -154,7 +154,8 @@ def main(): "-w", "--working_dir", default=None, - help="Working directory where builds occur. Default to the project " + type=Path, + help="Working directory where builds occur. Defaults to the project " "directory in the working copy.", ) parser.add_argument( @@ -193,8 +194,7 @@ def main(): # If using mirrors, set environment variable for science extract step if args.mirrors: - os.environ["USE_MIRRORS"] = "True" - os.environ["LOCAL_BUILD_MIRRORS"] = args.mirror_loc + os.environ["USE_MIRRORS"] = args.mirror_loc # Find the root directory of the working copy root_dir = get_root_path() @@ -207,7 +207,7 @@ def main(): args.working_dir = Path(project_path) / "working" else: # If the working dir doesn't end in working, set that here - if not args.working_dir.strip("/").endswith("working"): + if not args.working_dir.name == "working": args.working_dir = Path(args.working_dir) / "working" # Ensure that working_dir is an absolute path and make the directory args.working_dir = args.working_dir.resolve() From f48745e1230874431f68da473809c28912978fbf Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Thu, 22 Jan 2026 13:52:36 +0000 Subject: [PATCH 08/32] Update build/extract/extract_science.py Co-authored-by: Matthew Hambley --- build/extract/extract_science.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/extract/extract_science.py b/build/extract/extract_science.py index 3ab52c9c3b..32bbb1fc82 100755 --- a/build/extract/extract_science.py +++ b/build/extract/extract_science.py @@ -53,7 +53,7 @@ def extract_files(dependency: str, values: Dict, files: List[str], working: Path "PHYSICS_ROOT" not in os.environ or not Path(os.environ["PHYSICS_ROOT"]).exists() ): - clone_loc = working / ".." / "scratch" / dependency + clone_loc = working.parent / "scratch" / dependency get_source( values["source"], values["ref"], From 916e44a357383068c30c8c086cfc85bfcc745b5a Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Fri, 23 Jan 2026 08:07:59 +0000 Subject: [PATCH 09/32] add comment --- build/extract/get_git_sources.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build/extract/get_git_sources.py b/build/extract/get_git_sources.py index 2b5c1455be..230d9cc473 100644 --- a/build/extract/get_git_sources.py +++ b/build/extract/get_git_sources.py @@ -131,6 +131,8 @@ def clone_repo(repo_source: str, repo_ref: str, loc: Path) -> None: # Create a clean clone location loc.mkdir(parents=True) + # This process is equivalent to doing a git clone + # It saves a small amount of space by not fetching all refs commands = ( f"git -C {loc} init", f"git -C {loc} remote add origin {repo_source}", From cef776e6ffda022305ca91ac9e60826e462ade20 Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Tue, 27 Jan 2026 08:38:31 +0000 Subject: [PATCH 10/32] update default value --- build/extract/get_git_sources.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/extract/get_git_sources.py b/build/extract/get_git_sources.py index 230d9cc473..fc2ab2235e 100644 --- a/build/extract/get_git_sources.py +++ b/build/extract/get_git_sources.py @@ -21,7 +21,7 @@ def get_source( dest: Path, repo: str, use_mirrors: bool = False, - mirror_loc: Path = "", + mirror_loc: Path = Path(""), ) -> None: if ".git" in source: From e4069a5723b3684e815597055b119ce7f756692c Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Tue, 3 Feb 2026 08:03:36 +0000 Subject: [PATCH 11/32] Update build/local_build.py Co-authored-by: Sam Clarke-Green <74185251+t00sa@users.noreply.github.com> --- build/local_build.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/local_build.py b/build/local_build.py index 7c63d825a3..3fd9458eba 100755 --- a/build/local_build.py +++ b/build/local_build.py @@ -131,7 +131,7 @@ def main(): ) parser.add_argument( "project", - help="project to build. Will search in both " "science and projects dirs.", + help="project to build. Will search in both science and projects dirs.", ) parser.add_argument( "-c", From be64b1a52ddd73f66af716e93910b3a0765ebf64 Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Tue, 3 Feb 2026 10:14:06 +0000 Subject: [PATCH 12/32] pull in latest scripts changes --- build/extract/extract_science.py | 123 +++++------- build/extract/get_git_sources.py | 319 ++++++++++++++++++++++++------- build/local_build.py | 19 +- 3 files changed, 315 insertions(+), 146 deletions(-) diff --git a/build/extract/extract_science.py b/build/extract/extract_science.py index 32bbb1fc82..e636c9d275 100755 --- a/build/extract/extract_science.py +++ b/build/extract/extract_science.py @@ -1,35 +1,12 @@ import argparse -import subprocess import os import yaml from pathlib import Path -from typing import Dict, List -from get_git_sources import get_source -import shlex +from get_git_sources import clone_and_merge, run_command +import logging -def run_command(command): - """ - Run a subprocess command and check output - Inputs: - - command, str with command to run - """ - command = shlex.split(command) - result = subprocess.run( - command, - capture_output=True, - text=True, - timeout=120, - shell=False, - check=False, - ) - if result.returncode: - raise RuntimeError( - f"The command '{command}' failed with error:\n\n{result.stderr}" - ) - - -def load_yaml(fpath: Path) -> Dict: +def load_yaml(fpath: Path) -> dict: """ Read in the dependencies.yaml file """ @@ -40,47 +17,47 @@ def load_yaml(fpath: Path) -> Dict: return sources -def extract_files(dependency: str, values: Dict, files: List[str], working: Path): +def extract_files(dependencies: dict, extract_lists: dict, working: Path) -> None: """ Clone the dependency to a temporary location Then copy the desired files to the working directory Then delete the temporary directory """ - mirror_loc: Path = os.getenv("MIRROR_LOC", "") - - if ( - "PHYSICS_ROOT" not in os.environ - or not Path(os.environ["PHYSICS_ROOT"]).exists() - ): - clone_loc = working.parent / "scratch" / dependency - get_source( - values["source"], - values["ref"], - clone_loc, - dependency, - bool(mirror_loc), - mirror_loc - ) - else: - clone_loc = Path(os.environ["PHYSICS_ROOT"]) / dependency - - - # make the working directory location - working_dir = working / dependency - working_dir.mkdir(parents=True, exist_ok=True) - - # rsync extract files from clone loc to the working directory - copy_command = "rsync --include='**/' " - for extract_file in files: - if not extract_file: + mirror_loc = os.getenv("MIRROR_LOC", "") + use_mirrors = bool(mirror_loc) + mirror_loc = Path(mirror_loc) + + for dependency, sources in dependencies.items(): + if dependency not in extract_lists: continue - if Path(clone_loc / extract_file).is_dir(): - extract_file = extract_file.rstrip("/") - extract_file += "/**" - copy_command += f"--include='{extract_file}' " - copy_command += f"--exclude='*' -avmq {clone_loc}/ {working_dir}" - run_command(copy_command) + files = extract_lists[dependency] + + # If the PHYSICS_ROOT environment variable is provided, then use sources there + if ( + "PHYSICS_ROOT" in os.environ + and Path(os.environ["PHYSICS_ROOT"]).exists() + ): + clone_loc = Path(os.environ["PHYSICS_ROOT"]) / dependency + else: + clone_loc = working.parent / "scratch" / dependency + clone_and_merge(dependency, sources, clone_loc, use_mirrors, mirror_loc) + + # make the working directory location + working_dir = working / dependency + working_dir.mkdir(parents=True, exist_ok=True) + + # rsync extract files from clone loc to the working directory + copy_command = "rsync --include='**/' " + for extract_file in files: + if not extract_file: + continue + if Path(clone_loc / extract_file).is_dir(): + extract_file = extract_file.rstrip("/") + extract_file += "/**" + copy_command += f"--include='{extract_file}' " + copy_command += f"--exclude='*' -avmq {clone_loc}/ {working_dir}" + run_command(copy_command) def parse_args() -> argparse.Namespace: @@ -104,23 +81,25 @@ def parse_args() -> argparse.Namespace: default="./extract.yaml", help="Path to file containing extract lists", ) - return parser.parse_args() + + args = parser.parse_args() + args.working = Path(args.working) + return args def main(): args: argparse.Namespace = parse_args() - extract_lists: Dict = load_yaml(args.extract) - dependencies: Dict = load_yaml(args.dependencies) - - for dependency in dependencies: - if dependency in extract_lists: - extract_files( - dependency, - dependencies[dependency], - extract_lists[dependency], - Path(args.working), - ) + logging.basicConfig(level=logging.INFO) + + extract_lists: dict = load_yaml(args.extract) + dependencies: dict = load_yaml(args.dependencies) + + extract_files( + dependencies, + extract_lists, + args.working + ) if __name__ == "__main__": diff --git a/build/extract/get_git_sources.py b/build/extract/get_git_sources.py index fc2ab2235e..a1545bfcc0 100644 --- a/build/extract/get_git_sources.py +++ b/build/extract/get_git_sources.py @@ -1,18 +1,130 @@ -# *****************************COPYRIGHT******************************* +# ----------------------------------------------------------------------------- # (C) Crown copyright Met Office. All rights reserved. -# For further details please refer to the file COPYRIGHT.txt -# which you should have received as part of this distribution. -# *****************************COPYRIGHT******************************* +# The file LICENCE, distributed with this code, contains details of the terms +# under which the code may be used. +# ----------------------------------------------------------------------------- """ Helper functions for cloning git sources in command line builds """ import re import subprocess +from datetime import datetime from typing import Optional from pathlib import Path from shutil import rmtree import shlex +import logging + +logger = logging.getLogger(__name__) + + +def run_command( + command: str, check: bool = True, capture: bool = True, timeout: int = 600 +) -> Optional[subprocess.CompletedProcess]: + """ + Run a subprocess command and return the result object + Inputs: + - command, str with command to run + Outputs: + - result object from subprocess.run + """ + + args = shlex.split(command) + + try: + result = subprocess.run( + args, + capture_output=capture, + text=capture, + timeout=timeout, + shell=False, + check=False, + ) + if check and result.returncode != 0: + err_msg = (result.stderr or "").strip() + logger.error(f"[FAIL] Command failed: {command}\nError: {err_msg}") + raise subprocess.CalledProcessError( + result.returncode, args, output=result.stdout, stderr=result.stderr + ) + return result + + except (subprocess.TimeoutExpired, FileNotFoundError) as e: + logger.error(f"[FAIL] Execution error for '{args[0]}': {e}") + raise + + +def validate_dependencies(dependencies: dict) -> None: + """ + Check that the dependencies file dictionary matches format expectations. + Each dictionary value should be a list of dictionaries (or a single dictionary) + Those dictionaries should have a "source" and a "ref" key + """ + for item, values in dependencies.items(): + failed = False + if isinstance(values, dict): + values = [values] + if not isinstance(values, list): + failed = True + else: + for entry in values: + if not isinstance(entry, dict) or ( + "source" not in entry or "ref" not in entry + ): + failed = True + if failed: + raise ValueError( + f"The dependency {item} does not contain a list of dictionaries (or a " + "single dictionary) with keys of 'source' and 'ref'.\nPlease edit your " + "dependencies.yaml file to satisfy this." + ) + + +def datetime_str() -> str: + """ + Create and return a datetime string at the current time + """ + return datetime.now().strftime("%Y-%m-%d %H:%M:%S") + + +def clone_and_merge(dependency: str, opts: list | dict, loc: Path, use_mirrors: bool, mirror_loc: Path) -> None: + """ + Wrapper script for calling get_source and merge_source for a single dependency + + dependency: name of the dependency + opts: dict or list of dicts for a dependency in the dependencies file + loc: path to location to clone to + use_mirrors: bool, use local git mirrors if true + mirror_loc: path to local git mirrors + """ + + if not isinstance(opts, list): + opts = [opts] + + for i, values in enumerate(opts): + if values["ref"] is None: + values["ref"] = "" + + # Clone the first provided source + if i==0: + get_source( + values["source"], + values["ref"], + loc, + dependency, + use_mirrors, + mirror_loc + ) + # For all other sources, attempt to merge into the first + else: + merge_source( + values["source"], + values["ref"], + loc, + dependency, + use_mirrors, + mirror_loc, + ) def get_source( @@ -23,58 +135,116 @@ def get_source( use_mirrors: bool = False, mirror_loc: Path = Path(""), ) -> None: + """ + Call functions to clone or rsync git source + """ if ".git" in source: if use_mirrors: + logger.info( + f"[{datetime_str()}] Cloning {repo} from {mirror_loc} at ref {ref}" + ) mirror_loc = Path(mirror_loc) / "MetOffice" / repo - print(f"Cloning/Updating {repo} from mirror {mirror_loc} at ref {ref}") - clone_repo_mirror(source, ref, repo, mirror_loc, dest) + clone_repo_mirror(source, ref, mirror_loc, dest) else: - print(f"Cloning/Updating {repo} from {source} at ref {ref}") + logger.info(f"[{datetime_str()}] Cloning {repo} from {source} at ref {ref}") clone_repo(source, ref, dest) else: - print(f"Syncing {repo} at ref {ref}") + logger.info(f"[{datetime_str()}] Syncing {repo} at ref {ref}") sync_repo(source, ref, dest) -def run_command( - command: str, rval: bool = False, check: bool = True -) -> Optional[subprocess.CompletedProcess]: +def merge_source( + source: str, + ref: str, + dest: Path, + repo: str, + use_mirrors: bool = False, + mirror_loc: Path = Path(""), +) -> None: """ - Run a subprocess command and return the result object - Inputs: - - command, str with command to run - Outputs: - - result object from subprocess.run + Merge git source into a local git clone. Assumes dest is a git clone that this + source can be merged into. """ - command = shlex.split(command) - result = subprocess.run( - command, - capture_output=True, - text=True, - timeout=300, - shell=False, - check=False, + + logger.info( + f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] Merging " + f"{source} at ref {ref} into {repo}" ) - if check and result.returncode: - print(result.stdout, end="\n\n\n") + + if use_mirrors: + remote_path = Path(mirror_loc) / "MetOffice" / repo + else: + remote_path = source + run_command(f"git -C {dest} remote add local {remote_path}") + + if use_mirrors: + fetch = determine_mirror_fetch(source, ref) + else: + fetch = ref + + run_command(f"git -C {dest} fetch local {fetch}") + command = f"git -C {dest} merge --no-gpg-sign FETCH_HEAD" + result = run_command(command, check=False) + if result.returncode: + unmerged_files = get_unmerged(dest) + if unmerged_files: + handle_merge_conflicts(source, ref, dest, repo) + else: + raise subprocess.CalledProcessError( + result.returncode, command, result.stdout, result.stderr + ) + + # Remove the added remote + run_command(f"git -C {dest} remote remove local") + + +def handle_merge_conflicts(source: str, ref: str, loc: Path, dependency: str) -> None: + """ + If merge conflicts are in `rose-stem/` or `dependencies.yaml` then accept the + current changes and mark as resolved. + If others remain then raise an error + """ + + # For suites, merge conflicts in these files/directories are unimportant so accept + # the current changes + for filepath in ("dependencies.yaml", "rose-stem"): + logger.warning(f"Ignoring merge conflicts in {filepath}") + run_command(f"git -C {loc} checkout --ours -- {filepath}") + run_command(f"git -C {loc} add {filepath}") + + # Check if there are any remaining merge conflicts + unmerged = get_unmerged(loc) + if unmerged: + files = "\n".join(f for f in unmerged) raise RuntimeError( - f"[FAIL] Issue found running command {command}\n\n{result.stderr}" + "\nA merge conflict has been identified while merging the following branch " + f"into the {dependency} source:\n\nsource: {source}\nref: {ref}\n\n" + f"with conflicting files:{files}" + "\n\nThese will need changing in the source branches to be useable together" ) - if rval: - return result + + +def get_unmerged(loc: Path) -> list[str]: + """ + Return list of unmerged files in a git clone + """ + + files = run_command(f"git -C {loc} --no-pager diff --name-only --diff-filter=U") + return files.stdout.split() def clone_repo_mirror( - repo_source: str, repo_ref: str, parent: str, mirror_loc: Path, loc: Path + repo_source: str, + repo_ref: str, + mirror_loc: Path, + loc: Path, ) -> None: """ Clone a repo source using a local git mirror. Assume the mirror is set up as per the Met Office - repo_source: ssh url of the source repository - repo_ref: git ref for the source. An empty string will get the default branch - - parent: Owner of the github repository being cloned (required to construct the - mirror path) - mirror_loc: path to the local git mirrors - loc: path to clone the repository to """ @@ -98,10 +268,24 @@ def clone_repo_mirror( run_command(f"git -C {loc} pull") return + fetch = determine_mirror_fetch(repo_source, repo_ref) + commands = ( + f"git -C {loc} fetch origin {fetch}", + f"git -C {loc} checkout FETCH_HEAD", + ) + for command in commands: + run_command(command) + + +def determine_mirror_fetch(repo_source: str, repo_ref: str) -> str: + """ + Determine the fetch ref for the git mirrors + """ + repo_source = repo_source.removeprefix("git@github.com:") user = repo_source.split("/")[0] # Check that the user is different to the Upstream User - if user in parent.split("/")[0]: + if "MetOffice" in user: user = None # If the ref is a hash then we don't need the fork user as part of the fetch. @@ -110,12 +294,8 @@ def clone_repo_mirror( fetch = repo_ref else: fetch = f"{user}/{repo_ref}" - commands = ( - f"git -C {loc} fetch origin {fetch}", - f"git -C {loc} checkout FETCH_HEAD", - ) - for command in commands: - run_command(command) + + return fetch def clone_repo(repo_source: str, repo_ref: str, loc: Path) -> None: @@ -163,26 +343,15 @@ def sync_repo(repo_source: str, repo_ref: str, loc: Path) -> None: # Create a clean clone location loc.mkdir(parents=True) - exclude_dirs = ( - "applications/*/working", - "applications/*/test", - "applications/*/bin", - "science/*/working", - "science/*/test", - "science/*/bin", - "interfaces/*/working", - "interfaces/*/test", - "interfaces/*/bin", - "components/*/working", - "components/*/test", - "components/*/bin", - "infrastructure/*/working", - "infrastructure/*/test", - "infrastructure/*/bin", - "mesh_tools/*/working", - "mesh_tools/*/test", - "mesh_tools/*/bin", - ) + exclude_dirs = [] + host, path = repo_source.split(":", 1) + result = run_command(f"ssh {host} git -C {path} status --ignored -s") + for ignore_file in result.stdout.split("\n"): + ignore_file = ignore_file.strip() + if not ignore_file.startswith("!!"): + continue + ignore_file = ignore_file.removeprefix("!!").strip() + exclude_dirs.append(ignore_file) # Trailing slash required for rsync command = f"rsync -av {repo_source}/ {loc}" @@ -194,12 +363,34 @@ def sync_repo(repo_source: str, repo_ref: str, loc: Path) -> None: # Ignore errors - these are likely because the main branch already exists # Instead write them as warnings command = f"git -C {loc} fetch origin main:main" - result = run_command(command, check=False, rval=True) - if result.returncode: - print("Warning - fetching main from origin resulted in an error") - print("This is likely due to the main branch already existing") - print(f"Error message:\n\n{result.stderr}") + result = run_command(command, check=False) + if result and result.returncode: + logger.warning( + "Fetching main from origin resulted in an error." + "This is likely due to the main branch already existing" + f"\nError message:\n\n{result.stderr}" + ) if repo_ref: command = f"git -C {loc} checkout {repo_ref}" run_command(command) + + +def set_https(dependencies: dict) -> dict: + """ + Change sources in a dependencies dictionary to use https instead of ssh + """ + + logger.info("Modifying Dependencies to use https") + for dependency, opts in dependencies.items(): + if not isinstance(opts, list): + opts = [opts] + for i, values in enumerate(opts): + if values["source"].startswith("git@github.com:"): + values["source"] = values["source"].replace( + "git@github.com:", "https://github.com/" + ) + opts[i] = values + dependencies[dependency] = opts + + return dependencies diff --git a/build/local_build.py b/build/local_build.py index 3fd9458eba..89eb975190 100755 --- a/build/local_build.py +++ b/build/local_build.py @@ -17,8 +17,9 @@ import subprocess import argparse import yaml +import logging from pathlib import Path -from extract.get_git_sources import get_source +from extract.get_git_sources import clone_and_merge def subprocess_run(command): @@ -192,6 +193,8 @@ def main(): ) args = parser.parse_args() + logging.basicConfig(level=logging.INFO) + # If using mirrors, set environment variable for science extract step if args.mirrors: os.environ["USE_MIRRORS"] = args.mirror_loc @@ -219,15 +222,11 @@ def main(): else: core_source = {"source": args.core_source, "ref": ""} - # Clone/Sync the lfric core source - get_source( - core_source["source"], - core_source["ref"], - args.working_dir / "scratch" / "lfric_core", - "lfric_core", - args.mirrors, - args.mirror_loc, - ) + if not isinstance(core_source, list): + core_source = [core_source] + + core_loc = args.working_dir / "scratch" / "lfric_core" + clone_and_merge("lfric_core", core_source, core_loc, args.mirrors, args.mirror_loc) # Build the makefile build_makefile( From 1910850eb3cac3100af8262952caf859dca6f250 Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Tue, 3 Feb 2026 10:49:19 +0000 Subject: [PATCH 13/32] run ruff --- build/extract/extract_science.py | 15 +++------------ build/extract/get_git_sources.py | 8 +++++--- build/local_build.py | 2 +- 3 files changed, 9 insertions(+), 16 deletions(-) diff --git a/build/extract/extract_science.py b/build/extract/extract_science.py index e636c9d275..845b87b012 100755 --- a/build/extract/extract_science.py +++ b/build/extract/extract_science.py @@ -34,10 +34,7 @@ def extract_files(dependencies: dict, extract_lists: dict, working: Path) -> Non files = extract_lists[dependency] # If the PHYSICS_ROOT environment variable is provided, then use sources there - if ( - "PHYSICS_ROOT" in os.environ - and Path(os.environ["PHYSICS_ROOT"]).exists() - ): + if "PHYSICS_ROOT" in os.environ and Path(os.environ["PHYSICS_ROOT"]).exists(): clone_loc = Path(os.environ["PHYSICS_ROOT"]) / dependency else: clone_loc = working.parent / "scratch" / dependency @@ -72,9 +69,7 @@ def parse_args() -> argparse.Namespace: default="./dependencies.yaml", help="The dependencies file for the apps working copy", ) - parser.add_argument( - "-w", "--working", default=".", help="Build location" - ) + parser.add_argument("-w", "--working", default=".", help="Build location") parser.add_argument( "-e", "--extract", @@ -95,11 +90,7 @@ def main(): extract_lists: dict = load_yaml(args.extract) dependencies: dict = load_yaml(args.dependencies) - extract_files( - dependencies, - extract_lists, - args.working - ) + extract_files(dependencies, extract_lists, args.working) if __name__ == "__main__": diff --git a/build/extract/get_git_sources.py b/build/extract/get_git_sources.py index a1545bfcc0..fbcd551c71 100644 --- a/build/extract/get_git_sources.py +++ b/build/extract/get_git_sources.py @@ -87,7 +87,9 @@ def datetime_str() -> str: return datetime.now().strftime("%Y-%m-%d %H:%M:%S") -def clone_and_merge(dependency: str, opts: list | dict, loc: Path, use_mirrors: bool, mirror_loc: Path) -> None: +def clone_and_merge( + dependency: str, opts: list | dict, loc: Path, use_mirrors: bool, mirror_loc: Path +) -> None: """ Wrapper script for calling get_source and merge_source for a single dependency @@ -106,14 +108,14 @@ def clone_and_merge(dependency: str, opts: list | dict, loc: Path, use_mirrors: values["ref"] = "" # Clone the first provided source - if i==0: + if i == 0: get_source( values["source"], values["ref"], loc, dependency, use_mirrors, - mirror_loc + mirror_loc, ) # For all other sources, attempt to merge into the first else: diff --git a/build/local_build.py b/build/local_build.py index 89eb975190..7f66e614c2 100755 --- a/build/local_build.py +++ b/build/local_build.py @@ -169,7 +169,7 @@ def main(): "-t", "--target", default="build", - help="The makefile target, eg. unit-tests, clean, etc. Default " "of build.", + help="The makefile target, eg. unit-tests, clean, etc. Default of build.", ) parser.add_argument( "-o", From 48dea0e88fc4fe2cdb3699a6cd13f7b28dc11235 Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Tue, 3 Feb 2026 11:53:24 +0000 Subject: [PATCH 14/32] update rsync --- build/extract/get_git_sources.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/build/extract/get_git_sources.py b/build/extract/get_git_sources.py index fbcd551c71..827ec6615d 100644 --- a/build/extract/get_git_sources.py +++ b/build/extract/get_git_sources.py @@ -346,8 +346,12 @@ def sync_repo(repo_source: str, repo_ref: str, loc: Path) -> None: loc.mkdir(parents=True) exclude_dirs = [] - host, path = repo_source.split(":", 1) - result = run_command(f"ssh {host} git -C {path} status --ignored -s") + try: + host, path = repo_source.split(":", 1) + result = run_command(f"ssh {host} git -C {path} status --ignored -s") + except ValueError: + # In case the path does not contain `host:` - see if it can be accessed locally + result = run_command(f"git -C {repo_source} status --ignored -s") for ignore_file in result.stdout.split("\n"): ignore_file = ignore_file.strip() if not ignore_file.startswith("!!"): From bd3f3513082275d77b29516168d5cb2525211863 Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Wed, 4 Feb 2026 08:15:36 +0000 Subject: [PATCH 15/32] switch to union --- build/extract/get_git_sources.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/extract/get_git_sources.py b/build/extract/get_git_sources.py index 827ec6615d..4bf5fd632f 100644 --- a/build/extract/get_git_sources.py +++ b/build/extract/get_git_sources.py @@ -10,7 +10,7 @@ import re import subprocess from datetime import datetime -from typing import Optional +from typing import Optional, Union from pathlib import Path from shutil import rmtree import shlex @@ -88,7 +88,7 @@ def datetime_str() -> str: def clone_and_merge( - dependency: str, opts: list | dict, loc: Path, use_mirrors: bool, mirror_loc: Path + dependency: str, opts: Union[list, dict], loc: Path, use_mirrors: bool, mirror_loc: Path ) -> None: """ Wrapper script for calling get_source and merge_source for a single dependency From 67ef6061631586310af11e93689d9b8e04173b97 Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Wed, 11 Feb 2026 09:13:54 +0000 Subject: [PATCH 16/32] delete jules meta --- .../rose-meta/jules-lfric/HEAD/rose-meta.conf | 181 --- .../rose-meta/jules-lfric/__init__.py | 1 - .../rose-meta/jules-lfric/version20_21.py | 279 ----- .../rose-meta/jules-lfric/version21_22.py | 69 -- .../rose-meta/jules-lfric/version22_30.py | 71 -- .../rose-meta/jules-lfric/versions.py | 111 -- .../jules-lfric/vn2.0/rose-meta.conf | 1025 ---------------- .../jules-lfric/vn2.1/rose-meta.conf | 1085 ----------------- .../jules-lfric/vn2.2/rose-meta.conf | 580 --------- .../jules-lfric/vn3.0/rose-meta.conf | 113 -- .../jules-hydrology/HEAD/rose-meta.conf | 27 - .../jules-hydrology/vn2.2/rose-meta.conf | 27 - .../jules-hydrology/vn3.0/rose-meta.conf | 27 - .../jules-nvegparm/HEAD/rose-meta.conf | 121 -- .../jules-nvegparm/vn2.0/rose-meta.conf | 121 -- .../jules-nvegparm/vn2.1/rose-meta.conf | 121 -- .../jules-nvegparm/vn2.2/rose-meta.conf | 121 -- .../jules-nvegparm/vn3.0/rose-meta.conf | 121 -- .../jules-pftparm/HEAD/rose-meta.conf | 167 --- .../jules-pftparm/vn2.2/rose-meta.conf | 167 --- .../jules-pftparm/vn3.0/rose-meta.conf | 167 --- .../jules-radiation/HEAD/rose-meta.conf | 113 -- .../jules-radiation/vn2.0/rose-meta.conf | 51 - .../jules-radiation/vn2.1/rose-meta.conf | 51 - .../jules-radiation/vn2.2/rose-meta.conf | 113 -- .../jules-radiation/vn3.0/rose-meta.conf | 113 -- .../jules-sea-seaice/HEAD/rose-meta.conf | 245 ---- .../jules-sea-seaice/vn2.2/rose-meta.conf | 245 ---- .../jules-sea-seaice/vn3.0/rose-meta.conf | 245 ---- .../jules-snow/HEAD/rose-meta.conf | 99 -- .../jules-snow/vn2.0/rose-meta.conf | 69 -- .../jules-snow/vn2.1/rose-meta.conf | 69 -- .../jules-snow/vn2.2/rose-meta.conf | 99 -- .../jules-snow/vn3.0/rose-meta.conf | 99 -- .../jules-soil/HEAD/rose-meta.conf | 31 - .../jules-soil/vn2.2/rose-meta.conf | 31 - .../jules-soil/vn3.0/rose-meta.conf | 31 - .../jules-surface-types/HEAD/rose-meta.conf | 125 -- .../jules-surface-types/vn2.0/rose-meta.conf | 125 -- .../jules-surface-types/vn2.1/rose-meta.conf | 125 -- .../jules-surface-types/vn2.2/rose-meta.conf | 125 -- .../jules-surface-types/vn3.0/rose-meta.conf | 125 -- .../jules-surface/HEAD/rose-meta.conf | 306 ----- .../jules-surface/vn2.0/rose-meta.conf | 80 -- .../jules-surface/vn2.1/rose-meta.conf | 80 -- .../jules-surface/vn2.2/rose-meta.conf | 97 -- .../jules-surface/vn3.0/rose-meta.conf | 115 -- .../jules-urban/HEAD/rose-meta.conf | 50 - .../jules-urban/vn2.0/rose-meta.conf | 50 - .../jules-urban/vn2.1/rose-meta.conf | 50 - .../jules-urban/vn2.2/rose-meta.conf | 50 - .../jules-urban/vn3.0/rose-meta.conf | 50 - .../jules-vegetation/HEAD/rose-meta.conf | 34 - .../jules-vegetation/vn2.0/rose-meta.conf | 34 - .../jules-vegetation/vn2.1/rose-meta.conf | 34 - .../jules-vegetation/vn2.2/rose-meta.conf | 34 - .../jules-vegetation/vn3.0/rose-meta.conf | 34 - 57 files changed, 8129 deletions(-) delete mode 100644 interfaces/jules_interface/rose-meta/jules-lfric/HEAD/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/jules-lfric/__init__.py delete mode 100644 interfaces/jules_interface/rose-meta/jules-lfric/version20_21.py delete mode 100644 interfaces/jules_interface/rose-meta/jules-lfric/version21_22.py delete mode 100644 interfaces/jules_interface/rose-meta/jules-lfric/version22_30.py delete mode 100644 interfaces/jules_interface/rose-meta/jules-lfric/versions.py delete mode 100644 interfaces/jules_interface/rose-meta/jules-lfric/vn2.0/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/jules-lfric/vn2.1/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/jules-lfric/vn2.2/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/jules-lfric/vn3.0/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/HEAD/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/vn2.2/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/vn3.0/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/HEAD/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn2.0/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn2.1/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn2.2/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn3.0/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/HEAD/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/vn2.2/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/vn3.0/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/HEAD/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn2.0/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn2.1/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn2.2/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn3.0/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/HEAD/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/vn2.2/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/vn3.0/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/HEAD/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn2.0/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn2.1/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn2.2/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn3.0/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/HEAD/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/vn2.2/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/vn3.0/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/HEAD/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn2.0/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn2.1/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn2.2/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn3.0/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/HEAD/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn2.0/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn2.1/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn2.2/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn3.0/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/HEAD/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn2.0/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn2.1/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn2.2/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn3.0/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/HEAD/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn2.0/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn2.1/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn2.2/rose-meta.conf delete mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn3.0/rose-meta.conf diff --git a/interfaces/jules_interface/rose-meta/jules-lfric/HEAD/rose-meta.conf b/interfaces/jules_interface/rose-meta/jules-lfric/HEAD/rose-meta.conf deleted file mode 100644 index cd725e1b65..0000000000 --- a/interfaces/jules_interface/rose-meta/jules-lfric/HEAD/rose-meta.conf +++ /dev/null @@ -1,181 +0,0 @@ -############################################################################### -# This is the LFRic flavour of the JULES metadata -############################################################################### -# This should only contain: -# * Import statements from lfric-jules-shared. -# * LFRic specific amendments to the imported metadata. -# The majority of the metadata should be under rose-meta/lfric-jules-shared. -# -# This file in the future will reside in the JULES repository and will import -# jules-shared directly from there when the build system has been developed to -# allow this. -# -# Please see jules:wiki:SharingJULESmetadata - -import=lfric-jules-shared/jules-hydrology/HEAD - =lfric-jules-shared/jules-nvegparm/HEAD - =lfric-jules-shared/jules-pftparm/HEAD - =lfric-jules-shared/jules-radiation/HEAD - =lfric-jules-shared/jules-sea-seaice/HEAD - =lfric-jules-shared/jules-snow/HEAD - =lfric-jules-shared/jules-soil/HEAD - =lfric-jules-shared/jules-surface/HEAD - =lfric-jules-shared/jules-surface-types/HEAD - =lfric-jules-shared/jules-urban/HEAD - =lfric-jules-shared/jules-vegetation/HEAD - -[namelist:jules_hydrology=l_hydrology] -trigger=namelist:jules_hydrology=l_var_rainfrac: .true.; - -[namelist:jules_model_environment_lfric] -compulsory=true -description=Not all JULES options are available in all environments in which JULES is run e.g. standalone, - =UM, LFRic (LIS, MONC, CABLE). The model environment is specified here so that options that are - =unavailable can be made inaccessible via the metadata and thus will not appear in the gui. -ns=namelist/JULES Science Settings/jules_model_environment -sort-key=01 -title=Model environment interface -url=http://jules-lsm.github.io/latest/namelists/model_environment.nml.html#namelist-JULES_MODEL_ENVIRONMENT - -[namelist:jules_model_environment_lfric=l_jules_parent] -compulsory=true -description=Switch to identify the environment in which JULES is being run. - =No science code is associated with this switch, only what science options are available. - =THIS HAS TO BE LFRIC SPECIFIC FOR NOW AS A RESULT OF THE WAY THAT - =LFRIC COUPLED PROCESSES NAMELIST FILES. -!enumeration=true -fail-if=this != "'lfric'"; # This should indicate that LFRic is the parent model. -trigger=namelist:jules_surface=l_elev_land_ice: 'not_lfric'; - =namelist:jules_surface=l_elev_lw_down: 'not_lfric'; - =namelist:jules_surface=l_flake_model: 'not_lfric'; - =namelist:jules_surface=l_point_data: 'not_lfric'; -value-titles=LFRic -values='lfric' - -[namelist:jules_radiation=fixed_sea_albedo] -description=If using i_sea_alb_method='fixed', the global value of albedo to use. - -[namelist:jules_radiation=i_sea_alb_method] -trigger=namelist:jules_radiation=l_sea_alb_var_chl: 'jin'; - =namelist:jules_radiation=fixed_sea_albedo: 'fixed'; -value-titles=Barker and Li 1995,Jin et al. 2011,Fixed global value -values='barker','jin','fixed' - -[namelist:jules_radiation=l_albedo_obs] -trigger=namelist:files=albedo_vis_ancil_path: .true. ; - =namelist:files=albedo_nir_ancil_path: .true. ; - =namelist:jules_nvegparm=albsnf_nvgu_io: .true.; - =namelist:jules_nvegparm=albsnf_nvgl_io: .true.; - -[namelist:jules_radiation=l_sea_alb_var_chl] -trigger=namelist:files=sea_ancil_path: .true. ; - -[namelist:jules_snow=can_clump] -fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT - =all(this == 0) and any(namelist:jules_snow=cansnowpft == '.true.'); # Results in floating point exception if 0. Only used if can_model = 4 (JULES default), cansnowpft = TRUE on that tile and l_embedded_snow = TRUE (LFRic default). - -[namelist:jules_snow=cansnowpft] -compulsory=true -length=5 - -[namelist:jules_snow=i_basal_melting_opt] -values='none','instant' - -[namelist:jules_snow=i_grain_growth_opt] -values='marshall','taillandier' - -[namelist:jules_snow=i_relayer_opt] -values='original','inverse' - -[namelist:jules_surface=all_tiles] -values='off','on' - -[namelist:jules_surface=anthrop_heat_option] -fail-if=this != "'dukes'"; # The DUKES fixed annual cycle is the only currently available option in LFRic -trigger=namelist:jules_surface=anthrop_heat_mean: 'flanner'; -values='dukes','flanner' - -[namelist:jules_surface=cor_mo_iter] -trigger=namelist:jules_surface=beta_cnv_bl: 'improved'; -value-titles=Limit Obukhov length in low winds, - =Improve initial guess (preferred) -values='lim_oblen','improved' - -[namelist:jules_surface=fd_hill_option] -value-titles=capped low hill -values='capped_lowhill' - -[namelist:jules_surface=fd_stability_dep] -value-titles=Off,Surface Ri -values='none','surf_ri' - -[namelist:jules_surface=formdrag] -fail-if= -trigger=namelist:jules_surface=orog_drag_param: 'eff_z0','dist_drag'; - =namelist:jules_surface=fd_stability_dep: 'eff_z0','dist_drag'; - =namelist:jules_surface=fd_hill_option: 'dist_drag'; -values='none','eff_z0','dist_drag' - -[namelist:jules_surface=i_modiscopt] -fail-if= -value-titles=On -values='on' - -[namelist:jules_surface=iscrntdiag] -fail-if= -value-titles=Decoupled with transitional effects -values='decoupled_trans' - -[namelist:jules_surface=l_elev_land_ice] -fail-if= -trigger= - -[namelist:jules_surface=l_flake_model] -trigger= - -[namelist:jules_surface=l_urban2t] -trigger=namelist:jules_surface_types=urban_canyon: .true.; - =namelist:jules_surface_types=urban_roof: .true.; - =namelist:jules_surface_types=urban: .false.; - =namelist:jules_urban: .true.; - =namelist:jules_urban=anthrop_heat_scale: .true.; - =namelist:files=urban_ancil_path: .true.; - =namelist:stochastic_physics=rp_lsfc_z0_urban_mult: .true.; - -[namelist:jules_surface=l_vary_z0m_soil] -fail-if= -trigger=namelist:files=soil_rough_ancil_path: .true. ; - -[namelist:jules_surface=srf_ex_cnv_gust] -fail-if= -trigger= -type=logical - -[namelist:jules_vegetation=can_rad_mod] -values='one','four','five','six' - -[namelist:jules_vegetation=l_spec_veg_z0] -trigger=namelist:jules_pftparm=z0v_io: .true.; - =namelist:stochastic_physics=rp_lsfc_z0v: .true.; - =namelist:stochastic_physics=rp_lsfc_z0v_max: .true.; - =namelist:stochastic_physics=rp_lsfc_z0v_min: .true.; - -# Dummy page to force sort order for JULES Science Settings -[namespace:science] -ns=namelist/JULES Science Settings -sort-key=Section-A12b - -# Dummy page to force sort order for Snow other parameters -[namespace:snow_other] -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=02 - -# Dummy page to force sort order for Snow radiation parameters -[namespace:snow_radiation] -ns=namelist/JULES Science Settings/jules_snow/Radiation parameters -sort-key=01 - -# Dummy page to force sort order for JULES Surface Types -[namespace:surface_types] -ns=namelist/JULES Surface Types -sort-key=Section-A12a diff --git a/interfaces/jules_interface/rose-meta/jules-lfric/__init__.py b/interfaces/jules_interface/rose-meta/jules-lfric/__init__.py deleted file mode 100644 index 24af8d5fb0..0000000000 --- a/interfaces/jules_interface/rose-meta/jules-lfric/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from . import versions diff --git a/interfaces/jules_interface/rose-meta/jules-lfric/version20_21.py b/interfaces/jules_interface/rose-meta/jules-lfric/version20_21.py deleted file mode 100644 index aebc595cd6..0000000000 --- a/interfaces/jules_interface/rose-meta/jules-lfric/version20_21.py +++ /dev/null @@ -1,279 +0,0 @@ -import re -import sys - -from metomi.rose.upgrade import MacroUpgrade - - -class UpgradeError(Exception): - """Exception created when an upgrade fails.""" - - def __init__(self, msg): - self.msg = msg - - def __repr__(self): - sys.tracebacklimit = 0 - return self.msg - - __str__ = __repr__ - - -""" -Copy this template and complete to add your macro -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" - - -class vn20_t249(MacroUpgrade): - """Upgrade macro for ticket #249 by Denis Sergeev.""" - - BEFORE_TAG = "vn2.0" - AFTER_TAG = "vn2.0_t249" - - def upgrade(self, config, meta_config=None): - # Commands From: science/jules_interface/rose-meta/jules-lfric - nml = "namelist:specified_surface" - self.add_setting(config, [nml, "surf_temp_forcing"], "'none'") - self.add_setting(config, [nml, "internal_flux_method"], "'uniform'") - self.add_setting(config, [nml, "internal_flux_value"], "0.0") - return config, self.reports - - -class vn20_t588(MacroUpgrade): - """Upgrade macro for ticket #588 by Maggie Hendry.""" - - BEFORE_TAG = "vn2.0_t249" - AFTER_TAG = "vn2.0_t588" - - def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/jules-lfric - # Rename surface -> jules_radiation - items_surface = [ - "sea_alb_method", - "albedo_obs", - "non_iso_scatter", - "sea_alb_var_chl", - "blue_sky_alb", - ] - items_jules = [ - "i_sea_alb_method", - "l_albedo_obs", - "l_niso_direct", - "l_sea_alb_var_chl", - "l_spec_alb_bs", - ] - for surface, jules in zip(items_surface, items_jules): - self.rename_setting( - config, - ["namelist:surface", surface], - ["namelist:jules_radiation", jules], - ) - # Rename surface -> jules_snow - items_jules = [ - "i_basal_melting_opt", - "i_grain_growth_opt", - "i_relayer_opt", - ] - items_surface = [ - "basal_melting", - "grain_growth", - "relayer_opt", - ] - for surface, jules in zip(items_surface, items_jules): - self.rename_setting( - config, - ["namelist:surface", surface], - ["namelist:jules_snow", jules], - ) - # jules_soil - """Add jules_soil namelist""" - source = self.get_setting_value( - config, ["file:configuration.nml", "source"] - ) - source = re.sub( - r"namelist:jules_radiation", - r"namelist:jules_radiation)" + "\n" + " (namelist:jules_soil", - source, - ) - self.change_setting_value( - config, ["file:configuration.nml", "source"], source - ) - # Rename surface -> jules_soil - items_surface = [ - "dpsids_dsdz", - "soil_sat_down", - "l_vg_soil", - ] - items_jules = [ - "l_dpsids_dsdz", - "l_soil_sat_down", - "l_vg_soil", - ] - for surface, jules in zip(items_surface, items_jules): - self.rename_setting( - config, - ["namelist:surface", surface], - ["namelist:jules_soil", jules], - ) - # jules_pftparm - """Add jules_pftparm namelist""" - source = self.get_setting_value( - config, ["file:configuration.nml", "source"] - ) - source = re.sub( - r"namelist:jules_nvegparm", - r"namelist:jules_nvegparm)" + "\n" + " (namelist:jules_pftparm", - source, - ) - self.change_setting_value( - config, ["file:configuration.nml", "source"], source - ) - # Rename surface -> jules_pftparm - items_surface = [ - "alb_snocov_max", - "alb_leaf_nir", - "alb_leaf_vis", - "catch0", - "dcatch_dlai", - "fsmc_p0", - "light_extinct", - "knl", - "scat_coef_vis", - "scat_coef_nir", - "z0v", - "z0hm_ratio_pft", - ] - items_jules = [ - "albsnc_max_io", - "alnir_io", - "alpar_io", - "catch0_io", - "dcatch_dlai_io", - "fsmc_p0_io", - "kext_io", - "knl_io", - "omega_io", - "omnir_io", - "z0v_io", - "z0hm_pft_io", - ] - for surface, jules in zip(items_surface, items_jules): - self.rename_setting( - config, - ["namelist:surface", surface], - ["namelist:jules_pftparm", jules], - ) - # jules_sea_seaice - """Add jules_sea_seaice namelist""" - source = self.get_setting_value( - config, ["file:configuration.nml", "source"] - ) - source = re.sub( - r"namelist:jules_radiation", - r"namelist:jules_radiation)" + "\n" + " (namelist:jules_sea_seaice", - source, - ) - self.change_setting_value( - config, ["file:configuration.nml", "source"], source - ) - # Rename surface -> jules_sea_seaice - items_surface = [ - "alb_sice_melt", - "buddy_sea", - "cdn_hw_sea", - "cdn_max_sea", - "dt_ice_albedo", - "emis_sea", - "emis_sice", - "evap_scale_sea", - "heat_cap_sea", - "i_high_wind_drag", - "iceformdrag_lupkes", - "l_10m_neut", - "n_sea_ice_tile", - "sea_surf_alg", - "sice_heatflux", - "stability_lupkes", - "therm_cond_sea", - "therm_cond_sice", - "therm_cond_sice_snow", - "u_cdn_hw", - "u_cdn_max", - "use_variable_sst", - ] - items_jules = [ - "alpham", - "buddy_sea", - "cdn_hw_sea", - "cdn_max_sea", - "dtice", - "emis_sea", - "emis_sice", - "beta_evap", - "hcap_sea", - "i_high_wind_drag", - "l_iceformdrag_lupkes", - "l_10m_neut", - "nice", - "iseasurfalg", - "l_sice_heatflux", - "l_stability_lupkes", - "kappa_seasurf", - "kappai", - "kappai_snow", - "u_cdn_hw", - "u_cdn_max", - "l_use_dtstar_sea", - ] - for surface, jules in zip(items_surface, items_jules): - self.rename_setting( - config, - ["namelist:surface", surface], - ["namelist:jules_sea_seaice", jules], - ) - # jules_hydrology - """Add jules_hydrology namelist""" - source = self.get_setting_value( - config, ["file:configuration.nml", "source"] - ) - source = re.sub( - r"namelist:io", - r"namelist:io" + "\n" + " (namelist:jules_hydrology)", - source, - ) - self.change_setting_value( - config, ["file:configuration.nml", "source"], source - ) - # Rename surface -> jules_hydrology - items_surface = [ - "use_hydrology", - "l_var_rainfrac", - ] - items_jules = [ - "l_hydrology", - "l_var_rainfrac", - ] - for surface, jules in zip(items_surface, items_jules): - self.rename_setting( - config, - ["namelist:surface", surface], - ["namelist:jules_hydrology", jules], - ) - return config, self.reports - - -class vn20_t649(MacroUpgrade): - """Upgrade macro for ticket None by None.""" - - BEFORE_TAG = "vn2.0_t588" - AFTER_TAG = "vn2.1" - - def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/jules-lfric - # Blank Upgrade Macro - return config, self.reports diff --git a/interfaces/jules_interface/rose-meta/jules-lfric/version21_22.py b/interfaces/jules_interface/rose-meta/jules-lfric/version21_22.py deleted file mode 100644 index 861e9ca28c..0000000000 --- a/interfaces/jules_interface/rose-meta/jules-lfric/version21_22.py +++ /dev/null @@ -1,69 +0,0 @@ -import re -import sys - -from metomi.rose.upgrade import MacroUpgrade - -from .version20_21 import * - - -class UpgradeError(Exception): - """Exception created when an upgrade fails.""" - - def __init__(self, msg): - self.msg = msg - - def __repr__(self): - sys.tracebacklimit = 0 - return self.msg - - __str__ = __repr__ - - -class vn21_t596(MacroUpgrade): - """Upgrade macro for ticket #596 by Maggie Hendry.""" - - BEFORE_TAG = "vn2.1" - AFTER_TAG = "vn2.1_t596" - - def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/jules-lfric - # Only used in LFRic apps - self.rename_setting( - config, - ["namelist:jules_surface", "check_soilm_negatives"], - ["namelist:surface", "check_soilm_negatives"], - ) - self.rename_setting( - config, - ["namelist:jules_surface", "lake_water_conservation"], - ["namelist:surface", "lake_water_conservation"], - ) - # jules-sea-seaice from jules-lfric being shared rather than um-atmos - self.rename_setting( - config, - ["namelist:surface", "amip_ice_thick"], - ["namelist:jules_sea_seaice", "amip_ice_thick"], - ) - self.rename_setting( - config, - ["namelist:surface", "z0h_specified"], - ["namelist:jules_sea_seaice", "z0h_specified"], - ) - self.rename_setting( - config, - ["namelist:surface", "z0m_specified"], - ["namelist:jules_sea_seaice", "z0m_specified"], - ) - return config, self.reports - - -class vn21_t871(MacroUpgrade): - """Upgrade macro for ticket TTTT by Unknown.""" - - BEFORE_TAG = "vn2.1_t596" - AFTER_TAG = "vn2.2" - - def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/jules-lfric - # Blank Upgrade Macro - return config, self.reports diff --git a/interfaces/jules_interface/rose-meta/jules-lfric/version22_30.py b/interfaces/jules_interface/rose-meta/jules-lfric/version22_30.py deleted file mode 100644 index 1cfad0d33e..0000000000 --- a/interfaces/jules_interface/rose-meta/jules-lfric/version22_30.py +++ /dev/null @@ -1,71 +0,0 @@ -import sys - -from metomi.rose.upgrade import MacroUpgrade - -from .version21_22 import * - - -class UpgradeError(Exception): - """Exception created when an upgrade fails.""" - - def __init__(self, msg): - self.msg = msg - - def __repr__(self): - sys.tracebacklimit = 0 - return self.msg - - __str__ = __repr__ - - -""" -Copy this template and complete to add your macro -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" - - -class vn22_t202(MacroUpgrade): - """Upgrade macro for ticket #202 by Katty Huang.""" - - BEFORE_TAG = "vn2.2" - AFTER_TAG = "vn2.2_t202" - - def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/jules-lfric - self.add_setting( - config, ["namelist:jules_surface", "anthrop_heat_mean"], "20.0" - ) - self.add_setting( - config, ["namelist:jules_surface", "anthrop_heat_option"], "'dukes'" - ) - return config, self.reports - - -class vn22_t1012(MacroUpgrade): - """Upgrade macro for ticket #1012 by Maggie Hendry.""" - - BEFORE_TAG = "vn2.2_t202" - AFTER_TAG = "vn2.2_t1012" - - def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/jules-lfric - # Blank upgrade macro to bump tag - return config, self.reports - - -class vn22_t34(MacroUpgrade): - """Upgrade macro for ticket TTTT by Unknown.""" - - BEFORE_TAG = "vn2.2_t1012" - AFTER_TAG = "vn3.0" - - def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/jules-lfric - # Blank Upgrade Macro - return config, self.reports diff --git a/interfaces/jules_interface/rose-meta/jules-lfric/versions.py b/interfaces/jules_interface/rose-meta/jules-lfric/versions.py deleted file mode 100644 index 329bfc2bcd..0000000000 --- a/interfaces/jules_interface/rose-meta/jules-lfric/versions.py +++ /dev/null @@ -1,111 +0,0 @@ -import re -import sys - -from metomi.rose.upgrade import MacroUpgrade - -from .version22_30 import * - - -class UpgradeError(Exception): - """Exception created when an upgrade fails.""" - - def __init__(self, msg): - self.msg = msg - - def __repr__(self): - sys.tracebacklimit = 0 - return self.msg - - __str__ = __repr__ - - -""" -Copy this template and complete to add your macro -class vnXX_txxx(MacroUpgrade): - # Upgrade macro for by - BEFORE_TAG = "vnX.X" - AFTER_TAG = "vnX.X_txxx" - def upgrade(self, config, meta_config=None): - # Add settings - return config, self.reports -""" - - -class vn30_t146(MacroUpgrade): - """Upgrade macro for ticket #146 by Maggie Hendry.""" - - BEFORE_TAG = "vn3.0" - AFTER_TAG = "vn3.0_t146" - - def upgrade(self, config, meta_config=None): - # Commands From: rose-meta/jules-lfric - # Add jules_model_environment_lfric namelist - source = self.get_setting_value( - config, ["file:configuration.nml", "source"] - ) - source = re.sub( - r"namelist:jules_hydrology", - r"namelist:jules_hydrology)" - + "\n" - + " (namelist:jules_model_environment_lfric", - source, - ) - self.change_setting_value( - config, ["file:configuration.nml", "source"], source - ) - self.add_setting( - config, - ["namelist:jules_model_environment_lfric", "l_jules_parent"], - "'lfric'", - ) - # Add jules_surface namelist items - self.add_setting( - config, - ["namelist:jules_surface", "all_tiles"], - "'off'", - ) - self.add_setting(config, ["namelist:jules_surface", "beta1"], "0.83") - self.add_setting(config, ["namelist:jules_surface", "beta2"], "0.93") - self.add_setting( - config, ["namelist:jules_surface", "beta_cnv_bl"], "0.04" - ) - self.add_setting( - config, - ["namelist:jules_surface", "fd_hill_option"], - "'capped_lowhill'", - ) - self.add_setting(config, ["namelist:jules_surface", "fwe_c3"], "0.5") - self.add_setting( - config, ["namelist:jules_surface", "fwe_c4"], "20000.0" - ) - self.add_setting(config, ["namelist:jules_surface", "hleaf"], "5.7e4") - self.add_setting(config, ["namelist:jules_surface", "hwood"], "1.1e4") - self.add_setting( - config, ["namelist:jules_surface", "i_modiscopt"], "'on'" - ) - self.add_setting( - config, ["namelist:jules_surface", "l_epot_corr"], ".true." - ) - self.add_setting( - config, ["namelist:jules_surface", "l_land_ice_imp"], ".true." - ) - self.add_setting( - config, ["namelist:jules_surface", "l_mo_buoyancy_calc"], ".true." - ) - self.add_setting( - config, ["namelist:jules_surface", "orog_drag_param"], "0.15" - ) - self.add_setting( - config, ["namelist:jules_surface", "l_flake_model"], ".false." - ) - self.add_setting( - config, ["namelist:jules_surface", "l_elev_land_ice"], ".false." - ) - self.add_setting( - config, ["namelist:jules_surface", "l_elev_lw_down"], ".false." - ) - self.add_setting( - config, ["namelist:jules_surface", "l_point_data"], ".false." - ) - - return config, self.reports diff --git a/interfaces/jules_interface/rose-meta/jules-lfric/vn2.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/jules-lfric/vn2.0/rose-meta.conf deleted file mode 100644 index 55768c6c36..0000000000 --- a/interfaces/jules_interface/rose-meta/jules-lfric/vn2.0/rose-meta.conf +++ /dev/null @@ -1,1025 +0,0 @@ -# Please see jules:wiki:SharingJULESmetadata - -import=lfric-jules-shared/jules-nvegparm/vn2.0 - =lfric-jules-shared/jules-radiation/vn2.0 - =lfric-jules-shared/jules-snow/vn2.0 - =lfric-jules-shared/jules-surface/vn2.0 - =lfric-jules-shared/jules-surface-types/vn2.0 - =lfric-jules-shared/jules-urban/vn2.0 - =lfric-jules-shared/jules-vegetation/vn2.0 - -[namelist:ideal_surface] -compulsory=true -description=Idealised surface settings -ns=namelist/Job/Initial conditions/Surface -sort-key=Section-A05 -title=Surface - -[namelist:ideal_surface=canopy_height] -compulsory=true -description=Canopy height of each plant type -fail-if=len(this) != namelist:jules_surface_types=npft -help=Canopy height of each plant type -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-03 -type=real - -[namelist:ideal_surface=leaf_area_index] -compulsory=true -description=Leaf area index of each plant type -fail-if=len(this) != namelist:jules_surface_types=npft -help=Leaf area index of each plant type -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-04 -type=real - -[namelist:ideal_surface=n_snow_layers] -compulsory=true -description=Snow layers on each tile -fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:surface=n_sea_ice_tile + 1 -help=The initial number of snow layers on each surface tile - = - =The order of tiles is land, sea, sea-ice -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-08 -type=integer - -[namelist:ideal_surface=snow_depth] -compulsory=true -description=Snow depth on each tile -fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:surface=n_sea_ice_tile + 1 -help=The initial snow depth on each surface tile - = - =The order of tiles is land, sea, sea-ice -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-09 -type=real - -[namelist:ideal_surface=snow_layer_ice_mass] -compulsory=true -description=Ice mass of each snow layer on tiles -fail-if=len(this) != 3*(namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg) -help=The initial ice mass of each snow layer - = - =The order in tiles 1-n for layer 1, then tiles 1-n for layer 2 etc -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-11 -type=real - -[namelist:ideal_surface=snow_layer_temp] -compulsory=true -description=Temperature of each snow layer on tiles -fail-if=len(this) != 3*(namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg) -help=The initial temperature of each snow layer - = - =The order in tiles 1-n for layer 1, then tiles 1-n for layer 2 etc -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-12 -type=real - -[namelist:ideal_surface=snow_layer_thickness] -compulsory=true -description=Thickness of each snow layer on tiles -fail-if=len(this) != 3*(namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg) -help=The initial thickness of each snow layer - = - =The order in tiles 1-n for layer 1, then tiles 1-n for layer 2 etc -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-10 -type=real - -[namelist:ideal_surface=soil_moisture] -compulsory=true -description=Soil moisture content -help=Soil moisture content on soil levels -!kind=default -length=4 -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-05 -type=real - -[namelist:ideal_surface=soil_temperature] -compulsory=true -description=Soil temperature -help=Temperature of soil levels -!kind=default -length=4 -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-06 -type=real - -[namelist:ideal_surface=surf_tile_fracs] -compulsory=true -description=Fraction of each surface tile -fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:surface=n_sea_ice_tile + 1 -help=The fraction within a grid-box of each surface tile - = - =The order of tiles is land, sea, sea-ice - = - =The fractions should sum to 1 -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-01 -type=real - -[namelist:ideal_surface=surf_tile_temps] -compulsory=true -description=Fraction of each surface tile -fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:surface=n_sea_ice_tile + 1 -help=The initial temperature of each surface tile - = - =The order of tiles is land, sea, sea-ice -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-02 -type=real - -[namelist:ideal_surface=tile_snow_mass] -compulsory=true -description=Snow mass on each tile -fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:surface=n_sea_ice_tile + 1 -help=The initial snow mass on each surface tile - = - =The order of tiles is land, sea, sea-ice -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-07 -type=real - -[namelist:jules_radiation=fixed_sea_albedo] -description=If using sea_alb_method='fixed', the global value of albedo to use. - -[namelist:jules_snow=can_clump] -fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT - =all(this == 0) and any(namelist:jules_snow=cansnowpft == '.true.'); # Results in floating point exception if 0. Only used if can_model = 4 (JULES default), cansnowpft = TRUE on that tile and l_embedded_snow = TRUE (LFRic default). - -[namelist:jules_snow=cansnowpft] -compulsory=true -length=5 - -[namelist:jules_surface=check_soilm_negatives] -description=Switch to check if soil moisture has become negative as part of the lake water conservation scheme -type=logical - -[namelist:jules_surface=cor_mo_iter] -value-titles=Limit Obukhov length in low winds, - =Improve initial guess (preferred) -values='lim_oblen','improved' - -[namelist:jules_surface=fd_stability_dep] -value-titles=Off,Surface Ri -values='none','surf_ri' - -[namelist:jules_surface=formdrag] -trigger=namelist:jules_surface=fd_stability_dep: 'eff_z0','dist_drag'; -values='none','eff_z0','dist_drag' - -[namelist:jules_surface=l_urban2t] -trigger=namelist:jules_surface_types=urban_canyon: .true.; - =namelist:jules_surface_types=urban_roof: .true.; - =namelist:jules_surface_types=urban: .false.; - =namelist:jules_urban: .true.; - =namelist:jules_urban=anthrop_heat_scale: .true.; - =namelist:files=urban_ancil_path: .true.; - -[namelist:jules_surface=l_vary_z0m_soil] -trigger=namelist:files=soil_rough_ancil_path: .true. ; - -[namelist:jules_surface=lake_water_conservation] -compulsory=true -description=Use the lake water conservation scheme -help=The inland water tile (aka lake tile) is a freely evaporating surface that doesn't depelete the local water supply. In order to conserve water the lake water conservation scheme decreases the level 4 soil moisture globally to account for this. -trigger=namelist:jules_surface=check_soilm_negatives: .true.; -type=logical - -[namelist:jules_surface=srf_ex_cnv_gust] -type=logical - -[namelist:jules_surface_types=urban] -fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following - -[namelist:jules_vegetation=can_rad_mod] -values='one','four','five','six' - -[namelist:jules_vegetation=l_spec_veg_z0] -trigger=namelist:surface=z0v: .true.; - -[namelist:specified_surface] -compulsory=true -description=Further Idealised surface settings -ns=namelist/Science/Specified Surface -sort-key=Section-A05 -title=Surface - -[namelist:specified_surface=function_amplitude_e] -compulsory=true -description=Amplitude of the function used for surface latent heat flux -help=Specifies the amplitude of the analytical function used for calculating the - =surface latent heat flux -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=function_amplitude_h] -compulsory=true -description=Amplitude of the function used for surface sensible heat flux -help=Specifies the amplitude of the analytical function used for calculating the - =surface sensible heat flux -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=function_name_fluxes] -compulsory=true -description=Name of the function used for surface latent and sensible heat fluxes -!enumeration=true -help=Specifies function name used for calculating surface latent and sensible heat fluxes - =If constant, uses the single values set in specified_flux_h and specified_flux_e. profile_size should be set to 1. - =If time-interpolated, uses the time-varying arrays set in specified_flux_h and specified_flux_e, where the arrays are of length profile_size. - =If sinusoidal, fluxes are set to - =amplitude * sin( 2 * pi * current_time / period + phase ) - =If diurnal, fluxes are set to - =max(0, amplitude * cos( pi* (time_of_max_flux - current_time) / length_of_day )^1.3 ) -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -trigger=namelist:specified_surface=function_amplitude_e: 'sinusoidal', 'diurnal'; - =namelist:specified_surface=function_period_e: 'sinusoidal'; - =namelist:specified_surface=function_phase_e: 'sinusoidal'; - =namelist:specified_surface=function_amplitude_h: 'sinusoidal', 'diurnal'; - =namelist:specified_surface=function_period_h: 'sinusoidal'; - =namelist:specified_surface=function_phase_h: 'sinusoidal'; - =namelist:specified_surface=length_of_day: 'diurnal'; - =namelist:specified_surface=time_of_max_flux: 'diurnal'; - =namelist:specified_surface=length_of_day: 'diurnal'; - =namelist:specified_surface=time_data: 'time_interpolated'; - =namelist:specified_surface=profile_size: 'constant','time_interpolated'; - =namelist:specified_surface=specified_flux_e: 'constant','time_interpolated'; - =namelist:specified_surface=specified_flux_h: 'constant','time_interpolated'; - =namelist:specified_surface=time_units: 'sinusoidal', 'diurnal', 'time_interpolated'; -value-titles=Constant, Time Interpolated, Sinusoidal function, Diurnal function -values='constant', 'time_interpolated', 'sinusoidal', 'diurnal' - -[namelist:specified_surface=function_name_sst] -compulsory=true -description=Name of the function used for sea surface temperatures -!enumeration=true -help=Specifies the function name used for calculating surface sensible heat flux - = If constant, uses the sea surface tile value set by surf_tile_temps option found in - = ideal_surface namelist. - = If time_interpolated, uses the time-varying array set in sea_surf_temps found in the - = specified_surface namelist. -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -trigger=namelist:specified_surface=time_data_sst: 'time_interpolated'; - =namelist:specified_surface=profile_size_sst: 'time_interpolated'; - =namelist:specified_surface=time_units_sst: 'time_interpolated'; - =namelist:specified_surface=sea_surf_temps: 'time_interpolated'; -value-titles=Constant, Time Interpolated -values='constant', 'time_interpolated' - -[namelist:specified_surface=function_period_e] -compulsory=true -description=Period of the function used for surface latent heat flux -help=Specifies the period of the sinusoidal analytical function used for calculating - =latent heat flux -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=function_period_h] -compulsory=true -description=Period of the function used for surface sensible heat flux -help=Specifies the period of the sinusoidal analytical function used for calculating - =sensible heat flux -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=function_phase_e] -compulsory=true -description=Phase of the function used for latent heat flux -help=Specifies the phase of the sinusoidal analytical function used for calculating the - =latent heat flux -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=function_phase_h] -compulsory=true -description=Phase of the function used for sensible heat flux -help=Specifies the phase of the sinusoidal analytical function used for calculating the - =sensible heat flux -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=length_of_day] -compulsory=true -description=Duration of daylight -help=Specifies the duration of daylight, in units that are consistent with - =the length_of_day option, used for the diurnal analytical function. -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=profile_size] -compulsory=true -description=Number of points in varying flux profile -help=Number of data points in the specified_flux_h and specified_flux_e - =arrays -!kind=default -ns=namelist/Science/Specified Surface -range=0: -sort-key=Panel-A03e -type=integer - -[namelist:specified_surface=profile_size_sst] -compulsory=true -description=Number of points in sst profile -help=Number of data points in the sea_surf_temps arrays -!kind=default -ns=namelist/Science/Specified Surface -range=0: -sort-key=Panel-A03e -type=integer - -[namelist:specified_surface=sea_surf_temps] -!bounds=namelist:specified_surface=profile_size_sst -compulsory=true -description=Time-varying sea surface temperature profile -help=Sea surface temperature values (K) used at times specified, overides - =the sea surface tile value set by surf_tile_temps option found in - =ideal_surface namelist. -!kind=default -length=: -ns=namelist/Science/Specified Surface -sort-key=Panel-A03d -type=real - -[namelist:specified_surface=specified_flux_e] -!bounds=namelist:specified_surface=profile_size -compulsory=true -description=Surface latent heat flux [Wm-2] -help=Fixed or time-varying value used throughout the run. -!kind=default -length=: -ns=namelist/Science/Specified Surface -sort-key=Panel-A01a -type=real - -[namelist:specified_surface=specified_flux_h] -!bounds=namelist:specified_surface=profile_size -compulsory=true -description=Surface sensible heat flux [Wm-2] -help=Fixed or time-varying value used throughout the run -!kind=default -length=: -ns=namelist/Science/Specified Surface -sort-key=Panel-A01b -type=real - -[namelist:specified_surface=time_data] -!bounds=namelist:specified_surface=profile_size -compulsory=true -description=Time values -help=Time values corresponding with the time-varying fluxes -!kind=default -length=: -ns=namelist/Science/Specified Surface -range=0.0: -sort-key=Panel-A03c -type=real - -[namelist:specified_surface=time_data_sst] -!bounds=namelist:specified_surface=profile_size_sst -compulsory=true -description=Time values -help=Time values corresponding with the time-varying ssts -!kind=default -length=: -ns=namelist/Science/Specified Surface -range=0.0: -sort-key=Panel-A03c -type=real - -[namelist:specified_surface=time_of_max_flux] -compulsory=true -description=Time of maximum flux -help=Specifies the time of day when the flux reaches its maximum value. - =The units must be consistent with the units used by the length_of_day option. - =Used for the diurnal analytical function. -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=time_units] -compulsory=true -description=Units of the time_data list/ function_period -!enumeration=true -help=Specifies the units of the time data/ wave period used. -ns=namelist/Science/Specified Surface -value-titles=Seconds,Minutes,Hours,Days -values='seconds','minutes','hours','days' - -[namelist:specified_surface=time_units_sst] -compulsory=true -description=Units of the time_data list/ function_period -!enumeration=true -help=Specifies the units of the time data/ wave period used. -ns=namelist/Science/Specified Surface -value-titles=Seconds,Minutes,Hours,Days -values='seconds','minutes','hours','days' - -[namelist:surface] -compulsory=true -description=Surface parametrisations -ns=namelist/Science/JULES Surface -sort-key=Section-A12 -title=Surface - -[namelist:surface=alb_leaf_nir] -description=NIR Leaf reflection coeff -help=Leaf reflection coefficient for Near Infra Red wavelengths > 690nm. - =Used unless can_rad_mod=1 AND l_spec_albedo is false. -!kind=default -length=: -ns=namelist/Science/JULES Surface/pft Params -range=0:1 -sort-key=Panel-H01 -type=real - -[namelist:surface=alb_leaf_vis] -description=VIS Leaf reflection coeff -help=Leaf reflection coefficient for wavelengths < 690nm (Photosyntehtically Active Radiation). - =Used unless can_rad_mod=1 AND l_spec_albedo is false. -!kind=default -length=: -ns=namelist/Science/JULES Surface/pft Params -range=0:1 -sort-key=Panel-H02 -type=real - -[namelist:surface=alb_sice_melt] -compulsory=true -description=Original HadGEM sea ice albedo scheme: Albedo of sea-ice at - =melting point (TM, if .not.l_ssice_albedo), - =or albedo of snow on sea-ice at melting point (TM, if - =l_ssice_albedo) ("M" for "melting") -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -range=0:1 -sort-key=Panel-C01 -type=real - -[namelist:surface=alb_snocov_max] -description=Snow-covered albedo for large LAI -help=Only used when namelist:jules_radiation=l_snow_albedo is false -!kind=default -length=: -ns=namelist/Science/JULES Surface/pft Params -range=0:1 -sort-key=Panel-H03 -type=real - -[namelist:surface=albedo_obs] -compulsory=true -description=Scale albedos of land-surface tiles to agree with obs -!kind=default -ns=namelist/JULES Science Settings/jules_radiation -sort-key=Panel-B01 -trigger=namelist:files=albedo_vis_ancil_path: .true. ; - =namelist:files=albedo_nir_ancil_path: .true. ; - =namelist:jules_nvegparm=albsnf_nvgu_io: .true.; - =namelist:jules_nvegparm=albsnf_nvgl_io: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_albedo_obs - -[namelist:surface=amip_ice_thick] -compulsory=true -description=Calculate ice thickness from ice fraction -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C01 -type=logical - -[namelist:surface=basal_melting] -compulsory=true -description=Option for melting at the base of the snow pack -!enumeration=true -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=Panel-D17 -value-titles=No basal melting,Instantaneous basal melting -values='none','instant' - -[namelist:surface=blue_sky_alb] -compulsory=true -description=Use a single value for both the direct and diffuse beams -!kind=default -ns=namelist/JULES Science Settings/jules_radiation -sort-key=Panel-B02a -trigger=namelist:surface=non_iso_scatter: .false.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_spec_alb_bs - -[namelist:surface=buddy_sea] -compulsory=true -description=Use neighbouring sea point wind-speeds in coastal grid points -!enumeration=true -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C01a -value-titles=Off,On -values='Off','On' - -[namelist:surface=catch0] -description=Minimum canopy capacity (kg m-2) -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/Science/JULES Surface/pft Params -sort-key=Panel-H10 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::catch0_io - -[namelist:surface=cdn_hw_sea] -compulsory=true -description=Neutral drag coefficient over the sea at high wind speeds. -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C06a -type=real - -[namelist:surface=cdn_max_sea] -compulsory=true -description=Maximum value of the neutral drag coefficient over open sea. -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C06b -type=real - -[namelist:surface=dcatch_dlai] -description=Rate of change of canopy capacity with LAI (kg m-2) -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/Science/JULES Surface/pft Params -sort-key=Panel-H11 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::dcatch_dlai_io - -[namelist:surface=dpsids_dsdz] -compulsory=true -description=Calculate vertical gradient of soil suction with the assumption of linearity only for - =fractional saturation (consistent with the calculation of hydraulic conductivity) -!kind=default -ns=namelist/Science/JULES Surface/Soil -sort-key=Panel-E01 -type=logical - -[namelist:surface=dt_ice_albedo] -compulsory=true -description=Original HadGEM sea ice albedo scheme: Temperature range in which - =albedo of sea-ice (if .not.l_ssice_albedo), - =or of snow on sea-ice (if l_ssice_albedo), - =varies between its limits (recommended range 5-10K) -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -range=0.1:50 -sort-key=Panel-C02 -type=real - -[namelist:surface=emis_method_sea] -compulsory=true -description=Emissivity method for open sea - = Two options for spectrally varying emissivity in addition to a fixed emissivity: - = D. Feldman et al. (2014) https://doi.org/10.1073/pnas.1413640111 and - = R. Saunders et al. (2018) https://doi.org/10.5194/gmd-11-2717-2018 for IREMIS. -!enumeration=true -ns=namelist/JULES Science Settings/jules_radiation -sort-key=Panel-C02a -value-titles=1: Fixed, - =2: Feldman, - =3: IREMIS -values='fixed','feldman','iremis' - -[namelist:surface=emis_method_soil] -compulsory=true -description=Emissivity method for soil - = Option for spectrally varying emissivity in addition to a fixed emissivity: - = D. Feldman et al. (2014) https://doi.org/10.1073/pnas.1413640111 -!enumeration=true -ns=namelist/JULES Science Settings/jules_radiation -sort-key=Panel-G06 -value-titles=1: Fixed, - =2: Feldman Desert -values='fixed','feldman_desert' - -[namelist:surface=emis_sea] -compulsory=true -description=Emissivity of open sea -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C03 -type=real - -[namelist:surface=emis_sice] -compulsory=true -description=Emissivity of sea-ice -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C04 -type=real - -[namelist:surface=evap_scale_sea] -compulsory=true -description=Efficiency of evaporation from sea-surface -help=This parameter controls the efficiency with which water can evaporate from a sea-surface. - = The default value is 1.0, moisture availability is effectively unrestricted. - = However, lower values can be useful for idealised modelling, - = restricting the evaporation rate. - = For example, a value of 0.0 would result in no evaporation. -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -range=0.0:1.0 -sort-key=Panel-C05 -type=real - -[namelist:surface=fsmc_p0] -compulsory=true -description=Pft-dependent parameter governing the threshold at which the plant starts to experience water stress due to lack of water in the soil -!kind=default -length=: -ns=namelist/Science/JULES Surface/pft Params -sort-key=Panel-H04 -type=real - -[namelist:surface=grain_growth] -compulsory=true -description=Option for rate of growth of snow grains -!enumeration=true -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=Panel-D04 -value-titles=Marshall1989,Taillandier2007_ET -values='marshall','taillandier' - -[namelist:surface=heat_cap_sea] -description=Heat capacity of the slab ocean (J K-1 m-2) -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -range=0.0: -sort-key=Panel-C14a -type=real - -[namelist:surface=i_high_wind_drag] -compulsory=true -description=Option to impose a special treatment of drag at high wind speeds. -!enumeration=true -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C06 -trigger=namelist:surface=cdn_hw_sea: 'reduced_v1'; - =namelist:surface=cdn_max_sea: 'limited','reduced_v1'; - =namelist:surface=u_cdn_hw: 'reduced_v1'; - =namelist:surface=u_cdn_max: 'reduced_v1'; -value-titles=No special treatment of drag at high winds, - =The drag at high winds is capped, - =The drag at high winds is reduced over a range of speeds -values='null','limited','reduced_v1' - -[namelist:surface=iceformdrag_lupkes] -compulsory=true -description=Switch for diagnostic form drag following Lupkes et al. (2012) - =and Lupkes & Gryanik (2015) -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C07 -trigger=namelist:surface=stability_lupkes: .true.; -type=logical - -[namelist:surface=knl] -description=Decay of nitrogen through the canopy for canopy radiation model 6 -help=Used only if namelist:jules_vegetation=can_rad_mod is 6. - =SHOULD NOT BE THE SAME AS KN! -!kind=default -length=: -ns=namelist/Science/JULES Surface/pft Params -sort-key=Panel-H05 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::knl_io - -[namelist:surface=l_10m_neut] -compulsory=true -description=Logical for using neutral 10m wind speed to calculate the Charnock coefficient for sea points -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C08 -type=logical - -[namelist:surface=l_var_rainfrac] -compulsory=true -description=Enable variable large scale and convective rain fractions -!kind=default -ns=namelist/Science/JULES Surface/Hydrology -sort-key=Panel-A02 -type=logical - -[namelist:surface=l_vg_soil] -compulsory=true -description=Switch for van Genuchten soil hydraulic model. -!kind=default -ns=namelist/Science/JULES Surface/Soil -sort-key=Panel-E02 -type=logical - -[namelist:surface=light_extinct] -description=Light extinction coefficient -help=Used with Beers Law for light absorption through tile canopies -!kind=default -length=: -ns=namelist/Science/JULES Surface/pft Params -sort-key=Panel-H05 -type=real - -[namelist:surface=n_sea_ice_tile] -compulsory=true -description=Number of sea ice categories -help=The number of sea ice categories. This is normally 1 unless the model is - = coupled to a sea ice model when this is normally 5. This namelist - = entry is used to populate the n_sea_ice_tile variable in - = jules_control_init_mod.F90. All other subroutines should load - = n_sea_ice_tile from jules_control_init_mod and not from the surface - = namelist. -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -range=1:99 -sort-key=Panel-C00a -type=integer - -[namelist:surface=non_iso_scatter] -compulsory=true -description=Use the full non-isotropic expression for direct scattering in plant canopies -!kind=default -ns=namelist/JULES Science Settings/jules_radiation -sort-key=Panel-B02a1 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_niso_direct - -[namelist:surface=relayer_opt] -compulsory=true -description=Option for method of relayering the snow pack -!enumeration=true -help=This value is only used if nsmax > 0. -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=Panel-D01e -value-titles=Original Scheme,Relayer inverse of grain size -values='original','inverse' - -[namelist:surface=scat_coef_nir] -description=NIR Leaf scattering coeff -help=Leaf scattering coefficient for Near Infra Red wavelengths > 690nm. - =Used unless can_rad_mod=1 AND l_spec_albedo is false. -!kind=default -length=: -ns=namelist/Science/JULES Surface/pft Params -range=0:1 -sort-key=Panel-H06 -type=real - -[namelist:surface=scat_coef_vis] -description=VIS Leaf scattering coeff -help=Leaf scattering coefficient for wavelengths < 690nm (Photosyntehtically Active Radiation). - =Used unless can_rad_mod=1 AND l_spec_albedo is false. -!kind=default -length=: -ns=namelist/Science/JULES Surface/pft Params -range=0:1 -sort-key=Panel-H07 -type=real - -[namelist:surface=sea_alb_method] -compulsory=true -description=Choice of model for the Ocean Surface Albedo (open water, - =ice free) -!enumeration=true -ns=namelist/JULES Science Settings/jules_radiation -sort-key=Panel-B05 -trigger=namelist:surface=sea_alb_var_chl: 'jin'; - =namelist:jules_radiation=fixed_sea_albedo: 'fixed'; -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::i_sea_alb_method -value-titles=Barker and Li 1995,Jin et al. 2011,Fixed global value -values='barker','jin','fixed' - -[namelist:surface=sea_alb_var_chl] -compulsory=true -description=Use spatially varying chlorophyll content to calculate the open sea albedos - =NOT AVAILABLE TO STANDALONE -help=The Jin et al. parameterisation of open sea albedo includes chlorophyll content. This can either be: - =FALSE: Held constant at 0.5 mg m-3, - =or, - =TRUE: Input as an ancillary field. -!kind=default -ns=namelist/JULES Science Settings/jules_radiation -sort-key=Panel-B05b -trigger=namelist:files=sea_ancil_path: .true. ; -type=logical - -[namelist:surface=sea_surf_alg] -compulsory=true -description=Algorithm for surface exchange over the sea -!enumeration=true -help=The most basic option for surface transfer at the sea surface - =consists of a specification of Charnocks coefficient for the - =momentum roughness length, including the aerodynamically smooth - =contribution in light winds, and a fixed thermal roughness length. - =Surface divergence theory allows for a variable thermal roughness - =length that follows the aerodynamicall smooth limit in light winds - =and decreases in stronger winds, giving a slower increase in the - =exchange coefficient for moisture as the wind rises. Historically, - =roughness lengths that depend on the friction velocity have not - =been iterated within the calculation of the Obukhov length, though - =this is more consistent: an iterative option is therefore provided. - =The COARE algorithm is based on a range of observations and exists - =in various forms. It features a dependence of Charnocks coefficient - =on the wind speed and a dependence of the thermal roughness length - =on the roughness Reynolds number. Extra parameters allow different - =versions of the algorithm to be used. -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C09 -trigger=namelist:surface=z0m_specified: 'specified_roughness'; - =namelist:surface=z0h_specified: 'specified_roughness'; -value-titles="Fixed values of roughness length for momentum and heat", - ="Fixed value of Charnock's coefficient with thermal - =roughness from surface divergence theory (non-iterative)", - ="Roughness lengths follow functional forms of the COARE - =algorithm" -values='specified_roughness','surf_div','coare' - -[namelist:surface=sice_heatflux] -compulsory=true -description=Do semi-implicit update of ti for sea-ice -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C10 -type=logical - -[namelist:surface=soil_sat_down] -compulsory=true -description=Direction of water in excess of saturation -help=If a soil layer becomes supersaturated, - =the water in excess of saturation will be put into the - =layer above or below according to this switch - = - =Down => Excess is put into the layer below. Excess from the bottom layer becomes subsurface runoff - =Up => Excess is put into the layer above. Excess from the top layer becomes surface runoff -!kind=default -ns=namelist/Science/JULES Surface/Soil -sort-key=Panel-E03 -type=logical - -[namelist:surface=stability_lupkes] -compulsory=true -description=Switch to include the stability dependence in the parametrization - =of ice form drag -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C07a -type=logical - -[namelist:surface=therm_cond_sea] -compulsory=false -description=Thermal conductivity of sea-water (W / m / K) -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C11 -type=real - -[namelist:surface=therm_cond_sice] -compulsory=false -description=Thermal conductivity of sea-ice (W / m / K) -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C12 -type=real - -[namelist:surface=therm_cond_sice_snow] -compulsory=false -description=Thermal conductivity of snow on zero layer sea-ice (W / m / K) -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C13 -type=real - -[namelist:surface=u_cdn_hw] -compulsory=true -description=Neutral wind speed where the drag attains the high wind value. -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C06c -type=real - -[namelist:surface=u_cdn_max] -compulsory=true -description=Neutral wind speed where the drag begins to be reduced from the maximum. -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C06d -type=real - -[namelist:surface=use_hydrology] -compulsory=true -description=Enable soil hydrology -help=The Jules hydrology scheme represents surface runoff, - = groundwater infiltration and soil evolution. - = - =This switch also enables evolution of the surface snowpack. -!kind=default -ns=namelist/Science/JULES Surface/Hydrology -sort-key=Panel-A01 -type=logical - -[namelist:surface=use_variable_sst] -compulsory=true -description=Update the sea-surface temperature assuming a slab ocean with - = heat capacity given by namelist:surface=heat_cap_sea -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C14 -trigger=namelist:surface=heat_cap_sea: .true.; -type=logical - -[namelist:surface=z0h_specified] -compulsory=true -description=Specified roughness length for scalars [m] -fail-if=this < 0 -help=Specified value held fixed throughout the run used for surface exchange - =of scalar fields such as heat and moisture -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -range=0.0:100.0 -sort-key=Panel-C09b -type=real - -[namelist:surface=z0hm_ratio_pft] -compulsory=true -description=Ratio of the roughness length for heat to the roughness length for momentum for vegetation -!kind=default -length=: -ns=namelist/Science/JULES Surface/pft Params -sort-key=Panel-H08 -type=real - -[namelist:surface=z0m_specified] -compulsory=true -description=Specified roughness length for momentum [m] -fail-if=this < 0 -help=Specified value held fixed throughout the run -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -range=0.0:100.0 -sort-key=Panel-C09a -type=real - -[namelist:surface=z0v] -description=Roughness length for momentum for vegetation if l_spec_veg_z0=true -!kind=default -length=: -ns=namelist/Science/JULES Surface/pft Params -sort-key=Panel-H09 -type=real - -# Dummy page to force sort order for Snow other parameters -[namespace:snow_other] -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=02 - -# Dummy page to force sort order for Snow radiation parameters -[namespace:snow_radiation] -ns=namelist/JULES Science Settings/jules_snow/Radiation parameters -sort-key=01 diff --git a/interfaces/jules_interface/rose-meta/jules-lfric/vn2.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/jules-lfric/vn2.1/rose-meta.conf deleted file mode 100644 index 9bc336d408..0000000000 --- a/interfaces/jules_interface/rose-meta/jules-lfric/vn2.1/rose-meta.conf +++ /dev/null @@ -1,1085 +0,0 @@ -# Please see jules:wiki:SharingJULESmetadata - -import=lfric-jules-shared/jules-nvegparm/vn2.1 - =lfric-jules-shared/jules-radiation/vn2.1 - =lfric-jules-shared/jules-snow/vn2.1 - =lfric-jules-shared/jules-surface/vn2.1 - =lfric-jules-shared/jules-surface-types/vn2.1 - =lfric-jules-shared/jules-urban/vn2.1 - =lfric-jules-shared/jules-vegetation/vn2.1 - -[namelist:ideal_surface] -compulsory=true -description=Idealised surface settings -ns=namelist/Job/Initial conditions/Surface -sort-key=Section-A05 -title=Surface - -[namelist:ideal_surface=canopy_height] -compulsory=true -description=Canopy height of each plant type -fail-if=len(this) != namelist:jules_surface_types=npft -help=Canopy height of each plant type -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-03 -type=real - -[namelist:ideal_surface=leaf_area_index] -compulsory=true -description=Leaf area index of each plant type -fail-if=len(this) != namelist:jules_surface_types=npft -help=Leaf area index of each plant type -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-04 -type=real - -[namelist:ideal_surface=n_snow_layers] -compulsory=true -description=Snow layers on each tile -fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:jules_sea_seaice=nice + 1 -help=The initial number of snow layers on each surface tile - = - =The order of tiles is land, sea, sea-ice -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-08 -type=integer - -[namelist:ideal_surface=snow_depth] -compulsory=true -description=Snow depth on each tile -fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:jules_sea_seaice=nice + 1 -help=The initial snow depth on each surface tile - = - =The order of tiles is land, sea, sea-ice -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-09 -type=real - -[namelist:ideal_surface=snow_layer_ice_mass] -compulsory=true -description=Ice mass of each snow layer on tiles -fail-if=len(this) != 3*(namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg) -help=The initial ice mass of each snow layer - = - =The order in tiles 1-n for layer 1, then tiles 1-n for layer 2 etc -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-11 -type=real - -[namelist:ideal_surface=snow_layer_temp] -compulsory=true -description=Temperature of each snow layer on tiles -fail-if=len(this) != 3*(namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg) -help=The initial temperature of each snow layer - = - =The order in tiles 1-n for layer 1, then tiles 1-n for layer 2 etc -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-12 -type=real - -[namelist:ideal_surface=snow_layer_thickness] -compulsory=true -description=Thickness of each snow layer on tiles -fail-if=len(this) != 3*(namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg) -help=The initial thickness of each snow layer - = - =The order in tiles 1-n for layer 1, then tiles 1-n for layer 2 etc -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-10 -type=real - -[namelist:ideal_surface=soil_moisture] -compulsory=true -description=Soil moisture content -help=Soil moisture content on soil levels -!kind=default -length=4 -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-05 -type=real - -[namelist:ideal_surface=soil_temperature] -compulsory=true -description=Soil temperature -help=Temperature of soil levels -!kind=default -length=4 -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-06 -type=real - -[namelist:ideal_surface=surf_tile_fracs] -compulsory=true -description=Fraction of each surface tile -fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:jules_sea_seaice=nice + 1 -help=The fraction within a grid-box of each surface tile - = - =The order of tiles is land, sea, sea-ice - = - =The fractions should sum to 1 -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-01 -type=real - -[namelist:ideal_surface=surf_tile_temps] -compulsory=true -description=Fraction of each surface tile -fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:jules_sea_seaice=nice + 1 -help=The initial temperature of each surface tile - = - =The order of tiles is land, sea, sea-ice -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-02 -type=real - -[namelist:ideal_surface=tile_snow_mass] -compulsory=true -description=Snow mass on each tile -fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:jules_sea_seaice=nice + 1 -help=The initial snow mass on each surface tile - = - =The order of tiles is land, sea, sea-ice -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-07 -type=real - -[namelist:jules_hydrology] -compulsory=true -ns=namelist/Science/JULES Surface/Hydrology -sort-key=Panel-A02 -url=http://jules-lsm.github.io/latest/namelists/jules_hydrology.nml.html#namelist-JULES_HYDROLOGY - -[namelist:jules_hydrology=l_hydrology] -compulsory=true -description=Enable soil hydrology -help=The Jules hydrology scheme represents surface runoff, - = groundwater infiltration and soil evolution. - = - =This switch also enables evolution of the surface snowpack. -!kind=default -ns=namelist/Science/JULES Surface/Hydrology -sort-key=Panel-A01 -type=logical - -[namelist:jules_hydrology=l_var_rainfrac] -compulsory=true -description=Enable variable large scale and convective rain fractions -!kind=default -ns=namelist/Science/JULES Surface/Hydrology -sort-key=Panel-A02 -type=logical - -[namelist:jules_pftparm] -compulsory=true -ns=namelist/Science/JULES Surface/pft Params -sort-key=Panel-H01 -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#namelist-JULES_PFTPARM - -[namelist:jules_pftparm=albsnc_max_io] -description=Snow-covered albedo for large LAI -help=Only used when namelist:jules_radiation=l_snow_albedo is false -!kind=default -length=: -ns=namelist/Science/JULES Surface/pft Params -range=0:1 -sort-key=Panel-H03 -type=real - -[namelist:jules_pftparm=alnir_io] -description=NIR Leaf reflection coeff -help=Leaf reflection coefficient for Near Infra Red wavelengths > 690nm. - =Used unless can_rad_mod=1 AND l_spec_albedo is false. -!kind=default -length=: -ns=namelist/Science/JULES Surface/pft Params -range=0:1 -sort-key=Panel-H01 -type=real - -[namelist:jules_pftparm=alpar_io] -description=VIS Leaf reflection coeff -help=Leaf reflection coefficient for wavelengths < 690nm (Photosyntehtically Active Radiation). - =Used unless can_rad_mod=1 AND l_spec_albedo is false. -!kind=default -length=: -ns=namelist/Science/JULES Surface/pft Params -range=0:1 -sort-key=Panel-H02 -type=real - -[namelist:jules_pftparm=catch0_io] -description=Minimum canopy capacity (kg m-2) -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/Science/JULES Surface/pft Params -sort-key=Panel-H10 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::catch0_io - -[namelist:jules_pftparm=dcatch_dlai_io] -description=Rate of change of canopy capacity with LAI (kg m-2) -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/Science/JULES Surface/pft Params -sort-key=Panel-H11 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::dcatch_dlai_io - -[namelist:jules_pftparm=fsmc_p0_io] -compulsory=true -description=Pft-dependent parameter governing the threshold at which the plant starts to experience water stress due to lack of water in the soil -!kind=default -length=: -ns=namelist/Science/JULES Surface/pft Params -sort-key=Panel-H04 -type=real - -[namelist:jules_pftparm=kext_io] -description=Light extinction coefficient -help=Used with Beers Law for light absorption through tile canopies -!kind=default -length=: -ns=namelist/Science/JULES Surface/pft Params -sort-key=Panel-H05 -type=real - -[namelist:jules_pftparm=knl_io] -description=Decay of nitrogen through the canopy for canopy radiation model 6 -help=Used only if namelist:jules_vegetation=can_rad_mod is 6. - =SHOULD NOT BE THE SAME AS KN! -!kind=default -length=: -ns=namelist/Science/JULES Surface/pft Params -sort-key=Panel-H05 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::knl_io - -[namelist:jules_pftparm=omega_io] -description=VIS Leaf scattering coeff -help=Leaf scattering coefficient for wavelengths < 690nm (Photosyntehtically Active Radiation). - =Used unless can_rad_mod=1 AND l_spec_albedo is false. -!kind=default -length=: -ns=namelist/Science/JULES Surface/pft Params -range=0:1 -sort-key=Panel-H07 -type=real - -[namelist:jules_pftparm=omnir_io] -description=NIR Leaf scattering coeff -help=Leaf scattering coefficient for Near Infra Red wavelengths > 690nm. - =Used unless can_rad_mod=1 AND l_spec_albedo is false. -!kind=default -length=: -ns=namelist/Science/JULES Surface/pft Params -range=0:1 -sort-key=Panel-H06 -type=real - -[namelist:jules_pftparm=z0hm_pft_io] -compulsory=true -description=Ratio of the roughness length for heat to the roughness length for momentum for vegetation -!kind=default -length=: -ns=namelist/Science/JULES Surface/pft Params -sort-key=Panel-H08 -type=real - -[namelist:jules_pftparm=z0v_io] -description=Roughness length for momentum for vegetation if l_spec_veg_z0=true -!kind=default -length=: -ns=namelist/Science/JULES Surface/pft Params -sort-key=Panel-H09 -type=real - -[namelist:jules_radiation=fixed_sea_albedo] -description=If using i_sea_alb_method='fixed', the global value of albedo to use. - -[namelist:jules_radiation=i_sea_alb_method] -compulsory=true -description=Choice of model for the Ocean Surface Albedo (open water, - =ice free) -!enumeration=true -ns=namelist/JULES Science Settings/jules_radiation -sort-key=Panel-B05 -trigger=namelist:jules_radiation=l_sea_alb_var_chl: 'jin'; - =namelist:jules_radiation=fixed_sea_albedo: 'fixed'; -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::i_sea_alb_method -value-titles=Barker and Li 1995,Jin et al. 2011,Fixed global value -values='barker','jin','fixed' - -[namelist:jules_radiation=l_albedo_obs] -compulsory=true -description=Scale albedos of land-surface tiles to agree with obs -!kind=default -ns=namelist/JULES Science Settings/jules_radiation -sort-key=Panel-B01 -trigger=namelist:files=albedo_vis_ancil_path: .true. ; - =namelist:files=albedo_nir_ancil_path: .true. ; - =namelist:jules_nvegparm=albsnf_nvgu_io: .true.; - =namelist:jules_nvegparm=albsnf_nvgl_io: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_albedo_obs - -[namelist:jules_radiation=l_niso_direct] -compulsory=true -description=Use the full non-isotropic expression for direct scattering in plant canopies -!kind=default -ns=namelist/JULES Science Settings/jules_radiation -sort-key=Panel-B02a1 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_niso_direct - -[namelist:jules_radiation=l_sea_alb_var_chl] -compulsory=true -description=Use spatially varying chlorophyll content to calculate the open sea albedos - =NOT AVAILABLE TO STANDALONE -help=The Jin et al. parameterisation of open sea albedo includes chlorophyll content. This can either be: - =FALSE: Held constant at 0.5 mg m-3, - =or, - =TRUE: Input as an ancillary field. -!kind=default -ns=namelist/JULES Science Settings/jules_radiation -sort-key=Panel-B05b -trigger=namelist:files=sea_ancil_path: .true. ; -type=logical - -[namelist:jules_radiation=l_spec_alb_bs] -compulsory=true -description=Use a single value for both the direct and diffuse beams -!kind=default -ns=namelist/JULES Science Settings/jules_radiation -sort-key=Panel-B02a -trigger=namelist:jules_radiation=l_niso_direct: .false.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_spec_alb_bs - -[namelist:jules_sea_seaice] -compulsory=true -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C01 -title=Sea and sea-ice options - -[namelist:jules_sea_seaice=alpham] -compulsory=true -description=Original HadGEM sea ice albedo scheme: Albedo of sea-ice at - =melting point (TM, if .not.l_ssice_albedo), - =or albedo of snow on sea-ice at melting point (TM, if - =l_ssice_albedo) ("M" for "melting") -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -range=0:1 -sort-key=Panel-C01 -type=real - -[namelist:jules_sea_seaice=beta_evap] -compulsory=true -description=Efficiency of evaporation from sea-surface -help=This parameter controls the efficiency with which water can evaporate from a sea-surface. - = The default value is 1.0, moisture availability is effectively unrestricted. - = However, lower values can be useful for idealised modelling, - = restricting the evaporation rate. - = For example, a value of 0.0 would result in no evaporation. -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -range=0.0:1.0 -sort-key=Panel-C05 -type=real - -[namelist:jules_sea_seaice=buddy_sea] -compulsory=true -description=Use neighbouring sea point wind-speeds in coastal grid points -!enumeration=true -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C01a -value-titles=Off,On -values='Off','On' - -[namelist:jules_sea_seaice=cdn_hw_sea] -compulsory=true -description=Neutral drag coefficient over the sea at high wind speeds. -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C06a -type=real - -[namelist:jules_sea_seaice=cdn_max_sea] -compulsory=true -description=Maximum value of the neutral drag coefficient over open sea. -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C06b -type=real - -[namelist:jules_sea_seaice=dtice] -compulsory=true -description=Original HadGEM sea ice albedo scheme: Temperature range in which - =albedo of sea-ice (if .not.l_ssice_albedo), - =or of snow on sea-ice (if l_ssice_albedo), - =varies between its limits (recommended range 5-10K) -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -range=0.1:50 -sort-key=Panel-C02 -type=real - -[namelist:jules_sea_seaice=emis_sea] -compulsory=true -description=Emissivity of open sea -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C03 -type=real - -[namelist:jules_sea_seaice=emis_sice] -compulsory=true -description=Emissivity of sea-ice -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C04 -type=real - -[namelist:jules_sea_seaice=hcap_sea] -description=Heat capacity of the slab ocean (J K-1 m-2) -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -range=0.0: -sort-key=Panel-C14a -type=real - -[namelist:jules_sea_seaice=i_high_wind_drag] -compulsory=true -description=Option to impose a special treatment of drag at high wind speeds. -!enumeration=true -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C06 -trigger=namelist:jules_sea_seaice=cdn_hw_sea: 'reduced_v1'; - =namelist:jules_sea_seaice=cdn_max_sea: 'limited','reduced_v1'; - =namelist:jules_sea_seaice=u_cdn_hw: 'reduced_v1'; - =namelist:jules_sea_seaice=u_cdn_max: 'reduced_v1'; -value-titles=No special treatment of drag at high winds, - =The drag at high winds is capped, - =The drag at high winds is reduced over a range of speeds -values='null','limited','reduced_v1' - -[namelist:jules_sea_seaice=iseasurfalg] -compulsory=true -description=Algorithm for surface exchange over the sea -!enumeration=true -help=The most basic option for surface transfer at the sea surface - =consists of a specification of Charnocks coefficient for the - =momentum roughness length, including the aerodynamically smooth - =contribution in light winds, and a fixed thermal roughness length. - =Surface divergence theory allows for a variable thermal roughness - =length that follows the aerodynamicall smooth limit in light winds - =and decreases in stronger winds, giving a slower increase in the - =exchange coefficient for moisture as the wind rises. Historically, - =roughness lengths that depend on the friction velocity have not - =been iterated within the calculation of the Obukhov length, though - =this is more consistent: an iterative option is therefore provided. - =The COARE algorithm is based on a range of observations and exists - =in various forms. It features a dependence of Charnocks coefficient - =on the wind speed and a dependence of the thermal roughness length - =on the roughness Reynolds number. Extra parameters allow different - =versions of the algorithm to be used. -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C09 -trigger=namelist:surface=z0m_specified: 'specified_roughness'; - =namelist:surface=z0h_specified: 'specified_roughness'; -value-titles="Fixed values of roughness length for momentum and heat", - ="Fixed value of Charnock's coefficient with thermal - =roughness from surface divergence theory (non-iterative)", - ="Roughness lengths follow functional forms of the COARE - =algorithm" -values='specified_roughness','surf_div','coare' - -[namelist:jules_sea_seaice=kappa_seasurf] -compulsory=false -description=Thermal conductivity of sea-water (W / m / K) -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C11 -type=real - -[namelist:jules_sea_seaice=kappai] -compulsory=false -description=Thermal conductivity of sea-ice (W / m / K) -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C12 -type=real - -[namelist:jules_sea_seaice=kappai_snow] -compulsory=false -description=Thermal conductivity of snow on zero layer sea-ice (W / m / K) -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C13 -type=real - -[namelist:jules_sea_seaice=l_10m_neut] -compulsory=true -description=Logical for using neutral 10m wind speed to calculate the Charnock coefficient for sea points -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C08 -type=logical - -[namelist:jules_sea_seaice=l_iceformdrag_lupkes] -compulsory=true -description=Switch for diagnostic form drag following Lupkes et al. (2012) - =and Lupkes & Gryanik (2015) -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C07 -trigger=namelist:jules_sea_seaice=l_stability_lupkes: .true.; -type=logical - -[namelist:jules_sea_seaice=l_sice_heatflux] -compulsory=true -description=Do semi-implicit update of ti for sea-ice -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C10 -type=logical - -[namelist:jules_sea_seaice=l_stability_lupkes] -compulsory=true -description=Switch to include the stability dependence in the parametrization - =of ice form drag -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C07a -type=logical - -[namelist:jules_sea_seaice=l_use_dtstar_sea] -compulsory=true -description=Update the sea-surface temperature assuming a slab ocean with - = heat capacity given by namelist:jules_sea_seaice=hcap_sea -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C14 -trigger=namelist:jules_sea_seaice=hcap_sea: .true.; -type=logical - -[namelist:jules_sea_seaice=nice] -compulsory=true -description=Number of sea ice categories -help=The number of sea ice categories. This is normally 1 unless the model is - = coupled to a sea ice model when this is normally 5. This namelist - = entry is used to populate the nice variable in - = jules_control_init_mod.F90. All other subroutines should load - = nice from jules_control_init_mod and not from the surface - = namelist. -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -range=1:99 -sort-key=Panel-C00a -type=integer - -[namelist:jules_sea_seaice=u_cdn_hw] -compulsory=true -description=Neutral wind speed where the drag attains the high wind value. -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C06c -type=real - -[namelist:jules_sea_seaice=u_cdn_max] -compulsory=true -description=Neutral wind speed where the drag begins to be reduced from the maximum. -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C06d -type=real - -[namelist:jules_snow=can_clump] -fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT - =all(this == 0) and any(namelist:jules_snow=cansnowpft == '.true.'); # Results in floating point exception if 0. Only used if can_model = 4 (JULES default), cansnowpft = TRUE on that tile and l_embedded_snow = TRUE (LFRic default). - -[namelist:jules_snow=cansnowpft] -compulsory=true -length=5 - -[namelist:jules_snow=i_basal_melting_opt] -compulsory=true -description=Option for melting at the base of the snow pack -!enumeration=true -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=Panel-D17 -value-titles=No basal melting,Instantaneous basal melting -values='none','instant' - -[namelist:jules_snow=i_grain_growth_opt] -compulsory=true -description=Option for rate of growth of snow grains -!enumeration=true -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=Panel-D04 -value-titles=Marshall1989,Taillandier2007_ET -values='marshall','taillandier' - -[namelist:jules_snow=i_relayer_opt] -compulsory=true -description=Option for method of relayering the snow pack -!enumeration=true -help=This value is only used if nsmax > 0. -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=Panel-D01e -value-titles=Original Scheme,Relayer inverse of grain size -values='original','inverse' - -[namelist:jules_soil] -compulsory=true -ns=namelist/Science/JULES Surface/Soil -sort-key=Panel-E01 -title=Soil options -url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#namelist-JULES_SOIL - -[namelist:jules_soil=l_dpsids_dsdz] -compulsory=true -description=Calculate vertical gradient of soil suction with the assumption of linearity only for - =fractional saturation (consistent with the calculation of hydraulic conductivity) -!kind=default -ns=namelist/Science/JULES Surface/Soil -sort-key=Panel-E01 -type=logical - -[namelist:jules_soil=l_soil_sat_down] -compulsory=true -description=Direction of water in excess of saturation -help=If a soil layer becomes supersaturated, - =the water in excess of saturation will be put into the - =layer above or below according to this switch - = - =Down => Excess is put into the layer below. Excess from the bottom layer becomes subsurface runoff - =Up => Excess is put into the layer above. Excess from the top layer becomes surface runoff -!kind=default -ns=namelist/Science/JULES Surface/Soil -sort-key=Panel-E03 -type=logical - -[namelist:jules_soil=l_vg_soil] -compulsory=true -description=Switch for van Genuchten soil hydraulic model. -!kind=default -ns=namelist/Science/JULES Surface/Soil -sort-key=Panel-E02 -type=logical - -[namelist:jules_surface=check_soilm_negatives] -description=Switch to check if soil moisture has become negative as part of the lake water conservation scheme -type=logical - -[namelist:jules_surface=cor_mo_iter] -value-titles=Limit Obukhov length in low winds, - =Improve initial guess (preferred) -values='lim_oblen','improved' - -[namelist:jules_surface=fd_stability_dep] -value-titles=Off,Surface Ri -values='none','surf_ri' - -[namelist:jules_surface=formdrag] -trigger=namelist:jules_surface=fd_stability_dep: 'eff_z0','dist_drag'; -values='none','eff_z0','dist_drag' - -[namelist:jules_surface=l_urban2t] -trigger=namelist:jules_surface_types=urban_canyon: .true.; - =namelist:jules_surface_types=urban_roof: .true.; - =namelist:jules_surface_types=urban: .false.; - =namelist:jules_urban: .true.; - =namelist:jules_urban=anthrop_heat_scale: .true.; - =namelist:files=urban_ancil_path: .true.; - -[namelist:jules_surface=l_vary_z0m_soil] -trigger=namelist:files=soil_rough_ancil_path: .true. ; - -[namelist:jules_surface=lake_water_conservation] -compulsory=true -description=Use the lake water conservation scheme -help=The inland water tile (aka lake tile) is a freely evaporating surface that does not deplete the local water supply. In order to conserve water the lake water conservation scheme decreases the level 4 soil moisture globally to account for this. -trigger=namelist:jules_surface=check_soilm_negatives: .true.; -type=logical - -[namelist:jules_surface=srf_ex_cnv_gust] -type=logical - -[namelist:jules_surface_types=urban] -fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following - -[namelist:jules_vegetation=can_rad_mod] -values='one','four','five','six' - -[namelist:jules_vegetation=l_spec_veg_z0] -trigger=namelist:jules_pftparm=z0v_io: .true.; - -[namelist:specified_surface] -compulsory=true -description=Further Idealised surface settings -ns=namelist/Science/Specified Surface -sort-key=Section-A05 -title=Surface - -[namelist:specified_surface=function_amplitude_e] -compulsory=true -description=Amplitude of the function used for surface latent heat flux -help=Specifies the amplitude of the analytical function used for calculating the - =surface latent heat flux -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=function_amplitude_h] -compulsory=true -description=Amplitude of the function used for surface sensible heat flux -help=Specifies the amplitude of the analytical function used for calculating the - =surface sensible heat flux -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=function_name_fluxes] -compulsory=true -description=Name of the function used for surface latent and sensible heat fluxes -!enumeration=true -help=Specifies function name used for calculating surface latent and sensible heat fluxes - =If constant, uses the single values set in specified_flux_h and specified_flux_e. profile_size should be set to 1. - =If time-interpolated, uses the time-varying arrays set in specified_flux_h and specified_flux_e, where the arrays are of length profile_size. - =If sinusoidal, fluxes are set to - =amplitude * sin( 2 * pi * current_time / period + phase ) - =If diurnal, fluxes are set to - =max(0, amplitude * cos( pi* (time_of_max_flux - current_time) / length_of_day )^1.3 ) -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -trigger=namelist:specified_surface=function_amplitude_e: 'sinusoidal', 'diurnal'; - =namelist:specified_surface=function_period_e: 'sinusoidal'; - =namelist:specified_surface=function_phase_e: 'sinusoidal'; - =namelist:specified_surface=function_amplitude_h: 'sinusoidal', 'diurnal'; - =namelist:specified_surface=function_period_h: 'sinusoidal'; - =namelist:specified_surface=function_phase_h: 'sinusoidal'; - =namelist:specified_surface=length_of_day: 'diurnal'; - =namelist:specified_surface=time_of_max_flux: 'diurnal'; - =namelist:specified_surface=length_of_day: 'diurnal'; - =namelist:specified_surface=time_data: 'time_interpolated'; - =namelist:specified_surface=profile_size: 'constant','time_interpolated'; - =namelist:specified_surface=specified_flux_e: 'constant','time_interpolated'; - =namelist:specified_surface=specified_flux_h: 'constant','time_interpolated'; - =namelist:specified_surface=time_units: 'sinusoidal', 'diurnal', 'time_interpolated'; -value-titles=Constant, Time Interpolated, Sinusoidal function, Diurnal function -values='constant', 'time_interpolated', 'sinusoidal', 'diurnal' - -[namelist:specified_surface=function_name_sst] -compulsory=true -description=Name of the function used for sea surface temperatures -!enumeration=true -help=Specifies the function name used for calculating surface sensible heat flux - = If constant, uses the sea surface tile value set by surf_tile_temps option found in - = ideal_surface namelist. - = If time_interpolated, uses the time-varying array set in sea_surf_temps found in the - = specified_surface namelist. -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -trigger=namelist:specified_surface=time_data_sst: 'time_interpolated'; - =namelist:specified_surface=profile_size_sst: 'time_interpolated'; - =namelist:specified_surface=time_units_sst: 'time_interpolated'; - =namelist:specified_surface=sea_surf_temps: 'time_interpolated'; -value-titles=Constant, Time Interpolated -values='constant', 'time_interpolated' - -[namelist:specified_surface=function_period_e] -compulsory=true -description=Period of the function used for surface latent heat flux -help=Specifies the period of the sinusoidal analytical function used for calculating - =latent heat flux -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=function_period_h] -compulsory=true -description=Period of the function used for surface sensible heat flux -help=Specifies the period of the sinusoidal analytical function used for calculating - =sensible heat flux -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=function_phase_e] -compulsory=true -description=Phase of the function used for latent heat flux -help=Specifies the phase of the sinusoidal analytical function used for calculating the - =latent heat flux -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=function_phase_h] -compulsory=true -description=Phase of the function used for sensible heat flux -help=Specifies the phase of the sinusoidal analytical function used for calculating the - =sensible heat flux -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=internal_flux_method] -compulsory=true -description=How to prescribe the internal flux -!enumeration=true -help=Either a constant value or a 2D map -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -trigger=namelist:files=internal_flux_ancil_path: 'non_uniform' ; - =namelist:specified_surface=internal_flux_value: 'uniform' ; -value-titles=Uniform, Non-Uniform -values='uniform','non_uniform' - -[namelist:specified_surface=internal_flux_value] -compulsory=true -description=Constant internal flux value -help=Use the Stefan-Boltzmann law to calculate the flux from - =internal temperature T_int -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=length_of_day] -compulsory=true -description=Duration of daylight -help=Specifies the duration of daylight, in units that are consistent with - =the length_of_day option, used for the diurnal analytical function. -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=profile_size] -compulsory=true -description=Number of points in varying flux profile -help=Number of data points in the specified_flux_h and specified_flux_e - =arrays -!kind=default -ns=namelist/Science/Specified Surface -range=0: -sort-key=Panel-A03e -type=integer - -[namelist:specified_surface=profile_size_sst] -compulsory=true -description=Number of points in sst profile -help=Number of data points in the sea_surf_temps arrays -!kind=default -ns=namelist/Science/Specified Surface -range=0: -sort-key=Panel-A03e -type=integer - -[namelist:specified_surface=sea_surf_temps] -!bounds=namelist:specified_surface=profile_size_sst -compulsory=true -description=Time-varying sea surface temperature profile -help=Sea surface temperature values (K) used at times specified, overides - =the sea surface tile value set by surf_tile_temps option found in - =ideal_surface namelist. -!kind=default -length=: -ns=namelist/Science/Specified Surface -sort-key=Panel-A03d -type=real - -[namelist:specified_surface=specified_flux_e] -!bounds=namelist:specified_surface=profile_size -compulsory=true -description=Surface latent heat flux [Wm-2] -help=Fixed or time-varying value used throughout the run. -!kind=default -length=: -ns=namelist/Science/Specified Surface -sort-key=Panel-A01a -type=real - -[namelist:specified_surface=specified_flux_h] -!bounds=namelist:specified_surface=profile_size -compulsory=true -description=Surface sensible heat flux [Wm-2] -help=Fixed or time-varying value used throughout the run -!kind=default -length=: -ns=namelist/Science/Specified Surface -sort-key=Panel-A01b -type=real - -[namelist:specified_surface=surf_temp_forcing] -compulsory=true -description=Forcing of the surface temperature -!enumeration=true -help=E.g. increment due to an internal flux -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -trigger=namelist:specified_surface=internal_flux_method: 'int_flux' ; -value-titles=None, Internal flux -values='none','int_flux' - -[namelist:specified_surface=time_data] -!bounds=namelist:specified_surface=profile_size -compulsory=true -description=Time values -help=Time values corresponding with the time-varying fluxes -!kind=default -length=: -ns=namelist/Science/Specified Surface -range=0.0: -sort-key=Panel-A03c -type=real - -[namelist:specified_surface=time_data_sst] -!bounds=namelist:specified_surface=profile_size_sst -compulsory=true -description=Time values -help=Time values corresponding with the time-varying ssts -!kind=default -length=: -ns=namelist/Science/Specified Surface -range=0.0: -sort-key=Panel-A03c -type=real - -[namelist:specified_surface=time_of_max_flux] -compulsory=true -description=Time of maximum flux -help=Specifies the time of day when the flux reaches its maximum value. - =The units must be consistent with the units used by the length_of_day option. - =Used for the diurnal analytical function. -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=time_units] -compulsory=true -description=Units of the time_data list/ function_period -!enumeration=true -help=Specifies the units of the time data/ wave period used. -ns=namelist/Science/Specified Surface -value-titles=Seconds,Minutes,Hours,Days -values='seconds','minutes','hours','days' - -[namelist:specified_surface=time_units_sst] -compulsory=true -description=Units of the time_data list/ function_period -!enumeration=true -help=Specifies the units of the time data/ wave period used. -ns=namelist/Science/Specified Surface -value-titles=Seconds,Minutes,Hours,Days -values='seconds','minutes','hours','days' - -[namelist:surface] -compulsory=true -description=Surface parametrisations -ns=namelist/Science/JULES Surface -sort-key=Section-A12 -title=Surface - -[namelist:surface=amip_ice_thick] -compulsory=true -description=Calculate ice thickness from ice fraction -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -sort-key=Panel-C01 -type=logical - -[namelist:surface=emis_method_sea] -compulsory=true -description=Emissivity method for open sea - = Two options for spectrally varying emissivity in addition to a fixed emissivity: - = D. Feldman et al. (2014) https://doi.org/10.1073/pnas.1413640111 and - = R. Saunders et al. (2018) https://doi.org/10.5194/gmd-11-2717-2018 for IREMIS. -!enumeration=true -ns=namelist/JULES Science Settings/jules_radiation -sort-key=Panel-C02a -value-titles=1: Fixed, - =2: Feldman, - =3: IREMIS -values='fixed','feldman','iremis' - -[namelist:surface=emis_method_soil] -compulsory=true -description=Emissivity method for soil - = Option for spectrally varying emissivity in addition to a fixed emissivity: - = D. Feldman et al. (2014) https://doi.org/10.1073/pnas.1413640111 -!enumeration=true -ns=namelist/JULES Science Settings/jules_radiation -sort-key=Panel-G06 -value-titles=1: Fixed, - =2: Feldman Desert -values='fixed','feldman_desert' - -[namelist:surface=z0h_specified] -compulsory=true -description=Specified roughness length for scalars [m] -fail-if=this < 0 -help=Specified value held fixed throughout the run used for surface exchange - =of scalar fields such as heat and moisture -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -range=0.0:100.0 -sort-key=Panel-C09b -type=real - -[namelist:surface=z0m_specified] -compulsory=true -description=Specified roughness length for momentum [m] -fail-if=this < 0 -help=Specified value held fixed throughout the run -!kind=default -ns=namelist/Science/JULES Surface/Sea and sea-ice -range=0.0:100.0 -sort-key=Panel-C09a -type=real - -# Dummy page to force sort order for Snow other parameters -[namespace:snow_other] -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=02 - -# Dummy page to force sort order for Snow radiation parameters -[namespace:snow_radiation] -ns=namelist/JULES Science Settings/jules_snow/Radiation parameters -sort-key=01 diff --git a/interfaces/jules_interface/rose-meta/jules-lfric/vn2.2/rose-meta.conf b/interfaces/jules_interface/rose-meta/jules-lfric/vn2.2/rose-meta.conf deleted file mode 100644 index 7a533bcfaf..0000000000 --- a/interfaces/jules_interface/rose-meta/jules-lfric/vn2.2/rose-meta.conf +++ /dev/null @@ -1,580 +0,0 @@ -# Please see jules:wiki:SharingJULESmetadata - -import=lfric-jules-shared/jules-hydrology/vn2.2 - =lfric-jules-shared/jules-nvegparm/vn2.2 - =lfric-jules-shared/jules-pftparm/vn2.2 - =lfric-jules-shared/jules-radiation/vn2.2 - =lfric-jules-shared/jules-sea-seaice/vn2.2 - =lfric-jules-shared/jules-snow/vn2.2 - =lfric-jules-shared/jules-soil/vn2.2 - =lfric-jules-shared/jules-surface/vn2.2 - =lfric-jules-shared/jules-surface-types/vn2.2 - =lfric-jules-shared/jules-urban/vn2.2 - =lfric-jules-shared/jules-vegetation/vn2.2 - -[namelist:ideal_surface] -compulsory=true -description=Idealised surface settings -ns=namelist/Job/Initial conditions/Surface -sort-key=Section-A05 -title=Surface - -[namelist:ideal_surface=canopy_height] -compulsory=true -description=Canopy height of each plant type -fail-if=len(this) != namelist:jules_surface_types=npft -help=Canopy height of each plant type -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-03 -type=real - -[namelist:ideal_surface=leaf_area_index] -compulsory=true -description=Leaf area index of each plant type -fail-if=len(this) != namelist:jules_surface_types=npft -help=Leaf area index of each plant type -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-04 -type=real - -[namelist:ideal_surface=n_snow_layers] -compulsory=true -description=Snow layers on each tile -fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:jules_sea_seaice=nice + 1 -help=The initial number of snow layers on each surface tile - = - =The order of tiles is land, sea, sea-ice -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-08 -type=integer - -[namelist:ideal_surface=snow_depth] -compulsory=true -description=Snow depth on each tile -fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:jules_sea_seaice=nice + 1 -help=The initial snow depth on each surface tile - = - =The order of tiles is land, sea, sea-ice -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-09 -type=real - -[namelist:ideal_surface=snow_layer_ice_mass] -compulsory=true -description=Ice mass of each snow layer on tiles -fail-if=len(this) != 3*(namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg) -help=The initial ice mass of each snow layer - = - =The order in tiles 1-n for layer 1, then tiles 1-n for layer 2 etc -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-11 -type=real - -[namelist:ideal_surface=snow_layer_temp] -compulsory=true -description=Temperature of each snow layer on tiles -fail-if=len(this) != 3*(namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg) -help=The initial temperature of each snow layer - = - =The order in tiles 1-n for layer 1, then tiles 1-n for layer 2 etc -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-12 -type=real - -[namelist:ideal_surface=snow_layer_thickness] -compulsory=true -description=Thickness of each snow layer on tiles -fail-if=len(this) != 3*(namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg) -help=The initial thickness of each snow layer - = - =The order in tiles 1-n for layer 1, then tiles 1-n for layer 2 etc -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-10 -type=real - -[namelist:ideal_surface=soil_moisture] -compulsory=true -description=Soil moisture content -help=Soil moisture content on soil levels -!kind=default -length=4 -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-05 -type=real - -[namelist:ideal_surface=soil_temperature] -compulsory=true -description=Soil temperature -help=Temperature of soil levels -!kind=default -length=4 -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-06 -type=real - -[namelist:ideal_surface=surf_tile_fracs] -compulsory=true -description=Fraction of each surface tile -fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:jules_sea_seaice=nice + 1 -help=The fraction within a grid-box of each surface tile - = - =The order of tiles is land, sea, sea-ice - = - =The fractions should sum to 1 -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-01 -type=real - -[namelist:ideal_surface=surf_tile_temps] -compulsory=true -description=Fraction of each surface tile -fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:jules_sea_seaice=nice + 1 -help=The initial temperature of each surface tile - = - =The order of tiles is land, sea, sea-ice -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-02 -type=real - -[namelist:ideal_surface=tile_snow_mass] -compulsory=true -description=Snow mass on each tile -fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:jules_sea_seaice=nice + 1 -help=The initial snow mass on each surface tile - = - =The order of tiles is land, sea, sea-ice -!kind=default -length=: -ns=namelist/Job/Initial conditions/Surface -sort-key=Panel-07 -type=real - -[namelist:jules_hydrology=l_hydrology] -trigger=namelist:jules_hydrology=l_var_rainfrac: .true.; - -[namelist:jules_radiation=fixed_sea_albedo] -description=If using i_sea_alb_method='fixed', the global value of albedo to use. - -[namelist:jules_radiation=i_sea_alb_method] -trigger=namelist:jules_radiation=l_sea_alb_var_chl: 'jin'; - =namelist:jules_radiation=fixed_sea_albedo: 'fixed'; -value-titles=Barker and Li 1995,Jin et al. 2011,Fixed global value -values='barker','jin','fixed' - -[namelist:jules_radiation=l_albedo_obs] -trigger=namelist:files=albedo_vis_ancil_path: .true. ; - =namelist:files=albedo_nir_ancil_path: .true. ; - =namelist:jules_nvegparm=albsnf_nvgu_io: .true.; - =namelist:jules_nvegparm=albsnf_nvgl_io: .true.; - -[namelist:jules_radiation=l_sea_alb_var_chl] -trigger=namelist:files=sea_ancil_path: .true. ; - -[namelist:jules_snow=can_clump] -fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT - =all(this == 0) and any(namelist:jules_snow=cansnowpft == '.true.'); # Results in floating point exception if 0. Only used if can_model = 4 (JULES default), cansnowpft = TRUE on that tile and l_embedded_snow = TRUE (LFRic default). - -[namelist:jules_snow=cansnowpft] -compulsory=true -length=5 - -[namelist:jules_snow=i_basal_melting_opt] -values='none','instant' - -[namelist:jules_snow=i_grain_growth_opt] -values='marshall','taillandier' - -[namelist:jules_snow=i_relayer_opt] -values='original','inverse' - -[namelist:jules_surface=cor_mo_iter] -value-titles=Limit Obukhov length in low winds, - =Improve initial guess (preferred) -values='lim_oblen','improved' - -[namelist:jules_surface=fd_stability_dep] -value-titles=Off,Surface Ri -values='none','surf_ri' - -[namelist:jules_surface=formdrag] -trigger=namelist:jules_surface=fd_stability_dep: 'eff_z0','dist_drag'; -values='none','eff_z0','dist_drag' - -[namelist:jules_surface=l_urban2t] -trigger=namelist:jules_surface_types=urban_canyon: .true.; - =namelist:jules_surface_types=urban_roof: .true.; - =namelist:jules_surface_types=urban: .false.; - =namelist:jules_urban: .true.; - =namelist:jules_urban=anthrop_heat_scale: .true.; - =namelist:files=urban_ancil_path: .true.; - =namelist:stochastic_physics=rp_lsfc_z0_urban_mult: .true. ; - -[namelist:jules_surface=l_vary_z0m_soil] -trigger=namelist:files=soil_rough_ancil_path: .true. ; - -[namelist:jules_surface=srf_ex_cnv_gust] -type=logical - -[namelist:jules_vegetation=can_rad_mod] -values='one','four','five','six' - -[namelist:jules_vegetation=l_spec_veg_z0] -trigger=namelist:jules_pftparm=z0v_io: .true.; - =namelist:stochastic_physics=rp_lsfc_z0v: .true.; - =namelist:stochastic_physics=rp_lsfc_z0v_max: .true.; - =namelist:stochastic_physics=rp_lsfc_z0v_min: .true.; - -[namelist:specified_surface] -compulsory=true -description=Further Idealised surface settings -ns=namelist/Science/Specified Surface -sort-key=Section-A05 -title=Specified Surface - -[namelist:specified_surface=function_amplitude_e] -compulsory=true -description=Amplitude of the function used for surface latent heat flux -help=Specifies the amplitude of the analytical function used for calculating the - =surface latent heat flux -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=function_amplitude_h] -compulsory=true -description=Amplitude of the function used for surface sensible heat flux -help=Specifies the amplitude of the analytical function used for calculating the - =surface sensible heat flux -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=function_name_fluxes] -compulsory=true -description=Name of the function used for surface latent and sensible heat fluxes -!enumeration=true -help=Specifies function name used for calculating surface latent and sensible heat fluxes - =If constant, uses the single values set in specified_flux_h and specified_flux_e. profile_size should be set to 1. - =If time-interpolated, uses the time-varying arrays set in specified_flux_h and specified_flux_e, where the arrays are of length profile_size. - =If sinusoidal, fluxes are set to - =amplitude * sin( 2 * pi * current_time / period + phase ) - =If diurnal, fluxes are set to - =max(0, amplitude * cos( pi* (time_of_max_flux - current_time) / length_of_day )^1.3 ) -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -trigger=namelist:specified_surface=function_amplitude_e: 'sinusoidal', 'diurnal'; - =namelist:specified_surface=function_period_e: 'sinusoidal'; - =namelist:specified_surface=function_phase_e: 'sinusoidal'; - =namelist:specified_surface=function_amplitude_h: 'sinusoidal', 'diurnal'; - =namelist:specified_surface=function_period_h: 'sinusoidal'; - =namelist:specified_surface=function_phase_h: 'sinusoidal'; - =namelist:specified_surface=length_of_day: 'diurnal'; - =namelist:specified_surface=time_of_max_flux: 'diurnal'; - =namelist:specified_surface=length_of_day: 'diurnal'; - =namelist:specified_surface=time_data: 'time_interpolated'; - =namelist:specified_surface=profile_size: 'constant','time_interpolated'; - =namelist:specified_surface=specified_flux_e: 'constant','time_interpolated'; - =namelist:specified_surface=specified_flux_h: 'constant','time_interpolated'; - =namelist:specified_surface=time_units: 'sinusoidal', 'diurnal', 'time_interpolated'; -value-titles=Constant, Time Interpolated, Sinusoidal function, Diurnal function -values='constant', 'time_interpolated', 'sinusoidal', 'diurnal' - -[namelist:specified_surface=function_name_sst] -compulsory=true -description=Name of the function used for sea surface temperatures -!enumeration=true -help=Specifies the function name used for calculating surface sensible heat flux - = If constant, uses the sea surface tile value set by surf_tile_temps option found in - = ideal_surface namelist. - = If time_interpolated, uses the time-varying array set in sea_surf_temps found in the - = specified_surface namelist. -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -trigger=namelist:specified_surface=time_data_sst: 'time_interpolated'; - =namelist:specified_surface=profile_size_sst: 'time_interpolated'; - =namelist:specified_surface=time_units_sst: 'time_interpolated'; - =namelist:specified_surface=sea_surf_temps: 'time_interpolated'; -value-titles=Constant, Time Interpolated -values='constant', 'time_interpolated' - -[namelist:specified_surface=function_period_e] -compulsory=true -description=Period of the function used for surface latent heat flux -help=Specifies the period of the sinusoidal analytical function used for calculating - =latent heat flux -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=function_period_h] -compulsory=true -description=Period of the function used for surface sensible heat flux -help=Specifies the period of the sinusoidal analytical function used for calculating - =sensible heat flux -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=function_phase_e] -compulsory=true -description=Phase of the function used for latent heat flux -help=Specifies the phase of the sinusoidal analytical function used for calculating the - =latent heat flux -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=function_phase_h] -compulsory=true -description=Phase of the function used for sensible heat flux -help=Specifies the phase of the sinusoidal analytical function used for calculating the - =sensible heat flux -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=internal_flux_method] -compulsory=true -description=How to prescribe the internal flux -!enumeration=true -help=Either a constant value or a 2D map -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -trigger=namelist:files=internal_flux_ancil_path: 'non_uniform' ; - =namelist:specified_surface=internal_flux_value: 'uniform' ; -value-titles=Uniform, Non-Uniform -values='uniform','non_uniform' - -[namelist:specified_surface=internal_flux_value] -compulsory=true -description=Constant internal flux value -help=Use the Stefan-Boltzmann law to calculate the flux from - =internal temperature T_int -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=length_of_day] -compulsory=true -description=Duration of daylight -help=Specifies the duration of daylight, in units that are consistent with - =the length_of_day option, used for the diurnal analytical function. -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=profile_size] -compulsory=true -description=Number of points in varying flux profile -help=Number of data points in the specified_flux_h and specified_flux_e - =arrays -!kind=default -ns=namelist/Science/Specified Surface -range=0: -sort-key=Panel-A03e -type=integer - -[namelist:specified_surface=profile_size_sst] -compulsory=true -description=Number of points in sst profile -help=Number of data points in the sea_surf_temps arrays -!kind=default -ns=namelist/Science/Specified Surface -range=0: -sort-key=Panel-A03e -type=integer - -[namelist:specified_surface=sea_surf_temps] -!bounds=namelist:specified_surface=profile_size_sst -compulsory=true -description=Time-varying sea surface temperature profile -help=Sea surface temperature values (K) used at times specified, overides - =the sea surface tile value set by surf_tile_temps option found in - =ideal_surface namelist. -!kind=default -length=: -ns=namelist/Science/Specified Surface -sort-key=Panel-A03d -type=real - -[namelist:specified_surface=specified_flux_e] -!bounds=namelist:specified_surface=profile_size -compulsory=true -description=Surface latent heat flux [Wm-2] -help=Fixed or time-varying value used throughout the run. -!kind=default -length=: -ns=namelist/Science/Specified Surface -sort-key=Panel-A01a -type=real - -[namelist:specified_surface=specified_flux_h] -!bounds=namelist:specified_surface=profile_size -compulsory=true -description=Surface sensible heat flux [Wm-2] -help=Fixed or time-varying value used throughout the run -!kind=default -length=: -ns=namelist/Science/Specified Surface -sort-key=Panel-A01b -type=real - -[namelist:specified_surface=surf_temp_forcing] -compulsory=true -description=Forcing of the surface temperature -!enumeration=true -help=E.g. increment due to an internal flux -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -trigger=namelist:specified_surface=internal_flux_method: 'int_flux' ; -value-titles=None, Internal flux -values='none','int_flux' - -[namelist:specified_surface=time_data] -!bounds=namelist:specified_surface=profile_size -compulsory=true -description=Time values -help=Time values corresponding with the time-varying fluxes -!kind=default -length=: -ns=namelist/Science/Specified Surface -range=0.0: -sort-key=Panel-A03c -type=real - -[namelist:specified_surface=time_data_sst] -!bounds=namelist:specified_surface=profile_size_sst -compulsory=true -description=Time values -help=Time values corresponding with the time-varying ssts -!kind=default -length=: -ns=namelist/Science/Specified Surface -range=0.0: -sort-key=Panel-A03c -type=real - -[namelist:specified_surface=time_of_max_flux] -compulsory=true -description=Time of maximum flux -help=Specifies the time of day when the flux reaches its maximum value. - =The units must be consistent with the units used by the length_of_day option. - =Used for the diurnal analytical function. -!kind=default -ns=namelist/Science/Specified Surface -sort-key=Panel-A03 -type=real - -[namelist:specified_surface=time_units] -compulsory=true -description=Units of the time_data list/ function_period -!enumeration=true -help=Specifies the units of the time data/ wave period used. -ns=namelist/Science/Specified Surface -value-titles=Seconds,Minutes,Hours,Days -values='seconds','minutes','hours','days' - -[namelist:specified_surface=time_units_sst] -compulsory=true -description=Units of the time_data list/ function_period -!enumeration=true -help=Specifies the units of the time data/ wave period used. -ns=namelist/Science/Specified Surface -value-titles=Seconds,Minutes,Hours,Days -values='seconds','minutes','hours','days' - -[namelist:surface] -compulsory=true -description=Surface parametrisations used in the surface interface -ns=namelist/Science/Surface Interface -sort-key=Section-A12 - -[namelist:surface=check_soilm_negatives] -description=Switch to check if soil moisture has become negative as part of the - =lake water conservation scheme -ns=namelist/Science/Surface Interface/Soil -sort-key=Panel-B01a -type=logical - -[namelist:surface=emis_method_sea] -compulsory=true -description=Emissivity method for open sea - = Two options for spectrally varying emissivity in addition to a fixed emissivity: - = D. Feldman et al. (2014) https://doi.org/10.1073/pnas.1413640111 and - = R. Saunders et al. (2018) https://doi.org/10.5194/gmd-11-2717-2018 for IREMIS. -!enumeration=true -ns=namelist/Science/Surface Interface/Radiation -value-titles=1: Fixed, - =2: Feldman, - =3: IREMIS -values='fixed','feldman','iremis' - -[namelist:surface=emis_method_soil] -compulsory=true -description=Emissivity method for soil - = Option for spectrally varying emissivity in addition to a fixed emissivity: - = D. Feldman et al. (2014) https://doi.org/10.1073/pnas.1413640111 -!enumeration=true -ns=namelist/Science/Surface Interface/Radiation -value-titles=1: Fixed, - =2: Feldman Desert -values='fixed','feldman_desert' - -[namelist:surface=lake_water_conservation] -compulsory=true -description=Use the lake water conservation scheme -help=The inland water tile (aka lake tile) is a freely evaporating surface that does not deplete the local water supply. In order to conserve water the lake water conservation scheme decreases the level 4 soil moisture globally to account for this. -ns=namelist/Science/Surface Interface/Soil -sort-key=Panel-B01 -trigger=namelist:surface=check_soilm_negatives: .true.; -type=logical - -# Dummy page to force sort order for JULES Science Settings -[namespace:science] -ns=namelist/JULES Science Settings -sort-key=Section-A12b - -# Dummy page to force sort order for Snow other parameters -[namespace:snow_other] -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=02 - -# Dummy page to force sort order for Snow radiation parameters -[namespace:snow_radiation] -ns=namelist/JULES Science Settings/jules_snow/Radiation parameters -sort-key=01 - -# Dummy page to force sort order for JULES Surface Types -[namespace:surface_types] -ns=namelist/JULES Surface Types -sort-key=Section-A12a diff --git a/interfaces/jules_interface/rose-meta/jules-lfric/vn3.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/jules-lfric/vn3.0/rose-meta.conf deleted file mode 100644 index 691c725eb1..0000000000 --- a/interfaces/jules_interface/rose-meta/jules-lfric/vn3.0/rose-meta.conf +++ /dev/null @@ -1,113 +0,0 @@ -# Please see jules:wiki:SharingJULESmetadata - -import=lfric-jules-shared/jules-hydrology/vn3.0 - =lfric-jules-shared/jules-nvegparm/vn3.0 - =lfric-jules-shared/jules-pftparm/vn3.0 - =lfric-jules-shared/jules-radiation/vn3.0 - =lfric-jules-shared/jules-sea-seaice/vn3.0 - =lfric-jules-shared/jules-snow/vn3.0 - =lfric-jules-shared/jules-soil/vn3.0 - =lfric-jules-shared/jules-surface/vn3.0 - =lfric-jules-shared/jules-surface-types/vn3.0 - =lfric-jules-shared/jules-urban/vn3.0 - =lfric-jules-shared/jules-vegetation/vn3.0 - -[namelist:jules_hydrology=l_hydrology] -trigger=namelist:jules_hydrology=l_var_rainfrac: .true.; - -[namelist:jules_radiation=fixed_sea_albedo] -description=If using i_sea_alb_method='fixed', the global value of albedo to use. - -[namelist:jules_radiation=i_sea_alb_method] -trigger=namelist:jules_radiation=l_sea_alb_var_chl: 'jin'; - =namelist:jules_radiation=fixed_sea_albedo: 'fixed'; -value-titles=Barker and Li 1995,Jin et al. 2011,Fixed global value -values='barker','jin','fixed' - -[namelist:jules_radiation=l_albedo_obs] -trigger=namelist:files=albedo_vis_ancil_path: .true. ; - =namelist:files=albedo_nir_ancil_path: .true. ; - =namelist:jules_nvegparm=albsnf_nvgu_io: .true.; - =namelist:jules_nvegparm=albsnf_nvgl_io: .true.; - -[namelist:jules_radiation=l_sea_alb_var_chl] -trigger=namelist:files=sea_ancil_path: .true. ; - -[namelist:jules_snow=can_clump] -fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT - =all(this == 0) and any(namelist:jules_snow=cansnowpft == '.true.'); # Results in floating point exception if 0. Only used if can_model = 4 (JULES default), cansnowpft = TRUE on that tile and l_embedded_snow = TRUE (LFRic default). - -[namelist:jules_snow=cansnowpft] -compulsory=true -length=5 - -[namelist:jules_snow=i_basal_melting_opt] -values='none','instant' - -[namelist:jules_snow=i_grain_growth_opt] -values='marshall','taillandier' - -[namelist:jules_snow=i_relayer_opt] -values='original','inverse' - -[namelist:jules_surface=anthrop_heat_option] -fail-if=this != "'dukes'"; # The DUKES fixed annual cycle is the only currently available option in LFRic -trigger=namelist:jules_surface=anthrop_heat_mean: 'flanner'; -values='dukes','flanner' - -[namelist:jules_surface=cor_mo_iter] -value-titles=Limit Obukhov length in low winds, - =Improve initial guess (preferred) -values='lim_oblen','improved' - -[namelist:jules_surface=fd_stability_dep] -value-titles=Off,Surface Ri -values='none','surf_ri' - -[namelist:jules_surface=formdrag] -trigger=namelist:jules_surface=fd_stability_dep: 'eff_z0','dist_drag'; -values='none','eff_z0','dist_drag' - -[namelist:jules_surface=l_urban2t] -trigger=namelist:jules_surface_types=urban_canyon: .true.; - =namelist:jules_surface_types=urban_roof: .true.; - =namelist:jules_surface_types=urban: .false.; - =namelist:jules_urban: .true.; - =namelist:jules_urban=anthrop_heat_scale: .true.; - =namelist:files=urban_ancil_path: .true.; - =namelist:stochastic_physics=rp_lsfc_z0_urban_mult: .true. ; - -[namelist:jules_surface=l_vary_z0m_soil] -trigger=namelist:files=soil_rough_ancil_path: .true. ; - -[namelist:jules_surface=srf_ex_cnv_gust] -type=logical - -[namelist:jules_vegetation=can_rad_mod] -values='one','four','five','six' - -[namelist:jules_vegetation=l_spec_veg_z0] -trigger=namelist:jules_pftparm=z0v_io: .true.; - =namelist:stochastic_physics=rp_lsfc_z0v: .true.; - =namelist:stochastic_physics=rp_lsfc_z0v_max: .true.; - =namelist:stochastic_physics=rp_lsfc_z0v_min: .true.; - -# Dummy page to force sort order for JULES Science Settings -[namespace:science] -ns=namelist/JULES Science Settings -sort-key=Section-A12b - -# Dummy page to force sort order for Snow other parameters -[namespace:snow_other] -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=02 - -# Dummy page to force sort order for Snow radiation parameters -[namespace:snow_radiation] -ns=namelist/JULES Science Settings/jules_snow/Radiation parameters -sort-key=01 - -# Dummy page to force sort order for JULES Surface Types -[namespace:surface_types] -ns=namelist/JULES Surface Types -sort-key=Section-A12a diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/HEAD/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/HEAD/rose-meta.conf deleted file mode 100644 index 782d746877..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/HEAD/rose-meta.conf +++ /dev/null @@ -1,27 +0,0 @@ -[namelist:jules_hydrology] -compulsory=true -ns=namelist/JULES Science Settings/jules_hydrology -sort-key=Section-A12g -title=Hydrology options -url=http://jules-lsm.github.io/latest/namelists/jules_hydrology.nml.html#namelist-JULES_HYDROLOGY - -[namelist:jules_hydrology=l_hydrology] -compulsory=true -description=Enable soil hydrology -!kind=default -sort-key=Panel-G01 -trigger=namelist:jules_hydrology=l_var_rainfrac: .true.; - =namelist:jules_hydrology=l_top: .true.; - =namelist:jules_hydrology=l_pdm: .true.; - =namelist:jules_hydrology=l_limit_gsoil: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::l_hydrology - -[namelist:jules_hydrology=l_var_rainfrac] -compulsory=true -description=Enable variable large scale and convective rain fractions - =SHOULD NOT BE USED IN STANDALONE - Please see online docs. -!kind=default -sort-key=Panel-G02 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::l_var_rainfrac diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/vn2.2/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/vn2.2/rose-meta.conf deleted file mode 100644 index 782d746877..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/vn2.2/rose-meta.conf +++ /dev/null @@ -1,27 +0,0 @@ -[namelist:jules_hydrology] -compulsory=true -ns=namelist/JULES Science Settings/jules_hydrology -sort-key=Section-A12g -title=Hydrology options -url=http://jules-lsm.github.io/latest/namelists/jules_hydrology.nml.html#namelist-JULES_HYDROLOGY - -[namelist:jules_hydrology=l_hydrology] -compulsory=true -description=Enable soil hydrology -!kind=default -sort-key=Panel-G01 -trigger=namelist:jules_hydrology=l_var_rainfrac: .true.; - =namelist:jules_hydrology=l_top: .true.; - =namelist:jules_hydrology=l_pdm: .true.; - =namelist:jules_hydrology=l_limit_gsoil: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::l_hydrology - -[namelist:jules_hydrology=l_var_rainfrac] -compulsory=true -description=Enable variable large scale and convective rain fractions - =SHOULD NOT BE USED IN STANDALONE - Please see online docs. -!kind=default -sort-key=Panel-G02 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::l_var_rainfrac diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/vn3.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/vn3.0/rose-meta.conf deleted file mode 100644 index 782d746877..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/vn3.0/rose-meta.conf +++ /dev/null @@ -1,27 +0,0 @@ -[namelist:jules_hydrology] -compulsory=true -ns=namelist/JULES Science Settings/jules_hydrology -sort-key=Section-A12g -title=Hydrology options -url=http://jules-lsm.github.io/latest/namelists/jules_hydrology.nml.html#namelist-JULES_HYDROLOGY - -[namelist:jules_hydrology=l_hydrology] -compulsory=true -description=Enable soil hydrology -!kind=default -sort-key=Panel-G01 -trigger=namelist:jules_hydrology=l_var_rainfrac: .true.; - =namelist:jules_hydrology=l_top: .true.; - =namelist:jules_hydrology=l_pdm: .true.; - =namelist:jules_hydrology=l_limit_gsoil: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::l_hydrology - -[namelist:jules_hydrology=l_var_rainfrac] -compulsory=true -description=Enable variable large scale and convective rain fractions - =SHOULD NOT BE USED IN STANDALONE - Please see online docs. -!kind=default -sort-key=Panel-G02 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::l_var_rainfrac diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/HEAD/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/HEAD/rose-meta.conf deleted file mode 100644 index 1cb77755f3..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/HEAD/rose-meta.conf +++ /dev/null @@ -1,121 +0,0 @@ -[namelist:jules_nvegparm] -compulsory=true -description=Parameters required for each of the non-vegetated surface types. -ns=namelist/JULES Science Settings/jules_nvegparm -sort-key=Section-A12n -title=Non-vegetated surface parameters -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#namelist-JULES_NVEGPARM -widget[rose-config-edit]=cylc8_compat.PageArrayTable - -[namelist:jules_nvegparm=albsnc_nvg_io] -compulsory=true -description=Snow-covered albedo -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnc_nvg_io - -[namelist:jules_nvegparm=albsnf_nvg_io] -compulsory=true -description=Snow-free albedo -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=-1:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvg_io - -[namelist:jules_nvegparm=albsnf_nvgl_io] -compulsory=true -description=Lower limit on albsnf_nvg_io -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvgl_io - -[namelist:jules_nvegparm=albsnf_nvgu_io] -compulsory=true -description=Upper limit on albsnf_nvg_io -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvgu_io - -[namelist:jules_nvegparm=catch_nvg_io] -compulsory=true -description=Capacity for water (kg m-2) -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::catch_nvg_io - -[namelist:jules_nvegparm=ch_nvg_io] -compulsory=true -description=Heat capacity of this surface type (J K-1 m-2) -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::ch_nvg_io - -[namelist:jules_nvegparm=emis_nvg_io] -compulsory=true -description=Surface emissivity -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::emis_nvg_io - -[namelist:jules_nvegparm=gs_nvg_io] -compulsory=true -description=Surface conductance (m s-1) -fail-if=len(this) != namelist:jules_surface_types=nnvg -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::gs_nvg_io - -[namelist:jules_nvegparm=infil_nvg_io] -compulsory=true -description=Infiltration enhancement factor -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::infil_nvg_io - -[namelist:jules_nvegparm=vf_nvg_io] -compulsory=true -description=Fractional coverage of non-vegetation "canopy" -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::vf_nvg_io - -[namelist:jules_nvegparm=z0_nvg_io] -compulsory=true -description=Roughness length for momentum (m) -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::z0_nvg_io - -[namelist:jules_nvegparm=z0hm_nvg_io] -compulsory=true -description=Ratio of the roughness length for heat to the roughness length for momentum -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::z0hm_nvg_io diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn2.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn2.0/rose-meta.conf deleted file mode 100644 index 50c75e8962..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn2.0/rose-meta.conf +++ /dev/null @@ -1,121 +0,0 @@ -[namelist:jules_nvegparm] -compulsory=true -description=Parameters required for each of the non-vegetated surface types. -ns=namelist/JULES Science Settings/jules_nvegparm -sort-key=Section-A12f -title=Non-vegetated surface parameters -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#namelist-JULES_NVEGPARM -widget[rose-config-edit]=rose.config_editor.pagewidget.table.PageArrayTable - -[namelist:jules_nvegparm=albsnc_nvg_io] -compulsory=true -description=Snow-covered albedo -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnc_nvg_io - -[namelist:jules_nvegparm=albsnf_nvg_io] -compulsory=true -description=Snow-free albedo -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=-1:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvg_io - -[namelist:jules_nvegparm=albsnf_nvgl_io] -compulsory=true -description=Lower limit on albsnf_nvg_io -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvgl_io - -[namelist:jules_nvegparm=albsnf_nvgu_io] -compulsory=true -description=Upper limit on albsnf_nvg_io -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvgu_io - -[namelist:jules_nvegparm=catch_nvg_io] -compulsory=true -description=Capacity for water (kg m-2) -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::catch_nvg_io - -[namelist:jules_nvegparm=ch_nvg_io] -compulsory=true -description=Heat capacity of this surface type (J K-1 m-2) -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::ch_nvg_io - -[namelist:jules_nvegparm=emis_nvg_io] -compulsory=true -description=Surface emissivity -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::emis_nvg_io - -[namelist:jules_nvegparm=gs_nvg_io] -compulsory=true -description=Surface conductance (m s-1) -fail-if=len(this) != namelist:jules_surface_types=nnvg -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::gs_nvg_io - -[namelist:jules_nvegparm=infil_nvg_io] -compulsory=true -description=Infiltration enhancement factor -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::infil_nvg_io - -[namelist:jules_nvegparm=vf_nvg_io] -compulsory=true -description=Fractional coverage of non-vegetation "canopy" -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::vf_nvg_io - -[namelist:jules_nvegparm=z0_nvg_io] -compulsory=true -description=Roughness length for momentum (m) -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::z0_nvg_io - -[namelist:jules_nvegparm=z0hm_nvg_io] -compulsory=true -description=Ratio of the roughness length for heat to the roughness length for momentum -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::z0hm_nvg_io diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn2.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn2.1/rose-meta.conf deleted file mode 100644 index 50c75e8962..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn2.1/rose-meta.conf +++ /dev/null @@ -1,121 +0,0 @@ -[namelist:jules_nvegparm] -compulsory=true -description=Parameters required for each of the non-vegetated surface types. -ns=namelist/JULES Science Settings/jules_nvegparm -sort-key=Section-A12f -title=Non-vegetated surface parameters -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#namelist-JULES_NVEGPARM -widget[rose-config-edit]=rose.config_editor.pagewidget.table.PageArrayTable - -[namelist:jules_nvegparm=albsnc_nvg_io] -compulsory=true -description=Snow-covered albedo -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnc_nvg_io - -[namelist:jules_nvegparm=albsnf_nvg_io] -compulsory=true -description=Snow-free albedo -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=-1:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvg_io - -[namelist:jules_nvegparm=albsnf_nvgl_io] -compulsory=true -description=Lower limit on albsnf_nvg_io -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvgl_io - -[namelist:jules_nvegparm=albsnf_nvgu_io] -compulsory=true -description=Upper limit on albsnf_nvg_io -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvgu_io - -[namelist:jules_nvegparm=catch_nvg_io] -compulsory=true -description=Capacity for water (kg m-2) -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::catch_nvg_io - -[namelist:jules_nvegparm=ch_nvg_io] -compulsory=true -description=Heat capacity of this surface type (J K-1 m-2) -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::ch_nvg_io - -[namelist:jules_nvegparm=emis_nvg_io] -compulsory=true -description=Surface emissivity -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::emis_nvg_io - -[namelist:jules_nvegparm=gs_nvg_io] -compulsory=true -description=Surface conductance (m s-1) -fail-if=len(this) != namelist:jules_surface_types=nnvg -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::gs_nvg_io - -[namelist:jules_nvegparm=infil_nvg_io] -compulsory=true -description=Infiltration enhancement factor -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::infil_nvg_io - -[namelist:jules_nvegparm=vf_nvg_io] -compulsory=true -description=Fractional coverage of non-vegetation "canopy" -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::vf_nvg_io - -[namelist:jules_nvegparm=z0_nvg_io] -compulsory=true -description=Roughness length for momentum (m) -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::z0_nvg_io - -[namelist:jules_nvegparm=z0hm_nvg_io] -compulsory=true -description=Ratio of the roughness length for heat to the roughness length for momentum -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::z0hm_nvg_io diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn2.2/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn2.2/rose-meta.conf deleted file mode 100644 index 1cb77755f3..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn2.2/rose-meta.conf +++ /dev/null @@ -1,121 +0,0 @@ -[namelist:jules_nvegparm] -compulsory=true -description=Parameters required for each of the non-vegetated surface types. -ns=namelist/JULES Science Settings/jules_nvegparm -sort-key=Section-A12n -title=Non-vegetated surface parameters -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#namelist-JULES_NVEGPARM -widget[rose-config-edit]=cylc8_compat.PageArrayTable - -[namelist:jules_nvegparm=albsnc_nvg_io] -compulsory=true -description=Snow-covered albedo -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnc_nvg_io - -[namelist:jules_nvegparm=albsnf_nvg_io] -compulsory=true -description=Snow-free albedo -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=-1:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvg_io - -[namelist:jules_nvegparm=albsnf_nvgl_io] -compulsory=true -description=Lower limit on albsnf_nvg_io -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvgl_io - -[namelist:jules_nvegparm=albsnf_nvgu_io] -compulsory=true -description=Upper limit on albsnf_nvg_io -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvgu_io - -[namelist:jules_nvegparm=catch_nvg_io] -compulsory=true -description=Capacity for water (kg m-2) -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::catch_nvg_io - -[namelist:jules_nvegparm=ch_nvg_io] -compulsory=true -description=Heat capacity of this surface type (J K-1 m-2) -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::ch_nvg_io - -[namelist:jules_nvegparm=emis_nvg_io] -compulsory=true -description=Surface emissivity -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::emis_nvg_io - -[namelist:jules_nvegparm=gs_nvg_io] -compulsory=true -description=Surface conductance (m s-1) -fail-if=len(this) != namelist:jules_surface_types=nnvg -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::gs_nvg_io - -[namelist:jules_nvegparm=infil_nvg_io] -compulsory=true -description=Infiltration enhancement factor -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::infil_nvg_io - -[namelist:jules_nvegparm=vf_nvg_io] -compulsory=true -description=Fractional coverage of non-vegetation "canopy" -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::vf_nvg_io - -[namelist:jules_nvegparm=z0_nvg_io] -compulsory=true -description=Roughness length for momentum (m) -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::z0_nvg_io - -[namelist:jules_nvegparm=z0hm_nvg_io] -compulsory=true -description=Ratio of the roughness length for heat to the roughness length for momentum -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::z0hm_nvg_io diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn3.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn3.0/rose-meta.conf deleted file mode 100644 index 1cb77755f3..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn3.0/rose-meta.conf +++ /dev/null @@ -1,121 +0,0 @@ -[namelist:jules_nvegparm] -compulsory=true -description=Parameters required for each of the non-vegetated surface types. -ns=namelist/JULES Science Settings/jules_nvegparm -sort-key=Section-A12n -title=Non-vegetated surface parameters -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#namelist-JULES_NVEGPARM -widget[rose-config-edit]=cylc8_compat.PageArrayTable - -[namelist:jules_nvegparm=albsnc_nvg_io] -compulsory=true -description=Snow-covered albedo -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnc_nvg_io - -[namelist:jules_nvegparm=albsnf_nvg_io] -compulsory=true -description=Snow-free albedo -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=-1:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvg_io - -[namelist:jules_nvegparm=albsnf_nvgl_io] -compulsory=true -description=Lower limit on albsnf_nvg_io -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvgl_io - -[namelist:jules_nvegparm=albsnf_nvgu_io] -compulsory=true -description=Upper limit on albsnf_nvg_io -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvgu_io - -[namelist:jules_nvegparm=catch_nvg_io] -compulsory=true -description=Capacity for water (kg m-2) -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::catch_nvg_io - -[namelist:jules_nvegparm=ch_nvg_io] -compulsory=true -description=Heat capacity of this surface type (J K-1 m-2) -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::ch_nvg_io - -[namelist:jules_nvegparm=emis_nvg_io] -compulsory=true -description=Surface emissivity -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::emis_nvg_io - -[namelist:jules_nvegparm=gs_nvg_io] -compulsory=true -description=Surface conductance (m s-1) -fail-if=len(this) != namelist:jules_surface_types=nnvg -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::gs_nvg_io - -[namelist:jules_nvegparm=infil_nvg_io] -compulsory=true -description=Infiltration enhancement factor -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::infil_nvg_io - -[namelist:jules_nvegparm=vf_nvg_io] -compulsory=true -description=Fractional coverage of non-vegetation "canopy" -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::vf_nvg_io - -[namelist:jules_nvegparm=z0_nvg_io] -compulsory=true -description=Roughness length for momentum (m) -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::z0_nvg_io - -[namelist:jules_nvegparm=z0hm_nvg_io] -compulsory=true -description=Ratio of the roughness length for heat to the roughness length for momentum -fail-if=len(this) != namelist:jules_surface_types=nnvg -!kind=default -length=: -type=real -url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::z0hm_nvg_io diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/HEAD/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/HEAD/rose-meta.conf deleted file mode 100644 index c9486d05e9..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/HEAD/rose-meta.conf +++ /dev/null @@ -1,167 +0,0 @@ -[namelist:jules_pftparm] -compulsory=true -description=This section is organised into two panels: - = "Radiation parameters" contains parameters related to radiative transfer in vegetation, - = "Other parameters" contains everything else. -ns=namelist/JULES Science Settings/jules_pftparm -sort-key=Section-A12l -title=PFT parameters -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#namelist-JULES_PFTPARM -widget[rose-config-edit]=cylc8_compat.PageArrayTable - -[namelist:jules_pftparm=albsnc_max_io] -compulsory=true -description=Snow-covered albedo for large LAI -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::albsnc_max_io - -[namelist:jules_pftparm=alnir_io] -compulsory=true -description=NIR Leaf reflection coeff. - =Leaf reflection coefficient for Near Infra Red wavelengths > 690nm. -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alnir_io - -[namelist:jules_pftparm=alpar_io] -compulsory=true -description=VIS Leaf reflection coeff. - =Leaf reflection coefficient for wavelengths < 690nm (Photosyntehtically Active Radiation). -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alpar_io - -[namelist:jules_pftparm=catch0_io] -compulsory=true -description=Minimum canopy capacity (kg m-2) -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::catch0_io - -[namelist:jules_pftparm=dcatch_dlai_io] -compulsory=true -description=Rate of change of canopy capacity with LAI (kg m-2) -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::dcatch_dlai_io - -[namelist:jules_pftparm=fsmc_p0_io] -compulsory=true -description=PFT-dependent parameter governing the threshold at which the plant starts to experience water stress - =due to lack of water in the soil -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fsmc_p0_io - -[namelist:jules_pftparm=kext_io] -compulsory=true -description=Light extinction coefficient - =Used with Beers Law for light absorption through tile canopies -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -sort-key=Panel-HR02 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::kext_io - -[namelist:jules_pftparm=knl_io] -compulsory=true -description=Decay of nitrogen through the canopy for canopy radiation model 6 - =SHOULD NOT BE THE SAME AS KN! -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::knl_io - -[namelist:jules_pftparm=omega_io] -compulsory=true -description=VIS Leaf scattering coeff. - =Leaf scattering coefficient for wavelengths < 690nm (Photosyntehtically Active Radiation). -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omega_io - -[namelist:jules_pftparm=omnir_io] -compulsory=true -description=NIR Leaf scattering coeff. - =Leaf scattering coefficient for Near Infra Red wavelengths > 690nm. -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omnir_io - -[namelist:jules_pftparm=z0hm_pft_io] -compulsory=true -description=Ratio of the roughness length for heat to the roughness length for momentum -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::z0hm_pft_io - -[namelist:jules_pftparm=z0v_io] -compulsory=true -description=Specified vegetation roughness length for momentum (if l_spec_veg_z0) -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::z0v_io - -# Dummy page to force sort order for pftparm other parameters -[namespace:pftparm_other] -description=Parameters not related to radiative transfer of vegetation. - =Related parameters are grouped together where appropriate. -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=02 - -# Dummy page to force sort order for pftparm radiation parameters -[namespace:pftparm_radiation] -description=Parameters related to radiative transfer of vegetation -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -sort-key=01 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/vn2.2/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/vn2.2/rose-meta.conf deleted file mode 100644 index c9486d05e9..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/vn2.2/rose-meta.conf +++ /dev/null @@ -1,167 +0,0 @@ -[namelist:jules_pftparm] -compulsory=true -description=This section is organised into two panels: - = "Radiation parameters" contains parameters related to radiative transfer in vegetation, - = "Other parameters" contains everything else. -ns=namelist/JULES Science Settings/jules_pftparm -sort-key=Section-A12l -title=PFT parameters -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#namelist-JULES_PFTPARM -widget[rose-config-edit]=cylc8_compat.PageArrayTable - -[namelist:jules_pftparm=albsnc_max_io] -compulsory=true -description=Snow-covered albedo for large LAI -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::albsnc_max_io - -[namelist:jules_pftparm=alnir_io] -compulsory=true -description=NIR Leaf reflection coeff. - =Leaf reflection coefficient for Near Infra Red wavelengths > 690nm. -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alnir_io - -[namelist:jules_pftparm=alpar_io] -compulsory=true -description=VIS Leaf reflection coeff. - =Leaf reflection coefficient for wavelengths < 690nm (Photosyntehtically Active Radiation). -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alpar_io - -[namelist:jules_pftparm=catch0_io] -compulsory=true -description=Minimum canopy capacity (kg m-2) -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::catch0_io - -[namelist:jules_pftparm=dcatch_dlai_io] -compulsory=true -description=Rate of change of canopy capacity with LAI (kg m-2) -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::dcatch_dlai_io - -[namelist:jules_pftparm=fsmc_p0_io] -compulsory=true -description=PFT-dependent parameter governing the threshold at which the plant starts to experience water stress - =due to lack of water in the soil -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fsmc_p0_io - -[namelist:jules_pftparm=kext_io] -compulsory=true -description=Light extinction coefficient - =Used with Beers Law for light absorption through tile canopies -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -sort-key=Panel-HR02 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::kext_io - -[namelist:jules_pftparm=knl_io] -compulsory=true -description=Decay of nitrogen through the canopy for canopy radiation model 6 - =SHOULD NOT BE THE SAME AS KN! -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::knl_io - -[namelist:jules_pftparm=omega_io] -compulsory=true -description=VIS Leaf scattering coeff. - =Leaf scattering coefficient for wavelengths < 690nm (Photosyntehtically Active Radiation). -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omega_io - -[namelist:jules_pftparm=omnir_io] -compulsory=true -description=NIR Leaf scattering coeff. - =Leaf scattering coefficient for Near Infra Red wavelengths > 690nm. -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omnir_io - -[namelist:jules_pftparm=z0hm_pft_io] -compulsory=true -description=Ratio of the roughness length for heat to the roughness length for momentum -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::z0hm_pft_io - -[namelist:jules_pftparm=z0v_io] -compulsory=true -description=Specified vegetation roughness length for momentum (if l_spec_veg_z0) -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::z0v_io - -# Dummy page to force sort order for pftparm other parameters -[namespace:pftparm_other] -description=Parameters not related to radiative transfer of vegetation. - =Related parameters are grouped together where appropriate. -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=02 - -# Dummy page to force sort order for pftparm radiation parameters -[namespace:pftparm_radiation] -description=Parameters related to radiative transfer of vegetation -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -sort-key=01 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/vn3.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/vn3.0/rose-meta.conf deleted file mode 100644 index c9486d05e9..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/vn3.0/rose-meta.conf +++ /dev/null @@ -1,167 +0,0 @@ -[namelist:jules_pftparm] -compulsory=true -description=This section is organised into two panels: - = "Radiation parameters" contains parameters related to radiative transfer in vegetation, - = "Other parameters" contains everything else. -ns=namelist/JULES Science Settings/jules_pftparm -sort-key=Section-A12l -title=PFT parameters -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#namelist-JULES_PFTPARM -widget[rose-config-edit]=cylc8_compat.PageArrayTable - -[namelist:jules_pftparm=albsnc_max_io] -compulsory=true -description=Snow-covered albedo for large LAI -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::albsnc_max_io - -[namelist:jules_pftparm=alnir_io] -compulsory=true -description=NIR Leaf reflection coeff. - =Leaf reflection coefficient for Near Infra Red wavelengths > 690nm. -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alnir_io - -[namelist:jules_pftparm=alpar_io] -compulsory=true -description=VIS Leaf reflection coeff. - =Leaf reflection coefficient for wavelengths < 690nm (Photosyntehtically Active Radiation). -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alpar_io - -[namelist:jules_pftparm=catch0_io] -compulsory=true -description=Minimum canopy capacity (kg m-2) -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::catch0_io - -[namelist:jules_pftparm=dcatch_dlai_io] -compulsory=true -description=Rate of change of canopy capacity with LAI (kg m-2) -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::dcatch_dlai_io - -[namelist:jules_pftparm=fsmc_p0_io] -compulsory=true -description=PFT-dependent parameter governing the threshold at which the plant starts to experience water stress - =due to lack of water in the soil -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fsmc_p0_io - -[namelist:jules_pftparm=kext_io] -compulsory=true -description=Light extinction coefficient - =Used with Beers Law for light absorption through tile canopies -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -sort-key=Panel-HR02 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::kext_io - -[namelist:jules_pftparm=knl_io] -compulsory=true -description=Decay of nitrogen through the canopy for canopy radiation model 6 - =SHOULD NOT BE THE SAME AS KN! -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::knl_io - -[namelist:jules_pftparm=omega_io] -compulsory=true -description=VIS Leaf scattering coeff. - =Leaf scattering coefficient for wavelengths < 690nm (Photosyntehtically Active Radiation). -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omega_io - -[namelist:jules_pftparm=omnir_io] -compulsory=true -description=NIR Leaf scattering coeff. - =Leaf scattering coefficient for Near Infra Red wavelengths > 690nm. -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omnir_io - -[namelist:jules_pftparm=z0hm_pft_io] -compulsory=true -description=Ratio of the roughness length for heat to the roughness length for momentum -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::z0hm_pft_io - -[namelist:jules_pftparm=z0v_io] -compulsory=true -description=Specified vegetation roughness length for momentum (if l_spec_veg_z0) -fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::z0v_io - -# Dummy page to force sort order for pftparm other parameters -[namespace:pftparm_other] -description=Parameters not related to radiative transfer of vegetation. - =Related parameters are grouped together where appropriate. -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=02 - -# Dummy page to force sort order for pftparm radiation parameters -[namespace:pftparm_radiation] -description=Parameters related to radiative transfer of vegetation -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -sort-key=01 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/HEAD/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/HEAD/rose-meta.conf deleted file mode 100644 index 2e9f46c196..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/HEAD/rose-meta.conf +++ /dev/null @@ -1,113 +0,0 @@ -[namelist:jules_radiation] -compulsory=true -ns=namelist/JULES Science Settings/jules_radiation -sort-key=Section-A12d -title=Radiation options -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#namelist-JULES_RADIATION - -[namelist:jules_radiation=fixed_sea_albedo] -compulsory=true -description=If using i_sea_alb_method=4 or 5, the global value of albedo to use. -!kind=default -range=0.0:1.0 -sort-key=Panel-B05a -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::fixed_sea_albedo - -[namelist:jules_radiation=i_sea_alb_method] -compulsory=true -description=Choice of model for the Ocean Surface Albedo (open water, - =ice free) -!enumeration=true -sort-key=Panel-B05 -trigger=namelist:jules_radiation=l_sea_alb_var_chl: 3; - =namelist:jules_radiation=fixed_sea_albedo: 4,5; - =namelist:jules_radiation=l_spec_sea_alb: 1,2,3; -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::i_sea_alb_method -value-titles=Briegleb and Ramanathan 1982,Barker and Li 1995,Jin et al. 2011,Fixed global value,Fixed sea with sea-ice param -values=1,2,3,4,5 - -[namelist:jules_radiation=l_albedo_obs] -compulsory=true -description=Scale albedos of land-surface tiles to agree with obs -!kind=default -sort-key=Panel-B01 -trigger=namelist:jules_pftparm=albsnf_maxu_io: .true.; - =namelist:jules_pftparm=albsnf_maxl_io: .true.; - =namelist:jules_pftparm=alparu_io: .true.; - =namelist:jules_pftparm=alparl_io: .true.; - =namelist:jules_pftparm=alniru_io: .true.; - =namelist:jules_pftparm=alnirl_io: .true.; - =namelist:jules_pftparm=omegau_io: .true.; - =namelist:jules_pftparm=omegal_io: .true.; - =namelist:jules_pftparm=omniru_io: .true.; - =namelist:jules_pftparm=omnirl_io: .true.; - =namelist:jules_nvegparm=albsnf_nvgu_io: .true.; - =namelist:jules_nvegparm=albsnf_nvgl_io: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_albedo_obs - -[namelist:jules_radiation=l_hapke_soil] -compulsory=true -description=Switch to enable Hapke's model of soil reflectance to include a zenith-angle dependence, but without the opposition effect. -!kind=default -sort-key=Panel-B03 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_hapke_soil - -[namelist:jules_radiation=l_niso_direct] -compulsory=true -description=Use the full non-isotropic expression for direct scattering in plant canopies. -!kind=default -sort-key=Panel-B02a1 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_niso_direct - -[namelist:jules_radiation=l_partition_albsoil] -compulsory=true -description=Switch to apply a spectral partitioning of the broad-band soil albedo. -!kind=default -sort-key=Panel-B04 -trigger=namelist:jules_radiation=ratio_albsoil: .true.; - =namelist:jules_radiation=swdn_frac_albsoil: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_partition_albsoil - -[namelist:jules_radiation=l_sea_alb_var_chl] -compulsory=true -description=Use spatially varying chlorophyll content to calculate the open sea albedos - =NOT AVAILABLE TO STANDALONE -help=The Jin et al. parameterisation of open sea albedo includes chlorophyll content. This can either be: - =FALSE: Held constant at 0.5 mg m-3, - =or, - =TRUE: Input as an ancillary field. -!kind=default -sort-key=Panel-B05b -type=logical - -[namelist:jules_radiation=l_spec_alb_bs] -compulsory=true -description=Use a single value for both the direct and diffuse beams -!kind=default -sort-key=Panel-B02a -trigger=namelist:jules_radiation=l_niso_direct: .false.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_spec_alb_bs - -[namelist:jules_radiation=ratio_albsoil] -compulsory=true -description=Ratio of the NIR to the VIS albedo of bare soil -!kind=default -range=1.0:10.0 -sort-key=Panel-B04a -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::ratio_albsoil - -[namelist:jules_radiation=swdn_frac_albsoil] -compulsory=true -description=The fraction of the total downward SW radiation assumed to be in the NIR part of the spectrum when partitioning the broad-band soil albedo. -!kind=default -range=0.0:1.0 -sort-key=Panel-B04b -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::swdn_frac_albsoil diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn2.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn2.0/rose-meta.conf deleted file mode 100644 index b85e12b626..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn2.0/rose-meta.conf +++ /dev/null @@ -1,51 +0,0 @@ -[namelist:jules_radiation] -compulsory=true -ns=namelist/JULES Science Settings/jules_radiation -sort-key=Section-A12b -title=Radiation options -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#namelist-JULES_RADIATION - -[namelist:jules_radiation=fixed_sea_albedo] -compulsory=true -description=If using i_sea_alb_method=4 or 5, the global value of albedo to use. -!kind=default -range=0.0:1.0 -sort-key=Panel-B05a -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::fixed_sea_albedo - -[namelist:jules_radiation=l_hapke_soil] -compulsory=true -description=Switch to enable Hapke's model of soil reflectance to include a zenith-angle dependence, but without the opposition effect. -!kind=default -sort-key=Panel-B03 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_hapke_soil - -[namelist:jules_radiation=l_partition_albsoil] -compulsory=true -description=Switch to apply a spectral partitioning of the broad-band soil albedo. -!kind=default -sort-key=Panel-B04 -trigger=namelist:jules_radiation=ratio_albsoil: .true.; - =namelist:jules_radiation=swdn_frac_albsoil: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_partition_albsoil - -[namelist:jules_radiation=ratio_albsoil] -compulsory=true -description=Ratio of the NIR to the VIS albedo of bare soil -!kind=default -range=1.0:10.0 -sort-key=Panel-B04a -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::ratio_albsoil - -[namelist:jules_radiation=swdn_frac_albsoil] -compulsory=true -description=The fraction of the total downward SW radiation assumed to be in the NIR part of the spectrum when partitioning the broad-band soil albedo. -!kind=default -range=0.0:1.0 -sort-key=Panel-B04b -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::swdn_frac_albsoil diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn2.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn2.1/rose-meta.conf deleted file mode 100644 index b85e12b626..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn2.1/rose-meta.conf +++ /dev/null @@ -1,51 +0,0 @@ -[namelist:jules_radiation] -compulsory=true -ns=namelist/JULES Science Settings/jules_radiation -sort-key=Section-A12b -title=Radiation options -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#namelist-JULES_RADIATION - -[namelist:jules_radiation=fixed_sea_albedo] -compulsory=true -description=If using i_sea_alb_method=4 or 5, the global value of albedo to use. -!kind=default -range=0.0:1.0 -sort-key=Panel-B05a -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::fixed_sea_albedo - -[namelist:jules_radiation=l_hapke_soil] -compulsory=true -description=Switch to enable Hapke's model of soil reflectance to include a zenith-angle dependence, but without the opposition effect. -!kind=default -sort-key=Panel-B03 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_hapke_soil - -[namelist:jules_radiation=l_partition_albsoil] -compulsory=true -description=Switch to apply a spectral partitioning of the broad-band soil albedo. -!kind=default -sort-key=Panel-B04 -trigger=namelist:jules_radiation=ratio_albsoil: .true.; - =namelist:jules_radiation=swdn_frac_albsoil: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_partition_albsoil - -[namelist:jules_radiation=ratio_albsoil] -compulsory=true -description=Ratio of the NIR to the VIS albedo of bare soil -!kind=default -range=1.0:10.0 -sort-key=Panel-B04a -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::ratio_albsoil - -[namelist:jules_radiation=swdn_frac_albsoil] -compulsory=true -description=The fraction of the total downward SW radiation assumed to be in the NIR part of the spectrum when partitioning the broad-band soil albedo. -!kind=default -range=0.0:1.0 -sort-key=Panel-B04b -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::swdn_frac_albsoil diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn2.2/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn2.2/rose-meta.conf deleted file mode 100644 index 2e9f46c196..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn2.2/rose-meta.conf +++ /dev/null @@ -1,113 +0,0 @@ -[namelist:jules_radiation] -compulsory=true -ns=namelist/JULES Science Settings/jules_radiation -sort-key=Section-A12d -title=Radiation options -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#namelist-JULES_RADIATION - -[namelist:jules_radiation=fixed_sea_albedo] -compulsory=true -description=If using i_sea_alb_method=4 or 5, the global value of albedo to use. -!kind=default -range=0.0:1.0 -sort-key=Panel-B05a -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::fixed_sea_albedo - -[namelist:jules_radiation=i_sea_alb_method] -compulsory=true -description=Choice of model for the Ocean Surface Albedo (open water, - =ice free) -!enumeration=true -sort-key=Panel-B05 -trigger=namelist:jules_radiation=l_sea_alb_var_chl: 3; - =namelist:jules_radiation=fixed_sea_albedo: 4,5; - =namelist:jules_radiation=l_spec_sea_alb: 1,2,3; -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::i_sea_alb_method -value-titles=Briegleb and Ramanathan 1982,Barker and Li 1995,Jin et al. 2011,Fixed global value,Fixed sea with sea-ice param -values=1,2,3,4,5 - -[namelist:jules_radiation=l_albedo_obs] -compulsory=true -description=Scale albedos of land-surface tiles to agree with obs -!kind=default -sort-key=Panel-B01 -trigger=namelist:jules_pftparm=albsnf_maxu_io: .true.; - =namelist:jules_pftparm=albsnf_maxl_io: .true.; - =namelist:jules_pftparm=alparu_io: .true.; - =namelist:jules_pftparm=alparl_io: .true.; - =namelist:jules_pftparm=alniru_io: .true.; - =namelist:jules_pftparm=alnirl_io: .true.; - =namelist:jules_pftparm=omegau_io: .true.; - =namelist:jules_pftparm=omegal_io: .true.; - =namelist:jules_pftparm=omniru_io: .true.; - =namelist:jules_pftparm=omnirl_io: .true.; - =namelist:jules_nvegparm=albsnf_nvgu_io: .true.; - =namelist:jules_nvegparm=albsnf_nvgl_io: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_albedo_obs - -[namelist:jules_radiation=l_hapke_soil] -compulsory=true -description=Switch to enable Hapke's model of soil reflectance to include a zenith-angle dependence, but without the opposition effect. -!kind=default -sort-key=Panel-B03 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_hapke_soil - -[namelist:jules_radiation=l_niso_direct] -compulsory=true -description=Use the full non-isotropic expression for direct scattering in plant canopies. -!kind=default -sort-key=Panel-B02a1 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_niso_direct - -[namelist:jules_radiation=l_partition_albsoil] -compulsory=true -description=Switch to apply a spectral partitioning of the broad-band soil albedo. -!kind=default -sort-key=Panel-B04 -trigger=namelist:jules_radiation=ratio_albsoil: .true.; - =namelist:jules_radiation=swdn_frac_albsoil: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_partition_albsoil - -[namelist:jules_radiation=l_sea_alb_var_chl] -compulsory=true -description=Use spatially varying chlorophyll content to calculate the open sea albedos - =NOT AVAILABLE TO STANDALONE -help=The Jin et al. parameterisation of open sea albedo includes chlorophyll content. This can either be: - =FALSE: Held constant at 0.5 mg m-3, - =or, - =TRUE: Input as an ancillary field. -!kind=default -sort-key=Panel-B05b -type=logical - -[namelist:jules_radiation=l_spec_alb_bs] -compulsory=true -description=Use a single value for both the direct and diffuse beams -!kind=default -sort-key=Panel-B02a -trigger=namelist:jules_radiation=l_niso_direct: .false.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_spec_alb_bs - -[namelist:jules_radiation=ratio_albsoil] -compulsory=true -description=Ratio of the NIR to the VIS albedo of bare soil -!kind=default -range=1.0:10.0 -sort-key=Panel-B04a -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::ratio_albsoil - -[namelist:jules_radiation=swdn_frac_albsoil] -compulsory=true -description=The fraction of the total downward SW radiation assumed to be in the NIR part of the spectrum when partitioning the broad-band soil albedo. -!kind=default -range=0.0:1.0 -sort-key=Panel-B04b -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::swdn_frac_albsoil diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn3.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn3.0/rose-meta.conf deleted file mode 100644 index 2e9f46c196..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn3.0/rose-meta.conf +++ /dev/null @@ -1,113 +0,0 @@ -[namelist:jules_radiation] -compulsory=true -ns=namelist/JULES Science Settings/jules_radiation -sort-key=Section-A12d -title=Radiation options -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#namelist-JULES_RADIATION - -[namelist:jules_radiation=fixed_sea_albedo] -compulsory=true -description=If using i_sea_alb_method=4 or 5, the global value of albedo to use. -!kind=default -range=0.0:1.0 -sort-key=Panel-B05a -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::fixed_sea_albedo - -[namelist:jules_radiation=i_sea_alb_method] -compulsory=true -description=Choice of model for the Ocean Surface Albedo (open water, - =ice free) -!enumeration=true -sort-key=Panel-B05 -trigger=namelist:jules_radiation=l_sea_alb_var_chl: 3; - =namelist:jules_radiation=fixed_sea_albedo: 4,5; - =namelist:jules_radiation=l_spec_sea_alb: 1,2,3; -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::i_sea_alb_method -value-titles=Briegleb and Ramanathan 1982,Barker and Li 1995,Jin et al. 2011,Fixed global value,Fixed sea with sea-ice param -values=1,2,3,4,5 - -[namelist:jules_radiation=l_albedo_obs] -compulsory=true -description=Scale albedos of land-surface tiles to agree with obs -!kind=default -sort-key=Panel-B01 -trigger=namelist:jules_pftparm=albsnf_maxu_io: .true.; - =namelist:jules_pftparm=albsnf_maxl_io: .true.; - =namelist:jules_pftparm=alparu_io: .true.; - =namelist:jules_pftparm=alparl_io: .true.; - =namelist:jules_pftparm=alniru_io: .true.; - =namelist:jules_pftparm=alnirl_io: .true.; - =namelist:jules_pftparm=omegau_io: .true.; - =namelist:jules_pftparm=omegal_io: .true.; - =namelist:jules_pftparm=omniru_io: .true.; - =namelist:jules_pftparm=omnirl_io: .true.; - =namelist:jules_nvegparm=albsnf_nvgu_io: .true.; - =namelist:jules_nvegparm=albsnf_nvgl_io: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_albedo_obs - -[namelist:jules_radiation=l_hapke_soil] -compulsory=true -description=Switch to enable Hapke's model of soil reflectance to include a zenith-angle dependence, but without the opposition effect. -!kind=default -sort-key=Panel-B03 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_hapke_soil - -[namelist:jules_radiation=l_niso_direct] -compulsory=true -description=Use the full non-isotropic expression for direct scattering in plant canopies. -!kind=default -sort-key=Panel-B02a1 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_niso_direct - -[namelist:jules_radiation=l_partition_albsoil] -compulsory=true -description=Switch to apply a spectral partitioning of the broad-band soil albedo. -!kind=default -sort-key=Panel-B04 -trigger=namelist:jules_radiation=ratio_albsoil: .true.; - =namelist:jules_radiation=swdn_frac_albsoil: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_partition_albsoil - -[namelist:jules_radiation=l_sea_alb_var_chl] -compulsory=true -description=Use spatially varying chlorophyll content to calculate the open sea albedos - =NOT AVAILABLE TO STANDALONE -help=The Jin et al. parameterisation of open sea albedo includes chlorophyll content. This can either be: - =FALSE: Held constant at 0.5 mg m-3, - =or, - =TRUE: Input as an ancillary field. -!kind=default -sort-key=Panel-B05b -type=logical - -[namelist:jules_radiation=l_spec_alb_bs] -compulsory=true -description=Use a single value for both the direct and diffuse beams -!kind=default -sort-key=Panel-B02a -trigger=namelist:jules_radiation=l_niso_direct: .false.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_spec_alb_bs - -[namelist:jules_radiation=ratio_albsoil] -compulsory=true -description=Ratio of the NIR to the VIS albedo of bare soil -!kind=default -range=1.0:10.0 -sort-key=Panel-B04a -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::ratio_albsoil - -[namelist:jules_radiation=swdn_frac_albsoil] -compulsory=true -description=The fraction of the total downward SW radiation assumed to be in the NIR part of the spectrum when partitioning the broad-band soil albedo. -!kind=default -range=0.0:1.0 -sort-key=Panel-B04b -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::swdn_frac_albsoil diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/HEAD/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/HEAD/rose-meta.conf deleted file mode 100644 index 8f6938c9e4..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/HEAD/rose-meta.conf +++ /dev/null @@ -1,245 +0,0 @@ -[namelist:jules_sea_seaice] -compulsory=true -ns=namelist/JULES Science Settings/jules_sea_seaice -sort-key=Section-A12i -title=Sea and sea-ice options - -[namelist:jules_sea_seaice=alpham] -compulsory=true -description=Original HadGEM sea ice albedo scheme: Albedo of sea-ice at - =melting point (TM, if .not.l_ssice_albedo), - =or albedo of snow on sea-ice at melting point (TM, if - =l_ssice_albedo) ("M" for "melting") -!kind=default -range=0:1 -sort-key=Panel-C01 -type=real - -[namelist:jules_sea_seaice=amip_ice_thick] -compulsory=true -description=Calculate ice thickness from ice fraction -!kind=default -sort-key=Panel-C01 -type=logical - -[namelist:jules_sea_seaice=beta_evap] -compulsory=true -description=Efficiency of evaporation from sea-surface -help=This parameter controls the efficiency with which water can evaporate from a sea-surface. - = The default value is 1.0, moisture availability is effectively unrestricted. - = However, lower values can be useful for idealised modelling, - = restricting the evaporation rate. - = For example, a value of 0.0 would result in no evaporation. -!kind=default -range=0.0:1.0 -sort-key=Panel-C05 -type=real - -[namelist:jules_sea_seaice=buddy_sea] -compulsory=true -description=Use neighbouring sea point wind-speeds in coastal grid points -!enumeration=true -!kind=default -sort-key=Panel-C01a -value-titles=Off,On -values='Off','On' - -[namelist:jules_sea_seaice=cdn_hw_sea] -compulsory=true -description=Neutral drag coefficient over the sea at high wind speeds. -!kind=default -sort-key=Panel-C06a -type=real - -[namelist:jules_sea_seaice=cdn_max_sea] -compulsory=true -description=Maximum value of the neutral drag coefficient over open sea. -!kind=default -sort-key=Panel-C06b -type=real - -[namelist:jules_sea_seaice=dtice] -compulsory=true -description=Original HadGEM sea ice albedo scheme: Temperature range in which - =albedo of sea-ice (if .not.l_ssice_albedo), - =or of snow on sea-ice (if l_ssice_albedo), - =varies between its limits (recommended range 5-10K) -!kind=default -range=0.1:50 -sort-key=Panel-C02 -type=real - -[namelist:jules_sea_seaice=emis_sea] -compulsory=true -description=Emissivity of open sea -!kind=default -sort-key=Panel-C03 -type=real - -[namelist:jules_sea_seaice=emis_sice] -compulsory=true -description=Emissivity of sea-ice -!kind=default -sort-key=Panel-C04 -type=real - -[namelist:jules_sea_seaice=hcap_sea] -description=Heat capacity of the slab ocean (J K-1 m-2) -!kind=default -range=0.0: -sort-key=Panel-C14a -type=real - -[namelist:jules_sea_seaice=i_high_wind_drag] -compulsory=true -description=Option to impose a special treatment of drag at high wind speeds. -!enumeration=true -sort-key=Panel-C06 -trigger=namelist:jules_sea_seaice=cdn_hw_sea: 'reduced_v1'; - =namelist:jules_sea_seaice=cdn_max_sea: 'limited','reduced_v1'; - =namelist:jules_sea_seaice=u_cdn_hw: 'reduced_v1'; - =namelist:jules_sea_seaice=u_cdn_max: 'reduced_v1'; -value-titles=No special treatment of drag at high winds, - =The drag at high winds is capped, - =The drag at high winds is reduced over a range of speeds -values='null','limited','reduced_v1' - -[namelist:jules_sea_seaice=iseasurfalg] -compulsory=true -description=Algorithm for surface exchange over the sea -!enumeration=true -help=The most basic option for surface transfer at the sea surface - =consists of a specification of Charnocks coefficient for the - =momentum roughness length, including the aerodynamically smooth - =contribution in light winds, and a fixed thermal roughness length. - =Surface divergence theory allows for a variable thermal roughness - =length that follows the aerodynamicall smooth limit in light winds - =and decreases in stronger winds, giving a slower increase in the - =exchange coefficient for moisture as the wind rises. Historically, - =roughness lengths that depend on the friction velocity have not - =been iterated within the calculation of the Obukhov length, though - =this is more consistent: an iterative option is therefore provided. - =The COARE algorithm is based on a range of observations and exists - =in various forms. It features a dependence of Charnocks coefficient - =on the wind speed and a dependence of the thermal roughness length - =on the roughness Reynolds number. Extra parameters allow different - =versions of the algorithm to be used. -sort-key=Panel-C09 -trigger=namelist:jules_sea_seaice=z0m_specified: 'specified_roughness'; - =namelist:jules_sea_seaice=z0h_specified: 'specified_roughness'; -value-titles="Fixed values of roughness length for momentum and heat", - ="Fixed value of Charnock's coefficient with thermal - =roughness from surface divergence theory (non-iterative)", - ="Roughness lengths follow functional forms of the COARE - =algorithm" -values='specified_roughness','surf_div','coare' - -[namelist:jules_sea_seaice=kappa_seasurf] -compulsory=false -description=Thermal conductivity of sea-water (W / m / K) -!kind=default -sort-key=Panel-C11 -type=real - -[namelist:jules_sea_seaice=kappai] -compulsory=false -description=Thermal conductivity of sea-ice (W / m / K) -!kind=default -sort-key=Panel-C12 -type=real - -[namelist:jules_sea_seaice=kappai_snow] -compulsory=false -description=Thermal conductivity of snow on zero layer sea-ice (W / m / K) -!kind=default -sort-key=Panel-C13 -type=real - -[namelist:jules_sea_seaice=l_10m_neut] -compulsory=true -description=Logical for using neutral 10m wind speed to calculate the Charnock coefficient for sea points -!kind=default -sort-key=Panel-C08 -type=logical - -[namelist:jules_sea_seaice=l_iceformdrag_lupkes] -compulsory=true -description=Switch for diagnostic form drag following Lupkes et al. (2012) - =and Lupkes & Gryanik (2015) -!kind=default -sort-key=Panel-C07 -trigger=namelist:jules_sea_seaice=l_stability_lupkes: .true.; -type=logical - -[namelist:jules_sea_seaice=l_sice_heatflux] -compulsory=true -description=Do semi-implicit update of ti for sea-ice -!kind=default -sort-key=Panel-C10 -type=logical - -[namelist:jules_sea_seaice=l_stability_lupkes] -compulsory=true -description=Switch to include the stability dependence in the parametrization - =of ice form drag -!kind=default -sort-key=Panel-C07a -type=logical - -[namelist:jules_sea_seaice=l_use_dtstar_sea] -compulsory=true -description=Update the sea-surface temperature assuming a slab ocean with - = heat capacity given by namelist:jules_sea_seaice=hcap_sea -!kind=default -sort-key=Panel-C14 -trigger=namelist:jules_sea_seaice=hcap_sea: .true.; -type=logical - -[namelist:jules_sea_seaice=nice] -compulsory=true -description=Number of sea ice categories -help=The number of sea ice categories. This is normally 1 unless the model is - = coupled to a sea ice model when this is normally 5. This namelist - = entry is used to populate the nice variable in - = jules_control_init_mod.F90. All other subroutines should load - = nice from jules_control_init_mod and not from the surface - = namelist. -!kind=default -range=1:99 -sort-key=Panel-C00a -type=integer - -[namelist:jules_sea_seaice=u_cdn_hw] -compulsory=true -description=Neutral wind speed where the drag attains the high wind value. -!kind=default -sort-key=Panel-C06c -type=real - -[namelist:jules_sea_seaice=u_cdn_max] -compulsory=true -description=Neutral wind speed where the drag begins to be reduced from the maximum. -!kind=default -sort-key=Panel-C06d -type=real - -[namelist:jules_sea_seaice=z0h_specified] -compulsory=true -description=Specified roughness length for scalars [m] -fail-if=this < 0 -help=Specified value held fixed throughout the run used for surface exchange - =of scalar fields such as heat and moisture -!kind=default -range=0.0:100.0 -sort-key=Panel-C09b -type=real - -[namelist:jules_sea_seaice=z0m_specified] -compulsory=true -description=Specified roughness length for momentum [m] -fail-if=this < 0 -help=Specified value held fixed throughout the run -!kind=default -range=0.0:100.0 -sort-key=Panel-C09a -type=real diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/vn2.2/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/vn2.2/rose-meta.conf deleted file mode 100644 index 8f6938c9e4..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/vn2.2/rose-meta.conf +++ /dev/null @@ -1,245 +0,0 @@ -[namelist:jules_sea_seaice] -compulsory=true -ns=namelist/JULES Science Settings/jules_sea_seaice -sort-key=Section-A12i -title=Sea and sea-ice options - -[namelist:jules_sea_seaice=alpham] -compulsory=true -description=Original HadGEM sea ice albedo scheme: Albedo of sea-ice at - =melting point (TM, if .not.l_ssice_albedo), - =or albedo of snow on sea-ice at melting point (TM, if - =l_ssice_albedo) ("M" for "melting") -!kind=default -range=0:1 -sort-key=Panel-C01 -type=real - -[namelist:jules_sea_seaice=amip_ice_thick] -compulsory=true -description=Calculate ice thickness from ice fraction -!kind=default -sort-key=Panel-C01 -type=logical - -[namelist:jules_sea_seaice=beta_evap] -compulsory=true -description=Efficiency of evaporation from sea-surface -help=This parameter controls the efficiency with which water can evaporate from a sea-surface. - = The default value is 1.0, moisture availability is effectively unrestricted. - = However, lower values can be useful for idealised modelling, - = restricting the evaporation rate. - = For example, a value of 0.0 would result in no evaporation. -!kind=default -range=0.0:1.0 -sort-key=Panel-C05 -type=real - -[namelist:jules_sea_seaice=buddy_sea] -compulsory=true -description=Use neighbouring sea point wind-speeds in coastal grid points -!enumeration=true -!kind=default -sort-key=Panel-C01a -value-titles=Off,On -values='Off','On' - -[namelist:jules_sea_seaice=cdn_hw_sea] -compulsory=true -description=Neutral drag coefficient over the sea at high wind speeds. -!kind=default -sort-key=Panel-C06a -type=real - -[namelist:jules_sea_seaice=cdn_max_sea] -compulsory=true -description=Maximum value of the neutral drag coefficient over open sea. -!kind=default -sort-key=Panel-C06b -type=real - -[namelist:jules_sea_seaice=dtice] -compulsory=true -description=Original HadGEM sea ice albedo scheme: Temperature range in which - =albedo of sea-ice (if .not.l_ssice_albedo), - =or of snow on sea-ice (if l_ssice_albedo), - =varies between its limits (recommended range 5-10K) -!kind=default -range=0.1:50 -sort-key=Panel-C02 -type=real - -[namelist:jules_sea_seaice=emis_sea] -compulsory=true -description=Emissivity of open sea -!kind=default -sort-key=Panel-C03 -type=real - -[namelist:jules_sea_seaice=emis_sice] -compulsory=true -description=Emissivity of sea-ice -!kind=default -sort-key=Panel-C04 -type=real - -[namelist:jules_sea_seaice=hcap_sea] -description=Heat capacity of the slab ocean (J K-1 m-2) -!kind=default -range=0.0: -sort-key=Panel-C14a -type=real - -[namelist:jules_sea_seaice=i_high_wind_drag] -compulsory=true -description=Option to impose a special treatment of drag at high wind speeds. -!enumeration=true -sort-key=Panel-C06 -trigger=namelist:jules_sea_seaice=cdn_hw_sea: 'reduced_v1'; - =namelist:jules_sea_seaice=cdn_max_sea: 'limited','reduced_v1'; - =namelist:jules_sea_seaice=u_cdn_hw: 'reduced_v1'; - =namelist:jules_sea_seaice=u_cdn_max: 'reduced_v1'; -value-titles=No special treatment of drag at high winds, - =The drag at high winds is capped, - =The drag at high winds is reduced over a range of speeds -values='null','limited','reduced_v1' - -[namelist:jules_sea_seaice=iseasurfalg] -compulsory=true -description=Algorithm for surface exchange over the sea -!enumeration=true -help=The most basic option for surface transfer at the sea surface - =consists of a specification of Charnocks coefficient for the - =momentum roughness length, including the aerodynamically smooth - =contribution in light winds, and a fixed thermal roughness length. - =Surface divergence theory allows for a variable thermal roughness - =length that follows the aerodynamicall smooth limit in light winds - =and decreases in stronger winds, giving a slower increase in the - =exchange coefficient for moisture as the wind rises. Historically, - =roughness lengths that depend on the friction velocity have not - =been iterated within the calculation of the Obukhov length, though - =this is more consistent: an iterative option is therefore provided. - =The COARE algorithm is based on a range of observations and exists - =in various forms. It features a dependence of Charnocks coefficient - =on the wind speed and a dependence of the thermal roughness length - =on the roughness Reynolds number. Extra parameters allow different - =versions of the algorithm to be used. -sort-key=Panel-C09 -trigger=namelist:jules_sea_seaice=z0m_specified: 'specified_roughness'; - =namelist:jules_sea_seaice=z0h_specified: 'specified_roughness'; -value-titles="Fixed values of roughness length for momentum and heat", - ="Fixed value of Charnock's coefficient with thermal - =roughness from surface divergence theory (non-iterative)", - ="Roughness lengths follow functional forms of the COARE - =algorithm" -values='specified_roughness','surf_div','coare' - -[namelist:jules_sea_seaice=kappa_seasurf] -compulsory=false -description=Thermal conductivity of sea-water (W / m / K) -!kind=default -sort-key=Panel-C11 -type=real - -[namelist:jules_sea_seaice=kappai] -compulsory=false -description=Thermal conductivity of sea-ice (W / m / K) -!kind=default -sort-key=Panel-C12 -type=real - -[namelist:jules_sea_seaice=kappai_snow] -compulsory=false -description=Thermal conductivity of snow on zero layer sea-ice (W / m / K) -!kind=default -sort-key=Panel-C13 -type=real - -[namelist:jules_sea_seaice=l_10m_neut] -compulsory=true -description=Logical for using neutral 10m wind speed to calculate the Charnock coefficient for sea points -!kind=default -sort-key=Panel-C08 -type=logical - -[namelist:jules_sea_seaice=l_iceformdrag_lupkes] -compulsory=true -description=Switch for diagnostic form drag following Lupkes et al. (2012) - =and Lupkes & Gryanik (2015) -!kind=default -sort-key=Panel-C07 -trigger=namelist:jules_sea_seaice=l_stability_lupkes: .true.; -type=logical - -[namelist:jules_sea_seaice=l_sice_heatflux] -compulsory=true -description=Do semi-implicit update of ti for sea-ice -!kind=default -sort-key=Panel-C10 -type=logical - -[namelist:jules_sea_seaice=l_stability_lupkes] -compulsory=true -description=Switch to include the stability dependence in the parametrization - =of ice form drag -!kind=default -sort-key=Panel-C07a -type=logical - -[namelist:jules_sea_seaice=l_use_dtstar_sea] -compulsory=true -description=Update the sea-surface temperature assuming a slab ocean with - = heat capacity given by namelist:jules_sea_seaice=hcap_sea -!kind=default -sort-key=Panel-C14 -trigger=namelist:jules_sea_seaice=hcap_sea: .true.; -type=logical - -[namelist:jules_sea_seaice=nice] -compulsory=true -description=Number of sea ice categories -help=The number of sea ice categories. This is normally 1 unless the model is - = coupled to a sea ice model when this is normally 5. This namelist - = entry is used to populate the nice variable in - = jules_control_init_mod.F90. All other subroutines should load - = nice from jules_control_init_mod and not from the surface - = namelist. -!kind=default -range=1:99 -sort-key=Panel-C00a -type=integer - -[namelist:jules_sea_seaice=u_cdn_hw] -compulsory=true -description=Neutral wind speed where the drag attains the high wind value. -!kind=default -sort-key=Panel-C06c -type=real - -[namelist:jules_sea_seaice=u_cdn_max] -compulsory=true -description=Neutral wind speed where the drag begins to be reduced from the maximum. -!kind=default -sort-key=Panel-C06d -type=real - -[namelist:jules_sea_seaice=z0h_specified] -compulsory=true -description=Specified roughness length for scalars [m] -fail-if=this < 0 -help=Specified value held fixed throughout the run used for surface exchange - =of scalar fields such as heat and moisture -!kind=default -range=0.0:100.0 -sort-key=Panel-C09b -type=real - -[namelist:jules_sea_seaice=z0m_specified] -compulsory=true -description=Specified roughness length for momentum [m] -fail-if=this < 0 -help=Specified value held fixed throughout the run -!kind=default -range=0.0:100.0 -sort-key=Panel-C09a -type=real diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/vn3.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/vn3.0/rose-meta.conf deleted file mode 100644 index 8f6938c9e4..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/vn3.0/rose-meta.conf +++ /dev/null @@ -1,245 +0,0 @@ -[namelist:jules_sea_seaice] -compulsory=true -ns=namelist/JULES Science Settings/jules_sea_seaice -sort-key=Section-A12i -title=Sea and sea-ice options - -[namelist:jules_sea_seaice=alpham] -compulsory=true -description=Original HadGEM sea ice albedo scheme: Albedo of sea-ice at - =melting point (TM, if .not.l_ssice_albedo), - =or albedo of snow on sea-ice at melting point (TM, if - =l_ssice_albedo) ("M" for "melting") -!kind=default -range=0:1 -sort-key=Panel-C01 -type=real - -[namelist:jules_sea_seaice=amip_ice_thick] -compulsory=true -description=Calculate ice thickness from ice fraction -!kind=default -sort-key=Panel-C01 -type=logical - -[namelist:jules_sea_seaice=beta_evap] -compulsory=true -description=Efficiency of evaporation from sea-surface -help=This parameter controls the efficiency with which water can evaporate from a sea-surface. - = The default value is 1.0, moisture availability is effectively unrestricted. - = However, lower values can be useful for idealised modelling, - = restricting the evaporation rate. - = For example, a value of 0.0 would result in no evaporation. -!kind=default -range=0.0:1.0 -sort-key=Panel-C05 -type=real - -[namelist:jules_sea_seaice=buddy_sea] -compulsory=true -description=Use neighbouring sea point wind-speeds in coastal grid points -!enumeration=true -!kind=default -sort-key=Panel-C01a -value-titles=Off,On -values='Off','On' - -[namelist:jules_sea_seaice=cdn_hw_sea] -compulsory=true -description=Neutral drag coefficient over the sea at high wind speeds. -!kind=default -sort-key=Panel-C06a -type=real - -[namelist:jules_sea_seaice=cdn_max_sea] -compulsory=true -description=Maximum value of the neutral drag coefficient over open sea. -!kind=default -sort-key=Panel-C06b -type=real - -[namelist:jules_sea_seaice=dtice] -compulsory=true -description=Original HadGEM sea ice albedo scheme: Temperature range in which - =albedo of sea-ice (if .not.l_ssice_albedo), - =or of snow on sea-ice (if l_ssice_albedo), - =varies between its limits (recommended range 5-10K) -!kind=default -range=0.1:50 -sort-key=Panel-C02 -type=real - -[namelist:jules_sea_seaice=emis_sea] -compulsory=true -description=Emissivity of open sea -!kind=default -sort-key=Panel-C03 -type=real - -[namelist:jules_sea_seaice=emis_sice] -compulsory=true -description=Emissivity of sea-ice -!kind=default -sort-key=Panel-C04 -type=real - -[namelist:jules_sea_seaice=hcap_sea] -description=Heat capacity of the slab ocean (J K-1 m-2) -!kind=default -range=0.0: -sort-key=Panel-C14a -type=real - -[namelist:jules_sea_seaice=i_high_wind_drag] -compulsory=true -description=Option to impose a special treatment of drag at high wind speeds. -!enumeration=true -sort-key=Panel-C06 -trigger=namelist:jules_sea_seaice=cdn_hw_sea: 'reduced_v1'; - =namelist:jules_sea_seaice=cdn_max_sea: 'limited','reduced_v1'; - =namelist:jules_sea_seaice=u_cdn_hw: 'reduced_v1'; - =namelist:jules_sea_seaice=u_cdn_max: 'reduced_v1'; -value-titles=No special treatment of drag at high winds, - =The drag at high winds is capped, - =The drag at high winds is reduced over a range of speeds -values='null','limited','reduced_v1' - -[namelist:jules_sea_seaice=iseasurfalg] -compulsory=true -description=Algorithm for surface exchange over the sea -!enumeration=true -help=The most basic option for surface transfer at the sea surface - =consists of a specification of Charnocks coefficient for the - =momentum roughness length, including the aerodynamically smooth - =contribution in light winds, and a fixed thermal roughness length. - =Surface divergence theory allows for a variable thermal roughness - =length that follows the aerodynamicall smooth limit in light winds - =and decreases in stronger winds, giving a slower increase in the - =exchange coefficient for moisture as the wind rises. Historically, - =roughness lengths that depend on the friction velocity have not - =been iterated within the calculation of the Obukhov length, though - =this is more consistent: an iterative option is therefore provided. - =The COARE algorithm is based on a range of observations and exists - =in various forms. It features a dependence of Charnocks coefficient - =on the wind speed and a dependence of the thermal roughness length - =on the roughness Reynolds number. Extra parameters allow different - =versions of the algorithm to be used. -sort-key=Panel-C09 -trigger=namelist:jules_sea_seaice=z0m_specified: 'specified_roughness'; - =namelist:jules_sea_seaice=z0h_specified: 'specified_roughness'; -value-titles="Fixed values of roughness length for momentum and heat", - ="Fixed value of Charnock's coefficient with thermal - =roughness from surface divergence theory (non-iterative)", - ="Roughness lengths follow functional forms of the COARE - =algorithm" -values='specified_roughness','surf_div','coare' - -[namelist:jules_sea_seaice=kappa_seasurf] -compulsory=false -description=Thermal conductivity of sea-water (W / m / K) -!kind=default -sort-key=Panel-C11 -type=real - -[namelist:jules_sea_seaice=kappai] -compulsory=false -description=Thermal conductivity of sea-ice (W / m / K) -!kind=default -sort-key=Panel-C12 -type=real - -[namelist:jules_sea_seaice=kappai_snow] -compulsory=false -description=Thermal conductivity of snow on zero layer sea-ice (W / m / K) -!kind=default -sort-key=Panel-C13 -type=real - -[namelist:jules_sea_seaice=l_10m_neut] -compulsory=true -description=Logical for using neutral 10m wind speed to calculate the Charnock coefficient for sea points -!kind=default -sort-key=Panel-C08 -type=logical - -[namelist:jules_sea_seaice=l_iceformdrag_lupkes] -compulsory=true -description=Switch for diagnostic form drag following Lupkes et al. (2012) - =and Lupkes & Gryanik (2015) -!kind=default -sort-key=Panel-C07 -trigger=namelist:jules_sea_seaice=l_stability_lupkes: .true.; -type=logical - -[namelist:jules_sea_seaice=l_sice_heatflux] -compulsory=true -description=Do semi-implicit update of ti for sea-ice -!kind=default -sort-key=Panel-C10 -type=logical - -[namelist:jules_sea_seaice=l_stability_lupkes] -compulsory=true -description=Switch to include the stability dependence in the parametrization - =of ice form drag -!kind=default -sort-key=Panel-C07a -type=logical - -[namelist:jules_sea_seaice=l_use_dtstar_sea] -compulsory=true -description=Update the sea-surface temperature assuming a slab ocean with - = heat capacity given by namelist:jules_sea_seaice=hcap_sea -!kind=default -sort-key=Panel-C14 -trigger=namelist:jules_sea_seaice=hcap_sea: .true.; -type=logical - -[namelist:jules_sea_seaice=nice] -compulsory=true -description=Number of sea ice categories -help=The number of sea ice categories. This is normally 1 unless the model is - = coupled to a sea ice model when this is normally 5. This namelist - = entry is used to populate the nice variable in - = jules_control_init_mod.F90. All other subroutines should load - = nice from jules_control_init_mod and not from the surface - = namelist. -!kind=default -range=1:99 -sort-key=Panel-C00a -type=integer - -[namelist:jules_sea_seaice=u_cdn_hw] -compulsory=true -description=Neutral wind speed where the drag attains the high wind value. -!kind=default -sort-key=Panel-C06c -type=real - -[namelist:jules_sea_seaice=u_cdn_max] -compulsory=true -description=Neutral wind speed where the drag begins to be reduced from the maximum. -!kind=default -sort-key=Panel-C06d -type=real - -[namelist:jules_sea_seaice=z0h_specified] -compulsory=true -description=Specified roughness length for scalars [m] -fail-if=this < 0 -help=Specified value held fixed throughout the run used for surface exchange - =of scalar fields such as heat and moisture -!kind=default -range=0.0:100.0 -sort-key=Panel-C09b -type=real - -[namelist:jules_sea_seaice=z0m_specified] -compulsory=true -description=Specified roughness length for momentum [m] -fail-if=this < 0 -help=Specified value held fixed throughout the run -!kind=default -range=0.0:100.0 -sort-key=Panel-C09a -type=real diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/HEAD/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/HEAD/rose-meta.conf deleted file mode 100644 index 5248b8caa9..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/HEAD/rose-meta.conf +++ /dev/null @@ -1,99 +0,0 @@ -[namelist:jules_snow] -compulsory=true -ns=namelist/JULES Science Settings/jules_snow -sort-key=Section-A12k -title=Snow options -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html - -[namelist:jules_snow=can_clump] -compulsory=true -description=Clumping parameter for snow in the calculation of the albedo of plant canopies -fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT - =all(this == 0) and namelist:jules_radiation=l_embedded_snow == '.true.' and any(namelist:jules_snow=cansnowpft == '.true.'); # Results in floating point exception if 0. Only used if can_model = 4, cansnowpft = TRUE on that tile and l_embedded_snow = TRUE. -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_snow/Radiation parameters -sort-key=Panel-D09 -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::can_clump - -[namelist:jules_snow=cansnowpft] -compulsory=false -description=Flag indicating whether snow can be held under the canopy of each PFT -fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT -!kind=default -length=: -sort-key=Panel-D05 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::cansnowpft - -[namelist:jules_snow=i_basal_melting_opt] -compulsory=true -description=Option for melting at the base of the snow pack. -!enumeration=true -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=Panel-D17 -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::i_basal_melting_opt -value-titles=No basal melting,Instantaneous basal melting -values=0,1 - -[namelist:jules_snow=i_grain_growth_opt] -compulsory=true -description=Option for rate of growth of snow grains. -!enumeration=true -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=Panel-D04 -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::i_grain_growth_opt -value-titles=Marshall1989,Taillandier2007_ET -values=0,1 - -[namelist:jules_snow=i_relayer_opt] -compulsory=true -description=Option for method of relayering the snow pack in the multilayer scheme. -!enumeration=true -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=Panel-D01e -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::i_relayer_opt -value-titles=Original Scheme,Relayer inverse of grain size -values=0,1 - -[namelist:jules_snow=n_lai_exposed] -compulsory=true -description=Shape parameter for distribution of leaf area within canopies used in calculation of snow albedo. -fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_snow/Radiation parameters -sort-key=Panel-D10 -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::n_lai_exposed - -[namelist:jules_snow=rho_snow_fresh] -compulsory=false -description=Density of fresh snow (kg m-3) -!kind=default -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=Panel-D01b -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::rho_snow_fresh - -[namelist:jules_snow=unload_rate_u] -compulsory=true -description=Term proportional to wind speed in background unloading rate of snow on canopies -fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=Panel-D13 -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::unload_rate_u - -# Dummy page to force sort order for Snow other parameters -[namespace:snow_other] -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=02 - -# Dummy page to force sort order for Snow radiation parameters -[namespace:snow_radiation] -ns=namelist/JULES Science Settings/jules_snow/Radiation parameters -sort-key=01 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn2.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn2.0/rose-meta.conf deleted file mode 100644 index e7fe26f1c4..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn2.0/rose-meta.conf +++ /dev/null @@ -1,69 +0,0 @@ -[namelist:jules_snow] -compulsory=true -ns=namelist/JULES Science Settings/jules_snow -sort-key=Section-A12e -title=Snow options -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html - -[namelist:jules_snow=can_clump] -compulsory=true -description=Clumping parameter for snow in the calculation of the albedo of plant canopies -fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT - =all(this == 0) and namelist:jules_radiation=l_embedded_snow == '.true.' and any(namelist:jules_snow=cansnowpft == '.true.'); # Results in floating point exception if 0. Only used if can_model = 4, cansnowpft = TRUE on that tile and l_embedded_snow = TRUE. -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_snow/Radiation parameters -sort-key=Panel-D09 -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::can_clump - -[namelist:jules_snow=cansnowpft] -compulsory=false -description=Flag indicating whether snow can be held under the canopy of each PFT -fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT -!kind=default -length=: -sort-key=Panel-D05 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::cansnowpft - -[namelist:jules_snow=n_lai_exposed] -compulsory=true -description=Shape parameter for distribution of leaf area within canopies used in calculation of snow albedo. -fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_snow/Radiation parameters -sort-key=Panel-D10 -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::n_lai_exposed - -[namelist:jules_snow=rho_snow_fresh] -compulsory=false -description=Density of fresh snow (kg m-3) -!kind=default -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=Panel-D01b -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::rho_snow_fresh - -[namelist:jules_snow=unload_rate_u] -compulsory=true -description=Term proportional to wind speed in background unloading rate of snow on canopies -fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=Panel-D13 -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::unload_rate_u - -# Dummy page to force sort order for Snow other parameters -[namespace:snow_other] -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=02 - -# Dummy page to force sort order for Snow radiation parameters -[namespace:snow_radiation] -ns=namelist/JULES Science Settings/jules_snow/Radiation parameters -sort-key=01 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn2.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn2.1/rose-meta.conf deleted file mode 100644 index e7fe26f1c4..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn2.1/rose-meta.conf +++ /dev/null @@ -1,69 +0,0 @@ -[namelist:jules_snow] -compulsory=true -ns=namelist/JULES Science Settings/jules_snow -sort-key=Section-A12e -title=Snow options -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html - -[namelist:jules_snow=can_clump] -compulsory=true -description=Clumping parameter for snow in the calculation of the albedo of plant canopies -fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT - =all(this == 0) and namelist:jules_radiation=l_embedded_snow == '.true.' and any(namelist:jules_snow=cansnowpft == '.true.'); # Results in floating point exception if 0. Only used if can_model = 4, cansnowpft = TRUE on that tile and l_embedded_snow = TRUE. -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_snow/Radiation parameters -sort-key=Panel-D09 -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::can_clump - -[namelist:jules_snow=cansnowpft] -compulsory=false -description=Flag indicating whether snow can be held under the canopy of each PFT -fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT -!kind=default -length=: -sort-key=Panel-D05 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::cansnowpft - -[namelist:jules_snow=n_lai_exposed] -compulsory=true -description=Shape parameter for distribution of leaf area within canopies used in calculation of snow albedo. -fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_snow/Radiation parameters -sort-key=Panel-D10 -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::n_lai_exposed - -[namelist:jules_snow=rho_snow_fresh] -compulsory=false -description=Density of fresh snow (kg m-3) -!kind=default -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=Panel-D01b -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::rho_snow_fresh - -[namelist:jules_snow=unload_rate_u] -compulsory=true -description=Term proportional to wind speed in background unloading rate of snow on canopies -fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=Panel-D13 -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::unload_rate_u - -# Dummy page to force sort order for Snow other parameters -[namespace:snow_other] -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=02 - -# Dummy page to force sort order for Snow radiation parameters -[namespace:snow_radiation] -ns=namelist/JULES Science Settings/jules_snow/Radiation parameters -sort-key=01 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn2.2/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn2.2/rose-meta.conf deleted file mode 100644 index 5248b8caa9..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn2.2/rose-meta.conf +++ /dev/null @@ -1,99 +0,0 @@ -[namelist:jules_snow] -compulsory=true -ns=namelist/JULES Science Settings/jules_snow -sort-key=Section-A12k -title=Snow options -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html - -[namelist:jules_snow=can_clump] -compulsory=true -description=Clumping parameter for snow in the calculation of the albedo of plant canopies -fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT - =all(this == 0) and namelist:jules_radiation=l_embedded_snow == '.true.' and any(namelist:jules_snow=cansnowpft == '.true.'); # Results in floating point exception if 0. Only used if can_model = 4, cansnowpft = TRUE on that tile and l_embedded_snow = TRUE. -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_snow/Radiation parameters -sort-key=Panel-D09 -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::can_clump - -[namelist:jules_snow=cansnowpft] -compulsory=false -description=Flag indicating whether snow can be held under the canopy of each PFT -fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT -!kind=default -length=: -sort-key=Panel-D05 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::cansnowpft - -[namelist:jules_snow=i_basal_melting_opt] -compulsory=true -description=Option for melting at the base of the snow pack. -!enumeration=true -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=Panel-D17 -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::i_basal_melting_opt -value-titles=No basal melting,Instantaneous basal melting -values=0,1 - -[namelist:jules_snow=i_grain_growth_opt] -compulsory=true -description=Option for rate of growth of snow grains. -!enumeration=true -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=Panel-D04 -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::i_grain_growth_opt -value-titles=Marshall1989,Taillandier2007_ET -values=0,1 - -[namelist:jules_snow=i_relayer_opt] -compulsory=true -description=Option for method of relayering the snow pack in the multilayer scheme. -!enumeration=true -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=Panel-D01e -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::i_relayer_opt -value-titles=Original Scheme,Relayer inverse of grain size -values=0,1 - -[namelist:jules_snow=n_lai_exposed] -compulsory=true -description=Shape parameter for distribution of leaf area within canopies used in calculation of snow albedo. -fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_snow/Radiation parameters -sort-key=Panel-D10 -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::n_lai_exposed - -[namelist:jules_snow=rho_snow_fresh] -compulsory=false -description=Density of fresh snow (kg m-3) -!kind=default -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=Panel-D01b -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::rho_snow_fresh - -[namelist:jules_snow=unload_rate_u] -compulsory=true -description=Term proportional to wind speed in background unloading rate of snow on canopies -fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=Panel-D13 -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::unload_rate_u - -# Dummy page to force sort order for Snow other parameters -[namespace:snow_other] -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=02 - -# Dummy page to force sort order for Snow radiation parameters -[namespace:snow_radiation] -ns=namelist/JULES Science Settings/jules_snow/Radiation parameters -sort-key=01 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn3.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn3.0/rose-meta.conf deleted file mode 100644 index 5248b8caa9..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn3.0/rose-meta.conf +++ /dev/null @@ -1,99 +0,0 @@ -[namelist:jules_snow] -compulsory=true -ns=namelist/JULES Science Settings/jules_snow -sort-key=Section-A12k -title=Snow options -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html - -[namelist:jules_snow=can_clump] -compulsory=true -description=Clumping parameter for snow in the calculation of the albedo of plant canopies -fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT - =all(this == 0) and namelist:jules_radiation=l_embedded_snow == '.true.' and any(namelist:jules_snow=cansnowpft == '.true.'); # Results in floating point exception if 0. Only used if can_model = 4, cansnowpft = TRUE on that tile and l_embedded_snow = TRUE. -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_snow/Radiation parameters -sort-key=Panel-D09 -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::can_clump - -[namelist:jules_snow=cansnowpft] -compulsory=false -description=Flag indicating whether snow can be held under the canopy of each PFT -fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT -!kind=default -length=: -sort-key=Panel-D05 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::cansnowpft - -[namelist:jules_snow=i_basal_melting_opt] -compulsory=true -description=Option for melting at the base of the snow pack. -!enumeration=true -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=Panel-D17 -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::i_basal_melting_opt -value-titles=No basal melting,Instantaneous basal melting -values=0,1 - -[namelist:jules_snow=i_grain_growth_opt] -compulsory=true -description=Option for rate of growth of snow grains. -!enumeration=true -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=Panel-D04 -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::i_grain_growth_opt -value-titles=Marshall1989,Taillandier2007_ET -values=0,1 - -[namelist:jules_snow=i_relayer_opt] -compulsory=true -description=Option for method of relayering the snow pack in the multilayer scheme. -!enumeration=true -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=Panel-D01e -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::i_relayer_opt -value-titles=Original Scheme,Relayer inverse of grain size -values=0,1 - -[namelist:jules_snow=n_lai_exposed] -compulsory=true -description=Shape parameter for distribution of leaf area within canopies used in calculation of snow albedo. -fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_snow/Radiation parameters -sort-key=Panel-D10 -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::n_lai_exposed - -[namelist:jules_snow=rho_snow_fresh] -compulsory=false -description=Density of fresh snow (kg m-3) -!kind=default -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=Panel-D01b -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::rho_snow_fresh - -[namelist:jules_snow=unload_rate_u] -compulsory=true -description=Term proportional to wind speed in background unloading rate of snow on canopies -fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT -!kind=default -length=: -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=Panel-D13 -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::unload_rate_u - -# Dummy page to force sort order for Snow other parameters -[namespace:snow_other] -ns=namelist/JULES Science Settings/jules_snow/Other parameters -sort-key=02 - -# Dummy page to force sort order for Snow radiation parameters -[namespace:snow_radiation] -ns=namelist/JULES Science Settings/jules_snow/Radiation parameters -sort-key=01 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/HEAD/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/HEAD/rose-meta.conf deleted file mode 100644 index 49a87b62a8..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/HEAD/rose-meta.conf +++ /dev/null @@ -1,31 +0,0 @@ -[namelist:jules_soil] -compulsory=true -ns=namelist/JULES Science Settings/jules_soil -sort-key=Section-A12j -title=Soil options -url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#namelist-JULES_SOIL - -[namelist:jules_soil=l_dpsids_dsdz] -compulsory=true -description=Calculate vertical gradient of soil suction with the assumption of linearity only for - =fractional saturation (consistent with the calculation of hydraulic conductivity) -!kind=default -sort-key=Panel-E03 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#JULES_SOIL::l_dpsids_dsdz - -[namelist:jules_soil=l_soil_sat_down] -compulsory=true -description=Direction of water in excess of saturation -!kind=default -sort-key=Panel-E04 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#JULES_SOIL::l_soil_sat_down - -[namelist:jules_soil=l_vg_soil] -compulsory=true -description=Switch for van Genuchten soil hydraulic model. -!kind=default -sort-key=Panel-E02 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#JULES_SOIL::l_vg_soil diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/vn2.2/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/vn2.2/rose-meta.conf deleted file mode 100644 index 49a87b62a8..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/vn2.2/rose-meta.conf +++ /dev/null @@ -1,31 +0,0 @@ -[namelist:jules_soil] -compulsory=true -ns=namelist/JULES Science Settings/jules_soil -sort-key=Section-A12j -title=Soil options -url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#namelist-JULES_SOIL - -[namelist:jules_soil=l_dpsids_dsdz] -compulsory=true -description=Calculate vertical gradient of soil suction with the assumption of linearity only for - =fractional saturation (consistent with the calculation of hydraulic conductivity) -!kind=default -sort-key=Panel-E03 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#JULES_SOIL::l_dpsids_dsdz - -[namelist:jules_soil=l_soil_sat_down] -compulsory=true -description=Direction of water in excess of saturation -!kind=default -sort-key=Panel-E04 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#JULES_SOIL::l_soil_sat_down - -[namelist:jules_soil=l_vg_soil] -compulsory=true -description=Switch for van Genuchten soil hydraulic model. -!kind=default -sort-key=Panel-E02 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#JULES_SOIL::l_vg_soil diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/vn3.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/vn3.0/rose-meta.conf deleted file mode 100644 index 49a87b62a8..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/vn3.0/rose-meta.conf +++ /dev/null @@ -1,31 +0,0 @@ -[namelist:jules_soil] -compulsory=true -ns=namelist/JULES Science Settings/jules_soil -sort-key=Section-A12j -title=Soil options -url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#namelist-JULES_SOIL - -[namelist:jules_soil=l_dpsids_dsdz] -compulsory=true -description=Calculate vertical gradient of soil suction with the assumption of linearity only for - =fractional saturation (consistent with the calculation of hydraulic conductivity) -!kind=default -sort-key=Panel-E03 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#JULES_SOIL::l_dpsids_dsdz - -[namelist:jules_soil=l_soil_sat_down] -compulsory=true -description=Direction of water in excess of saturation -!kind=default -sort-key=Panel-E04 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#JULES_SOIL::l_soil_sat_down - -[namelist:jules_soil=l_vg_soil] -compulsory=true -description=Switch for van Genuchten soil hydraulic model. -!kind=default -sort-key=Panel-E02 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#JULES_SOIL::l_vg_soil diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/HEAD/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/HEAD/rose-meta.conf deleted file mode 100644 index 42ff6a41f8..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/HEAD/rose-meta.conf +++ /dev/null @@ -1,125 +0,0 @@ -[namelist:jules_surface_types] -compulsory=true -ns=namelist/JULES Surface Types/jules_surface_types -sort-key=Section-A12a -title=JULES Surface Types -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html - -[namelist:jules_surface_types=brd_leaf] -description=Pseudo level of broadleaf PFT -fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft -range=1: -sort-key=Panel-A1a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::brd_leaf - -[namelist:jules_surface_types=c3_grass] -description=Pseudo level of C3 grass PFT -fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft -range=1: -sort-key=Panel-A3a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c3_grass - -[namelist:jules_surface_types=c4_grass] -description=Pseudo level of C4 grass PFT -fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft -range=1: -sort-key=Panel-A4a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c4_grass - -[namelist:jules_surface_types=ice] -description=Pseudo level of ice surface type -fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following -range=1: -sort-key=Panel-A9a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::ice - -[namelist:jules_surface_types=lake] -description=Pseudo level of lake surface type -fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following -range=1: -sort-key=Panel-A7a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::lake - -[namelist:jules_surface_types=ndl_leaf] -description=Pseudo level of needleleaf PFT -fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft -range=1: -sort-key=Panel-A2a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::ndl_leaf - -[namelist:jules_surface_types=nnvg] -compulsory=true -description=The number of non-plant surface types to be modelled -range=1: -sort-key=Panel-A0b -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::nnvg - -[namelist:jules_surface_types=npft] -compulsory=true -description=The number of plant functional types to be modelled -range=0: -sort-key=Panel-A0a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::npft - -[namelist:jules_surface_types=shrub] -description=Pseudo level of shrub PFT -fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft -range=1: -sort-key=Panel-A5a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::shrub - -[namelist:jules_surface_types=soil] -compulsory=true -description=Pseudo level of soil surface type -fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following -range=1: -sort-key=Panel-A8 -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::soil - -[namelist:jules_surface_types=urban] -compulsory=true -description=Pseudo level of urban surface type -fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following - =this > 0 and (namelist:jules_surface_types=urban_roof > 0 or namelist:jules_surface_types=urban_canyon > 0); -range=-1,1: -sort-key=Panel-A6a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban - -[namelist:jules_surface_types=urban_canyon] -compulsory=true -description=Pseudo level of urban canyon surface type -fail-if=this > namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg; # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following - =this > 0 and not (namelist:jules_surface_types=urban_roof > 0); # Both the canyon and roof surface type must be present - =not(this > 0) and namelist:jules_surface=l_urban2t == '.true.'; # When l_urban2t there must be a canyon and a roof surface type -range=-1,1: -sort-key=Panel-A6b -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban_canyon - -[namelist:jules_surface_types=urban_roof] -compulsory=true -description=Pseudo level of urban roof surface type -fail-if=this > namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg; # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following - =this > 0 and not (namelist:jules_surface_types=urban_canyon > 0); # Both the canyon and roof surface type must be present - =not(this > 0) and namelist:jules_surface=l_urban2t == '.true.'; # When l_urban2t there must be a canyon and a roof surface type -range=-1,1: -sort-key=Panel-A6c -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban_roof diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn2.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn2.0/rose-meta.conf deleted file mode 100644 index 42ff6a41f8..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn2.0/rose-meta.conf +++ /dev/null @@ -1,125 +0,0 @@ -[namelist:jules_surface_types] -compulsory=true -ns=namelist/JULES Surface Types/jules_surface_types -sort-key=Section-A12a -title=JULES Surface Types -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html - -[namelist:jules_surface_types=brd_leaf] -description=Pseudo level of broadleaf PFT -fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft -range=1: -sort-key=Panel-A1a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::brd_leaf - -[namelist:jules_surface_types=c3_grass] -description=Pseudo level of C3 grass PFT -fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft -range=1: -sort-key=Panel-A3a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c3_grass - -[namelist:jules_surface_types=c4_grass] -description=Pseudo level of C4 grass PFT -fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft -range=1: -sort-key=Panel-A4a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c4_grass - -[namelist:jules_surface_types=ice] -description=Pseudo level of ice surface type -fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following -range=1: -sort-key=Panel-A9a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::ice - -[namelist:jules_surface_types=lake] -description=Pseudo level of lake surface type -fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following -range=1: -sort-key=Panel-A7a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::lake - -[namelist:jules_surface_types=ndl_leaf] -description=Pseudo level of needleleaf PFT -fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft -range=1: -sort-key=Panel-A2a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::ndl_leaf - -[namelist:jules_surface_types=nnvg] -compulsory=true -description=The number of non-plant surface types to be modelled -range=1: -sort-key=Panel-A0b -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::nnvg - -[namelist:jules_surface_types=npft] -compulsory=true -description=The number of plant functional types to be modelled -range=0: -sort-key=Panel-A0a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::npft - -[namelist:jules_surface_types=shrub] -description=Pseudo level of shrub PFT -fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft -range=1: -sort-key=Panel-A5a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::shrub - -[namelist:jules_surface_types=soil] -compulsory=true -description=Pseudo level of soil surface type -fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following -range=1: -sort-key=Panel-A8 -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::soil - -[namelist:jules_surface_types=urban] -compulsory=true -description=Pseudo level of urban surface type -fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following - =this > 0 and (namelist:jules_surface_types=urban_roof > 0 or namelist:jules_surface_types=urban_canyon > 0); -range=-1,1: -sort-key=Panel-A6a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban - -[namelist:jules_surface_types=urban_canyon] -compulsory=true -description=Pseudo level of urban canyon surface type -fail-if=this > namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg; # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following - =this > 0 and not (namelist:jules_surface_types=urban_roof > 0); # Both the canyon and roof surface type must be present - =not(this > 0) and namelist:jules_surface=l_urban2t == '.true.'; # When l_urban2t there must be a canyon and a roof surface type -range=-1,1: -sort-key=Panel-A6b -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban_canyon - -[namelist:jules_surface_types=urban_roof] -compulsory=true -description=Pseudo level of urban roof surface type -fail-if=this > namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg; # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following - =this > 0 and not (namelist:jules_surface_types=urban_canyon > 0); # Both the canyon and roof surface type must be present - =not(this > 0) and namelist:jules_surface=l_urban2t == '.true.'; # When l_urban2t there must be a canyon and a roof surface type -range=-1,1: -sort-key=Panel-A6c -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban_roof diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn2.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn2.1/rose-meta.conf deleted file mode 100644 index 42ff6a41f8..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn2.1/rose-meta.conf +++ /dev/null @@ -1,125 +0,0 @@ -[namelist:jules_surface_types] -compulsory=true -ns=namelist/JULES Surface Types/jules_surface_types -sort-key=Section-A12a -title=JULES Surface Types -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html - -[namelist:jules_surface_types=brd_leaf] -description=Pseudo level of broadleaf PFT -fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft -range=1: -sort-key=Panel-A1a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::brd_leaf - -[namelist:jules_surface_types=c3_grass] -description=Pseudo level of C3 grass PFT -fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft -range=1: -sort-key=Panel-A3a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c3_grass - -[namelist:jules_surface_types=c4_grass] -description=Pseudo level of C4 grass PFT -fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft -range=1: -sort-key=Panel-A4a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c4_grass - -[namelist:jules_surface_types=ice] -description=Pseudo level of ice surface type -fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following -range=1: -sort-key=Panel-A9a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::ice - -[namelist:jules_surface_types=lake] -description=Pseudo level of lake surface type -fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following -range=1: -sort-key=Panel-A7a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::lake - -[namelist:jules_surface_types=ndl_leaf] -description=Pseudo level of needleleaf PFT -fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft -range=1: -sort-key=Panel-A2a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::ndl_leaf - -[namelist:jules_surface_types=nnvg] -compulsory=true -description=The number of non-plant surface types to be modelled -range=1: -sort-key=Panel-A0b -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::nnvg - -[namelist:jules_surface_types=npft] -compulsory=true -description=The number of plant functional types to be modelled -range=0: -sort-key=Panel-A0a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::npft - -[namelist:jules_surface_types=shrub] -description=Pseudo level of shrub PFT -fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft -range=1: -sort-key=Panel-A5a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::shrub - -[namelist:jules_surface_types=soil] -compulsory=true -description=Pseudo level of soil surface type -fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following -range=1: -sort-key=Panel-A8 -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::soil - -[namelist:jules_surface_types=urban] -compulsory=true -description=Pseudo level of urban surface type -fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following - =this > 0 and (namelist:jules_surface_types=urban_roof > 0 or namelist:jules_surface_types=urban_canyon > 0); -range=-1,1: -sort-key=Panel-A6a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban - -[namelist:jules_surface_types=urban_canyon] -compulsory=true -description=Pseudo level of urban canyon surface type -fail-if=this > namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg; # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following - =this > 0 and not (namelist:jules_surface_types=urban_roof > 0); # Both the canyon and roof surface type must be present - =not(this > 0) and namelist:jules_surface=l_urban2t == '.true.'; # When l_urban2t there must be a canyon and a roof surface type -range=-1,1: -sort-key=Panel-A6b -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban_canyon - -[namelist:jules_surface_types=urban_roof] -compulsory=true -description=Pseudo level of urban roof surface type -fail-if=this > namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg; # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following - =this > 0 and not (namelist:jules_surface_types=urban_canyon > 0); # Both the canyon and roof surface type must be present - =not(this > 0) and namelist:jules_surface=l_urban2t == '.true.'; # When l_urban2t there must be a canyon and a roof surface type -range=-1,1: -sort-key=Panel-A6c -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban_roof diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn2.2/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn2.2/rose-meta.conf deleted file mode 100644 index 42ff6a41f8..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn2.2/rose-meta.conf +++ /dev/null @@ -1,125 +0,0 @@ -[namelist:jules_surface_types] -compulsory=true -ns=namelist/JULES Surface Types/jules_surface_types -sort-key=Section-A12a -title=JULES Surface Types -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html - -[namelist:jules_surface_types=brd_leaf] -description=Pseudo level of broadleaf PFT -fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft -range=1: -sort-key=Panel-A1a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::brd_leaf - -[namelist:jules_surface_types=c3_grass] -description=Pseudo level of C3 grass PFT -fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft -range=1: -sort-key=Panel-A3a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c3_grass - -[namelist:jules_surface_types=c4_grass] -description=Pseudo level of C4 grass PFT -fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft -range=1: -sort-key=Panel-A4a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c4_grass - -[namelist:jules_surface_types=ice] -description=Pseudo level of ice surface type -fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following -range=1: -sort-key=Panel-A9a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::ice - -[namelist:jules_surface_types=lake] -description=Pseudo level of lake surface type -fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following -range=1: -sort-key=Panel-A7a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::lake - -[namelist:jules_surface_types=ndl_leaf] -description=Pseudo level of needleleaf PFT -fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft -range=1: -sort-key=Panel-A2a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::ndl_leaf - -[namelist:jules_surface_types=nnvg] -compulsory=true -description=The number of non-plant surface types to be modelled -range=1: -sort-key=Panel-A0b -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::nnvg - -[namelist:jules_surface_types=npft] -compulsory=true -description=The number of plant functional types to be modelled -range=0: -sort-key=Panel-A0a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::npft - -[namelist:jules_surface_types=shrub] -description=Pseudo level of shrub PFT -fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft -range=1: -sort-key=Panel-A5a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::shrub - -[namelist:jules_surface_types=soil] -compulsory=true -description=Pseudo level of soil surface type -fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following -range=1: -sort-key=Panel-A8 -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::soil - -[namelist:jules_surface_types=urban] -compulsory=true -description=Pseudo level of urban surface type -fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following - =this > 0 and (namelist:jules_surface_types=urban_roof > 0 or namelist:jules_surface_types=urban_canyon > 0); -range=-1,1: -sort-key=Panel-A6a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban - -[namelist:jules_surface_types=urban_canyon] -compulsory=true -description=Pseudo level of urban canyon surface type -fail-if=this > namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg; # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following - =this > 0 and not (namelist:jules_surface_types=urban_roof > 0); # Both the canyon and roof surface type must be present - =not(this > 0) and namelist:jules_surface=l_urban2t == '.true.'; # When l_urban2t there must be a canyon and a roof surface type -range=-1,1: -sort-key=Panel-A6b -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban_canyon - -[namelist:jules_surface_types=urban_roof] -compulsory=true -description=Pseudo level of urban roof surface type -fail-if=this > namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg; # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following - =this > 0 and not (namelist:jules_surface_types=urban_canyon > 0); # Both the canyon and roof surface type must be present - =not(this > 0) and namelist:jules_surface=l_urban2t == '.true.'; # When l_urban2t there must be a canyon and a roof surface type -range=-1,1: -sort-key=Panel-A6c -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban_roof diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn3.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn3.0/rose-meta.conf deleted file mode 100644 index 42ff6a41f8..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn3.0/rose-meta.conf +++ /dev/null @@ -1,125 +0,0 @@ -[namelist:jules_surface_types] -compulsory=true -ns=namelist/JULES Surface Types/jules_surface_types -sort-key=Section-A12a -title=JULES Surface Types -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html - -[namelist:jules_surface_types=brd_leaf] -description=Pseudo level of broadleaf PFT -fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft -range=1: -sort-key=Panel-A1a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::brd_leaf - -[namelist:jules_surface_types=c3_grass] -description=Pseudo level of C3 grass PFT -fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft -range=1: -sort-key=Panel-A3a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c3_grass - -[namelist:jules_surface_types=c4_grass] -description=Pseudo level of C4 grass PFT -fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft -range=1: -sort-key=Panel-A4a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c4_grass - -[namelist:jules_surface_types=ice] -description=Pseudo level of ice surface type -fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following -range=1: -sort-key=Panel-A9a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::ice - -[namelist:jules_surface_types=lake] -description=Pseudo level of lake surface type -fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following -range=1: -sort-key=Panel-A7a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::lake - -[namelist:jules_surface_types=ndl_leaf] -description=Pseudo level of needleleaf PFT -fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft -range=1: -sort-key=Panel-A2a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::ndl_leaf - -[namelist:jules_surface_types=nnvg] -compulsory=true -description=The number of non-plant surface types to be modelled -range=1: -sort-key=Panel-A0b -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::nnvg - -[namelist:jules_surface_types=npft] -compulsory=true -description=The number of plant functional types to be modelled -range=0: -sort-key=Panel-A0a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::npft - -[namelist:jules_surface_types=shrub] -description=Pseudo level of shrub PFT -fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft -range=1: -sort-key=Panel-A5a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::shrub - -[namelist:jules_surface_types=soil] -compulsory=true -description=Pseudo level of soil surface type -fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following -range=1: -sort-key=Panel-A8 -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::soil - -[namelist:jules_surface_types=urban] -compulsory=true -description=Pseudo level of urban surface type -fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following - =this > 0 and (namelist:jules_surface_types=urban_roof > 0 or namelist:jules_surface_types=urban_canyon > 0); -range=-1,1: -sort-key=Panel-A6a -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban - -[namelist:jules_surface_types=urban_canyon] -compulsory=true -description=Pseudo level of urban canyon surface type -fail-if=this > namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg; # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following - =this > 0 and not (namelist:jules_surface_types=urban_roof > 0); # Both the canyon and roof surface type must be present - =not(this > 0) and namelist:jules_surface=l_urban2t == '.true.'; # When l_urban2t there must be a canyon and a roof surface type -range=-1,1: -sort-key=Panel-A6b -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban_canyon - -[namelist:jules_surface_types=urban_roof] -compulsory=true -description=Pseudo level of urban roof surface type -fail-if=this > namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg; # Pseudo level must be less than or equal to npft+nnvg - =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following - =this > 0 and not (namelist:jules_surface_types=urban_canyon > 0); # Both the canyon and roof surface type must be present - =not(this > 0) and namelist:jules_surface=l_urban2t == '.true.'; # When l_urban2t there must be a canyon and a roof surface type -range=-1,1: -sort-key=Panel-A6c -type=integer -url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban_roof diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/HEAD/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/HEAD/rose-meta.conf deleted file mode 100644 index 210458ceec..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/HEAD/rose-meta.conf +++ /dev/null @@ -1,306 +0,0 @@ -[namelist:jules_surface] -compulsory=true -description=Options for surface parametrisations -ns=namelist/JULES Science Settings/jules_surface -sort-key=Section-A12e -title=Surface options -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html - -[namelist:jules_surface=all_tiles] -compulsory=true -description=Do calculations of tile properties on all tiles (except land ice) - =for all gridpoints even when the tile fraction is zero -!enumeration=true -sort-key=Panel-F10 -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::all_tiles -value-titles=Off,On -values=0,1 - -[namelist:jules_surface=anthrop_heat_mean] -compulsory=true -description=Baseline mean anthropogenic heat flux for Flanner scheme -!kind=double -sort-key=Panel-F03b -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::anthrop_heat_mean - -[namelist:jules_surface=anthrop_heat_option] -compulsory=true -description=Options for calculating anthropogenic heat -!enumeration=true -sort-key=Panel-F03a -trigger=namelist:jules_surface=anthrop_heat_mean: 1; -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::anthrop_heat_option -value-titles=DUKES fixed annual cycle, Flanner latitude-dependent annual and diurnal cycles -values=0,1 - -[namelist:jules_surface=beta1] -compulsory=true -description=Coupling coefficient for co-limitation -!kind=double -ns=namelist/JULES Science Settings/jules_surface/Parameters -sort-key=c -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::beta1 - -[namelist:jules_surface=beta2] -compulsory=true -description=Coupling coefficient for co-limitation -!kind=double -ns=namelist/JULES Science Settings/jules_surface/Parameters -sort-key=d -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::beta2 - -[namelist:jules_surface=beta_cnv_bl] -compulsory=true -description=Convective gustiness parameter in surface exchange -!kind=double -ns=namelist/JULES Science Settings/jules_surface/Parameters -range=0.0: -sort-key=Panel-F11a -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::beta_cnv_bl - -[namelist:jules_surface=cor_mo_iter] -compulsory=true -description=Corrections to Monin-Obukhov surface exchange calculation -!enumeration=true -sort-key=Panel-F11 -trigger=namelist:jules_surface=beta_cnv_bl: 4; -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::cor_mo_iter -value-titles=Correct convective gustiness in low winds, - =Correct U* in dust scheme, - =Limit Obukhov length in low winds, - =Improve initial guess (preferred) -values=1,2,3,4 - -[namelist:jules_surface=fd_hill_option] -compulsory=true -description=Orographic form drag formulation - =NOT AVAILABLE TO STANDALONE -!enumeration=true -help=The distributed version of turbulent orographic form drag can - =use steep or low hill formulations (the steep being the one used with - =effective roughness lengths), or the low hill formulation but with - =the resulting stress capped by that generated from the steep hill - =expression -sort-key=Panel-FX01c -value-titles=steep hill,low hill,capped low hill -values=0,1,2 - -[namelist:jules_surface=fd_stability_dep] -compulsory=true -description=Stability dependence option for orographic form drag - =NOT AVAILABLE TO STANDALONE -!enumeration=true -help=Turbulent orographic form drag can be implemented either using - =effective roughness lengths or as a distributed drag profile - =dependent on the switch namelist:jules_surface=formdrag. - =This drag can either be applied without any stability dependence, - =or dependent on the surface to level 1 Richardson number, or for - =the distributed version, on a bulk Richardson number between the - =surface and the diagnosed middle-layer depth, h_m. -sort-key=Panel-FX01b -value-titles=Off,Surface Ri,Bulk Ri -values=0,1,2 - -[namelist:jules_surface=formdrag] -compulsory=true -description=Orographic form drag option - =NOT AVAILABLE TO STANDALONE -!enumeration=true -fail-if=this != 0 and namelist:jules_model_environment=l_jules_parent == 0; # In standalone formdrag should be 0 -help=Turbulent orographic form drag can be implemented either using - =effective roughness lengths or as an explicit distributed drag profile. - =This option is currently not available to standalone as there - =is no mechanism of providing the necessary ancillary data. -sort-key=Panel-FX01 -trigger=namelist:jules_surface=orog_drag_param: 1,2; - =namelist:jules_surface=fd_stability_dep: 1,2; - =namelist:jules_surface=fd_hill_option: 2; - =namelist:run_stochastic=orog_drag_param_rp: 1,2; -value-titles=No orographic stress,Effective roughness,Distributed Drag -values=0,1,2 - -[namelist:jules_surface=fwe_c3] -compulsory=true -description=Factor in expressions for limitation of photosynthesis - =by transport of products for C3 grass -!kind=double -ns=namelist/JULES Science Settings/jules_surface/Parameters -sort-key=e -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::fwe_c3 - -[namelist:jules_surface=fwe_c4] -compulsory=true -description=Factor in expressions for limitation of photosynthesis - =by transport of products for C4 grass -!kind=double -ns=namelist/JULES Science Settings/jules_surface/Parameters -sort-key=f -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::fwe_c4 - -[namelist:jules_surface=hleaf] -compulsory=true -description=Specific heat capacity of leaves (J / K / kg Carbon) -!kind=double -ns=namelist/JULES Science Settings/jules_surface/Parameters -sort-key=a -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::hleaf - -[namelist:jules_surface=hwood] -compulsory=true -description=Specific heat capacity of wood (J / K / kg Carbon) -!kind=double -ns=namelist/JULES Science Settings/jules_surface/Parameters -sort-key=b -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::hwood - -[namelist:jules_surface=i_modiscopt] -compulsory=true -description=Method of discretization in the surface layer - =NOT AVAILABLE TO STANDALONE -!enumeration=true -fail-if=this !=0 and namelist:jules_model_environment=l_jules_parent == 0; # In standalone i_modiscopt should be 0 -help=Should always be 0 (i.e. off) in standalone. -sort-key=Panel-FX02 -value-titles=Off,On -values=0,1 - -[namelist:jules_surface=iscrntdiag] -compulsory=true -description=Method of diagnosing the screen temperature -!enumeration=true -fail-if=(this == 2 or this == 3) and namelist:jules_model_environment=l_jules_parent == 0; # The preferred option in standalone is 0. The decoupled option specified is not recommended until driving JULES with a decoupled variable is fully tested. -sort-key=Panel-F12 -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::iscrntdiag -value-titles=No decoupling, - =Decoupled in very stable conditions, - =Decoupled with transitional effects, - =Decoupled (T & q) with transitional effects -values=0,1,2,3 - -[namelist:jules_surface=l_anthrop_heat_src] -compulsory=true -description=Use anthropogenic heat source on urban surface types -sort-key=Panel-F03 -trigger=namelist:jules_surface=anthrop_heat_option: .true.; - =namelist:jules_urban=anthrop_heat_scale: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_anthrop_heat_src - -[namelist:jules_surface=l_elev_land_ice] -compulsory=true -description=Use individual tiled bedrock sub-surfaces for land ice tiles -fail-if=this and any(namelist:jules_surface_types=elev_ice < 0) and any(namelist:jules_surface_types=elev_rock < 0); # At least one of elev_ice or elev_rock needs to be used (> 0). - =this and len(namelist:jules_surface_types=elev_ice) == 0 and len(namelist:jules_surface_types=elev_rock) == 0; # At least one of elev_ice or elev_rock needs to be used (> 0). - =this and any(namelist:jules_surface_types=elev_ice < 0) and len(namelist:jules_surface_types=elev_rock) == 0; # At least one of elev_ice or elev_rock needs to be used (> 0). - =this and len(namelist:jules_surface_types=elev_ice) == 0 and any(namelist:jules_surface_types=elev_rock < 0); # At least one of elev_ice or elev_rock needs to be used (> 0). -sort-key=Panel-F04 -trigger=namelist:jules_soil=dzsoil_elev: .true.; - =namelist:jules_snow=rho_firn_albedo: .true.; - =namelist:jules_snow=aicemax: .true.; - =namelist:jules_surface_types=elev_ice: .true.; - =namelist:jules_surface_types=elev_rock: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_elev_land_ice - -[namelist:jules_surface=l_elev_lw_down] -compulsory=true -description=Adjust downward longwave radiation for elevated tiles -sort-key=Panel-F05 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_elev_lw_down - -[namelist:jules_surface=l_epot_corr] -compulsory=true -description=Use correction to calculation of potential evaporation -sort-key=Panel-F06 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_epot_corr - -[namelist:jules_surface=l_flake_model] -compulsory=true -description=Use the Flake model to simulate lakes. (Not yet ready to use with Irrigation or TRIFFID) -sort-key=Panel-F13 -trigger=namelist:jules_flake: .true.; - =namelist:jules_vegetation=l_triffid: .false.; - =namelist:jules_irrig=l_irrig_dmd: .false.; -type=logical - -[namelist:jules_surface=l_land_ice_imp] -compulsory=true -description=Use implicit numerics to update land ice temperatures -sort-key=Panel-F07 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_land_ice_imp - -[namelist:jules_surface=l_mo_buoyancy_calc] -compulsory=true -description=Switch for using interacting buoyancy in Monin-Obukhov calculation -sort-key=Panel-F14 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_mo_buoyancy_calc - -[namelist:jules_surface=l_point_data] -compulsory=true -description=Using point rainfall data -sort-key=Panel-F08 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_point_data - -[namelist:jules_surface=l_urban2t] -compulsory=true -description=Switch for using the two-tile urban schemes (including MORUSES) -sort-key=Panel-F09 -trigger=namelist:jules_surface_types=urban_canyon: .true.; - =namelist:jules_surface_types=urban_roof: .true.; - =namelist:jules_surface_types=urban: .false.; - =namelist:jules_urban: .true.; - =namelist:jules_urban=anthrop_heat_scale: .true.; - =namelist:urban_properties: .true.; - =namelist:run_stochastic=z0_urban_mult_rp: .true. ; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_urban2t - -[namelist:jules_surface=l_vary_z0m_soil] -compulsory=true -description=Enable soil roughness to be set from ancillary file - =NOT AVAILABLE TO STANDALONE -fail-if=this == '.true.' and namelist:jules_model_environment=l_jules_parent == 0; # Variable roughness length of bare soil is currently not available to standalone. -!kind=default -sort-key=Panel-FX04 -type=logical - -[namelist:jules_surface=orog_drag_param] -compulsory=true -description=Drag coefficient for orographic form drag - =NOT AVAILABLE TO STANDALONE -!kind=double -range=0.01:10.0 -sort-key=Panel-FX01a -type=real - -[namelist:jules_surface=srf_ex_cnv_gust] -compulsory=true -description=Include effect of convective downdraughts on surface exchange - =NOT AVAILABLE TO STANDALONE -fail-if=this !=0 and namelist:jules_model_environment=l_jules_parent == 0; # This is not currently available to standalone. -help=Surface exchange is affected by the mean wind, - =eddies spanning the depth - =of the boundary layer and eddies driven by convective downdraughts. - =Originally in the UM only boundary layer eddies were considered. If - =convective downdraughts are included, - =the impact of boundary-layer - =eddies on surface exchange is reduced and convective eddies are - =explicitly included using a parametrization due to Redelsperger - =et al. (2000), - =J. Climate,13,p. 402. -!kind=default -sort-key=Panel-FX03 -trigger=namelist:run_convection=cnv_cold_pools: 1; diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn2.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn2.0/rose-meta.conf deleted file mode 100644 index 3216cc4714..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn2.0/rose-meta.conf +++ /dev/null @@ -1,80 +0,0 @@ -[namelist:jules_surface] -compulsory=true -description=Options for surface parametrisations -ns=namelist/JULES Science Settings/jules_surface -sort-key=Section-A12c -title=Surface options -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html - -[namelist:jules_surface=cor_mo_iter] -compulsory=true -description=Corrections to Monin-Obukhov surface exchange calculation -!enumeration=true -sort-key=Panel-F11 -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::cor_mo_iter - -[namelist:jules_surface=fd_stability_dep] -compulsory=true -description=Stability dependence option for orographic form drag - =NOT AVAILABLE TO STANDALONE -!enumeration=true -help=Turbulent orographic form drag can be implemented either using - =effective roughness lengths or as a distributed drag profile - =dependent on the switch namelist:jules_surface=formdrag. - =This drag can either be applied without any stability dependence, - =or dependent on the surface to level 1 Richardson number, or for - =the distributed version, on a bulk Richardson number between the - =surface and the diagnosed middle-layer depth, h_m. -sort-key=Panel-FX01b - -[namelist:jules_surface=formdrag] -compulsory=true -description=Orographic form drag option - =NOT AVAILABLE TO STANDALONE -!enumeration=true -help=Turbulent orographic form drag can be implemented either using - =effective roughness lengths or as an explicit distributed drag profile. - =This option is currently not available to standalone as there - =is no mechanism of providing the necessary ancillary data. -sort-key=Panel-FX01 -value-titles=No orographic stress,Effective roughness,Distributed Drag - -[namelist:jules_surface=l_anthrop_heat_src] -compulsory=true -description=Use anthropogenic heat source on urban surface types -sort-key=Panel-F03 -trigger=namelist:jules_urban=anthrop_heat_scale: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_anthrop_heat_src - -[namelist:jules_surface=l_urban2t] -compulsory=true -description=Switch for using the two-tile urban schemes (including MORUSES) -sort-key=Panel-F09 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_urban2t - -[namelist:jules_surface=l_vary_z0m_soil] -compulsory=true -description=Enable soil roughness to be set from ancillary file - =NOT AVAILABLE TO STANDALONE -!kind=default -sort-key=Panel-FX04 -type=logical - -[namelist:jules_surface=srf_ex_cnv_gust] -compulsory=true -description=Include effect of convective downdraughts on surface exchange - =NOT AVAILABLE TO STANDALONE -help=Surface exchange is affected by the mean wind, - =eddies spanning the depth - =of the boundary layer and eddies driven by convective downdraughts. - =Originally in the UM only boundary layer eddies were considered. If - =convective downdraughts are included, - =the impact of boundary-layer - =eddies on surface exchange is reduced and convective eddies are - =explicitly included using a parametrization due to Redelsperger - =et al. (2000), - =J. Climate,13,p. 402. -!kind=default -sort-key=Panel-FX03 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn2.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn2.1/rose-meta.conf deleted file mode 100644 index 3216cc4714..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn2.1/rose-meta.conf +++ /dev/null @@ -1,80 +0,0 @@ -[namelist:jules_surface] -compulsory=true -description=Options for surface parametrisations -ns=namelist/JULES Science Settings/jules_surface -sort-key=Section-A12c -title=Surface options -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html - -[namelist:jules_surface=cor_mo_iter] -compulsory=true -description=Corrections to Monin-Obukhov surface exchange calculation -!enumeration=true -sort-key=Panel-F11 -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::cor_mo_iter - -[namelist:jules_surface=fd_stability_dep] -compulsory=true -description=Stability dependence option for orographic form drag - =NOT AVAILABLE TO STANDALONE -!enumeration=true -help=Turbulent orographic form drag can be implemented either using - =effective roughness lengths or as a distributed drag profile - =dependent on the switch namelist:jules_surface=formdrag. - =This drag can either be applied without any stability dependence, - =or dependent on the surface to level 1 Richardson number, or for - =the distributed version, on a bulk Richardson number between the - =surface and the diagnosed middle-layer depth, h_m. -sort-key=Panel-FX01b - -[namelist:jules_surface=formdrag] -compulsory=true -description=Orographic form drag option - =NOT AVAILABLE TO STANDALONE -!enumeration=true -help=Turbulent orographic form drag can be implemented either using - =effective roughness lengths or as an explicit distributed drag profile. - =This option is currently not available to standalone as there - =is no mechanism of providing the necessary ancillary data. -sort-key=Panel-FX01 -value-titles=No orographic stress,Effective roughness,Distributed Drag - -[namelist:jules_surface=l_anthrop_heat_src] -compulsory=true -description=Use anthropogenic heat source on urban surface types -sort-key=Panel-F03 -trigger=namelist:jules_urban=anthrop_heat_scale: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_anthrop_heat_src - -[namelist:jules_surface=l_urban2t] -compulsory=true -description=Switch for using the two-tile urban schemes (including MORUSES) -sort-key=Panel-F09 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_urban2t - -[namelist:jules_surface=l_vary_z0m_soil] -compulsory=true -description=Enable soil roughness to be set from ancillary file - =NOT AVAILABLE TO STANDALONE -!kind=default -sort-key=Panel-FX04 -type=logical - -[namelist:jules_surface=srf_ex_cnv_gust] -compulsory=true -description=Include effect of convective downdraughts on surface exchange - =NOT AVAILABLE TO STANDALONE -help=Surface exchange is affected by the mean wind, - =eddies spanning the depth - =of the boundary layer and eddies driven by convective downdraughts. - =Originally in the UM only boundary layer eddies were considered. If - =convective downdraughts are included, - =the impact of boundary-layer - =eddies on surface exchange is reduced and convective eddies are - =explicitly included using a parametrization due to Redelsperger - =et al. (2000), - =J. Climate,13,p. 402. -!kind=default -sort-key=Panel-FX03 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn2.2/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn2.2/rose-meta.conf deleted file mode 100644 index a169156ea9..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn2.2/rose-meta.conf +++ /dev/null @@ -1,97 +0,0 @@ -[namelist:jules_surface] -compulsory=true -description=Options for surface parametrisations -ns=namelist/JULES Science Settings/jules_surface -sort-key=Section-A12e -title=Surface options -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html - -[namelist:jules_surface=cor_mo_iter] -compulsory=true -description=Corrections to Monin-Obukhov surface exchange calculation -!enumeration=true -sort-key=Panel-F11 -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::cor_mo_iter -value-titles=Correct convective gustiness in low winds, - =Correct U* in dust scheme, - =Limit Obukhov length in low winds, - =Improve initial guess (preferred) -values=1,2,3,4 - -[namelist:jules_surface=fd_stability_dep] -compulsory=true -description=Stability dependence option for orographic form drag - =NOT AVAILABLE TO STANDALONE -!enumeration=true -help=Turbulent orographic form drag can be implemented either using - =effective roughness lengths or as a distributed drag profile - =dependent on the switch namelist:jules_surface=formdrag. - =This drag can either be applied without any stability dependence, - =or dependent on the surface to level 1 Richardson number, or for - =the distributed version, on a bulk Richardson number between the - =surface and the diagnosed middle-layer depth, h_m. -sort-key=Panel-FX01b -value-titles=Off,Surface Ri,Bulk Ri -values=0,1,2 - -[namelist:jules_surface=formdrag] -compulsory=true -description=Orographic form drag option - =NOT AVAILABLE TO STANDALONE -!enumeration=true -help=Turbulent orographic form drag can be implemented either using - =effective roughness lengths or as an explicit distributed drag profile. - =This option is currently not available to standalone as there - =is no mechanism of providing the necessary ancillary data. -sort-key=Panel-FX01 -trigger=namelist:jules_surface=orog_drag_param: 1,2; - =namelist:jules_surface=fd_stability_dep: 1,2; - =namelist:jules_surface=fd_hill_option: 2; -value-titles=No orographic stress,Effective roughness,Distributed Drag -values=0,1,2 - -[namelist:jules_surface=l_anthrop_heat_src] -compulsory=true -description=Use anthropogenic heat source on urban surface types -sort-key=Panel-F03 -trigger=namelist:jules_urban=anthrop_heat_scale: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_anthrop_heat_src - -[namelist:jules_surface=l_urban2t] -compulsory=true -description=Switch for using the two-tile urban schemes (including MORUSES) -sort-key=Panel-F09 -trigger=namelist:jules_surface_types=urban_canyon: .true.; - =namelist:jules_surface_types=urban_roof: .true.; - =namelist:jules_surface_types=urban: .false.; - =namelist:jules_urban: .true.; - =namelist:jules_urban=anthrop_heat_scale: .true.; - =namelist:urban_properties: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_urban2t - -[namelist:jules_surface=l_vary_z0m_soil] -compulsory=true -description=Enable soil roughness to be set from ancillary file - =NOT AVAILABLE TO STANDALONE -!kind=default -sort-key=Panel-FX04 -type=logical - -[namelist:jules_surface=srf_ex_cnv_gust] -compulsory=true -description=Include effect of convective downdraughts on surface exchange - =NOT AVAILABLE TO STANDALONE -help=Surface exchange is affected by the mean wind, - =eddies spanning the depth - =of the boundary layer and eddies driven by convective downdraughts. - =Originally in the UM only boundary layer eddies were considered. If - =convective downdraughts are included, - =the impact of boundary-layer - =eddies on surface exchange is reduced and convective eddies are - =explicitly included using a parametrization due to Redelsperger - =et al. (2000), - =J. Climate,13,p. 402. -!kind=default -sort-key=Panel-FX03 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn3.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn3.0/rose-meta.conf deleted file mode 100644 index 298fad335a..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn3.0/rose-meta.conf +++ /dev/null @@ -1,115 +0,0 @@ -[namelist:jules_surface] -compulsory=true -description=Options for surface parametrisations -ns=namelist/JULES Science Settings/jules_surface -sort-key=Section-A12e -title=Surface options -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html - -[namelist:jules_surface=anthrop_heat_mean] -compulsory=true -description=Baseline mean anthropogenic heat flux for Flanner scheme -sort-key=Panel-F03b -type=real -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::anthrop_heat_mean - -[namelist:jules_surface=anthrop_heat_option] -compulsory=true -description=Options for calculating anthropogenic heat -!enumeration=true -sort-key=Panel-F03a -trigger=namelist:jules_surface=anthrop_heat_mean: 1; -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::anthrop_heat_option -value-titles=DUKES fixed annual cycle, Flanner latitude-dependent annual and diurnal cycles -values=0,1 - -[namelist:jules_surface=cor_mo_iter] -compulsory=true -description=Corrections to Monin-Obukhov surface exchange calculation -!enumeration=true -sort-key=Panel-F11 -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::cor_mo_iter -value-titles=Correct convective gustiness in low winds, - =Correct U* in dust scheme, - =Limit Obukhov length in low winds, - =Improve initial guess (preferred) -values=1,2,3,4 - -[namelist:jules_surface=fd_stability_dep] -compulsory=true -description=Stability dependence option for orographic form drag - =NOT AVAILABLE TO STANDALONE -!enumeration=true -help=Turbulent orographic form drag can be implemented either using - =effective roughness lengths or as a distributed drag profile - =dependent on the switch namelist:jules_surface=formdrag. - =This drag can either be applied without any stability dependence, - =or dependent on the surface to level 1 Richardson number, or for - =the distributed version, on a bulk Richardson number between the - =surface and the diagnosed middle-layer depth, h_m. -sort-key=Panel-FX01b -value-titles=Off,Surface Ri,Bulk Ri -values=0,1,2 - -[namelist:jules_surface=formdrag] -compulsory=true -description=Orographic form drag option - =NOT AVAILABLE TO STANDALONE -!enumeration=true -help=Turbulent orographic form drag can be implemented either using - =effective roughness lengths or as an explicit distributed drag profile. - =This option is currently not available to standalone as there - =is no mechanism of providing the necessary ancillary data. -sort-key=Panel-FX01 -trigger=namelist:jules_surface=orog_drag_param: 1,2; - =namelist:jules_surface=fd_stability_dep: 1,2; - =namelist:jules_surface=fd_hill_option: 2; -value-titles=No orographic stress,Effective roughness,Distributed Drag -values=0,1,2 - -[namelist:jules_surface=l_anthrop_heat_src] -compulsory=true -description=Use anthropogenic heat source on urban surface types -sort-key=Panel-F03 -trigger=namelist:jules_surface=anthrop_heat_option: .true.; - =namelist:jules_urban=anthrop_heat_scale: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_anthrop_heat_src - -[namelist:jules_surface=l_urban2t] -compulsory=true -description=Switch for using the two-tile urban schemes (including MORUSES) -sort-key=Panel-F09 -trigger=namelist:jules_surface_types=urban_canyon: .true.; - =namelist:jules_surface_types=urban_roof: .true.; - =namelist:jules_surface_types=urban: .false.; - =namelist:jules_urban: .true.; - =namelist:jules_urban=anthrop_heat_scale: .true.; - =namelist:urban_properties: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_urban2t - -[namelist:jules_surface=l_vary_z0m_soil] -compulsory=true -description=Enable soil roughness to be set from ancillary file - =NOT AVAILABLE TO STANDALONE -!kind=default -sort-key=Panel-FX04 -type=logical - -[namelist:jules_surface=srf_ex_cnv_gust] -compulsory=true -description=Include effect of convective downdraughts on surface exchange - =NOT AVAILABLE TO STANDALONE -help=Surface exchange is affected by the mean wind, - =eddies spanning the depth - =of the boundary layer and eddies driven by convective downdraughts. - =Originally in the UM only boundary layer eddies were considered. If - =convective downdraughts are included, - =the impact of boundary-layer - =eddies on surface exchange is reduced and convective eddies are - =explicitly included using a parametrization due to Redelsperger - =et al. (2000), - =J. Climate,13,p. 402. -!kind=default -sort-key=Panel-FX03 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/HEAD/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/HEAD/rose-meta.conf deleted file mode 100644 index 4f1e6fb273..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/HEAD/rose-meta.conf +++ /dev/null @@ -1,50 +0,0 @@ -[namelist:jules_urban] -compulsory=true -description=Sets the options available for the two-tile urban schemes including - =MORUSES. For all other parameters that MORUSES does not - =provide and for any MORUSES parametrisations that are turned - =off, values from "Non-vegetated surface parameters" will be - =used instead. See help for more information. -ns=namelist/JULES Science Settings/jules_urban -sort-key=Section-A12o -title=Urban options -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#namelist-JULES_URBAN - -[namelist:jules_urban=anthrop_heat_scale] -compulsory=true -description=Distribution scaling factor for anthropogenic heat flux -!kind=default -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::anthrop_heat_scale - -[namelist:jules_urban=l_moruses_albedo] -compulsory=true -description=Use MORUSES parameterisation for effective canyon albedo (snow free) -type=logical -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_albedo - -[namelist:jules_urban=l_moruses_emissivity] -compulsory=true -description=Use MORUSES parameterisation for effective canyon emissivity -type=logical -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_emissivity - -[namelist:jules_urban=l_moruses_rough] -compulsory=true -description=Use MORUSES parameterisation for effective roughness length for heat -type=logical -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_rough - -[namelist:jules_urban=l_moruses_storage] -compulsory=true -description=Use MORUSES parameterisation for thermal inertia and coupling with underlying soil -trigger=namelist:jules_urban=l_moruses_storage_thin: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_storage - -[namelist:jules_urban=l_moruses_storage_thin] -compulsory=true -description=Use thin roofs (includes effects of insulation) -type=logical -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_storage_thin diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn2.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn2.0/rose-meta.conf deleted file mode 100644 index 43a5d04b92..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn2.0/rose-meta.conf +++ /dev/null @@ -1,50 +0,0 @@ -[namelist:jules_urban] -compulsory=true -description=Sets the options available for the two-tile urban schemes including - =MORUSES. For all other parameters that MORUSES does not - =provide and for any MORUSES parametrisations that are turned - =off, values from "Non-vegetated surface parameters" will be - =used instead. See help for more information. -ns=namelist/JULES Science Settings/jules_urban -sort-key=Section-A12g -title=Urban options -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#namelist-JULES_URBAN - -[namelist:jules_urban=anthrop_heat_scale] -compulsory=true -description=Distribution scaling factor for anthropogenic heat flux -!kind=default -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::anthrop_heat_scale - -[namelist:jules_urban=l_moruses_albedo] -compulsory=true -description=Use MORUSES parameterisation for effective canyon albedo (snow free) -type=logical -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_albedo - -[namelist:jules_urban=l_moruses_emissivity] -compulsory=true -description=Use MORUSES parameterisation for effective canyon emissivity -type=logical -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_emissivity - -[namelist:jules_urban=l_moruses_rough] -compulsory=true -description=Use MORUSES parameterisation for effective roughness length for heat -type=logical -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_rough - -[namelist:jules_urban=l_moruses_storage] -compulsory=true -description=Use MORUSES parameterisation for thermal inertia and coupling with underlying soil -trigger=namelist:jules_urban=l_moruses_storage_thin: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_storage - -[namelist:jules_urban=l_moruses_storage_thin] -compulsory=true -description=Use thin roofs (includes effects of insulation) -type=logical -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_storage_thin diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn2.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn2.1/rose-meta.conf deleted file mode 100644 index 43a5d04b92..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn2.1/rose-meta.conf +++ /dev/null @@ -1,50 +0,0 @@ -[namelist:jules_urban] -compulsory=true -description=Sets the options available for the two-tile urban schemes including - =MORUSES. For all other parameters that MORUSES does not - =provide and for any MORUSES parametrisations that are turned - =off, values from "Non-vegetated surface parameters" will be - =used instead. See help for more information. -ns=namelist/JULES Science Settings/jules_urban -sort-key=Section-A12g -title=Urban options -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#namelist-JULES_URBAN - -[namelist:jules_urban=anthrop_heat_scale] -compulsory=true -description=Distribution scaling factor for anthropogenic heat flux -!kind=default -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::anthrop_heat_scale - -[namelist:jules_urban=l_moruses_albedo] -compulsory=true -description=Use MORUSES parameterisation for effective canyon albedo (snow free) -type=logical -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_albedo - -[namelist:jules_urban=l_moruses_emissivity] -compulsory=true -description=Use MORUSES parameterisation for effective canyon emissivity -type=logical -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_emissivity - -[namelist:jules_urban=l_moruses_rough] -compulsory=true -description=Use MORUSES parameterisation for effective roughness length for heat -type=logical -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_rough - -[namelist:jules_urban=l_moruses_storage] -compulsory=true -description=Use MORUSES parameterisation for thermal inertia and coupling with underlying soil -trigger=namelist:jules_urban=l_moruses_storage_thin: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_storage - -[namelist:jules_urban=l_moruses_storage_thin] -compulsory=true -description=Use thin roofs (includes effects of insulation) -type=logical -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_storage_thin diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn2.2/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn2.2/rose-meta.conf deleted file mode 100644 index 4f1e6fb273..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn2.2/rose-meta.conf +++ /dev/null @@ -1,50 +0,0 @@ -[namelist:jules_urban] -compulsory=true -description=Sets the options available for the two-tile urban schemes including - =MORUSES. For all other parameters that MORUSES does not - =provide and for any MORUSES parametrisations that are turned - =off, values from "Non-vegetated surface parameters" will be - =used instead. See help for more information. -ns=namelist/JULES Science Settings/jules_urban -sort-key=Section-A12o -title=Urban options -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#namelist-JULES_URBAN - -[namelist:jules_urban=anthrop_heat_scale] -compulsory=true -description=Distribution scaling factor for anthropogenic heat flux -!kind=default -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::anthrop_heat_scale - -[namelist:jules_urban=l_moruses_albedo] -compulsory=true -description=Use MORUSES parameterisation for effective canyon albedo (snow free) -type=logical -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_albedo - -[namelist:jules_urban=l_moruses_emissivity] -compulsory=true -description=Use MORUSES parameterisation for effective canyon emissivity -type=logical -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_emissivity - -[namelist:jules_urban=l_moruses_rough] -compulsory=true -description=Use MORUSES parameterisation for effective roughness length for heat -type=logical -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_rough - -[namelist:jules_urban=l_moruses_storage] -compulsory=true -description=Use MORUSES parameterisation for thermal inertia and coupling with underlying soil -trigger=namelist:jules_urban=l_moruses_storage_thin: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_storage - -[namelist:jules_urban=l_moruses_storage_thin] -compulsory=true -description=Use thin roofs (includes effects of insulation) -type=logical -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_storage_thin diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn3.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn3.0/rose-meta.conf deleted file mode 100644 index 4f1e6fb273..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn3.0/rose-meta.conf +++ /dev/null @@ -1,50 +0,0 @@ -[namelist:jules_urban] -compulsory=true -description=Sets the options available for the two-tile urban schemes including - =MORUSES. For all other parameters that MORUSES does not - =provide and for any MORUSES parametrisations that are turned - =off, values from "Non-vegetated surface parameters" will be - =used instead. See help for more information. -ns=namelist/JULES Science Settings/jules_urban -sort-key=Section-A12o -title=Urban options -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#namelist-JULES_URBAN - -[namelist:jules_urban=anthrop_heat_scale] -compulsory=true -description=Distribution scaling factor for anthropogenic heat flux -!kind=default -range=0:1 -type=real -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::anthrop_heat_scale - -[namelist:jules_urban=l_moruses_albedo] -compulsory=true -description=Use MORUSES parameterisation for effective canyon albedo (snow free) -type=logical -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_albedo - -[namelist:jules_urban=l_moruses_emissivity] -compulsory=true -description=Use MORUSES parameterisation for effective canyon emissivity -type=logical -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_emissivity - -[namelist:jules_urban=l_moruses_rough] -compulsory=true -description=Use MORUSES parameterisation for effective roughness length for heat -type=logical -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_rough - -[namelist:jules_urban=l_moruses_storage] -compulsory=true -description=Use MORUSES parameterisation for thermal inertia and coupling with underlying soil -trigger=namelist:jules_urban=l_moruses_storage_thin: .true.; -type=logical -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_storage - -[namelist:jules_urban=l_moruses_storage_thin] -compulsory=true -description=Use thin roofs (includes effects of insulation) -type=logical -url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_storage_thin diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/HEAD/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/HEAD/rose-meta.conf deleted file mode 100644 index f59be621ca..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/HEAD/rose-meta.conf +++ /dev/null @@ -1,34 +0,0 @@ -[namelist:jules_vegetation] -compulsory=true -description=Options for vegetation parametrisations -ns=namelist/JULES Science Settings/jules_vegetation -sort-key=Section-A12f -title=Vegetation options -url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html - -[namelist:jules_vegetation=can_rad_mod] -compulsory=true -description=Vegetation canopy radiation model -!enumeration=true -sort-key=Panel-I13 -url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::can_rad_mod -value-titles=1: Single canopy layer, - =4: Multi-layer two stream approach, - =5: Multi-layer with Sunfleck penetration and sunlit and shaded leaves, - =6: Multi-layer with exponential decline in leaf N - -[namelist:jules_vegetation=l_limit_canhc] -compulsory=true -description=Logical for capping vegetation canopy areal thermal heat capacity -!kind=default -sort-key=Panel-I04 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_limit_canhc - -[namelist:jules_vegetation=l_spec_veg_z0] -compulsory=true -description=Logical switch for setting explicit vegetation roughness lengths -!kind=default -sort-key=Panel-I05 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_spec_veg_z0 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn2.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn2.0/rose-meta.conf deleted file mode 100644 index 4118960528..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn2.0/rose-meta.conf +++ /dev/null @@ -1,34 +0,0 @@ -[namelist:jules_vegetation] -compulsory=true -description=Options for vegetation parametrisations -ns=namelist/JULES Science Settings/jules_vegetation -sort-key=Section-A12d -title=Vegetation options -url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html - -[namelist:jules_vegetation=can_rad_mod] -compulsory=true -description=Vegetation canopy radiation model -!enumeration=true -sort-key=Panel-I13 -url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::can_rad_mod -value-titles=1: Single canopy layer, - =4: Multi-layer two stream approach, - =5: Multi-layer with Sunfleck penetration and sunlit and shaded leaves, - =6: Multi-layer with exponential decline in leaf N - -[namelist:jules_vegetation=l_limit_canhc] -compulsory=true -description=Logical for capping vegetation canopy areal thermal heat capacity -!kind=default -sort-key=Panel-I04 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_limit_canhc - -[namelist:jules_vegetation=l_spec_veg_z0] -compulsory=true -description=Logical switch for setting explicit vegetation roughness lengths -!kind=default -sort-key=Panel-I05 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_spec_veg_z0 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn2.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn2.1/rose-meta.conf deleted file mode 100644 index 4118960528..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn2.1/rose-meta.conf +++ /dev/null @@ -1,34 +0,0 @@ -[namelist:jules_vegetation] -compulsory=true -description=Options for vegetation parametrisations -ns=namelist/JULES Science Settings/jules_vegetation -sort-key=Section-A12d -title=Vegetation options -url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html - -[namelist:jules_vegetation=can_rad_mod] -compulsory=true -description=Vegetation canopy radiation model -!enumeration=true -sort-key=Panel-I13 -url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::can_rad_mod -value-titles=1: Single canopy layer, - =4: Multi-layer two stream approach, - =5: Multi-layer with Sunfleck penetration and sunlit and shaded leaves, - =6: Multi-layer with exponential decline in leaf N - -[namelist:jules_vegetation=l_limit_canhc] -compulsory=true -description=Logical for capping vegetation canopy areal thermal heat capacity -!kind=default -sort-key=Panel-I04 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_limit_canhc - -[namelist:jules_vegetation=l_spec_veg_z0] -compulsory=true -description=Logical switch for setting explicit vegetation roughness lengths -!kind=default -sort-key=Panel-I05 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_spec_veg_z0 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn2.2/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn2.2/rose-meta.conf deleted file mode 100644 index f59be621ca..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn2.2/rose-meta.conf +++ /dev/null @@ -1,34 +0,0 @@ -[namelist:jules_vegetation] -compulsory=true -description=Options for vegetation parametrisations -ns=namelist/JULES Science Settings/jules_vegetation -sort-key=Section-A12f -title=Vegetation options -url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html - -[namelist:jules_vegetation=can_rad_mod] -compulsory=true -description=Vegetation canopy radiation model -!enumeration=true -sort-key=Panel-I13 -url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::can_rad_mod -value-titles=1: Single canopy layer, - =4: Multi-layer two stream approach, - =5: Multi-layer with Sunfleck penetration and sunlit and shaded leaves, - =6: Multi-layer with exponential decline in leaf N - -[namelist:jules_vegetation=l_limit_canhc] -compulsory=true -description=Logical for capping vegetation canopy areal thermal heat capacity -!kind=default -sort-key=Panel-I04 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_limit_canhc - -[namelist:jules_vegetation=l_spec_veg_z0] -compulsory=true -description=Logical switch for setting explicit vegetation roughness lengths -!kind=default -sort-key=Panel-I05 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_spec_veg_z0 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn3.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn3.0/rose-meta.conf deleted file mode 100644 index f59be621ca..0000000000 --- a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn3.0/rose-meta.conf +++ /dev/null @@ -1,34 +0,0 @@ -[namelist:jules_vegetation] -compulsory=true -description=Options for vegetation parametrisations -ns=namelist/JULES Science Settings/jules_vegetation -sort-key=Section-A12f -title=Vegetation options -url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html - -[namelist:jules_vegetation=can_rad_mod] -compulsory=true -description=Vegetation canopy radiation model -!enumeration=true -sort-key=Panel-I13 -url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::can_rad_mod -value-titles=1: Single canopy layer, - =4: Multi-layer two stream approach, - =5: Multi-layer with Sunfleck penetration and sunlit and shaded leaves, - =6: Multi-layer with exponential decline in leaf N - -[namelist:jules_vegetation=l_limit_canhc] -compulsory=true -description=Logical for capping vegetation canopy areal thermal heat capacity -!kind=default -sort-key=Panel-I04 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_limit_canhc - -[namelist:jules_vegetation=l_spec_veg_z0] -compulsory=true -description=Logical switch for setting explicit vegetation roughness lengths -!kind=default -sort-key=Panel-I05 -type=logical -url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_spec_veg_z0 From 0ce63dee9d536683bb7e9dd7b19908704bc39c45 Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Fri, 13 Feb 2026 16:44:12 +0000 Subject: [PATCH 17/32] workig gungho_model --- applications/gungho_model/Makefile | 8 +++ build/extract/extract_rose_meta.mk | 19 +++++++ build/extract/extract_rose_meta.py | 82 ++++++++++++++++++++++++++++++ build/extract/get_git_sources.py | 6 ++- dependencies.yaml | 8 +-- 5 files changed, 118 insertions(+), 5 deletions(-) create mode 100644 build/extract/extract_rose_meta.mk create mode 100644 build/extract/extract_rose_meta.py diff --git a/applications/gungho_model/Makefile b/applications/gungho_model/Makefile index 8d364462ee..6ec9fa1a02 100644 --- a/applications/gungho_model/Makefile +++ b/applications/gungho_model/Makefile @@ -26,6 +26,9 @@ export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/lfric-xios \ $(APPS_ROOT_DIR)/science/gungho +# list of repositories from which metadata is required +export EXTERNAL_ROSE_META_DEPENDENCIES = jules + META_VN ?= HEAD META_FILE_DIR = $(PROJECT_DIR)/rose-meta/lfric-$(PROJECT_NAME)/$(META_VN) @@ -88,6 +91,11 @@ build: ALWAYS $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \ SOURCE_DIR=source $(call MESSAGE,=========================================================) + $(call MESSAGE,Extracting required external metadata) + $(call MESSAGE,=========================================================) + $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/build/extract/extract_rose_meta.mk \ + REPO=jules + $(call MESSAGE,=========================================================) $(call MESSAGE,Generating $(PROJECT) namelist loaders) $(call MESSAGE,=========================================================) $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/configuration.mk \ diff --git a/build/extract/extract_rose_meta.mk b/build/extract/extract_rose_meta.mk new file mode 100644 index 0000000000..2428e318ff --- /dev/null +++ b/build/extract/extract_rose_meta.mk @@ -0,0 +1,19 @@ +############################################################################## +# (c) Crown copyright 2026 Met Office. All rights reserved. +# The file LICENCE, distributed with this code, contains details of the terms +# under which the code may be used. +############################################################################## +# +# Run this file to extract source code from the UM repository. +# +# The following environment variables are used for input: +# REPO : Repo to extract rose-meta from. +# WORKING_DIR : Directory to hold working copies of source. +# +############################################################################### + +.PHONY: extract_meta + +extract_meta: + # Extract rose-meta from REPO + python $(APPS_ROOT_DIR)/build/extract/extract_rose_meta.py -r $(REPO) -d $(APPS_ROOT_DIR)/dependencies.yaml -o $(WORKING_DIR)/../rose-meta diff --git a/build/extract/extract_rose_meta.py b/build/extract/extract_rose_meta.py new file mode 100644 index 0000000000..743a061070 --- /dev/null +++ b/build/extract/extract_rose_meta.py @@ -0,0 +1,82 @@ +import argparse +import logging +import os +import tempfile +import yaml +from pathlib import Path +from shutil import copytree, rmtree +from get_git_sources import clone_and_merge + + +def load_yaml(fpath: Path) -> dict: + """ + Read in the dependencies.yaml file + """ + + with open(fpath) as stream: + sources = yaml.safe_load(stream) + + return sources + + +def parse_args() -> argparse.Namespace: + """ + Read command line args + """ + + parser = argparse.ArgumentParser("Extract physics code for LFRic Builds.") + parser.add_argument( + "-r", + "--repo", + default="jules", + help="The repository to get the rose-meta directories from", + ) + parser.add_argument( + "-d", + "--dependencies", + default="./dependencies.yaml", + help="The dependencies file for the apps working copy", + ) + parser.add_argument( + "-o", + "--output", + default=".", + type=Path, + help="Where to output the rose-meta directories to", + ) + args = parser.parse_args() + return args + + +def main(): + args = parse_args() + logging.basicConfig(level=logging.INFO) + + dependencies = load_yaml(args.dependencies) + sources = dependencies[args.repo] + + mirror_loc = os.getenv("MIRROR_LOC", "") + use_mirrors = bool(mirror_loc) + mirror_loc = Path(mirror_loc) + tidy_clone_loc = False + + # If the PHYSICS_ROOT environment variable is provided, then use sources there + # Otherwise clone and merge based on dependencies file + if "PHYSICS_ROOT" in os.environ and Path(os.environ["PHYSICS_ROOT"]).exists(): + clone_loc = Path(os.environ["PHYSICS_ROOT"]) / args.repo + tidy_clone_loc = True + else: + clone_loc = Path(tempfile.mkdtemp()) / args.repo + clone_and_merge(args.repo, sources, clone_loc, use_mirrors, mirror_loc) + + # Copy the rose-meta contents to the output directory + rose_meta_orig = clone_loc / "rose-meta" + for directory in rose_meta_orig.iterdir(): + copytree(directory, args.output / directory.name, dirs_exist_ok=True) + + if tidy_clone_loc: + rmtree(clone_loc) + + +if __name__ == "__main__": + main() diff --git a/build/extract/get_git_sources.py b/build/extract/get_git_sources.py index 4bf5fd632f..59afdb0068 100644 --- a/build/extract/get_git_sources.py +++ b/build/extract/get_git_sources.py @@ -88,7 +88,11 @@ def datetime_str() -> str: def clone_and_merge( - dependency: str, opts: Union[list, dict], loc: Path, use_mirrors: bool, mirror_loc: Path + dependency: str, + opts: Union[list, dict], + loc: Path, + use_mirrors: bool, + mirror_loc: Path, ) -> None: """ Wrapper script for calling get_source and merge_source for a single dependency diff --git a/dependencies.yaml b/dependencies.yaml index 27e5d34602..8f727021a3 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -22,16 +22,16 @@ casim: ref: 2025.12.1 jules: - source: git@github.com:MetOffice/jules.git - ref: 69aaf4d8e5dcf4e0134aac006b183e591aeb94d7 + source: git@github.com:james-bruten-mo/jules.git + ref: lfric_jules_metadata lfric_apps: source: ref: lfric_core: - source: git@github.com:MetOffice/lfric_core.git - ref: d2ebe4a73fa41c240d5ebacc7b80e135d7f458d9 + source: git@github.com:james-bruten-mo/lfric_core.git + ref: lfric_jules_metadata moci: source: git@github.com:MetOffice/moci.git From 352e0d9833d495df10e75c481be4e2c3055404d2 Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Mon, 16 Feb 2026 15:36:34 +0000 Subject: [PATCH 18/32] wip for merge main --- build/extract/extract_rose_meta.mk | 19 ------- build/extract/extract_rose_meta.py | 82 ------------------------------ build/extract/extract_science.py | 77 ++++++++++++++++++++-------- dependencies.yaml | 4 +- science/gungho/Makefile | 2 + 5 files changed, 61 insertions(+), 123 deletions(-) delete mode 100644 build/extract/extract_rose_meta.mk delete mode 100644 build/extract/extract_rose_meta.py diff --git a/build/extract/extract_rose_meta.mk b/build/extract/extract_rose_meta.mk deleted file mode 100644 index 2428e318ff..0000000000 --- a/build/extract/extract_rose_meta.mk +++ /dev/null @@ -1,19 +0,0 @@ -############################################################################## -# (c) Crown copyright 2026 Met Office. All rights reserved. -# The file LICENCE, distributed with this code, contains details of the terms -# under which the code may be used. -############################################################################## -# -# Run this file to extract source code from the UM repository. -# -# The following environment variables are used for input: -# REPO : Repo to extract rose-meta from. -# WORKING_DIR : Directory to hold working copies of source. -# -############################################################################### - -.PHONY: extract_meta - -extract_meta: - # Extract rose-meta from REPO - python $(APPS_ROOT_DIR)/build/extract/extract_rose_meta.py -r $(REPO) -d $(APPS_ROOT_DIR)/dependencies.yaml -o $(WORKING_DIR)/../rose-meta diff --git a/build/extract/extract_rose_meta.py b/build/extract/extract_rose_meta.py deleted file mode 100644 index 743a061070..0000000000 --- a/build/extract/extract_rose_meta.py +++ /dev/null @@ -1,82 +0,0 @@ -import argparse -import logging -import os -import tempfile -import yaml -from pathlib import Path -from shutil import copytree, rmtree -from get_git_sources import clone_and_merge - - -def load_yaml(fpath: Path) -> dict: - """ - Read in the dependencies.yaml file - """ - - with open(fpath) as stream: - sources = yaml.safe_load(stream) - - return sources - - -def parse_args() -> argparse.Namespace: - """ - Read command line args - """ - - parser = argparse.ArgumentParser("Extract physics code for LFRic Builds.") - parser.add_argument( - "-r", - "--repo", - default="jules", - help="The repository to get the rose-meta directories from", - ) - parser.add_argument( - "-d", - "--dependencies", - default="./dependencies.yaml", - help="The dependencies file for the apps working copy", - ) - parser.add_argument( - "-o", - "--output", - default=".", - type=Path, - help="Where to output the rose-meta directories to", - ) - args = parser.parse_args() - return args - - -def main(): - args = parse_args() - logging.basicConfig(level=logging.INFO) - - dependencies = load_yaml(args.dependencies) - sources = dependencies[args.repo] - - mirror_loc = os.getenv("MIRROR_LOC", "") - use_mirrors = bool(mirror_loc) - mirror_loc = Path(mirror_loc) - tidy_clone_loc = False - - # If the PHYSICS_ROOT environment variable is provided, then use sources there - # Otherwise clone and merge based on dependencies file - if "PHYSICS_ROOT" in os.environ and Path(os.environ["PHYSICS_ROOT"]).exists(): - clone_loc = Path(os.environ["PHYSICS_ROOT"]) / args.repo - tidy_clone_loc = True - else: - clone_loc = Path(tempfile.mkdtemp()) / args.repo - clone_and_merge(args.repo, sources, clone_loc, use_mirrors, mirror_loc) - - # Copy the rose-meta contents to the output directory - rose_meta_orig = clone_loc / "rose-meta" - for directory in rose_meta_orig.iterdir(): - copytree(directory, args.output / directory.name, dirs_exist_ok=True) - - if tidy_clone_loc: - rmtree(clone_loc) - - -if __name__ == "__main__": - main() diff --git a/build/extract/extract_science.py b/build/extract/extract_science.py index 845b87b012..2e76dff6d2 100755 --- a/build/extract/extract_science.py +++ b/build/extract/extract_science.py @@ -1,9 +1,10 @@ import argparse +import logging import os import yaml from pathlib import Path +from shutil import copytree from get_git_sources import clone_and_merge, run_command -import logging def load_yaml(fpath: Path) -> dict: @@ -17,7 +18,43 @@ def load_yaml(fpath: Path) -> dict: return sources -def extract_files(dependencies: dict, extract_lists: dict, working: Path) -> None: +def copy_rose_meta(working: Path, clone_loc: Path) -> None: + """ + Copy rose-meta contents from extracted dependency to working/../rose-meta + """ + + rose_meta_orig = clone_loc / "rose-meta" + rose_meta_dest = working.parent / "rose-meta" + + for directory in rose_meta_orig.iterdir(): + copytree(directory, rose_meta_dest / directory.name, dirs_exist_ok=True) + + +def copy_extracted_files(dependency: str, extract_lists: dict, working: Path, clone_loc: Path) -> None: + """ + Copy extracted files to the working dir based on extract list + """ + + files = extract_lists[dependency] + + # make the working directory location + working_dir = working / dependency + working_dir.mkdir(parents=True, exist_ok=True) + + # rsync extract files from clone loc to the working directory + copy_command = "rsync --include='**/' " + for extract_file in files: + if not extract_file: + continue + if Path(clone_loc / extract_file).is_dir(): + extract_file = extract_file.rstrip("/") + extract_file += "/**" + copy_command += f"--include='{extract_file}' " + copy_command += f"--exclude='*' -avmq {clone_loc}/ {working_dir}" + run_command(copy_command) + + +def extract_files(dependencies: dict, rose_meta: bool, extract_lists: dict, working: Path) -> None: """ Clone the dependency to a temporary location Then copy the desired files to the working directory @@ -29,9 +66,8 @@ def extract_files(dependencies: dict, extract_lists: dict, working: Path) -> Non mirror_loc = Path(mirror_loc) for dependency, sources in dependencies.items(): - if dependency not in extract_lists: + if dependency not in extract_lists and dependency != rose_meta: continue - files = extract_lists[dependency] # If the PHYSICS_ROOT environment variable is provided, then use sources there if "PHYSICS_ROOT" in os.environ and Path(os.environ["PHYSICS_ROOT"]).exists(): @@ -40,21 +76,11 @@ def extract_files(dependencies: dict, extract_lists: dict, working: Path) -> Non clone_loc = working.parent / "scratch" / dependency clone_and_merge(dependency, sources, clone_loc, use_mirrors, mirror_loc) - # make the working directory location - working_dir = working / dependency - working_dir.mkdir(parents=True, exist_ok=True) + if rose_meta: + copy_rose_meta(working, clone_loc) + else: + copy_extracted_files(dependency, extract_lists, working, clone_loc) - # rsync extract files from clone loc to the working directory - copy_command = "rsync --include='**/' " - for extract_file in files: - if not extract_file: - continue - if Path(clone_loc / extract_file).is_dir(): - extract_file = extract_file.rstrip("/") - extract_file += "/**" - copy_command += f"--include='{extract_file}' " - copy_command += f"--exclude='*' -avmq {clone_loc}/ {working_dir}" - run_command(copy_command) def parse_args() -> argparse.Namespace: @@ -76,6 +102,15 @@ def parse_args() -> argparse.Namespace: default="./extract.yaml", help="Path to file containing extract lists", ) + parser.add_argument( + "-r", + "--rose_meta", + type="str", + default="", + help="Should be a repository in the dependencies file. If set, copy the " + "dependencies rose-meta directory contents to working/../rose-meta. " + "If set, the extract file will be ignored, and just rose-metadata copied" + ) args = parser.parse_args() args.working = Path(args.working) @@ -87,10 +122,12 @@ def main(): logging.basicConfig(level=logging.INFO) - extract_lists: dict = load_yaml(args.extract) dependencies: dict = load_yaml(args.dependencies) - extract_files(dependencies, extract_lists, args.working) + if args.rose_meta: + extract_files(dependencies, True, [], args.working) + else: + extract_files(dependencies, False, load_yaml(args.extract), args.working) if __name__ == "__main__": diff --git a/dependencies.yaml b/dependencies.yaml index 8f727021a3..83921eebdd 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -30,8 +30,8 @@ lfric_apps: ref: lfric_core: - source: git@github.com:james-bruten-mo/lfric_core.git - ref: lfric_jules_metadata + source: cazld00001l:/var/tmp/persistent/fork_clones/lfric_core + ref: moci: source: git@github.com:MetOffice/moci.git diff --git a/science/gungho/Makefile b/science/gungho/Makefile index 5a304b0cfc..b2c4baf9a4 100644 --- a/science/gungho/Makefile +++ b/science/gungho/Makefile @@ -33,6 +33,8 @@ export PROFILE ?= fast-debug export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) +export EXTRA_ROSE_META = jules + export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ $(CORE_ROOT_DIR)/components/science \ From eee6ac4f4ca2c1caf23084f37b3dd16d7506f8b7 Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Mon, 16 Feb 2026 15:39:00 +0000 Subject: [PATCH 19/32] fix merge --- dependencies.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/dependencies.yaml b/dependencies.yaml index f892e33896..83921eebdd 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -30,13 +30,8 @@ lfric_apps: ref: lfric_core: -<<<<<<< HEAD source: cazld00001l:/var/tmp/persistent/fork_clones/lfric_core ref: -======= - source: git@github.com:MetOffice/lfric_core.git - ref: 88533c52381b6b01c4e03910f895ad8529fae522 ->>>>>>> upstream/main moci: source: git@github.com:MetOffice/moci.git From 65650d62ec49c466ac7d1eb92988a2f37c1fe3a4 Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Mon, 16 Feb 2026 16:50:45 +0000 Subject: [PATCH 20/32] update all makefiles --- applications/adjoint_tests/Makefile | 2 ++ applications/gravity_wave/Makefile | 2 ++ applications/gungho_model/Makefile | 2 ++ applications/jedi_lfric_tests/Makefile | 2 ++ applications/jules/Makefile | 2 ++ applications/lfric2lfric/Makefile | 2 ++ applications/lfric_atm/Makefile | 3 +++ applications/lfric_coupled/Makefile | 2 ++ applications/lfricinputs/Makefile | 2 ++ applications/linear_model/Makefile | 2 ++ applications/name_transport/Makefile | 2 ++ applications/ngarch/Makefile | 2 ++ applications/shallow_water/Makefile | 2 ++ applications/transport/Makefile | 2 ++ build/extract/extract_science.py | 16 ++++++++-------- interfaces/coupled_interface/Makefile | 2 ++ interfaces/jedi_lfric_interface/Makefile | 2 ++ science/adjoint/Makefile | 2 ++ science/linear/Makefile | 2 ++ 19 files changed, 45 insertions(+), 8 deletions(-) diff --git a/applications/adjoint_tests/Makefile b/applications/adjoint_tests/Makefile index 15101cd9db..103333ea24 100644 --- a/applications/adjoint_tests/Makefile +++ b/applications/adjoint_tests/Makefile @@ -25,6 +25,8 @@ ADJT_CONFIG_FILE := $(PROJECT_DIR)/build/psyclone.cfg export BUILD_ADJ_TESTS := TRUE export PSYAD_CONFIG_FILE := $(ADJT_CONFIG_FILE) +export EXTRA_ROSE_META = jules + export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ $(CORE_ROOT_DIR)/components/science \ diff --git a/applications/gravity_wave/Makefile b/applications/gravity_wave/Makefile index 62f7c8731c..784f3c0aa7 100644 --- a/applications/gravity_wave/Makefile +++ b/applications/gravity_wave/Makefile @@ -20,6 +20,8 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) +export EXTRA_ROSE_META = jules + export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ $(CORE_ROOT_DIR)/components/science \ diff --git a/applications/gungho_model/Makefile b/applications/gungho_model/Makefile index 6ec9fa1a02..5f6fe41236 100644 --- a/applications/gungho_model/Makefile +++ b/applications/gungho_model/Makefile @@ -19,6 +19,8 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) +export EXTRA_ROSE_META = jules + export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ $(CORE_ROOT_DIR)/components/science \ diff --git a/applications/jedi_lfric_tests/Makefile b/applications/jedi_lfric_tests/Makefile index c76919a8f2..ef98647acf 100644 --- a/applications/jedi_lfric_tests/Makefile +++ b/applications/jedi_lfric_tests/Makefile @@ -20,6 +20,8 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) +export EXTRA_ROSE_META = jules + export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ $(CORE_ROOT_DIR)/components/science \ diff --git a/applications/jules/Makefile b/applications/jules/Makefile index 0a8f311c96..00aeb2cb13 100644 --- a/applications/jules/Makefile +++ b/applications/jules/Makefile @@ -20,6 +20,8 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) +export EXTRA_ROSE_META = jules + # Note - socrates_interface must come before jules_interface as there are dependencies on each other. export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ diff --git a/applications/lfric2lfric/Makefile b/applications/lfric2lfric/Makefile index 278036352f..5cd02f732c 100644 --- a/applications/lfric2lfric/Makefile +++ b/applications/lfric2lfric/Makefile @@ -20,6 +20,8 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) +export EXTRA_ROSE_META = jules + export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/coupling \ $(CORE_ROOT_DIR)/components/driver \ diff --git a/applications/lfric_atm/Makefile b/applications/lfric_atm/Makefile index 7457acec70..d43f4a0bfa 100644 --- a/applications/lfric_atm/Makefile +++ b/applications/lfric_atm/Makefile @@ -32,6 +32,9 @@ export IGNORE_DEPENDENCIES = c_shum_byteswap \ f_shum_is_denormal_mod +export EXTRA_ROSE_META = jules + + # Note - socrates_interface must come before jules_interface as there are dependencies on each other. export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ diff --git a/applications/lfric_coupled/Makefile b/applications/lfric_coupled/Makefile index 3954e70754..8d13dd1831 100644 --- a/applications/lfric_coupled/Makefile +++ b/applications/lfric_coupled/Makefile @@ -20,6 +20,8 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) +export EXTRA_ROSE_META = jules + # Note - socrates_interface must come before jules_interface as there are dependencies on each other. export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/coupling \ diff --git a/applications/lfricinputs/Makefile b/applications/lfricinputs/Makefile index 271f4b6b92..d08fec02c2 100644 --- a/applications/lfricinputs/Makefile +++ b/applications/lfricinputs/Makefile @@ -18,6 +18,8 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) +export EXTRA_ROSE_META = jules + export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/science \ $(CORE_ROOT_DIR)/components/inventory \ diff --git a/applications/linear_model/Makefile b/applications/linear_model/Makefile index 5755c6a89c..3383e3c0e2 100644 --- a/applications/linear_model/Makefile +++ b/applications/linear_model/Makefile @@ -19,6 +19,8 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) +export EXTRA_ROSE_META = jules + export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ $(CORE_ROOT_DIR)/components/science \ diff --git a/applications/name_transport/Makefile b/applications/name_transport/Makefile index 7ddbee74c8..5f13ff125c 100644 --- a/applications/name_transport/Makefile +++ b/applications/name_transport/Makefile @@ -20,6 +20,8 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) +export EXTRA_ROSE_META = jules + export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ $(CORE_ROOT_DIR)/components/science \ diff --git a/applications/ngarch/Makefile b/applications/ngarch/Makefile index a645cd3d23..87c78ca107 100644 --- a/applications/ngarch/Makefile +++ b/applications/ngarch/Makefile @@ -20,6 +20,8 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) +export EXTRA_ROSE_META = jules + # Note - socrates_interface must come before jules_interface as there are dependencies on each other. export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ diff --git a/applications/shallow_water/Makefile b/applications/shallow_water/Makefile index 13cb94ebd0..34fdbdce61 100644 --- a/applications/shallow_water/Makefile +++ b/applications/shallow_water/Makefile @@ -20,6 +20,8 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) +export EXTRA_ROSE_META = jules + export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ $(CORE_ROOT_DIR)/components/science \ diff --git a/applications/transport/Makefile b/applications/transport/Makefile index b849928a52..adbdb69081 100644 --- a/applications/transport/Makefile +++ b/applications/transport/Makefile @@ -20,6 +20,8 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) +export EXTRA_ROSE_META = jules + export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ $(CORE_ROOT_DIR)/components/science \ diff --git a/build/extract/extract_science.py b/build/extract/extract_science.py index 2e76dff6d2..088a55b1f8 100755 --- a/build/extract/extract_science.py +++ b/build/extract/extract_science.py @@ -54,7 +54,7 @@ def copy_extracted_files(dependency: str, extract_lists: dict, working: Path, cl run_command(copy_command) -def extract_files(dependencies: dict, rose_meta: bool, extract_lists: dict, working: Path) -> None: +def extract_files(dependencies: dict, rose_meta: str, extract_lists: dict, working: Path) -> None: """ Clone the dependency to a temporary location Then copy the desired files to the working directory @@ -76,10 +76,10 @@ def extract_files(dependencies: dict, rose_meta: bool, extract_lists: dict, work clone_loc = working.parent / "scratch" / dependency clone_and_merge(dependency, sources, clone_loc, use_mirrors, mirror_loc) - if rose_meta: - copy_rose_meta(working, clone_loc) - else: - copy_extracted_files(dependency, extract_lists, working, clone_loc) + if rose_meta: + copy_rose_meta(working, clone_loc) + else: + copy_extracted_files(dependency, extract_lists, working, clone_loc) @@ -105,7 +105,7 @@ def parse_args() -> argparse.Namespace: parser.add_argument( "-r", "--rose_meta", - type="str", + type=str, default="", help="Should be a repository in the dependencies file. If set, copy the " "dependencies rose-meta directory contents to working/../rose-meta. " @@ -125,9 +125,9 @@ def main(): dependencies: dict = load_yaml(args.dependencies) if args.rose_meta: - extract_files(dependencies, True, [], args.working) + extract_files(dependencies, args.rose_meta, [], args.working) else: - extract_files(dependencies, False, load_yaml(args.extract), args.working) + extract_files(dependencies, args.rose_meta, load_yaml(args.extract), args.working) if __name__ == "__main__": diff --git a/interfaces/coupled_interface/Makefile b/interfaces/coupled_interface/Makefile index bd39248f47..12ac57cef4 100644 --- a/interfaces/coupled_interface/Makefile +++ b/interfaces/coupled_interface/Makefile @@ -20,6 +20,8 @@ export PSYCLONE_TRANSFORMATION ?= none export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) +export EXTRA_ROSE_META = jules + export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/lfric-xios diff --git a/interfaces/jedi_lfric_interface/Makefile b/interfaces/jedi_lfric_interface/Makefile index b2f843a18c..1c4934d697 100644 --- a/interfaces/jedi_lfric_interface/Makefile +++ b/interfaces/jedi_lfric_interface/Makefile @@ -35,6 +35,8 @@ export EXTERNAL_DYNAMIC_LIBRARIES = netcdff netcdf yaxt yaxt_c export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) +export EXTRA_ROSE_META = jules + export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(APPS_ROOT_DIR)/science/gungho \ $(CORE_ROOT_DIR)/components/lfric-xios \ diff --git a/science/adjoint/Makefile b/science/adjoint/Makefile index 3120ac3e1f..c579d8ad77 100644 --- a/science/adjoint/Makefile +++ b/science/adjoint/Makefile @@ -9,6 +9,8 @@ export PROFILE ?= fast-debug export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) +export EXTRA_ROSE_META = jules + export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ $(CORE_ROOT_DIR)/components/science \ diff --git a/science/linear/Makefile b/science/linear/Makefile index 91bc866946..932d4a69fa 100644 --- a/science/linear/Makefile +++ b/science/linear/Makefile @@ -9,6 +9,8 @@ export PROFILE ?= fast-debug export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) +export EXTRA_ROSE_META = jules + export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ $(CORE_ROOT_DIR)/components/science \ From e849d079795ea1ec3baa63ccc810afddf815f2e8 Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Mon, 16 Feb 2026 16:59:47 +0000 Subject: [PATCH 21/32] revert gungho changes --- applications/gungho_model/Makefile | 8 -------- 1 file changed, 8 deletions(-) diff --git a/applications/gungho_model/Makefile b/applications/gungho_model/Makefile index 5f6fe41236..dbe3752f0a 100644 --- a/applications/gungho_model/Makefile +++ b/applications/gungho_model/Makefile @@ -28,9 +28,6 @@ export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/lfric-xios \ $(APPS_ROOT_DIR)/science/gungho -# list of repositories from which metadata is required -export EXTERNAL_ROSE_META_DEPENDENCIES = jules - META_VN ?= HEAD META_FILE_DIR = $(PROJECT_DIR)/rose-meta/lfric-$(PROJECT_NAME)/$(META_VN) @@ -93,11 +90,6 @@ build: ALWAYS $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \ SOURCE_DIR=source $(call MESSAGE,=========================================================) - $(call MESSAGE,Extracting required external metadata) - $(call MESSAGE,=========================================================) - $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/build/extract/extract_rose_meta.mk \ - REPO=jules - $(call MESSAGE,=========================================================) $(call MESSAGE,Generating $(PROJECT) namelist loaders) $(call MESSAGE,=========================================================) $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/configuration.mk \ From cae95e04a6e996971c23637b1fdb036fe2040476 Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Tue, 10 Mar 2026 13:44:44 +0000 Subject: [PATCH 22/32] update dependencies --- dependencies.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.yaml b/dependencies.yaml index 0450c00448..8d49a545f4 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -30,8 +30,8 @@ lfric_apps: ref: lfric_core: - source: cazld00001l:/var/tmp/persistent/fork_clones/lfric_core - ref: + source: git@github.com:james-bruten-mo/lfric_core.git + ref: lfric_jules_metadata moci: source: git@github.com:MetOffice/moci.git From 5b142a8670cc324213bba3ffbaaa895392eb709b Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Tue, 10 Mar 2026 14:34:28 +0000 Subject: [PATCH 23/32] remove symlinks --- rose-meta/jules-lfric | 1 - rose-meta/lfric-jules-shared | 1 - 2 files changed, 2 deletions(-) delete mode 120000 rose-meta/jules-lfric delete mode 120000 rose-meta/lfric-jules-shared diff --git a/rose-meta/jules-lfric b/rose-meta/jules-lfric deleted file mode 120000 index 6581f11cdc..0000000000 --- a/rose-meta/jules-lfric +++ /dev/null @@ -1 +0,0 @@ -../interfaces/jules_interface/rose-meta/jules-lfric \ No newline at end of file diff --git a/rose-meta/lfric-jules-shared b/rose-meta/lfric-jules-shared deleted file mode 120000 index b81a86aeaf..0000000000 --- a/rose-meta/lfric-jules-shared +++ /dev/null @@ -1 +0,0 @@ -../interfaces/jules_interface/rose-meta/lfric-jules-shared \ No newline at end of file From eefe664e63e3f1607eeba99922b3bab1cd1a6f25 Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Thu, 12 Mar 2026 13:09:49 +0000 Subject: [PATCH 24/32] update to correctly call meta extraction --- applications/adjoint_tests/Makefile | 4 ++++ applications/gravity_wave/Makefile | 7 ++++++- applications/gungho_model/Makefile | 4 ++++ applications/jedi_lfric_tests/Makefile | 9 +++++++-- applications/jules/Makefile | 4 ++++ applications/lfric2lfric/Makefile | 7 ++++++- applications/lfric_atm/Makefile | 4 ++++ applications/lfric_coupled/Makefile | 7 ++++++- applications/lfricinputs/Makefile | 4 ++++ applications/linear_model/Makefile | 4 ++++ applications/name_transport/Makefile | 7 ++++++- applications/ngarch/Makefile | 4 ++++ applications/shallow_water/Makefile | 7 ++++++- applications/transport/Makefile | 7 ++++++- build/extract/extract_meta.mk | 24 ++++++++++++++++++++++++ interfaces/coupled_interface/Makefile | 3 ++- interfaces/jedi_lfric_interface/Makefile | 5 +++-- science/adjoint/Makefile | 3 ++- science/gungho/Makefile | 5 +++-- science/linear/Makefile | 5 +++-- 20 files changed, 108 insertions(+), 16 deletions(-) create mode 100644 build/extract/extract_meta.mk diff --git a/applications/adjoint_tests/Makefile b/applications/adjoint_tests/Makefile index 50db3c9ae3..b398e6ffb1 100644 --- a/applications/adjoint_tests/Makefile +++ b/applications/adjoint_tests/Makefile @@ -125,6 +125,10 @@ build: ALWAYS $(call MESSAGE,========================================) $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \ SOURCE_DIR=source + $(call MESSAGE,========================================) + $(call MESSAGE,Extracting External Rose Metadata) + $(call MESSAGE,========================================) + $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/build/extract/extract_meta.mk $(call MESSAGE,=========================================================) $(call MESSAGE,Generating $(PROJECT) namelist loaders) $(call MESSAGE,=========================================================) diff --git a/applications/gravity_wave/Makefile b/applications/gravity_wave/Makefile index 784f3c0aa7..6cc4395e23 100644 --- a/applications/gravity_wave/Makefile +++ b/applications/gravity_wave/Makefile @@ -48,6 +48,7 @@ default: build unit-tests integration-tests documentation doc docs: document-uml document-latex document-api $(Q)echo > /dev/null +include $(APPS_ROOT_DIR)/build/extract/extract_meta.mk include $(CORE_ROOT_DIR)/infrastructure/build/lfric.mk include $(INTERNAL_DEPENDENCIES:=/build/import.mk) @@ -118,6 +119,10 @@ build: ALWAYS $(call MESSAGE,========================================) $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \ SOURCE_DIR=source + $(call MESSAGE,========================================) + $(call MESSAGE,Extracting External Rose Metadata) + $(call MESSAGE,========================================) + $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/build/extract/extract_meta.mk $(call MESSAGE,=========================================================) $(call MESSAGE,Generating namelist loaders for $(PROJECT)) $(call MESSAGE,=========================================================) @@ -159,7 +164,7 @@ unit-tests/%: export PROJECT = $(PROJECT_NAME) unit-tests/%: export SOURCE_DIR = source unit-tests/%: export TEST_DIR = unit-test unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-test -unit-tests: unit-tests/run +unit-tests: extract_meta unit-tests/run ############################################################################## diff --git a/applications/gungho_model/Makefile b/applications/gungho_model/Makefile index dbe3752f0a..6e3f46b496 100644 --- a/applications/gungho_model/Makefile +++ b/applications/gungho_model/Makefile @@ -89,6 +89,10 @@ build: ALWAYS $(call MESSAGE,========================================) $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \ SOURCE_DIR=source + $(call MESSAGE,========================================) + $(call MESSAGE,Extracting External Rose Metadata) + $(call MESSAGE,========================================) + $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/build/extract/extract_meta.mk $(call MESSAGE,=========================================================) $(call MESSAGE,Generating $(PROJECT) namelist loaders) $(call MESSAGE,=========================================================) diff --git a/applications/jedi_lfric_tests/Makefile b/applications/jedi_lfric_tests/Makefile index ef98647acf..ae7f99f7fb 100644 --- a/applications/jedi_lfric_tests/Makefile +++ b/applications/jedi_lfric_tests/Makefile @@ -51,6 +51,7 @@ default: build integration-tests documentation doc docs: document-uml document-latex document-api $(Q)echo > /dev/null +include $(APPS_ROOT_DIR)/build/extract/extract_meta.mk include $(CORE_ROOT_DIR)/infrastructure/build/lfric.mk include $(INTERNAL_DEPENDENCIES:=/build/import.mk) -include $(PROJECT_DIR)/build/project.mk @@ -125,6 +126,10 @@ build: ALWAYS $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \ SOURCE_DIR=source \ WORKING_DIR=$(WORKING_DIR) + $(call MESSAGE,========================================) + $(call MESSAGE,Extracting External Rose Metadata) + $(call MESSAGE,========================================) + $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/build/extract/extract_meta.mk $(call MESSAGE,=========================================================) $(call MESSAGE,Generating $(PROJECT) namelist loaders) $(call MESSAGE,=========================================================) @@ -177,7 +182,7 @@ unit-tests/%: export PROJECT = $(PROJECT_NAME) unit-tests/%: export SOURCE_DIR = source unit-tests/%: export TEST_DIR = unit-test unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-test -unit-tests: unit-tests/run +unit-tests: extract_meta unit-tests/run ############################################################################## @@ -199,7 +204,7 @@ integration-tests/%: export PROJECT = $(PROJECT_NAME) integration-tests/%: export SOURCE_DIR = source integration-tests/%: export TEST_DIR = integration-test integration-tests/%: export WORKING_DIR := $(WORKING_DIR)/integration-tests -integration-tests: integration-tests/run +integration-tests: extract_meta integration-tests/run ############################################################################## diff --git a/applications/jules/Makefile b/applications/jules/Makefile index 00aeb2cb13..2cfb28974e 100644 --- a/applications/jules/Makefile +++ b/applications/jules/Makefile @@ -102,6 +102,10 @@ build: ALWAYS $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \ SOURCE_DIR=source $(call MESSAGE,========================================) + $(call MESSAGE,Extracting External Rose Metadata) + $(call MESSAGE,========================================) + $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/build/extract/extract_meta.mk + $(call MESSAGE,========================================) $(call MESSAGE,Generating $(PROJECT) namelist loaders) $(call MESSAGE,========================================) $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/configuration.mk \ diff --git a/applications/lfric2lfric/Makefile b/applications/lfric2lfric/Makefile index 5cd02f732c..a0e520c688 100644 --- a/applications/lfric2lfric/Makefile +++ b/applications/lfric2lfric/Makefile @@ -49,6 +49,7 @@ default: build unit-tests integration-tests documentation doc docs: document-uml document-latex document-api $(Q)echo > /dev/null +include $(APPS_ROOT_DIR)/build/extract/extract_meta.mk include $(CORE_ROOT_DIR)/infrastructure/build/lfric.mk include $(INTERNAL_DEPENDENCIES:=/build/import.mk) @@ -119,6 +120,10 @@ build: ALWAYS $(call MESSAGE,========================================) $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \ SOURCE_DIR=source + $(call MESSAGE,========================================) + $(call MESSAGE,Extracting External Rose Metadata) + $(call MESSAGE,========================================) + $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/build/extract/extract_meta.mk $(call MESSAGE,=========================================================) $(call MESSAGE,Generating $(PROJECT) namelist loaders) $(call MESSAGE,=========================================================) @@ -155,7 +160,7 @@ unit-tests/%: export PROJECT = $(PROJECT_NAME) unit-tests/%: export SOURCE_DIR = source/kernel unit-tests/%: export TEST_DIR = unit-test unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-test -unit-tests: unit-tests/run +unit-tests: extract_meta unit-tests/run ############################################################################## diff --git a/applications/lfric_atm/Makefile b/applications/lfric_atm/Makefile index d43f4a0bfa..246b8eaf04 100644 --- a/applications/lfric_atm/Makefile +++ b/applications/lfric_atm/Makefile @@ -118,6 +118,10 @@ build: ALWAYS $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \ SOURCE_DIR=source $(call MESSAGE,========================================) + $(call MESSAGE,Extracting External Rose Metadata) + $(call MESSAGE,========================================) + $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/build/extract/extract_meta.mk + $(call MESSAGE,========================================) $(call MESSAGE,Generating $(PROJECT) namelist loaders) $(call MESSAGE,========================================) $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/configuration.mk \ diff --git a/applications/lfric_coupled/Makefile b/applications/lfric_coupled/Makefile index 8d13dd1831..6f909a8966 100644 --- a/applications/lfric_coupled/Makefile +++ b/applications/lfric_coupled/Makefile @@ -53,6 +53,7 @@ default: build test-suite documentation doc docs: document-uml document-latex document-api $(Q)echo > /dev/null +include $(APPS_ROOT_DIR)/build/extract/extract_meta.mk include $(CORE_ROOT_DIR)/infrastructure/build/lfric.mk include $(INTERNAL_DEPENDENCIES:=/build/import.mk) include build/project.mk @@ -143,6 +144,10 @@ build: ALWAYS $(call MESSAGE,========================================) $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \ SOURCE_DIR=source + $(call MESSAGE,========================================) + $(call MESSAGE,Extracting External Rose Metadata) + $(call MESSAGE,========================================) + $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/build/extract/extract_meta.mk $(call MESSAGE,=========================================================) $(call MESSAGE,Generating $(PROJECT) namelist loaders) $(call MESSAGE,=========================================================) @@ -221,7 +226,7 @@ unit-tests/%: export PROJECT = $(PROJECT_NAME) unit-tests/%: export SOURCE_DIR = source unit-tests/%: export TEST_DIR = unit-test unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-test -unit-tests: unit-tests/run +unit-tests: extract_meta unit-tests/run ############################################################################## diff --git a/applications/lfricinputs/Makefile b/applications/lfricinputs/Makefile index d08fec02c2..25a07daf11 100644 --- a/applications/lfricinputs/Makefile +++ b/applications/lfricinputs/Makefile @@ -88,6 +88,10 @@ build: ALWAYS $(call MESSAGE,Extracting $(PROJECT_NAME)) $(call MESSAGE,========================================) $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk + $(call MESSAGE,========================================) + $(call MESSAGE,Extracting External Rose Metadata) + $(call MESSAGE,========================================) + $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/build/extract/extract_meta.mk $(call MESSAGE,=========================================================) $(call MESSAGE,Generating $(PROJECT) namelist loaders) $(call MESSAGE,=========================================================) diff --git a/applications/linear_model/Makefile b/applications/linear_model/Makefile index 3383e3c0e2..8c494d49de 100644 --- a/applications/linear_model/Makefile +++ b/applications/linear_model/Makefile @@ -90,6 +90,10 @@ build: ALWAYS $(call MESSAGE,========================================) $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \ SOURCE_DIR=source + $(call MESSAGE,========================================) + $(call MESSAGE,Extracting External Rose Metadata) + $(call MESSAGE,========================================) + $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/build/extract/extract_meta.mk $(call MESSAGE,=========================================================) $(call MESSAGE,Generating $(PROJECT) namelist loaders) $(call MESSAGE,=========================================================) diff --git a/applications/name_transport/Makefile b/applications/name_transport/Makefile index 5f13ff125c..eee98d9fa6 100644 --- a/applications/name_transport/Makefile +++ b/applications/name_transport/Makefile @@ -48,6 +48,7 @@ default: build unit-tests integration-tests documentation doc docs: document-uml document-latex document-api $(Q)echo > /dev/null +include $(APPS_ROOT_DIR)/build/extract/extract_meta.mk include $(CORE_ROOT_DIR)/infrastructure/build/lfric.mk include $(INTERNAL_DEPENDENCIES:=/build/import.mk) -include $(PROJECT_DIR)/build/project.mk @@ -119,6 +120,10 @@ build: ALWAYS $(call MESSAGE,========================================) $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \ SOURCE_DIR=source + $(call MESSAGE,========================================) + $(call MESSAGE,Extracting External Rose Metadata) + $(call MESSAGE,========================================) + $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/build/extract/extract_meta.mk $(call MESSAGE,=========================================================) $(call MESSAGE,Generating $(PROJECT) namelist loaders) $(call MESSAGE,=========================================================) @@ -162,7 +167,7 @@ unit-tests/%: export SOURCE_DIR = source unit-tests/%: export TEST_DIR = unit-test unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-tests unit-tests/%: export UNIT_TEST_PRE_PROCESS_MACROS = "NO_MPI=no_mpi" -unit-tests: unit-tests/run +unit-tests: extract_meta unit-tests/run ############################################################################## # Integration tests diff --git a/applications/ngarch/Makefile b/applications/ngarch/Makefile index 87c78ca107..82f3bb8a08 100644 --- a/applications/ngarch/Makefile +++ b/applications/ngarch/Makefile @@ -138,6 +138,10 @@ build: ALWAYS $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \ SOURCE_DIR=source $(call MESSAGE,========================================) + $(call MESSAGE,Extracting External Rose Metadata) + $(call MESSAGE,========================================) + $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/build/extract/extract_meta.mk + $(call MESSAGE,========================================) $(call MESSAGE,Generating $(PROJECT) namelist loaders) $(call MESSAGE,========================================) $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/configuration.mk \ diff --git a/applications/shallow_water/Makefile b/applications/shallow_water/Makefile index 34fdbdce61..d77f3851da 100644 --- a/applications/shallow_water/Makefile +++ b/applications/shallow_water/Makefile @@ -48,6 +48,7 @@ default: build unit-tests integration-tests documentation doc docs: document-uml document-latex document-api $(Q)echo > /dev/null +include $(APPS_ROOT_DIR)/build/extract/extract_meta.mk include $(CORE_ROOT_DIR)/infrastructure/build/lfric.mk include $(INTERNAL_DEPENDENCIES:=/build/import.mk) -include $(PROJECT_DIR)/build/project.mk @@ -119,6 +120,10 @@ build: ALWAYS $(call MESSAGE,========================================) $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \ SOURCE_DIR=source + $(call MESSAGE,========================================) + $(call MESSAGE,Extracting External Rose Metadata) + $(call MESSAGE,========================================) + $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/build/extract/extract_meta.mk $(call MESSAGE,=========================================================) $(call MESSAGE,Generating $(PROJECT) namelist loaders) $(call MESSAGE,=========================================================) @@ -161,7 +166,7 @@ unit-tests/%: export PROJECT = $(PROJECT_NAME) unit-tests/%: export SOURCE_DIR = source unit-tests/%: export TEST_DIR = unit-test unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-tests -unit-tests: unit-tests/run +unit-tests: extract_meta unit-tests/run ############################################################################## diff --git a/applications/transport/Makefile b/applications/transport/Makefile index adbdb69081..a29f743cf5 100644 --- a/applications/transport/Makefile +++ b/applications/transport/Makefile @@ -48,6 +48,7 @@ default: build unit-tests integration-tests documentation doc docs: document-uml document-latex document-api $(Q)echo > /dev/null +include $(APPS_ROOT_DIR)/build/extract/extract_meta.mk include $(CORE_ROOT_DIR)/infrastructure/build/lfric.mk include $(INTERNAL_DEPENDENCIES:=/build/import.mk) -include $(PROJECT_DIR)/build/project.mk @@ -119,6 +120,10 @@ build: ALWAYS $(call MESSAGE,========================================) $Q$(MAKE) $(QUIET_ARG) -f $(LFRIC_BUILD)/extract.mk \ SOURCE_DIR=source + $(call MESSAGE,========================================) + $(call MESSAGE,Extracting External Rose Metadata) + $(call MESSAGE,========================================) + $Q$(MAKE) $(QUIET_ARG) -f $(APPS_ROOT_DIR)/build/extract/extract_meta.mk $(call MESSAGE,=========================================================) $(call MESSAGE,Generating $(PROJECT) namelist loaders) $(call MESSAGE,=========================================================) @@ -162,7 +167,7 @@ unit-tests/%: export SOURCE_DIR = source unit-tests/%: export TEST_DIR = unit-test unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-tests unit-tests/%: export UNIT_TEST_PRE_PROCESS_MACROS = "NO_MPI=no_mpi" -unit-tests: unit-tests/run +unit-tests: extract_meta unit-tests/run ############################################################################## # Integration tests diff --git a/build/extract/extract_meta.mk b/build/extract/extract_meta.mk new file mode 100644 index 0000000000..ee9863e6ab --- /dev/null +++ b/build/extract/extract_meta.mk @@ -0,0 +1,24 @@ +############################################################################## +# (c) Crown copyright 2026 Met Office. All rights reserved. +# The file LICENCE, distributed with this code, contains details of the terms +# under which the code may be used. +############################################################################## +# +# Run this file to extract rose-metadata from external repositories +# +# The following environment variables are used for input: +# WORKING_DIR : Directory to hold working copies of source. +# APPS_ROOT_DIR: Location of apps clone +# EXTRA_ROSE_META: List of repos to extract metadata from +# +############################################################################### + +.PHONY: extract_meta + +extract_meta: + $(Q)for REPO in $(EXTRA_ROSE_META) ; do \ + python $(APPS_ROOT_DIR)/build/extract/extract_science.py \ + -r $$REPO \ + -d $(APPS_ROOT_DIR)/dependencies.yaml \ + -w $(WORKING_DIR) \ + ; done diff --git a/interfaces/coupled_interface/Makefile b/interfaces/coupled_interface/Makefile index 12ac57cef4..92b89ce2d4 100644 --- a/interfaces/coupled_interface/Makefile +++ b/interfaces/coupled_interface/Makefile @@ -28,6 +28,7 @@ export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ META_VN ?= HEAD META_FILE_DIR = $(PROJECT_DIR)/rose-meta/$(PROJECT_NAME)/$(META_VN) +include $(APPS_ROOT_DIR)/build/extract/extract_meta.mk include $(CORE_ROOT_DIR)/infrastructure/build/lfric.mk include $(PROJECT_DIR)/build/import.mk include $(INTERNAL_DEPENDENCIES:=/build/import.mk) @@ -106,7 +107,7 @@ unit-tests/%: export PROJECT = $(PROJECT_NAME) unit-tests/%: export SOURCE_DIR = source unit-tests/%: export TEST_DIR = unit-test unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-test -unit-tests: unit-tests/run +unit-tests: extract_meta unit-tests/run ############################################################################## diff --git a/interfaces/jedi_lfric_interface/Makefile b/interfaces/jedi_lfric_interface/Makefile index 1c4934d697..13b8e2a9ed 100644 --- a/interfaces/jedi_lfric_interface/Makefile +++ b/interfaces/jedi_lfric_interface/Makefile @@ -53,6 +53,7 @@ default: unit-tests integration-tests documentation doc docs: document-uml document-api $(Q)echo > /dev/null +include $(APPS_ROOT_DIR)/build/extract/extract_meta.mk include $(CORE_ROOT_DIR)/infrastructure/build/lfric.mk include $(PROJECT_DIR)/build/import.mk include $(INTERNAL_DEPENDENCIES:=/build/import.mk) @@ -94,7 +95,7 @@ unit-tests/%: export PROJECT = jedi_lfric unit-tests/%: export SOURCE_DIR = source unit-tests/%: export TEST_DIR = unit-test unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-tests -unit-tests: unit-tests/run +unit-tests: extract_meta unit-tests/run ############################################################################## @@ -111,7 +112,7 @@ integration-tests/%: export PROJECT = $(PROJECT_NAME) integration-tests/%: export SOURCE_DIR = source integration-tests/%: export TEST_DIR = integration-test integration-tests/%: export WORKING_DIR := $(WORKING_DIR)/integration-tests -integration-tests: integration-tests/run +integration-tests: extract_meta integration-tests/run ############################################################################## diff --git a/science/adjoint/Makefile b/science/adjoint/Makefile index c579d8ad77..8d39ca3fd4 100644 --- a/science/adjoint/Makefile +++ b/science/adjoint/Makefile @@ -30,6 +30,7 @@ default: unit-tests integration-tests documentation doc docs: document-api $(Q)echo > /dev/null +include $(APPS_ROOT_DIR)/build/extract/extract_meta.mk include $(CORE_ROOT_DIR)/infrastructure/build/lfric.mk include $(INTERNAL_DEPENDENCIES:=/build/import.mk) @@ -81,7 +82,7 @@ unit-tests/%: export PROJECT = adjoint unit-tests/%: export SOURCE_DIR = source unit-tests/%: export TEST_DIR = unit-test unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-tests -unit-tests: unit-tests/run +unit-tests: extract_meta unit-tests/run ############################################################################## diff --git a/science/gungho/Makefile b/science/gungho/Makefile index b2c4baf9a4..6385f691b4 100644 --- a/science/gungho/Makefile +++ b/science/gungho/Makefile @@ -52,6 +52,7 @@ default: unit-tests integration-tests documentation doc docs: document-api $(Q)echo > /dev/null +include $(APPS_ROOT_DIR)/build/extract/extract_meta.mk include $(CORE_ROOT_DIR)/infrastructure/build/lfric.mk include $(INTERNAL_DEPENDENCIES:=/build/import.mk) @@ -107,7 +108,7 @@ unit-tests/%: export PROJECT = gungho unit-tests/%: export SOURCE_DIR = source unit-tests/%: export TEST_DIR = unit-test unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-tests -unit-tests: unit-tests/run +unit-tests: extract_meta unit-tests/run ############################################################################### # Integration tests @@ -121,7 +122,7 @@ integration-tests/%: export PROJECT = gungho integration-tests/%: export SOURCE_DIR = source integration-tests/%: export TEST_DIR = integration-test integration-tests/%: export WORKING_DIR := $(WORKING_DIR)/integration-tests -integration-tests: integration-tests/run +integration-tests: extract_meta integration-tests/run ############################################################################### # Clean diff --git a/science/linear/Makefile b/science/linear/Makefile index 932d4a69fa..bd7a6d47be 100644 --- a/science/linear/Makefile +++ b/science/linear/Makefile @@ -29,6 +29,7 @@ default: unit-tests integration-tests documentation doc docs: document-api $(Q)echo > /dev/null +include $(APPS_ROOT_DIR)/build/extract/extract_meta.mk include $(CORE_ROOT_DIR)/infrastructure/build/lfric.mk include $(INTERNAL_DEPENDENCIES:=/build/import.mk) @@ -82,7 +83,7 @@ unit-tests/%: export SOURCE_DIR = source unit-tests/%: export TEST_DIR = unit-test unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-tests -unit-tests: unit-tests/run +unit-tests: extract_meta unit-tests/run ############################################################################## @@ -101,7 +102,7 @@ integration-tests/%: export PROJECT = linear integration-tests/%: export SOURCE_DIR = source integration-tests/%: export TEST_DIR = integration-test integration-tests/%: export WORKING_DIR := $(WORKING_DIR)/integration-tests -integration-tests: integration-tests/run +integration-tests: extract_meta integration-tests/run ############################################################################## # Clean From a2b7faef5699781e82b885fe45d13fdddfa6a0a1 Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Fri, 13 Mar 2026 15:40:08 +0000 Subject: [PATCH 25/32] working unit-tests/build --- applications/gravity_wave/Makefile | 2 +- applications/jedi_lfric_tests/Makefile | 4 ++-- applications/lfric2lfric/Makefile | 2 +- applications/lfric_coupled/Makefile | 1 + applications/name_transport/Makefile | 1 + applications/shallow_water/Makefile | 1 + applications/transport/Makefile | 1 + interfaces/coupled_interface/Makefile | 1 + interfaces/jedi_lfric_interface/Makefile | 2 ++ rose-stem/flow.cylc | 1 - science/adjoint/Makefile | 2 +- science/gungho/Makefile | 4 +++- science/linear/Makefile | 3 ++- 13 files changed, 17 insertions(+), 8 deletions(-) diff --git a/applications/gravity_wave/Makefile b/applications/gravity_wave/Makefile index 6cc4395e23..1b3d342185 100644 --- a/applications/gravity_wave/Makefile +++ b/applications/gravity_wave/Makefile @@ -165,7 +165,7 @@ unit-tests/%: export SOURCE_DIR = source unit-tests/%: export TEST_DIR = unit-test unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-test unit-tests: extract_meta unit-tests/run - +unit-tests/build: extract_meta unit-tests/build ############################################################################## # Integration tests diff --git a/applications/jedi_lfric_tests/Makefile b/applications/jedi_lfric_tests/Makefile index ae7f99f7fb..e76405c094 100644 --- a/applications/jedi_lfric_tests/Makefile +++ b/applications/jedi_lfric_tests/Makefile @@ -183,7 +183,7 @@ unit-tests/%: export SOURCE_DIR = source unit-tests/%: export TEST_DIR = unit-test unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-test unit-tests: extract_meta unit-tests/run - +unit-tests/build: extract_meta unit-tests/build ############################################################################## # Integration tests @@ -205,7 +205,7 @@ integration-tests/%: export SOURCE_DIR = source integration-tests/%: export TEST_DIR = integration-test integration-tests/%: export WORKING_DIR := $(WORKING_DIR)/integration-tests integration-tests: extract_meta integration-tests/run - +integration-tests/build: extract_meta integration-tests/build ############################################################################## # Clean diff --git a/applications/lfric2lfric/Makefile b/applications/lfric2lfric/Makefile index a0e520c688..2cf267ca7b 100644 --- a/applications/lfric2lfric/Makefile +++ b/applications/lfric2lfric/Makefile @@ -161,7 +161,7 @@ unit-tests/%: export SOURCE_DIR = source/kernel unit-tests/%: export TEST_DIR = unit-test unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-test unit-tests: extract_meta unit-tests/run - +unit-tests/build: extract_meta unit-tests/build ############################################################################## # Integration tests diff --git a/applications/lfric_coupled/Makefile b/applications/lfric_coupled/Makefile index 6f909a8966..d26b24949e 100644 --- a/applications/lfric_coupled/Makefile +++ b/applications/lfric_coupled/Makefile @@ -227,6 +227,7 @@ unit-tests/%: export SOURCE_DIR = source unit-tests/%: export TEST_DIR = unit-test unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-test unit-tests: extract_meta unit-tests/run +unit-tests/build: extract_meta unit-tests/build ############################################################################## diff --git a/applications/name_transport/Makefile b/applications/name_transport/Makefile index eee98d9fa6..930eb5dcfe 100644 --- a/applications/name_transport/Makefile +++ b/applications/name_transport/Makefile @@ -168,6 +168,7 @@ unit-tests/%: export TEST_DIR = unit-test unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-tests unit-tests/%: export UNIT_TEST_PRE_PROCESS_MACROS = "NO_MPI=no_mpi" unit-tests: extract_meta unit-tests/run +unit-tests/build: extract_meta unit-tests/build ############################################################################## # Integration tests diff --git a/applications/shallow_water/Makefile b/applications/shallow_water/Makefile index d77f3851da..ba98f26405 100644 --- a/applications/shallow_water/Makefile +++ b/applications/shallow_water/Makefile @@ -167,6 +167,7 @@ unit-tests/%: export SOURCE_DIR = source unit-tests/%: export TEST_DIR = unit-test unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-tests unit-tests: extract_meta unit-tests/run +unit-tests/build: extract_meta unit-tests/build ############################################################################## diff --git a/applications/transport/Makefile b/applications/transport/Makefile index a29f743cf5..b45b3a169c 100644 --- a/applications/transport/Makefile +++ b/applications/transport/Makefile @@ -168,6 +168,7 @@ unit-tests/%: export TEST_DIR = unit-test unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-tests unit-tests/%: export UNIT_TEST_PRE_PROCESS_MACROS = "NO_MPI=no_mpi" unit-tests: extract_meta unit-tests/run +unit-tests/build: extract_meta unit-tests/build ############################################################################## # Integration tests diff --git a/interfaces/coupled_interface/Makefile b/interfaces/coupled_interface/Makefile index 92b89ce2d4..197b131021 100644 --- a/interfaces/coupled_interface/Makefile +++ b/interfaces/coupled_interface/Makefile @@ -108,6 +108,7 @@ unit-tests/%: export SOURCE_DIR = source unit-tests/%: export TEST_DIR = unit-test unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-test unit-tests: extract_meta unit-tests/run +unit-tests/build: extract_meta unit-tests/build ############################################################################## diff --git a/interfaces/jedi_lfric_interface/Makefile b/interfaces/jedi_lfric_interface/Makefile index 13b8e2a9ed..e8befc82b3 100644 --- a/interfaces/jedi_lfric_interface/Makefile +++ b/interfaces/jedi_lfric_interface/Makefile @@ -96,6 +96,7 @@ unit-tests/%: export SOURCE_DIR = source unit-tests/%: export TEST_DIR = unit-test unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-tests unit-tests: extract_meta unit-tests/run +unit-tests/build: extract_meta unit-tests/build ############################################################################## @@ -113,6 +114,7 @@ integration-tests/%: export SOURCE_DIR = source integration-tests/%: export TEST_DIR = integration-test integration-tests/%: export WORKING_DIR := $(WORKING_DIR)/integration-tests integration-tests: extract_meta integration-tests/run +integration-tests/build: extract_meta integration-tests/build ############################################################################## diff --git a/rose-stem/flow.cylc b/rose-stem/flow.cylc index f762b6e186..acb5091746 100644 --- a/rose-stem/flow.cylc +++ b/rose-stem/flow.cylc @@ -101,7 +101,6 @@ {% do LOG.debug("Not Running Physics Schemes") %} {% for item in ["casim", - "jules", "ukca", "socrates", "socrates-spectral", diff --git a/science/adjoint/Makefile b/science/adjoint/Makefile index 8d39ca3fd4..6dec157388 100644 --- a/science/adjoint/Makefile +++ b/science/adjoint/Makefile @@ -83,7 +83,7 @@ unit-tests/%: export SOURCE_DIR = source unit-tests/%: export TEST_DIR = unit-test unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-tests unit-tests: extract_meta unit-tests/run - +unit-tests/build: extract_meta unit-tests/build ############################################################################## # Integration tests diff --git a/science/gungho/Makefile b/science/gungho/Makefile index 6385f691b4..de84d305db 100644 --- a/science/gungho/Makefile +++ b/science/gungho/Makefile @@ -109,6 +109,7 @@ unit-tests/%: export SOURCE_DIR = source unit-tests/%: export TEST_DIR = unit-test unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-tests unit-tests: extract_meta unit-tests/run +unit-tests/build: extract_meta unit-tests/build ############################################################################### # Integration tests @@ -122,7 +123,8 @@ integration-tests/%: export PROJECT = gungho integration-tests/%: export SOURCE_DIR = source integration-tests/%: export TEST_DIR = integration-test integration-tests/%: export WORKING_DIR := $(WORKING_DIR)/integration-tests -integration-tests: extract_meta integration-tests/run +integration-tests: extrac_meta integration-tests/run +integration-tests/build: extract_meta integration-tests/build ############################################################################### # Clean diff --git a/science/linear/Makefile b/science/linear/Makefile index bd7a6d47be..51af605496 100644 --- a/science/linear/Makefile +++ b/science/linear/Makefile @@ -82,8 +82,8 @@ unit-tests/%: export PROJECT = linear unit-tests/%: export SOURCE_DIR = source unit-tests/%: export TEST_DIR = unit-test unit-tests/%: export WORKING_DIR := $(WORKING_DIR)/unit-tests - unit-tests: extract_meta unit-tests/run +unit-tests/build: extract_meta unit-tests/build ############################################################################## @@ -103,6 +103,7 @@ integration-tests/%: export SOURCE_DIR = source integration-tests/%: export TEST_DIR = integration-test integration-tests/%: export WORKING_DIR := $(WORKING_DIR)/integration-tests integration-tests: extract_meta integration-tests/run +integration-tests/build: extract_meta integration-tests/build ############################################################################## # Clean From 2f9b12eb55b716b40cfade9d40bd534fd76bb033 Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Mon, 16 Mar 2026 13:36:43 +0000 Subject: [PATCH 26/32] restore jules meta to this branch --- .../rose-meta/jules-lfric/HEAD/rose-meta.conf | 181 +++ .../rose-meta/jules-lfric/__init__.py | 1 + .../rose-meta/jules-lfric/version20_21.py | 279 +++++ .../rose-meta/jules-lfric/version21_22.py | 69 ++ .../rose-meta/jules-lfric/version22_30.py | 71 ++ .../rose-meta/jules-lfric/version30_31.py | 122 ++ .../rose-meta/jules-lfric/versions.py | 33 + .../jules-lfric/vn2.0/rose-meta.conf | 1025 ++++++++++++++++ .../jules-lfric/vn2.1/rose-meta.conf | 1085 +++++++++++++++++ .../jules-lfric/vn2.2/rose-meta.conf | 580 +++++++++ .../jules-lfric/vn3.0/rose-meta.conf | 113 ++ .../jules-lfric/vn3.1/rose-meta.conf | 181 +++ .../jules-hydrology/HEAD/rose-meta.conf | 27 + .../jules-hydrology/vn2.2/rose-meta.conf | 27 + .../jules-hydrology/vn3.0/rose-meta.conf | 27 + .../jules-hydrology/vn3.1/rose-meta.conf | 27 + .../jules-nvegparm/HEAD/rose-meta.conf | 121 ++ .../jules-nvegparm/vn2.0/rose-meta.conf | 121 ++ .../jules-nvegparm/vn2.1/rose-meta.conf | 121 ++ .../jules-nvegparm/vn2.2/rose-meta.conf | 121 ++ .../jules-nvegparm/vn3.0/rose-meta.conf | 121 ++ .../jules-nvegparm/vn3.1/rose-meta.conf | 121 ++ .../jules-pftparm/HEAD/rose-meta.conf | 167 +++ .../jules-pftparm/vn2.2/rose-meta.conf | 167 +++ .../jules-pftparm/vn3.0/rose-meta.conf | 167 +++ .../jules-pftparm/vn3.1/rose-meta.conf | 167 +++ .../jules-radiation/HEAD/rose-meta.conf | 113 ++ .../jules-radiation/vn2.0/rose-meta.conf | 51 + .../jules-radiation/vn2.1/rose-meta.conf | 51 + .../jules-radiation/vn2.2/rose-meta.conf | 113 ++ .../jules-radiation/vn3.0/rose-meta.conf | 113 ++ .../jules-radiation/vn3.1/rose-meta.conf | 113 ++ .../jules-sea-seaice/HEAD/rose-meta.conf | 245 ++++ .../jules-sea-seaice/vn2.2/rose-meta.conf | 245 ++++ .../jules-sea-seaice/vn3.0/rose-meta.conf | 245 ++++ .../jules-sea-seaice/vn3.1/rose-meta.conf | 245 ++++ .../jules-snow/HEAD/rose-meta.conf | 99 ++ .../jules-snow/vn2.0/rose-meta.conf | 69 ++ .../jules-snow/vn2.1/rose-meta.conf | 69 ++ .../jules-snow/vn2.2/rose-meta.conf | 99 ++ .../jules-snow/vn3.0/rose-meta.conf | 99 ++ .../jules-snow/vn3.1/rose-meta.conf | 99 ++ .../jules-soil/HEAD/rose-meta.conf | 31 + .../jules-soil/vn2.2/rose-meta.conf | 31 + .../jules-soil/vn3.0/rose-meta.conf | 31 + .../jules-soil/vn3.1/rose-meta.conf | 31 + .../jules-surface-types/HEAD/rose-meta.conf | 125 ++ .../jules-surface-types/vn2.0/rose-meta.conf | 125 ++ .../jules-surface-types/vn2.1/rose-meta.conf | 125 ++ .../jules-surface-types/vn2.2/rose-meta.conf | 125 ++ .../jules-surface-types/vn3.0/rose-meta.conf | 125 ++ .../jules-surface-types/vn3.1/rose-meta.conf | 125 ++ .../jules-surface/HEAD/rose-meta.conf | 306 +++++ .../jules-surface/vn2.0/rose-meta.conf | 80 ++ .../jules-surface/vn2.1/rose-meta.conf | 80 ++ .../jules-surface/vn2.2/rose-meta.conf | 97 ++ .../jules-surface/vn3.0/rose-meta.conf | 115 ++ .../jules-surface/vn3.1/rose-meta.conf | 306 +++++ .../jules-urban/HEAD/rose-meta.conf | 50 + .../jules-urban/vn2.0/rose-meta.conf | 50 + .../jules-urban/vn2.1/rose-meta.conf | 50 + .../jules-urban/vn2.2/rose-meta.conf | 50 + .../jules-urban/vn3.0/rose-meta.conf | 50 + .../jules-urban/vn3.1/rose-meta.conf | 50 + .../jules-vegetation/HEAD/rose-meta.conf | 34 + .../jules-vegetation/vn2.0/rose-meta.conf | 34 + .../jules-vegetation/vn2.1/rose-meta.conf | 34 + .../jules-vegetation/vn2.2/rose-meta.conf | 34 + .../jules-vegetation/vn3.0/rose-meta.conf | 34 + .../jules-vegetation/vn3.1/rose-meta.conf | 34 + 70 files changed, 9672 insertions(+) create mode 100644 interfaces/jules_interface/rose-meta/jules-lfric/HEAD/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/jules-lfric/__init__.py create mode 100644 interfaces/jules_interface/rose-meta/jules-lfric/version20_21.py create mode 100644 interfaces/jules_interface/rose-meta/jules-lfric/version21_22.py create mode 100644 interfaces/jules_interface/rose-meta/jules-lfric/version22_30.py create mode 100644 interfaces/jules_interface/rose-meta/jules-lfric/version30_31.py create mode 100644 interfaces/jules_interface/rose-meta/jules-lfric/versions.py create mode 100644 interfaces/jules_interface/rose-meta/jules-lfric/vn2.0/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/jules-lfric/vn2.1/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/jules-lfric/vn2.2/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/jules-lfric/vn3.0/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/jules-lfric/vn3.1/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/HEAD/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/vn2.2/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/vn3.0/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/vn3.1/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/HEAD/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn2.0/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn2.1/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn2.2/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn3.0/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn3.1/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/HEAD/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/vn2.2/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/vn3.0/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/vn3.1/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/HEAD/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn2.0/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn2.1/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn2.2/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn3.0/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn3.1/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/HEAD/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/vn2.2/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/vn3.0/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/vn3.1/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/HEAD/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn2.0/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn2.1/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn2.2/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn3.0/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn3.1/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/HEAD/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/vn2.2/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/vn3.0/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/vn3.1/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/HEAD/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn2.0/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn2.1/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn2.2/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn3.0/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn3.1/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/HEAD/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn2.0/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn2.1/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn2.2/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn3.0/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn3.1/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/HEAD/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn2.0/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn2.1/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn2.2/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn3.0/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn3.1/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/HEAD/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn2.0/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn2.1/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn2.2/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn3.0/rose-meta.conf create mode 100644 interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn3.1/rose-meta.conf diff --git a/interfaces/jules_interface/rose-meta/jules-lfric/HEAD/rose-meta.conf b/interfaces/jules_interface/rose-meta/jules-lfric/HEAD/rose-meta.conf new file mode 100644 index 0000000000..cd725e1b65 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/jules-lfric/HEAD/rose-meta.conf @@ -0,0 +1,181 @@ +############################################################################### +# This is the LFRic flavour of the JULES metadata +############################################################################### +# This should only contain: +# * Import statements from lfric-jules-shared. +# * LFRic specific amendments to the imported metadata. +# The majority of the metadata should be under rose-meta/lfric-jules-shared. +# +# This file in the future will reside in the JULES repository and will import +# jules-shared directly from there when the build system has been developed to +# allow this. +# +# Please see jules:wiki:SharingJULESmetadata + +import=lfric-jules-shared/jules-hydrology/HEAD + =lfric-jules-shared/jules-nvegparm/HEAD + =lfric-jules-shared/jules-pftparm/HEAD + =lfric-jules-shared/jules-radiation/HEAD + =lfric-jules-shared/jules-sea-seaice/HEAD + =lfric-jules-shared/jules-snow/HEAD + =lfric-jules-shared/jules-soil/HEAD + =lfric-jules-shared/jules-surface/HEAD + =lfric-jules-shared/jules-surface-types/HEAD + =lfric-jules-shared/jules-urban/HEAD + =lfric-jules-shared/jules-vegetation/HEAD + +[namelist:jules_hydrology=l_hydrology] +trigger=namelist:jules_hydrology=l_var_rainfrac: .true.; + +[namelist:jules_model_environment_lfric] +compulsory=true +description=Not all JULES options are available in all environments in which JULES is run e.g. standalone, + =UM, LFRic (LIS, MONC, CABLE). The model environment is specified here so that options that are + =unavailable can be made inaccessible via the metadata and thus will not appear in the gui. +ns=namelist/JULES Science Settings/jules_model_environment +sort-key=01 +title=Model environment interface +url=http://jules-lsm.github.io/latest/namelists/model_environment.nml.html#namelist-JULES_MODEL_ENVIRONMENT + +[namelist:jules_model_environment_lfric=l_jules_parent] +compulsory=true +description=Switch to identify the environment in which JULES is being run. + =No science code is associated with this switch, only what science options are available. + =THIS HAS TO BE LFRIC SPECIFIC FOR NOW AS A RESULT OF THE WAY THAT + =LFRIC COUPLED PROCESSES NAMELIST FILES. +!enumeration=true +fail-if=this != "'lfric'"; # This should indicate that LFRic is the parent model. +trigger=namelist:jules_surface=l_elev_land_ice: 'not_lfric'; + =namelist:jules_surface=l_elev_lw_down: 'not_lfric'; + =namelist:jules_surface=l_flake_model: 'not_lfric'; + =namelist:jules_surface=l_point_data: 'not_lfric'; +value-titles=LFRic +values='lfric' + +[namelist:jules_radiation=fixed_sea_albedo] +description=If using i_sea_alb_method='fixed', the global value of albedo to use. + +[namelist:jules_radiation=i_sea_alb_method] +trigger=namelist:jules_radiation=l_sea_alb_var_chl: 'jin'; + =namelist:jules_radiation=fixed_sea_albedo: 'fixed'; +value-titles=Barker and Li 1995,Jin et al. 2011,Fixed global value +values='barker','jin','fixed' + +[namelist:jules_radiation=l_albedo_obs] +trigger=namelist:files=albedo_vis_ancil_path: .true. ; + =namelist:files=albedo_nir_ancil_path: .true. ; + =namelist:jules_nvegparm=albsnf_nvgu_io: .true.; + =namelist:jules_nvegparm=albsnf_nvgl_io: .true.; + +[namelist:jules_radiation=l_sea_alb_var_chl] +trigger=namelist:files=sea_ancil_path: .true. ; + +[namelist:jules_snow=can_clump] +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT + =all(this == 0) and any(namelist:jules_snow=cansnowpft == '.true.'); # Results in floating point exception if 0. Only used if can_model = 4 (JULES default), cansnowpft = TRUE on that tile and l_embedded_snow = TRUE (LFRic default). + +[namelist:jules_snow=cansnowpft] +compulsory=true +length=5 + +[namelist:jules_snow=i_basal_melting_opt] +values='none','instant' + +[namelist:jules_snow=i_grain_growth_opt] +values='marshall','taillandier' + +[namelist:jules_snow=i_relayer_opt] +values='original','inverse' + +[namelist:jules_surface=all_tiles] +values='off','on' + +[namelist:jules_surface=anthrop_heat_option] +fail-if=this != "'dukes'"; # The DUKES fixed annual cycle is the only currently available option in LFRic +trigger=namelist:jules_surface=anthrop_heat_mean: 'flanner'; +values='dukes','flanner' + +[namelist:jules_surface=cor_mo_iter] +trigger=namelist:jules_surface=beta_cnv_bl: 'improved'; +value-titles=Limit Obukhov length in low winds, + =Improve initial guess (preferred) +values='lim_oblen','improved' + +[namelist:jules_surface=fd_hill_option] +value-titles=capped low hill +values='capped_lowhill' + +[namelist:jules_surface=fd_stability_dep] +value-titles=Off,Surface Ri +values='none','surf_ri' + +[namelist:jules_surface=formdrag] +fail-if= +trigger=namelist:jules_surface=orog_drag_param: 'eff_z0','dist_drag'; + =namelist:jules_surface=fd_stability_dep: 'eff_z0','dist_drag'; + =namelist:jules_surface=fd_hill_option: 'dist_drag'; +values='none','eff_z0','dist_drag' + +[namelist:jules_surface=i_modiscopt] +fail-if= +value-titles=On +values='on' + +[namelist:jules_surface=iscrntdiag] +fail-if= +value-titles=Decoupled with transitional effects +values='decoupled_trans' + +[namelist:jules_surface=l_elev_land_ice] +fail-if= +trigger= + +[namelist:jules_surface=l_flake_model] +trigger= + +[namelist:jules_surface=l_urban2t] +trigger=namelist:jules_surface_types=urban_canyon: .true.; + =namelist:jules_surface_types=urban_roof: .true.; + =namelist:jules_surface_types=urban: .false.; + =namelist:jules_urban: .true.; + =namelist:jules_urban=anthrop_heat_scale: .true.; + =namelist:files=urban_ancil_path: .true.; + =namelist:stochastic_physics=rp_lsfc_z0_urban_mult: .true.; + +[namelist:jules_surface=l_vary_z0m_soil] +fail-if= +trigger=namelist:files=soil_rough_ancil_path: .true. ; + +[namelist:jules_surface=srf_ex_cnv_gust] +fail-if= +trigger= +type=logical + +[namelist:jules_vegetation=can_rad_mod] +values='one','four','five','six' + +[namelist:jules_vegetation=l_spec_veg_z0] +trigger=namelist:jules_pftparm=z0v_io: .true.; + =namelist:stochastic_physics=rp_lsfc_z0v: .true.; + =namelist:stochastic_physics=rp_lsfc_z0v_max: .true.; + =namelist:stochastic_physics=rp_lsfc_z0v_min: .true.; + +# Dummy page to force sort order for JULES Science Settings +[namespace:science] +ns=namelist/JULES Science Settings +sort-key=Section-A12b + +# Dummy page to force sort order for Snow other parameters +[namespace:snow_other] +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=02 + +# Dummy page to force sort order for Snow radiation parameters +[namespace:snow_radiation] +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=01 + +# Dummy page to force sort order for JULES Surface Types +[namespace:surface_types] +ns=namelist/JULES Surface Types +sort-key=Section-A12a diff --git a/interfaces/jules_interface/rose-meta/jules-lfric/__init__.py b/interfaces/jules_interface/rose-meta/jules-lfric/__init__.py new file mode 100644 index 0000000000..24af8d5fb0 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/jules-lfric/__init__.py @@ -0,0 +1 @@ +from . import versions diff --git a/interfaces/jules_interface/rose-meta/jules-lfric/version20_21.py b/interfaces/jules_interface/rose-meta/jules-lfric/version20_21.py new file mode 100644 index 0000000000..aebc595cd6 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/jules-lfric/version20_21.py @@ -0,0 +1,279 @@ +import re +import sys + +from metomi.rose.upgrade import MacroUpgrade + + +class UpgradeError(Exception): + """Exception created when an upgrade fails.""" + + def __init__(self, msg): + self.msg = msg + + def __repr__(self): + sys.tracebacklimit = 0 + return self.msg + + __str__ = __repr__ + + +""" +Copy this template and complete to add your macro +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" + def upgrade(self, config, meta_config=None): + # Add settings + return config, self.reports +""" + + +class vn20_t249(MacroUpgrade): + """Upgrade macro for ticket #249 by Denis Sergeev.""" + + BEFORE_TAG = "vn2.0" + AFTER_TAG = "vn2.0_t249" + + def upgrade(self, config, meta_config=None): + # Commands From: science/jules_interface/rose-meta/jules-lfric + nml = "namelist:specified_surface" + self.add_setting(config, [nml, "surf_temp_forcing"], "'none'") + self.add_setting(config, [nml, "internal_flux_method"], "'uniform'") + self.add_setting(config, [nml, "internal_flux_value"], "0.0") + return config, self.reports + + +class vn20_t588(MacroUpgrade): + """Upgrade macro for ticket #588 by Maggie Hendry.""" + + BEFORE_TAG = "vn2.0_t249" + AFTER_TAG = "vn2.0_t588" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/jules-lfric + # Rename surface -> jules_radiation + items_surface = [ + "sea_alb_method", + "albedo_obs", + "non_iso_scatter", + "sea_alb_var_chl", + "blue_sky_alb", + ] + items_jules = [ + "i_sea_alb_method", + "l_albedo_obs", + "l_niso_direct", + "l_sea_alb_var_chl", + "l_spec_alb_bs", + ] + for surface, jules in zip(items_surface, items_jules): + self.rename_setting( + config, + ["namelist:surface", surface], + ["namelist:jules_radiation", jules], + ) + # Rename surface -> jules_snow + items_jules = [ + "i_basal_melting_opt", + "i_grain_growth_opt", + "i_relayer_opt", + ] + items_surface = [ + "basal_melting", + "grain_growth", + "relayer_opt", + ] + for surface, jules in zip(items_surface, items_jules): + self.rename_setting( + config, + ["namelist:surface", surface], + ["namelist:jules_snow", jules], + ) + # jules_soil + """Add jules_soil namelist""" + source = self.get_setting_value( + config, ["file:configuration.nml", "source"] + ) + source = re.sub( + r"namelist:jules_radiation", + r"namelist:jules_radiation)" + "\n" + " (namelist:jules_soil", + source, + ) + self.change_setting_value( + config, ["file:configuration.nml", "source"], source + ) + # Rename surface -> jules_soil + items_surface = [ + "dpsids_dsdz", + "soil_sat_down", + "l_vg_soil", + ] + items_jules = [ + "l_dpsids_dsdz", + "l_soil_sat_down", + "l_vg_soil", + ] + for surface, jules in zip(items_surface, items_jules): + self.rename_setting( + config, + ["namelist:surface", surface], + ["namelist:jules_soil", jules], + ) + # jules_pftparm + """Add jules_pftparm namelist""" + source = self.get_setting_value( + config, ["file:configuration.nml", "source"] + ) + source = re.sub( + r"namelist:jules_nvegparm", + r"namelist:jules_nvegparm)" + "\n" + " (namelist:jules_pftparm", + source, + ) + self.change_setting_value( + config, ["file:configuration.nml", "source"], source + ) + # Rename surface -> jules_pftparm + items_surface = [ + "alb_snocov_max", + "alb_leaf_nir", + "alb_leaf_vis", + "catch0", + "dcatch_dlai", + "fsmc_p0", + "light_extinct", + "knl", + "scat_coef_vis", + "scat_coef_nir", + "z0v", + "z0hm_ratio_pft", + ] + items_jules = [ + "albsnc_max_io", + "alnir_io", + "alpar_io", + "catch0_io", + "dcatch_dlai_io", + "fsmc_p0_io", + "kext_io", + "knl_io", + "omega_io", + "omnir_io", + "z0v_io", + "z0hm_pft_io", + ] + for surface, jules in zip(items_surface, items_jules): + self.rename_setting( + config, + ["namelist:surface", surface], + ["namelist:jules_pftparm", jules], + ) + # jules_sea_seaice + """Add jules_sea_seaice namelist""" + source = self.get_setting_value( + config, ["file:configuration.nml", "source"] + ) + source = re.sub( + r"namelist:jules_radiation", + r"namelist:jules_radiation)" + "\n" + " (namelist:jules_sea_seaice", + source, + ) + self.change_setting_value( + config, ["file:configuration.nml", "source"], source + ) + # Rename surface -> jules_sea_seaice + items_surface = [ + "alb_sice_melt", + "buddy_sea", + "cdn_hw_sea", + "cdn_max_sea", + "dt_ice_albedo", + "emis_sea", + "emis_sice", + "evap_scale_sea", + "heat_cap_sea", + "i_high_wind_drag", + "iceformdrag_lupkes", + "l_10m_neut", + "n_sea_ice_tile", + "sea_surf_alg", + "sice_heatflux", + "stability_lupkes", + "therm_cond_sea", + "therm_cond_sice", + "therm_cond_sice_snow", + "u_cdn_hw", + "u_cdn_max", + "use_variable_sst", + ] + items_jules = [ + "alpham", + "buddy_sea", + "cdn_hw_sea", + "cdn_max_sea", + "dtice", + "emis_sea", + "emis_sice", + "beta_evap", + "hcap_sea", + "i_high_wind_drag", + "l_iceformdrag_lupkes", + "l_10m_neut", + "nice", + "iseasurfalg", + "l_sice_heatflux", + "l_stability_lupkes", + "kappa_seasurf", + "kappai", + "kappai_snow", + "u_cdn_hw", + "u_cdn_max", + "l_use_dtstar_sea", + ] + for surface, jules in zip(items_surface, items_jules): + self.rename_setting( + config, + ["namelist:surface", surface], + ["namelist:jules_sea_seaice", jules], + ) + # jules_hydrology + """Add jules_hydrology namelist""" + source = self.get_setting_value( + config, ["file:configuration.nml", "source"] + ) + source = re.sub( + r"namelist:io", + r"namelist:io" + "\n" + " (namelist:jules_hydrology)", + source, + ) + self.change_setting_value( + config, ["file:configuration.nml", "source"], source + ) + # Rename surface -> jules_hydrology + items_surface = [ + "use_hydrology", + "l_var_rainfrac", + ] + items_jules = [ + "l_hydrology", + "l_var_rainfrac", + ] + for surface, jules in zip(items_surface, items_jules): + self.rename_setting( + config, + ["namelist:surface", surface], + ["namelist:jules_hydrology", jules], + ) + return config, self.reports + + +class vn20_t649(MacroUpgrade): + """Upgrade macro for ticket None by None.""" + + BEFORE_TAG = "vn2.0_t588" + AFTER_TAG = "vn2.1" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/jules-lfric + # Blank Upgrade Macro + return config, self.reports diff --git a/interfaces/jules_interface/rose-meta/jules-lfric/version21_22.py b/interfaces/jules_interface/rose-meta/jules-lfric/version21_22.py new file mode 100644 index 0000000000..861e9ca28c --- /dev/null +++ b/interfaces/jules_interface/rose-meta/jules-lfric/version21_22.py @@ -0,0 +1,69 @@ +import re +import sys + +from metomi.rose.upgrade import MacroUpgrade + +from .version20_21 import * + + +class UpgradeError(Exception): + """Exception created when an upgrade fails.""" + + def __init__(self, msg): + self.msg = msg + + def __repr__(self): + sys.tracebacklimit = 0 + return self.msg + + __str__ = __repr__ + + +class vn21_t596(MacroUpgrade): + """Upgrade macro for ticket #596 by Maggie Hendry.""" + + BEFORE_TAG = "vn2.1" + AFTER_TAG = "vn2.1_t596" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/jules-lfric + # Only used in LFRic apps + self.rename_setting( + config, + ["namelist:jules_surface", "check_soilm_negatives"], + ["namelist:surface", "check_soilm_negatives"], + ) + self.rename_setting( + config, + ["namelist:jules_surface", "lake_water_conservation"], + ["namelist:surface", "lake_water_conservation"], + ) + # jules-sea-seaice from jules-lfric being shared rather than um-atmos + self.rename_setting( + config, + ["namelist:surface", "amip_ice_thick"], + ["namelist:jules_sea_seaice", "amip_ice_thick"], + ) + self.rename_setting( + config, + ["namelist:surface", "z0h_specified"], + ["namelist:jules_sea_seaice", "z0h_specified"], + ) + self.rename_setting( + config, + ["namelist:surface", "z0m_specified"], + ["namelist:jules_sea_seaice", "z0m_specified"], + ) + return config, self.reports + + +class vn21_t871(MacroUpgrade): + """Upgrade macro for ticket TTTT by Unknown.""" + + BEFORE_TAG = "vn2.1_t596" + AFTER_TAG = "vn2.2" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/jules-lfric + # Blank Upgrade Macro + return config, self.reports diff --git a/interfaces/jules_interface/rose-meta/jules-lfric/version22_30.py b/interfaces/jules_interface/rose-meta/jules-lfric/version22_30.py new file mode 100644 index 0000000000..1cfad0d33e --- /dev/null +++ b/interfaces/jules_interface/rose-meta/jules-lfric/version22_30.py @@ -0,0 +1,71 @@ +import sys + +from metomi.rose.upgrade import MacroUpgrade + +from .version21_22 import * + + +class UpgradeError(Exception): + """Exception created when an upgrade fails.""" + + def __init__(self, msg): + self.msg = msg + + def __repr__(self): + sys.tracebacklimit = 0 + return self.msg + + __str__ = __repr__ + + +""" +Copy this template and complete to add your macro +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" + def upgrade(self, config, meta_config=None): + # Add settings + return config, self.reports +""" + + +class vn22_t202(MacroUpgrade): + """Upgrade macro for ticket #202 by Katty Huang.""" + + BEFORE_TAG = "vn2.2" + AFTER_TAG = "vn2.2_t202" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/jules-lfric + self.add_setting( + config, ["namelist:jules_surface", "anthrop_heat_mean"], "20.0" + ) + self.add_setting( + config, ["namelist:jules_surface", "anthrop_heat_option"], "'dukes'" + ) + return config, self.reports + + +class vn22_t1012(MacroUpgrade): + """Upgrade macro for ticket #1012 by Maggie Hendry.""" + + BEFORE_TAG = "vn2.2_t202" + AFTER_TAG = "vn2.2_t1012" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/jules-lfric + # Blank upgrade macro to bump tag + return config, self.reports + + +class vn22_t34(MacroUpgrade): + """Upgrade macro for ticket TTTT by Unknown.""" + + BEFORE_TAG = "vn2.2_t1012" + AFTER_TAG = "vn3.0" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/jules-lfric + # Blank Upgrade Macro + return config, self.reports diff --git a/interfaces/jules_interface/rose-meta/jules-lfric/version30_31.py b/interfaces/jules_interface/rose-meta/jules-lfric/version30_31.py new file mode 100644 index 0000000000..94bd4b8680 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/jules-lfric/version30_31.py @@ -0,0 +1,122 @@ +import re +import sys + +from metomi.rose.upgrade import MacroUpgrade + +from .version22_30 import * + + +class UpgradeError(Exception): + """Exception created when an upgrade fails.""" + + def __init__(self, msg): + self.msg = msg + + def __repr__(self): + sys.tracebacklimit = 0 + return self.msg + + __str__ = __repr__ + + +""" +Copy this template and complete to add your macro +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" + def upgrade(self, config, meta_config=None): + # Add settings + return config, self.reports +""" + + +class vn30_t146(MacroUpgrade): + """Upgrade macro for ticket #146 by Maggie Hendry.""" + + BEFORE_TAG = "vn3.0" + AFTER_TAG = "vn3.0_t146" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/jules-lfric + # Add jules_model_environment_lfric namelist + source = self.get_setting_value( + config, ["file:configuration.nml", "source"] + ) + source = re.sub( + r"namelist:jules_hydrology", + r"namelist:jules_hydrology)" + + "\n" + + " (namelist:jules_model_environment_lfric", + source, + ) + self.change_setting_value( + config, ["file:configuration.nml", "source"], source + ) + self.add_setting( + config, + ["namelist:jules_model_environment_lfric", "l_jules_parent"], + "'lfric'", + ) + # Add jules_surface namelist items + self.add_setting( + config, + ["namelist:jules_surface", "all_tiles"], + "'off'", + ) + self.add_setting(config, ["namelist:jules_surface", "beta1"], "0.83") + self.add_setting(config, ["namelist:jules_surface", "beta2"], "0.93") + self.add_setting( + config, ["namelist:jules_surface", "beta_cnv_bl"], "0.04" + ) + self.add_setting( + config, + ["namelist:jules_surface", "fd_hill_option"], + "'capped_lowhill'", + ) + self.add_setting(config, ["namelist:jules_surface", "fwe_c3"], "0.5") + self.add_setting( + config, ["namelist:jules_surface", "fwe_c4"], "20000.0" + ) + self.add_setting(config, ["namelist:jules_surface", "hleaf"], "5.7e4") + self.add_setting(config, ["namelist:jules_surface", "hwood"], "1.1e4") + self.add_setting( + config, ["namelist:jules_surface", "i_modiscopt"], "'on'" + ) + self.add_setting( + config, ["namelist:jules_surface", "l_epot_corr"], ".true." + ) + self.add_setting( + config, ["namelist:jules_surface", "l_land_ice_imp"], ".true." + ) + self.add_setting( + config, ["namelist:jules_surface", "l_mo_buoyancy_calc"], ".true." + ) + self.add_setting( + config, ["namelist:jules_surface", "orog_drag_param"], "0.15" + ) + self.add_setting( + config, ["namelist:jules_surface", "l_flake_model"], ".false." + ) + self.add_setting( + config, ["namelist:jules_surface", "l_elev_land_ice"], ".false." + ) + self.add_setting( + config, ["namelist:jules_surface", "l_elev_lw_down"], ".false." + ) + self.add_setting( + config, ["namelist:jules_surface", "l_point_data"], ".false." + ) + return config, self.reports + + +class vn30_t306(MacroUpgrade): + """Upgrade macro for ticket TTTT by Unknown.""" + + BEFORE_TAG = "vn3.0_t146" + AFTER_TAG = "vn3.1" + + def upgrade(self, config, meta_config=None): + # Commands From: rose-meta/jules-lfric + # Blank Upgrade Macro + return config, self.reports diff --git a/interfaces/jules_interface/rose-meta/jules-lfric/versions.py b/interfaces/jules_interface/rose-meta/jules-lfric/versions.py new file mode 100644 index 0000000000..01798ad2b5 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/jules-lfric/versions.py @@ -0,0 +1,33 @@ +import sys + +from metomi.rose.upgrade import MacroUpgrade # noqa: F401 + +from .version30_31 import * + + +class UpgradeError(Exception): + """Exception created when an upgrade fails.""" + + def __init__(self, msg): + self.msg = msg + + def __repr__(self): + sys.tracebacklimit = 0 + return self.msg + + __str__ = __repr__ + + +""" +Copy this template and complete to add your macro + +class vnXX_txxx(MacroUpgrade): + # Upgrade macro for by + + BEFORE_TAG = "vnX.X" + AFTER_TAG = "vnX.X_txxx" + + def upgrade(self, config, meta_config=None): + # Add settings + return config, self.reports +""" diff --git a/interfaces/jules_interface/rose-meta/jules-lfric/vn2.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/jules-lfric/vn2.0/rose-meta.conf new file mode 100644 index 0000000000..55768c6c36 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/jules-lfric/vn2.0/rose-meta.conf @@ -0,0 +1,1025 @@ +# Please see jules:wiki:SharingJULESmetadata + +import=lfric-jules-shared/jules-nvegparm/vn2.0 + =lfric-jules-shared/jules-radiation/vn2.0 + =lfric-jules-shared/jules-snow/vn2.0 + =lfric-jules-shared/jules-surface/vn2.0 + =lfric-jules-shared/jules-surface-types/vn2.0 + =lfric-jules-shared/jules-urban/vn2.0 + =lfric-jules-shared/jules-vegetation/vn2.0 + +[namelist:ideal_surface] +compulsory=true +description=Idealised surface settings +ns=namelist/Job/Initial conditions/Surface +sort-key=Section-A05 +title=Surface + +[namelist:ideal_surface=canopy_height] +compulsory=true +description=Canopy height of each plant type +fail-if=len(this) != namelist:jules_surface_types=npft +help=Canopy height of each plant type +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-03 +type=real + +[namelist:ideal_surface=leaf_area_index] +compulsory=true +description=Leaf area index of each plant type +fail-if=len(this) != namelist:jules_surface_types=npft +help=Leaf area index of each plant type +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-04 +type=real + +[namelist:ideal_surface=n_snow_layers] +compulsory=true +description=Snow layers on each tile +fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:surface=n_sea_ice_tile + 1 +help=The initial number of snow layers on each surface tile + = + =The order of tiles is land, sea, sea-ice +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-08 +type=integer + +[namelist:ideal_surface=snow_depth] +compulsory=true +description=Snow depth on each tile +fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:surface=n_sea_ice_tile + 1 +help=The initial snow depth on each surface tile + = + =The order of tiles is land, sea, sea-ice +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-09 +type=real + +[namelist:ideal_surface=snow_layer_ice_mass] +compulsory=true +description=Ice mass of each snow layer on tiles +fail-if=len(this) != 3*(namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg) +help=The initial ice mass of each snow layer + = + =The order in tiles 1-n for layer 1, then tiles 1-n for layer 2 etc +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-11 +type=real + +[namelist:ideal_surface=snow_layer_temp] +compulsory=true +description=Temperature of each snow layer on tiles +fail-if=len(this) != 3*(namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg) +help=The initial temperature of each snow layer + = + =The order in tiles 1-n for layer 1, then tiles 1-n for layer 2 etc +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-12 +type=real + +[namelist:ideal_surface=snow_layer_thickness] +compulsory=true +description=Thickness of each snow layer on tiles +fail-if=len(this) != 3*(namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg) +help=The initial thickness of each snow layer + = + =The order in tiles 1-n for layer 1, then tiles 1-n for layer 2 etc +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-10 +type=real + +[namelist:ideal_surface=soil_moisture] +compulsory=true +description=Soil moisture content +help=Soil moisture content on soil levels +!kind=default +length=4 +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-05 +type=real + +[namelist:ideal_surface=soil_temperature] +compulsory=true +description=Soil temperature +help=Temperature of soil levels +!kind=default +length=4 +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-06 +type=real + +[namelist:ideal_surface=surf_tile_fracs] +compulsory=true +description=Fraction of each surface tile +fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:surface=n_sea_ice_tile + 1 +help=The fraction within a grid-box of each surface tile + = + =The order of tiles is land, sea, sea-ice + = + =The fractions should sum to 1 +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-01 +type=real + +[namelist:ideal_surface=surf_tile_temps] +compulsory=true +description=Fraction of each surface tile +fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:surface=n_sea_ice_tile + 1 +help=The initial temperature of each surface tile + = + =The order of tiles is land, sea, sea-ice +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-02 +type=real + +[namelist:ideal_surface=tile_snow_mass] +compulsory=true +description=Snow mass on each tile +fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:surface=n_sea_ice_tile + 1 +help=The initial snow mass on each surface tile + = + =The order of tiles is land, sea, sea-ice +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-07 +type=real + +[namelist:jules_radiation=fixed_sea_albedo] +description=If using sea_alb_method='fixed', the global value of albedo to use. + +[namelist:jules_snow=can_clump] +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT + =all(this == 0) and any(namelist:jules_snow=cansnowpft == '.true.'); # Results in floating point exception if 0. Only used if can_model = 4 (JULES default), cansnowpft = TRUE on that tile and l_embedded_snow = TRUE (LFRic default). + +[namelist:jules_snow=cansnowpft] +compulsory=true +length=5 + +[namelist:jules_surface=check_soilm_negatives] +description=Switch to check if soil moisture has become negative as part of the lake water conservation scheme +type=logical + +[namelist:jules_surface=cor_mo_iter] +value-titles=Limit Obukhov length in low winds, + =Improve initial guess (preferred) +values='lim_oblen','improved' + +[namelist:jules_surface=fd_stability_dep] +value-titles=Off,Surface Ri +values='none','surf_ri' + +[namelist:jules_surface=formdrag] +trigger=namelist:jules_surface=fd_stability_dep: 'eff_z0','dist_drag'; +values='none','eff_z0','dist_drag' + +[namelist:jules_surface=l_urban2t] +trigger=namelist:jules_surface_types=urban_canyon: .true.; + =namelist:jules_surface_types=urban_roof: .true.; + =namelist:jules_surface_types=urban: .false.; + =namelist:jules_urban: .true.; + =namelist:jules_urban=anthrop_heat_scale: .true.; + =namelist:files=urban_ancil_path: .true.; + +[namelist:jules_surface=l_vary_z0m_soil] +trigger=namelist:files=soil_rough_ancil_path: .true. ; + +[namelist:jules_surface=lake_water_conservation] +compulsory=true +description=Use the lake water conservation scheme +help=The inland water tile (aka lake tile) is a freely evaporating surface that doesn't depelete the local water supply. In order to conserve water the lake water conservation scheme decreases the level 4 soil moisture globally to account for this. +trigger=namelist:jules_surface=check_soilm_negatives: .true.; +type=logical + +[namelist:jules_surface=srf_ex_cnv_gust] +type=logical + +[namelist:jules_surface_types=urban] +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following + +[namelist:jules_vegetation=can_rad_mod] +values='one','four','five','six' + +[namelist:jules_vegetation=l_spec_veg_z0] +trigger=namelist:surface=z0v: .true.; + +[namelist:specified_surface] +compulsory=true +description=Further Idealised surface settings +ns=namelist/Science/Specified Surface +sort-key=Section-A05 +title=Surface + +[namelist:specified_surface=function_amplitude_e] +compulsory=true +description=Amplitude of the function used for surface latent heat flux +help=Specifies the amplitude of the analytical function used for calculating the + =surface latent heat flux +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=function_amplitude_h] +compulsory=true +description=Amplitude of the function used for surface sensible heat flux +help=Specifies the amplitude of the analytical function used for calculating the + =surface sensible heat flux +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=function_name_fluxes] +compulsory=true +description=Name of the function used for surface latent and sensible heat fluxes +!enumeration=true +help=Specifies function name used for calculating surface latent and sensible heat fluxes + =If constant, uses the single values set in specified_flux_h and specified_flux_e. profile_size should be set to 1. + =If time-interpolated, uses the time-varying arrays set in specified_flux_h and specified_flux_e, where the arrays are of length profile_size. + =If sinusoidal, fluxes are set to + =amplitude * sin( 2 * pi * current_time / period + phase ) + =If diurnal, fluxes are set to + =max(0, amplitude * cos( pi* (time_of_max_flux - current_time) / length_of_day )^1.3 ) +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +trigger=namelist:specified_surface=function_amplitude_e: 'sinusoidal', 'diurnal'; + =namelist:specified_surface=function_period_e: 'sinusoidal'; + =namelist:specified_surface=function_phase_e: 'sinusoidal'; + =namelist:specified_surface=function_amplitude_h: 'sinusoidal', 'diurnal'; + =namelist:specified_surface=function_period_h: 'sinusoidal'; + =namelist:specified_surface=function_phase_h: 'sinusoidal'; + =namelist:specified_surface=length_of_day: 'diurnal'; + =namelist:specified_surface=time_of_max_flux: 'diurnal'; + =namelist:specified_surface=length_of_day: 'diurnal'; + =namelist:specified_surface=time_data: 'time_interpolated'; + =namelist:specified_surface=profile_size: 'constant','time_interpolated'; + =namelist:specified_surface=specified_flux_e: 'constant','time_interpolated'; + =namelist:specified_surface=specified_flux_h: 'constant','time_interpolated'; + =namelist:specified_surface=time_units: 'sinusoidal', 'diurnal', 'time_interpolated'; +value-titles=Constant, Time Interpolated, Sinusoidal function, Diurnal function +values='constant', 'time_interpolated', 'sinusoidal', 'diurnal' + +[namelist:specified_surface=function_name_sst] +compulsory=true +description=Name of the function used for sea surface temperatures +!enumeration=true +help=Specifies the function name used for calculating surface sensible heat flux + = If constant, uses the sea surface tile value set by surf_tile_temps option found in + = ideal_surface namelist. + = If time_interpolated, uses the time-varying array set in sea_surf_temps found in the + = specified_surface namelist. +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +trigger=namelist:specified_surface=time_data_sst: 'time_interpolated'; + =namelist:specified_surface=profile_size_sst: 'time_interpolated'; + =namelist:specified_surface=time_units_sst: 'time_interpolated'; + =namelist:specified_surface=sea_surf_temps: 'time_interpolated'; +value-titles=Constant, Time Interpolated +values='constant', 'time_interpolated' + +[namelist:specified_surface=function_period_e] +compulsory=true +description=Period of the function used for surface latent heat flux +help=Specifies the period of the sinusoidal analytical function used for calculating + =latent heat flux +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=function_period_h] +compulsory=true +description=Period of the function used for surface sensible heat flux +help=Specifies the period of the sinusoidal analytical function used for calculating + =sensible heat flux +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=function_phase_e] +compulsory=true +description=Phase of the function used for latent heat flux +help=Specifies the phase of the sinusoidal analytical function used for calculating the + =latent heat flux +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=function_phase_h] +compulsory=true +description=Phase of the function used for sensible heat flux +help=Specifies the phase of the sinusoidal analytical function used for calculating the + =sensible heat flux +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=length_of_day] +compulsory=true +description=Duration of daylight +help=Specifies the duration of daylight, in units that are consistent with + =the length_of_day option, used for the diurnal analytical function. +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=profile_size] +compulsory=true +description=Number of points in varying flux profile +help=Number of data points in the specified_flux_h and specified_flux_e + =arrays +!kind=default +ns=namelist/Science/Specified Surface +range=0: +sort-key=Panel-A03e +type=integer + +[namelist:specified_surface=profile_size_sst] +compulsory=true +description=Number of points in sst profile +help=Number of data points in the sea_surf_temps arrays +!kind=default +ns=namelist/Science/Specified Surface +range=0: +sort-key=Panel-A03e +type=integer + +[namelist:specified_surface=sea_surf_temps] +!bounds=namelist:specified_surface=profile_size_sst +compulsory=true +description=Time-varying sea surface temperature profile +help=Sea surface temperature values (K) used at times specified, overides + =the sea surface tile value set by surf_tile_temps option found in + =ideal_surface namelist. +!kind=default +length=: +ns=namelist/Science/Specified Surface +sort-key=Panel-A03d +type=real + +[namelist:specified_surface=specified_flux_e] +!bounds=namelist:specified_surface=profile_size +compulsory=true +description=Surface latent heat flux [Wm-2] +help=Fixed or time-varying value used throughout the run. +!kind=default +length=: +ns=namelist/Science/Specified Surface +sort-key=Panel-A01a +type=real + +[namelist:specified_surface=specified_flux_h] +!bounds=namelist:specified_surface=profile_size +compulsory=true +description=Surface sensible heat flux [Wm-2] +help=Fixed or time-varying value used throughout the run +!kind=default +length=: +ns=namelist/Science/Specified Surface +sort-key=Panel-A01b +type=real + +[namelist:specified_surface=time_data] +!bounds=namelist:specified_surface=profile_size +compulsory=true +description=Time values +help=Time values corresponding with the time-varying fluxes +!kind=default +length=: +ns=namelist/Science/Specified Surface +range=0.0: +sort-key=Panel-A03c +type=real + +[namelist:specified_surface=time_data_sst] +!bounds=namelist:specified_surface=profile_size_sst +compulsory=true +description=Time values +help=Time values corresponding with the time-varying ssts +!kind=default +length=: +ns=namelist/Science/Specified Surface +range=0.0: +sort-key=Panel-A03c +type=real + +[namelist:specified_surface=time_of_max_flux] +compulsory=true +description=Time of maximum flux +help=Specifies the time of day when the flux reaches its maximum value. + =The units must be consistent with the units used by the length_of_day option. + =Used for the diurnal analytical function. +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=time_units] +compulsory=true +description=Units of the time_data list/ function_period +!enumeration=true +help=Specifies the units of the time data/ wave period used. +ns=namelist/Science/Specified Surface +value-titles=Seconds,Minutes,Hours,Days +values='seconds','minutes','hours','days' + +[namelist:specified_surface=time_units_sst] +compulsory=true +description=Units of the time_data list/ function_period +!enumeration=true +help=Specifies the units of the time data/ wave period used. +ns=namelist/Science/Specified Surface +value-titles=Seconds,Minutes,Hours,Days +values='seconds','minutes','hours','days' + +[namelist:surface] +compulsory=true +description=Surface parametrisations +ns=namelist/Science/JULES Surface +sort-key=Section-A12 +title=Surface + +[namelist:surface=alb_leaf_nir] +description=NIR Leaf reflection coeff +help=Leaf reflection coefficient for Near Infra Red wavelengths > 690nm. + =Used unless can_rad_mod=1 AND l_spec_albedo is false. +!kind=default +length=: +ns=namelist/Science/JULES Surface/pft Params +range=0:1 +sort-key=Panel-H01 +type=real + +[namelist:surface=alb_leaf_vis] +description=VIS Leaf reflection coeff +help=Leaf reflection coefficient for wavelengths < 690nm (Photosyntehtically Active Radiation). + =Used unless can_rad_mod=1 AND l_spec_albedo is false. +!kind=default +length=: +ns=namelist/Science/JULES Surface/pft Params +range=0:1 +sort-key=Panel-H02 +type=real + +[namelist:surface=alb_sice_melt] +compulsory=true +description=Original HadGEM sea ice albedo scheme: Albedo of sea-ice at + =melting point (TM, if .not.l_ssice_albedo), + =or albedo of snow on sea-ice at melting point (TM, if + =l_ssice_albedo) ("M" for "melting") +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +range=0:1 +sort-key=Panel-C01 +type=real + +[namelist:surface=alb_snocov_max] +description=Snow-covered albedo for large LAI +help=Only used when namelist:jules_radiation=l_snow_albedo is false +!kind=default +length=: +ns=namelist/Science/JULES Surface/pft Params +range=0:1 +sort-key=Panel-H03 +type=real + +[namelist:surface=albedo_obs] +compulsory=true +description=Scale albedos of land-surface tiles to agree with obs +!kind=default +ns=namelist/JULES Science Settings/jules_radiation +sort-key=Panel-B01 +trigger=namelist:files=albedo_vis_ancil_path: .true. ; + =namelist:files=albedo_nir_ancil_path: .true. ; + =namelist:jules_nvegparm=albsnf_nvgu_io: .true.; + =namelist:jules_nvegparm=albsnf_nvgl_io: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_albedo_obs + +[namelist:surface=amip_ice_thick] +compulsory=true +description=Calculate ice thickness from ice fraction +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C01 +type=logical + +[namelist:surface=basal_melting] +compulsory=true +description=Option for melting at the base of the snow pack +!enumeration=true +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D17 +value-titles=No basal melting,Instantaneous basal melting +values='none','instant' + +[namelist:surface=blue_sky_alb] +compulsory=true +description=Use a single value for both the direct and diffuse beams +!kind=default +ns=namelist/JULES Science Settings/jules_radiation +sort-key=Panel-B02a +trigger=namelist:surface=non_iso_scatter: .false.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_spec_alb_bs + +[namelist:surface=buddy_sea] +compulsory=true +description=Use neighbouring sea point wind-speeds in coastal grid points +!enumeration=true +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C01a +value-titles=Off,On +values='Off','On' + +[namelist:surface=catch0] +description=Minimum canopy capacity (kg m-2) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/Science/JULES Surface/pft Params +sort-key=Panel-H10 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::catch0_io + +[namelist:surface=cdn_hw_sea] +compulsory=true +description=Neutral drag coefficient over the sea at high wind speeds. +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C06a +type=real + +[namelist:surface=cdn_max_sea] +compulsory=true +description=Maximum value of the neutral drag coefficient over open sea. +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C06b +type=real + +[namelist:surface=dcatch_dlai] +description=Rate of change of canopy capacity with LAI (kg m-2) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/Science/JULES Surface/pft Params +sort-key=Panel-H11 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::dcatch_dlai_io + +[namelist:surface=dpsids_dsdz] +compulsory=true +description=Calculate vertical gradient of soil suction with the assumption of linearity only for + =fractional saturation (consistent with the calculation of hydraulic conductivity) +!kind=default +ns=namelist/Science/JULES Surface/Soil +sort-key=Panel-E01 +type=logical + +[namelist:surface=dt_ice_albedo] +compulsory=true +description=Original HadGEM sea ice albedo scheme: Temperature range in which + =albedo of sea-ice (if .not.l_ssice_albedo), + =or of snow on sea-ice (if l_ssice_albedo), + =varies between its limits (recommended range 5-10K) +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +range=0.1:50 +sort-key=Panel-C02 +type=real + +[namelist:surface=emis_method_sea] +compulsory=true +description=Emissivity method for open sea + = Two options for spectrally varying emissivity in addition to a fixed emissivity: + = D. Feldman et al. (2014) https://doi.org/10.1073/pnas.1413640111 and + = R. Saunders et al. (2018) https://doi.org/10.5194/gmd-11-2717-2018 for IREMIS. +!enumeration=true +ns=namelist/JULES Science Settings/jules_radiation +sort-key=Panel-C02a +value-titles=1: Fixed, + =2: Feldman, + =3: IREMIS +values='fixed','feldman','iremis' + +[namelist:surface=emis_method_soil] +compulsory=true +description=Emissivity method for soil + = Option for spectrally varying emissivity in addition to a fixed emissivity: + = D. Feldman et al. (2014) https://doi.org/10.1073/pnas.1413640111 +!enumeration=true +ns=namelist/JULES Science Settings/jules_radiation +sort-key=Panel-G06 +value-titles=1: Fixed, + =2: Feldman Desert +values='fixed','feldman_desert' + +[namelist:surface=emis_sea] +compulsory=true +description=Emissivity of open sea +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C03 +type=real + +[namelist:surface=emis_sice] +compulsory=true +description=Emissivity of sea-ice +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C04 +type=real + +[namelist:surface=evap_scale_sea] +compulsory=true +description=Efficiency of evaporation from sea-surface +help=This parameter controls the efficiency with which water can evaporate from a sea-surface. + = The default value is 1.0, moisture availability is effectively unrestricted. + = However, lower values can be useful for idealised modelling, + = restricting the evaporation rate. + = For example, a value of 0.0 would result in no evaporation. +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +range=0.0:1.0 +sort-key=Panel-C05 +type=real + +[namelist:surface=fsmc_p0] +compulsory=true +description=Pft-dependent parameter governing the threshold at which the plant starts to experience water stress due to lack of water in the soil +!kind=default +length=: +ns=namelist/Science/JULES Surface/pft Params +sort-key=Panel-H04 +type=real + +[namelist:surface=grain_growth] +compulsory=true +description=Option for rate of growth of snow grains +!enumeration=true +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D04 +value-titles=Marshall1989,Taillandier2007_ET +values='marshall','taillandier' + +[namelist:surface=heat_cap_sea] +description=Heat capacity of the slab ocean (J K-1 m-2) +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +range=0.0: +sort-key=Panel-C14a +type=real + +[namelist:surface=i_high_wind_drag] +compulsory=true +description=Option to impose a special treatment of drag at high wind speeds. +!enumeration=true +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C06 +trigger=namelist:surface=cdn_hw_sea: 'reduced_v1'; + =namelist:surface=cdn_max_sea: 'limited','reduced_v1'; + =namelist:surface=u_cdn_hw: 'reduced_v1'; + =namelist:surface=u_cdn_max: 'reduced_v1'; +value-titles=No special treatment of drag at high winds, + =The drag at high winds is capped, + =The drag at high winds is reduced over a range of speeds +values='null','limited','reduced_v1' + +[namelist:surface=iceformdrag_lupkes] +compulsory=true +description=Switch for diagnostic form drag following Lupkes et al. (2012) + =and Lupkes & Gryanik (2015) +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C07 +trigger=namelist:surface=stability_lupkes: .true.; +type=logical + +[namelist:surface=knl] +description=Decay of nitrogen through the canopy for canopy radiation model 6 +help=Used only if namelist:jules_vegetation=can_rad_mod is 6. + =SHOULD NOT BE THE SAME AS KN! +!kind=default +length=: +ns=namelist/Science/JULES Surface/pft Params +sort-key=Panel-H05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::knl_io + +[namelist:surface=l_10m_neut] +compulsory=true +description=Logical for using neutral 10m wind speed to calculate the Charnock coefficient for sea points +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C08 +type=logical + +[namelist:surface=l_var_rainfrac] +compulsory=true +description=Enable variable large scale and convective rain fractions +!kind=default +ns=namelist/Science/JULES Surface/Hydrology +sort-key=Panel-A02 +type=logical + +[namelist:surface=l_vg_soil] +compulsory=true +description=Switch for van Genuchten soil hydraulic model. +!kind=default +ns=namelist/Science/JULES Surface/Soil +sort-key=Panel-E02 +type=logical + +[namelist:surface=light_extinct] +description=Light extinction coefficient +help=Used with Beers Law for light absorption through tile canopies +!kind=default +length=: +ns=namelist/Science/JULES Surface/pft Params +sort-key=Panel-H05 +type=real + +[namelist:surface=n_sea_ice_tile] +compulsory=true +description=Number of sea ice categories +help=The number of sea ice categories. This is normally 1 unless the model is + = coupled to a sea ice model when this is normally 5. This namelist + = entry is used to populate the n_sea_ice_tile variable in + = jules_control_init_mod.F90. All other subroutines should load + = n_sea_ice_tile from jules_control_init_mod and not from the surface + = namelist. +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +range=1:99 +sort-key=Panel-C00a +type=integer + +[namelist:surface=non_iso_scatter] +compulsory=true +description=Use the full non-isotropic expression for direct scattering in plant canopies +!kind=default +ns=namelist/JULES Science Settings/jules_radiation +sort-key=Panel-B02a1 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_niso_direct + +[namelist:surface=relayer_opt] +compulsory=true +description=Option for method of relayering the snow pack +!enumeration=true +help=This value is only used if nsmax > 0. +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D01e +value-titles=Original Scheme,Relayer inverse of grain size +values='original','inverse' + +[namelist:surface=scat_coef_nir] +description=NIR Leaf scattering coeff +help=Leaf scattering coefficient for Near Infra Red wavelengths > 690nm. + =Used unless can_rad_mod=1 AND l_spec_albedo is false. +!kind=default +length=: +ns=namelist/Science/JULES Surface/pft Params +range=0:1 +sort-key=Panel-H06 +type=real + +[namelist:surface=scat_coef_vis] +description=VIS Leaf scattering coeff +help=Leaf scattering coefficient for wavelengths < 690nm (Photosyntehtically Active Radiation). + =Used unless can_rad_mod=1 AND l_spec_albedo is false. +!kind=default +length=: +ns=namelist/Science/JULES Surface/pft Params +range=0:1 +sort-key=Panel-H07 +type=real + +[namelist:surface=sea_alb_method] +compulsory=true +description=Choice of model for the Ocean Surface Albedo (open water, + =ice free) +!enumeration=true +ns=namelist/JULES Science Settings/jules_radiation +sort-key=Panel-B05 +trigger=namelist:surface=sea_alb_var_chl: 'jin'; + =namelist:jules_radiation=fixed_sea_albedo: 'fixed'; +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::i_sea_alb_method +value-titles=Barker and Li 1995,Jin et al. 2011,Fixed global value +values='barker','jin','fixed' + +[namelist:surface=sea_alb_var_chl] +compulsory=true +description=Use spatially varying chlorophyll content to calculate the open sea albedos + =NOT AVAILABLE TO STANDALONE +help=The Jin et al. parameterisation of open sea albedo includes chlorophyll content. This can either be: + =FALSE: Held constant at 0.5 mg m-3, + =or, + =TRUE: Input as an ancillary field. +!kind=default +ns=namelist/JULES Science Settings/jules_radiation +sort-key=Panel-B05b +trigger=namelist:files=sea_ancil_path: .true. ; +type=logical + +[namelist:surface=sea_surf_alg] +compulsory=true +description=Algorithm for surface exchange over the sea +!enumeration=true +help=The most basic option for surface transfer at the sea surface + =consists of a specification of Charnocks coefficient for the + =momentum roughness length, including the aerodynamically smooth + =contribution in light winds, and a fixed thermal roughness length. + =Surface divergence theory allows for a variable thermal roughness + =length that follows the aerodynamicall smooth limit in light winds + =and decreases in stronger winds, giving a slower increase in the + =exchange coefficient for moisture as the wind rises. Historically, + =roughness lengths that depend on the friction velocity have not + =been iterated within the calculation of the Obukhov length, though + =this is more consistent: an iterative option is therefore provided. + =The COARE algorithm is based on a range of observations and exists + =in various forms. It features a dependence of Charnocks coefficient + =on the wind speed and a dependence of the thermal roughness length + =on the roughness Reynolds number. Extra parameters allow different + =versions of the algorithm to be used. +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C09 +trigger=namelist:surface=z0m_specified: 'specified_roughness'; + =namelist:surface=z0h_specified: 'specified_roughness'; +value-titles="Fixed values of roughness length for momentum and heat", + ="Fixed value of Charnock's coefficient with thermal + =roughness from surface divergence theory (non-iterative)", + ="Roughness lengths follow functional forms of the COARE + =algorithm" +values='specified_roughness','surf_div','coare' + +[namelist:surface=sice_heatflux] +compulsory=true +description=Do semi-implicit update of ti for sea-ice +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C10 +type=logical + +[namelist:surface=soil_sat_down] +compulsory=true +description=Direction of water in excess of saturation +help=If a soil layer becomes supersaturated, + =the water in excess of saturation will be put into the + =layer above or below according to this switch + = + =Down => Excess is put into the layer below. Excess from the bottom layer becomes subsurface runoff + =Up => Excess is put into the layer above. Excess from the top layer becomes surface runoff +!kind=default +ns=namelist/Science/JULES Surface/Soil +sort-key=Panel-E03 +type=logical + +[namelist:surface=stability_lupkes] +compulsory=true +description=Switch to include the stability dependence in the parametrization + =of ice form drag +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C07a +type=logical + +[namelist:surface=therm_cond_sea] +compulsory=false +description=Thermal conductivity of sea-water (W / m / K) +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C11 +type=real + +[namelist:surface=therm_cond_sice] +compulsory=false +description=Thermal conductivity of sea-ice (W / m / K) +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C12 +type=real + +[namelist:surface=therm_cond_sice_snow] +compulsory=false +description=Thermal conductivity of snow on zero layer sea-ice (W / m / K) +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C13 +type=real + +[namelist:surface=u_cdn_hw] +compulsory=true +description=Neutral wind speed where the drag attains the high wind value. +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C06c +type=real + +[namelist:surface=u_cdn_max] +compulsory=true +description=Neutral wind speed where the drag begins to be reduced from the maximum. +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C06d +type=real + +[namelist:surface=use_hydrology] +compulsory=true +description=Enable soil hydrology +help=The Jules hydrology scheme represents surface runoff, + = groundwater infiltration and soil evolution. + = + =This switch also enables evolution of the surface snowpack. +!kind=default +ns=namelist/Science/JULES Surface/Hydrology +sort-key=Panel-A01 +type=logical + +[namelist:surface=use_variable_sst] +compulsory=true +description=Update the sea-surface temperature assuming a slab ocean with + = heat capacity given by namelist:surface=heat_cap_sea +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C14 +trigger=namelist:surface=heat_cap_sea: .true.; +type=logical + +[namelist:surface=z0h_specified] +compulsory=true +description=Specified roughness length for scalars [m] +fail-if=this < 0 +help=Specified value held fixed throughout the run used for surface exchange + =of scalar fields such as heat and moisture +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +range=0.0:100.0 +sort-key=Panel-C09b +type=real + +[namelist:surface=z0hm_ratio_pft] +compulsory=true +description=Ratio of the roughness length for heat to the roughness length for momentum for vegetation +!kind=default +length=: +ns=namelist/Science/JULES Surface/pft Params +sort-key=Panel-H08 +type=real + +[namelist:surface=z0m_specified] +compulsory=true +description=Specified roughness length for momentum [m] +fail-if=this < 0 +help=Specified value held fixed throughout the run +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +range=0.0:100.0 +sort-key=Panel-C09a +type=real + +[namelist:surface=z0v] +description=Roughness length for momentum for vegetation if l_spec_veg_z0=true +!kind=default +length=: +ns=namelist/Science/JULES Surface/pft Params +sort-key=Panel-H09 +type=real + +# Dummy page to force sort order for Snow other parameters +[namespace:snow_other] +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=02 + +# Dummy page to force sort order for Snow radiation parameters +[namespace:snow_radiation] +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=01 diff --git a/interfaces/jules_interface/rose-meta/jules-lfric/vn2.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/jules-lfric/vn2.1/rose-meta.conf new file mode 100644 index 0000000000..9bc336d408 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/jules-lfric/vn2.1/rose-meta.conf @@ -0,0 +1,1085 @@ +# Please see jules:wiki:SharingJULESmetadata + +import=lfric-jules-shared/jules-nvegparm/vn2.1 + =lfric-jules-shared/jules-radiation/vn2.1 + =lfric-jules-shared/jules-snow/vn2.1 + =lfric-jules-shared/jules-surface/vn2.1 + =lfric-jules-shared/jules-surface-types/vn2.1 + =lfric-jules-shared/jules-urban/vn2.1 + =lfric-jules-shared/jules-vegetation/vn2.1 + +[namelist:ideal_surface] +compulsory=true +description=Idealised surface settings +ns=namelist/Job/Initial conditions/Surface +sort-key=Section-A05 +title=Surface + +[namelist:ideal_surface=canopy_height] +compulsory=true +description=Canopy height of each plant type +fail-if=len(this) != namelist:jules_surface_types=npft +help=Canopy height of each plant type +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-03 +type=real + +[namelist:ideal_surface=leaf_area_index] +compulsory=true +description=Leaf area index of each plant type +fail-if=len(this) != namelist:jules_surface_types=npft +help=Leaf area index of each plant type +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-04 +type=real + +[namelist:ideal_surface=n_snow_layers] +compulsory=true +description=Snow layers on each tile +fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:jules_sea_seaice=nice + 1 +help=The initial number of snow layers on each surface tile + = + =The order of tiles is land, sea, sea-ice +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-08 +type=integer + +[namelist:ideal_surface=snow_depth] +compulsory=true +description=Snow depth on each tile +fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:jules_sea_seaice=nice + 1 +help=The initial snow depth on each surface tile + = + =The order of tiles is land, sea, sea-ice +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-09 +type=real + +[namelist:ideal_surface=snow_layer_ice_mass] +compulsory=true +description=Ice mass of each snow layer on tiles +fail-if=len(this) != 3*(namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg) +help=The initial ice mass of each snow layer + = + =The order in tiles 1-n for layer 1, then tiles 1-n for layer 2 etc +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-11 +type=real + +[namelist:ideal_surface=snow_layer_temp] +compulsory=true +description=Temperature of each snow layer on tiles +fail-if=len(this) != 3*(namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg) +help=The initial temperature of each snow layer + = + =The order in tiles 1-n for layer 1, then tiles 1-n for layer 2 etc +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-12 +type=real + +[namelist:ideal_surface=snow_layer_thickness] +compulsory=true +description=Thickness of each snow layer on tiles +fail-if=len(this) != 3*(namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg) +help=The initial thickness of each snow layer + = + =The order in tiles 1-n for layer 1, then tiles 1-n for layer 2 etc +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-10 +type=real + +[namelist:ideal_surface=soil_moisture] +compulsory=true +description=Soil moisture content +help=Soil moisture content on soil levels +!kind=default +length=4 +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-05 +type=real + +[namelist:ideal_surface=soil_temperature] +compulsory=true +description=Soil temperature +help=Temperature of soil levels +!kind=default +length=4 +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-06 +type=real + +[namelist:ideal_surface=surf_tile_fracs] +compulsory=true +description=Fraction of each surface tile +fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:jules_sea_seaice=nice + 1 +help=The fraction within a grid-box of each surface tile + = + =The order of tiles is land, sea, sea-ice + = + =The fractions should sum to 1 +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-01 +type=real + +[namelist:ideal_surface=surf_tile_temps] +compulsory=true +description=Fraction of each surface tile +fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:jules_sea_seaice=nice + 1 +help=The initial temperature of each surface tile + = + =The order of tiles is land, sea, sea-ice +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-02 +type=real + +[namelist:ideal_surface=tile_snow_mass] +compulsory=true +description=Snow mass on each tile +fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:jules_sea_seaice=nice + 1 +help=The initial snow mass on each surface tile + = + =The order of tiles is land, sea, sea-ice +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-07 +type=real + +[namelist:jules_hydrology] +compulsory=true +ns=namelist/Science/JULES Surface/Hydrology +sort-key=Panel-A02 +url=http://jules-lsm.github.io/latest/namelists/jules_hydrology.nml.html#namelist-JULES_HYDROLOGY + +[namelist:jules_hydrology=l_hydrology] +compulsory=true +description=Enable soil hydrology +help=The Jules hydrology scheme represents surface runoff, + = groundwater infiltration and soil evolution. + = + =This switch also enables evolution of the surface snowpack. +!kind=default +ns=namelist/Science/JULES Surface/Hydrology +sort-key=Panel-A01 +type=logical + +[namelist:jules_hydrology=l_var_rainfrac] +compulsory=true +description=Enable variable large scale and convective rain fractions +!kind=default +ns=namelist/Science/JULES Surface/Hydrology +sort-key=Panel-A02 +type=logical + +[namelist:jules_pftparm] +compulsory=true +ns=namelist/Science/JULES Surface/pft Params +sort-key=Panel-H01 +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#namelist-JULES_PFTPARM + +[namelist:jules_pftparm=albsnc_max_io] +description=Snow-covered albedo for large LAI +help=Only used when namelist:jules_radiation=l_snow_albedo is false +!kind=default +length=: +ns=namelist/Science/JULES Surface/pft Params +range=0:1 +sort-key=Panel-H03 +type=real + +[namelist:jules_pftparm=alnir_io] +description=NIR Leaf reflection coeff +help=Leaf reflection coefficient for Near Infra Red wavelengths > 690nm. + =Used unless can_rad_mod=1 AND l_spec_albedo is false. +!kind=default +length=: +ns=namelist/Science/JULES Surface/pft Params +range=0:1 +sort-key=Panel-H01 +type=real + +[namelist:jules_pftparm=alpar_io] +description=VIS Leaf reflection coeff +help=Leaf reflection coefficient for wavelengths < 690nm (Photosyntehtically Active Radiation). + =Used unless can_rad_mod=1 AND l_spec_albedo is false. +!kind=default +length=: +ns=namelist/Science/JULES Surface/pft Params +range=0:1 +sort-key=Panel-H02 +type=real + +[namelist:jules_pftparm=catch0_io] +description=Minimum canopy capacity (kg m-2) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/Science/JULES Surface/pft Params +sort-key=Panel-H10 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::catch0_io + +[namelist:jules_pftparm=dcatch_dlai_io] +description=Rate of change of canopy capacity with LAI (kg m-2) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/Science/JULES Surface/pft Params +sort-key=Panel-H11 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::dcatch_dlai_io + +[namelist:jules_pftparm=fsmc_p0_io] +compulsory=true +description=Pft-dependent parameter governing the threshold at which the plant starts to experience water stress due to lack of water in the soil +!kind=default +length=: +ns=namelist/Science/JULES Surface/pft Params +sort-key=Panel-H04 +type=real + +[namelist:jules_pftparm=kext_io] +description=Light extinction coefficient +help=Used with Beers Law for light absorption through tile canopies +!kind=default +length=: +ns=namelist/Science/JULES Surface/pft Params +sort-key=Panel-H05 +type=real + +[namelist:jules_pftparm=knl_io] +description=Decay of nitrogen through the canopy for canopy radiation model 6 +help=Used only if namelist:jules_vegetation=can_rad_mod is 6. + =SHOULD NOT BE THE SAME AS KN! +!kind=default +length=: +ns=namelist/Science/JULES Surface/pft Params +sort-key=Panel-H05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::knl_io + +[namelist:jules_pftparm=omega_io] +description=VIS Leaf scattering coeff +help=Leaf scattering coefficient for wavelengths < 690nm (Photosyntehtically Active Radiation). + =Used unless can_rad_mod=1 AND l_spec_albedo is false. +!kind=default +length=: +ns=namelist/Science/JULES Surface/pft Params +range=0:1 +sort-key=Panel-H07 +type=real + +[namelist:jules_pftparm=omnir_io] +description=NIR Leaf scattering coeff +help=Leaf scattering coefficient for Near Infra Red wavelengths > 690nm. + =Used unless can_rad_mod=1 AND l_spec_albedo is false. +!kind=default +length=: +ns=namelist/Science/JULES Surface/pft Params +range=0:1 +sort-key=Panel-H06 +type=real + +[namelist:jules_pftparm=z0hm_pft_io] +compulsory=true +description=Ratio of the roughness length for heat to the roughness length for momentum for vegetation +!kind=default +length=: +ns=namelist/Science/JULES Surface/pft Params +sort-key=Panel-H08 +type=real + +[namelist:jules_pftparm=z0v_io] +description=Roughness length for momentum for vegetation if l_spec_veg_z0=true +!kind=default +length=: +ns=namelist/Science/JULES Surface/pft Params +sort-key=Panel-H09 +type=real + +[namelist:jules_radiation=fixed_sea_albedo] +description=If using i_sea_alb_method='fixed', the global value of albedo to use. + +[namelist:jules_radiation=i_sea_alb_method] +compulsory=true +description=Choice of model for the Ocean Surface Albedo (open water, + =ice free) +!enumeration=true +ns=namelist/JULES Science Settings/jules_radiation +sort-key=Panel-B05 +trigger=namelist:jules_radiation=l_sea_alb_var_chl: 'jin'; + =namelist:jules_radiation=fixed_sea_albedo: 'fixed'; +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::i_sea_alb_method +value-titles=Barker and Li 1995,Jin et al. 2011,Fixed global value +values='barker','jin','fixed' + +[namelist:jules_radiation=l_albedo_obs] +compulsory=true +description=Scale albedos of land-surface tiles to agree with obs +!kind=default +ns=namelist/JULES Science Settings/jules_radiation +sort-key=Panel-B01 +trigger=namelist:files=albedo_vis_ancil_path: .true. ; + =namelist:files=albedo_nir_ancil_path: .true. ; + =namelist:jules_nvegparm=albsnf_nvgu_io: .true.; + =namelist:jules_nvegparm=albsnf_nvgl_io: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_albedo_obs + +[namelist:jules_radiation=l_niso_direct] +compulsory=true +description=Use the full non-isotropic expression for direct scattering in plant canopies +!kind=default +ns=namelist/JULES Science Settings/jules_radiation +sort-key=Panel-B02a1 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_niso_direct + +[namelist:jules_radiation=l_sea_alb_var_chl] +compulsory=true +description=Use spatially varying chlorophyll content to calculate the open sea albedos + =NOT AVAILABLE TO STANDALONE +help=The Jin et al. parameterisation of open sea albedo includes chlorophyll content. This can either be: + =FALSE: Held constant at 0.5 mg m-3, + =or, + =TRUE: Input as an ancillary field. +!kind=default +ns=namelist/JULES Science Settings/jules_radiation +sort-key=Panel-B05b +trigger=namelist:files=sea_ancil_path: .true. ; +type=logical + +[namelist:jules_radiation=l_spec_alb_bs] +compulsory=true +description=Use a single value for both the direct and diffuse beams +!kind=default +ns=namelist/JULES Science Settings/jules_radiation +sort-key=Panel-B02a +trigger=namelist:jules_radiation=l_niso_direct: .false.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_spec_alb_bs + +[namelist:jules_sea_seaice] +compulsory=true +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C01 +title=Sea and sea-ice options + +[namelist:jules_sea_seaice=alpham] +compulsory=true +description=Original HadGEM sea ice albedo scheme: Albedo of sea-ice at + =melting point (TM, if .not.l_ssice_albedo), + =or albedo of snow on sea-ice at melting point (TM, if + =l_ssice_albedo) ("M" for "melting") +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +range=0:1 +sort-key=Panel-C01 +type=real + +[namelist:jules_sea_seaice=beta_evap] +compulsory=true +description=Efficiency of evaporation from sea-surface +help=This parameter controls the efficiency with which water can evaporate from a sea-surface. + = The default value is 1.0, moisture availability is effectively unrestricted. + = However, lower values can be useful for idealised modelling, + = restricting the evaporation rate. + = For example, a value of 0.0 would result in no evaporation. +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +range=0.0:1.0 +sort-key=Panel-C05 +type=real + +[namelist:jules_sea_seaice=buddy_sea] +compulsory=true +description=Use neighbouring sea point wind-speeds in coastal grid points +!enumeration=true +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C01a +value-titles=Off,On +values='Off','On' + +[namelist:jules_sea_seaice=cdn_hw_sea] +compulsory=true +description=Neutral drag coefficient over the sea at high wind speeds. +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C06a +type=real + +[namelist:jules_sea_seaice=cdn_max_sea] +compulsory=true +description=Maximum value of the neutral drag coefficient over open sea. +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C06b +type=real + +[namelist:jules_sea_seaice=dtice] +compulsory=true +description=Original HadGEM sea ice albedo scheme: Temperature range in which + =albedo of sea-ice (if .not.l_ssice_albedo), + =or of snow on sea-ice (if l_ssice_albedo), + =varies between its limits (recommended range 5-10K) +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +range=0.1:50 +sort-key=Panel-C02 +type=real + +[namelist:jules_sea_seaice=emis_sea] +compulsory=true +description=Emissivity of open sea +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C03 +type=real + +[namelist:jules_sea_seaice=emis_sice] +compulsory=true +description=Emissivity of sea-ice +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C04 +type=real + +[namelist:jules_sea_seaice=hcap_sea] +description=Heat capacity of the slab ocean (J K-1 m-2) +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +range=0.0: +sort-key=Panel-C14a +type=real + +[namelist:jules_sea_seaice=i_high_wind_drag] +compulsory=true +description=Option to impose a special treatment of drag at high wind speeds. +!enumeration=true +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C06 +trigger=namelist:jules_sea_seaice=cdn_hw_sea: 'reduced_v1'; + =namelist:jules_sea_seaice=cdn_max_sea: 'limited','reduced_v1'; + =namelist:jules_sea_seaice=u_cdn_hw: 'reduced_v1'; + =namelist:jules_sea_seaice=u_cdn_max: 'reduced_v1'; +value-titles=No special treatment of drag at high winds, + =The drag at high winds is capped, + =The drag at high winds is reduced over a range of speeds +values='null','limited','reduced_v1' + +[namelist:jules_sea_seaice=iseasurfalg] +compulsory=true +description=Algorithm for surface exchange over the sea +!enumeration=true +help=The most basic option for surface transfer at the sea surface + =consists of a specification of Charnocks coefficient for the + =momentum roughness length, including the aerodynamically smooth + =contribution in light winds, and a fixed thermal roughness length. + =Surface divergence theory allows for a variable thermal roughness + =length that follows the aerodynamicall smooth limit in light winds + =and decreases in stronger winds, giving a slower increase in the + =exchange coefficient for moisture as the wind rises. Historically, + =roughness lengths that depend on the friction velocity have not + =been iterated within the calculation of the Obukhov length, though + =this is more consistent: an iterative option is therefore provided. + =The COARE algorithm is based on a range of observations and exists + =in various forms. It features a dependence of Charnocks coefficient + =on the wind speed and a dependence of the thermal roughness length + =on the roughness Reynolds number. Extra parameters allow different + =versions of the algorithm to be used. +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C09 +trigger=namelist:surface=z0m_specified: 'specified_roughness'; + =namelist:surface=z0h_specified: 'specified_roughness'; +value-titles="Fixed values of roughness length for momentum and heat", + ="Fixed value of Charnock's coefficient with thermal + =roughness from surface divergence theory (non-iterative)", + ="Roughness lengths follow functional forms of the COARE + =algorithm" +values='specified_roughness','surf_div','coare' + +[namelist:jules_sea_seaice=kappa_seasurf] +compulsory=false +description=Thermal conductivity of sea-water (W / m / K) +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C11 +type=real + +[namelist:jules_sea_seaice=kappai] +compulsory=false +description=Thermal conductivity of sea-ice (W / m / K) +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C12 +type=real + +[namelist:jules_sea_seaice=kappai_snow] +compulsory=false +description=Thermal conductivity of snow on zero layer sea-ice (W / m / K) +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C13 +type=real + +[namelist:jules_sea_seaice=l_10m_neut] +compulsory=true +description=Logical for using neutral 10m wind speed to calculate the Charnock coefficient for sea points +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C08 +type=logical + +[namelist:jules_sea_seaice=l_iceformdrag_lupkes] +compulsory=true +description=Switch for diagnostic form drag following Lupkes et al. (2012) + =and Lupkes & Gryanik (2015) +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C07 +trigger=namelist:jules_sea_seaice=l_stability_lupkes: .true.; +type=logical + +[namelist:jules_sea_seaice=l_sice_heatflux] +compulsory=true +description=Do semi-implicit update of ti for sea-ice +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C10 +type=logical + +[namelist:jules_sea_seaice=l_stability_lupkes] +compulsory=true +description=Switch to include the stability dependence in the parametrization + =of ice form drag +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C07a +type=logical + +[namelist:jules_sea_seaice=l_use_dtstar_sea] +compulsory=true +description=Update the sea-surface temperature assuming a slab ocean with + = heat capacity given by namelist:jules_sea_seaice=hcap_sea +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C14 +trigger=namelist:jules_sea_seaice=hcap_sea: .true.; +type=logical + +[namelist:jules_sea_seaice=nice] +compulsory=true +description=Number of sea ice categories +help=The number of sea ice categories. This is normally 1 unless the model is + = coupled to a sea ice model when this is normally 5. This namelist + = entry is used to populate the nice variable in + = jules_control_init_mod.F90. All other subroutines should load + = nice from jules_control_init_mod and not from the surface + = namelist. +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +range=1:99 +sort-key=Panel-C00a +type=integer + +[namelist:jules_sea_seaice=u_cdn_hw] +compulsory=true +description=Neutral wind speed where the drag attains the high wind value. +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C06c +type=real + +[namelist:jules_sea_seaice=u_cdn_max] +compulsory=true +description=Neutral wind speed where the drag begins to be reduced from the maximum. +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C06d +type=real + +[namelist:jules_snow=can_clump] +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT + =all(this == 0) and any(namelist:jules_snow=cansnowpft == '.true.'); # Results in floating point exception if 0. Only used if can_model = 4 (JULES default), cansnowpft = TRUE on that tile and l_embedded_snow = TRUE (LFRic default). + +[namelist:jules_snow=cansnowpft] +compulsory=true +length=5 + +[namelist:jules_snow=i_basal_melting_opt] +compulsory=true +description=Option for melting at the base of the snow pack +!enumeration=true +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D17 +value-titles=No basal melting,Instantaneous basal melting +values='none','instant' + +[namelist:jules_snow=i_grain_growth_opt] +compulsory=true +description=Option for rate of growth of snow grains +!enumeration=true +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D04 +value-titles=Marshall1989,Taillandier2007_ET +values='marshall','taillandier' + +[namelist:jules_snow=i_relayer_opt] +compulsory=true +description=Option for method of relayering the snow pack +!enumeration=true +help=This value is only used if nsmax > 0. +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D01e +value-titles=Original Scheme,Relayer inverse of grain size +values='original','inverse' + +[namelist:jules_soil] +compulsory=true +ns=namelist/Science/JULES Surface/Soil +sort-key=Panel-E01 +title=Soil options +url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#namelist-JULES_SOIL + +[namelist:jules_soil=l_dpsids_dsdz] +compulsory=true +description=Calculate vertical gradient of soil suction with the assumption of linearity only for + =fractional saturation (consistent with the calculation of hydraulic conductivity) +!kind=default +ns=namelist/Science/JULES Surface/Soil +sort-key=Panel-E01 +type=logical + +[namelist:jules_soil=l_soil_sat_down] +compulsory=true +description=Direction of water in excess of saturation +help=If a soil layer becomes supersaturated, + =the water in excess of saturation will be put into the + =layer above or below according to this switch + = + =Down => Excess is put into the layer below. Excess from the bottom layer becomes subsurface runoff + =Up => Excess is put into the layer above. Excess from the top layer becomes surface runoff +!kind=default +ns=namelist/Science/JULES Surface/Soil +sort-key=Panel-E03 +type=logical + +[namelist:jules_soil=l_vg_soil] +compulsory=true +description=Switch for van Genuchten soil hydraulic model. +!kind=default +ns=namelist/Science/JULES Surface/Soil +sort-key=Panel-E02 +type=logical + +[namelist:jules_surface=check_soilm_negatives] +description=Switch to check if soil moisture has become negative as part of the lake water conservation scheme +type=logical + +[namelist:jules_surface=cor_mo_iter] +value-titles=Limit Obukhov length in low winds, + =Improve initial guess (preferred) +values='lim_oblen','improved' + +[namelist:jules_surface=fd_stability_dep] +value-titles=Off,Surface Ri +values='none','surf_ri' + +[namelist:jules_surface=formdrag] +trigger=namelist:jules_surface=fd_stability_dep: 'eff_z0','dist_drag'; +values='none','eff_z0','dist_drag' + +[namelist:jules_surface=l_urban2t] +trigger=namelist:jules_surface_types=urban_canyon: .true.; + =namelist:jules_surface_types=urban_roof: .true.; + =namelist:jules_surface_types=urban: .false.; + =namelist:jules_urban: .true.; + =namelist:jules_urban=anthrop_heat_scale: .true.; + =namelist:files=urban_ancil_path: .true.; + +[namelist:jules_surface=l_vary_z0m_soil] +trigger=namelist:files=soil_rough_ancil_path: .true. ; + +[namelist:jules_surface=lake_water_conservation] +compulsory=true +description=Use the lake water conservation scheme +help=The inland water tile (aka lake tile) is a freely evaporating surface that does not deplete the local water supply. In order to conserve water the lake water conservation scheme decreases the level 4 soil moisture globally to account for this. +trigger=namelist:jules_surface=check_soilm_negatives: .true.; +type=logical + +[namelist:jules_surface=srf_ex_cnv_gust] +type=logical + +[namelist:jules_surface_types=urban] +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following + +[namelist:jules_vegetation=can_rad_mod] +values='one','four','five','six' + +[namelist:jules_vegetation=l_spec_veg_z0] +trigger=namelist:jules_pftparm=z0v_io: .true.; + +[namelist:specified_surface] +compulsory=true +description=Further Idealised surface settings +ns=namelist/Science/Specified Surface +sort-key=Section-A05 +title=Surface + +[namelist:specified_surface=function_amplitude_e] +compulsory=true +description=Amplitude of the function used for surface latent heat flux +help=Specifies the amplitude of the analytical function used for calculating the + =surface latent heat flux +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=function_amplitude_h] +compulsory=true +description=Amplitude of the function used for surface sensible heat flux +help=Specifies the amplitude of the analytical function used for calculating the + =surface sensible heat flux +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=function_name_fluxes] +compulsory=true +description=Name of the function used for surface latent and sensible heat fluxes +!enumeration=true +help=Specifies function name used for calculating surface latent and sensible heat fluxes + =If constant, uses the single values set in specified_flux_h and specified_flux_e. profile_size should be set to 1. + =If time-interpolated, uses the time-varying arrays set in specified_flux_h and specified_flux_e, where the arrays are of length profile_size. + =If sinusoidal, fluxes are set to + =amplitude * sin( 2 * pi * current_time / period + phase ) + =If diurnal, fluxes are set to + =max(0, amplitude * cos( pi* (time_of_max_flux - current_time) / length_of_day )^1.3 ) +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +trigger=namelist:specified_surface=function_amplitude_e: 'sinusoidal', 'diurnal'; + =namelist:specified_surface=function_period_e: 'sinusoidal'; + =namelist:specified_surface=function_phase_e: 'sinusoidal'; + =namelist:specified_surface=function_amplitude_h: 'sinusoidal', 'diurnal'; + =namelist:specified_surface=function_period_h: 'sinusoidal'; + =namelist:specified_surface=function_phase_h: 'sinusoidal'; + =namelist:specified_surface=length_of_day: 'diurnal'; + =namelist:specified_surface=time_of_max_flux: 'diurnal'; + =namelist:specified_surface=length_of_day: 'diurnal'; + =namelist:specified_surface=time_data: 'time_interpolated'; + =namelist:specified_surface=profile_size: 'constant','time_interpolated'; + =namelist:specified_surface=specified_flux_e: 'constant','time_interpolated'; + =namelist:specified_surface=specified_flux_h: 'constant','time_interpolated'; + =namelist:specified_surface=time_units: 'sinusoidal', 'diurnal', 'time_interpolated'; +value-titles=Constant, Time Interpolated, Sinusoidal function, Diurnal function +values='constant', 'time_interpolated', 'sinusoidal', 'diurnal' + +[namelist:specified_surface=function_name_sst] +compulsory=true +description=Name of the function used for sea surface temperatures +!enumeration=true +help=Specifies the function name used for calculating surface sensible heat flux + = If constant, uses the sea surface tile value set by surf_tile_temps option found in + = ideal_surface namelist. + = If time_interpolated, uses the time-varying array set in sea_surf_temps found in the + = specified_surface namelist. +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +trigger=namelist:specified_surface=time_data_sst: 'time_interpolated'; + =namelist:specified_surface=profile_size_sst: 'time_interpolated'; + =namelist:specified_surface=time_units_sst: 'time_interpolated'; + =namelist:specified_surface=sea_surf_temps: 'time_interpolated'; +value-titles=Constant, Time Interpolated +values='constant', 'time_interpolated' + +[namelist:specified_surface=function_period_e] +compulsory=true +description=Period of the function used for surface latent heat flux +help=Specifies the period of the sinusoidal analytical function used for calculating + =latent heat flux +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=function_period_h] +compulsory=true +description=Period of the function used for surface sensible heat flux +help=Specifies the period of the sinusoidal analytical function used for calculating + =sensible heat flux +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=function_phase_e] +compulsory=true +description=Phase of the function used for latent heat flux +help=Specifies the phase of the sinusoidal analytical function used for calculating the + =latent heat flux +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=function_phase_h] +compulsory=true +description=Phase of the function used for sensible heat flux +help=Specifies the phase of the sinusoidal analytical function used for calculating the + =sensible heat flux +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=internal_flux_method] +compulsory=true +description=How to prescribe the internal flux +!enumeration=true +help=Either a constant value or a 2D map +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +trigger=namelist:files=internal_flux_ancil_path: 'non_uniform' ; + =namelist:specified_surface=internal_flux_value: 'uniform' ; +value-titles=Uniform, Non-Uniform +values='uniform','non_uniform' + +[namelist:specified_surface=internal_flux_value] +compulsory=true +description=Constant internal flux value +help=Use the Stefan-Boltzmann law to calculate the flux from + =internal temperature T_int +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=length_of_day] +compulsory=true +description=Duration of daylight +help=Specifies the duration of daylight, in units that are consistent with + =the length_of_day option, used for the diurnal analytical function. +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=profile_size] +compulsory=true +description=Number of points in varying flux profile +help=Number of data points in the specified_flux_h and specified_flux_e + =arrays +!kind=default +ns=namelist/Science/Specified Surface +range=0: +sort-key=Panel-A03e +type=integer + +[namelist:specified_surface=profile_size_sst] +compulsory=true +description=Number of points in sst profile +help=Number of data points in the sea_surf_temps arrays +!kind=default +ns=namelist/Science/Specified Surface +range=0: +sort-key=Panel-A03e +type=integer + +[namelist:specified_surface=sea_surf_temps] +!bounds=namelist:specified_surface=profile_size_sst +compulsory=true +description=Time-varying sea surface temperature profile +help=Sea surface temperature values (K) used at times specified, overides + =the sea surface tile value set by surf_tile_temps option found in + =ideal_surface namelist. +!kind=default +length=: +ns=namelist/Science/Specified Surface +sort-key=Panel-A03d +type=real + +[namelist:specified_surface=specified_flux_e] +!bounds=namelist:specified_surface=profile_size +compulsory=true +description=Surface latent heat flux [Wm-2] +help=Fixed or time-varying value used throughout the run. +!kind=default +length=: +ns=namelist/Science/Specified Surface +sort-key=Panel-A01a +type=real + +[namelist:specified_surface=specified_flux_h] +!bounds=namelist:specified_surface=profile_size +compulsory=true +description=Surface sensible heat flux [Wm-2] +help=Fixed or time-varying value used throughout the run +!kind=default +length=: +ns=namelist/Science/Specified Surface +sort-key=Panel-A01b +type=real + +[namelist:specified_surface=surf_temp_forcing] +compulsory=true +description=Forcing of the surface temperature +!enumeration=true +help=E.g. increment due to an internal flux +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +trigger=namelist:specified_surface=internal_flux_method: 'int_flux' ; +value-titles=None, Internal flux +values='none','int_flux' + +[namelist:specified_surface=time_data] +!bounds=namelist:specified_surface=profile_size +compulsory=true +description=Time values +help=Time values corresponding with the time-varying fluxes +!kind=default +length=: +ns=namelist/Science/Specified Surface +range=0.0: +sort-key=Panel-A03c +type=real + +[namelist:specified_surface=time_data_sst] +!bounds=namelist:specified_surface=profile_size_sst +compulsory=true +description=Time values +help=Time values corresponding with the time-varying ssts +!kind=default +length=: +ns=namelist/Science/Specified Surface +range=0.0: +sort-key=Panel-A03c +type=real + +[namelist:specified_surface=time_of_max_flux] +compulsory=true +description=Time of maximum flux +help=Specifies the time of day when the flux reaches its maximum value. + =The units must be consistent with the units used by the length_of_day option. + =Used for the diurnal analytical function. +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=time_units] +compulsory=true +description=Units of the time_data list/ function_period +!enumeration=true +help=Specifies the units of the time data/ wave period used. +ns=namelist/Science/Specified Surface +value-titles=Seconds,Minutes,Hours,Days +values='seconds','minutes','hours','days' + +[namelist:specified_surface=time_units_sst] +compulsory=true +description=Units of the time_data list/ function_period +!enumeration=true +help=Specifies the units of the time data/ wave period used. +ns=namelist/Science/Specified Surface +value-titles=Seconds,Minutes,Hours,Days +values='seconds','minutes','hours','days' + +[namelist:surface] +compulsory=true +description=Surface parametrisations +ns=namelist/Science/JULES Surface +sort-key=Section-A12 +title=Surface + +[namelist:surface=amip_ice_thick] +compulsory=true +description=Calculate ice thickness from ice fraction +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +sort-key=Panel-C01 +type=logical + +[namelist:surface=emis_method_sea] +compulsory=true +description=Emissivity method for open sea + = Two options for spectrally varying emissivity in addition to a fixed emissivity: + = D. Feldman et al. (2014) https://doi.org/10.1073/pnas.1413640111 and + = R. Saunders et al. (2018) https://doi.org/10.5194/gmd-11-2717-2018 for IREMIS. +!enumeration=true +ns=namelist/JULES Science Settings/jules_radiation +sort-key=Panel-C02a +value-titles=1: Fixed, + =2: Feldman, + =3: IREMIS +values='fixed','feldman','iremis' + +[namelist:surface=emis_method_soil] +compulsory=true +description=Emissivity method for soil + = Option for spectrally varying emissivity in addition to a fixed emissivity: + = D. Feldman et al. (2014) https://doi.org/10.1073/pnas.1413640111 +!enumeration=true +ns=namelist/JULES Science Settings/jules_radiation +sort-key=Panel-G06 +value-titles=1: Fixed, + =2: Feldman Desert +values='fixed','feldman_desert' + +[namelist:surface=z0h_specified] +compulsory=true +description=Specified roughness length for scalars [m] +fail-if=this < 0 +help=Specified value held fixed throughout the run used for surface exchange + =of scalar fields such as heat and moisture +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +range=0.0:100.0 +sort-key=Panel-C09b +type=real + +[namelist:surface=z0m_specified] +compulsory=true +description=Specified roughness length for momentum [m] +fail-if=this < 0 +help=Specified value held fixed throughout the run +!kind=default +ns=namelist/Science/JULES Surface/Sea and sea-ice +range=0.0:100.0 +sort-key=Panel-C09a +type=real + +# Dummy page to force sort order for Snow other parameters +[namespace:snow_other] +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=02 + +# Dummy page to force sort order for Snow radiation parameters +[namespace:snow_radiation] +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=01 diff --git a/interfaces/jules_interface/rose-meta/jules-lfric/vn2.2/rose-meta.conf b/interfaces/jules_interface/rose-meta/jules-lfric/vn2.2/rose-meta.conf new file mode 100644 index 0000000000..7a533bcfaf --- /dev/null +++ b/interfaces/jules_interface/rose-meta/jules-lfric/vn2.2/rose-meta.conf @@ -0,0 +1,580 @@ +# Please see jules:wiki:SharingJULESmetadata + +import=lfric-jules-shared/jules-hydrology/vn2.2 + =lfric-jules-shared/jules-nvegparm/vn2.2 + =lfric-jules-shared/jules-pftparm/vn2.2 + =lfric-jules-shared/jules-radiation/vn2.2 + =lfric-jules-shared/jules-sea-seaice/vn2.2 + =lfric-jules-shared/jules-snow/vn2.2 + =lfric-jules-shared/jules-soil/vn2.2 + =lfric-jules-shared/jules-surface/vn2.2 + =lfric-jules-shared/jules-surface-types/vn2.2 + =lfric-jules-shared/jules-urban/vn2.2 + =lfric-jules-shared/jules-vegetation/vn2.2 + +[namelist:ideal_surface] +compulsory=true +description=Idealised surface settings +ns=namelist/Job/Initial conditions/Surface +sort-key=Section-A05 +title=Surface + +[namelist:ideal_surface=canopy_height] +compulsory=true +description=Canopy height of each plant type +fail-if=len(this) != namelist:jules_surface_types=npft +help=Canopy height of each plant type +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-03 +type=real + +[namelist:ideal_surface=leaf_area_index] +compulsory=true +description=Leaf area index of each plant type +fail-if=len(this) != namelist:jules_surface_types=npft +help=Leaf area index of each plant type +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-04 +type=real + +[namelist:ideal_surface=n_snow_layers] +compulsory=true +description=Snow layers on each tile +fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:jules_sea_seaice=nice + 1 +help=The initial number of snow layers on each surface tile + = + =The order of tiles is land, sea, sea-ice +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-08 +type=integer + +[namelist:ideal_surface=snow_depth] +compulsory=true +description=Snow depth on each tile +fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:jules_sea_seaice=nice + 1 +help=The initial snow depth on each surface tile + = + =The order of tiles is land, sea, sea-ice +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-09 +type=real + +[namelist:ideal_surface=snow_layer_ice_mass] +compulsory=true +description=Ice mass of each snow layer on tiles +fail-if=len(this) != 3*(namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg) +help=The initial ice mass of each snow layer + = + =The order in tiles 1-n for layer 1, then tiles 1-n for layer 2 etc +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-11 +type=real + +[namelist:ideal_surface=snow_layer_temp] +compulsory=true +description=Temperature of each snow layer on tiles +fail-if=len(this) != 3*(namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg) +help=The initial temperature of each snow layer + = + =The order in tiles 1-n for layer 1, then tiles 1-n for layer 2 etc +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-12 +type=real + +[namelist:ideal_surface=snow_layer_thickness] +compulsory=true +description=Thickness of each snow layer on tiles +fail-if=len(this) != 3*(namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg) +help=The initial thickness of each snow layer + = + =The order in tiles 1-n for layer 1, then tiles 1-n for layer 2 etc +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-10 +type=real + +[namelist:ideal_surface=soil_moisture] +compulsory=true +description=Soil moisture content +help=Soil moisture content on soil levels +!kind=default +length=4 +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-05 +type=real + +[namelist:ideal_surface=soil_temperature] +compulsory=true +description=Soil temperature +help=Temperature of soil levels +!kind=default +length=4 +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-06 +type=real + +[namelist:ideal_surface=surf_tile_fracs] +compulsory=true +description=Fraction of each surface tile +fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:jules_sea_seaice=nice + 1 +help=The fraction within a grid-box of each surface tile + = + =The order of tiles is land, sea, sea-ice + = + =The fractions should sum to 1 +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-01 +type=real + +[namelist:ideal_surface=surf_tile_temps] +compulsory=true +description=Fraction of each surface tile +fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:jules_sea_seaice=nice + 1 +help=The initial temperature of each surface tile + = + =The order of tiles is land, sea, sea-ice +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-02 +type=real + +[namelist:ideal_surface=tile_snow_mass] +compulsory=true +description=Snow mass on each tile +fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg + namelist:jules_sea_seaice=nice + 1 +help=The initial snow mass on each surface tile + = + =The order of tiles is land, sea, sea-ice +!kind=default +length=: +ns=namelist/Job/Initial conditions/Surface +sort-key=Panel-07 +type=real + +[namelist:jules_hydrology=l_hydrology] +trigger=namelist:jules_hydrology=l_var_rainfrac: .true.; + +[namelist:jules_radiation=fixed_sea_albedo] +description=If using i_sea_alb_method='fixed', the global value of albedo to use. + +[namelist:jules_radiation=i_sea_alb_method] +trigger=namelist:jules_radiation=l_sea_alb_var_chl: 'jin'; + =namelist:jules_radiation=fixed_sea_albedo: 'fixed'; +value-titles=Barker and Li 1995,Jin et al. 2011,Fixed global value +values='barker','jin','fixed' + +[namelist:jules_radiation=l_albedo_obs] +trigger=namelist:files=albedo_vis_ancil_path: .true. ; + =namelist:files=albedo_nir_ancil_path: .true. ; + =namelist:jules_nvegparm=albsnf_nvgu_io: .true.; + =namelist:jules_nvegparm=albsnf_nvgl_io: .true.; + +[namelist:jules_radiation=l_sea_alb_var_chl] +trigger=namelist:files=sea_ancil_path: .true. ; + +[namelist:jules_snow=can_clump] +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT + =all(this == 0) and any(namelist:jules_snow=cansnowpft == '.true.'); # Results in floating point exception if 0. Only used if can_model = 4 (JULES default), cansnowpft = TRUE on that tile and l_embedded_snow = TRUE (LFRic default). + +[namelist:jules_snow=cansnowpft] +compulsory=true +length=5 + +[namelist:jules_snow=i_basal_melting_opt] +values='none','instant' + +[namelist:jules_snow=i_grain_growth_opt] +values='marshall','taillandier' + +[namelist:jules_snow=i_relayer_opt] +values='original','inverse' + +[namelist:jules_surface=cor_mo_iter] +value-titles=Limit Obukhov length in low winds, + =Improve initial guess (preferred) +values='lim_oblen','improved' + +[namelist:jules_surface=fd_stability_dep] +value-titles=Off,Surface Ri +values='none','surf_ri' + +[namelist:jules_surface=formdrag] +trigger=namelist:jules_surface=fd_stability_dep: 'eff_z0','dist_drag'; +values='none','eff_z0','dist_drag' + +[namelist:jules_surface=l_urban2t] +trigger=namelist:jules_surface_types=urban_canyon: .true.; + =namelist:jules_surface_types=urban_roof: .true.; + =namelist:jules_surface_types=urban: .false.; + =namelist:jules_urban: .true.; + =namelist:jules_urban=anthrop_heat_scale: .true.; + =namelist:files=urban_ancil_path: .true.; + =namelist:stochastic_physics=rp_lsfc_z0_urban_mult: .true. ; + +[namelist:jules_surface=l_vary_z0m_soil] +trigger=namelist:files=soil_rough_ancil_path: .true. ; + +[namelist:jules_surface=srf_ex_cnv_gust] +type=logical + +[namelist:jules_vegetation=can_rad_mod] +values='one','four','five','six' + +[namelist:jules_vegetation=l_spec_veg_z0] +trigger=namelist:jules_pftparm=z0v_io: .true.; + =namelist:stochastic_physics=rp_lsfc_z0v: .true.; + =namelist:stochastic_physics=rp_lsfc_z0v_max: .true.; + =namelist:stochastic_physics=rp_lsfc_z0v_min: .true.; + +[namelist:specified_surface] +compulsory=true +description=Further Idealised surface settings +ns=namelist/Science/Specified Surface +sort-key=Section-A05 +title=Specified Surface + +[namelist:specified_surface=function_amplitude_e] +compulsory=true +description=Amplitude of the function used for surface latent heat flux +help=Specifies the amplitude of the analytical function used for calculating the + =surface latent heat flux +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=function_amplitude_h] +compulsory=true +description=Amplitude of the function used for surface sensible heat flux +help=Specifies the amplitude of the analytical function used for calculating the + =surface sensible heat flux +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=function_name_fluxes] +compulsory=true +description=Name of the function used for surface latent and sensible heat fluxes +!enumeration=true +help=Specifies function name used for calculating surface latent and sensible heat fluxes + =If constant, uses the single values set in specified_flux_h and specified_flux_e. profile_size should be set to 1. + =If time-interpolated, uses the time-varying arrays set in specified_flux_h and specified_flux_e, where the arrays are of length profile_size. + =If sinusoidal, fluxes are set to + =amplitude * sin( 2 * pi * current_time / period + phase ) + =If diurnal, fluxes are set to + =max(0, amplitude * cos( pi* (time_of_max_flux - current_time) / length_of_day )^1.3 ) +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +trigger=namelist:specified_surface=function_amplitude_e: 'sinusoidal', 'diurnal'; + =namelist:specified_surface=function_period_e: 'sinusoidal'; + =namelist:specified_surface=function_phase_e: 'sinusoidal'; + =namelist:specified_surface=function_amplitude_h: 'sinusoidal', 'diurnal'; + =namelist:specified_surface=function_period_h: 'sinusoidal'; + =namelist:specified_surface=function_phase_h: 'sinusoidal'; + =namelist:specified_surface=length_of_day: 'diurnal'; + =namelist:specified_surface=time_of_max_flux: 'diurnal'; + =namelist:specified_surface=length_of_day: 'diurnal'; + =namelist:specified_surface=time_data: 'time_interpolated'; + =namelist:specified_surface=profile_size: 'constant','time_interpolated'; + =namelist:specified_surface=specified_flux_e: 'constant','time_interpolated'; + =namelist:specified_surface=specified_flux_h: 'constant','time_interpolated'; + =namelist:specified_surface=time_units: 'sinusoidal', 'diurnal', 'time_interpolated'; +value-titles=Constant, Time Interpolated, Sinusoidal function, Diurnal function +values='constant', 'time_interpolated', 'sinusoidal', 'diurnal' + +[namelist:specified_surface=function_name_sst] +compulsory=true +description=Name of the function used for sea surface temperatures +!enumeration=true +help=Specifies the function name used for calculating surface sensible heat flux + = If constant, uses the sea surface tile value set by surf_tile_temps option found in + = ideal_surface namelist. + = If time_interpolated, uses the time-varying array set in sea_surf_temps found in the + = specified_surface namelist. +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +trigger=namelist:specified_surface=time_data_sst: 'time_interpolated'; + =namelist:specified_surface=profile_size_sst: 'time_interpolated'; + =namelist:specified_surface=time_units_sst: 'time_interpolated'; + =namelist:specified_surface=sea_surf_temps: 'time_interpolated'; +value-titles=Constant, Time Interpolated +values='constant', 'time_interpolated' + +[namelist:specified_surface=function_period_e] +compulsory=true +description=Period of the function used for surface latent heat flux +help=Specifies the period of the sinusoidal analytical function used for calculating + =latent heat flux +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=function_period_h] +compulsory=true +description=Period of the function used for surface sensible heat flux +help=Specifies the period of the sinusoidal analytical function used for calculating + =sensible heat flux +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=function_phase_e] +compulsory=true +description=Phase of the function used for latent heat flux +help=Specifies the phase of the sinusoidal analytical function used for calculating the + =latent heat flux +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=function_phase_h] +compulsory=true +description=Phase of the function used for sensible heat flux +help=Specifies the phase of the sinusoidal analytical function used for calculating the + =sensible heat flux +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=internal_flux_method] +compulsory=true +description=How to prescribe the internal flux +!enumeration=true +help=Either a constant value or a 2D map +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +trigger=namelist:files=internal_flux_ancil_path: 'non_uniform' ; + =namelist:specified_surface=internal_flux_value: 'uniform' ; +value-titles=Uniform, Non-Uniform +values='uniform','non_uniform' + +[namelist:specified_surface=internal_flux_value] +compulsory=true +description=Constant internal flux value +help=Use the Stefan-Boltzmann law to calculate the flux from + =internal temperature T_int +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=length_of_day] +compulsory=true +description=Duration of daylight +help=Specifies the duration of daylight, in units that are consistent with + =the length_of_day option, used for the diurnal analytical function. +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=profile_size] +compulsory=true +description=Number of points in varying flux profile +help=Number of data points in the specified_flux_h and specified_flux_e + =arrays +!kind=default +ns=namelist/Science/Specified Surface +range=0: +sort-key=Panel-A03e +type=integer + +[namelist:specified_surface=profile_size_sst] +compulsory=true +description=Number of points in sst profile +help=Number of data points in the sea_surf_temps arrays +!kind=default +ns=namelist/Science/Specified Surface +range=0: +sort-key=Panel-A03e +type=integer + +[namelist:specified_surface=sea_surf_temps] +!bounds=namelist:specified_surface=profile_size_sst +compulsory=true +description=Time-varying sea surface temperature profile +help=Sea surface temperature values (K) used at times specified, overides + =the sea surface tile value set by surf_tile_temps option found in + =ideal_surface namelist. +!kind=default +length=: +ns=namelist/Science/Specified Surface +sort-key=Panel-A03d +type=real + +[namelist:specified_surface=specified_flux_e] +!bounds=namelist:specified_surface=profile_size +compulsory=true +description=Surface latent heat flux [Wm-2] +help=Fixed or time-varying value used throughout the run. +!kind=default +length=: +ns=namelist/Science/Specified Surface +sort-key=Panel-A01a +type=real + +[namelist:specified_surface=specified_flux_h] +!bounds=namelist:specified_surface=profile_size +compulsory=true +description=Surface sensible heat flux [Wm-2] +help=Fixed or time-varying value used throughout the run +!kind=default +length=: +ns=namelist/Science/Specified Surface +sort-key=Panel-A01b +type=real + +[namelist:specified_surface=surf_temp_forcing] +compulsory=true +description=Forcing of the surface temperature +!enumeration=true +help=E.g. increment due to an internal flux +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +trigger=namelist:specified_surface=internal_flux_method: 'int_flux' ; +value-titles=None, Internal flux +values='none','int_flux' + +[namelist:specified_surface=time_data] +!bounds=namelist:specified_surface=profile_size +compulsory=true +description=Time values +help=Time values corresponding with the time-varying fluxes +!kind=default +length=: +ns=namelist/Science/Specified Surface +range=0.0: +sort-key=Panel-A03c +type=real + +[namelist:specified_surface=time_data_sst] +!bounds=namelist:specified_surface=profile_size_sst +compulsory=true +description=Time values +help=Time values corresponding with the time-varying ssts +!kind=default +length=: +ns=namelist/Science/Specified Surface +range=0.0: +sort-key=Panel-A03c +type=real + +[namelist:specified_surface=time_of_max_flux] +compulsory=true +description=Time of maximum flux +help=Specifies the time of day when the flux reaches its maximum value. + =The units must be consistent with the units used by the length_of_day option. + =Used for the diurnal analytical function. +!kind=default +ns=namelist/Science/Specified Surface +sort-key=Panel-A03 +type=real + +[namelist:specified_surface=time_units] +compulsory=true +description=Units of the time_data list/ function_period +!enumeration=true +help=Specifies the units of the time data/ wave period used. +ns=namelist/Science/Specified Surface +value-titles=Seconds,Minutes,Hours,Days +values='seconds','minutes','hours','days' + +[namelist:specified_surface=time_units_sst] +compulsory=true +description=Units of the time_data list/ function_period +!enumeration=true +help=Specifies the units of the time data/ wave period used. +ns=namelist/Science/Specified Surface +value-titles=Seconds,Minutes,Hours,Days +values='seconds','minutes','hours','days' + +[namelist:surface] +compulsory=true +description=Surface parametrisations used in the surface interface +ns=namelist/Science/Surface Interface +sort-key=Section-A12 + +[namelist:surface=check_soilm_negatives] +description=Switch to check if soil moisture has become negative as part of the + =lake water conservation scheme +ns=namelist/Science/Surface Interface/Soil +sort-key=Panel-B01a +type=logical + +[namelist:surface=emis_method_sea] +compulsory=true +description=Emissivity method for open sea + = Two options for spectrally varying emissivity in addition to a fixed emissivity: + = D. Feldman et al. (2014) https://doi.org/10.1073/pnas.1413640111 and + = R. Saunders et al. (2018) https://doi.org/10.5194/gmd-11-2717-2018 for IREMIS. +!enumeration=true +ns=namelist/Science/Surface Interface/Radiation +value-titles=1: Fixed, + =2: Feldman, + =3: IREMIS +values='fixed','feldman','iremis' + +[namelist:surface=emis_method_soil] +compulsory=true +description=Emissivity method for soil + = Option for spectrally varying emissivity in addition to a fixed emissivity: + = D. Feldman et al. (2014) https://doi.org/10.1073/pnas.1413640111 +!enumeration=true +ns=namelist/Science/Surface Interface/Radiation +value-titles=1: Fixed, + =2: Feldman Desert +values='fixed','feldman_desert' + +[namelist:surface=lake_water_conservation] +compulsory=true +description=Use the lake water conservation scheme +help=The inland water tile (aka lake tile) is a freely evaporating surface that does not deplete the local water supply. In order to conserve water the lake water conservation scheme decreases the level 4 soil moisture globally to account for this. +ns=namelist/Science/Surface Interface/Soil +sort-key=Panel-B01 +trigger=namelist:surface=check_soilm_negatives: .true.; +type=logical + +# Dummy page to force sort order for JULES Science Settings +[namespace:science] +ns=namelist/JULES Science Settings +sort-key=Section-A12b + +# Dummy page to force sort order for Snow other parameters +[namespace:snow_other] +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=02 + +# Dummy page to force sort order for Snow radiation parameters +[namespace:snow_radiation] +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=01 + +# Dummy page to force sort order for JULES Surface Types +[namespace:surface_types] +ns=namelist/JULES Surface Types +sort-key=Section-A12a diff --git a/interfaces/jules_interface/rose-meta/jules-lfric/vn3.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/jules-lfric/vn3.0/rose-meta.conf new file mode 100644 index 0000000000..691c725eb1 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/jules-lfric/vn3.0/rose-meta.conf @@ -0,0 +1,113 @@ +# Please see jules:wiki:SharingJULESmetadata + +import=lfric-jules-shared/jules-hydrology/vn3.0 + =lfric-jules-shared/jules-nvegparm/vn3.0 + =lfric-jules-shared/jules-pftparm/vn3.0 + =lfric-jules-shared/jules-radiation/vn3.0 + =lfric-jules-shared/jules-sea-seaice/vn3.0 + =lfric-jules-shared/jules-snow/vn3.0 + =lfric-jules-shared/jules-soil/vn3.0 + =lfric-jules-shared/jules-surface/vn3.0 + =lfric-jules-shared/jules-surface-types/vn3.0 + =lfric-jules-shared/jules-urban/vn3.0 + =lfric-jules-shared/jules-vegetation/vn3.0 + +[namelist:jules_hydrology=l_hydrology] +trigger=namelist:jules_hydrology=l_var_rainfrac: .true.; + +[namelist:jules_radiation=fixed_sea_albedo] +description=If using i_sea_alb_method='fixed', the global value of albedo to use. + +[namelist:jules_radiation=i_sea_alb_method] +trigger=namelist:jules_radiation=l_sea_alb_var_chl: 'jin'; + =namelist:jules_radiation=fixed_sea_albedo: 'fixed'; +value-titles=Barker and Li 1995,Jin et al. 2011,Fixed global value +values='barker','jin','fixed' + +[namelist:jules_radiation=l_albedo_obs] +trigger=namelist:files=albedo_vis_ancil_path: .true. ; + =namelist:files=albedo_nir_ancil_path: .true. ; + =namelist:jules_nvegparm=albsnf_nvgu_io: .true.; + =namelist:jules_nvegparm=albsnf_nvgl_io: .true.; + +[namelist:jules_radiation=l_sea_alb_var_chl] +trigger=namelist:files=sea_ancil_path: .true. ; + +[namelist:jules_snow=can_clump] +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT + =all(this == 0) and any(namelist:jules_snow=cansnowpft == '.true.'); # Results in floating point exception if 0. Only used if can_model = 4 (JULES default), cansnowpft = TRUE on that tile and l_embedded_snow = TRUE (LFRic default). + +[namelist:jules_snow=cansnowpft] +compulsory=true +length=5 + +[namelist:jules_snow=i_basal_melting_opt] +values='none','instant' + +[namelist:jules_snow=i_grain_growth_opt] +values='marshall','taillandier' + +[namelist:jules_snow=i_relayer_opt] +values='original','inverse' + +[namelist:jules_surface=anthrop_heat_option] +fail-if=this != "'dukes'"; # The DUKES fixed annual cycle is the only currently available option in LFRic +trigger=namelist:jules_surface=anthrop_heat_mean: 'flanner'; +values='dukes','flanner' + +[namelist:jules_surface=cor_mo_iter] +value-titles=Limit Obukhov length in low winds, + =Improve initial guess (preferred) +values='lim_oblen','improved' + +[namelist:jules_surface=fd_stability_dep] +value-titles=Off,Surface Ri +values='none','surf_ri' + +[namelist:jules_surface=formdrag] +trigger=namelist:jules_surface=fd_stability_dep: 'eff_z0','dist_drag'; +values='none','eff_z0','dist_drag' + +[namelist:jules_surface=l_urban2t] +trigger=namelist:jules_surface_types=urban_canyon: .true.; + =namelist:jules_surface_types=urban_roof: .true.; + =namelist:jules_surface_types=urban: .false.; + =namelist:jules_urban: .true.; + =namelist:jules_urban=anthrop_heat_scale: .true.; + =namelist:files=urban_ancil_path: .true.; + =namelist:stochastic_physics=rp_lsfc_z0_urban_mult: .true. ; + +[namelist:jules_surface=l_vary_z0m_soil] +trigger=namelist:files=soil_rough_ancil_path: .true. ; + +[namelist:jules_surface=srf_ex_cnv_gust] +type=logical + +[namelist:jules_vegetation=can_rad_mod] +values='one','four','five','six' + +[namelist:jules_vegetation=l_spec_veg_z0] +trigger=namelist:jules_pftparm=z0v_io: .true.; + =namelist:stochastic_physics=rp_lsfc_z0v: .true.; + =namelist:stochastic_physics=rp_lsfc_z0v_max: .true.; + =namelist:stochastic_physics=rp_lsfc_z0v_min: .true.; + +# Dummy page to force sort order for JULES Science Settings +[namespace:science] +ns=namelist/JULES Science Settings +sort-key=Section-A12b + +# Dummy page to force sort order for Snow other parameters +[namespace:snow_other] +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=02 + +# Dummy page to force sort order for Snow radiation parameters +[namespace:snow_radiation] +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=01 + +# Dummy page to force sort order for JULES Surface Types +[namespace:surface_types] +ns=namelist/JULES Surface Types +sort-key=Section-A12a diff --git a/interfaces/jules_interface/rose-meta/jules-lfric/vn3.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/jules-lfric/vn3.1/rose-meta.conf new file mode 100644 index 0000000000..07ecf662c9 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/jules-lfric/vn3.1/rose-meta.conf @@ -0,0 +1,181 @@ +############################################################################### +# This is the LFRic flavour of the JULES metadata +############################################################################### +# This should only contain: +# * Import statements from lfric-jules-shared. +# * LFRic specific amendments to the imported metadata. +# The majority of the metadata should be under rose-meta/lfric-jules-shared. +# +# This file in the future will reside in the JULES repository and will import +# jules-shared directly from there when the build system has been developed to +# allow this. +# +# Please see jules:wiki:SharingJULESmetadata + +import=lfric-jules-shared/jules-hydrology/vn3.1 + =lfric-jules-shared/jules-nvegparm/vn3.1 + =lfric-jules-shared/jules-pftparm/vn3.1 + =lfric-jules-shared/jules-radiation/vn3.1 + =lfric-jules-shared/jules-sea-seaice/vn3.1 + =lfric-jules-shared/jules-snow/vn3.1 + =lfric-jules-shared/jules-soil/vn3.1 + =lfric-jules-shared/jules-surface/vn3.1 + =lfric-jules-shared/jules-surface-types/vn3.1 + =lfric-jules-shared/jules-urban/vn3.1 + =lfric-jules-shared/jules-vegetation/vn3.1 + +[namelist:jules_hydrology=l_hydrology] +trigger=namelist:jules_hydrology=l_var_rainfrac: .true.; + +[namelist:jules_model_environment_lfric] +compulsory=true +description=Not all JULES options are available in all environments in which JULES is run e.g. standalone, + =UM, LFRic (LIS, MONC, CABLE). The model environment is specified here so that options that are + =unavailable can be made inaccessible via the metadata and thus will not appear in the gui. +ns=namelist/JULES Science Settings/jules_model_environment +sort-key=01 +title=Model environment interface +url=http://jules-lsm.github.io/latest/namelists/model_environment.nml.html#namelist-JULES_MODEL_ENVIRONMENT + +[namelist:jules_model_environment_lfric=l_jules_parent] +compulsory=true +description=Switch to identify the environment in which JULES is being run. + =No science code is associated with this switch, only what science options are available. + =THIS HAS TO BE LFRIC SPECIFIC FOR NOW AS A RESULT OF THE WAY THAT + =LFRIC COUPLED PROCESSES NAMELIST FILES. +!enumeration=true +fail-if=this != "'lfric'"; # This should indicate that LFRic is the parent model. +trigger=namelist:jules_surface=l_elev_land_ice: 'not_lfric'; + =namelist:jules_surface=l_elev_lw_down: 'not_lfric'; + =namelist:jules_surface=l_flake_model: 'not_lfric'; + =namelist:jules_surface=l_point_data: 'not_lfric'; +value-titles=LFRic +values='lfric' + +[namelist:jules_radiation=fixed_sea_albedo] +description=If using i_sea_alb_method='fixed', the global value of albedo to use. + +[namelist:jules_radiation=i_sea_alb_method] +trigger=namelist:jules_radiation=l_sea_alb_var_chl: 'jin'; + =namelist:jules_radiation=fixed_sea_albedo: 'fixed'; +value-titles=Barker and Li 1995,Jin et al. 2011,Fixed global value +values='barker','jin','fixed' + +[namelist:jules_radiation=l_albedo_obs] +trigger=namelist:files=albedo_vis_ancil_path: .true. ; + =namelist:files=albedo_nir_ancil_path: .true. ; + =namelist:jules_nvegparm=albsnf_nvgu_io: .true.; + =namelist:jules_nvegparm=albsnf_nvgl_io: .true.; + +[namelist:jules_radiation=l_sea_alb_var_chl] +trigger=namelist:files=sea_ancil_path: .true. ; + +[namelist:jules_snow=can_clump] +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT + =all(this == 0) and any(namelist:jules_snow=cansnowpft == '.true.'); # Results in floating point exception if 0. Only used if can_model = 4 (JULES default), cansnowpft = TRUE on that tile and l_embedded_snow = TRUE (LFRic default). + +[namelist:jules_snow=cansnowpft] +compulsory=true +length=5 + +[namelist:jules_snow=i_basal_melting_opt] +values='none','instant' + +[namelist:jules_snow=i_grain_growth_opt] +values='marshall','taillandier' + +[namelist:jules_snow=i_relayer_opt] +values='original','inverse' + +[namelist:jules_surface=all_tiles] +values='off','on' + +[namelist:jules_surface=anthrop_heat_option] +fail-if=this != "'dukes'"; # The DUKES fixed annual cycle is the only currently available option in LFRic +trigger=namelist:jules_surface=anthrop_heat_mean: 'flanner'; +values='dukes','flanner' + +[namelist:jules_surface=cor_mo_iter] +trigger=namelist:jules_surface=beta_cnv_bl: 'improved'; +value-titles=Limit Obukhov length in low winds, + =Improve initial guess (preferred) +values='lim_oblen','improved' + +[namelist:jules_surface=fd_hill_option] +value-titles=capped low hill +values='capped_lowhill' + +[namelist:jules_surface=fd_stability_dep] +value-titles=Off,Surface Ri +values='none','surf_ri' + +[namelist:jules_surface=formdrag] +fail-if= +trigger=namelist:jules_surface=orog_drag_param: 'eff_z0','dist_drag'; + =namelist:jules_surface=fd_stability_dep: 'eff_z0','dist_drag'; + =namelist:jules_surface=fd_hill_option: 'dist_drag'; +values='none','eff_z0','dist_drag' + +[namelist:jules_surface=i_modiscopt] +fail-if= +value-titles=On +values='on' + +[namelist:jules_surface=iscrntdiag] +fail-if= +value-titles=Decoupled with transitional effects +values='decoupled_trans' + +[namelist:jules_surface=l_elev_land_ice] +fail-if= +trigger= + +[namelist:jules_surface=l_flake_model] +trigger= + +[namelist:jules_surface=l_urban2t] +trigger=namelist:jules_surface_types=urban_canyon: .true.; + =namelist:jules_surface_types=urban_roof: .true.; + =namelist:jules_surface_types=urban: .false.; + =namelist:jules_urban: .true.; + =namelist:jules_urban=anthrop_heat_scale: .true.; + =namelist:files=urban_ancil_path: .true.; + =namelist:stochastic_physics=rp_lsfc_z0_urban_mult: .true.; + +[namelist:jules_surface=l_vary_z0m_soil] +fail-if= +trigger=namelist:files=soil_rough_ancil_path: .true. ; + +[namelist:jules_surface=srf_ex_cnv_gust] +fail-if= +trigger= +type=logical + +[namelist:jules_vegetation=can_rad_mod] +values='one','four','five','six' + +[namelist:jules_vegetation=l_spec_veg_z0] +trigger=namelist:jules_pftparm=z0v_io: .true.; + =namelist:stochastic_physics=rp_lsfc_z0v: .true.; + =namelist:stochastic_physics=rp_lsfc_z0v_max: .true.; + =namelist:stochastic_physics=rp_lsfc_z0v_min: .true.; + +# Dummy page to force sort order for JULES Science Settings +[namespace:science] +ns=namelist/JULES Science Settings +sort-key=Section-A12b + +# Dummy page to force sort order for Snow other parameters +[namespace:snow_other] +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=02 + +# Dummy page to force sort order for Snow radiation parameters +[namespace:snow_radiation] +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=01 + +# Dummy page to force sort order for JULES Surface Types +[namespace:surface_types] +ns=namelist/JULES Surface Types +sort-key=Section-A12a diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/HEAD/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/HEAD/rose-meta.conf new file mode 100644 index 0000000000..782d746877 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/HEAD/rose-meta.conf @@ -0,0 +1,27 @@ +[namelist:jules_hydrology] +compulsory=true +ns=namelist/JULES Science Settings/jules_hydrology +sort-key=Section-A12g +title=Hydrology options +url=http://jules-lsm.github.io/latest/namelists/jules_hydrology.nml.html#namelist-JULES_HYDROLOGY + +[namelist:jules_hydrology=l_hydrology] +compulsory=true +description=Enable soil hydrology +!kind=default +sort-key=Panel-G01 +trigger=namelist:jules_hydrology=l_var_rainfrac: .true.; + =namelist:jules_hydrology=l_top: .true.; + =namelist:jules_hydrology=l_pdm: .true.; + =namelist:jules_hydrology=l_limit_gsoil: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::l_hydrology + +[namelist:jules_hydrology=l_var_rainfrac] +compulsory=true +description=Enable variable large scale and convective rain fractions + =SHOULD NOT BE USED IN STANDALONE - Please see online docs. +!kind=default +sort-key=Panel-G02 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::l_var_rainfrac diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/vn2.2/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/vn2.2/rose-meta.conf new file mode 100644 index 0000000000..782d746877 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/vn2.2/rose-meta.conf @@ -0,0 +1,27 @@ +[namelist:jules_hydrology] +compulsory=true +ns=namelist/JULES Science Settings/jules_hydrology +sort-key=Section-A12g +title=Hydrology options +url=http://jules-lsm.github.io/latest/namelists/jules_hydrology.nml.html#namelist-JULES_HYDROLOGY + +[namelist:jules_hydrology=l_hydrology] +compulsory=true +description=Enable soil hydrology +!kind=default +sort-key=Panel-G01 +trigger=namelist:jules_hydrology=l_var_rainfrac: .true.; + =namelist:jules_hydrology=l_top: .true.; + =namelist:jules_hydrology=l_pdm: .true.; + =namelist:jules_hydrology=l_limit_gsoil: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::l_hydrology + +[namelist:jules_hydrology=l_var_rainfrac] +compulsory=true +description=Enable variable large scale and convective rain fractions + =SHOULD NOT BE USED IN STANDALONE - Please see online docs. +!kind=default +sort-key=Panel-G02 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::l_var_rainfrac diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/vn3.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/vn3.0/rose-meta.conf new file mode 100644 index 0000000000..782d746877 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/vn3.0/rose-meta.conf @@ -0,0 +1,27 @@ +[namelist:jules_hydrology] +compulsory=true +ns=namelist/JULES Science Settings/jules_hydrology +sort-key=Section-A12g +title=Hydrology options +url=http://jules-lsm.github.io/latest/namelists/jules_hydrology.nml.html#namelist-JULES_HYDROLOGY + +[namelist:jules_hydrology=l_hydrology] +compulsory=true +description=Enable soil hydrology +!kind=default +sort-key=Panel-G01 +trigger=namelist:jules_hydrology=l_var_rainfrac: .true.; + =namelist:jules_hydrology=l_top: .true.; + =namelist:jules_hydrology=l_pdm: .true.; + =namelist:jules_hydrology=l_limit_gsoil: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::l_hydrology + +[namelist:jules_hydrology=l_var_rainfrac] +compulsory=true +description=Enable variable large scale and convective rain fractions + =SHOULD NOT BE USED IN STANDALONE - Please see online docs. +!kind=default +sort-key=Panel-G02 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::l_var_rainfrac diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/vn3.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/vn3.1/rose-meta.conf new file mode 100644 index 0000000000..782d746877 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-hydrology/vn3.1/rose-meta.conf @@ -0,0 +1,27 @@ +[namelist:jules_hydrology] +compulsory=true +ns=namelist/JULES Science Settings/jules_hydrology +sort-key=Section-A12g +title=Hydrology options +url=http://jules-lsm.github.io/latest/namelists/jules_hydrology.nml.html#namelist-JULES_HYDROLOGY + +[namelist:jules_hydrology=l_hydrology] +compulsory=true +description=Enable soil hydrology +!kind=default +sort-key=Panel-G01 +trigger=namelist:jules_hydrology=l_var_rainfrac: .true.; + =namelist:jules_hydrology=l_top: .true.; + =namelist:jules_hydrology=l_pdm: .true.; + =namelist:jules_hydrology=l_limit_gsoil: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::l_hydrology + +[namelist:jules_hydrology=l_var_rainfrac] +compulsory=true +description=Enable variable large scale and convective rain fractions + =SHOULD NOT BE USED IN STANDALONE - Please see online docs. +!kind=default +sort-key=Panel-G02 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::l_var_rainfrac diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/HEAD/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/HEAD/rose-meta.conf new file mode 100644 index 0000000000..1cb77755f3 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/HEAD/rose-meta.conf @@ -0,0 +1,121 @@ +[namelist:jules_nvegparm] +compulsory=true +description=Parameters required for each of the non-vegetated surface types. +ns=namelist/JULES Science Settings/jules_nvegparm +sort-key=Section-A12n +title=Non-vegetated surface parameters +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#namelist-JULES_NVEGPARM +widget[rose-config-edit]=cylc8_compat.PageArrayTable + +[namelist:jules_nvegparm=albsnc_nvg_io] +compulsory=true +description=Snow-covered albedo +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnc_nvg_io + +[namelist:jules_nvegparm=albsnf_nvg_io] +compulsory=true +description=Snow-free albedo +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=-1:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvg_io + +[namelist:jules_nvegparm=albsnf_nvgl_io] +compulsory=true +description=Lower limit on albsnf_nvg_io +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvgl_io + +[namelist:jules_nvegparm=albsnf_nvgu_io] +compulsory=true +description=Upper limit on albsnf_nvg_io +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvgu_io + +[namelist:jules_nvegparm=catch_nvg_io] +compulsory=true +description=Capacity for water (kg m-2) +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::catch_nvg_io + +[namelist:jules_nvegparm=ch_nvg_io] +compulsory=true +description=Heat capacity of this surface type (J K-1 m-2) +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::ch_nvg_io + +[namelist:jules_nvegparm=emis_nvg_io] +compulsory=true +description=Surface emissivity +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::emis_nvg_io + +[namelist:jules_nvegparm=gs_nvg_io] +compulsory=true +description=Surface conductance (m s-1) +fail-if=len(this) != namelist:jules_surface_types=nnvg +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::gs_nvg_io + +[namelist:jules_nvegparm=infil_nvg_io] +compulsory=true +description=Infiltration enhancement factor +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::infil_nvg_io + +[namelist:jules_nvegparm=vf_nvg_io] +compulsory=true +description=Fractional coverage of non-vegetation "canopy" +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::vf_nvg_io + +[namelist:jules_nvegparm=z0_nvg_io] +compulsory=true +description=Roughness length for momentum (m) +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::z0_nvg_io + +[namelist:jules_nvegparm=z0hm_nvg_io] +compulsory=true +description=Ratio of the roughness length for heat to the roughness length for momentum +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::z0hm_nvg_io diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn2.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn2.0/rose-meta.conf new file mode 100644 index 0000000000..50c75e8962 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn2.0/rose-meta.conf @@ -0,0 +1,121 @@ +[namelist:jules_nvegparm] +compulsory=true +description=Parameters required for each of the non-vegetated surface types. +ns=namelist/JULES Science Settings/jules_nvegparm +sort-key=Section-A12f +title=Non-vegetated surface parameters +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#namelist-JULES_NVEGPARM +widget[rose-config-edit]=rose.config_editor.pagewidget.table.PageArrayTable + +[namelist:jules_nvegparm=albsnc_nvg_io] +compulsory=true +description=Snow-covered albedo +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnc_nvg_io + +[namelist:jules_nvegparm=albsnf_nvg_io] +compulsory=true +description=Snow-free albedo +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=-1:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvg_io + +[namelist:jules_nvegparm=albsnf_nvgl_io] +compulsory=true +description=Lower limit on albsnf_nvg_io +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvgl_io + +[namelist:jules_nvegparm=albsnf_nvgu_io] +compulsory=true +description=Upper limit on albsnf_nvg_io +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvgu_io + +[namelist:jules_nvegparm=catch_nvg_io] +compulsory=true +description=Capacity for water (kg m-2) +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::catch_nvg_io + +[namelist:jules_nvegparm=ch_nvg_io] +compulsory=true +description=Heat capacity of this surface type (J K-1 m-2) +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::ch_nvg_io + +[namelist:jules_nvegparm=emis_nvg_io] +compulsory=true +description=Surface emissivity +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::emis_nvg_io + +[namelist:jules_nvegparm=gs_nvg_io] +compulsory=true +description=Surface conductance (m s-1) +fail-if=len(this) != namelist:jules_surface_types=nnvg +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::gs_nvg_io + +[namelist:jules_nvegparm=infil_nvg_io] +compulsory=true +description=Infiltration enhancement factor +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::infil_nvg_io + +[namelist:jules_nvegparm=vf_nvg_io] +compulsory=true +description=Fractional coverage of non-vegetation "canopy" +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::vf_nvg_io + +[namelist:jules_nvegparm=z0_nvg_io] +compulsory=true +description=Roughness length for momentum (m) +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::z0_nvg_io + +[namelist:jules_nvegparm=z0hm_nvg_io] +compulsory=true +description=Ratio of the roughness length for heat to the roughness length for momentum +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::z0hm_nvg_io diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn2.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn2.1/rose-meta.conf new file mode 100644 index 0000000000..50c75e8962 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn2.1/rose-meta.conf @@ -0,0 +1,121 @@ +[namelist:jules_nvegparm] +compulsory=true +description=Parameters required for each of the non-vegetated surface types. +ns=namelist/JULES Science Settings/jules_nvegparm +sort-key=Section-A12f +title=Non-vegetated surface parameters +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#namelist-JULES_NVEGPARM +widget[rose-config-edit]=rose.config_editor.pagewidget.table.PageArrayTable + +[namelist:jules_nvegparm=albsnc_nvg_io] +compulsory=true +description=Snow-covered albedo +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnc_nvg_io + +[namelist:jules_nvegparm=albsnf_nvg_io] +compulsory=true +description=Snow-free albedo +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=-1:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvg_io + +[namelist:jules_nvegparm=albsnf_nvgl_io] +compulsory=true +description=Lower limit on albsnf_nvg_io +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvgl_io + +[namelist:jules_nvegparm=albsnf_nvgu_io] +compulsory=true +description=Upper limit on albsnf_nvg_io +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvgu_io + +[namelist:jules_nvegparm=catch_nvg_io] +compulsory=true +description=Capacity for water (kg m-2) +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::catch_nvg_io + +[namelist:jules_nvegparm=ch_nvg_io] +compulsory=true +description=Heat capacity of this surface type (J K-1 m-2) +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::ch_nvg_io + +[namelist:jules_nvegparm=emis_nvg_io] +compulsory=true +description=Surface emissivity +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::emis_nvg_io + +[namelist:jules_nvegparm=gs_nvg_io] +compulsory=true +description=Surface conductance (m s-1) +fail-if=len(this) != namelist:jules_surface_types=nnvg +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::gs_nvg_io + +[namelist:jules_nvegparm=infil_nvg_io] +compulsory=true +description=Infiltration enhancement factor +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::infil_nvg_io + +[namelist:jules_nvegparm=vf_nvg_io] +compulsory=true +description=Fractional coverage of non-vegetation "canopy" +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::vf_nvg_io + +[namelist:jules_nvegparm=z0_nvg_io] +compulsory=true +description=Roughness length for momentum (m) +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::z0_nvg_io + +[namelist:jules_nvegparm=z0hm_nvg_io] +compulsory=true +description=Ratio of the roughness length for heat to the roughness length for momentum +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::z0hm_nvg_io diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn2.2/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn2.2/rose-meta.conf new file mode 100644 index 0000000000..1cb77755f3 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn2.2/rose-meta.conf @@ -0,0 +1,121 @@ +[namelist:jules_nvegparm] +compulsory=true +description=Parameters required for each of the non-vegetated surface types. +ns=namelist/JULES Science Settings/jules_nvegparm +sort-key=Section-A12n +title=Non-vegetated surface parameters +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#namelist-JULES_NVEGPARM +widget[rose-config-edit]=cylc8_compat.PageArrayTable + +[namelist:jules_nvegparm=albsnc_nvg_io] +compulsory=true +description=Snow-covered albedo +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnc_nvg_io + +[namelist:jules_nvegparm=albsnf_nvg_io] +compulsory=true +description=Snow-free albedo +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=-1:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvg_io + +[namelist:jules_nvegparm=albsnf_nvgl_io] +compulsory=true +description=Lower limit on albsnf_nvg_io +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvgl_io + +[namelist:jules_nvegparm=albsnf_nvgu_io] +compulsory=true +description=Upper limit on albsnf_nvg_io +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvgu_io + +[namelist:jules_nvegparm=catch_nvg_io] +compulsory=true +description=Capacity for water (kg m-2) +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::catch_nvg_io + +[namelist:jules_nvegparm=ch_nvg_io] +compulsory=true +description=Heat capacity of this surface type (J K-1 m-2) +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::ch_nvg_io + +[namelist:jules_nvegparm=emis_nvg_io] +compulsory=true +description=Surface emissivity +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::emis_nvg_io + +[namelist:jules_nvegparm=gs_nvg_io] +compulsory=true +description=Surface conductance (m s-1) +fail-if=len(this) != namelist:jules_surface_types=nnvg +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::gs_nvg_io + +[namelist:jules_nvegparm=infil_nvg_io] +compulsory=true +description=Infiltration enhancement factor +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::infil_nvg_io + +[namelist:jules_nvegparm=vf_nvg_io] +compulsory=true +description=Fractional coverage of non-vegetation "canopy" +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::vf_nvg_io + +[namelist:jules_nvegparm=z0_nvg_io] +compulsory=true +description=Roughness length for momentum (m) +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::z0_nvg_io + +[namelist:jules_nvegparm=z0hm_nvg_io] +compulsory=true +description=Ratio of the roughness length for heat to the roughness length for momentum +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::z0hm_nvg_io diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn3.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn3.0/rose-meta.conf new file mode 100644 index 0000000000..1cb77755f3 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn3.0/rose-meta.conf @@ -0,0 +1,121 @@ +[namelist:jules_nvegparm] +compulsory=true +description=Parameters required for each of the non-vegetated surface types. +ns=namelist/JULES Science Settings/jules_nvegparm +sort-key=Section-A12n +title=Non-vegetated surface parameters +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#namelist-JULES_NVEGPARM +widget[rose-config-edit]=cylc8_compat.PageArrayTable + +[namelist:jules_nvegparm=albsnc_nvg_io] +compulsory=true +description=Snow-covered albedo +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnc_nvg_io + +[namelist:jules_nvegparm=albsnf_nvg_io] +compulsory=true +description=Snow-free albedo +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=-1:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvg_io + +[namelist:jules_nvegparm=albsnf_nvgl_io] +compulsory=true +description=Lower limit on albsnf_nvg_io +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvgl_io + +[namelist:jules_nvegparm=albsnf_nvgu_io] +compulsory=true +description=Upper limit on albsnf_nvg_io +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvgu_io + +[namelist:jules_nvegparm=catch_nvg_io] +compulsory=true +description=Capacity for water (kg m-2) +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::catch_nvg_io + +[namelist:jules_nvegparm=ch_nvg_io] +compulsory=true +description=Heat capacity of this surface type (J K-1 m-2) +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::ch_nvg_io + +[namelist:jules_nvegparm=emis_nvg_io] +compulsory=true +description=Surface emissivity +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::emis_nvg_io + +[namelist:jules_nvegparm=gs_nvg_io] +compulsory=true +description=Surface conductance (m s-1) +fail-if=len(this) != namelist:jules_surface_types=nnvg +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::gs_nvg_io + +[namelist:jules_nvegparm=infil_nvg_io] +compulsory=true +description=Infiltration enhancement factor +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::infil_nvg_io + +[namelist:jules_nvegparm=vf_nvg_io] +compulsory=true +description=Fractional coverage of non-vegetation "canopy" +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::vf_nvg_io + +[namelist:jules_nvegparm=z0_nvg_io] +compulsory=true +description=Roughness length for momentum (m) +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::z0_nvg_io + +[namelist:jules_nvegparm=z0hm_nvg_io] +compulsory=true +description=Ratio of the roughness length for heat to the roughness length for momentum +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::z0hm_nvg_io diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn3.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn3.1/rose-meta.conf new file mode 100644 index 0000000000..1cb77755f3 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-nvegparm/vn3.1/rose-meta.conf @@ -0,0 +1,121 @@ +[namelist:jules_nvegparm] +compulsory=true +description=Parameters required for each of the non-vegetated surface types. +ns=namelist/JULES Science Settings/jules_nvegparm +sort-key=Section-A12n +title=Non-vegetated surface parameters +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#namelist-JULES_NVEGPARM +widget[rose-config-edit]=cylc8_compat.PageArrayTable + +[namelist:jules_nvegparm=albsnc_nvg_io] +compulsory=true +description=Snow-covered albedo +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnc_nvg_io + +[namelist:jules_nvegparm=albsnf_nvg_io] +compulsory=true +description=Snow-free albedo +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=-1:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvg_io + +[namelist:jules_nvegparm=albsnf_nvgl_io] +compulsory=true +description=Lower limit on albsnf_nvg_io +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvgl_io + +[namelist:jules_nvegparm=albsnf_nvgu_io] +compulsory=true +description=Upper limit on albsnf_nvg_io +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::albsnf_nvgu_io + +[namelist:jules_nvegparm=catch_nvg_io] +compulsory=true +description=Capacity for water (kg m-2) +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::catch_nvg_io + +[namelist:jules_nvegparm=ch_nvg_io] +compulsory=true +description=Heat capacity of this surface type (J K-1 m-2) +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::ch_nvg_io + +[namelist:jules_nvegparm=emis_nvg_io] +compulsory=true +description=Surface emissivity +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::emis_nvg_io + +[namelist:jules_nvegparm=gs_nvg_io] +compulsory=true +description=Surface conductance (m s-1) +fail-if=len(this) != namelist:jules_surface_types=nnvg +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::gs_nvg_io + +[namelist:jules_nvegparm=infil_nvg_io] +compulsory=true +description=Infiltration enhancement factor +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::infil_nvg_io + +[namelist:jules_nvegparm=vf_nvg_io] +compulsory=true +description=Fractional coverage of non-vegetation "canopy" +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::vf_nvg_io + +[namelist:jules_nvegparm=z0_nvg_io] +compulsory=true +description=Roughness length for momentum (m) +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::z0_nvg_io + +[namelist:jules_nvegparm=z0hm_nvg_io] +compulsory=true +description=Ratio of the roughness length for heat to the roughness length for momentum +fail-if=len(this) != namelist:jules_surface_types=nnvg +!kind=default +length=: +type=real +url=http://jules-lsm.github.io/latest/namelists/nveg_params.nml.html#JULES_NVEGPARM::z0hm_nvg_io diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/HEAD/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/HEAD/rose-meta.conf new file mode 100644 index 0000000000..c9486d05e9 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/HEAD/rose-meta.conf @@ -0,0 +1,167 @@ +[namelist:jules_pftparm] +compulsory=true +description=This section is organised into two panels: + = "Radiation parameters" contains parameters related to radiative transfer in vegetation, + = "Other parameters" contains everything else. +ns=namelist/JULES Science Settings/jules_pftparm +sort-key=Section-A12l +title=PFT parameters +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#namelist-JULES_PFTPARM +widget[rose-config-edit]=cylc8_compat.PageArrayTable + +[namelist:jules_pftparm=albsnc_max_io] +compulsory=true +description=Snow-covered albedo for large LAI +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::albsnc_max_io + +[namelist:jules_pftparm=alnir_io] +compulsory=true +description=NIR Leaf reflection coeff. + =Leaf reflection coefficient for Near Infra Red wavelengths > 690nm. +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alnir_io + +[namelist:jules_pftparm=alpar_io] +compulsory=true +description=VIS Leaf reflection coeff. + =Leaf reflection coefficient for wavelengths < 690nm (Photosyntehtically Active Radiation). +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alpar_io + +[namelist:jules_pftparm=catch0_io] +compulsory=true +description=Minimum canopy capacity (kg m-2) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::catch0_io + +[namelist:jules_pftparm=dcatch_dlai_io] +compulsory=true +description=Rate of change of canopy capacity with LAI (kg m-2) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::dcatch_dlai_io + +[namelist:jules_pftparm=fsmc_p0_io] +compulsory=true +description=PFT-dependent parameter governing the threshold at which the plant starts to experience water stress + =due to lack of water in the soil +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fsmc_p0_io + +[namelist:jules_pftparm=kext_io] +compulsory=true +description=Light extinction coefficient + =Used with Beers Law for light absorption through tile canopies +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +sort-key=Panel-HR02 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::kext_io + +[namelist:jules_pftparm=knl_io] +compulsory=true +description=Decay of nitrogen through the canopy for canopy radiation model 6 + =SHOULD NOT BE THE SAME AS KN! +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::knl_io + +[namelist:jules_pftparm=omega_io] +compulsory=true +description=VIS Leaf scattering coeff. + =Leaf scattering coefficient for wavelengths < 690nm (Photosyntehtically Active Radiation). +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omega_io + +[namelist:jules_pftparm=omnir_io] +compulsory=true +description=NIR Leaf scattering coeff. + =Leaf scattering coefficient for Near Infra Red wavelengths > 690nm. +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omnir_io + +[namelist:jules_pftparm=z0hm_pft_io] +compulsory=true +description=Ratio of the roughness length for heat to the roughness length for momentum +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::z0hm_pft_io + +[namelist:jules_pftparm=z0v_io] +compulsory=true +description=Specified vegetation roughness length for momentum (if l_spec_veg_z0) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::z0v_io + +# Dummy page to force sort order for pftparm other parameters +[namespace:pftparm_other] +description=Parameters not related to radiative transfer of vegetation. + =Related parameters are grouped together where appropriate. +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=02 + +# Dummy page to force sort order for pftparm radiation parameters +[namespace:pftparm_radiation] +description=Parameters related to radiative transfer of vegetation +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +sort-key=01 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/vn2.2/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/vn2.2/rose-meta.conf new file mode 100644 index 0000000000..c9486d05e9 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/vn2.2/rose-meta.conf @@ -0,0 +1,167 @@ +[namelist:jules_pftparm] +compulsory=true +description=This section is organised into two panels: + = "Radiation parameters" contains parameters related to radiative transfer in vegetation, + = "Other parameters" contains everything else. +ns=namelist/JULES Science Settings/jules_pftparm +sort-key=Section-A12l +title=PFT parameters +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#namelist-JULES_PFTPARM +widget[rose-config-edit]=cylc8_compat.PageArrayTable + +[namelist:jules_pftparm=albsnc_max_io] +compulsory=true +description=Snow-covered albedo for large LAI +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::albsnc_max_io + +[namelist:jules_pftparm=alnir_io] +compulsory=true +description=NIR Leaf reflection coeff. + =Leaf reflection coefficient for Near Infra Red wavelengths > 690nm. +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alnir_io + +[namelist:jules_pftparm=alpar_io] +compulsory=true +description=VIS Leaf reflection coeff. + =Leaf reflection coefficient for wavelengths < 690nm (Photosyntehtically Active Radiation). +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alpar_io + +[namelist:jules_pftparm=catch0_io] +compulsory=true +description=Minimum canopy capacity (kg m-2) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::catch0_io + +[namelist:jules_pftparm=dcatch_dlai_io] +compulsory=true +description=Rate of change of canopy capacity with LAI (kg m-2) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::dcatch_dlai_io + +[namelist:jules_pftparm=fsmc_p0_io] +compulsory=true +description=PFT-dependent parameter governing the threshold at which the plant starts to experience water stress + =due to lack of water in the soil +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fsmc_p0_io + +[namelist:jules_pftparm=kext_io] +compulsory=true +description=Light extinction coefficient + =Used with Beers Law for light absorption through tile canopies +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +sort-key=Panel-HR02 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::kext_io + +[namelist:jules_pftparm=knl_io] +compulsory=true +description=Decay of nitrogen through the canopy for canopy radiation model 6 + =SHOULD NOT BE THE SAME AS KN! +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::knl_io + +[namelist:jules_pftparm=omega_io] +compulsory=true +description=VIS Leaf scattering coeff. + =Leaf scattering coefficient for wavelengths < 690nm (Photosyntehtically Active Radiation). +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omega_io + +[namelist:jules_pftparm=omnir_io] +compulsory=true +description=NIR Leaf scattering coeff. + =Leaf scattering coefficient for Near Infra Red wavelengths > 690nm. +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omnir_io + +[namelist:jules_pftparm=z0hm_pft_io] +compulsory=true +description=Ratio of the roughness length for heat to the roughness length for momentum +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::z0hm_pft_io + +[namelist:jules_pftparm=z0v_io] +compulsory=true +description=Specified vegetation roughness length for momentum (if l_spec_veg_z0) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::z0v_io + +# Dummy page to force sort order for pftparm other parameters +[namespace:pftparm_other] +description=Parameters not related to radiative transfer of vegetation. + =Related parameters are grouped together where appropriate. +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=02 + +# Dummy page to force sort order for pftparm radiation parameters +[namespace:pftparm_radiation] +description=Parameters related to radiative transfer of vegetation +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +sort-key=01 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/vn3.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/vn3.0/rose-meta.conf new file mode 100644 index 0000000000..c9486d05e9 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/vn3.0/rose-meta.conf @@ -0,0 +1,167 @@ +[namelist:jules_pftparm] +compulsory=true +description=This section is organised into two panels: + = "Radiation parameters" contains parameters related to radiative transfer in vegetation, + = "Other parameters" contains everything else. +ns=namelist/JULES Science Settings/jules_pftparm +sort-key=Section-A12l +title=PFT parameters +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#namelist-JULES_PFTPARM +widget[rose-config-edit]=cylc8_compat.PageArrayTable + +[namelist:jules_pftparm=albsnc_max_io] +compulsory=true +description=Snow-covered albedo for large LAI +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::albsnc_max_io + +[namelist:jules_pftparm=alnir_io] +compulsory=true +description=NIR Leaf reflection coeff. + =Leaf reflection coefficient for Near Infra Red wavelengths > 690nm. +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alnir_io + +[namelist:jules_pftparm=alpar_io] +compulsory=true +description=VIS Leaf reflection coeff. + =Leaf reflection coefficient for wavelengths < 690nm (Photosyntehtically Active Radiation). +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alpar_io + +[namelist:jules_pftparm=catch0_io] +compulsory=true +description=Minimum canopy capacity (kg m-2) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::catch0_io + +[namelist:jules_pftparm=dcatch_dlai_io] +compulsory=true +description=Rate of change of canopy capacity with LAI (kg m-2) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::dcatch_dlai_io + +[namelist:jules_pftparm=fsmc_p0_io] +compulsory=true +description=PFT-dependent parameter governing the threshold at which the plant starts to experience water stress + =due to lack of water in the soil +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fsmc_p0_io + +[namelist:jules_pftparm=kext_io] +compulsory=true +description=Light extinction coefficient + =Used with Beers Law for light absorption through tile canopies +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +sort-key=Panel-HR02 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::kext_io + +[namelist:jules_pftparm=knl_io] +compulsory=true +description=Decay of nitrogen through the canopy for canopy radiation model 6 + =SHOULD NOT BE THE SAME AS KN! +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::knl_io + +[namelist:jules_pftparm=omega_io] +compulsory=true +description=VIS Leaf scattering coeff. + =Leaf scattering coefficient for wavelengths < 690nm (Photosyntehtically Active Radiation). +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omega_io + +[namelist:jules_pftparm=omnir_io] +compulsory=true +description=NIR Leaf scattering coeff. + =Leaf scattering coefficient for Near Infra Red wavelengths > 690nm. +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omnir_io + +[namelist:jules_pftparm=z0hm_pft_io] +compulsory=true +description=Ratio of the roughness length for heat to the roughness length for momentum +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::z0hm_pft_io + +[namelist:jules_pftparm=z0v_io] +compulsory=true +description=Specified vegetation roughness length for momentum (if l_spec_veg_z0) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::z0v_io + +# Dummy page to force sort order for pftparm other parameters +[namespace:pftparm_other] +description=Parameters not related to radiative transfer of vegetation. + =Related parameters are grouped together where appropriate. +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=02 + +# Dummy page to force sort order for pftparm radiation parameters +[namespace:pftparm_radiation] +description=Parameters related to radiative transfer of vegetation +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +sort-key=01 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/vn3.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/vn3.1/rose-meta.conf new file mode 100644 index 0000000000..c9486d05e9 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-pftparm/vn3.1/rose-meta.conf @@ -0,0 +1,167 @@ +[namelist:jules_pftparm] +compulsory=true +description=This section is organised into two panels: + = "Radiation parameters" contains parameters related to radiative transfer in vegetation, + = "Other parameters" contains everything else. +ns=namelist/JULES Science Settings/jules_pftparm +sort-key=Section-A12l +title=PFT parameters +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#namelist-JULES_PFTPARM +widget[rose-config-edit]=cylc8_compat.PageArrayTable + +[namelist:jules_pftparm=albsnc_max_io] +compulsory=true +description=Snow-covered albedo for large LAI +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::albsnc_max_io + +[namelist:jules_pftparm=alnir_io] +compulsory=true +description=NIR Leaf reflection coeff. + =Leaf reflection coefficient for Near Infra Red wavelengths > 690nm. +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alnir_io + +[namelist:jules_pftparm=alpar_io] +compulsory=true +description=VIS Leaf reflection coeff. + =Leaf reflection coefficient for wavelengths < 690nm (Photosyntehtically Active Radiation). +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alpar_io + +[namelist:jules_pftparm=catch0_io] +compulsory=true +description=Minimum canopy capacity (kg m-2) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::catch0_io + +[namelist:jules_pftparm=dcatch_dlai_io] +compulsory=true +description=Rate of change of canopy capacity with LAI (kg m-2) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::dcatch_dlai_io + +[namelist:jules_pftparm=fsmc_p0_io] +compulsory=true +description=PFT-dependent parameter governing the threshold at which the plant starts to experience water stress + =due to lack of water in the soil +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fsmc_p0_io + +[namelist:jules_pftparm=kext_io] +compulsory=true +description=Light extinction coefficient + =Used with Beers Law for light absorption through tile canopies +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +sort-key=Panel-HR02 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::kext_io + +[namelist:jules_pftparm=knl_io] +compulsory=true +description=Decay of nitrogen through the canopy for canopy radiation model 6 + =SHOULD NOT BE THE SAME AS KN! +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::knl_io + +[namelist:jules_pftparm=omega_io] +compulsory=true +description=VIS Leaf scattering coeff. + =Leaf scattering coefficient for wavelengths < 690nm (Photosyntehtically Active Radiation). +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omega_io + +[namelist:jules_pftparm=omnir_io] +compulsory=true +description=NIR Leaf scattering coeff. + =Leaf scattering coefficient for Near Infra Red wavelengths > 690nm. +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omnir_io + +[namelist:jules_pftparm=z0hm_pft_io] +compulsory=true +description=Ratio of the roughness length for heat to the roughness length for momentum +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::z0hm_pft_io + +[namelist:jules_pftparm=z0v_io] +compulsory=true +description=Specified vegetation roughness length for momentum (if l_spec_veg_z0) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=http://jules-lsm.github.io/latest/namelists/pft_params.nml.html#JULES_PFTPARM::z0v_io + +# Dummy page to force sort order for pftparm other parameters +[namespace:pftparm_other] +description=Parameters not related to radiative transfer of vegetation. + =Related parameters are grouped together where appropriate. +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=02 + +# Dummy page to force sort order for pftparm radiation parameters +[namespace:pftparm_radiation] +description=Parameters related to radiative transfer of vegetation +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +sort-key=01 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/HEAD/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/HEAD/rose-meta.conf new file mode 100644 index 0000000000..2e9f46c196 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/HEAD/rose-meta.conf @@ -0,0 +1,113 @@ +[namelist:jules_radiation] +compulsory=true +ns=namelist/JULES Science Settings/jules_radiation +sort-key=Section-A12d +title=Radiation options +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#namelist-JULES_RADIATION + +[namelist:jules_radiation=fixed_sea_albedo] +compulsory=true +description=If using i_sea_alb_method=4 or 5, the global value of albedo to use. +!kind=default +range=0.0:1.0 +sort-key=Panel-B05a +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::fixed_sea_albedo + +[namelist:jules_radiation=i_sea_alb_method] +compulsory=true +description=Choice of model for the Ocean Surface Albedo (open water, + =ice free) +!enumeration=true +sort-key=Panel-B05 +trigger=namelist:jules_radiation=l_sea_alb_var_chl: 3; + =namelist:jules_radiation=fixed_sea_albedo: 4,5; + =namelist:jules_radiation=l_spec_sea_alb: 1,2,3; +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::i_sea_alb_method +value-titles=Briegleb and Ramanathan 1982,Barker and Li 1995,Jin et al. 2011,Fixed global value,Fixed sea with sea-ice param +values=1,2,3,4,5 + +[namelist:jules_radiation=l_albedo_obs] +compulsory=true +description=Scale albedos of land-surface tiles to agree with obs +!kind=default +sort-key=Panel-B01 +trigger=namelist:jules_pftparm=albsnf_maxu_io: .true.; + =namelist:jules_pftparm=albsnf_maxl_io: .true.; + =namelist:jules_pftparm=alparu_io: .true.; + =namelist:jules_pftparm=alparl_io: .true.; + =namelist:jules_pftparm=alniru_io: .true.; + =namelist:jules_pftparm=alnirl_io: .true.; + =namelist:jules_pftparm=omegau_io: .true.; + =namelist:jules_pftparm=omegal_io: .true.; + =namelist:jules_pftparm=omniru_io: .true.; + =namelist:jules_pftparm=omnirl_io: .true.; + =namelist:jules_nvegparm=albsnf_nvgu_io: .true.; + =namelist:jules_nvegparm=albsnf_nvgl_io: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_albedo_obs + +[namelist:jules_radiation=l_hapke_soil] +compulsory=true +description=Switch to enable Hapke's model of soil reflectance to include a zenith-angle dependence, but without the opposition effect. +!kind=default +sort-key=Panel-B03 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_hapke_soil + +[namelist:jules_radiation=l_niso_direct] +compulsory=true +description=Use the full non-isotropic expression for direct scattering in plant canopies. +!kind=default +sort-key=Panel-B02a1 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_niso_direct + +[namelist:jules_radiation=l_partition_albsoil] +compulsory=true +description=Switch to apply a spectral partitioning of the broad-band soil albedo. +!kind=default +sort-key=Panel-B04 +trigger=namelist:jules_radiation=ratio_albsoil: .true.; + =namelist:jules_radiation=swdn_frac_albsoil: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_partition_albsoil + +[namelist:jules_radiation=l_sea_alb_var_chl] +compulsory=true +description=Use spatially varying chlorophyll content to calculate the open sea albedos + =NOT AVAILABLE TO STANDALONE +help=The Jin et al. parameterisation of open sea albedo includes chlorophyll content. This can either be: + =FALSE: Held constant at 0.5 mg m-3, + =or, + =TRUE: Input as an ancillary field. +!kind=default +sort-key=Panel-B05b +type=logical + +[namelist:jules_radiation=l_spec_alb_bs] +compulsory=true +description=Use a single value for both the direct and diffuse beams +!kind=default +sort-key=Panel-B02a +trigger=namelist:jules_radiation=l_niso_direct: .false.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_spec_alb_bs + +[namelist:jules_radiation=ratio_albsoil] +compulsory=true +description=Ratio of the NIR to the VIS albedo of bare soil +!kind=default +range=1.0:10.0 +sort-key=Panel-B04a +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::ratio_albsoil + +[namelist:jules_radiation=swdn_frac_albsoil] +compulsory=true +description=The fraction of the total downward SW radiation assumed to be in the NIR part of the spectrum when partitioning the broad-band soil albedo. +!kind=default +range=0.0:1.0 +sort-key=Panel-B04b +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::swdn_frac_albsoil diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn2.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn2.0/rose-meta.conf new file mode 100644 index 0000000000..b85e12b626 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn2.0/rose-meta.conf @@ -0,0 +1,51 @@ +[namelist:jules_radiation] +compulsory=true +ns=namelist/JULES Science Settings/jules_radiation +sort-key=Section-A12b +title=Radiation options +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#namelist-JULES_RADIATION + +[namelist:jules_radiation=fixed_sea_albedo] +compulsory=true +description=If using i_sea_alb_method=4 or 5, the global value of albedo to use. +!kind=default +range=0.0:1.0 +sort-key=Panel-B05a +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::fixed_sea_albedo + +[namelist:jules_radiation=l_hapke_soil] +compulsory=true +description=Switch to enable Hapke's model of soil reflectance to include a zenith-angle dependence, but without the opposition effect. +!kind=default +sort-key=Panel-B03 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_hapke_soil + +[namelist:jules_radiation=l_partition_albsoil] +compulsory=true +description=Switch to apply a spectral partitioning of the broad-band soil albedo. +!kind=default +sort-key=Panel-B04 +trigger=namelist:jules_radiation=ratio_albsoil: .true.; + =namelist:jules_radiation=swdn_frac_albsoil: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_partition_albsoil + +[namelist:jules_radiation=ratio_albsoil] +compulsory=true +description=Ratio of the NIR to the VIS albedo of bare soil +!kind=default +range=1.0:10.0 +sort-key=Panel-B04a +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::ratio_albsoil + +[namelist:jules_radiation=swdn_frac_albsoil] +compulsory=true +description=The fraction of the total downward SW radiation assumed to be in the NIR part of the spectrum when partitioning the broad-band soil albedo. +!kind=default +range=0.0:1.0 +sort-key=Panel-B04b +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::swdn_frac_albsoil diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn2.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn2.1/rose-meta.conf new file mode 100644 index 0000000000..b85e12b626 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn2.1/rose-meta.conf @@ -0,0 +1,51 @@ +[namelist:jules_radiation] +compulsory=true +ns=namelist/JULES Science Settings/jules_radiation +sort-key=Section-A12b +title=Radiation options +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#namelist-JULES_RADIATION + +[namelist:jules_radiation=fixed_sea_albedo] +compulsory=true +description=If using i_sea_alb_method=4 or 5, the global value of albedo to use. +!kind=default +range=0.0:1.0 +sort-key=Panel-B05a +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::fixed_sea_albedo + +[namelist:jules_radiation=l_hapke_soil] +compulsory=true +description=Switch to enable Hapke's model of soil reflectance to include a zenith-angle dependence, but without the opposition effect. +!kind=default +sort-key=Panel-B03 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_hapke_soil + +[namelist:jules_radiation=l_partition_albsoil] +compulsory=true +description=Switch to apply a spectral partitioning of the broad-band soil albedo. +!kind=default +sort-key=Panel-B04 +trigger=namelist:jules_radiation=ratio_albsoil: .true.; + =namelist:jules_radiation=swdn_frac_albsoil: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_partition_albsoil + +[namelist:jules_radiation=ratio_albsoil] +compulsory=true +description=Ratio of the NIR to the VIS albedo of bare soil +!kind=default +range=1.0:10.0 +sort-key=Panel-B04a +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::ratio_albsoil + +[namelist:jules_radiation=swdn_frac_albsoil] +compulsory=true +description=The fraction of the total downward SW radiation assumed to be in the NIR part of the spectrum when partitioning the broad-band soil albedo. +!kind=default +range=0.0:1.0 +sort-key=Panel-B04b +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::swdn_frac_albsoil diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn2.2/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn2.2/rose-meta.conf new file mode 100644 index 0000000000..2e9f46c196 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn2.2/rose-meta.conf @@ -0,0 +1,113 @@ +[namelist:jules_radiation] +compulsory=true +ns=namelist/JULES Science Settings/jules_radiation +sort-key=Section-A12d +title=Radiation options +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#namelist-JULES_RADIATION + +[namelist:jules_radiation=fixed_sea_albedo] +compulsory=true +description=If using i_sea_alb_method=4 or 5, the global value of albedo to use. +!kind=default +range=0.0:1.0 +sort-key=Panel-B05a +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::fixed_sea_albedo + +[namelist:jules_radiation=i_sea_alb_method] +compulsory=true +description=Choice of model for the Ocean Surface Albedo (open water, + =ice free) +!enumeration=true +sort-key=Panel-B05 +trigger=namelist:jules_radiation=l_sea_alb_var_chl: 3; + =namelist:jules_radiation=fixed_sea_albedo: 4,5; + =namelist:jules_radiation=l_spec_sea_alb: 1,2,3; +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::i_sea_alb_method +value-titles=Briegleb and Ramanathan 1982,Barker and Li 1995,Jin et al. 2011,Fixed global value,Fixed sea with sea-ice param +values=1,2,3,4,5 + +[namelist:jules_radiation=l_albedo_obs] +compulsory=true +description=Scale albedos of land-surface tiles to agree with obs +!kind=default +sort-key=Panel-B01 +trigger=namelist:jules_pftparm=albsnf_maxu_io: .true.; + =namelist:jules_pftparm=albsnf_maxl_io: .true.; + =namelist:jules_pftparm=alparu_io: .true.; + =namelist:jules_pftparm=alparl_io: .true.; + =namelist:jules_pftparm=alniru_io: .true.; + =namelist:jules_pftparm=alnirl_io: .true.; + =namelist:jules_pftparm=omegau_io: .true.; + =namelist:jules_pftparm=omegal_io: .true.; + =namelist:jules_pftparm=omniru_io: .true.; + =namelist:jules_pftparm=omnirl_io: .true.; + =namelist:jules_nvegparm=albsnf_nvgu_io: .true.; + =namelist:jules_nvegparm=albsnf_nvgl_io: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_albedo_obs + +[namelist:jules_radiation=l_hapke_soil] +compulsory=true +description=Switch to enable Hapke's model of soil reflectance to include a zenith-angle dependence, but without the opposition effect. +!kind=default +sort-key=Panel-B03 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_hapke_soil + +[namelist:jules_radiation=l_niso_direct] +compulsory=true +description=Use the full non-isotropic expression for direct scattering in plant canopies. +!kind=default +sort-key=Panel-B02a1 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_niso_direct + +[namelist:jules_radiation=l_partition_albsoil] +compulsory=true +description=Switch to apply a spectral partitioning of the broad-band soil albedo. +!kind=default +sort-key=Panel-B04 +trigger=namelist:jules_radiation=ratio_albsoil: .true.; + =namelist:jules_radiation=swdn_frac_albsoil: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_partition_albsoil + +[namelist:jules_radiation=l_sea_alb_var_chl] +compulsory=true +description=Use spatially varying chlorophyll content to calculate the open sea albedos + =NOT AVAILABLE TO STANDALONE +help=The Jin et al. parameterisation of open sea albedo includes chlorophyll content. This can either be: + =FALSE: Held constant at 0.5 mg m-3, + =or, + =TRUE: Input as an ancillary field. +!kind=default +sort-key=Panel-B05b +type=logical + +[namelist:jules_radiation=l_spec_alb_bs] +compulsory=true +description=Use a single value for both the direct and diffuse beams +!kind=default +sort-key=Panel-B02a +trigger=namelist:jules_radiation=l_niso_direct: .false.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_spec_alb_bs + +[namelist:jules_radiation=ratio_albsoil] +compulsory=true +description=Ratio of the NIR to the VIS albedo of bare soil +!kind=default +range=1.0:10.0 +sort-key=Panel-B04a +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::ratio_albsoil + +[namelist:jules_radiation=swdn_frac_albsoil] +compulsory=true +description=The fraction of the total downward SW radiation assumed to be in the NIR part of the spectrum when partitioning the broad-band soil albedo. +!kind=default +range=0.0:1.0 +sort-key=Panel-B04b +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::swdn_frac_albsoil diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn3.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn3.0/rose-meta.conf new file mode 100644 index 0000000000..2e9f46c196 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn3.0/rose-meta.conf @@ -0,0 +1,113 @@ +[namelist:jules_radiation] +compulsory=true +ns=namelist/JULES Science Settings/jules_radiation +sort-key=Section-A12d +title=Radiation options +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#namelist-JULES_RADIATION + +[namelist:jules_radiation=fixed_sea_albedo] +compulsory=true +description=If using i_sea_alb_method=4 or 5, the global value of albedo to use. +!kind=default +range=0.0:1.0 +sort-key=Panel-B05a +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::fixed_sea_albedo + +[namelist:jules_radiation=i_sea_alb_method] +compulsory=true +description=Choice of model for the Ocean Surface Albedo (open water, + =ice free) +!enumeration=true +sort-key=Panel-B05 +trigger=namelist:jules_radiation=l_sea_alb_var_chl: 3; + =namelist:jules_radiation=fixed_sea_albedo: 4,5; + =namelist:jules_radiation=l_spec_sea_alb: 1,2,3; +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::i_sea_alb_method +value-titles=Briegleb and Ramanathan 1982,Barker and Li 1995,Jin et al. 2011,Fixed global value,Fixed sea with sea-ice param +values=1,2,3,4,5 + +[namelist:jules_radiation=l_albedo_obs] +compulsory=true +description=Scale albedos of land-surface tiles to agree with obs +!kind=default +sort-key=Panel-B01 +trigger=namelist:jules_pftparm=albsnf_maxu_io: .true.; + =namelist:jules_pftparm=albsnf_maxl_io: .true.; + =namelist:jules_pftparm=alparu_io: .true.; + =namelist:jules_pftparm=alparl_io: .true.; + =namelist:jules_pftparm=alniru_io: .true.; + =namelist:jules_pftparm=alnirl_io: .true.; + =namelist:jules_pftparm=omegau_io: .true.; + =namelist:jules_pftparm=omegal_io: .true.; + =namelist:jules_pftparm=omniru_io: .true.; + =namelist:jules_pftparm=omnirl_io: .true.; + =namelist:jules_nvegparm=albsnf_nvgu_io: .true.; + =namelist:jules_nvegparm=albsnf_nvgl_io: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_albedo_obs + +[namelist:jules_radiation=l_hapke_soil] +compulsory=true +description=Switch to enable Hapke's model of soil reflectance to include a zenith-angle dependence, but without the opposition effect. +!kind=default +sort-key=Panel-B03 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_hapke_soil + +[namelist:jules_radiation=l_niso_direct] +compulsory=true +description=Use the full non-isotropic expression for direct scattering in plant canopies. +!kind=default +sort-key=Panel-B02a1 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_niso_direct + +[namelist:jules_radiation=l_partition_albsoil] +compulsory=true +description=Switch to apply a spectral partitioning of the broad-band soil albedo. +!kind=default +sort-key=Panel-B04 +trigger=namelist:jules_radiation=ratio_albsoil: .true.; + =namelist:jules_radiation=swdn_frac_albsoil: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_partition_albsoil + +[namelist:jules_radiation=l_sea_alb_var_chl] +compulsory=true +description=Use spatially varying chlorophyll content to calculate the open sea albedos + =NOT AVAILABLE TO STANDALONE +help=The Jin et al. parameterisation of open sea albedo includes chlorophyll content. This can either be: + =FALSE: Held constant at 0.5 mg m-3, + =or, + =TRUE: Input as an ancillary field. +!kind=default +sort-key=Panel-B05b +type=logical + +[namelist:jules_radiation=l_spec_alb_bs] +compulsory=true +description=Use a single value for both the direct and diffuse beams +!kind=default +sort-key=Panel-B02a +trigger=namelist:jules_radiation=l_niso_direct: .false.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_spec_alb_bs + +[namelist:jules_radiation=ratio_albsoil] +compulsory=true +description=Ratio of the NIR to the VIS albedo of bare soil +!kind=default +range=1.0:10.0 +sort-key=Panel-B04a +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::ratio_albsoil + +[namelist:jules_radiation=swdn_frac_albsoil] +compulsory=true +description=The fraction of the total downward SW radiation assumed to be in the NIR part of the spectrum when partitioning the broad-band soil albedo. +!kind=default +range=0.0:1.0 +sort-key=Panel-B04b +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::swdn_frac_albsoil diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn3.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn3.1/rose-meta.conf new file mode 100644 index 0000000000..2e9f46c196 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-radiation/vn3.1/rose-meta.conf @@ -0,0 +1,113 @@ +[namelist:jules_radiation] +compulsory=true +ns=namelist/JULES Science Settings/jules_radiation +sort-key=Section-A12d +title=Radiation options +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#namelist-JULES_RADIATION + +[namelist:jules_radiation=fixed_sea_albedo] +compulsory=true +description=If using i_sea_alb_method=4 or 5, the global value of albedo to use. +!kind=default +range=0.0:1.0 +sort-key=Panel-B05a +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::fixed_sea_albedo + +[namelist:jules_radiation=i_sea_alb_method] +compulsory=true +description=Choice of model for the Ocean Surface Albedo (open water, + =ice free) +!enumeration=true +sort-key=Panel-B05 +trigger=namelist:jules_radiation=l_sea_alb_var_chl: 3; + =namelist:jules_radiation=fixed_sea_albedo: 4,5; + =namelist:jules_radiation=l_spec_sea_alb: 1,2,3; +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::i_sea_alb_method +value-titles=Briegleb and Ramanathan 1982,Barker and Li 1995,Jin et al. 2011,Fixed global value,Fixed sea with sea-ice param +values=1,2,3,4,5 + +[namelist:jules_radiation=l_albedo_obs] +compulsory=true +description=Scale albedos of land-surface tiles to agree with obs +!kind=default +sort-key=Panel-B01 +trigger=namelist:jules_pftparm=albsnf_maxu_io: .true.; + =namelist:jules_pftparm=albsnf_maxl_io: .true.; + =namelist:jules_pftparm=alparu_io: .true.; + =namelist:jules_pftparm=alparl_io: .true.; + =namelist:jules_pftparm=alniru_io: .true.; + =namelist:jules_pftparm=alnirl_io: .true.; + =namelist:jules_pftparm=omegau_io: .true.; + =namelist:jules_pftparm=omegal_io: .true.; + =namelist:jules_pftparm=omniru_io: .true.; + =namelist:jules_pftparm=omnirl_io: .true.; + =namelist:jules_nvegparm=albsnf_nvgu_io: .true.; + =namelist:jules_nvegparm=albsnf_nvgl_io: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_albedo_obs + +[namelist:jules_radiation=l_hapke_soil] +compulsory=true +description=Switch to enable Hapke's model of soil reflectance to include a zenith-angle dependence, but without the opposition effect. +!kind=default +sort-key=Panel-B03 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_hapke_soil + +[namelist:jules_radiation=l_niso_direct] +compulsory=true +description=Use the full non-isotropic expression for direct scattering in plant canopies. +!kind=default +sort-key=Panel-B02a1 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_niso_direct + +[namelist:jules_radiation=l_partition_albsoil] +compulsory=true +description=Switch to apply a spectral partitioning of the broad-band soil albedo. +!kind=default +sort-key=Panel-B04 +trigger=namelist:jules_radiation=ratio_albsoil: .true.; + =namelist:jules_radiation=swdn_frac_albsoil: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_partition_albsoil + +[namelist:jules_radiation=l_sea_alb_var_chl] +compulsory=true +description=Use spatially varying chlorophyll content to calculate the open sea albedos + =NOT AVAILABLE TO STANDALONE +help=The Jin et al. parameterisation of open sea albedo includes chlorophyll content. This can either be: + =FALSE: Held constant at 0.5 mg m-3, + =or, + =TRUE: Input as an ancillary field. +!kind=default +sort-key=Panel-B05b +type=logical + +[namelist:jules_radiation=l_spec_alb_bs] +compulsory=true +description=Use a single value for both the direct and diffuse beams +!kind=default +sort-key=Panel-B02a +trigger=namelist:jules_radiation=l_niso_direct: .false.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_spec_alb_bs + +[namelist:jules_radiation=ratio_albsoil] +compulsory=true +description=Ratio of the NIR to the VIS albedo of bare soil +!kind=default +range=1.0:10.0 +sort-key=Panel-B04a +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::ratio_albsoil + +[namelist:jules_radiation=swdn_frac_albsoil] +compulsory=true +description=The fraction of the total downward SW radiation assumed to be in the NIR part of the spectrum when partitioning the broad-band soil albedo. +!kind=default +range=0.0:1.0 +sort-key=Panel-B04b +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::swdn_frac_albsoil diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/HEAD/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/HEAD/rose-meta.conf new file mode 100644 index 0000000000..8f6938c9e4 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/HEAD/rose-meta.conf @@ -0,0 +1,245 @@ +[namelist:jules_sea_seaice] +compulsory=true +ns=namelist/JULES Science Settings/jules_sea_seaice +sort-key=Section-A12i +title=Sea and sea-ice options + +[namelist:jules_sea_seaice=alpham] +compulsory=true +description=Original HadGEM sea ice albedo scheme: Albedo of sea-ice at + =melting point (TM, if .not.l_ssice_albedo), + =or albedo of snow on sea-ice at melting point (TM, if + =l_ssice_albedo) ("M" for "melting") +!kind=default +range=0:1 +sort-key=Panel-C01 +type=real + +[namelist:jules_sea_seaice=amip_ice_thick] +compulsory=true +description=Calculate ice thickness from ice fraction +!kind=default +sort-key=Panel-C01 +type=logical + +[namelist:jules_sea_seaice=beta_evap] +compulsory=true +description=Efficiency of evaporation from sea-surface +help=This parameter controls the efficiency with which water can evaporate from a sea-surface. + = The default value is 1.0, moisture availability is effectively unrestricted. + = However, lower values can be useful for idealised modelling, + = restricting the evaporation rate. + = For example, a value of 0.0 would result in no evaporation. +!kind=default +range=0.0:1.0 +sort-key=Panel-C05 +type=real + +[namelist:jules_sea_seaice=buddy_sea] +compulsory=true +description=Use neighbouring sea point wind-speeds in coastal grid points +!enumeration=true +!kind=default +sort-key=Panel-C01a +value-titles=Off,On +values='Off','On' + +[namelist:jules_sea_seaice=cdn_hw_sea] +compulsory=true +description=Neutral drag coefficient over the sea at high wind speeds. +!kind=default +sort-key=Panel-C06a +type=real + +[namelist:jules_sea_seaice=cdn_max_sea] +compulsory=true +description=Maximum value of the neutral drag coefficient over open sea. +!kind=default +sort-key=Panel-C06b +type=real + +[namelist:jules_sea_seaice=dtice] +compulsory=true +description=Original HadGEM sea ice albedo scheme: Temperature range in which + =albedo of sea-ice (if .not.l_ssice_albedo), + =or of snow on sea-ice (if l_ssice_albedo), + =varies between its limits (recommended range 5-10K) +!kind=default +range=0.1:50 +sort-key=Panel-C02 +type=real + +[namelist:jules_sea_seaice=emis_sea] +compulsory=true +description=Emissivity of open sea +!kind=default +sort-key=Panel-C03 +type=real + +[namelist:jules_sea_seaice=emis_sice] +compulsory=true +description=Emissivity of sea-ice +!kind=default +sort-key=Panel-C04 +type=real + +[namelist:jules_sea_seaice=hcap_sea] +description=Heat capacity of the slab ocean (J K-1 m-2) +!kind=default +range=0.0: +sort-key=Panel-C14a +type=real + +[namelist:jules_sea_seaice=i_high_wind_drag] +compulsory=true +description=Option to impose a special treatment of drag at high wind speeds. +!enumeration=true +sort-key=Panel-C06 +trigger=namelist:jules_sea_seaice=cdn_hw_sea: 'reduced_v1'; + =namelist:jules_sea_seaice=cdn_max_sea: 'limited','reduced_v1'; + =namelist:jules_sea_seaice=u_cdn_hw: 'reduced_v1'; + =namelist:jules_sea_seaice=u_cdn_max: 'reduced_v1'; +value-titles=No special treatment of drag at high winds, + =The drag at high winds is capped, + =The drag at high winds is reduced over a range of speeds +values='null','limited','reduced_v1' + +[namelist:jules_sea_seaice=iseasurfalg] +compulsory=true +description=Algorithm for surface exchange over the sea +!enumeration=true +help=The most basic option for surface transfer at the sea surface + =consists of a specification of Charnocks coefficient for the + =momentum roughness length, including the aerodynamically smooth + =contribution in light winds, and a fixed thermal roughness length. + =Surface divergence theory allows for a variable thermal roughness + =length that follows the aerodynamicall smooth limit in light winds + =and decreases in stronger winds, giving a slower increase in the + =exchange coefficient for moisture as the wind rises. Historically, + =roughness lengths that depend on the friction velocity have not + =been iterated within the calculation of the Obukhov length, though + =this is more consistent: an iterative option is therefore provided. + =The COARE algorithm is based on a range of observations and exists + =in various forms. It features a dependence of Charnocks coefficient + =on the wind speed and a dependence of the thermal roughness length + =on the roughness Reynolds number. Extra parameters allow different + =versions of the algorithm to be used. +sort-key=Panel-C09 +trigger=namelist:jules_sea_seaice=z0m_specified: 'specified_roughness'; + =namelist:jules_sea_seaice=z0h_specified: 'specified_roughness'; +value-titles="Fixed values of roughness length for momentum and heat", + ="Fixed value of Charnock's coefficient with thermal + =roughness from surface divergence theory (non-iterative)", + ="Roughness lengths follow functional forms of the COARE + =algorithm" +values='specified_roughness','surf_div','coare' + +[namelist:jules_sea_seaice=kappa_seasurf] +compulsory=false +description=Thermal conductivity of sea-water (W / m / K) +!kind=default +sort-key=Panel-C11 +type=real + +[namelist:jules_sea_seaice=kappai] +compulsory=false +description=Thermal conductivity of sea-ice (W / m / K) +!kind=default +sort-key=Panel-C12 +type=real + +[namelist:jules_sea_seaice=kappai_snow] +compulsory=false +description=Thermal conductivity of snow on zero layer sea-ice (W / m / K) +!kind=default +sort-key=Panel-C13 +type=real + +[namelist:jules_sea_seaice=l_10m_neut] +compulsory=true +description=Logical for using neutral 10m wind speed to calculate the Charnock coefficient for sea points +!kind=default +sort-key=Panel-C08 +type=logical + +[namelist:jules_sea_seaice=l_iceformdrag_lupkes] +compulsory=true +description=Switch for diagnostic form drag following Lupkes et al. (2012) + =and Lupkes & Gryanik (2015) +!kind=default +sort-key=Panel-C07 +trigger=namelist:jules_sea_seaice=l_stability_lupkes: .true.; +type=logical + +[namelist:jules_sea_seaice=l_sice_heatflux] +compulsory=true +description=Do semi-implicit update of ti for sea-ice +!kind=default +sort-key=Panel-C10 +type=logical + +[namelist:jules_sea_seaice=l_stability_lupkes] +compulsory=true +description=Switch to include the stability dependence in the parametrization + =of ice form drag +!kind=default +sort-key=Panel-C07a +type=logical + +[namelist:jules_sea_seaice=l_use_dtstar_sea] +compulsory=true +description=Update the sea-surface temperature assuming a slab ocean with + = heat capacity given by namelist:jules_sea_seaice=hcap_sea +!kind=default +sort-key=Panel-C14 +trigger=namelist:jules_sea_seaice=hcap_sea: .true.; +type=logical + +[namelist:jules_sea_seaice=nice] +compulsory=true +description=Number of sea ice categories +help=The number of sea ice categories. This is normally 1 unless the model is + = coupled to a sea ice model when this is normally 5. This namelist + = entry is used to populate the nice variable in + = jules_control_init_mod.F90. All other subroutines should load + = nice from jules_control_init_mod and not from the surface + = namelist. +!kind=default +range=1:99 +sort-key=Panel-C00a +type=integer + +[namelist:jules_sea_seaice=u_cdn_hw] +compulsory=true +description=Neutral wind speed where the drag attains the high wind value. +!kind=default +sort-key=Panel-C06c +type=real + +[namelist:jules_sea_seaice=u_cdn_max] +compulsory=true +description=Neutral wind speed where the drag begins to be reduced from the maximum. +!kind=default +sort-key=Panel-C06d +type=real + +[namelist:jules_sea_seaice=z0h_specified] +compulsory=true +description=Specified roughness length for scalars [m] +fail-if=this < 0 +help=Specified value held fixed throughout the run used for surface exchange + =of scalar fields such as heat and moisture +!kind=default +range=0.0:100.0 +sort-key=Panel-C09b +type=real + +[namelist:jules_sea_seaice=z0m_specified] +compulsory=true +description=Specified roughness length for momentum [m] +fail-if=this < 0 +help=Specified value held fixed throughout the run +!kind=default +range=0.0:100.0 +sort-key=Panel-C09a +type=real diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/vn2.2/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/vn2.2/rose-meta.conf new file mode 100644 index 0000000000..8f6938c9e4 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/vn2.2/rose-meta.conf @@ -0,0 +1,245 @@ +[namelist:jules_sea_seaice] +compulsory=true +ns=namelist/JULES Science Settings/jules_sea_seaice +sort-key=Section-A12i +title=Sea and sea-ice options + +[namelist:jules_sea_seaice=alpham] +compulsory=true +description=Original HadGEM sea ice albedo scheme: Albedo of sea-ice at + =melting point (TM, if .not.l_ssice_albedo), + =or albedo of snow on sea-ice at melting point (TM, if + =l_ssice_albedo) ("M" for "melting") +!kind=default +range=0:1 +sort-key=Panel-C01 +type=real + +[namelist:jules_sea_seaice=amip_ice_thick] +compulsory=true +description=Calculate ice thickness from ice fraction +!kind=default +sort-key=Panel-C01 +type=logical + +[namelist:jules_sea_seaice=beta_evap] +compulsory=true +description=Efficiency of evaporation from sea-surface +help=This parameter controls the efficiency with which water can evaporate from a sea-surface. + = The default value is 1.0, moisture availability is effectively unrestricted. + = However, lower values can be useful for idealised modelling, + = restricting the evaporation rate. + = For example, a value of 0.0 would result in no evaporation. +!kind=default +range=0.0:1.0 +sort-key=Panel-C05 +type=real + +[namelist:jules_sea_seaice=buddy_sea] +compulsory=true +description=Use neighbouring sea point wind-speeds in coastal grid points +!enumeration=true +!kind=default +sort-key=Panel-C01a +value-titles=Off,On +values='Off','On' + +[namelist:jules_sea_seaice=cdn_hw_sea] +compulsory=true +description=Neutral drag coefficient over the sea at high wind speeds. +!kind=default +sort-key=Panel-C06a +type=real + +[namelist:jules_sea_seaice=cdn_max_sea] +compulsory=true +description=Maximum value of the neutral drag coefficient over open sea. +!kind=default +sort-key=Panel-C06b +type=real + +[namelist:jules_sea_seaice=dtice] +compulsory=true +description=Original HadGEM sea ice albedo scheme: Temperature range in which + =albedo of sea-ice (if .not.l_ssice_albedo), + =or of snow on sea-ice (if l_ssice_albedo), + =varies between its limits (recommended range 5-10K) +!kind=default +range=0.1:50 +sort-key=Panel-C02 +type=real + +[namelist:jules_sea_seaice=emis_sea] +compulsory=true +description=Emissivity of open sea +!kind=default +sort-key=Panel-C03 +type=real + +[namelist:jules_sea_seaice=emis_sice] +compulsory=true +description=Emissivity of sea-ice +!kind=default +sort-key=Panel-C04 +type=real + +[namelist:jules_sea_seaice=hcap_sea] +description=Heat capacity of the slab ocean (J K-1 m-2) +!kind=default +range=0.0: +sort-key=Panel-C14a +type=real + +[namelist:jules_sea_seaice=i_high_wind_drag] +compulsory=true +description=Option to impose a special treatment of drag at high wind speeds. +!enumeration=true +sort-key=Panel-C06 +trigger=namelist:jules_sea_seaice=cdn_hw_sea: 'reduced_v1'; + =namelist:jules_sea_seaice=cdn_max_sea: 'limited','reduced_v1'; + =namelist:jules_sea_seaice=u_cdn_hw: 'reduced_v1'; + =namelist:jules_sea_seaice=u_cdn_max: 'reduced_v1'; +value-titles=No special treatment of drag at high winds, + =The drag at high winds is capped, + =The drag at high winds is reduced over a range of speeds +values='null','limited','reduced_v1' + +[namelist:jules_sea_seaice=iseasurfalg] +compulsory=true +description=Algorithm for surface exchange over the sea +!enumeration=true +help=The most basic option for surface transfer at the sea surface + =consists of a specification of Charnocks coefficient for the + =momentum roughness length, including the aerodynamically smooth + =contribution in light winds, and a fixed thermal roughness length. + =Surface divergence theory allows for a variable thermal roughness + =length that follows the aerodynamicall smooth limit in light winds + =and decreases in stronger winds, giving a slower increase in the + =exchange coefficient for moisture as the wind rises. Historically, + =roughness lengths that depend on the friction velocity have not + =been iterated within the calculation of the Obukhov length, though + =this is more consistent: an iterative option is therefore provided. + =The COARE algorithm is based on a range of observations and exists + =in various forms. It features a dependence of Charnocks coefficient + =on the wind speed and a dependence of the thermal roughness length + =on the roughness Reynolds number. Extra parameters allow different + =versions of the algorithm to be used. +sort-key=Panel-C09 +trigger=namelist:jules_sea_seaice=z0m_specified: 'specified_roughness'; + =namelist:jules_sea_seaice=z0h_specified: 'specified_roughness'; +value-titles="Fixed values of roughness length for momentum and heat", + ="Fixed value of Charnock's coefficient with thermal + =roughness from surface divergence theory (non-iterative)", + ="Roughness lengths follow functional forms of the COARE + =algorithm" +values='specified_roughness','surf_div','coare' + +[namelist:jules_sea_seaice=kappa_seasurf] +compulsory=false +description=Thermal conductivity of sea-water (W / m / K) +!kind=default +sort-key=Panel-C11 +type=real + +[namelist:jules_sea_seaice=kappai] +compulsory=false +description=Thermal conductivity of sea-ice (W / m / K) +!kind=default +sort-key=Panel-C12 +type=real + +[namelist:jules_sea_seaice=kappai_snow] +compulsory=false +description=Thermal conductivity of snow on zero layer sea-ice (W / m / K) +!kind=default +sort-key=Panel-C13 +type=real + +[namelist:jules_sea_seaice=l_10m_neut] +compulsory=true +description=Logical for using neutral 10m wind speed to calculate the Charnock coefficient for sea points +!kind=default +sort-key=Panel-C08 +type=logical + +[namelist:jules_sea_seaice=l_iceformdrag_lupkes] +compulsory=true +description=Switch for diagnostic form drag following Lupkes et al. (2012) + =and Lupkes & Gryanik (2015) +!kind=default +sort-key=Panel-C07 +trigger=namelist:jules_sea_seaice=l_stability_lupkes: .true.; +type=logical + +[namelist:jules_sea_seaice=l_sice_heatflux] +compulsory=true +description=Do semi-implicit update of ti for sea-ice +!kind=default +sort-key=Panel-C10 +type=logical + +[namelist:jules_sea_seaice=l_stability_lupkes] +compulsory=true +description=Switch to include the stability dependence in the parametrization + =of ice form drag +!kind=default +sort-key=Panel-C07a +type=logical + +[namelist:jules_sea_seaice=l_use_dtstar_sea] +compulsory=true +description=Update the sea-surface temperature assuming a slab ocean with + = heat capacity given by namelist:jules_sea_seaice=hcap_sea +!kind=default +sort-key=Panel-C14 +trigger=namelist:jules_sea_seaice=hcap_sea: .true.; +type=logical + +[namelist:jules_sea_seaice=nice] +compulsory=true +description=Number of sea ice categories +help=The number of sea ice categories. This is normally 1 unless the model is + = coupled to a sea ice model when this is normally 5. This namelist + = entry is used to populate the nice variable in + = jules_control_init_mod.F90. All other subroutines should load + = nice from jules_control_init_mod and not from the surface + = namelist. +!kind=default +range=1:99 +sort-key=Panel-C00a +type=integer + +[namelist:jules_sea_seaice=u_cdn_hw] +compulsory=true +description=Neutral wind speed where the drag attains the high wind value. +!kind=default +sort-key=Panel-C06c +type=real + +[namelist:jules_sea_seaice=u_cdn_max] +compulsory=true +description=Neutral wind speed where the drag begins to be reduced from the maximum. +!kind=default +sort-key=Panel-C06d +type=real + +[namelist:jules_sea_seaice=z0h_specified] +compulsory=true +description=Specified roughness length for scalars [m] +fail-if=this < 0 +help=Specified value held fixed throughout the run used for surface exchange + =of scalar fields such as heat and moisture +!kind=default +range=0.0:100.0 +sort-key=Panel-C09b +type=real + +[namelist:jules_sea_seaice=z0m_specified] +compulsory=true +description=Specified roughness length for momentum [m] +fail-if=this < 0 +help=Specified value held fixed throughout the run +!kind=default +range=0.0:100.0 +sort-key=Panel-C09a +type=real diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/vn3.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/vn3.0/rose-meta.conf new file mode 100644 index 0000000000..8f6938c9e4 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/vn3.0/rose-meta.conf @@ -0,0 +1,245 @@ +[namelist:jules_sea_seaice] +compulsory=true +ns=namelist/JULES Science Settings/jules_sea_seaice +sort-key=Section-A12i +title=Sea and sea-ice options + +[namelist:jules_sea_seaice=alpham] +compulsory=true +description=Original HadGEM sea ice albedo scheme: Albedo of sea-ice at + =melting point (TM, if .not.l_ssice_albedo), + =or albedo of snow on sea-ice at melting point (TM, if + =l_ssice_albedo) ("M" for "melting") +!kind=default +range=0:1 +sort-key=Panel-C01 +type=real + +[namelist:jules_sea_seaice=amip_ice_thick] +compulsory=true +description=Calculate ice thickness from ice fraction +!kind=default +sort-key=Panel-C01 +type=logical + +[namelist:jules_sea_seaice=beta_evap] +compulsory=true +description=Efficiency of evaporation from sea-surface +help=This parameter controls the efficiency with which water can evaporate from a sea-surface. + = The default value is 1.0, moisture availability is effectively unrestricted. + = However, lower values can be useful for idealised modelling, + = restricting the evaporation rate. + = For example, a value of 0.0 would result in no evaporation. +!kind=default +range=0.0:1.0 +sort-key=Panel-C05 +type=real + +[namelist:jules_sea_seaice=buddy_sea] +compulsory=true +description=Use neighbouring sea point wind-speeds in coastal grid points +!enumeration=true +!kind=default +sort-key=Panel-C01a +value-titles=Off,On +values='Off','On' + +[namelist:jules_sea_seaice=cdn_hw_sea] +compulsory=true +description=Neutral drag coefficient over the sea at high wind speeds. +!kind=default +sort-key=Panel-C06a +type=real + +[namelist:jules_sea_seaice=cdn_max_sea] +compulsory=true +description=Maximum value of the neutral drag coefficient over open sea. +!kind=default +sort-key=Panel-C06b +type=real + +[namelist:jules_sea_seaice=dtice] +compulsory=true +description=Original HadGEM sea ice albedo scheme: Temperature range in which + =albedo of sea-ice (if .not.l_ssice_albedo), + =or of snow on sea-ice (if l_ssice_albedo), + =varies between its limits (recommended range 5-10K) +!kind=default +range=0.1:50 +sort-key=Panel-C02 +type=real + +[namelist:jules_sea_seaice=emis_sea] +compulsory=true +description=Emissivity of open sea +!kind=default +sort-key=Panel-C03 +type=real + +[namelist:jules_sea_seaice=emis_sice] +compulsory=true +description=Emissivity of sea-ice +!kind=default +sort-key=Panel-C04 +type=real + +[namelist:jules_sea_seaice=hcap_sea] +description=Heat capacity of the slab ocean (J K-1 m-2) +!kind=default +range=0.0: +sort-key=Panel-C14a +type=real + +[namelist:jules_sea_seaice=i_high_wind_drag] +compulsory=true +description=Option to impose a special treatment of drag at high wind speeds. +!enumeration=true +sort-key=Panel-C06 +trigger=namelist:jules_sea_seaice=cdn_hw_sea: 'reduced_v1'; + =namelist:jules_sea_seaice=cdn_max_sea: 'limited','reduced_v1'; + =namelist:jules_sea_seaice=u_cdn_hw: 'reduced_v1'; + =namelist:jules_sea_seaice=u_cdn_max: 'reduced_v1'; +value-titles=No special treatment of drag at high winds, + =The drag at high winds is capped, + =The drag at high winds is reduced over a range of speeds +values='null','limited','reduced_v1' + +[namelist:jules_sea_seaice=iseasurfalg] +compulsory=true +description=Algorithm for surface exchange over the sea +!enumeration=true +help=The most basic option for surface transfer at the sea surface + =consists of a specification of Charnocks coefficient for the + =momentum roughness length, including the aerodynamically smooth + =contribution in light winds, and a fixed thermal roughness length. + =Surface divergence theory allows for a variable thermal roughness + =length that follows the aerodynamicall smooth limit in light winds + =and decreases in stronger winds, giving a slower increase in the + =exchange coefficient for moisture as the wind rises. Historically, + =roughness lengths that depend on the friction velocity have not + =been iterated within the calculation of the Obukhov length, though + =this is more consistent: an iterative option is therefore provided. + =The COARE algorithm is based on a range of observations and exists + =in various forms. It features a dependence of Charnocks coefficient + =on the wind speed and a dependence of the thermal roughness length + =on the roughness Reynolds number. Extra parameters allow different + =versions of the algorithm to be used. +sort-key=Panel-C09 +trigger=namelist:jules_sea_seaice=z0m_specified: 'specified_roughness'; + =namelist:jules_sea_seaice=z0h_specified: 'specified_roughness'; +value-titles="Fixed values of roughness length for momentum and heat", + ="Fixed value of Charnock's coefficient with thermal + =roughness from surface divergence theory (non-iterative)", + ="Roughness lengths follow functional forms of the COARE + =algorithm" +values='specified_roughness','surf_div','coare' + +[namelist:jules_sea_seaice=kappa_seasurf] +compulsory=false +description=Thermal conductivity of sea-water (W / m / K) +!kind=default +sort-key=Panel-C11 +type=real + +[namelist:jules_sea_seaice=kappai] +compulsory=false +description=Thermal conductivity of sea-ice (W / m / K) +!kind=default +sort-key=Panel-C12 +type=real + +[namelist:jules_sea_seaice=kappai_snow] +compulsory=false +description=Thermal conductivity of snow on zero layer sea-ice (W / m / K) +!kind=default +sort-key=Panel-C13 +type=real + +[namelist:jules_sea_seaice=l_10m_neut] +compulsory=true +description=Logical for using neutral 10m wind speed to calculate the Charnock coefficient for sea points +!kind=default +sort-key=Panel-C08 +type=logical + +[namelist:jules_sea_seaice=l_iceformdrag_lupkes] +compulsory=true +description=Switch for diagnostic form drag following Lupkes et al. (2012) + =and Lupkes & Gryanik (2015) +!kind=default +sort-key=Panel-C07 +trigger=namelist:jules_sea_seaice=l_stability_lupkes: .true.; +type=logical + +[namelist:jules_sea_seaice=l_sice_heatflux] +compulsory=true +description=Do semi-implicit update of ti for sea-ice +!kind=default +sort-key=Panel-C10 +type=logical + +[namelist:jules_sea_seaice=l_stability_lupkes] +compulsory=true +description=Switch to include the stability dependence in the parametrization + =of ice form drag +!kind=default +sort-key=Panel-C07a +type=logical + +[namelist:jules_sea_seaice=l_use_dtstar_sea] +compulsory=true +description=Update the sea-surface temperature assuming a slab ocean with + = heat capacity given by namelist:jules_sea_seaice=hcap_sea +!kind=default +sort-key=Panel-C14 +trigger=namelist:jules_sea_seaice=hcap_sea: .true.; +type=logical + +[namelist:jules_sea_seaice=nice] +compulsory=true +description=Number of sea ice categories +help=The number of sea ice categories. This is normally 1 unless the model is + = coupled to a sea ice model when this is normally 5. This namelist + = entry is used to populate the nice variable in + = jules_control_init_mod.F90. All other subroutines should load + = nice from jules_control_init_mod and not from the surface + = namelist. +!kind=default +range=1:99 +sort-key=Panel-C00a +type=integer + +[namelist:jules_sea_seaice=u_cdn_hw] +compulsory=true +description=Neutral wind speed where the drag attains the high wind value. +!kind=default +sort-key=Panel-C06c +type=real + +[namelist:jules_sea_seaice=u_cdn_max] +compulsory=true +description=Neutral wind speed where the drag begins to be reduced from the maximum. +!kind=default +sort-key=Panel-C06d +type=real + +[namelist:jules_sea_seaice=z0h_specified] +compulsory=true +description=Specified roughness length for scalars [m] +fail-if=this < 0 +help=Specified value held fixed throughout the run used for surface exchange + =of scalar fields such as heat and moisture +!kind=default +range=0.0:100.0 +sort-key=Panel-C09b +type=real + +[namelist:jules_sea_seaice=z0m_specified] +compulsory=true +description=Specified roughness length for momentum [m] +fail-if=this < 0 +help=Specified value held fixed throughout the run +!kind=default +range=0.0:100.0 +sort-key=Panel-C09a +type=real diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/vn3.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/vn3.1/rose-meta.conf new file mode 100644 index 0000000000..8f6938c9e4 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-sea-seaice/vn3.1/rose-meta.conf @@ -0,0 +1,245 @@ +[namelist:jules_sea_seaice] +compulsory=true +ns=namelist/JULES Science Settings/jules_sea_seaice +sort-key=Section-A12i +title=Sea and sea-ice options + +[namelist:jules_sea_seaice=alpham] +compulsory=true +description=Original HadGEM sea ice albedo scheme: Albedo of sea-ice at + =melting point (TM, if .not.l_ssice_albedo), + =or albedo of snow on sea-ice at melting point (TM, if + =l_ssice_albedo) ("M" for "melting") +!kind=default +range=0:1 +sort-key=Panel-C01 +type=real + +[namelist:jules_sea_seaice=amip_ice_thick] +compulsory=true +description=Calculate ice thickness from ice fraction +!kind=default +sort-key=Panel-C01 +type=logical + +[namelist:jules_sea_seaice=beta_evap] +compulsory=true +description=Efficiency of evaporation from sea-surface +help=This parameter controls the efficiency with which water can evaporate from a sea-surface. + = The default value is 1.0, moisture availability is effectively unrestricted. + = However, lower values can be useful for idealised modelling, + = restricting the evaporation rate. + = For example, a value of 0.0 would result in no evaporation. +!kind=default +range=0.0:1.0 +sort-key=Panel-C05 +type=real + +[namelist:jules_sea_seaice=buddy_sea] +compulsory=true +description=Use neighbouring sea point wind-speeds in coastal grid points +!enumeration=true +!kind=default +sort-key=Panel-C01a +value-titles=Off,On +values='Off','On' + +[namelist:jules_sea_seaice=cdn_hw_sea] +compulsory=true +description=Neutral drag coefficient over the sea at high wind speeds. +!kind=default +sort-key=Panel-C06a +type=real + +[namelist:jules_sea_seaice=cdn_max_sea] +compulsory=true +description=Maximum value of the neutral drag coefficient over open sea. +!kind=default +sort-key=Panel-C06b +type=real + +[namelist:jules_sea_seaice=dtice] +compulsory=true +description=Original HadGEM sea ice albedo scheme: Temperature range in which + =albedo of sea-ice (if .not.l_ssice_albedo), + =or of snow on sea-ice (if l_ssice_albedo), + =varies between its limits (recommended range 5-10K) +!kind=default +range=0.1:50 +sort-key=Panel-C02 +type=real + +[namelist:jules_sea_seaice=emis_sea] +compulsory=true +description=Emissivity of open sea +!kind=default +sort-key=Panel-C03 +type=real + +[namelist:jules_sea_seaice=emis_sice] +compulsory=true +description=Emissivity of sea-ice +!kind=default +sort-key=Panel-C04 +type=real + +[namelist:jules_sea_seaice=hcap_sea] +description=Heat capacity of the slab ocean (J K-1 m-2) +!kind=default +range=0.0: +sort-key=Panel-C14a +type=real + +[namelist:jules_sea_seaice=i_high_wind_drag] +compulsory=true +description=Option to impose a special treatment of drag at high wind speeds. +!enumeration=true +sort-key=Panel-C06 +trigger=namelist:jules_sea_seaice=cdn_hw_sea: 'reduced_v1'; + =namelist:jules_sea_seaice=cdn_max_sea: 'limited','reduced_v1'; + =namelist:jules_sea_seaice=u_cdn_hw: 'reduced_v1'; + =namelist:jules_sea_seaice=u_cdn_max: 'reduced_v1'; +value-titles=No special treatment of drag at high winds, + =The drag at high winds is capped, + =The drag at high winds is reduced over a range of speeds +values='null','limited','reduced_v1' + +[namelist:jules_sea_seaice=iseasurfalg] +compulsory=true +description=Algorithm for surface exchange over the sea +!enumeration=true +help=The most basic option for surface transfer at the sea surface + =consists of a specification of Charnocks coefficient for the + =momentum roughness length, including the aerodynamically smooth + =contribution in light winds, and a fixed thermal roughness length. + =Surface divergence theory allows for a variable thermal roughness + =length that follows the aerodynamicall smooth limit in light winds + =and decreases in stronger winds, giving a slower increase in the + =exchange coefficient for moisture as the wind rises. Historically, + =roughness lengths that depend on the friction velocity have not + =been iterated within the calculation of the Obukhov length, though + =this is more consistent: an iterative option is therefore provided. + =The COARE algorithm is based on a range of observations and exists + =in various forms. It features a dependence of Charnocks coefficient + =on the wind speed and a dependence of the thermal roughness length + =on the roughness Reynolds number. Extra parameters allow different + =versions of the algorithm to be used. +sort-key=Panel-C09 +trigger=namelist:jules_sea_seaice=z0m_specified: 'specified_roughness'; + =namelist:jules_sea_seaice=z0h_specified: 'specified_roughness'; +value-titles="Fixed values of roughness length for momentum and heat", + ="Fixed value of Charnock's coefficient with thermal + =roughness from surface divergence theory (non-iterative)", + ="Roughness lengths follow functional forms of the COARE + =algorithm" +values='specified_roughness','surf_div','coare' + +[namelist:jules_sea_seaice=kappa_seasurf] +compulsory=false +description=Thermal conductivity of sea-water (W / m / K) +!kind=default +sort-key=Panel-C11 +type=real + +[namelist:jules_sea_seaice=kappai] +compulsory=false +description=Thermal conductivity of sea-ice (W / m / K) +!kind=default +sort-key=Panel-C12 +type=real + +[namelist:jules_sea_seaice=kappai_snow] +compulsory=false +description=Thermal conductivity of snow on zero layer sea-ice (W / m / K) +!kind=default +sort-key=Panel-C13 +type=real + +[namelist:jules_sea_seaice=l_10m_neut] +compulsory=true +description=Logical for using neutral 10m wind speed to calculate the Charnock coefficient for sea points +!kind=default +sort-key=Panel-C08 +type=logical + +[namelist:jules_sea_seaice=l_iceformdrag_lupkes] +compulsory=true +description=Switch for diagnostic form drag following Lupkes et al. (2012) + =and Lupkes & Gryanik (2015) +!kind=default +sort-key=Panel-C07 +trigger=namelist:jules_sea_seaice=l_stability_lupkes: .true.; +type=logical + +[namelist:jules_sea_seaice=l_sice_heatflux] +compulsory=true +description=Do semi-implicit update of ti for sea-ice +!kind=default +sort-key=Panel-C10 +type=logical + +[namelist:jules_sea_seaice=l_stability_lupkes] +compulsory=true +description=Switch to include the stability dependence in the parametrization + =of ice form drag +!kind=default +sort-key=Panel-C07a +type=logical + +[namelist:jules_sea_seaice=l_use_dtstar_sea] +compulsory=true +description=Update the sea-surface temperature assuming a slab ocean with + = heat capacity given by namelist:jules_sea_seaice=hcap_sea +!kind=default +sort-key=Panel-C14 +trigger=namelist:jules_sea_seaice=hcap_sea: .true.; +type=logical + +[namelist:jules_sea_seaice=nice] +compulsory=true +description=Number of sea ice categories +help=The number of sea ice categories. This is normally 1 unless the model is + = coupled to a sea ice model when this is normally 5. This namelist + = entry is used to populate the nice variable in + = jules_control_init_mod.F90. All other subroutines should load + = nice from jules_control_init_mod and not from the surface + = namelist. +!kind=default +range=1:99 +sort-key=Panel-C00a +type=integer + +[namelist:jules_sea_seaice=u_cdn_hw] +compulsory=true +description=Neutral wind speed where the drag attains the high wind value. +!kind=default +sort-key=Panel-C06c +type=real + +[namelist:jules_sea_seaice=u_cdn_max] +compulsory=true +description=Neutral wind speed where the drag begins to be reduced from the maximum. +!kind=default +sort-key=Panel-C06d +type=real + +[namelist:jules_sea_seaice=z0h_specified] +compulsory=true +description=Specified roughness length for scalars [m] +fail-if=this < 0 +help=Specified value held fixed throughout the run used for surface exchange + =of scalar fields such as heat and moisture +!kind=default +range=0.0:100.0 +sort-key=Panel-C09b +type=real + +[namelist:jules_sea_seaice=z0m_specified] +compulsory=true +description=Specified roughness length for momentum [m] +fail-if=this < 0 +help=Specified value held fixed throughout the run +!kind=default +range=0.0:100.0 +sort-key=Panel-C09a +type=real diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/HEAD/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/HEAD/rose-meta.conf new file mode 100644 index 0000000000..5248b8caa9 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/HEAD/rose-meta.conf @@ -0,0 +1,99 @@ +[namelist:jules_snow] +compulsory=true +ns=namelist/JULES Science Settings/jules_snow +sort-key=Section-A12k +title=Snow options +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html + +[namelist:jules_snow=can_clump] +compulsory=true +description=Clumping parameter for snow in the calculation of the albedo of plant canopies +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT + =all(this == 0) and namelist:jules_radiation=l_embedded_snow == '.true.' and any(namelist:jules_snow=cansnowpft == '.true.'); # Results in floating point exception if 0. Only used if can_model = 4, cansnowpft = TRUE on that tile and l_embedded_snow = TRUE. +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=Panel-D09 +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::can_clump + +[namelist:jules_snow=cansnowpft] +compulsory=false +description=Flag indicating whether snow can be held under the canopy of each PFT +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT +!kind=default +length=: +sort-key=Panel-D05 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::cansnowpft + +[namelist:jules_snow=i_basal_melting_opt] +compulsory=true +description=Option for melting at the base of the snow pack. +!enumeration=true +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D17 +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::i_basal_melting_opt +value-titles=No basal melting,Instantaneous basal melting +values=0,1 + +[namelist:jules_snow=i_grain_growth_opt] +compulsory=true +description=Option for rate of growth of snow grains. +!enumeration=true +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D04 +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::i_grain_growth_opt +value-titles=Marshall1989,Taillandier2007_ET +values=0,1 + +[namelist:jules_snow=i_relayer_opt] +compulsory=true +description=Option for method of relayering the snow pack in the multilayer scheme. +!enumeration=true +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D01e +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::i_relayer_opt +value-titles=Original Scheme,Relayer inverse of grain size +values=0,1 + +[namelist:jules_snow=n_lai_exposed] +compulsory=true +description=Shape parameter for distribution of leaf area within canopies used in calculation of snow albedo. +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=Panel-D10 +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::n_lai_exposed + +[namelist:jules_snow=rho_snow_fresh] +compulsory=false +description=Density of fresh snow (kg m-3) +!kind=default +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D01b +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::rho_snow_fresh + +[namelist:jules_snow=unload_rate_u] +compulsory=true +description=Term proportional to wind speed in background unloading rate of snow on canopies +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D13 +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::unload_rate_u + +# Dummy page to force sort order for Snow other parameters +[namespace:snow_other] +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=02 + +# Dummy page to force sort order for Snow radiation parameters +[namespace:snow_radiation] +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=01 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn2.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn2.0/rose-meta.conf new file mode 100644 index 0000000000..e7fe26f1c4 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn2.0/rose-meta.conf @@ -0,0 +1,69 @@ +[namelist:jules_snow] +compulsory=true +ns=namelist/JULES Science Settings/jules_snow +sort-key=Section-A12e +title=Snow options +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html + +[namelist:jules_snow=can_clump] +compulsory=true +description=Clumping parameter for snow in the calculation of the albedo of plant canopies +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT + =all(this == 0) and namelist:jules_radiation=l_embedded_snow == '.true.' and any(namelist:jules_snow=cansnowpft == '.true.'); # Results in floating point exception if 0. Only used if can_model = 4, cansnowpft = TRUE on that tile and l_embedded_snow = TRUE. +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=Panel-D09 +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::can_clump + +[namelist:jules_snow=cansnowpft] +compulsory=false +description=Flag indicating whether snow can be held under the canopy of each PFT +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT +!kind=default +length=: +sort-key=Panel-D05 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::cansnowpft + +[namelist:jules_snow=n_lai_exposed] +compulsory=true +description=Shape parameter for distribution of leaf area within canopies used in calculation of snow albedo. +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=Panel-D10 +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::n_lai_exposed + +[namelist:jules_snow=rho_snow_fresh] +compulsory=false +description=Density of fresh snow (kg m-3) +!kind=default +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D01b +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::rho_snow_fresh + +[namelist:jules_snow=unload_rate_u] +compulsory=true +description=Term proportional to wind speed in background unloading rate of snow on canopies +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D13 +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::unload_rate_u + +# Dummy page to force sort order for Snow other parameters +[namespace:snow_other] +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=02 + +# Dummy page to force sort order for Snow radiation parameters +[namespace:snow_radiation] +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=01 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn2.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn2.1/rose-meta.conf new file mode 100644 index 0000000000..e7fe26f1c4 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn2.1/rose-meta.conf @@ -0,0 +1,69 @@ +[namelist:jules_snow] +compulsory=true +ns=namelist/JULES Science Settings/jules_snow +sort-key=Section-A12e +title=Snow options +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html + +[namelist:jules_snow=can_clump] +compulsory=true +description=Clumping parameter for snow in the calculation of the albedo of plant canopies +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT + =all(this == 0) and namelist:jules_radiation=l_embedded_snow == '.true.' and any(namelist:jules_snow=cansnowpft == '.true.'); # Results in floating point exception if 0. Only used if can_model = 4, cansnowpft = TRUE on that tile and l_embedded_snow = TRUE. +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=Panel-D09 +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::can_clump + +[namelist:jules_snow=cansnowpft] +compulsory=false +description=Flag indicating whether snow can be held under the canopy of each PFT +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT +!kind=default +length=: +sort-key=Panel-D05 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::cansnowpft + +[namelist:jules_snow=n_lai_exposed] +compulsory=true +description=Shape parameter for distribution of leaf area within canopies used in calculation of snow albedo. +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=Panel-D10 +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::n_lai_exposed + +[namelist:jules_snow=rho_snow_fresh] +compulsory=false +description=Density of fresh snow (kg m-3) +!kind=default +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D01b +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::rho_snow_fresh + +[namelist:jules_snow=unload_rate_u] +compulsory=true +description=Term proportional to wind speed in background unloading rate of snow on canopies +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D13 +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::unload_rate_u + +# Dummy page to force sort order for Snow other parameters +[namespace:snow_other] +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=02 + +# Dummy page to force sort order for Snow radiation parameters +[namespace:snow_radiation] +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=01 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn2.2/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn2.2/rose-meta.conf new file mode 100644 index 0000000000..5248b8caa9 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn2.2/rose-meta.conf @@ -0,0 +1,99 @@ +[namelist:jules_snow] +compulsory=true +ns=namelist/JULES Science Settings/jules_snow +sort-key=Section-A12k +title=Snow options +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html + +[namelist:jules_snow=can_clump] +compulsory=true +description=Clumping parameter for snow in the calculation of the albedo of plant canopies +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT + =all(this == 0) and namelist:jules_radiation=l_embedded_snow == '.true.' and any(namelist:jules_snow=cansnowpft == '.true.'); # Results in floating point exception if 0. Only used if can_model = 4, cansnowpft = TRUE on that tile and l_embedded_snow = TRUE. +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=Panel-D09 +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::can_clump + +[namelist:jules_snow=cansnowpft] +compulsory=false +description=Flag indicating whether snow can be held under the canopy of each PFT +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT +!kind=default +length=: +sort-key=Panel-D05 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::cansnowpft + +[namelist:jules_snow=i_basal_melting_opt] +compulsory=true +description=Option for melting at the base of the snow pack. +!enumeration=true +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D17 +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::i_basal_melting_opt +value-titles=No basal melting,Instantaneous basal melting +values=0,1 + +[namelist:jules_snow=i_grain_growth_opt] +compulsory=true +description=Option for rate of growth of snow grains. +!enumeration=true +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D04 +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::i_grain_growth_opt +value-titles=Marshall1989,Taillandier2007_ET +values=0,1 + +[namelist:jules_snow=i_relayer_opt] +compulsory=true +description=Option for method of relayering the snow pack in the multilayer scheme. +!enumeration=true +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D01e +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::i_relayer_opt +value-titles=Original Scheme,Relayer inverse of grain size +values=0,1 + +[namelist:jules_snow=n_lai_exposed] +compulsory=true +description=Shape parameter for distribution of leaf area within canopies used in calculation of snow albedo. +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=Panel-D10 +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::n_lai_exposed + +[namelist:jules_snow=rho_snow_fresh] +compulsory=false +description=Density of fresh snow (kg m-3) +!kind=default +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D01b +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::rho_snow_fresh + +[namelist:jules_snow=unload_rate_u] +compulsory=true +description=Term proportional to wind speed in background unloading rate of snow on canopies +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D13 +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::unload_rate_u + +# Dummy page to force sort order for Snow other parameters +[namespace:snow_other] +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=02 + +# Dummy page to force sort order for Snow radiation parameters +[namespace:snow_radiation] +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=01 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn3.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn3.0/rose-meta.conf new file mode 100644 index 0000000000..5248b8caa9 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn3.0/rose-meta.conf @@ -0,0 +1,99 @@ +[namelist:jules_snow] +compulsory=true +ns=namelist/JULES Science Settings/jules_snow +sort-key=Section-A12k +title=Snow options +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html + +[namelist:jules_snow=can_clump] +compulsory=true +description=Clumping parameter for snow in the calculation of the albedo of plant canopies +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT + =all(this == 0) and namelist:jules_radiation=l_embedded_snow == '.true.' and any(namelist:jules_snow=cansnowpft == '.true.'); # Results in floating point exception if 0. Only used if can_model = 4, cansnowpft = TRUE on that tile and l_embedded_snow = TRUE. +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=Panel-D09 +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::can_clump + +[namelist:jules_snow=cansnowpft] +compulsory=false +description=Flag indicating whether snow can be held under the canopy of each PFT +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT +!kind=default +length=: +sort-key=Panel-D05 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::cansnowpft + +[namelist:jules_snow=i_basal_melting_opt] +compulsory=true +description=Option for melting at the base of the snow pack. +!enumeration=true +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D17 +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::i_basal_melting_opt +value-titles=No basal melting,Instantaneous basal melting +values=0,1 + +[namelist:jules_snow=i_grain_growth_opt] +compulsory=true +description=Option for rate of growth of snow grains. +!enumeration=true +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D04 +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::i_grain_growth_opt +value-titles=Marshall1989,Taillandier2007_ET +values=0,1 + +[namelist:jules_snow=i_relayer_opt] +compulsory=true +description=Option for method of relayering the snow pack in the multilayer scheme. +!enumeration=true +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D01e +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::i_relayer_opt +value-titles=Original Scheme,Relayer inverse of grain size +values=0,1 + +[namelist:jules_snow=n_lai_exposed] +compulsory=true +description=Shape parameter for distribution of leaf area within canopies used in calculation of snow albedo. +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=Panel-D10 +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::n_lai_exposed + +[namelist:jules_snow=rho_snow_fresh] +compulsory=false +description=Density of fresh snow (kg m-3) +!kind=default +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D01b +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::rho_snow_fresh + +[namelist:jules_snow=unload_rate_u] +compulsory=true +description=Term proportional to wind speed in background unloading rate of snow on canopies +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D13 +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::unload_rate_u + +# Dummy page to force sort order for Snow other parameters +[namespace:snow_other] +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=02 + +# Dummy page to force sort order for Snow radiation parameters +[namespace:snow_radiation] +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=01 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn3.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn3.1/rose-meta.conf new file mode 100644 index 0000000000..5248b8caa9 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-snow/vn3.1/rose-meta.conf @@ -0,0 +1,99 @@ +[namelist:jules_snow] +compulsory=true +ns=namelist/JULES Science Settings/jules_snow +sort-key=Section-A12k +title=Snow options +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html + +[namelist:jules_snow=can_clump] +compulsory=true +description=Clumping parameter for snow in the calculation of the albedo of plant canopies +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT + =all(this == 0) and namelist:jules_radiation=l_embedded_snow == '.true.' and any(namelist:jules_snow=cansnowpft == '.true.'); # Results in floating point exception if 0. Only used if can_model = 4, cansnowpft = TRUE on that tile and l_embedded_snow = TRUE. +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=Panel-D09 +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::can_clump + +[namelist:jules_snow=cansnowpft] +compulsory=false +description=Flag indicating whether snow can be held under the canopy of each PFT +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT +!kind=default +length=: +sort-key=Panel-D05 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::cansnowpft + +[namelist:jules_snow=i_basal_melting_opt] +compulsory=true +description=Option for melting at the base of the snow pack. +!enumeration=true +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D17 +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::i_basal_melting_opt +value-titles=No basal melting,Instantaneous basal melting +values=0,1 + +[namelist:jules_snow=i_grain_growth_opt] +compulsory=true +description=Option for rate of growth of snow grains. +!enumeration=true +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D04 +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::i_grain_growth_opt +value-titles=Marshall1989,Taillandier2007_ET +values=0,1 + +[namelist:jules_snow=i_relayer_opt] +compulsory=true +description=Option for method of relayering the snow pack in the multilayer scheme. +!enumeration=true +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D01e +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::i_relayer_opt +value-titles=Original Scheme,Relayer inverse of grain size +values=0,1 + +[namelist:jules_snow=n_lai_exposed] +compulsory=true +description=Shape parameter for distribution of leaf area within canopies used in calculation of snow albedo. +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=Panel-D10 +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::n_lai_exposed + +[namelist:jules_snow=rho_snow_fresh] +compulsory=false +description=Density of fresh snow (kg m-3) +!kind=default +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D01b +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::rho_snow_fresh + +[namelist:jules_snow=unload_rate_u] +compulsory=true +description=Term proportional to wind speed in background unloading rate of snow on canopies +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT +!kind=default +length=: +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D13 +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_snow.nml.html#JULES_SNOW::unload_rate_u + +# Dummy page to force sort order for Snow other parameters +[namespace:snow_other] +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=02 + +# Dummy page to force sort order for Snow radiation parameters +[namespace:snow_radiation] +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=01 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/HEAD/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/HEAD/rose-meta.conf new file mode 100644 index 0000000000..49a87b62a8 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/HEAD/rose-meta.conf @@ -0,0 +1,31 @@ +[namelist:jules_soil] +compulsory=true +ns=namelist/JULES Science Settings/jules_soil +sort-key=Section-A12j +title=Soil options +url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#namelist-JULES_SOIL + +[namelist:jules_soil=l_dpsids_dsdz] +compulsory=true +description=Calculate vertical gradient of soil suction with the assumption of linearity only for + =fractional saturation (consistent with the calculation of hydraulic conductivity) +!kind=default +sort-key=Panel-E03 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#JULES_SOIL::l_dpsids_dsdz + +[namelist:jules_soil=l_soil_sat_down] +compulsory=true +description=Direction of water in excess of saturation +!kind=default +sort-key=Panel-E04 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#JULES_SOIL::l_soil_sat_down + +[namelist:jules_soil=l_vg_soil] +compulsory=true +description=Switch for van Genuchten soil hydraulic model. +!kind=default +sort-key=Panel-E02 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#JULES_SOIL::l_vg_soil diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/vn2.2/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/vn2.2/rose-meta.conf new file mode 100644 index 0000000000..49a87b62a8 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/vn2.2/rose-meta.conf @@ -0,0 +1,31 @@ +[namelist:jules_soil] +compulsory=true +ns=namelist/JULES Science Settings/jules_soil +sort-key=Section-A12j +title=Soil options +url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#namelist-JULES_SOIL + +[namelist:jules_soil=l_dpsids_dsdz] +compulsory=true +description=Calculate vertical gradient of soil suction with the assumption of linearity only for + =fractional saturation (consistent with the calculation of hydraulic conductivity) +!kind=default +sort-key=Panel-E03 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#JULES_SOIL::l_dpsids_dsdz + +[namelist:jules_soil=l_soil_sat_down] +compulsory=true +description=Direction of water in excess of saturation +!kind=default +sort-key=Panel-E04 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#JULES_SOIL::l_soil_sat_down + +[namelist:jules_soil=l_vg_soil] +compulsory=true +description=Switch for van Genuchten soil hydraulic model. +!kind=default +sort-key=Panel-E02 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#JULES_SOIL::l_vg_soil diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/vn3.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/vn3.0/rose-meta.conf new file mode 100644 index 0000000000..49a87b62a8 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/vn3.0/rose-meta.conf @@ -0,0 +1,31 @@ +[namelist:jules_soil] +compulsory=true +ns=namelist/JULES Science Settings/jules_soil +sort-key=Section-A12j +title=Soil options +url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#namelist-JULES_SOIL + +[namelist:jules_soil=l_dpsids_dsdz] +compulsory=true +description=Calculate vertical gradient of soil suction with the assumption of linearity only for + =fractional saturation (consistent with the calculation of hydraulic conductivity) +!kind=default +sort-key=Panel-E03 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#JULES_SOIL::l_dpsids_dsdz + +[namelist:jules_soil=l_soil_sat_down] +compulsory=true +description=Direction of water in excess of saturation +!kind=default +sort-key=Panel-E04 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#JULES_SOIL::l_soil_sat_down + +[namelist:jules_soil=l_vg_soil] +compulsory=true +description=Switch for van Genuchten soil hydraulic model. +!kind=default +sort-key=Panel-E02 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#JULES_SOIL::l_vg_soil diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/vn3.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/vn3.1/rose-meta.conf new file mode 100644 index 0000000000..49a87b62a8 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-soil/vn3.1/rose-meta.conf @@ -0,0 +1,31 @@ +[namelist:jules_soil] +compulsory=true +ns=namelist/JULES Science Settings/jules_soil +sort-key=Section-A12j +title=Soil options +url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#namelist-JULES_SOIL + +[namelist:jules_soil=l_dpsids_dsdz] +compulsory=true +description=Calculate vertical gradient of soil suction with the assumption of linearity only for + =fractional saturation (consistent with the calculation of hydraulic conductivity) +!kind=default +sort-key=Panel-E03 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#JULES_SOIL::l_dpsids_dsdz + +[namelist:jules_soil=l_soil_sat_down] +compulsory=true +description=Direction of water in excess of saturation +!kind=default +sort-key=Panel-E04 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#JULES_SOIL::l_soil_sat_down + +[namelist:jules_soil=l_vg_soil] +compulsory=true +description=Switch for van Genuchten soil hydraulic model. +!kind=default +sort-key=Panel-E02 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_soil.nml.html#JULES_SOIL::l_vg_soil diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/HEAD/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/HEAD/rose-meta.conf new file mode 100644 index 0000000000..42ff6a41f8 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/HEAD/rose-meta.conf @@ -0,0 +1,125 @@ +[namelist:jules_surface_types] +compulsory=true +ns=namelist/JULES Surface Types/jules_surface_types +sort-key=Section-A12a +title=JULES Surface Types +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html + +[namelist:jules_surface_types=brd_leaf] +description=Pseudo level of broadleaf PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A1a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::brd_leaf + +[namelist:jules_surface_types=c3_grass] +description=Pseudo level of C3 grass PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A3a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c3_grass + +[namelist:jules_surface_types=c4_grass] +description=Pseudo level of C4 grass PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A4a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c4_grass + +[namelist:jules_surface_types=ice] +description=Pseudo level of ice surface type +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following +range=1: +sort-key=Panel-A9a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::ice + +[namelist:jules_surface_types=lake] +description=Pseudo level of lake surface type +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following +range=1: +sort-key=Panel-A7a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::lake + +[namelist:jules_surface_types=ndl_leaf] +description=Pseudo level of needleleaf PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A2a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::ndl_leaf + +[namelist:jules_surface_types=nnvg] +compulsory=true +description=The number of non-plant surface types to be modelled +range=1: +sort-key=Panel-A0b +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::nnvg + +[namelist:jules_surface_types=npft] +compulsory=true +description=The number of plant functional types to be modelled +range=0: +sort-key=Panel-A0a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::npft + +[namelist:jules_surface_types=shrub] +description=Pseudo level of shrub PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A5a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::shrub + +[namelist:jules_surface_types=soil] +compulsory=true +description=Pseudo level of soil surface type +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following +range=1: +sort-key=Panel-A8 +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::soil + +[namelist:jules_surface_types=urban] +compulsory=true +description=Pseudo level of urban surface type +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following + =this > 0 and (namelist:jules_surface_types=urban_roof > 0 or namelist:jules_surface_types=urban_canyon > 0); +range=-1,1: +sort-key=Panel-A6a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban + +[namelist:jules_surface_types=urban_canyon] +compulsory=true +description=Pseudo level of urban canyon surface type +fail-if=this > namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg; # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following + =this > 0 and not (namelist:jules_surface_types=urban_roof > 0); # Both the canyon and roof surface type must be present + =not(this > 0) and namelist:jules_surface=l_urban2t == '.true.'; # When l_urban2t there must be a canyon and a roof surface type +range=-1,1: +sort-key=Panel-A6b +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban_canyon + +[namelist:jules_surface_types=urban_roof] +compulsory=true +description=Pseudo level of urban roof surface type +fail-if=this > namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg; # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following + =this > 0 and not (namelist:jules_surface_types=urban_canyon > 0); # Both the canyon and roof surface type must be present + =not(this > 0) and namelist:jules_surface=l_urban2t == '.true.'; # When l_urban2t there must be a canyon and a roof surface type +range=-1,1: +sort-key=Panel-A6c +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban_roof diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn2.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn2.0/rose-meta.conf new file mode 100644 index 0000000000..42ff6a41f8 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn2.0/rose-meta.conf @@ -0,0 +1,125 @@ +[namelist:jules_surface_types] +compulsory=true +ns=namelist/JULES Surface Types/jules_surface_types +sort-key=Section-A12a +title=JULES Surface Types +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html + +[namelist:jules_surface_types=brd_leaf] +description=Pseudo level of broadleaf PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A1a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::brd_leaf + +[namelist:jules_surface_types=c3_grass] +description=Pseudo level of C3 grass PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A3a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c3_grass + +[namelist:jules_surface_types=c4_grass] +description=Pseudo level of C4 grass PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A4a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c4_grass + +[namelist:jules_surface_types=ice] +description=Pseudo level of ice surface type +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following +range=1: +sort-key=Panel-A9a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::ice + +[namelist:jules_surface_types=lake] +description=Pseudo level of lake surface type +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following +range=1: +sort-key=Panel-A7a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::lake + +[namelist:jules_surface_types=ndl_leaf] +description=Pseudo level of needleleaf PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A2a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::ndl_leaf + +[namelist:jules_surface_types=nnvg] +compulsory=true +description=The number of non-plant surface types to be modelled +range=1: +sort-key=Panel-A0b +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::nnvg + +[namelist:jules_surface_types=npft] +compulsory=true +description=The number of plant functional types to be modelled +range=0: +sort-key=Panel-A0a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::npft + +[namelist:jules_surface_types=shrub] +description=Pseudo level of shrub PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A5a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::shrub + +[namelist:jules_surface_types=soil] +compulsory=true +description=Pseudo level of soil surface type +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following +range=1: +sort-key=Panel-A8 +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::soil + +[namelist:jules_surface_types=urban] +compulsory=true +description=Pseudo level of urban surface type +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following + =this > 0 and (namelist:jules_surface_types=urban_roof > 0 or namelist:jules_surface_types=urban_canyon > 0); +range=-1,1: +sort-key=Panel-A6a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban + +[namelist:jules_surface_types=urban_canyon] +compulsory=true +description=Pseudo level of urban canyon surface type +fail-if=this > namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg; # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following + =this > 0 and not (namelist:jules_surface_types=urban_roof > 0); # Both the canyon and roof surface type must be present + =not(this > 0) and namelist:jules_surface=l_urban2t == '.true.'; # When l_urban2t there must be a canyon and a roof surface type +range=-1,1: +sort-key=Panel-A6b +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban_canyon + +[namelist:jules_surface_types=urban_roof] +compulsory=true +description=Pseudo level of urban roof surface type +fail-if=this > namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg; # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following + =this > 0 and not (namelist:jules_surface_types=urban_canyon > 0); # Both the canyon and roof surface type must be present + =not(this > 0) and namelist:jules_surface=l_urban2t == '.true.'; # When l_urban2t there must be a canyon and a roof surface type +range=-1,1: +sort-key=Panel-A6c +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban_roof diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn2.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn2.1/rose-meta.conf new file mode 100644 index 0000000000..42ff6a41f8 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn2.1/rose-meta.conf @@ -0,0 +1,125 @@ +[namelist:jules_surface_types] +compulsory=true +ns=namelist/JULES Surface Types/jules_surface_types +sort-key=Section-A12a +title=JULES Surface Types +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html + +[namelist:jules_surface_types=brd_leaf] +description=Pseudo level of broadleaf PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A1a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::brd_leaf + +[namelist:jules_surface_types=c3_grass] +description=Pseudo level of C3 grass PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A3a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c3_grass + +[namelist:jules_surface_types=c4_grass] +description=Pseudo level of C4 grass PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A4a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c4_grass + +[namelist:jules_surface_types=ice] +description=Pseudo level of ice surface type +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following +range=1: +sort-key=Panel-A9a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::ice + +[namelist:jules_surface_types=lake] +description=Pseudo level of lake surface type +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following +range=1: +sort-key=Panel-A7a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::lake + +[namelist:jules_surface_types=ndl_leaf] +description=Pseudo level of needleleaf PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A2a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::ndl_leaf + +[namelist:jules_surface_types=nnvg] +compulsory=true +description=The number of non-plant surface types to be modelled +range=1: +sort-key=Panel-A0b +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::nnvg + +[namelist:jules_surface_types=npft] +compulsory=true +description=The number of plant functional types to be modelled +range=0: +sort-key=Panel-A0a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::npft + +[namelist:jules_surface_types=shrub] +description=Pseudo level of shrub PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A5a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::shrub + +[namelist:jules_surface_types=soil] +compulsory=true +description=Pseudo level of soil surface type +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following +range=1: +sort-key=Panel-A8 +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::soil + +[namelist:jules_surface_types=urban] +compulsory=true +description=Pseudo level of urban surface type +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following + =this > 0 and (namelist:jules_surface_types=urban_roof > 0 or namelist:jules_surface_types=urban_canyon > 0); +range=-1,1: +sort-key=Panel-A6a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban + +[namelist:jules_surface_types=urban_canyon] +compulsory=true +description=Pseudo level of urban canyon surface type +fail-if=this > namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg; # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following + =this > 0 and not (namelist:jules_surface_types=urban_roof > 0); # Both the canyon and roof surface type must be present + =not(this > 0) and namelist:jules_surface=l_urban2t == '.true.'; # When l_urban2t there must be a canyon and a roof surface type +range=-1,1: +sort-key=Panel-A6b +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban_canyon + +[namelist:jules_surface_types=urban_roof] +compulsory=true +description=Pseudo level of urban roof surface type +fail-if=this > namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg; # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following + =this > 0 and not (namelist:jules_surface_types=urban_canyon > 0); # Both the canyon and roof surface type must be present + =not(this > 0) and namelist:jules_surface=l_urban2t == '.true.'; # When l_urban2t there must be a canyon and a roof surface type +range=-1,1: +sort-key=Panel-A6c +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban_roof diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn2.2/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn2.2/rose-meta.conf new file mode 100644 index 0000000000..42ff6a41f8 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn2.2/rose-meta.conf @@ -0,0 +1,125 @@ +[namelist:jules_surface_types] +compulsory=true +ns=namelist/JULES Surface Types/jules_surface_types +sort-key=Section-A12a +title=JULES Surface Types +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html + +[namelist:jules_surface_types=brd_leaf] +description=Pseudo level of broadleaf PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A1a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::brd_leaf + +[namelist:jules_surface_types=c3_grass] +description=Pseudo level of C3 grass PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A3a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c3_grass + +[namelist:jules_surface_types=c4_grass] +description=Pseudo level of C4 grass PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A4a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c4_grass + +[namelist:jules_surface_types=ice] +description=Pseudo level of ice surface type +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following +range=1: +sort-key=Panel-A9a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::ice + +[namelist:jules_surface_types=lake] +description=Pseudo level of lake surface type +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following +range=1: +sort-key=Panel-A7a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::lake + +[namelist:jules_surface_types=ndl_leaf] +description=Pseudo level of needleleaf PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A2a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::ndl_leaf + +[namelist:jules_surface_types=nnvg] +compulsory=true +description=The number of non-plant surface types to be modelled +range=1: +sort-key=Panel-A0b +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::nnvg + +[namelist:jules_surface_types=npft] +compulsory=true +description=The number of plant functional types to be modelled +range=0: +sort-key=Panel-A0a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::npft + +[namelist:jules_surface_types=shrub] +description=Pseudo level of shrub PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A5a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::shrub + +[namelist:jules_surface_types=soil] +compulsory=true +description=Pseudo level of soil surface type +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following +range=1: +sort-key=Panel-A8 +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::soil + +[namelist:jules_surface_types=urban] +compulsory=true +description=Pseudo level of urban surface type +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following + =this > 0 and (namelist:jules_surface_types=urban_roof > 0 or namelist:jules_surface_types=urban_canyon > 0); +range=-1,1: +sort-key=Panel-A6a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban + +[namelist:jules_surface_types=urban_canyon] +compulsory=true +description=Pseudo level of urban canyon surface type +fail-if=this > namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg; # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following + =this > 0 and not (namelist:jules_surface_types=urban_roof > 0); # Both the canyon and roof surface type must be present + =not(this > 0) and namelist:jules_surface=l_urban2t == '.true.'; # When l_urban2t there must be a canyon and a roof surface type +range=-1,1: +sort-key=Panel-A6b +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban_canyon + +[namelist:jules_surface_types=urban_roof] +compulsory=true +description=Pseudo level of urban roof surface type +fail-if=this > namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg; # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following + =this > 0 and not (namelist:jules_surface_types=urban_canyon > 0); # Both the canyon and roof surface type must be present + =not(this > 0) and namelist:jules_surface=l_urban2t == '.true.'; # When l_urban2t there must be a canyon and a roof surface type +range=-1,1: +sort-key=Panel-A6c +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban_roof diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn3.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn3.0/rose-meta.conf new file mode 100644 index 0000000000..42ff6a41f8 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn3.0/rose-meta.conf @@ -0,0 +1,125 @@ +[namelist:jules_surface_types] +compulsory=true +ns=namelist/JULES Surface Types/jules_surface_types +sort-key=Section-A12a +title=JULES Surface Types +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html + +[namelist:jules_surface_types=brd_leaf] +description=Pseudo level of broadleaf PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A1a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::brd_leaf + +[namelist:jules_surface_types=c3_grass] +description=Pseudo level of C3 grass PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A3a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c3_grass + +[namelist:jules_surface_types=c4_grass] +description=Pseudo level of C4 grass PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A4a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c4_grass + +[namelist:jules_surface_types=ice] +description=Pseudo level of ice surface type +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following +range=1: +sort-key=Panel-A9a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::ice + +[namelist:jules_surface_types=lake] +description=Pseudo level of lake surface type +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following +range=1: +sort-key=Panel-A7a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::lake + +[namelist:jules_surface_types=ndl_leaf] +description=Pseudo level of needleleaf PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A2a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::ndl_leaf + +[namelist:jules_surface_types=nnvg] +compulsory=true +description=The number of non-plant surface types to be modelled +range=1: +sort-key=Panel-A0b +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::nnvg + +[namelist:jules_surface_types=npft] +compulsory=true +description=The number of plant functional types to be modelled +range=0: +sort-key=Panel-A0a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::npft + +[namelist:jules_surface_types=shrub] +description=Pseudo level of shrub PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A5a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::shrub + +[namelist:jules_surface_types=soil] +compulsory=true +description=Pseudo level of soil surface type +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following +range=1: +sort-key=Panel-A8 +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::soil + +[namelist:jules_surface_types=urban] +compulsory=true +description=Pseudo level of urban surface type +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following + =this > 0 and (namelist:jules_surface_types=urban_roof > 0 or namelist:jules_surface_types=urban_canyon > 0); +range=-1,1: +sort-key=Panel-A6a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban + +[namelist:jules_surface_types=urban_canyon] +compulsory=true +description=Pseudo level of urban canyon surface type +fail-if=this > namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg; # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following + =this > 0 and not (namelist:jules_surface_types=urban_roof > 0); # Both the canyon and roof surface type must be present + =not(this > 0) and namelist:jules_surface=l_urban2t == '.true.'; # When l_urban2t there must be a canyon and a roof surface type +range=-1,1: +sort-key=Panel-A6b +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban_canyon + +[namelist:jules_surface_types=urban_roof] +compulsory=true +description=Pseudo level of urban roof surface type +fail-if=this > namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg; # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following + =this > 0 and not (namelist:jules_surface_types=urban_canyon > 0); # Both the canyon and roof surface type must be present + =not(this > 0) and namelist:jules_surface=l_urban2t == '.true.'; # When l_urban2t there must be a canyon and a roof surface type +range=-1,1: +sort-key=Panel-A6c +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban_roof diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn3.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn3.1/rose-meta.conf new file mode 100644 index 0000000000..42ff6a41f8 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface-types/vn3.1/rose-meta.conf @@ -0,0 +1,125 @@ +[namelist:jules_surface_types] +compulsory=true +ns=namelist/JULES Surface Types/jules_surface_types +sort-key=Section-A12a +title=JULES Surface Types +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html + +[namelist:jules_surface_types=brd_leaf] +description=Pseudo level of broadleaf PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A1a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::brd_leaf + +[namelist:jules_surface_types=c3_grass] +description=Pseudo level of C3 grass PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A3a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c3_grass + +[namelist:jules_surface_types=c4_grass] +description=Pseudo level of C4 grass PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A4a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c4_grass + +[namelist:jules_surface_types=ice] +description=Pseudo level of ice surface type +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following +range=1: +sort-key=Panel-A9a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::ice + +[namelist:jules_surface_types=lake] +description=Pseudo level of lake surface type +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following +range=1: +sort-key=Panel-A7a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::lake + +[namelist:jules_surface_types=ndl_leaf] +description=Pseudo level of needleleaf PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A2a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::ndl_leaf + +[namelist:jules_surface_types=nnvg] +compulsory=true +description=The number of non-plant surface types to be modelled +range=1: +sort-key=Panel-A0b +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::nnvg + +[namelist:jules_surface_types=npft] +compulsory=true +description=The number of plant functional types to be modelled +range=0: +sort-key=Panel-A0a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::npft + +[namelist:jules_surface_types=shrub] +description=Pseudo level of shrub PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A5a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::shrub + +[namelist:jules_surface_types=soil] +compulsory=true +description=Pseudo level of soil surface type +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following +range=1: +sort-key=Panel-A8 +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::soil + +[namelist:jules_surface_types=urban] +compulsory=true +description=Pseudo level of urban surface type +fail-if=this > (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following + =this > 0 and (namelist:jules_surface_types=urban_roof > 0 or namelist:jules_surface_types=urban_canyon > 0); +range=-1,1: +sort-key=Panel-A6a +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban + +[namelist:jules_surface_types=urban_canyon] +compulsory=true +description=Pseudo level of urban canyon surface type +fail-if=this > namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg; # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following + =this > 0 and not (namelist:jules_surface_types=urban_roof > 0); # Both the canyon and roof surface type must be present + =not(this > 0) and namelist:jules_surface=l_urban2t == '.true.'; # When l_urban2t there must be a canyon and a roof surface type +range=-1,1: +sort-key=Panel-A6b +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban_canyon + +[namelist:jules_surface_types=urban_roof] +compulsory=true +description=Pseudo level of urban roof surface type +fail-if=this > namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg; # Pseudo level must be less than or equal to npft+nnvg + =this <= namelist:jules_surface_types=npft; # PFTs must be grouped together first with non-vegetated tiles following + =this > 0 and not (namelist:jules_surface_types=urban_canyon > 0); # Both the canyon and roof surface type must be present + =not(this > 0) and namelist:jules_surface=l_urban2t == '.true.'; # When l_urban2t there must be a canyon and a roof surface type +range=-1,1: +sort-key=Panel-A6c +type=integer +url=http://jules-lsm.github.io/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban_roof diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/HEAD/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/HEAD/rose-meta.conf new file mode 100644 index 0000000000..210458ceec --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/HEAD/rose-meta.conf @@ -0,0 +1,306 @@ +[namelist:jules_surface] +compulsory=true +description=Options for surface parametrisations +ns=namelist/JULES Science Settings/jules_surface +sort-key=Section-A12e +title=Surface options +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html + +[namelist:jules_surface=all_tiles] +compulsory=true +description=Do calculations of tile properties on all tiles (except land ice) + =for all gridpoints even when the tile fraction is zero +!enumeration=true +sort-key=Panel-F10 +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::all_tiles +value-titles=Off,On +values=0,1 + +[namelist:jules_surface=anthrop_heat_mean] +compulsory=true +description=Baseline mean anthropogenic heat flux for Flanner scheme +!kind=double +sort-key=Panel-F03b +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::anthrop_heat_mean + +[namelist:jules_surface=anthrop_heat_option] +compulsory=true +description=Options for calculating anthropogenic heat +!enumeration=true +sort-key=Panel-F03a +trigger=namelist:jules_surface=anthrop_heat_mean: 1; +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::anthrop_heat_option +value-titles=DUKES fixed annual cycle, Flanner latitude-dependent annual and diurnal cycles +values=0,1 + +[namelist:jules_surface=beta1] +compulsory=true +description=Coupling coefficient for co-limitation +!kind=double +ns=namelist/JULES Science Settings/jules_surface/Parameters +sort-key=c +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::beta1 + +[namelist:jules_surface=beta2] +compulsory=true +description=Coupling coefficient for co-limitation +!kind=double +ns=namelist/JULES Science Settings/jules_surface/Parameters +sort-key=d +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::beta2 + +[namelist:jules_surface=beta_cnv_bl] +compulsory=true +description=Convective gustiness parameter in surface exchange +!kind=double +ns=namelist/JULES Science Settings/jules_surface/Parameters +range=0.0: +sort-key=Panel-F11a +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::beta_cnv_bl + +[namelist:jules_surface=cor_mo_iter] +compulsory=true +description=Corrections to Monin-Obukhov surface exchange calculation +!enumeration=true +sort-key=Panel-F11 +trigger=namelist:jules_surface=beta_cnv_bl: 4; +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::cor_mo_iter +value-titles=Correct convective gustiness in low winds, + =Correct U* in dust scheme, + =Limit Obukhov length in low winds, + =Improve initial guess (preferred) +values=1,2,3,4 + +[namelist:jules_surface=fd_hill_option] +compulsory=true +description=Orographic form drag formulation + =NOT AVAILABLE TO STANDALONE +!enumeration=true +help=The distributed version of turbulent orographic form drag can + =use steep or low hill formulations (the steep being the one used with + =effective roughness lengths), or the low hill formulation but with + =the resulting stress capped by that generated from the steep hill + =expression +sort-key=Panel-FX01c +value-titles=steep hill,low hill,capped low hill +values=0,1,2 + +[namelist:jules_surface=fd_stability_dep] +compulsory=true +description=Stability dependence option for orographic form drag + =NOT AVAILABLE TO STANDALONE +!enumeration=true +help=Turbulent orographic form drag can be implemented either using + =effective roughness lengths or as a distributed drag profile + =dependent on the switch namelist:jules_surface=formdrag. + =This drag can either be applied without any stability dependence, + =or dependent on the surface to level 1 Richardson number, or for + =the distributed version, on a bulk Richardson number between the + =surface and the diagnosed middle-layer depth, h_m. +sort-key=Panel-FX01b +value-titles=Off,Surface Ri,Bulk Ri +values=0,1,2 + +[namelist:jules_surface=formdrag] +compulsory=true +description=Orographic form drag option + =NOT AVAILABLE TO STANDALONE +!enumeration=true +fail-if=this != 0 and namelist:jules_model_environment=l_jules_parent == 0; # In standalone formdrag should be 0 +help=Turbulent orographic form drag can be implemented either using + =effective roughness lengths or as an explicit distributed drag profile. + =This option is currently not available to standalone as there + =is no mechanism of providing the necessary ancillary data. +sort-key=Panel-FX01 +trigger=namelist:jules_surface=orog_drag_param: 1,2; + =namelist:jules_surface=fd_stability_dep: 1,2; + =namelist:jules_surface=fd_hill_option: 2; + =namelist:run_stochastic=orog_drag_param_rp: 1,2; +value-titles=No orographic stress,Effective roughness,Distributed Drag +values=0,1,2 + +[namelist:jules_surface=fwe_c3] +compulsory=true +description=Factor in expressions for limitation of photosynthesis + =by transport of products for C3 grass +!kind=double +ns=namelist/JULES Science Settings/jules_surface/Parameters +sort-key=e +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::fwe_c3 + +[namelist:jules_surface=fwe_c4] +compulsory=true +description=Factor in expressions for limitation of photosynthesis + =by transport of products for C4 grass +!kind=double +ns=namelist/JULES Science Settings/jules_surface/Parameters +sort-key=f +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::fwe_c4 + +[namelist:jules_surface=hleaf] +compulsory=true +description=Specific heat capacity of leaves (J / K / kg Carbon) +!kind=double +ns=namelist/JULES Science Settings/jules_surface/Parameters +sort-key=a +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::hleaf + +[namelist:jules_surface=hwood] +compulsory=true +description=Specific heat capacity of wood (J / K / kg Carbon) +!kind=double +ns=namelist/JULES Science Settings/jules_surface/Parameters +sort-key=b +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::hwood + +[namelist:jules_surface=i_modiscopt] +compulsory=true +description=Method of discretization in the surface layer + =NOT AVAILABLE TO STANDALONE +!enumeration=true +fail-if=this !=0 and namelist:jules_model_environment=l_jules_parent == 0; # In standalone i_modiscopt should be 0 +help=Should always be 0 (i.e. off) in standalone. +sort-key=Panel-FX02 +value-titles=Off,On +values=0,1 + +[namelist:jules_surface=iscrntdiag] +compulsory=true +description=Method of diagnosing the screen temperature +!enumeration=true +fail-if=(this == 2 or this == 3) and namelist:jules_model_environment=l_jules_parent == 0; # The preferred option in standalone is 0. The decoupled option specified is not recommended until driving JULES with a decoupled variable is fully tested. +sort-key=Panel-F12 +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::iscrntdiag +value-titles=No decoupling, + =Decoupled in very stable conditions, + =Decoupled with transitional effects, + =Decoupled (T & q) with transitional effects +values=0,1,2,3 + +[namelist:jules_surface=l_anthrop_heat_src] +compulsory=true +description=Use anthropogenic heat source on urban surface types +sort-key=Panel-F03 +trigger=namelist:jules_surface=anthrop_heat_option: .true.; + =namelist:jules_urban=anthrop_heat_scale: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_anthrop_heat_src + +[namelist:jules_surface=l_elev_land_ice] +compulsory=true +description=Use individual tiled bedrock sub-surfaces for land ice tiles +fail-if=this and any(namelist:jules_surface_types=elev_ice < 0) and any(namelist:jules_surface_types=elev_rock < 0); # At least one of elev_ice or elev_rock needs to be used (> 0). + =this and len(namelist:jules_surface_types=elev_ice) == 0 and len(namelist:jules_surface_types=elev_rock) == 0; # At least one of elev_ice or elev_rock needs to be used (> 0). + =this and any(namelist:jules_surface_types=elev_ice < 0) and len(namelist:jules_surface_types=elev_rock) == 0; # At least one of elev_ice or elev_rock needs to be used (> 0). + =this and len(namelist:jules_surface_types=elev_ice) == 0 and any(namelist:jules_surface_types=elev_rock < 0); # At least one of elev_ice or elev_rock needs to be used (> 0). +sort-key=Panel-F04 +trigger=namelist:jules_soil=dzsoil_elev: .true.; + =namelist:jules_snow=rho_firn_albedo: .true.; + =namelist:jules_snow=aicemax: .true.; + =namelist:jules_surface_types=elev_ice: .true.; + =namelist:jules_surface_types=elev_rock: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_elev_land_ice + +[namelist:jules_surface=l_elev_lw_down] +compulsory=true +description=Adjust downward longwave radiation for elevated tiles +sort-key=Panel-F05 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_elev_lw_down + +[namelist:jules_surface=l_epot_corr] +compulsory=true +description=Use correction to calculation of potential evaporation +sort-key=Panel-F06 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_epot_corr + +[namelist:jules_surface=l_flake_model] +compulsory=true +description=Use the Flake model to simulate lakes. (Not yet ready to use with Irrigation or TRIFFID) +sort-key=Panel-F13 +trigger=namelist:jules_flake: .true.; + =namelist:jules_vegetation=l_triffid: .false.; + =namelist:jules_irrig=l_irrig_dmd: .false.; +type=logical + +[namelist:jules_surface=l_land_ice_imp] +compulsory=true +description=Use implicit numerics to update land ice temperatures +sort-key=Panel-F07 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_land_ice_imp + +[namelist:jules_surface=l_mo_buoyancy_calc] +compulsory=true +description=Switch for using interacting buoyancy in Monin-Obukhov calculation +sort-key=Panel-F14 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_mo_buoyancy_calc + +[namelist:jules_surface=l_point_data] +compulsory=true +description=Using point rainfall data +sort-key=Panel-F08 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_point_data + +[namelist:jules_surface=l_urban2t] +compulsory=true +description=Switch for using the two-tile urban schemes (including MORUSES) +sort-key=Panel-F09 +trigger=namelist:jules_surface_types=urban_canyon: .true.; + =namelist:jules_surface_types=urban_roof: .true.; + =namelist:jules_surface_types=urban: .false.; + =namelist:jules_urban: .true.; + =namelist:jules_urban=anthrop_heat_scale: .true.; + =namelist:urban_properties: .true.; + =namelist:run_stochastic=z0_urban_mult_rp: .true. ; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_urban2t + +[namelist:jules_surface=l_vary_z0m_soil] +compulsory=true +description=Enable soil roughness to be set from ancillary file + =NOT AVAILABLE TO STANDALONE +fail-if=this == '.true.' and namelist:jules_model_environment=l_jules_parent == 0; # Variable roughness length of bare soil is currently not available to standalone. +!kind=default +sort-key=Panel-FX04 +type=logical + +[namelist:jules_surface=orog_drag_param] +compulsory=true +description=Drag coefficient for orographic form drag + =NOT AVAILABLE TO STANDALONE +!kind=double +range=0.01:10.0 +sort-key=Panel-FX01a +type=real + +[namelist:jules_surface=srf_ex_cnv_gust] +compulsory=true +description=Include effect of convective downdraughts on surface exchange + =NOT AVAILABLE TO STANDALONE +fail-if=this !=0 and namelist:jules_model_environment=l_jules_parent == 0; # This is not currently available to standalone. +help=Surface exchange is affected by the mean wind, + =eddies spanning the depth + =of the boundary layer and eddies driven by convective downdraughts. + =Originally in the UM only boundary layer eddies were considered. If + =convective downdraughts are included, + =the impact of boundary-layer + =eddies on surface exchange is reduced and convective eddies are + =explicitly included using a parametrization due to Redelsperger + =et al. (2000), + =J. Climate,13,p. 402. +!kind=default +sort-key=Panel-FX03 +trigger=namelist:run_convection=cnv_cold_pools: 1; diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn2.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn2.0/rose-meta.conf new file mode 100644 index 0000000000..3216cc4714 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn2.0/rose-meta.conf @@ -0,0 +1,80 @@ +[namelist:jules_surface] +compulsory=true +description=Options for surface parametrisations +ns=namelist/JULES Science Settings/jules_surface +sort-key=Section-A12c +title=Surface options +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html + +[namelist:jules_surface=cor_mo_iter] +compulsory=true +description=Corrections to Monin-Obukhov surface exchange calculation +!enumeration=true +sort-key=Panel-F11 +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::cor_mo_iter + +[namelist:jules_surface=fd_stability_dep] +compulsory=true +description=Stability dependence option for orographic form drag + =NOT AVAILABLE TO STANDALONE +!enumeration=true +help=Turbulent orographic form drag can be implemented either using + =effective roughness lengths or as a distributed drag profile + =dependent on the switch namelist:jules_surface=formdrag. + =This drag can either be applied without any stability dependence, + =or dependent on the surface to level 1 Richardson number, or for + =the distributed version, on a bulk Richardson number between the + =surface and the diagnosed middle-layer depth, h_m. +sort-key=Panel-FX01b + +[namelist:jules_surface=formdrag] +compulsory=true +description=Orographic form drag option + =NOT AVAILABLE TO STANDALONE +!enumeration=true +help=Turbulent orographic form drag can be implemented either using + =effective roughness lengths or as an explicit distributed drag profile. + =This option is currently not available to standalone as there + =is no mechanism of providing the necessary ancillary data. +sort-key=Panel-FX01 +value-titles=No orographic stress,Effective roughness,Distributed Drag + +[namelist:jules_surface=l_anthrop_heat_src] +compulsory=true +description=Use anthropogenic heat source on urban surface types +sort-key=Panel-F03 +trigger=namelist:jules_urban=anthrop_heat_scale: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_anthrop_heat_src + +[namelist:jules_surface=l_urban2t] +compulsory=true +description=Switch for using the two-tile urban schemes (including MORUSES) +sort-key=Panel-F09 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_urban2t + +[namelist:jules_surface=l_vary_z0m_soil] +compulsory=true +description=Enable soil roughness to be set from ancillary file + =NOT AVAILABLE TO STANDALONE +!kind=default +sort-key=Panel-FX04 +type=logical + +[namelist:jules_surface=srf_ex_cnv_gust] +compulsory=true +description=Include effect of convective downdraughts on surface exchange + =NOT AVAILABLE TO STANDALONE +help=Surface exchange is affected by the mean wind, + =eddies spanning the depth + =of the boundary layer and eddies driven by convective downdraughts. + =Originally in the UM only boundary layer eddies were considered. If + =convective downdraughts are included, + =the impact of boundary-layer + =eddies on surface exchange is reduced and convective eddies are + =explicitly included using a parametrization due to Redelsperger + =et al. (2000), + =J. Climate,13,p. 402. +!kind=default +sort-key=Panel-FX03 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn2.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn2.1/rose-meta.conf new file mode 100644 index 0000000000..3216cc4714 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn2.1/rose-meta.conf @@ -0,0 +1,80 @@ +[namelist:jules_surface] +compulsory=true +description=Options for surface parametrisations +ns=namelist/JULES Science Settings/jules_surface +sort-key=Section-A12c +title=Surface options +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html + +[namelist:jules_surface=cor_mo_iter] +compulsory=true +description=Corrections to Monin-Obukhov surface exchange calculation +!enumeration=true +sort-key=Panel-F11 +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::cor_mo_iter + +[namelist:jules_surface=fd_stability_dep] +compulsory=true +description=Stability dependence option for orographic form drag + =NOT AVAILABLE TO STANDALONE +!enumeration=true +help=Turbulent orographic form drag can be implemented either using + =effective roughness lengths or as a distributed drag profile + =dependent on the switch namelist:jules_surface=formdrag. + =This drag can either be applied without any stability dependence, + =or dependent on the surface to level 1 Richardson number, or for + =the distributed version, on a bulk Richardson number between the + =surface and the diagnosed middle-layer depth, h_m. +sort-key=Panel-FX01b + +[namelist:jules_surface=formdrag] +compulsory=true +description=Orographic form drag option + =NOT AVAILABLE TO STANDALONE +!enumeration=true +help=Turbulent orographic form drag can be implemented either using + =effective roughness lengths or as an explicit distributed drag profile. + =This option is currently not available to standalone as there + =is no mechanism of providing the necessary ancillary data. +sort-key=Panel-FX01 +value-titles=No orographic stress,Effective roughness,Distributed Drag + +[namelist:jules_surface=l_anthrop_heat_src] +compulsory=true +description=Use anthropogenic heat source on urban surface types +sort-key=Panel-F03 +trigger=namelist:jules_urban=anthrop_heat_scale: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_anthrop_heat_src + +[namelist:jules_surface=l_urban2t] +compulsory=true +description=Switch for using the two-tile urban schemes (including MORUSES) +sort-key=Panel-F09 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_urban2t + +[namelist:jules_surface=l_vary_z0m_soil] +compulsory=true +description=Enable soil roughness to be set from ancillary file + =NOT AVAILABLE TO STANDALONE +!kind=default +sort-key=Panel-FX04 +type=logical + +[namelist:jules_surface=srf_ex_cnv_gust] +compulsory=true +description=Include effect of convective downdraughts on surface exchange + =NOT AVAILABLE TO STANDALONE +help=Surface exchange is affected by the mean wind, + =eddies spanning the depth + =of the boundary layer and eddies driven by convective downdraughts. + =Originally in the UM only boundary layer eddies were considered. If + =convective downdraughts are included, + =the impact of boundary-layer + =eddies on surface exchange is reduced and convective eddies are + =explicitly included using a parametrization due to Redelsperger + =et al. (2000), + =J. Climate,13,p. 402. +!kind=default +sort-key=Panel-FX03 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn2.2/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn2.2/rose-meta.conf new file mode 100644 index 0000000000..a169156ea9 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn2.2/rose-meta.conf @@ -0,0 +1,97 @@ +[namelist:jules_surface] +compulsory=true +description=Options for surface parametrisations +ns=namelist/JULES Science Settings/jules_surface +sort-key=Section-A12e +title=Surface options +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html + +[namelist:jules_surface=cor_mo_iter] +compulsory=true +description=Corrections to Monin-Obukhov surface exchange calculation +!enumeration=true +sort-key=Panel-F11 +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::cor_mo_iter +value-titles=Correct convective gustiness in low winds, + =Correct U* in dust scheme, + =Limit Obukhov length in low winds, + =Improve initial guess (preferred) +values=1,2,3,4 + +[namelist:jules_surface=fd_stability_dep] +compulsory=true +description=Stability dependence option for orographic form drag + =NOT AVAILABLE TO STANDALONE +!enumeration=true +help=Turbulent orographic form drag can be implemented either using + =effective roughness lengths or as a distributed drag profile + =dependent on the switch namelist:jules_surface=formdrag. + =This drag can either be applied without any stability dependence, + =or dependent on the surface to level 1 Richardson number, or for + =the distributed version, on a bulk Richardson number between the + =surface and the diagnosed middle-layer depth, h_m. +sort-key=Panel-FX01b +value-titles=Off,Surface Ri,Bulk Ri +values=0,1,2 + +[namelist:jules_surface=formdrag] +compulsory=true +description=Orographic form drag option + =NOT AVAILABLE TO STANDALONE +!enumeration=true +help=Turbulent orographic form drag can be implemented either using + =effective roughness lengths or as an explicit distributed drag profile. + =This option is currently not available to standalone as there + =is no mechanism of providing the necessary ancillary data. +sort-key=Panel-FX01 +trigger=namelist:jules_surface=orog_drag_param: 1,2; + =namelist:jules_surface=fd_stability_dep: 1,2; + =namelist:jules_surface=fd_hill_option: 2; +value-titles=No orographic stress,Effective roughness,Distributed Drag +values=0,1,2 + +[namelist:jules_surface=l_anthrop_heat_src] +compulsory=true +description=Use anthropogenic heat source on urban surface types +sort-key=Panel-F03 +trigger=namelist:jules_urban=anthrop_heat_scale: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_anthrop_heat_src + +[namelist:jules_surface=l_urban2t] +compulsory=true +description=Switch for using the two-tile urban schemes (including MORUSES) +sort-key=Panel-F09 +trigger=namelist:jules_surface_types=urban_canyon: .true.; + =namelist:jules_surface_types=urban_roof: .true.; + =namelist:jules_surface_types=urban: .false.; + =namelist:jules_urban: .true.; + =namelist:jules_urban=anthrop_heat_scale: .true.; + =namelist:urban_properties: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_urban2t + +[namelist:jules_surface=l_vary_z0m_soil] +compulsory=true +description=Enable soil roughness to be set from ancillary file + =NOT AVAILABLE TO STANDALONE +!kind=default +sort-key=Panel-FX04 +type=logical + +[namelist:jules_surface=srf_ex_cnv_gust] +compulsory=true +description=Include effect of convective downdraughts on surface exchange + =NOT AVAILABLE TO STANDALONE +help=Surface exchange is affected by the mean wind, + =eddies spanning the depth + =of the boundary layer and eddies driven by convective downdraughts. + =Originally in the UM only boundary layer eddies were considered. If + =convective downdraughts are included, + =the impact of boundary-layer + =eddies on surface exchange is reduced and convective eddies are + =explicitly included using a parametrization due to Redelsperger + =et al. (2000), + =J. Climate,13,p. 402. +!kind=default +sort-key=Panel-FX03 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn3.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn3.0/rose-meta.conf new file mode 100644 index 0000000000..298fad335a --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn3.0/rose-meta.conf @@ -0,0 +1,115 @@ +[namelist:jules_surface] +compulsory=true +description=Options for surface parametrisations +ns=namelist/JULES Science Settings/jules_surface +sort-key=Section-A12e +title=Surface options +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html + +[namelist:jules_surface=anthrop_heat_mean] +compulsory=true +description=Baseline mean anthropogenic heat flux for Flanner scheme +sort-key=Panel-F03b +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::anthrop_heat_mean + +[namelist:jules_surface=anthrop_heat_option] +compulsory=true +description=Options for calculating anthropogenic heat +!enumeration=true +sort-key=Panel-F03a +trigger=namelist:jules_surface=anthrop_heat_mean: 1; +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::anthrop_heat_option +value-titles=DUKES fixed annual cycle, Flanner latitude-dependent annual and diurnal cycles +values=0,1 + +[namelist:jules_surface=cor_mo_iter] +compulsory=true +description=Corrections to Monin-Obukhov surface exchange calculation +!enumeration=true +sort-key=Panel-F11 +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::cor_mo_iter +value-titles=Correct convective gustiness in low winds, + =Correct U* in dust scheme, + =Limit Obukhov length in low winds, + =Improve initial guess (preferred) +values=1,2,3,4 + +[namelist:jules_surface=fd_stability_dep] +compulsory=true +description=Stability dependence option for orographic form drag + =NOT AVAILABLE TO STANDALONE +!enumeration=true +help=Turbulent orographic form drag can be implemented either using + =effective roughness lengths or as a distributed drag profile + =dependent on the switch namelist:jules_surface=formdrag. + =This drag can either be applied without any stability dependence, + =or dependent on the surface to level 1 Richardson number, or for + =the distributed version, on a bulk Richardson number between the + =surface and the diagnosed middle-layer depth, h_m. +sort-key=Panel-FX01b +value-titles=Off,Surface Ri,Bulk Ri +values=0,1,2 + +[namelist:jules_surface=formdrag] +compulsory=true +description=Orographic form drag option + =NOT AVAILABLE TO STANDALONE +!enumeration=true +help=Turbulent orographic form drag can be implemented either using + =effective roughness lengths or as an explicit distributed drag profile. + =This option is currently not available to standalone as there + =is no mechanism of providing the necessary ancillary data. +sort-key=Panel-FX01 +trigger=namelist:jules_surface=orog_drag_param: 1,2; + =namelist:jules_surface=fd_stability_dep: 1,2; + =namelist:jules_surface=fd_hill_option: 2; +value-titles=No orographic stress,Effective roughness,Distributed Drag +values=0,1,2 + +[namelist:jules_surface=l_anthrop_heat_src] +compulsory=true +description=Use anthropogenic heat source on urban surface types +sort-key=Panel-F03 +trigger=namelist:jules_surface=anthrop_heat_option: .true.; + =namelist:jules_urban=anthrop_heat_scale: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_anthrop_heat_src + +[namelist:jules_surface=l_urban2t] +compulsory=true +description=Switch for using the two-tile urban schemes (including MORUSES) +sort-key=Panel-F09 +trigger=namelist:jules_surface_types=urban_canyon: .true.; + =namelist:jules_surface_types=urban_roof: .true.; + =namelist:jules_surface_types=urban: .false.; + =namelist:jules_urban: .true.; + =namelist:jules_urban=anthrop_heat_scale: .true.; + =namelist:urban_properties: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_urban2t + +[namelist:jules_surface=l_vary_z0m_soil] +compulsory=true +description=Enable soil roughness to be set from ancillary file + =NOT AVAILABLE TO STANDALONE +!kind=default +sort-key=Panel-FX04 +type=logical + +[namelist:jules_surface=srf_ex_cnv_gust] +compulsory=true +description=Include effect of convective downdraughts on surface exchange + =NOT AVAILABLE TO STANDALONE +help=Surface exchange is affected by the mean wind, + =eddies spanning the depth + =of the boundary layer and eddies driven by convective downdraughts. + =Originally in the UM only boundary layer eddies were considered. If + =convective downdraughts are included, + =the impact of boundary-layer + =eddies on surface exchange is reduced and convective eddies are + =explicitly included using a parametrization due to Redelsperger + =et al. (2000), + =J. Climate,13,p. 402. +!kind=default +sort-key=Panel-FX03 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn3.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn3.1/rose-meta.conf new file mode 100644 index 0000000000..210458ceec --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-surface/vn3.1/rose-meta.conf @@ -0,0 +1,306 @@ +[namelist:jules_surface] +compulsory=true +description=Options for surface parametrisations +ns=namelist/JULES Science Settings/jules_surface +sort-key=Section-A12e +title=Surface options +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html + +[namelist:jules_surface=all_tiles] +compulsory=true +description=Do calculations of tile properties on all tiles (except land ice) + =for all gridpoints even when the tile fraction is zero +!enumeration=true +sort-key=Panel-F10 +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::all_tiles +value-titles=Off,On +values=0,1 + +[namelist:jules_surface=anthrop_heat_mean] +compulsory=true +description=Baseline mean anthropogenic heat flux for Flanner scheme +!kind=double +sort-key=Panel-F03b +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::anthrop_heat_mean + +[namelist:jules_surface=anthrop_heat_option] +compulsory=true +description=Options for calculating anthropogenic heat +!enumeration=true +sort-key=Panel-F03a +trigger=namelist:jules_surface=anthrop_heat_mean: 1; +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::anthrop_heat_option +value-titles=DUKES fixed annual cycle, Flanner latitude-dependent annual and diurnal cycles +values=0,1 + +[namelist:jules_surface=beta1] +compulsory=true +description=Coupling coefficient for co-limitation +!kind=double +ns=namelist/JULES Science Settings/jules_surface/Parameters +sort-key=c +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::beta1 + +[namelist:jules_surface=beta2] +compulsory=true +description=Coupling coefficient for co-limitation +!kind=double +ns=namelist/JULES Science Settings/jules_surface/Parameters +sort-key=d +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::beta2 + +[namelist:jules_surface=beta_cnv_bl] +compulsory=true +description=Convective gustiness parameter in surface exchange +!kind=double +ns=namelist/JULES Science Settings/jules_surface/Parameters +range=0.0: +sort-key=Panel-F11a +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::beta_cnv_bl + +[namelist:jules_surface=cor_mo_iter] +compulsory=true +description=Corrections to Monin-Obukhov surface exchange calculation +!enumeration=true +sort-key=Panel-F11 +trigger=namelist:jules_surface=beta_cnv_bl: 4; +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::cor_mo_iter +value-titles=Correct convective gustiness in low winds, + =Correct U* in dust scheme, + =Limit Obukhov length in low winds, + =Improve initial guess (preferred) +values=1,2,3,4 + +[namelist:jules_surface=fd_hill_option] +compulsory=true +description=Orographic form drag formulation + =NOT AVAILABLE TO STANDALONE +!enumeration=true +help=The distributed version of turbulent orographic form drag can + =use steep or low hill formulations (the steep being the one used with + =effective roughness lengths), or the low hill formulation but with + =the resulting stress capped by that generated from the steep hill + =expression +sort-key=Panel-FX01c +value-titles=steep hill,low hill,capped low hill +values=0,1,2 + +[namelist:jules_surface=fd_stability_dep] +compulsory=true +description=Stability dependence option for orographic form drag + =NOT AVAILABLE TO STANDALONE +!enumeration=true +help=Turbulent orographic form drag can be implemented either using + =effective roughness lengths or as a distributed drag profile + =dependent on the switch namelist:jules_surface=formdrag. + =This drag can either be applied without any stability dependence, + =or dependent on the surface to level 1 Richardson number, or for + =the distributed version, on a bulk Richardson number between the + =surface and the diagnosed middle-layer depth, h_m. +sort-key=Panel-FX01b +value-titles=Off,Surface Ri,Bulk Ri +values=0,1,2 + +[namelist:jules_surface=formdrag] +compulsory=true +description=Orographic form drag option + =NOT AVAILABLE TO STANDALONE +!enumeration=true +fail-if=this != 0 and namelist:jules_model_environment=l_jules_parent == 0; # In standalone formdrag should be 0 +help=Turbulent orographic form drag can be implemented either using + =effective roughness lengths or as an explicit distributed drag profile. + =This option is currently not available to standalone as there + =is no mechanism of providing the necessary ancillary data. +sort-key=Panel-FX01 +trigger=namelist:jules_surface=orog_drag_param: 1,2; + =namelist:jules_surface=fd_stability_dep: 1,2; + =namelist:jules_surface=fd_hill_option: 2; + =namelist:run_stochastic=orog_drag_param_rp: 1,2; +value-titles=No orographic stress,Effective roughness,Distributed Drag +values=0,1,2 + +[namelist:jules_surface=fwe_c3] +compulsory=true +description=Factor in expressions for limitation of photosynthesis + =by transport of products for C3 grass +!kind=double +ns=namelist/JULES Science Settings/jules_surface/Parameters +sort-key=e +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::fwe_c3 + +[namelist:jules_surface=fwe_c4] +compulsory=true +description=Factor in expressions for limitation of photosynthesis + =by transport of products for C4 grass +!kind=double +ns=namelist/JULES Science Settings/jules_surface/Parameters +sort-key=f +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::fwe_c4 + +[namelist:jules_surface=hleaf] +compulsory=true +description=Specific heat capacity of leaves (J / K / kg Carbon) +!kind=double +ns=namelist/JULES Science Settings/jules_surface/Parameters +sort-key=a +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::hleaf + +[namelist:jules_surface=hwood] +compulsory=true +description=Specific heat capacity of wood (J / K / kg Carbon) +!kind=double +ns=namelist/JULES Science Settings/jules_surface/Parameters +sort-key=b +type=real +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::hwood + +[namelist:jules_surface=i_modiscopt] +compulsory=true +description=Method of discretization in the surface layer + =NOT AVAILABLE TO STANDALONE +!enumeration=true +fail-if=this !=0 and namelist:jules_model_environment=l_jules_parent == 0; # In standalone i_modiscopt should be 0 +help=Should always be 0 (i.e. off) in standalone. +sort-key=Panel-FX02 +value-titles=Off,On +values=0,1 + +[namelist:jules_surface=iscrntdiag] +compulsory=true +description=Method of diagnosing the screen temperature +!enumeration=true +fail-if=(this == 2 or this == 3) and namelist:jules_model_environment=l_jules_parent == 0; # The preferred option in standalone is 0. The decoupled option specified is not recommended until driving JULES with a decoupled variable is fully tested. +sort-key=Panel-F12 +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::iscrntdiag +value-titles=No decoupling, + =Decoupled in very stable conditions, + =Decoupled with transitional effects, + =Decoupled (T & q) with transitional effects +values=0,1,2,3 + +[namelist:jules_surface=l_anthrop_heat_src] +compulsory=true +description=Use anthropogenic heat source on urban surface types +sort-key=Panel-F03 +trigger=namelist:jules_surface=anthrop_heat_option: .true.; + =namelist:jules_urban=anthrop_heat_scale: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_anthrop_heat_src + +[namelist:jules_surface=l_elev_land_ice] +compulsory=true +description=Use individual tiled bedrock sub-surfaces for land ice tiles +fail-if=this and any(namelist:jules_surface_types=elev_ice < 0) and any(namelist:jules_surface_types=elev_rock < 0); # At least one of elev_ice or elev_rock needs to be used (> 0). + =this and len(namelist:jules_surface_types=elev_ice) == 0 and len(namelist:jules_surface_types=elev_rock) == 0; # At least one of elev_ice or elev_rock needs to be used (> 0). + =this and any(namelist:jules_surface_types=elev_ice < 0) and len(namelist:jules_surface_types=elev_rock) == 0; # At least one of elev_ice or elev_rock needs to be used (> 0). + =this and len(namelist:jules_surface_types=elev_ice) == 0 and any(namelist:jules_surface_types=elev_rock < 0); # At least one of elev_ice or elev_rock needs to be used (> 0). +sort-key=Panel-F04 +trigger=namelist:jules_soil=dzsoil_elev: .true.; + =namelist:jules_snow=rho_firn_albedo: .true.; + =namelist:jules_snow=aicemax: .true.; + =namelist:jules_surface_types=elev_ice: .true.; + =namelist:jules_surface_types=elev_rock: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_elev_land_ice + +[namelist:jules_surface=l_elev_lw_down] +compulsory=true +description=Adjust downward longwave radiation for elevated tiles +sort-key=Panel-F05 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_elev_lw_down + +[namelist:jules_surface=l_epot_corr] +compulsory=true +description=Use correction to calculation of potential evaporation +sort-key=Panel-F06 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_epot_corr + +[namelist:jules_surface=l_flake_model] +compulsory=true +description=Use the Flake model to simulate lakes. (Not yet ready to use with Irrigation or TRIFFID) +sort-key=Panel-F13 +trigger=namelist:jules_flake: .true.; + =namelist:jules_vegetation=l_triffid: .false.; + =namelist:jules_irrig=l_irrig_dmd: .false.; +type=logical + +[namelist:jules_surface=l_land_ice_imp] +compulsory=true +description=Use implicit numerics to update land ice temperatures +sort-key=Panel-F07 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_land_ice_imp + +[namelist:jules_surface=l_mo_buoyancy_calc] +compulsory=true +description=Switch for using interacting buoyancy in Monin-Obukhov calculation +sort-key=Panel-F14 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_mo_buoyancy_calc + +[namelist:jules_surface=l_point_data] +compulsory=true +description=Using point rainfall data +sort-key=Panel-F08 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_point_data + +[namelist:jules_surface=l_urban2t] +compulsory=true +description=Switch for using the two-tile urban schemes (including MORUSES) +sort-key=Panel-F09 +trigger=namelist:jules_surface_types=urban_canyon: .true.; + =namelist:jules_surface_types=urban_roof: .true.; + =namelist:jules_surface_types=urban: .false.; + =namelist:jules_urban: .true.; + =namelist:jules_urban=anthrop_heat_scale: .true.; + =namelist:urban_properties: .true.; + =namelist:run_stochastic=z0_urban_mult_rp: .true. ; +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_surface.nml.html#JULES_SURFACE::l_urban2t + +[namelist:jules_surface=l_vary_z0m_soil] +compulsory=true +description=Enable soil roughness to be set from ancillary file + =NOT AVAILABLE TO STANDALONE +fail-if=this == '.true.' and namelist:jules_model_environment=l_jules_parent == 0; # Variable roughness length of bare soil is currently not available to standalone. +!kind=default +sort-key=Panel-FX04 +type=logical + +[namelist:jules_surface=orog_drag_param] +compulsory=true +description=Drag coefficient for orographic form drag + =NOT AVAILABLE TO STANDALONE +!kind=double +range=0.01:10.0 +sort-key=Panel-FX01a +type=real + +[namelist:jules_surface=srf_ex_cnv_gust] +compulsory=true +description=Include effect of convective downdraughts on surface exchange + =NOT AVAILABLE TO STANDALONE +fail-if=this !=0 and namelist:jules_model_environment=l_jules_parent == 0; # This is not currently available to standalone. +help=Surface exchange is affected by the mean wind, + =eddies spanning the depth + =of the boundary layer and eddies driven by convective downdraughts. + =Originally in the UM only boundary layer eddies were considered. If + =convective downdraughts are included, + =the impact of boundary-layer + =eddies on surface exchange is reduced and convective eddies are + =explicitly included using a parametrization due to Redelsperger + =et al. (2000), + =J. Climate,13,p. 402. +!kind=default +sort-key=Panel-FX03 +trigger=namelist:run_convection=cnv_cold_pools: 1; diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/HEAD/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/HEAD/rose-meta.conf new file mode 100644 index 0000000000..4f1e6fb273 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/HEAD/rose-meta.conf @@ -0,0 +1,50 @@ +[namelist:jules_urban] +compulsory=true +description=Sets the options available for the two-tile urban schemes including + =MORUSES. For all other parameters that MORUSES does not + =provide and for any MORUSES parametrisations that are turned + =off, values from "Non-vegetated surface parameters" will be + =used instead. See help for more information. +ns=namelist/JULES Science Settings/jules_urban +sort-key=Section-A12o +title=Urban options +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#namelist-JULES_URBAN + +[namelist:jules_urban=anthrop_heat_scale] +compulsory=true +description=Distribution scaling factor for anthropogenic heat flux +!kind=default +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::anthrop_heat_scale + +[namelist:jules_urban=l_moruses_albedo] +compulsory=true +description=Use MORUSES parameterisation for effective canyon albedo (snow free) +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_albedo + +[namelist:jules_urban=l_moruses_emissivity] +compulsory=true +description=Use MORUSES parameterisation for effective canyon emissivity +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_emissivity + +[namelist:jules_urban=l_moruses_rough] +compulsory=true +description=Use MORUSES parameterisation for effective roughness length for heat +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_rough + +[namelist:jules_urban=l_moruses_storage] +compulsory=true +description=Use MORUSES parameterisation for thermal inertia and coupling with underlying soil +trigger=namelist:jules_urban=l_moruses_storage_thin: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_storage + +[namelist:jules_urban=l_moruses_storage_thin] +compulsory=true +description=Use thin roofs (includes effects of insulation) +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_storage_thin diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn2.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn2.0/rose-meta.conf new file mode 100644 index 0000000000..43a5d04b92 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn2.0/rose-meta.conf @@ -0,0 +1,50 @@ +[namelist:jules_urban] +compulsory=true +description=Sets the options available for the two-tile urban schemes including + =MORUSES. For all other parameters that MORUSES does not + =provide and for any MORUSES parametrisations that are turned + =off, values from "Non-vegetated surface parameters" will be + =used instead. See help for more information. +ns=namelist/JULES Science Settings/jules_urban +sort-key=Section-A12g +title=Urban options +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#namelist-JULES_URBAN + +[namelist:jules_urban=anthrop_heat_scale] +compulsory=true +description=Distribution scaling factor for anthropogenic heat flux +!kind=default +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::anthrop_heat_scale + +[namelist:jules_urban=l_moruses_albedo] +compulsory=true +description=Use MORUSES parameterisation for effective canyon albedo (snow free) +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_albedo + +[namelist:jules_urban=l_moruses_emissivity] +compulsory=true +description=Use MORUSES parameterisation for effective canyon emissivity +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_emissivity + +[namelist:jules_urban=l_moruses_rough] +compulsory=true +description=Use MORUSES parameterisation for effective roughness length for heat +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_rough + +[namelist:jules_urban=l_moruses_storage] +compulsory=true +description=Use MORUSES parameterisation for thermal inertia and coupling with underlying soil +trigger=namelist:jules_urban=l_moruses_storage_thin: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_storage + +[namelist:jules_urban=l_moruses_storage_thin] +compulsory=true +description=Use thin roofs (includes effects of insulation) +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_storage_thin diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn2.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn2.1/rose-meta.conf new file mode 100644 index 0000000000..43a5d04b92 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn2.1/rose-meta.conf @@ -0,0 +1,50 @@ +[namelist:jules_urban] +compulsory=true +description=Sets the options available for the two-tile urban schemes including + =MORUSES. For all other parameters that MORUSES does not + =provide and for any MORUSES parametrisations that are turned + =off, values from "Non-vegetated surface parameters" will be + =used instead. See help for more information. +ns=namelist/JULES Science Settings/jules_urban +sort-key=Section-A12g +title=Urban options +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#namelist-JULES_URBAN + +[namelist:jules_urban=anthrop_heat_scale] +compulsory=true +description=Distribution scaling factor for anthropogenic heat flux +!kind=default +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::anthrop_heat_scale + +[namelist:jules_urban=l_moruses_albedo] +compulsory=true +description=Use MORUSES parameterisation for effective canyon albedo (snow free) +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_albedo + +[namelist:jules_urban=l_moruses_emissivity] +compulsory=true +description=Use MORUSES parameterisation for effective canyon emissivity +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_emissivity + +[namelist:jules_urban=l_moruses_rough] +compulsory=true +description=Use MORUSES parameterisation for effective roughness length for heat +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_rough + +[namelist:jules_urban=l_moruses_storage] +compulsory=true +description=Use MORUSES parameterisation for thermal inertia and coupling with underlying soil +trigger=namelist:jules_urban=l_moruses_storage_thin: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_storage + +[namelist:jules_urban=l_moruses_storage_thin] +compulsory=true +description=Use thin roofs (includes effects of insulation) +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_storage_thin diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn2.2/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn2.2/rose-meta.conf new file mode 100644 index 0000000000..4f1e6fb273 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn2.2/rose-meta.conf @@ -0,0 +1,50 @@ +[namelist:jules_urban] +compulsory=true +description=Sets the options available for the two-tile urban schemes including + =MORUSES. For all other parameters that MORUSES does not + =provide and for any MORUSES parametrisations that are turned + =off, values from "Non-vegetated surface parameters" will be + =used instead. See help for more information. +ns=namelist/JULES Science Settings/jules_urban +sort-key=Section-A12o +title=Urban options +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#namelist-JULES_URBAN + +[namelist:jules_urban=anthrop_heat_scale] +compulsory=true +description=Distribution scaling factor for anthropogenic heat flux +!kind=default +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::anthrop_heat_scale + +[namelist:jules_urban=l_moruses_albedo] +compulsory=true +description=Use MORUSES parameterisation for effective canyon albedo (snow free) +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_albedo + +[namelist:jules_urban=l_moruses_emissivity] +compulsory=true +description=Use MORUSES parameterisation for effective canyon emissivity +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_emissivity + +[namelist:jules_urban=l_moruses_rough] +compulsory=true +description=Use MORUSES parameterisation for effective roughness length for heat +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_rough + +[namelist:jules_urban=l_moruses_storage] +compulsory=true +description=Use MORUSES parameterisation for thermal inertia and coupling with underlying soil +trigger=namelist:jules_urban=l_moruses_storage_thin: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_storage + +[namelist:jules_urban=l_moruses_storage_thin] +compulsory=true +description=Use thin roofs (includes effects of insulation) +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_storage_thin diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn3.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn3.0/rose-meta.conf new file mode 100644 index 0000000000..4f1e6fb273 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn3.0/rose-meta.conf @@ -0,0 +1,50 @@ +[namelist:jules_urban] +compulsory=true +description=Sets the options available for the two-tile urban schemes including + =MORUSES. For all other parameters that MORUSES does not + =provide and for any MORUSES parametrisations that are turned + =off, values from "Non-vegetated surface parameters" will be + =used instead. See help for more information. +ns=namelist/JULES Science Settings/jules_urban +sort-key=Section-A12o +title=Urban options +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#namelist-JULES_URBAN + +[namelist:jules_urban=anthrop_heat_scale] +compulsory=true +description=Distribution scaling factor for anthropogenic heat flux +!kind=default +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::anthrop_heat_scale + +[namelist:jules_urban=l_moruses_albedo] +compulsory=true +description=Use MORUSES parameterisation for effective canyon albedo (snow free) +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_albedo + +[namelist:jules_urban=l_moruses_emissivity] +compulsory=true +description=Use MORUSES parameterisation for effective canyon emissivity +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_emissivity + +[namelist:jules_urban=l_moruses_rough] +compulsory=true +description=Use MORUSES parameterisation for effective roughness length for heat +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_rough + +[namelist:jules_urban=l_moruses_storage] +compulsory=true +description=Use MORUSES parameterisation for thermal inertia and coupling with underlying soil +trigger=namelist:jules_urban=l_moruses_storage_thin: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_storage + +[namelist:jules_urban=l_moruses_storage_thin] +compulsory=true +description=Use thin roofs (includes effects of insulation) +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_storage_thin diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn3.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn3.1/rose-meta.conf new file mode 100644 index 0000000000..4f1e6fb273 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-urban/vn3.1/rose-meta.conf @@ -0,0 +1,50 @@ +[namelist:jules_urban] +compulsory=true +description=Sets the options available for the two-tile urban schemes including + =MORUSES. For all other parameters that MORUSES does not + =provide and for any MORUSES parametrisations that are turned + =off, values from "Non-vegetated surface parameters" will be + =used instead. See help for more information. +ns=namelist/JULES Science Settings/jules_urban +sort-key=Section-A12o +title=Urban options +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#namelist-JULES_URBAN + +[namelist:jules_urban=anthrop_heat_scale] +compulsory=true +description=Distribution scaling factor for anthropogenic heat flux +!kind=default +range=0:1 +type=real +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::anthrop_heat_scale + +[namelist:jules_urban=l_moruses_albedo] +compulsory=true +description=Use MORUSES parameterisation for effective canyon albedo (snow free) +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_albedo + +[namelist:jules_urban=l_moruses_emissivity] +compulsory=true +description=Use MORUSES parameterisation for effective canyon emissivity +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_emissivity + +[namelist:jules_urban=l_moruses_rough] +compulsory=true +description=Use MORUSES parameterisation for effective roughness length for heat +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_rough + +[namelist:jules_urban=l_moruses_storage] +compulsory=true +description=Use MORUSES parameterisation for thermal inertia and coupling with underlying soil +trigger=namelist:jules_urban=l_moruses_storage_thin: .true.; +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_storage + +[namelist:jules_urban=l_moruses_storage_thin] +compulsory=true +description=Use thin roofs (includes effects of insulation) +type=logical +url=http://jules-lsm.github.io/latest/namelists/urban.nml.html#JULES_URBAN::l_moruses_storage_thin diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/HEAD/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/HEAD/rose-meta.conf new file mode 100644 index 0000000000..f59be621ca --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/HEAD/rose-meta.conf @@ -0,0 +1,34 @@ +[namelist:jules_vegetation] +compulsory=true +description=Options for vegetation parametrisations +ns=namelist/JULES Science Settings/jules_vegetation +sort-key=Section-A12f +title=Vegetation options +url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html + +[namelist:jules_vegetation=can_rad_mod] +compulsory=true +description=Vegetation canopy radiation model +!enumeration=true +sort-key=Panel-I13 +url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::can_rad_mod +value-titles=1: Single canopy layer, + =4: Multi-layer two stream approach, + =5: Multi-layer with Sunfleck penetration and sunlit and shaded leaves, + =6: Multi-layer with exponential decline in leaf N + +[namelist:jules_vegetation=l_limit_canhc] +compulsory=true +description=Logical for capping vegetation canopy areal thermal heat capacity +!kind=default +sort-key=Panel-I04 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_limit_canhc + +[namelist:jules_vegetation=l_spec_veg_z0] +compulsory=true +description=Logical switch for setting explicit vegetation roughness lengths +!kind=default +sort-key=Panel-I05 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_spec_veg_z0 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn2.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn2.0/rose-meta.conf new file mode 100644 index 0000000000..4118960528 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn2.0/rose-meta.conf @@ -0,0 +1,34 @@ +[namelist:jules_vegetation] +compulsory=true +description=Options for vegetation parametrisations +ns=namelist/JULES Science Settings/jules_vegetation +sort-key=Section-A12d +title=Vegetation options +url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html + +[namelist:jules_vegetation=can_rad_mod] +compulsory=true +description=Vegetation canopy radiation model +!enumeration=true +sort-key=Panel-I13 +url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::can_rad_mod +value-titles=1: Single canopy layer, + =4: Multi-layer two stream approach, + =5: Multi-layer with Sunfleck penetration and sunlit and shaded leaves, + =6: Multi-layer with exponential decline in leaf N + +[namelist:jules_vegetation=l_limit_canhc] +compulsory=true +description=Logical for capping vegetation canopy areal thermal heat capacity +!kind=default +sort-key=Panel-I04 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_limit_canhc + +[namelist:jules_vegetation=l_spec_veg_z0] +compulsory=true +description=Logical switch for setting explicit vegetation roughness lengths +!kind=default +sort-key=Panel-I05 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_spec_veg_z0 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn2.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn2.1/rose-meta.conf new file mode 100644 index 0000000000..4118960528 --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn2.1/rose-meta.conf @@ -0,0 +1,34 @@ +[namelist:jules_vegetation] +compulsory=true +description=Options for vegetation parametrisations +ns=namelist/JULES Science Settings/jules_vegetation +sort-key=Section-A12d +title=Vegetation options +url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html + +[namelist:jules_vegetation=can_rad_mod] +compulsory=true +description=Vegetation canopy radiation model +!enumeration=true +sort-key=Panel-I13 +url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::can_rad_mod +value-titles=1: Single canopy layer, + =4: Multi-layer two stream approach, + =5: Multi-layer with Sunfleck penetration and sunlit and shaded leaves, + =6: Multi-layer with exponential decline in leaf N + +[namelist:jules_vegetation=l_limit_canhc] +compulsory=true +description=Logical for capping vegetation canopy areal thermal heat capacity +!kind=default +sort-key=Panel-I04 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_limit_canhc + +[namelist:jules_vegetation=l_spec_veg_z0] +compulsory=true +description=Logical switch for setting explicit vegetation roughness lengths +!kind=default +sort-key=Panel-I05 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_spec_veg_z0 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn2.2/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn2.2/rose-meta.conf new file mode 100644 index 0000000000..f59be621ca --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn2.2/rose-meta.conf @@ -0,0 +1,34 @@ +[namelist:jules_vegetation] +compulsory=true +description=Options for vegetation parametrisations +ns=namelist/JULES Science Settings/jules_vegetation +sort-key=Section-A12f +title=Vegetation options +url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html + +[namelist:jules_vegetation=can_rad_mod] +compulsory=true +description=Vegetation canopy radiation model +!enumeration=true +sort-key=Panel-I13 +url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::can_rad_mod +value-titles=1: Single canopy layer, + =4: Multi-layer two stream approach, + =5: Multi-layer with Sunfleck penetration and sunlit and shaded leaves, + =6: Multi-layer with exponential decline in leaf N + +[namelist:jules_vegetation=l_limit_canhc] +compulsory=true +description=Logical for capping vegetation canopy areal thermal heat capacity +!kind=default +sort-key=Panel-I04 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_limit_canhc + +[namelist:jules_vegetation=l_spec_veg_z0] +compulsory=true +description=Logical switch for setting explicit vegetation roughness lengths +!kind=default +sort-key=Panel-I05 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_spec_veg_z0 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn3.0/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn3.0/rose-meta.conf new file mode 100644 index 0000000000..f59be621ca --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn3.0/rose-meta.conf @@ -0,0 +1,34 @@ +[namelist:jules_vegetation] +compulsory=true +description=Options for vegetation parametrisations +ns=namelist/JULES Science Settings/jules_vegetation +sort-key=Section-A12f +title=Vegetation options +url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html + +[namelist:jules_vegetation=can_rad_mod] +compulsory=true +description=Vegetation canopy radiation model +!enumeration=true +sort-key=Panel-I13 +url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::can_rad_mod +value-titles=1: Single canopy layer, + =4: Multi-layer two stream approach, + =5: Multi-layer with Sunfleck penetration and sunlit and shaded leaves, + =6: Multi-layer with exponential decline in leaf N + +[namelist:jules_vegetation=l_limit_canhc] +compulsory=true +description=Logical for capping vegetation canopy areal thermal heat capacity +!kind=default +sort-key=Panel-I04 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_limit_canhc + +[namelist:jules_vegetation=l_spec_veg_z0] +compulsory=true +description=Logical switch for setting explicit vegetation roughness lengths +!kind=default +sort-key=Panel-I05 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_spec_veg_z0 diff --git a/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn3.1/rose-meta.conf b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn3.1/rose-meta.conf new file mode 100644 index 0000000000..f59be621ca --- /dev/null +++ b/interfaces/jules_interface/rose-meta/lfric-jules-shared/jules-vegetation/vn3.1/rose-meta.conf @@ -0,0 +1,34 @@ +[namelist:jules_vegetation] +compulsory=true +description=Options for vegetation parametrisations +ns=namelist/JULES Science Settings/jules_vegetation +sort-key=Section-A12f +title=Vegetation options +url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html + +[namelist:jules_vegetation=can_rad_mod] +compulsory=true +description=Vegetation canopy radiation model +!enumeration=true +sort-key=Panel-I13 +url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::can_rad_mod +value-titles=1: Single canopy layer, + =4: Multi-layer two stream approach, + =5: Multi-layer with Sunfleck penetration and sunlit and shaded leaves, + =6: Multi-layer with exponential decline in leaf N + +[namelist:jules_vegetation=l_limit_canhc] +compulsory=true +description=Logical for capping vegetation canopy areal thermal heat capacity +!kind=default +sort-key=Panel-I04 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_limit_canhc + +[namelist:jules_vegetation=l_spec_veg_z0] +compulsory=true +description=Logical switch for setting explicit vegetation roughness lengths +!kind=default +sort-key=Panel-I05 +type=logical +url=http://jules-lsm.github.io/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_spec_veg_z0 From 01ecc5ebb43c2807f00c74c8a974fa2fdd65752b Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Mon, 16 Mar 2026 13:44:17 +0000 Subject: [PATCH 27/32] add deleted symlinks --- dependencies.yaml | 4 ++-- .../jules_interface/rose-meta/jules-lfric/version30_31.py | 3 +++ rose-meta/jules-lfric | 1 + rose-meta/lfric-jules-shared | 1 + 4 files changed, 7 insertions(+), 2 deletions(-) create mode 120000 rose-meta/jules-lfric create mode 120000 rose-meta/lfric-jules-shared diff --git a/dependencies.yaml b/dependencies.yaml index 8d49a545f4..2a06fdaf48 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -22,8 +22,8 @@ casim: ref: 2026.03.2 jules: - source: git@github.com:james-bruten-mo/jules.git - ref: lfric_jules_metadata + source: git@github.com:jules/jules.git + ref: 2026.03.2 lfric_apps: source: diff --git a/interfaces/jules_interface/rose-meta/jules-lfric/version30_31.py b/interfaces/jules_interface/rose-meta/jules-lfric/version30_31.py index 94bd4b8680..3ba37e21a9 100644 --- a/interfaces/jules_interface/rose-meta/jules-lfric/version30_31.py +++ b/interfaces/jules_interface/rose-meta/jules-lfric/version30_31.py @@ -80,6 +80,9 @@ def upgrade(self, config, meta_config=None): ) self.add_setting(config, ["namelist:jules_surface", "hleaf"], "5.7e4") self.add_setting(config, ["namelist:jules_surface", "hwood"], "1.1e4") + self.add_setting( + config, ["namelist:jules_surface", "iscrntdiag"], "'decoupled_trans'" + ) self.add_setting( config, ["namelist:jules_surface", "i_modiscopt"], "'on'" ) diff --git a/rose-meta/jules-lfric b/rose-meta/jules-lfric new file mode 120000 index 0000000000..6581f11cdc --- /dev/null +++ b/rose-meta/jules-lfric @@ -0,0 +1 @@ +../interfaces/jules_interface/rose-meta/jules-lfric \ No newline at end of file diff --git a/rose-meta/lfric-jules-shared b/rose-meta/lfric-jules-shared new file mode 120000 index 0000000000..b81a86aeaf --- /dev/null +++ b/rose-meta/lfric-jules-shared @@ -0,0 +1 @@ +../interfaces/jules_interface/rose-meta/lfric-jules-shared \ No newline at end of file From bdc6dbed4cd961a93f715336e40b9bd631def218 Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Mon, 16 Mar 2026 14:08:47 +0000 Subject: [PATCH 28/32] fix dependencies --- dependencies.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencies.yaml b/dependencies.yaml index 2a06fdaf48..9533419000 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -22,7 +22,7 @@ casim: ref: 2026.03.2 jules: - source: git@github.com:jules/jules.git + source: git@github.com:MetOffice/jules.git ref: 2026.03.2 lfric_apps: From c659de8e721595b66b77d6530014598e0efe8f76 Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Thu, 19 Mar 2026 13:55:11 +0000 Subject: [PATCH 29/32] updates post core sr --- applications/adjoint_tests/Makefile | 2 ++ applications/gravity_wave/Makefile | 2 ++ applications/gungho_model/Makefile | 2 ++ applications/jedi_lfric_tests/Makefile | 2 ++ applications/jules/Makefile | 2 ++ applications/lfric2lfric/Makefile | 2 ++ applications/lfric_atm/Makefile | 3 ++- applications/lfric_coupled/Makefile | 2 ++ applications/lfricinputs/Makefile | 2 ++ applications/linear_model/Makefile | 2 ++ applications/name_transport/Makefile | 2 ++ applications/ngarch/Makefile | 2 ++ applications/shallow_water/Makefile | 2 ++ applications/solver/Makefile | 2 ++ applications/transport/Makefile | 2 ++ build/extract/extract_meta.mk | 2 ++ build/extract/extract_science.py | 22 ++++++++++++++----- dependencies.yaml | 6 +++-- interfaces/coupled_interface/Makefile | 2 ++ interfaces/jedi_lfric_interface/Makefile | 2 ++ interfaces/physics_schemes_interface/Makefile | 2 ++ interfaces/socrates_interface/Makefile | 2 ++ science/adjoint/Makefile | 2 ++ science/gungho/Makefile | 2 ++ science/linear/Makefile | 2 ++ 25 files changed, 66 insertions(+), 9 deletions(-) diff --git a/applications/adjoint_tests/Makefile b/applications/adjoint_tests/Makefile index b398e6ffb1..c6eb1b9683 100644 --- a/applications/adjoint_tests/Makefile +++ b/applications/adjoint_tests/Makefile @@ -26,6 +26,8 @@ export BUILD_ADJ_TESTS := TRUE export PSYAD_CONFIG_FILE := $(PSYCLONE_CONFIG_FILE) export EXTRA_ROSE_META = jules +export META_DIR = $(WORKING_DIR)/../rose-meta +export ROSE_META_DIRS = $(APPS_ROOT_DIR)/rose-meta $(META_DIR) export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ diff --git a/applications/gravity_wave/Makefile b/applications/gravity_wave/Makefile index 1b3d342185..0fceddd6e5 100644 --- a/applications/gravity_wave/Makefile +++ b/applications/gravity_wave/Makefile @@ -21,6 +21,8 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) export EXTRA_ROSE_META = jules +export META_DIR = $(WORKING_DIR)/../rose-meta +export ROSE_META_DIRS = $(APPS_ROOT_DIR)/rose-meta $(META_DIR) export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ diff --git a/applications/gungho_model/Makefile b/applications/gungho_model/Makefile index 6e3f46b496..b01b6e8c11 100644 --- a/applications/gungho_model/Makefile +++ b/applications/gungho_model/Makefile @@ -20,6 +20,8 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) export EXTRA_ROSE_META = jules +export META_DIR = $(WORKING_DIR)/../rose-meta +export ROSE_META_DIRS = $(APPS_ROOT_DIR)/rose-meta $(META_DIR) export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ diff --git a/applications/jedi_lfric_tests/Makefile b/applications/jedi_lfric_tests/Makefile index e76405c094..2324011cc8 100644 --- a/applications/jedi_lfric_tests/Makefile +++ b/applications/jedi_lfric_tests/Makefile @@ -21,6 +21,8 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) export EXTRA_ROSE_META = jules +export META_DIR = $(WORKING_DIR)/../rose-meta +export ROSE_META_DIRS = $(APPS_ROOT_DIR)/rose-meta $(META_DIR) export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ diff --git a/applications/jules/Makefile b/applications/jules/Makefile index 2cfb28974e..7939fb8885 100644 --- a/applications/jules/Makefile +++ b/applications/jules/Makefile @@ -21,6 +21,8 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) export EXTRA_ROSE_META = jules +export META_DIR = $(WORKING_DIR)/../rose-meta +export ROSE_META_DIRS = $(APPS_ROOT_DIR)/rose-meta $(META_DIR) # Note - socrates_interface must come before jules_interface as there are dependencies on each other. export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ diff --git a/applications/lfric2lfric/Makefile b/applications/lfric2lfric/Makefile index 2cf267ca7b..f38be413ee 100644 --- a/applications/lfric2lfric/Makefile +++ b/applications/lfric2lfric/Makefile @@ -21,6 +21,8 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) export EXTRA_ROSE_META = jules +export META_DIR = $(WORKING_DIR)/../rose-meta +export ROSE_META_DIRS = $(APPS_ROOT_DIR)/rose-meta $(META_DIR) export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/coupling \ diff --git a/applications/lfric_atm/Makefile b/applications/lfric_atm/Makefile index 246b8eaf04..a8ab6810d1 100644 --- a/applications/lfric_atm/Makefile +++ b/applications/lfric_atm/Makefile @@ -33,7 +33,8 @@ export IGNORE_DEPENDENCIES = c_shum_byteswap \ export EXTRA_ROSE_META = jules - +export META_DIR = $(WORKING_DIR)/../rose-meta +export ROSE_META_DIRS = $(APPS_ROOT_DIR)/rose-meta $(META_DIR) # Note - socrates_interface must come before jules_interface as there are dependencies on each other. export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ diff --git a/applications/lfric_coupled/Makefile b/applications/lfric_coupled/Makefile index d26b24949e..3a3f647b96 100644 --- a/applications/lfric_coupled/Makefile +++ b/applications/lfric_coupled/Makefile @@ -21,6 +21,8 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) export EXTRA_ROSE_META = jules +export META_DIR = $(WORKING_DIR)/../rose-meta +export ROSE_META_DIRS = $(APPS_ROOT_DIR)/rose-meta $(META_DIR) # Note - socrates_interface must come before jules_interface as there are dependencies on each other. export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ diff --git a/applications/lfricinputs/Makefile b/applications/lfricinputs/Makefile index 25a07daf11..e659b9d3bc 100644 --- a/applications/lfricinputs/Makefile +++ b/applications/lfricinputs/Makefile @@ -19,6 +19,8 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) export EXTRA_ROSE_META = jules +export META_DIR = $(WORKING_DIR)/../rose-meta +export ROSE_META_DIRS = $(APPS_ROOT_DIR)/rose-meta $(META_DIR) export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/science \ diff --git a/applications/linear_model/Makefile b/applications/linear_model/Makefile index 8c494d49de..7ad66520d0 100644 --- a/applications/linear_model/Makefile +++ b/applications/linear_model/Makefile @@ -20,6 +20,8 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) export EXTRA_ROSE_META = jules +export META_DIR = $(WORKING_DIR)/../rose-meta +export ROSE_META_DIRS = $(APPS_ROOT_DIR)/rose-meta $(META_DIR) export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ diff --git a/applications/name_transport/Makefile b/applications/name_transport/Makefile index 930eb5dcfe..c7ea0be7a6 100644 --- a/applications/name_transport/Makefile +++ b/applications/name_transport/Makefile @@ -21,6 +21,8 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) export EXTRA_ROSE_META = jules +export META_DIR = $(WORKING_DIR)/../rose-meta +export ROSE_META_DIRS = $(APPS_ROOT_DIR)/rose-meta $(META_DIR) export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ diff --git a/applications/ngarch/Makefile b/applications/ngarch/Makefile index 82f3bb8a08..fc6718bc56 100644 --- a/applications/ngarch/Makefile +++ b/applications/ngarch/Makefile @@ -21,6 +21,8 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) export EXTRA_ROSE_META = jules +export META_DIR = $(WORKING_DIR)/../rose-meta +export ROSE_META_DIRS = $(APPS_ROOT_DIR)/rose-meta $(META_DIR) # Note - socrates_interface must come before jules_interface as there are dependencies on each other. export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ diff --git a/applications/shallow_water/Makefile b/applications/shallow_water/Makefile index ba98f26405..b52fc5d9f1 100644 --- a/applications/shallow_water/Makefile +++ b/applications/shallow_water/Makefile @@ -21,6 +21,8 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) export EXTRA_ROSE_META = jules +export META_DIR = $(WORKING_DIR)/../rose-meta +export ROSE_META_DIRS = $(APPS_ROOT_DIR)/rose-meta $(META_DIR) export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ diff --git a/applications/solver/Makefile b/applications/solver/Makefile index 028af625aa..b3c86b49c3 100644 --- a/applications/solver/Makefile +++ b/applications/solver/Makefile @@ -20,6 +20,8 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) +export ROSE_META_DIRS = $(APPS_ROOT_DIR)/rose-meta + export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ $(CORE_ROOT_DIR)/components/science \ diff --git a/applications/transport/Makefile b/applications/transport/Makefile index b45b3a169c..ab8024aadb 100644 --- a/applications/transport/Makefile +++ b/applications/transport/Makefile @@ -21,6 +21,8 @@ export PSYCLONE_TRANSFORMATION ?= minimum export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) export EXTRA_ROSE_META = jules +export META_DIR = $(WORKING_DIR)/../rose-meta +export ROSE_META_DIRS = $(APPS_ROOT_DIR)/rose-meta $(META_DIR) export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ diff --git a/build/extract/extract_meta.mk b/build/extract/extract_meta.mk index ee9863e6ab..d165f87fbb 100644 --- a/build/extract/extract_meta.mk +++ b/build/extract/extract_meta.mk @@ -8,6 +8,7 @@ # # The following environment variables are used for input: # WORKING_DIR : Directory to hold working copies of source. +# META_DIR: Directory to save extracted external metadata # APPS_ROOT_DIR: Location of apps clone # EXTRA_ROSE_META: List of repos to extract metadata from # @@ -21,4 +22,5 @@ extract_meta: -r $$REPO \ -d $(APPS_ROOT_DIR)/dependencies.yaml \ -w $(WORKING_DIR) \ + -m $(META_DIR) \ ; done diff --git a/build/extract/extract_science.py b/build/extract/extract_science.py index 088a55b1f8..8dc8ae7f9e 100755 --- a/build/extract/extract_science.py +++ b/build/extract/extract_science.py @@ -18,13 +18,12 @@ def load_yaml(fpath: Path) -> dict: return sources -def copy_rose_meta(working: Path, clone_loc: Path) -> None: +def copy_rose_meta(rose_meta_dest: Path, clone_loc: Path) -> None: """ Copy rose-meta contents from extracted dependency to working/../rose-meta """ rose_meta_orig = clone_loc / "rose-meta" - rose_meta_dest = working.parent / "rose-meta" for directory in rose_meta_orig.iterdir(): copytree(directory, rose_meta_dest / directory.name, dirs_exist_ok=True) @@ -54,7 +53,7 @@ def copy_extracted_files(dependency: str, extract_lists: dict, working: Path, cl run_command(copy_command) -def extract_files(dependencies: dict, rose_meta: str, extract_lists: dict, working: Path) -> None: +def extract_files(dependencies: dict, rose_meta: str, extract_lists: dict, working: Path, meta: Path) -> None: """ Clone the dependency to a temporary location Then copy the desired files to the working directory @@ -77,7 +76,7 @@ def extract_files(dependencies: dict, rose_meta: str, extract_lists: dict, worki clone_and_merge(dependency, sources, clone_loc, use_mirrors, mirror_loc) if rose_meta: - copy_rose_meta(working, clone_loc) + copy_rose_meta(meta, clone_loc) else: copy_extracted_files(dependency, extract_lists, working, clone_loc) @@ -96,6 +95,13 @@ def parse_args() -> argparse.Namespace: help="The dependencies file for the apps working copy", ) parser.add_argument("-w", "--working", default=".", help="Build location") + parser.add_argument( + "-m", + "--meta_dir", + default=None, + help="Path to store externally extracted rose-meta. Used if --rose-meta set. " + "Defaults to args.working/../rose-meta" + ) parser.add_argument( "-e", "--extract", @@ -114,6 +120,10 @@ def parse_args() -> argparse.Namespace: args = parser.parse_args() args.working = Path(args.working) + if args.meta_dir is None: + args.meta_dir = args.working.parent / "rose-meta" + else: + args.meta_dir = Path(args.meta_dir) return args @@ -125,9 +135,9 @@ def main(): dependencies: dict = load_yaml(args.dependencies) if args.rose_meta: - extract_files(dependencies, args.rose_meta, [], args.working) + extract_files(dependencies, args.rose_meta, [], args.working, args.meta_dir) else: - extract_files(dependencies, args.rose_meta, load_yaml(args.extract), args.working) + extract_files(dependencies, args.rose_meta, load_yaml(args.extract), args.working, args.meta_dir) if __name__ == "__main__": diff --git a/dependencies.yaml b/dependencies.yaml index 9533419000..78580c60c8 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -30,8 +30,10 @@ lfric_apps: ref: lfric_core: - source: git@github.com:james-bruten-mo/lfric_core.git - ref: lfric_jules_metadata + # source: git@github.com:james-bruten-mo/lfric_core.git + # ref: lfric_jules_metadata + source: cazld00001l:/var/tmp/persistent/fork_clones/lfric_core + ref: moci: source: git@github.com:MetOffice/moci.git diff --git a/interfaces/coupled_interface/Makefile b/interfaces/coupled_interface/Makefile index 197b131021..74b920bdfd 100644 --- a/interfaces/coupled_interface/Makefile +++ b/interfaces/coupled_interface/Makefile @@ -21,6 +21,8 @@ export PSYCLONE_TRANSFORMATION ?= none export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) export EXTRA_ROSE_META = jules +export META_DIR = $(WORKING_DIR)/../rose-meta +export ROSE_META_DIRS = $(APPS_ROOT_DIR)/rose-meta $(META_DIR) export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/lfric-xios diff --git a/interfaces/jedi_lfric_interface/Makefile b/interfaces/jedi_lfric_interface/Makefile index e8befc82b3..70120e8568 100644 --- a/interfaces/jedi_lfric_interface/Makefile +++ b/interfaces/jedi_lfric_interface/Makefile @@ -36,6 +36,8 @@ export EXTERNAL_DYNAMIC_LIBRARIES = netcdff netcdf yaxt yaxt_c export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) export EXTRA_ROSE_META = jules +export META_DIR = $(WORKING_DIR)/../rose-meta +export ROSE_META_DIRS = $(APPS_ROOT_DIR)/rose-meta $(META_DIR) export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(APPS_ROOT_DIR)/science/gungho \ diff --git a/interfaces/physics_schemes_interface/Makefile b/interfaces/physics_schemes_interface/Makefile index 98fff36814..92c50a25d0 100644 --- a/interfaces/physics_schemes_interface/Makefile +++ b/interfaces/physics_schemes_interface/Makefile @@ -37,6 +37,8 @@ export EXTERNAL_STATIC_LIBRARIES = export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) +export ROSE_META_DIRS = $(APPS_ROOT_DIR)/rose-meta + .PHONY: all all: default diff --git a/interfaces/socrates_interface/Makefile b/interfaces/socrates_interface/Makefile index af25a5a47d..09cd253d08 100644 --- a/interfaces/socrates_interface/Makefile +++ b/interfaces/socrates_interface/Makefile @@ -36,6 +36,8 @@ export EXTERNAL_DYNAMIC_LIBRARIES = yaxt yaxt_c netcdff netcdf hdf5 export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) +export ROSE_META_DIRS = $(APPS_ROOT_DIR)/rose-meta + META_VN ?= HEAD META_FILE_DIR = $(PROJECT_DIR)/rose-meta/$(PROJECT_NAME)-radiation/$(META_VN) diff --git a/science/adjoint/Makefile b/science/adjoint/Makefile index 6dec157388..1988e6d863 100644 --- a/science/adjoint/Makefile +++ b/science/adjoint/Makefile @@ -10,6 +10,8 @@ export PROFILE ?= fast-debug export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) export EXTRA_ROSE_META = jules +export META_DIR = $(WORKING_DIR)/../rose-meta +export ROSE_META_DIRS = $(APPS_ROOT_DIR)/rose-meta $(META_DIR) export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ diff --git a/science/gungho/Makefile b/science/gungho/Makefile index de84d305db..b6f3646f49 100644 --- a/science/gungho/Makefile +++ b/science/gungho/Makefile @@ -34,6 +34,8 @@ export PROFILE ?= fast-debug export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) export EXTRA_ROSE_META = jules +export META_DIR = $(WORKING_DIR)/../rose-meta +export ROSE_META_DIRS = $(APPS_ROOT_DIR)/rose-meta $(META_DIR) export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ diff --git a/science/linear/Makefile b/science/linear/Makefile index 51af605496..61915baa48 100644 --- a/science/linear/Makefile +++ b/science/linear/Makefile @@ -10,6 +10,8 @@ export PROFILE ?= fast-debug export PROJECT_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) export EXTRA_ROSE_META = jules +export META_DIR = $(WORKING_DIR)/../rose-meta +export ROSE_META_DIRS = $(APPS_ROOT_DIR)/rose-meta $(META_DIR) export INTERNAL_DEPENDENCIES = $(CORE_ROOT_DIR)/infrastructure \ $(CORE_ROOT_DIR)/components/driver \ From c04da7e974e0e216e9ea1db993934fcec133ec38 Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Wed, 15 Apr 2026 08:06:55 +0100 Subject: [PATCH 30/32] Update build/extract/extract_science.py Co-authored-by: Sam Clarke-Green <74185251+t00sa@users.noreply.github.com> --- build/extract/extract_science.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/extract/extract_science.py b/build/extract/extract_science.py index 8dc8ae7f9e..0f7fa6bbad 100755 --- a/build/extract/extract_science.py +++ b/build/extract/extract_science.py @@ -20,7 +20,7 @@ def load_yaml(fpath: Path) -> dict: def copy_rose_meta(rose_meta_dest: Path, clone_loc: Path) -> None: """ - Copy rose-meta contents from extracted dependency to working/../rose-meta + Copy rose-meta contents from extracted dependency to rose_meta_dest """ rose_meta_orig = clone_loc / "rose-meta" From 02f62309e19790d2a5b9cbdfe993395188941e0f Mon Sep 17 00:00:00 2001 From: James Bruten <109733895+james-bruten-mo@users.noreply.github.com> Date: Tue, 21 Apr 2026 09:05:15 +0100 Subject: [PATCH 31/32] reviewer comments --- build/extract/extract_science.py | 36 +++++++++++++++++++++++++------- dependencies.yaml | 6 ++---- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/build/extract/extract_science.py b/build/extract/extract_science.py index 0f7fa6bbad..207026c640 100755 --- a/build/extract/extract_science.py +++ b/build/extract/extract_science.py @@ -1,3 +1,9 @@ +# ----------------------------------------------------------------------------- +# (C) Crown copyright Met Office. All rights reserved. +# The file LICENCE, distributed with this code, contains details of the terms +# under which the code may be used. +# ----------------------------------------------------------------------------- + import argparse import logging import os @@ -29,7 +35,9 @@ def copy_rose_meta(rose_meta_dest: Path, clone_loc: Path) -> None: copytree(directory, rose_meta_dest / directory.name, dirs_exist_ok=True) -def copy_extracted_files(dependency: str, extract_lists: dict, working: Path, clone_loc: Path) -> None: +def copy_extracted_files( + dependency: str, extract_lists: dict, working: Path, clone_loc: Path +) -> None: """ Copy extracted files to the working dir based on extract list """ @@ -53,7 +61,13 @@ def copy_extracted_files(dependency: str, extract_lists: dict, working: Path, cl run_command(copy_command) -def extract_files(dependencies: dict, rose_meta: str, extract_lists: dict, working: Path, meta: Path) -> None: +def extract_files( + dependencies: dict, + working: Path, + meta: Path, + rose_meta: str = "", + extract_lists: dict = {}, +) -> None: """ Clone the dependency to a temporary location Then copy the desired files to the working directory @@ -81,7 +95,6 @@ def extract_files(dependencies: dict, rose_meta: str, extract_lists: dict, worki copy_extracted_files(dependency, extract_lists, working, clone_loc) - def parse_args() -> argparse.Namespace: """ Read command line args @@ -100,7 +113,7 @@ def parse_args() -> argparse.Namespace: "--meta_dir", default=None, help="Path to store externally extracted rose-meta. Used if --rose-meta set. " - "Defaults to args.working/../rose-meta" + "Defaults to args.working/../rose-meta", ) parser.add_argument( "-e", @@ -115,7 +128,7 @@ def parse_args() -> argparse.Namespace: default="", help="Should be a repository in the dependencies file. If set, copy the " "dependencies rose-meta directory contents to working/../rose-meta. " - "If set, the extract file will be ignored, and just rose-metadata copied" + "If set, the extract file will be ignored, and just rose-metadata copied", ) args = parser.parse_args() @@ -134,10 +147,19 @@ def main(): dependencies: dict = load_yaml(args.dependencies) + # If args.rose_meta is set then extract rose-meta contents from that repo if args.rose_meta: - extract_files(dependencies, args.rose_meta, [], args.working, args.meta_dir) + extract_files( + dependencies, args.working, args.meta_dir, rose_meta=args.rose_meta + ) + # If args.rose_meta is not set, then extract files based on the provided extract list else: - extract_files(dependencies, args.rose_meta, load_yaml(args.extract), args.working, args.meta_dir) + extract_files( + dependencies, + args.working, + args.meta_dir, + extract_lists=load_yaml(args.extract), + ) if __name__ == "__main__": diff --git a/dependencies.yaml b/dependencies.yaml index 78580c60c8..9533419000 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -30,10 +30,8 @@ lfric_apps: ref: lfric_core: - # source: git@github.com:james-bruten-mo/lfric_core.git - # ref: lfric_jules_metadata - source: cazld00001l:/var/tmp/persistent/fork_clones/lfric_core - ref: + source: git@github.com:james-bruten-mo/lfric_core.git + ref: lfric_jules_metadata moci: source: git@github.com:MetOffice/moci.git From df1cc0cc6bcee8404d16cfc781ee150410daeed1 Mon Sep 17 00:00:00 2001 From: Sam Clarke-Green Date: Mon, 27 Apr 2026 14:56:30 +0100 Subject: [PATCH 32/32] Update core dependency ref --- dependencies.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.yaml b/dependencies.yaml index 19d515e52e..6536832e23 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -30,8 +30,8 @@ lfric_apps: ref: lfric_core: - source: git@github.com:james-bruten-mo/lfric_core.git - ref: lfric_jules_metadata + source: git@github.com:MetOffice/lfric_core.git + ref: 3c8ccc6ea152cb03f0c5f27de5f1de01cc0c78b9 moci: source: git@github.com:MetOffice/moci.git