diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 00000000..b83c1168 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,61 @@ +############################################################################### +# CODEOWNERS +############################################################################### +# +# Purpose +# ------- +# This file defines code ownership for the JULES repository. +# +# Notes +# ----- +# * Code ownership indicates leadership and review responsibility, not a +# commitment to undertake all work or reviews. +# * Planned changes should be discussed with the relevant module leader. +# * Module leaders should be offered the option to review changes affecting +# their areas. +# * Interfaces between components must be agreed by all affected parties. +# * When leadership changes, this file should be updated. +# * Rose meta-data (in rose-meta) is owned by the appropriate module leader. +# +############################################################################### +# Science Module Leaders (informational) +############################################################################### +# Surface: John Edwards, Rich Ellis +# Hydrology: Nic Gedney, Sonja Folwell +# Vegetation: Lina Mercado, Karina Williams, Rebecca Oliver +# Veg3 RED Demography: Andy Wiltshire, Arthur Argles +# Biogeochemistry: Eleanor Burke, Noah Smith +# Biogenic fluxes: Garry Hayman, James Weber +# Fire: Doug Kelley, Chantelle Burton +# Lakes: Helen Johnson +# Evaluation: Nina Raoult, Siyuan Tian +# CABLE Science: Ian Harman, Claire Carouge +# IMOGEN: Chris Huntingford, Eleanor Burke +# +############################################################################### +# Code Owners +############################################################################### + +/** @GiorgiaLine +rose-meta/**/version*.py @james-bruten-mo +rose-meta/jules-shared/**/HEAD/rose-meta.conf @maggiehendry +rose-meta/jules-standalone/HEAD/rose-meta.conf @maggiehendry +rose-meta/jules-um/HEAD/rose-meta.conf @maggiehendry +rose-meta/jules-lfric/HEAD/rose-meta.conf @maggiehendry +rose-stem/ @james-bruten-mo +etc/ @MetOffice/ssdteam +**/science/river_routing/ @maggiehendry +**/initialisation/rivers-standalone/ @maggiehendry +**/control/rivers-standalone/ @maggiehendry +**/control/shared/jules_rivers_mod.F90 @maggiehendry +**/io/rivers-standalone/ @maggiehendry +**/control/shared/surf_couple_rivers_mod.F90 @maggiehendry +**/initialisation/standalone/ancillaries/init_ancillaries_coupling_mod.F90 @maggiehendry +**/initialisation/standalone/ancillaries/init_rivers_process_data_mod.F90 @maggiehendry +**/initialisation/standalone/ancillaries/init_rivers_props_mod.F90 @maggiehendry +**/initialisation/standalone/ancillaries/jules_rivers_props_mod.F90 @maggiehendry +**/initialisation/standalone/grid/init_river_out_grid_mod.F90 @maggiehendry +**/initialisation/standalone/init_rivers.F90 @maggiehendry +**/control/shared/jules_water_resources_mod.F90 @maggiehendry +**/control/shared/overbank_inundation_mod.F90 @maggiehendry +**/io/dump/get_dim_info_mod.F90 @maggiehendry diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 83245022..e3f44db6 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -29,7 +29,7 @@ Code Reviewer: - [ ] Comments have been included that aid undertanding and enhance the readability of the code - [ ] My changes generate no new warnings -- [ ] If editing `rose-meta/jules-shared` then have you supplied a linked UM PR? +- [ ] If editing `rose-meta/jules-shared` then have you supplied a linked UM and LFRic Apps PR? ## Testing diff --git a/.github/workflows/cla-check.yaml b/.github/workflows/cla-check.yaml index 3d28d731..18878145 100644 --- a/.github/workflows/cla-check.yaml +++ b/.github/workflows/cla-check.yaml @@ -7,4 +7,4 @@ jobs: cla: uses: MetOffice/growss/.github/workflows/cla-check.yaml@main with: - runner: 'ubuntu-24.04' + cla-url: 'https://github.com/MetOffice/jules/blob/main/CLA.md' diff --git a/.github/workflows/user-guide.yaml b/.github/workflows/user-guide.yaml index e7c49cf6..345965a9 100644 --- a/.github/workflows/user-guide.yaml +++ b/.github/workflows/user-guide.yaml @@ -33,7 +33,7 @@ jobs: outputs: should-deploy: ${{ steps.check-deploy.outputs.should-deploy }} env: - PYTHON_VRSN: '3.13' + PYTHON_VRSN: '3.12' JULES_PATH: jules ARTIFACT_PATH: artifact OUTPUT_PATH: jules_docs @@ -43,7 +43,7 @@ jobs: - name: Check deployment conditions id: check-deploy run: | - if [[ "${{ github.repository }}" == "MetOffice/jules" && "${{ github.ref_name }}" == "main" && ("${{ github.event_name }}" == "push" || "${{ github.event_name }}" == "merge_group" || "${{ github.event_name }}" == "release" || "${{ github.event_name }}" == "workflow_dispatch") ]]; then + if [[ "${{ github.repository }}" == "MetOffice/jules" && ("${{ github.ref_name }}" == "main" || "${{ github.ref_name }}" == "stable") && ("${{ github.event_name }}" == "push" || "${{ github.event_name }}" == "merge_group" || "${{ github.event_name }}" == "release" || "${{ github.event_name }}" == "workflow_dispatch") ]]; then echo "should-deploy=true" >> $GITHUB_OUTPUT else echo "should-deploy=false" >> $GITHUB_OUTPUT diff --git a/.gitignore b/.gitignore index 52690250..67b4052b 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ processed_data/*.dat .idea *.pyc .pytest_cache +*.egg-info/ # ignore build output *build/ diff --git a/CLA.md b/CLA.md new file mode 100644 index 00000000..42b6d20f --- /dev/null +++ b/CLA.md @@ -0,0 +1,217 @@ +--- +Title: JULES Contributor Licence Agreement +Version: "1.0" +--- + +# JULES Contributor Licence Agreement + +Thank you for your interest in contributing to JULES, which is managed by the +Met Office. + +In order to clarify the intellectual property licence granted with Contributions +from any person or entity, the Met Office must have a Contributor License +Agreement ("CLA" or "Agreement") that has been signed by each Contributor, +indicating agreement to the licence terms below. Each contributing individual +within a contributing organisation must personally sign the CLA form. + +This licence is for your protection as a Contributor as well as the protection +of JULES and its users; it does not change your rights to use your own +Contributions for any other purpose. + +**To sign the CLA, please enter your details in the `CONTRIBUTORS.md` file +located in the software repository. By adding your details, you confirm your +agreement to the terms of this CLA. Once agreed, this constitutes a legally +binding agreement between You and the Met Office.** + +The Met Office will collect, use and process your Personal Data for the purpose +of supporting the development of JULES and recording ownership of Contributions. +Your Personal Data will be processed in accordance with the Met Office +[Privacy Policy](https://www.metoffice.gov.uk/about-us/legal/privacy). The legal +basis for processing is **contractual necessity**, as set out in the +[Privacy Policy](https://www.metoffice.gov.uk/about-us/legal/privacy). Personal +Data processed by the Met Office will not be disclosed to third parties for +marketing purposes. Your GitHub username will be published on a public website +in order to permit Developers of JULES to ascertain that Your Contribution is +covered by a signed CLA. Your Personal Data will be stored on a GitHub +repository belonging to JULES administrators and may therefore result in the +data leaving the UK / European Economic Area. For further information, please +see GitHub's +[Privacy Policy](https://docs.github.com/en/site-policy/privacy-policies). + +To end this Agreement please contact . +This will result in your GitHub username being removed from the public list of +CLA signees and will prevent further Contributions from You being accepted into +JULES. Please be aware that for the purpose of recording previous agreements +covering Your existing Contributions, it is not possible to withdraw the signed +CLA from the historical archive. This does not affect your rights as a data +subject, as set out in the +[Privacy Policy](https://www.metoffice.gov.uk/about-us/legal/privacy). + +You accept and agree to the following terms and conditions for Your past, +present and future Contributions submitted to JULES. In return, the Met Office +shall not use Your Contributions in a way that is contrary to the interests of +users of JULES. Except for the licence granted herein to the Met Office and +recipients of JULES, You reserve all right, title, and interest in and to Your +Contributions. + +## 1. Definitions + +**"You"** (or **"Your"**) shall mean the copyright owner or legal entity +authorised by the copyright owner that is making this Agreement with the Met +Office. For legal entities, the entity making a Contribution and all other +entities that control, are controlled by, or are under common control with that +entity are considered to be a single Contributor. + +For the purposes of this definition, **"control"** means (i) the power, direct +or indirect, to cause the direction or management of such entity, whether by +contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the +outstanding shares, or (iii) beneficial ownership of such entity. + +**"Contribution"** shall mean any original work of authorship, including any +modifications or additions to an existing work, that is intentionally submitted +by You to JULES. For the purposes of this definition, "submitted" means any form +of electronic, verbal, or written communication sent to JULES and/or the Met +Office or their representatives or members, including (but not limited to) +communication on electronic mailing lists, source code control systems, and +issue tracking systems that are managed by, or on behalf of, JULES and/or the +Met Office for the purpose of discussing and improving JULES, but excluding +communication that is conspicuously marked or otherwise designated in writing by +You as "Not a Contribution". + +**"JULES"** shall mean software tools made available under the JULES name and/or +logo and published through public channels. + +**"Met Office"** shall mean the Met Office, an Executive Agency of the +Department for Science, Innovation & Technology of the United Kingdom of Great +Britain and Northern Ireland ("DSIT"), whose principal place of business is +situated at FitzRoy Road, Exeter, Devon EX1 3PB, United Kingdom, for and on +behalf of DSIT. + +**"Parties"** shall mean the Met Office and You. + +**"Working Day"** shall mean a day other than a Saturday, Sunday or public +holiday in England when banks in London are open for business. + +**"Personal Data"** shall have the meaning given in s.3 of the Data Protection +Act 2018. + +## 2. Grant of copyright licence + +Subject to the terms and conditions of this Agreement, You hereby grant to the +Met Office and to recipients of JULES a perpetual, worldwide, non-exclusive, +royalty-free, irrevocable copyright licence to reproduce, prepare derivative +works of, publicly display, publicly perform, sublicense, and distribute Your +Contributions and such derivative works under the terms of the +[BSD 3-clause licence](https://opensource.org/license/bsd-3-clause). Full +details of the licence specified for JULES can be found in the LICENCE file of +the project's source code repository. + +You agree and acknowledge that the Met Office may sublicense and distribute your +Contributions under any subsequent version of the licence specified for JULES. +Furthermore, You agree that the Met Office may change the licence from time to +time to an alternative open source license from the list maintained by the +[Open Source Initiative](https://opensource.org/) in order to suit the evolution +of JULES. + +## 3. Intellectual property rights infringement + +If any third party makes any claim against You or any other entity, alleging +that your Contribution, or the work to which you have contributed, infringes the +intellectual property rights of that third party, then You shall inform the Met +Office within five (5) Working Days of such claim in order for the Met Office to +take all appropriate action it deems necessary in relation to the claim. + +## 4. Legal entitlement + +You represent that you are legally entitled to grant the above licence. If your +employer(s) holds rights to intellectual property that you create that includes +your Contributions, you represent that you have received permission to make +Contributions on behalf of that employer, or that your employer has waived such +rights for your Contributions to JULES. + +## 5. Contribution of Your creation(s) + +You represent that each of Your Contributions is Your original creation and that +you have not assigned or otherwise given up your interest in the Contribution to +any third party. You represent that Your Contribution submissions include +complete details of any third-party licence or other restriction (including, but +not limited to, related patents and trademarks) of which you are personally +aware and which are associated with any part of Your Contributions. + +## 6. Notification + +You agree to notify the Met Office of any facts or circumstances of which you +become aware that would make these representations inaccurate in any respect. +You further agree to fully indemnify, and keep indemnified, the Met Office +against any losses suffered as a result of any fraudulent or negligent +misrepresentation made by you under Clauses 4 or 5. + +## 7. Dispute resolution + +The Parties shall attempt in good faith to negotiate a settlement to any dispute +arising between them out of or in connection with this Agreement within thirty +(30) Working Days of the dispute arising. + +If the dispute cannot be resolved, then the Parties shall attempt to settle it +by mediation in accordance with the Centre for Effective Dispute Resolution +("CEDR") Model Mediation Procedure from time-to-time in force. + +To initiate the mediation a party to the Agreement must give notice in writing +(the "ADR Notice") to the other party requesting mediation in accordance with +this clause. + +## 8. Mediation + +The mediation is to take place not later than thirty (30) Working Days after the +ADR Notice is received. If there is any issue concerning the conduct of the +mediation upon which the Parties cannot agree within fourteen (14) Working Days +of the ADR Notice being received, then CEDR shall, at the request of either +party, decide the issue for the Parties, having consulted with them. + +Unless otherwise agreed, all negotiations connected with the dispute and any +settlement shall be conducted in confidence and without prejudice to the rights +of the Parties in any future proceedings. + +If the Parties reach agreement on the resolution of the dispute, the agreement +shall be reduced to writing and shall be binding on the Parties once it is +signed by both You and the Met Office. + +If the Parties fail to reach agreement within sixty (60) Working Days of the +initiation of the mediation, or such longer period as may be agreed by the +Parties, then any dispute or difference between them may be referred to the +courts. + +Nothing in this Agreement affects the right of You or the Met Office to apply to +the court for urgent interim equitable relief (including, but not limited to, an +injunction) + +## 9. General + +1. For the purposes of clarity: this Agreement constitutes a contract for the + grant of a licence and not a contract of employment. +2. No waiver by either party of any of its rights under this Agreement shall + release the other party from full performance of its other obligations stated + herein. +3. Nothing in this Agreement shall be deemed to constitute, evidence, or + comprise a partnership between the Parties or to constitute either party the + agent of the other. +4. Neither party may assign its rights under this Agreement in whole or in part + to any person, firm or company without the prior written agreement of the + other party. +5. No amendment, waiver, or variation, of this Agreement, whether in whole or in + part, shall be binding on the Parties unless set out in writing and signed by + or on behalf of the Parties by their duly authorised representatives. +6. If any provision of this Agreement is held by a competent authority to be + illegal, invalid, or unenforceable, whether in whole or in part, the validity + of the remainder of the relevant provision and the remaining provisions shall + not be affected or prejudiced. +7. Each party shall, at its own cost and expense, from time to time do or + procure the execution of all documents as may be reasonably necessary in + order to give effect to the provisions of this Agreement. +8. The Parties to this Agreement do not intend that any of its terms will be + enforceable by any person not a party to it. +9. This Agreement shall be governed by and construed in accordance with the laws + of the England and Wales. + +Please confirm acceptance of this CLA by entering your details in the +`CONTRIBUTORS.md` file located in the software repository. diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 5aad94e5..db1cc110 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -2,10 +2,6 @@ | GitHub user | Real Name | Affiliation | Date | | --------------- | ---------------- | ----------- | ---------- | -| james-bruten-mo | James Bruten | Met Office | 2025-12-09 | -| ppharris | Phil Harris | UKCEH | 2025-12-18 | -| maggiehendry | Maggie Hendry | Met Office | 2026-01-26 | -| andrewcoughtrie | Andrew Coughtrie | Met Office | 2026-02-10 | -| yaswant | Yaswant Pradhan | Met Office | 2026-02-11 | -| ScottWales | Scott Wales | Bureau of Meteorology | 2026-02-16 | -| t00sa | Sam Clarke-Green | Met Office | 2026-02-27 | +| yaswant | Yaswant Pradhan | Met Office | 2026-06-30 | +| doucla | Douglas Clark | UKCEH | 2026-07-03 | +| james-bruten-mo | James Bruten | Met Office | 2026-07-09 | diff --git a/README.md b/README.md index b178d960..1aab2d3e 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,12 @@ projects (e.g., [CMIP6](https://wcrp-cmip.org/cmip-phases/cmip6/)) and is placed firmly at the cutting edge of international land surface modelling because of continual science development and improved accessibility. +Further details about how JULES works can be found in the [JCHMR overview document](https://jules.jchmr.org/about). + +## Documentation + +For releases since version 8.0, please see the [current Jules documentation](https://metoffice.github.io/jules/). For version 7.9 and earlier, please see the [legacy Jules documentation](https://jules-lsm.github.io/) + ## Contributing Guidelines Welcome! @@ -49,3 +55,21 @@ Questions are encouraged in the Simulation Systems Please be aware of and follow the Simulation Systems [AI Policy.](https://metoffice.github.io/simulation-systems/FurtherDetails/ai.html) + + +### Mailing Lists & Github Discussions + +[JULES-USERS@MAILLISTS.READING.AC.UK](JULES-USERS@MAILLISTS.READING.AC.UK) is a list for all users of JULES. Please use this list to ask a science questions to the community. + +[JULES@MAILLISTS.READING.AC.UK](JULES@MAILLISTS.READING.AC.UK) is a list of all people with an interest in JULES. Please use this list to share information relevant to the whole community. For example, new papers, conferences, code release versions etc. + +To join, use the [mailing list registration page](https://maillists.reading.ac.uk/scripts/wa-READING.exe?GETPW1=&X=&Y=) to enter your details and wait at least 10 minutes for the email for confirming the registration. + +Then: + +* register with the [Jules users mailing list](https://maillists.reading.ac.uk/scripts/wa-READING.exe?SUBED1=JULES-USERS) to join the user community mailing list +* register with the [Jules community mailing list](https://maillists.reading.ac.uk/scripts/wa-READING.exe?SUBED1=JULES) to join the wider community + +If you need to unsubscribe from either list, you can go to the same subscription link. + +You can also join [Simulation Systems Jules discussion board](https://github.com/MetOffice/simulation-systems/discussions/categories/jules) on github. \ No newline at end of file diff --git a/dependencies.yaml b/dependencies.yaml index 516b6922..56daa9cb 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -23,4 +23,4 @@ jules: SimSys_Scripts: source: git@github.com:MetOffice/SimSys_Scripts.git - ref: 2026.03.1 + ref: 2026.07.1 diff --git a/doc/README.md b/doc/README.md index 16600c4e..4933de84 100644 --- a/doc/README.md +++ b/doc/README.md @@ -10,19 +10,30 @@ For first time users, please create a virtual environment to build the docs. From the `jules/doc` folder of the repository run: -```sh -# Create a virtual conda environment: -conda env create -f environment.yml +```bash +# Create a virtual environment and install dependencies (in ./doc): +cd doc +python3.12 -m venv .venv +.venv/bin/pip install . # Activate the environment: -conda activate jules-user-guide +source .venv/bin/activate -# Build the documentation: +# Build HTML documentation (in ./build/html/): make clean html ``` -View the documentation in a browser (e.g., Firefox): +At the Met Office you can also run the following to deploy the +html documents directly into `~/public_html/jules//`: -```sh -firefox build/html/index.html +```bash +make clean deploy +``` + +To generate PDF documentation, ensure you have a LaTeX distribution +installed and run the following command. The pdf will be generated as +`./build/latex/JULES_User_Guide.pdf`: + +```bash +make latexpdf ``` diff --git a/doc/pyproject.toml b/doc/pyproject.toml index a9703ac0..3a2acaff 100644 --- a/doc/pyproject.toml +++ b/doc/pyproject.toml @@ -3,9 +3,11 @@ name = "jules" version = "8.0.0" description = "Joint UK Land Environment Simulator User Guide" readme = "README.md" -requires-python = ">=3.13" +requires-python = ">=3.12" dependencies = [ "doc8>=2.0.0", "sphinx==8.2.3", "sphinx-lint==1.0.1", ] +[tool.setuptools] +packages = [] diff --git a/doc/source/namelists/initial_conditions.nml.rst b/doc/source/namelists/initial_conditions.nml.rst index 3d70b899..1fdffedb 100644 --- a/doc/source/namelists/initial_conditions.nml.rst +++ b/doc/source/namelists/initial_conditions.nml.rst @@ -425,6 +425,11 @@ The required variables for a particular configuration, along with their 'type' a +----------------------------------+-----------------------------------------------------------------------------------------+---------+ | ``rivers_outflow_rp`` | River outflow on river routing points (kg s\ :sup:`-1`) | none | +----------------------------------+-----------------------------------------------------------------------------------------+---------+ +| Required if :nml:mem:`JULES_RIVERS::l_rivers` = TRUE, :nml:mem:`JULES_RIVERS::i_river_vn` = '3', | +| :nml:mem:`JULES_INITIAL::dump_file` = TRUE and :nml:mem:`OASIS_RIVERS::send_fields` contains ``inland_outflow``. | ++----------------------------------+-----------------------------------------------------------------------------------------+---------+ +| ``inland_outflow_rp`` | Inland basin flow on river routing points (kg m\ :sup:`-2` s\ :sup:`-1`). | none | ++----------------------------------+-----------------------------------------------------------------------------------------+---------+ | Required if :nml:mem:`JULES_VEGETATION::photo_acclim_model` = 2 or 3 | +----------------------------------+-----------------------------------------------------------------------------------------+---------+ | ``t_growth_gb`` | Running mean air temperature (K) | none | diff --git a/doc/source/namelists/jules_hydrology.nml.rst b/doc/source/namelists/jules_hydrology.nml.rst index b72be45e..d67fa50a 100644 --- a/doc/source/namelists/jules_hydrology.nml.rst +++ b/doc/source/namelists/jules_hydrology.nml.rst @@ -97,6 +97,18 @@ This file sets the hydrology options. It contains one namelist called :nml:lst:` Allow the soil conductance to increase as the top layer soil moisture goes above the critical soil moisture, as in Best et al. (2011) equation 7. +.. nml:member:: l_inland + + :type: logical + :default: F + + TRUE + Some rivers end at inland basin flow points. This inland basin flow is used to increase soil moisture at these locations for water conservation purposes. This is only available for coupled models i.e. UM or LFRic. When coupled to LFRic, the soil moisture flux correction applied by this switch must be calculated by the Rivers-standalone component (:nml:mem:`JULES_MODEL_ENVIRONMENT::lsm_id` = 3) and passed to LFRic via OASIS using :nml:mem:`OASIS_RIVERS::send_fields` = inland_outflow. + + FALSE + No inland basin flow. + + .. nml:group:: Only used if :nml:mem:`JULES_HYDROLOGY::l_top` = TRUE .. nml:member:: zw_max diff --git a/doc/source/namelists/jules_irrig.nml.rst b/doc/source/namelists/jules_irrig.nml.rst index b3164086..e1c55478 100644 --- a/doc/source/namelists/jules_irrig.nml.rst +++ b/doc/source/namelists/jules_irrig.nml.rst @@ -14,7 +14,7 @@ This namelist specifies the different options available for setting up the irrig .. note:: - Irrigation can be applied at a constant rate in three ways: + If using :nml:mem:`JULES_IRRIG::l_irrig_dmd` = TRUE, irrigation can be applied at a constant rate in 3 ways * 1. To apply a constant irrigation to all surface tiles the irrigation settings are as follows: frac_irrig_all_tiles=T, set_irrfrac_on_irrtiles=F and set a value for :nml:mem:`JULES_IRRIG_PROPS::const_frac_irr`. * 2. To apply a constant irrigation to only specific surface tiles the irrigation settings are as follows: frac_irrig_all_tiles=F and set_irrfrac_on_irrtiles=T and set a value for :nml:mem:`JULES_IRRIG_PROPS::const_irrfrac_irrtiles`. * 3. To apply a constant irrigation to specific surface tiles as an average across the gridbox, which is the way irrigation on specific tiles was done prior to vn5.7, the irrigation settings are as follows: frac_irrig_all_tiles=F, set_irrfrac_on_irrtiles=F and set a value for :nml:mem:`JULES_IRRIG_PROPS::const_frac_irr`. @@ -26,7 +26,7 @@ This namelist specifies the different options available for setting up the irrig :type: logical :default: F - Switch controlling the implementation of irrigation demand code. + Switch controlling the implementation of fraction-based irrigation demand code. TRUE Tiles are irrigated. @@ -35,8 +35,23 @@ This namelist specifies the different options available for setting up the irrig No effect. This must be set to TRUE if :nml:mem:`JULES_WATER_RESOURCES::l_water_irrigation` = TRUE. + This must be set to FALSE if :nml:mem:`JULES_IRRIG::irrig_option` > 0. +.. nml:member:: irrig_option + + :type: integer + :permitted: 0 or 2 + :default: 0 + + Options for applying irrigation + + 0. No irrigation applied. + 1. Not available yet. In a future release this will replace :nml:mem:`l_irrig_dmd`. + 2. Apply irrigation to irrigated surface types C3_irrig and/or C4_irrig. This option requires :nml:mem:`JULES_IRRIG::l_irrig_dmd` = FALSE and :nml:mem:`JULES_PFTPARM::irrig_pft_io` = 0 or 1. + + When :nml:mem:`JULES_IRRIG::l_irrig_dmd` = TRUE, :nml:mem:`JULES_IRRIG::irrig_option` is not available. + .. nml:member:: l_irrig_limit :type: logical diff --git a/doc/source/namelists/jules_soil_biogeochem.nml.rst b/doc/source/namelists/jules_soil_biogeochem.nml.rst index 7581c716..b90452db 100644 --- a/doc/source/namelists/jules_soil_biogeochem.nml.rst +++ b/doc/source/namelists/jules_soil_biogeochem.nml.rst @@ -113,6 +113,60 @@ If using the ECOSSE soil model, most soil parameters are read from a separate fi .. note:: If layered soil C is used (:nml:mem:`l_layeredc` = TRUE) the temperature and moisture of each soil layer is used to calculation respiration from that layer. + .. nml:member:: l_bgc_heat + + :type: logical + :default: F + + Switch to include biogenic heating due to soil carbon decomposition. + + TRUE + Include the release of heat associated with soil carbon decomposition. + + FALSE + Not releasing the heat associated with soil carbon decomposition. + + .. seealso:: + References: + + * Catherine Luke PhD thesis: Modelling Aspects of Land-Atmosphere Interaction: Thermal Instability in Peatland Soils and Land Parameter Estimation Through Data Assimilation. Available from `University of Exeter library `_. + + * Luke, C.M. and Cox, P.M. (2011), Soil carbon and climate change: from the Jenkinson effect to the compost-bomb instability. European Journal of Soil Science, 62: 5-12. https://doi.org/10.1111/j.1365-2389.2010.01312.x + + .. nml:member:: cs_decomp_soil_moist_func + + :type: integer + :permitted: 0 or 1 + :default: 0 + + Switch affecting the moisture function used for soil respiration calculation. + + 0. | The response of the soil carbon decomposition to soil moisture is calculated using Equation 67 in Clark et al. (2011). + + 1. | The response of the soil carbon decomposition to soil moisture is modified using an approach similar to Equation 3 and Figure 1 in Chadburn et al. (2022). Microbial activity drops in dry conditions. In anaerobic conditions, respiration is significantly reduced compared to the maximum rate in aerobic conditions. In Chandburn et al. (2022) the value of the respiration at saturation in anaerobic conditions is set to 20 % of the maximum rate. This is now set by :nml:mem:`fsthsat_cs_decomp_opt1`. This approach was developed for JULES-peat. + + .. seealso:: + References: + + * Chadburn, Sarah E., et al. "A new approach to simulate peat accumulation, degradation and stability in a global land surface scheme (JULES vn5. 8_accumulate_soil) for northern and temperate peatlands." Geoscientific Model Development 15.4 (2022): 1633-1657 (https://gmd.copernicus.org/articles/15/1633/2022/). + + * Clark, D. B., Mercado, L. M., Sitch, S., Jones, C. D., Gedney, N., Best, M. J., Pryor, M., Rooney, G. G., Essery, R. L. H., Blyth, E., Boucher, O., Harding, R. J., Huntingford, C., and Cox, P. M.: The Joint UK Land Environment Simulator (JULES), model description – Part 2: Carbon fluxes and vegetation dynamics, Geosci. Model Dev., 4, 701–722, (https://doi.org/10.5194/gmd-4-701-2011), 2011. + + .. note:: In Chadburn et al. (2022) the value of this parameter is set to 0.2 but in Elise Dehaen's PhD thesis (Exeter University, 2026) a value of 0.1 was proposed for peatlands. + + .. nml:member:: heat_of_respiration + + :type: real + :default: 3.9e07 + + Specific heat of the respiration reaction J (kgC)\ :sup:`-1`. Only required if (:nml:mem:`l_bgc_heat` = TRUE) + + .. nml:member:: fsthsat_cs_decomp_opt1 + + :type: real + :default: 0.2 + + The value of the soil respiration at saturation in anaerobic conditions as a fraction of the maximum rate. Values should be between 0 and 1. Only used if :nml:mem:`cs_decomp_soil_moist_func` = 1. .. nml:group:: Parameters for the 4-pool model (only used if :nml:mem:`soil_bgc_model` = 2) diff --git a/doc/source/namelists/jules_surface_types.nml.rst b/doc/source/namelists/jules_surface_types.nml.rst index d23cc7f5..39a2d09c 100644 --- a/doc/source/namelists/jules_surface_types.nml.rst +++ b/doc/source/namelists/jules_surface_types.nml.rst @@ -282,6 +282,14 @@ and removed in the GUI window as described in the table below. To: Index of C3 pasture PFT surface type (#302). +.. nml:member:: c3_irrig + + :type: integer + :permitted: 1:npft + :default: -32768 + + Index of C3 irrigated PFT surface type (#303). Can only be used if :nml:mem:`JULES_IRRIG::irrig_option` = 2. + .. nml:member:: c4_grass :type: integer @@ -306,6 +314,14 @@ and removed in the GUI window as described in the table below. To: Index of C4 pasture PFT surface type (#402). +.. nml:member:: c4_irrig + + :type: integer + :permitted: 1:npft + :default: -32768 + + Index of C4 irrigated PFT surface type (#403). Can only be used if :nml:mem:`JULES_IRRIG::irrig_option` = 2. + .. nml:member:: shrub :type: integer diff --git a/doc/source/namelists/model_grid.nml.rst b/doc/source/namelists/model_grid.nml.rst index b5f1eeac..2d4222bc 100644 --- a/doc/source/namelists/model_grid.nml.rst +++ b/doc/source/namelists/model_grid.nml.rst @@ -382,7 +382,7 @@ Examples of how to specify the model domain using through this namelist are prov .. nml:namelist:: JULES_LAND_FRAC -Land fraction is the fraction of each gridbox that is land. Currently, JULES considers any gridbox with land fraction > 0 to be 100% land, and all others to be 100% sea (or sea-ice). Land fraction data can be used to select only land points from the full input grid (see below). +Land fraction is the fraction of each gridbox that is land. By default, JULES considers any gridbox with land fraction > 0 to be 100% land, and all others to be 100% sea (or sea-ice). Rivers-standalone (TRIP) when coupled to LFRic needs to be able to determine coastal endorheic basins. In this case, :nml:mem:`l_use_land_fraction`, allows the land fractions to be kept. Land fraction data can be used to select only land points from the full input grid (see below). .. warning:: When the input grid consists of a single location (1D and :nml:mem:`JULES_INPUT_GRID::npoints` = 1 or 2D and :nml:mem:`JULES_INPUT_GRID::nx` = :nml:mem:`JULES_INPUT_GRID::ny` = 1), that single location is assumed to be 100% land. @@ -411,6 +411,21 @@ For any input grid with more than a single location, the following are used: In the file, the variable must have no levels dimensions and no time dimension. +.. nml:member:: l_use_land_fraction + + :type: logical + :default: F + + Land fractions are used to determine coastal endorheic basins to calculate the inland basin flow diagnostic inland_outflow_rp or :nml:mem:`OASIS_RIVERS::send_fields` = inland_outflow. + + TRUE + Supply land fractions (as fractions) to both the main grid and the rivers grid. This requires both grids and land-sea mask to be the same. + + FALSE + Land fractions are not used and the land fraction field is set to either 1.0 (any land) or 0.0. + + .. note:: This is only available in Rivers-standalone (TRIP) to calculate inland outflow fields. + ``JULES_MODEL_GRID`` namelist members ------------------------------------- diff --git a/doc/source/namelists/oasis_rivers.nml.rst b/doc/source/namelists/oasis_rivers.nml.rst index 591d0912..56b9ab20 100644 --- a/doc/source/namelists/oasis_rivers.nml.rst +++ b/doc/source/namelists/oasis_rivers.nml.rst @@ -40,12 +40,16 @@ This file contains a single namelists called :nml:lst:`OASIS_RIVERS`, which indi .. nml:member:: send_fields :type: character(:) - :permitted: 'outflow_per_river' + :permitted: 'outflow_per_river','inland_outflow' :default: '' List of fields to be sent via coupling from the river executable to other models. Names are case sensitive. -.. note:: The only field that can be sent via coupling is the total river runoff (`outflow_per_river`). +.. note:: The fields that can be sent via coupling are: + + 1. The total river runoff (`outflow_per_river`) which is sent to the ocean. + + 2. The inland basin flow (`inland_outflow`) which is sent to the land surface hydrology scheme. Turn on :nml:mem:`JULES_HYDROLOGY::l_inland` (in the land surface side of the coupler) to pass this inland basin flow into soil moisture. .. nml:member:: receive_fields diff --git a/doc/source/namelists/pft_params.nml.rst b/doc/source/namelists/pft_params.nml.rst index 8f4bb2d0..4219bf84 100644 --- a/doc/source/namelists/pft_params.nml.rst +++ b/doc/source/namelists/pft_params.nml.rst @@ -389,6 +389,19 @@ ease the direct links to these documents are: See HCTN30 p14 for full details. + +.. nml:member:: irrig_pft_io + + :type: integer(npft) + :default: None + + Surface tile irrigation flag + + Flag to indicate whether the vegetated surface tile is irrigated or not, where 0 = Not irrigated and 1 = Irrigated. Can only be set if :nml:mem:`JULES_IRRIG::irrig_option` = 2 and :nml:mem:`JULES_IRRIG::l_irrig_dmd` = FALSE, else it should be untriggered and initialised to imdi. + + This is an alternative scheme to the fraction-based irrigation demand code initiated using :nml:mem:`JULES_IRRIG::l_irrig_dmd` = TRUE. Please refer to the instructions in the :nml:lst:`JULES_IRRIG` namelist for setting up this scheme. + + .. nml:member:: gsoil_f_io :type: real(npft) diff --git a/doc/source/output-variables.rst b/doc/source/output-variables.rst index 4349855d..1e337f3c 100644 --- a/doc/source/output-variables.rst +++ b/doc/source/output-variables.rst @@ -434,6 +434,15 @@ Rivers | | This technically has dimensions of "np_rivers", although only ``[1:n_rivers]``, defined by | | | | the rivers_outflow_number (see :ref:`list-of-rivers-params`), is populated. | | +-------------------------------+-----------------------------------------------------------------------------------------------+------------+ +| ``inland_outflow_rp`` | Inland basin flow on river routing points (kg m\ :sup:`-2` s\ :sup:`-1`). | np_rivers | +| | Only available if :nml:mem:`JULES_RIVERS::l_rivers` = TRUE. | | +| | | | +| | Adding this diagnostic will turn on inland basin flow which diverts river water flowing | | +| | into an inland basin flow point to this diagnostic. At the same time runoff feeding | | +| | into an inland basin flow point will go to the oceans (via ``rivers_outflow_rp``). This is | | +| | to stop water being caught in an infinite loop between soils and rivers. Therefore by | | +| | adding this diagnostic the ``rflow`` and ``rivers_sto_rp`` diagnostics will also change. | | ++-------------------------------+-----------------------------------------------------------------------------------------------+------------+ | ``rrun_rp`` | River routing gridbox runoff rate received by river routing routine | np_rivers | | | (kg m\ :sup:`-2` s\ :sup:`-1`). | | | | Only available if :nml:mem:`JULES_RIVERS::l_rivers` = TRUE. | | diff --git a/doc/source/release_notes/JULES8-0.rst b/doc/source/release_notes/JULES8-0.rst index 22252d19..7c42b83c 100644 --- a/doc/source/release_notes/JULES8-0.rst +++ b/doc/source/release_notes/JULES8-0.rst @@ -26,7 +26,7 @@ General/Technical changes Bugs fixed ---------- - * An upgrade macro that was missied from the previous release has been added. (#1619) + * An upgrade macro that was missed from the previous release has been added. (#1619) * Removed default diagnostic flags used for LFRic. (#1627) @@ -43,7 +43,7 @@ Documentation updates * Updates associated with many of the above changes, and release notes. (#1638) -Documentation can be viewed on the github page ``_. +Documentation can be viewed on the github page ``_. After migrating to GitHub, the JULES code repository is now available at `https://github.com/MetOffice/jules `_. diff --git a/doc/source/release_notes/JULES8-1.rst b/doc/source/release_notes/JULES8-1.rst index 6b8abe43..06102e87 100644 --- a/doc/source/release_notes/JULES8-1.rst +++ b/doc/source/release_notes/JULES8-1.rst @@ -29,4 +29,4 @@ Documentation updates * Updates associated with many of the above changes, and release notes. -Documentation can be viewed on the github page ``_. +Documentation can be viewed on the github page ``_. diff --git a/doc/source/release_notes/JULES8-2.rst b/doc/source/release_notes/JULES8-2.rst new file mode 100644 index 00000000..fb6366ca --- /dev/null +++ b/doc/source/release_notes/JULES8-2.rst @@ -0,0 +1,46 @@ +JULES version 8.2 Release Notes +=============================== + +The JULES vn8.2 release consists of approximately 22 contributions, including work by many people. The `JULES repository `_ is now fully open to public access following adoption of the BSD 3-Clause licence. + +Full details of the changes committed for JULES vn8.2 can be found on the `JULES GitHub repository `_. + +Issue numbers are indicated below, e.g. #72. + +Science changes +--------------- + + * The form of the relationship between soil decomposition and soil moisture is controlled by :nml:mem:`JULES_SOIL_BIOGEOCHEM::cs_decomp_soil_moist_func`, allowing for reduced decomposition in very wet soils. (#72) + * Heating from decomposition of soil is included via switch :nml:mem:`JULES_SOIL_BIOGEOCHEM::l_bgc_heat`. (#111) + * A new irrigation scheme, activated by the switch :nml:mem:`JULES_IRRIG::irrig_option`, applies new methods for irrigation on the surface tiles. The code now has two additional grass tiles (C3_irrig and C4_irrig) which are irrigated (see :nml:mem:`JULES_PFTPARM::irrig_pft_io`). On these tiles, the soil moisture availability factor is set to 1.0 and soil moisture extraction is disabled. This functionality can only be used with :nml:mem:`JULES_IRRIG::l_irrig_dmd` = FALSE. (#107) + + +Bug fixes +--------- + * Fixed a bug (which previously would result in a segmentation fault) related to metstats when running JULES standalone with :nml:mem:`FIRE_SWITCHES::l_fire` = TRUE and more than one and point. (#85) + * Fixed issues in the daily weather disaggregator (see :nml:mem:`JULES_DRIVE::l_daily_disagg`) which previously would invert the diurnal cycle in high latitude regions under polar day/night. This will change existing results. (#83) + + +General/Technical changes +------------------------- + + * Inland river flow (for endorheic basics) is passed through the OASIS coupler, for coupling to an ocean model. This is enabled via :nml:mem:`JULES_HYDROLOGY::l_inland` and only affects the rivers-only build of JULES (:nml:mem:`JULES_MODEL_ENVIRONMENT::lsm_id` = 3). (#89) + * Metadata for :nml:lst:`JULES_PFTPARM` migrated to the shared metadata in jules-shared. (#42) + * Added the jules-lfric metadata section (moved from lfric_apps). (#110) + * Corrections to workflow. (#71, 94) + * Added a CODEOWNERS file to the JULES repository to notify code owners when their areas of the JULES source code are updated, and later updates to that file (#87, 109, 112) + + +Changes to testing +------------------ + + * Replaced the Rose Stem configuration for NIWA's previous HPC with a new ESNZ Cascade configuration. It also removes tests for which input files are not currently publicly available and introduces a compiler configuration for Intel OneAPI compilers. (#108) + + +Documentation and licence updates +--------------------------------- + + * Updates associated with many of the above changes, release notes, and more. (#45, 80, 124) + * Addition of the JULES Contributor Licence Agreement. (#50) + +Documentation can be viewed on the github page ``_. diff --git a/doc/source/release_notes/contents.rst b/doc/source/release_notes/contents.rst index f68ab591..c2a195bd 100644 --- a/doc/source/release_notes/contents.rst +++ b/doc/source/release_notes/contents.rst @@ -3,6 +3,7 @@ Release notes ============= .. toctree:: + JULES8-2 JULES8-1 JULES8-0 JULES7-9 diff --git a/etc/fcm-make/compiler/ifx.cfg b/etc/fcm-make/compiler/ifx.cfg new file mode 100644 index 00000000..41d2da49 --- /dev/null +++ b/etc/fcm-make/compiler/ifx.cfg @@ -0,0 +1,39 @@ +##################################################################################### +# Set compiler specific variables for Intel OneAPI +##################################################################################### +# Base compiler name +$compiler{?} = ifx + +# Name of mpi wrapper for compiler +$compiler_mpi{?} = mpif90 + +# Compiler-specific preprocessor directives +$fpp_defs = $fpp_defs INTEL_FORTRAN + +# Non-standard modules provided by the compiler runtime +$external_mods = $external_mods ifcore ifposix + +# Common run-time flags +$fflags_common = -heap-arrays -fp-model precise +$ldflags_common = -heap-arrays -fp-model precise + +# Flags for debug mode +# We use ftz to prevent exceptions for underflows, since there are plenty of those in +# JULES and they don't generally cause problems +$fflags_debug = $fflags_common -g -C -check noarg_temp_created -traceback -fpe0 -ftz +$ldflags_debug = $ldflags_common -g -C -check noarg_temp_created -traceback -fpe0 -ftz + +# Flags for normal mode +$fflags_normal = $fflags_common -traceback +$ldflags_normal = $ldflags_common -traceback + +# Flags for fast mode +$fflags_fast = $fflags_common -O3 +$ldflags_fast = $ldflags_common -O3 + +# OpenMP specific flags +$fflags_noomp = +$ldflags_noomp = + +$fflags_omp{?} = -qopenmp +$ldflags_omp{?} = -qopenmp diff --git a/etc/fcm-make/make-river.cfg b/etc/fcm-make/make-river.cfg index 96438df1..68c43e11 100644 --- a/etc/fcm-make/make-river.cfg +++ b/etc/fcm-make/make-river.cfg @@ -69,6 +69,7 @@ extract.path-incl[river] = $extract_path_incl \ src/control/standalone/var/model_grid_mod.F90 \ src/control/standalone/var/model_time_mod.F90 \ src/control/standalone/var/timestep_mod.F90 \ + src/initialisation/shared/check_compatible_options_rivers_mod.F90 \ src/initialisation/standalone/ancillaries/ancil_namelist_mod.F90 \ src/initialisation/standalone/ancillaries/init_ancillaries_coupling_mod.F90 \ src/initialisation/standalone/ancillaries/init_rivers_process_data_mod.F90 \ diff --git a/etc/fcm-make/platform/esnz-cascade-ifx.cfg b/etc/fcm-make/platform/esnz-cascade-ifx.cfg new file mode 100644 index 00000000..dc124116 --- /dev/null +++ b/etc/fcm-make/platform/esnz-cascade-ifx.cfg @@ -0,0 +1,26 @@ +################################################################################ +# This platform file should be used for Intel OneAPI builds on ESNZ Cascade +################################################################################ + +# Load environment variable pre-settings +include = $HERE/envars.cfg + +# Override any of the input variables that we need to +$JULES_COMPILER = ifx +$JULES_MPI = mpi-dynamic +$JULES_NETCDF = netcdf +$JULES_NETCDF_INC_PATH = $NETCDF_FORTRAN_ROOT/include +$JULES_NETCDF_LIB_PATH = $NETCDF_FORTRAN_ROOT/lib +$JULES_LDFLAGS_EXTRA = +$JULES_REMOTE = local + +# All dependency libraries are dynamically linked +$ncdf_libs_dynamic{?} = netcdff + +# Now load the the build config settings based on the supplied environment variables. +include = $HERE/load_settings.cfg + +# Disable checks for unintialised variables to prevent the memory +# sanitizer from tripping up in libc; generate AVX2 instructions +$fflags = $fflags -check nouninit -march=x86-64-v3 +$ldflags = $ldflags -check nouninit -march=x86-64-v3 diff --git a/etc/fcm-make/platform/niwa-cs500-gfortran.cfg b/etc/fcm-make/platform/niwa-cs500-gfortran.cfg deleted file mode 100644 index ee2ef9f7..00000000 --- a/etc/fcm-make/platform/niwa-cs500-gfortran.cfg +++ /dev/null @@ -1,20 +0,0 @@ -################################################################################ -# This platform file should be used for gfortran builds on NIWA CS500 HPCs -################################################################################ - -# Load environment variable pre-settings -include = $HERE/envars.cfg - -# Override any of the input variables that we need to -$JULES_COMPILER = gfortran -$JULES_MPI = mpi -$JULES_NETCDF = netcdf -$JULES_NETCDF_INC_PATH = $EBROOTNETCDFMINFORTRAN/include -$JULES_NETCDF_LIB_PATH = -$JULES_LDFLAGS_EXTRA = - -# Intel MPI requires a special gfortran wrapper -$compiler_mpi = mpigfortran-7.1.0 - -# Now load the the build config settings based on the supplied environment variables. -include = $HERE/load_settings.cfg diff --git a/etc/fcm-make/platform/niwa-cs500-intel.cfg b/etc/fcm-make/platform/niwa-cs500-intel.cfg deleted file mode 100644 index d128c224..00000000 --- a/etc/fcm-make/platform/niwa-cs500-intel.cfg +++ /dev/null @@ -1,21 +0,0 @@ -################################################################################ -# This platform file should be used for Intel builds on NIWA CS500 HPCs -################################################################################ - -# Load environment variable pre-settings -include = $HERE/envars.cfg - -# Override any of the input variables that we need to -$JULES_COMPILER = intel -$JULES_MPI = mpi -$JULES_NETCDF = netcdf -$JULES_NETCDF_INC_PATH = $EBROOTNETCDFMINFORTRAN/include -$JULES_NETCDF_LIB_PATH = -$JULES_LDFLAGS_EXTRA = - -# Flag -openmp is no longer supported by recent Intel compiler versions -$fflags_omp = -qopenmp -$ldflags_omp = -qopenmp - -# Now load the the build config settings based on the supplied environment variables. -include = $HERE/load_settings.cfg diff --git a/etc/fcm-make/platform/niwa-xc50-cce.cfg b/etc/fcm-make/platform/niwa-xc50-cce.cfg deleted file mode 100644 index ed5f903a..00000000 --- a/etc/fcm-make/platform/niwa-xc50-cce.cfg +++ /dev/null @@ -1,26 +0,0 @@ -################################################################################ -# This platform file should be used for Cray builds on NIWA XC50 HPCs -################################################################################ - -# Load environment variable pre-settings -include = $HERE/envars.cfg - -# Override any of the input variables that we need to -$JULES_COMPILER = cray -$JULES_MPI = mpi -$JULES_NETCDF = netcdf -$JULES_NETCDF_INC_PATH = -$JULES_NETCDF_LIB_PATH = -$JULES_LDFLAGS_EXTRA = - -# Use compiler wrappers provided by Cray programming environment -$compiler = ftn -$compiler_mpi = ftn - -# NetCDF libraries are linked automatically -$ncdf_libs_static = -$ncdf_libs_dynamic = -$ncdf_ldflags_dynamic = - -# Now load the the build config settings based on the supplied environment variables. -include = $HERE/load_settings.cfg diff --git a/etc/fcm-make/platform/niwa-xc50-gfortran.cfg b/etc/fcm-make/platform/niwa-xc50-gfortran.cfg deleted file mode 100644 index c1f1ad21..00000000 --- a/etc/fcm-make/platform/niwa-xc50-gfortran.cfg +++ /dev/null @@ -1,28 +0,0 @@ -################################################################################ -# This platform file should be used for gfortran builds on NIWA XC50 HPCs -################################################################################ - -# Load environment variable pre-settings -include = $HERE/envars.cfg - -# Override any of the input variables that we need to -$JULES_COMPILER = gfortran -$JULES_MPI = mpi -$JULES_NETCDF = netcdf -$JULES_NETCDF_INC_PATH = -$JULES_NETCDF_LIB_PATH = -$JULES_LDFLAGS_EXTRA = - -# Use compiler wrappers provided by Cray programming environment -$compiler = ftn -$compiler_mpi = ftn - -# NetCDF libraries are linked automatically -$ncdf_libs_static = -$ncdf_libs_dynamic = -$ncdf_ldflags_dynamic = - -# Now load the the build config settings based on the supplied environment variables. -include = $HERE/load_settings.cfg - -build.prop{fc.flags}[jules/src/io/dump/read_dump_mod.F90] = $fflags_common -fallow-argument-mismatch -w diff --git a/etc/fcm-make/platform/niwa-xc50-intel.cfg b/etc/fcm-make/platform/niwa-xc50-intel.cfg deleted file mode 100644 index 27afbcd7..00000000 --- a/etc/fcm-make/platform/niwa-xc50-intel.cfg +++ /dev/null @@ -1,30 +0,0 @@ -################################################################################ -# This platform file should be used for Intel builds on NIWA XC50 HPCs -################################################################################ - -# Load environment variable pre-settings -include = $HERE/envars.cfg - -# Override any of the input variables that we need to -$JULES_COMPILER = intel -$JULES_MPI = mpi -$JULES_NETCDF = netcdf -$JULES_NETCDF_INC_PATH = -$JULES_NETCDF_LIB_PATH = -$JULES_LDFLAGS_EXTRA = - -# Use compiler wrappers provided by Cray programming environment -$compiler = ftn -$compiler_mpi = ftn - -# NetCDF libraries are linked automatically -$ncdf_libs_static = -$ncdf_libs_dynamic = -$ncdf_ldflags_dynamic = - -# Now load the the build config settings based on the supplied environment variables. -include = $HERE/load_settings.cfg - -# NetCDF crashes with divide-by-zero error when -fpe0 is set -$fflags = $fflags -fpe3 -$ldflags = $ldflags -fpe3 diff --git a/rose-meta/jules-fcm-make/HEAD/rose-meta.conf b/rose-meta/jules-fcm-make/HEAD/rose-meta.conf index 5cb48f7e..080b3714 100644 --- a/rose-meta/jules-fcm-make/HEAD/rose-meta.conf +++ b/rose-meta/jules-fcm-make/HEAD/rose-meta.conf @@ -93,13 +93,12 @@ trigger=env=JULES_REMOTE: custom; = env=JULES_NETCDF_INC_PATH: custom; = env=JULES_NETCDF_LIB_PATH: custom; url=https://metoffice.github.io/jules/latest/building-and-running/fcm.html#environment-variables-used-when-building-jules-using-fcm-make -values=bom-dr, bom-xc40-intel, ceh, - =ceh-rocky9, custom, jasmin-gcc-nompi, - =jasmin-intel-nompi, jasmin-lotus-intel, meto-azspice-gnu-mpi, - =meto-azspice-gnu-nompi, meto-ex1a-cce, meto-ex1a-gfortran, - =nci-gfortran, nci-intel, niwa-cs500-gfortran, - =niwa-cs500-intel, niwa-xc50-cce, niwa-xc50-gfortran, - =niwa-xc50-intel, uoe-linux-gfortran, vm, +values=bom-dr, bom-xc40-intel, ceh, + =ceh-rocky9, custom, jasmin-gcc-nompi, + =jasmin-intel-nompi, jasmin-lotus-intel, meto-azspice-gnu-mpi, + =meto-azspice-gnu-nompi, meto-ex1a-cce, meto-ex1a-gfortran, + =nci-gfortran, nci-intel, esnz-cascade-ifx, + =uoe-linux-gfortran, vm, =$JULES_PLATFORM widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget diff --git a/rose-meta/jules-fcm-make/versions.py b/rose-meta/jules-fcm-make/versions.py index e45e2e4c..5fa3f750 100644 --- a/rose-meta/jules-fcm-make/versions.py +++ b/rose-meta/jules-fcm-make/versions.py @@ -506,3 +506,13 @@ class vn80_vn81(MacroUpgrade): def upgrade(self, config, meta_config=None): # Nothing to do return config, self.reports + +class vn81_vn82(MacroUpgrade): + """Version bump macro""" + + BEFORE_TAG = "vn8.1" + AFTER_TAG = "vn8.2" + + def upgrade(self, config, meta_config=None): + # Nothing to do + return config, self.reports diff --git a/rose-meta/jules-fcm-make/vn8.2/rose-meta.conf b/rose-meta/jules-fcm-make/vn8.2/rose-meta.conf new file mode 100644 index 00000000..e8a61e4f --- /dev/null +++ b/rose-meta/jules-fcm-make/vn8.2/rose-meta.conf @@ -0,0 +1,136 @@ +[env] +title=Build configuration + +[env=JULES_BUILD] +compulsory=true +description=Type of build +sort-key=06 +url=https://metoffice.github.io/jules/vn8.2/building-and-running/fcm.html#environment-variables-used-when-building-jules-using-fcm-make +values=normal, fast, debug, $JULES_BUILD +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[env=JULES_COMPILER] +compulsory=false +description=Compiler to use settings for +sort-key=05 +url=https://metoffice.github.io/jules/vn8.2/building-and-running/fcm.html#environment-variables-used-when-building-jules-using-fcm-make +values=gfortran, intel, cray, nagfor, $JULES_COMPILER +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[env=JULES_FFLAGS_EXTRA] +compulsory=false +description=Extra compiler flags to apply +sort-key=13 +url=https://metoffice.github.io/jules/vn8.2/building-and-running/fcm.html#environment-variables-used-when-building-jules-using-fcm-make + +[env=JULES_LDFLAGS_EXTRA] +compulsory=false +description=Extra library flags to apply +sort-key=14 +url=https://metoffice.github.io/jules/vn8.2/building-and-running/fcm.html#environment-variables-used-when-building-jules-using-fcm-make + +[env=JULES_MPI] +compulsory=false +description=Build with MPI + =Linked NetCDF libraries must have parallel support +sort-key=08 +url=https://metoffice.github.io/jules/vn8.2/building-and-running/fcm.html#environment-variables-used-when-building-jules-using-fcm-make +value-titles=no, yes, defined by suite +values=nompi, mpi, $JULES_MPI +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[env=JULES_NETCDF] +compulsory=false +description=Build with NetCDF +sort-key=09 +trigger=env=JULES_NETCDF_PATH: netcdf; + = env=JULES_NETCDF_INC_PATH: netcdf; + = env=JULES_NETCDF_LIB_PATH: netcdf; +url=https://metoffice.github.io/jules/vn8.2/building-and-running/fcm.html#environment-variables-used-when-building-jules-using-fcm-make +value-titles=no, yes, defined by suite +values=nonetcdf, netcdf, $JULES_NETCDF +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[env=JULES_NETCDF_INC_PATH] +compulsory=false +description=Path to NetCDF include files +sort-key=11 +type=character +url=https://metoffice.github.io/jules/vn8.2/building-and-running/fcm.html#environment-variables-used-when-building-jules-using-fcm-make + +[env=JULES_NETCDF_LIB_PATH] +compulsory=false +description=Path to NetCDF library files +sort-key=12 +type=character +url=https://metoffice.github.io/jules/vn8.2/building-and-running/fcm.html#environment-variables-used-when-building-jules-using-fcm-make + +[env=JULES_NETCDF_PATH] +compulsory=false +description=Path to NetCDF installation +sort-key=10 +type=character +url=https://metoffice.github.io/jules/vn8.2/building-and-running/fcm.html#environment-variables-used-when-building-jules-using-fcm-make + +[env=JULES_OMP] +compulsory=true +description=Build with OpenMP +sort-key=07 +url=https://metoffice.github.io/jules/vn8.2/building-and-running/fcm.html#environment-variables-used-when-building-jules-using-fcm-make +value-titles=no, yes, defined by suite +values=noomp, omp, $JULES_OMP +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[env=JULES_PLATFORM] +compulsory=true +description=Platform to use settings for +sort-key=02 +trigger=env=JULES_REMOTE: custom; + = env=JULES_COMPILER: custom; + = env=JULES_MPI: custom; + = env=JULES_NETCDF: custom, vm; + = env=JULES_NETCDF_PATH: custom; + = env=JULES_NETCDF_INC_PATH: custom; + = env=JULES_NETCDF_LIB_PATH: custom; +url=https://metoffice.github.io/jules/vn8.2/building-and-running/fcm.html#environment-variables-used-when-building-jules-using-fcm-make +values=bom-dr, bom-xc40-intel, ceh, + =ceh-rocky9, custom, jasmin-gcc-nompi, + =jasmin-intel-nompi, jasmin-lotus-intel, meto-azspice-gnu-mpi, + =meto-azspice-gnu-nompi, meto-ex1a-cce, meto-ex1a-gfortran, + =nci-gfortran, nci-intel, esnz-cascade-ifx, + =uoe-linux-gfortran, vm, + =$JULES_PLATFORM +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[env=JULES_REMOTE] +compulsory=false +description=Build on local or remote machine +sort-key=03 +trigger=env=JULES_REMOTE_HOST: remote; + =env=JULES_REMOTE_PATH: remote; +url=https://metoffice.github.io/jules/vn8.2/building-and-running/fcm.html#environment-variables-used-when-building-jules-using-fcm-make +values=local, remote, $JULES_REMOTE +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[env=JULES_REMOTE_HOST] +compulsory=false +description=Remote machine name (or group) + =This is used as an argument to rose host-select +sort-key=04 +type=character +url=https://metoffice.github.io/jules/vn8.2/building-and-running/fcm.html#environment-variables-used-when-building-jules-using-fcm-make + +[env=JULES_REMOTE_PATH] +compulsory=false +description=Path to the remote make directory + =Overrides the path set by Rose to the + =make directory on the remote machine +sort-key=04a +url=https://metoffice.github.io/jules/vn8.2/building-and-running/fcm.html#environment-variables-used-when-building-jules-using-fcm-make + +[env=JULES_SOURCE] +compulsory=false +description=Path to JULES source +fail-if=this == ''; # Source to build from must be non-empty +sort-key=01 +url=https://metoffice.github.io/jules/vn8.2/building-and-running/fcm.html#environment-variables-used-when-building-jules-using-fcm-make diff --git a/rose-meta/jules-lfric/HEAD/rose-meta.conf b/rose-meta/jules-lfric/HEAD/rose-meta.conf new file mode 100644 index 00000000..be744372 --- /dev/null +++ b/rose-meta/jules-lfric/HEAD/rose-meta.conf @@ -0,0 +1,710 @@ +############################################################################### +# This is the LFRic flavour of the JULES metadata +############################################################################### +# This should only contain: +# * Import statements from jules-shared. +# * LFRic specific amendments to the imported metadata. +# The majority of the metadata should be under rose-meta/jules-shared. +# +# This file is imported by jules-lsm in the LFRic apps repository. +# +# Please see jules:wiki:SharingJULESmetadata + +import=jules-shared/jules-hydrology/HEAD + =jules-shared/jules-nvegparm/HEAD + =jules-shared/jules-pftparm/HEAD + =jules-shared/jules-radiation/HEAD + =jules-shared/jules-sea-seaice/HEAD + =jules-shared/jules-snow/HEAD + =jules-shared/jules-soil/HEAD + =jules-shared/jules-surface/HEAD + =jules-shared/jules-surface-types/HEAD + =jules-shared/jules-urban/HEAD + =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=https://metoffice.github.io/jules/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_pftparm=fsmc_mod_io: 'not_lfric'; + =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'; + =namelist:jules_vegetation=l_bvoc_emis: 'not_lfric'; + =namelist:jules_vegetation=l_inferno: 'not_lfric'; + =namelist:jules_vegetation=l_o3_damage: 'not_lfric'; + =namelist:jules_vegetation=l_sugar: 'not_lfric'; + =namelist:jules_vegetation=l_trif_fire: 'not_lfric'; + =namelist:jules_vegetation=l_use_pft_psi: 'not_lfric'; +value-titles=LFRic +values='lfric' + +[namelist:jules_pftparm] +description=This section is organised into one panel per PFT using the instance key "pft_name_io". +duplicate=true +!instance_key_member=pft_name_io + +[namelist:jules_pftparm=a_wl_io] +fail-if= +!ns= + +[namelist:jules_pftparm=a_ws_io] +fail-if= +!ns= + +[namelist:jules_pftparm=act_jmax_io] +fail-if= +!ns= + +[namelist:jules_pftparm=act_vcmax_io] +fail-if= +!ns= + +[namelist:jules_pftparm=aef_io] +fail-if= +!ns= + +[namelist:jules_pftparm=albsnc_max_io] +fail-if= +!ns= + +[namelist:jules_pftparm=albsnc_min_io] +fail-if= +!ns= + +[namelist:jules_pftparm=albsnf_max_io] +fail-if= +!ns= + +[namelist:jules_pftparm=albsnf_maxl_io] +fail-if= +!ns= + +[namelist:jules_pftparm=albsnf_maxu_io] +fail-if= +!ns= + +[namelist:jules_pftparm=alnir_io] +fail-if= +!ns= + +[namelist:jules_pftparm=alnirl_io] +fail-if= +!ns= + +[namelist:jules_pftparm=alniru_io] +fail-if= +!ns= + +[namelist:jules_pftparm=alpar_io] +fail-if= +!ns= + +[namelist:jules_pftparm=alparl_io] +fail-if= +!ns= + +[namelist:jules_pftparm=alparu_io] +fail-if= +!ns= + +[namelist:jules_pftparm=alpha_elec_io] +fail-if= +!ns= + +[namelist:jules_pftparm=alpha_io] +fail-if= +!ns= + +[namelist:jules_pftparm=avg_ba_io] +fail-if= +!ns= + +[namelist:jules_pftparm=b_wl_io] +fail-if= +!ns= + +[namelist:jules_pftparm=c3_io] +fail-if= +!ns= +values='no','yes' + +[namelist:jules_pftparm=can_struct_a_io] +fail-if= +!ns= + +[namelist:jules_pftparm=catch0_io] +fail-if= +!ns= + +[namelist:jules_pftparm=ccleaf_max_io] +fail-if= +!ns= + +[namelist:jules_pftparm=ccleaf_min_io] +fail-if= +!ns= + +[namelist:jules_pftparm=ccwood_max_io] +fail-if= +!ns= + +[namelist:jules_pftparm=ccwood_min_io] +fail-if= +!ns= + +[namelist:jules_pftparm=ci_st_io] +fail-if= +!ns= + +[namelist:jules_pftparm=dcatch_dlai_io] +fail-if= +!ns= + +[namelist:jules_pftparm=deact_jmax_io] +fail-if= +!ns= + +[namelist:jules_pftparm=deact_vcmax_io] +fail-if= +!ns= + +[namelist:jules_pftparm=dfp_dcuo_io] +fail-if= +!ns= + +[namelist:jules_pftparm=dgl_dm_io] +fail-if= +!ns= + +[namelist:jules_pftparm=dgl_dt_io] +fail-if= +!ns= + +[namelist:jules_pftparm=dqcrit_io] +fail-if= +!ns= + +[namelist:jules_pftparm=ds_jmax_io] +fail-if= +!ns= + +[namelist:jules_pftparm=ds_vcmax_io] +fail-if= +!ns= + +[namelist:jules_pftparm=dust_veg_scj_io] +fail-if= +!ns= + +[namelist:jules_pftparm=dz0v_dh_io] +fail-if= +!ns= + +[namelist:jules_pftparm=emis_pft_io] +fail-if= +!ns= + +[namelist:jules_pftparm=eta_sl_io] +fail-if= +!ns= + +[namelist:jules_pftparm=f0_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fd_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_bc_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_c2h4_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_c2h6_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_c3h8_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_ch4_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_co2_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_co_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_dms_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_hcho_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_mecho_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_nh3_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_nox_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_oc_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_so2_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fire_mort_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fl_o3_ct_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fsmc_mod_io] +fail-if= +!ns= +values='weight','average' + +[namelist:jules_pftparm=fsmc_of_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fsmc_p0_io] +fail-if= +!ns= + +[namelist:jules_pftparm=g1_stomata_io] +fail-if= +!ns= + +[namelist:jules_pftparm=g_leaf_0_io] +fail-if= +!ns= + +[namelist:jules_pftparm=glmin_io] +fail-if= +!ns= + +[namelist:jules_pftparm=gpp_st_io] +fail-if= +!ns= + +[namelist:jules_pftparm=gsoil_f_io] +fail-if= +!ns= + +[namelist:jules_pftparm=hw_sw_io] +fail-if= +!ns= + +[namelist:jules_pftparm=ief_io] +fail-if= +!ns= + +[namelist:jules_pftparm=infil_f_io] +fail-if= +!ns= + +[namelist:jules_pftparm=jv25_ratio_io] +fail-if= +!ns= + +[namelist:jules_pftparm=kext_io] +fail-if= +!ns= + +[namelist:jules_pftparm=kn_io] +fail-if= +!ns= + +[namelist:jules_pftparm=knl_io] +fail-if= +!ns= + +[namelist:jules_pftparm=kpar_io] +fail-if= +!ns= + +[namelist:jules_pftparm=lai_alb_lim_io] +fail-if= +!ns= + +[namelist:jules_pftparm=lma_io] +fail-if= +!ns= + +[namelist:jules_pftparm=mef_io] +fail-if= +!ns= + +[namelist:jules_pftparm=neff_io] +fail-if= +!ns= + +[namelist:jules_pftparm=nl0_io] +fail-if= +!ns= + +[namelist:jules_pftparm=nmass_io] +fail-if= +!ns= + +[namelist:jules_pftparm=nr_io] +fail-if= +!ns= + +[namelist:jules_pftparm=nr_nl_io] +fail-if= +!ns= + +[namelist:jules_pftparm=ns_nl_io] +fail-if= +!ns= + +[namelist:jules_pftparm=nsw_io] +fail-if= +!ns= + +[namelist:jules_pftparm=omega_io] +fail-if= +!ns= + +[namelist:jules_pftparm=omegal_io] +fail-if= +!ns= + +[namelist:jules_pftparm=omegau_io] +fail-if= +!ns= + +[namelist:jules_pftparm=omnir_io] +fail-if= +!ns= + +[namelist:jules_pftparm=omnirl_io] +fail-if= +!ns= + +[namelist:jules_pftparm=omniru_io] +fail-if= +!ns= + +[namelist:jules_pftparm=orient_io] +fail-if= +!ns= +values='spherical','horizontal' + +[namelist:jules_pftparm=pft_name_io] +fail-if= +!ns= + +[namelist:jules_pftparm=psi_close_io] +fail-if= +!ns= + +[namelist:jules_pftparm=psi_open_io] +fail-if= +!ns= + +[namelist:jules_pftparm=q10_leaf_io] +fail-if= +!ns= + +[namelist:jules_pftparm=r_grow_io] +fail-if= +!ns= + +[namelist:jules_pftparm=rootd_ft_io] +fail-if= +!ns= + +[namelist:jules_pftparm=sigl_io] +fail-if= +!ns= + +[namelist:jules_pftparm=sox_a_io] +fail-if= +!ns= + +[namelist:jules_pftparm=sox_p50_io] +fail-if= +!ns= + +[namelist:jules_pftparm=sox_rp_min_io] +fail-if= +!ns= + +[namelist:jules_pftparm=sug_g0_io] +fail-if= +!ns= + +[namelist:jules_pftparm=sug_grec_io] +fail-if= +!ns= + +[namelist:jules_pftparm=sug_yg_io] +fail-if= +!ns= + +[namelist:jules_pftparm=tef_io] +fail-if= +!ns= + +[namelist:jules_pftparm=tleaf_of_io] +fail-if= +!ns= + +[namelist:jules_pftparm=tlow_io] +fail-if= +!ns= + +[namelist:jules_pftparm=tupp_io] +fail-if= +!ns= + +[namelist:jules_pftparm=vint_io] +fail-if= +!ns= + +[namelist:jules_pftparm=vsl_io] +fail-if= +!ns= + +[namelist:jules_pftparm=z0hm_pft_io] +fail-if= +!ns= + +[namelist:jules_pftparm=z0v_io] +fail-if= +!ns= + +[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_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.; + +[namelist:jules_radiation=l_sea_alb_var_chl] +trigger=namelist:files=sea_ancil_path: .true. ; + +[namelist:jules_radiation=l_spec_albedo] +trigger=namelist:jules_radiation=l_spec_alb_bs: .true.; + =namelist:jules_radiation=l_niso_direct: .true.; + =namelist:jules_pftparm=albsnf_max_io: .false.; + +[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_inferno] +trigger=namelist:jules_pftparm=avg_ba_io: .true.; + =namelist:jules_pftparm=ccleaf_min_io: .true.; + =namelist:jules_pftparm=ccleaf_max_io: .true.; + =namelist:jules_pftparm=ccwood_min_io: .true.; + =namelist:jules_pftparm=ccwood_max_io: .true.; + =namelist:jules_pftparm=fef_bc_io: .true.; + =namelist:jules_pftparm=fef_ch4_io: .true.; + =namelist:jules_pftparm=fef_co2_io: .true.; + =namelist:jules_pftparm=fef_co_io: .true.; + =namelist:jules_pftparm=fef_nox_io: .true.; + =namelist:jules_pftparm=fef_oc_io: .true.; + =namelist:jules_pftparm=fef_so2_io: .true.; + =namelist:jules_pftparm=fef_c2h4_io: .true.; + =namelist:jules_pftparm=fef_c2h6_io: .true.; + =namelist:jules_pftparm=fef_c3h8_io: .true.; + =namelist:jules_pftparm=fef_hcho_io: .true.; + =namelist:jules_pftparm=fef_mecho_io: .true.; + =namelist:jules_pftparm=fef_nh3_io: .true.; + =namelist:jules_pftparm=fef_dms_io: .true.; + +[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:jules_vegetation=l_sugar] +fail-if= + +[namelist:jules_vegetation=l_trif_fire] +fail-if= + +[namelist:jules_vegetation=photo_model] +fail-if=this == 'photo_farquhar' and ( namelist:jules_vegetation=can_rad_mod != 'one' and namelist:jules_vegetation=can_rad_mod != 'five' and namelist:jules_vegetation=can_rad_mod != 'six') +# Fails-ifs omitted for items that don't exist yet +trigger=namelist:jules_pftparm=alpha_elec_io: 'photo_farquhar'; + =namelist:jules_pftparm=deact_jmax_io: 'photo_farquhar'; + =namelist:jules_pftparm=deact_vcmax_io: 'photo_farquhar'; + =namelist:jules_pftparm=jv25_ratio_io: 'photo_farquhar'; +# Triggers omitted for items that don't exist yet +value-titles=Collatz +values='collatz' + +[namelist:jules_vegetation=stomata_model] +fail-if= +trigger=namelist:jules_pftparm=dqcrit_io: 'jacobs'; + =namelist:jules_pftparm=f0_io: 'jacobs'; + =namelist:jules_pftparm=g1_stomata_io: 'medlyn'; + =namelist:jules_pftparm=sox_a_io: 'sox'; + =namelist:jules_pftparm=sox_p50_io: 'sox'; + =namelist:jules_pftparm=sox_rp_min_io: 'sox'; +value-titles=Original (Jacobs) +values='jacobs' + +# 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/rose-meta/jules-lfric/vn7.7/rose-meta.conf b/rose-meta/jules-lfric/vn7.7/rose-meta.conf new file mode 100644 index 00000000..d9a0484d --- /dev/null +++ b/rose-meta/jules-lfric/vn7.7/rose-meta.conf @@ -0,0 +1,1025 @@ +# Please see jules:wiki:SharingJULESmetadata + +import=jules-shared/jules-nvegparm/vn7.7 + =jules-shared/jules-radiation/vn7.7 + =jules-shared/jules-snow/vn7.7 + =jules-shared/jules-surface/vn7.7 + =jules-shared/jules-surface-types/vn7.7 + =jules-shared/jules-urban/vn7.7 + =jules-shared/jules-vegetation/vn7.7 + +[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/rose-meta/jules-lfric/vn7.8/rose-meta.conf b/rose-meta/jules-lfric/vn7.8/rose-meta.conf new file mode 100644 index 00000000..e7dcd90f --- /dev/null +++ b/rose-meta/jules-lfric/vn7.8/rose-meta.conf @@ -0,0 +1,1085 @@ +# Please see jules:wiki:SharingJULESmetadata + +import=jules-shared/jules-nvegparm/vn7.8 + =jules-shared/jules-radiation/vn7.8 + =jules-shared/jules-snow/vn7.8 + =jules-shared/jules-surface/vn7.8 + =jules-shared/jules-surface-types/vn7.8 + =jules-shared/jules-urban/vn7.8 + =jules-shared/jules-vegetation/vn7.8 + +[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/rose-meta/jules-lfric/vn7.9/rose-meta.conf b/rose-meta/jules-lfric/vn7.9/rose-meta.conf new file mode 100644 index 00000000..bf134729 --- /dev/null +++ b/rose-meta/jules-lfric/vn7.9/rose-meta.conf @@ -0,0 +1,580 @@ +# Please see jules:wiki:SharingJULESmetadata + +import=jules-shared/jules-hydrology/vn7.9 + =jules-shared/jules-nvegparm/vn7.9 + =jules-shared/jules-pftparm/vn7.9 + =jules-shared/jules-radiation/vn7.9 + =jules-shared/jules-sea-seaice/vn7.9 + =jules-shared/jules-snow/vn7.9 + =jules-shared/jules-soil/vn7.9 + =jules-shared/jules-surface/vn7.9 + =jules-shared/jules-surface-types/vn7.9 + =jules-shared/jules-urban/vn7.9 + =jules-shared/jules-vegetation/vn7.9 + +[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/rose-meta/jules-lfric/vn8.0/rose-meta.conf b/rose-meta/jules-lfric/vn8.0/rose-meta.conf new file mode 100644 index 00000000..30c6062a --- /dev/null +++ b/rose-meta/jules-lfric/vn8.0/rose-meta.conf @@ -0,0 +1,113 @@ +# Please see jules:wiki:SharingJULESmetadata + +import=jules-shared/jules-hydrology/vn8.0 + =jules-shared/jules-nvegparm/vn8.0 + =jules-shared/jules-pftparm/vn8.0 + =jules-shared/jules-radiation/vn8.0 + =jules-shared/jules-sea-seaice/vn8.0 + =jules-shared/jules-snow/vn8.0 + =jules-shared/jules-soil/vn8.0 + =jules-shared/jules-surface/vn8.0 + =jules-shared/jules-surface-types/vn8.0 + =jules-shared/jules-urban/vn8.0 + =jules-shared/jules-vegetation/vn8.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/rose-meta/jules-lfric/vn8.1/rose-meta.conf b/rose-meta/jules-lfric/vn8.1/rose-meta.conf new file mode 100644 index 00000000..c6d87e39 --- /dev/null +++ b/rose-meta/jules-lfric/vn8.1/rose-meta.conf @@ -0,0 +1,178 @@ +############################################################################### +# This is the LFRic flavour of the JULES metadata +############################################################################### +# This should only contain: +# * Import statements from jules-shared. +# * LFRic specific amendments to the imported metadata. +# The majority of the metadata should be under rose-meta/jules-shared. +# +# This file is imported by jules-lsm in the LFRic apps repository. +# Please see jules:wiki:SharingJULESmetadata + +import=jules-shared/jules-hydrology/vn8.1 + =jules-shared/jules-nvegparm/vn8.1 + =jules-shared/jules-pftparm/vn8.1 + =jules-shared/jules-radiation/vn8.1 + =jules-shared/jules-sea-seaice/vn8.1 + =jules-shared/jules-snow/vn8.1 + =jules-shared/jules-soil/vn8.1 + =jules-shared/jules-surface/vn8.1 + =jules-shared/jules-surface-types/vn8.1 + =jules-shared/jules-urban/vn8.1 + =jules-shared/jules-vegetation/vn8.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/rose-meta/jules-lfric/vn8.2/rose-meta.conf b/rose-meta/jules-lfric/vn8.2/rose-meta.conf new file mode 100644 index 00000000..8809b5f8 --- /dev/null +++ b/rose-meta/jules-lfric/vn8.2/rose-meta.conf @@ -0,0 +1,710 @@ +############################################################################### +# This is the LFRic flavour of the JULES metadata +############################################################################### +# This should only contain: +# * Import statements from jules-shared. +# * LFRic specific amendments to the imported metadata. +# The majority of the metadata should be under rose-meta/jules-shared. +# +# This file is imported by jules-lsm in the LFRic apps repository. +# +# Please see jules:wiki:SharingJULESmetadata + +import=jules-shared/jules-hydrology/vn8.2 + =jules-shared/jules-nvegparm/vn8.2 + =jules-shared/jules-pftparm/vn8.2 + =jules-shared/jules-radiation/vn8.2 + =jules-shared/jules-sea-seaice/vn8.2 + =jules-shared/jules-snow/vn8.2 + =jules-shared/jules-soil/vn8.2 + =jules-shared/jules-surface/vn8.2 + =jules-shared/jules-surface-types/vn8.2 + =jules-shared/jules-urban/vn8.2 + =jules-shared/jules-vegetation/vn8.2 + +[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=https://metoffice.github.io/jules/vn8.2/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_pftparm=fsmc_mod_io: 'not_lfric'; + =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'; + =namelist:jules_vegetation=l_bvoc_emis: 'not_lfric'; + =namelist:jules_vegetation=l_inferno: 'not_lfric'; + =namelist:jules_vegetation=l_o3_damage: 'not_lfric'; + =namelist:jules_vegetation=l_sugar: 'not_lfric'; + =namelist:jules_vegetation=l_trif_fire: 'not_lfric'; + =namelist:jules_vegetation=l_use_pft_psi: 'not_lfric'; +value-titles=LFRic +values='lfric' + +[namelist:jules_pftparm] +description=This section is organised into one panel per PFT using the instance key "pft_name_io". +duplicate=true +!instance_key_member=pft_name_io + +[namelist:jules_pftparm=a_wl_io] +fail-if= +!ns= + +[namelist:jules_pftparm=a_ws_io] +fail-if= +!ns= + +[namelist:jules_pftparm=act_jmax_io] +fail-if= +!ns= + +[namelist:jules_pftparm=act_vcmax_io] +fail-if= +!ns= + +[namelist:jules_pftparm=aef_io] +fail-if= +!ns= + +[namelist:jules_pftparm=albsnc_max_io] +fail-if= +!ns= + +[namelist:jules_pftparm=albsnc_min_io] +fail-if= +!ns= + +[namelist:jules_pftparm=albsnf_max_io] +fail-if= +!ns= + +[namelist:jules_pftparm=albsnf_maxl_io] +fail-if= +!ns= + +[namelist:jules_pftparm=albsnf_maxu_io] +fail-if= +!ns= + +[namelist:jules_pftparm=alnir_io] +fail-if= +!ns= + +[namelist:jules_pftparm=alnirl_io] +fail-if= +!ns= + +[namelist:jules_pftparm=alniru_io] +fail-if= +!ns= + +[namelist:jules_pftparm=alpar_io] +fail-if= +!ns= + +[namelist:jules_pftparm=alparl_io] +fail-if= +!ns= + +[namelist:jules_pftparm=alparu_io] +fail-if= +!ns= + +[namelist:jules_pftparm=alpha_elec_io] +fail-if= +!ns= + +[namelist:jules_pftparm=alpha_io] +fail-if= +!ns= + +[namelist:jules_pftparm=avg_ba_io] +fail-if= +!ns= + +[namelist:jules_pftparm=b_wl_io] +fail-if= +!ns= + +[namelist:jules_pftparm=c3_io] +fail-if= +!ns= +values='no','yes' + +[namelist:jules_pftparm=can_struct_a_io] +fail-if= +!ns= + +[namelist:jules_pftparm=catch0_io] +fail-if= +!ns= + +[namelist:jules_pftparm=ccleaf_max_io] +fail-if= +!ns= + +[namelist:jules_pftparm=ccleaf_min_io] +fail-if= +!ns= + +[namelist:jules_pftparm=ccwood_max_io] +fail-if= +!ns= + +[namelist:jules_pftparm=ccwood_min_io] +fail-if= +!ns= + +[namelist:jules_pftparm=ci_st_io] +fail-if= +!ns= + +[namelist:jules_pftparm=dcatch_dlai_io] +fail-if= +!ns= + +[namelist:jules_pftparm=deact_jmax_io] +fail-if= +!ns= + +[namelist:jules_pftparm=deact_vcmax_io] +fail-if= +!ns= + +[namelist:jules_pftparm=dfp_dcuo_io] +fail-if= +!ns= + +[namelist:jules_pftparm=dgl_dm_io] +fail-if= +!ns= + +[namelist:jules_pftparm=dgl_dt_io] +fail-if= +!ns= + +[namelist:jules_pftparm=dqcrit_io] +fail-if= +!ns= + +[namelist:jules_pftparm=ds_jmax_io] +fail-if= +!ns= + +[namelist:jules_pftparm=ds_vcmax_io] +fail-if= +!ns= + +[namelist:jules_pftparm=dust_veg_scj_io] +fail-if= +!ns= + +[namelist:jules_pftparm=dz0v_dh_io] +fail-if= +!ns= + +[namelist:jules_pftparm=emis_pft_io] +fail-if= +!ns= + +[namelist:jules_pftparm=eta_sl_io] +fail-if= +!ns= + +[namelist:jules_pftparm=f0_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fd_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_bc_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_c2h4_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_c2h6_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_c3h8_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_ch4_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_co2_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_co_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_dms_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_hcho_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_mecho_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_nh3_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_nox_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_oc_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fef_so2_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fire_mort_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fl_o3_ct_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fsmc_mod_io] +fail-if= +!ns= +values='weight','average' + +[namelist:jules_pftparm=fsmc_of_io] +fail-if= +!ns= + +[namelist:jules_pftparm=fsmc_p0_io] +fail-if= +!ns= + +[namelist:jules_pftparm=g1_stomata_io] +fail-if= +!ns= + +[namelist:jules_pftparm=g_leaf_0_io] +fail-if= +!ns= + +[namelist:jules_pftparm=glmin_io] +fail-if= +!ns= + +[namelist:jules_pftparm=gpp_st_io] +fail-if= +!ns= + +[namelist:jules_pftparm=gsoil_f_io] +fail-if= +!ns= + +[namelist:jules_pftparm=hw_sw_io] +fail-if= +!ns= + +[namelist:jules_pftparm=ief_io] +fail-if= +!ns= + +[namelist:jules_pftparm=infil_f_io] +fail-if= +!ns= + +[namelist:jules_pftparm=jv25_ratio_io] +fail-if= +!ns= + +[namelist:jules_pftparm=kext_io] +fail-if= +!ns= + +[namelist:jules_pftparm=kn_io] +fail-if= +!ns= + +[namelist:jules_pftparm=knl_io] +fail-if= +!ns= + +[namelist:jules_pftparm=kpar_io] +fail-if= +!ns= + +[namelist:jules_pftparm=lai_alb_lim_io] +fail-if= +!ns= + +[namelist:jules_pftparm=lma_io] +fail-if= +!ns= + +[namelist:jules_pftparm=mef_io] +fail-if= +!ns= + +[namelist:jules_pftparm=neff_io] +fail-if= +!ns= + +[namelist:jules_pftparm=nl0_io] +fail-if= +!ns= + +[namelist:jules_pftparm=nmass_io] +fail-if= +!ns= + +[namelist:jules_pftparm=nr_io] +fail-if= +!ns= + +[namelist:jules_pftparm=nr_nl_io] +fail-if= +!ns= + +[namelist:jules_pftparm=ns_nl_io] +fail-if= +!ns= + +[namelist:jules_pftparm=nsw_io] +fail-if= +!ns= + +[namelist:jules_pftparm=omega_io] +fail-if= +!ns= + +[namelist:jules_pftparm=omegal_io] +fail-if= +!ns= + +[namelist:jules_pftparm=omegau_io] +fail-if= +!ns= + +[namelist:jules_pftparm=omnir_io] +fail-if= +!ns= + +[namelist:jules_pftparm=omnirl_io] +fail-if= +!ns= + +[namelist:jules_pftparm=omniru_io] +fail-if= +!ns= + +[namelist:jules_pftparm=orient_io] +fail-if= +!ns= +values='spherical','horizontal' + +[namelist:jules_pftparm=pft_name_io] +fail-if= +!ns= + +[namelist:jules_pftparm=psi_close_io] +fail-if= +!ns= + +[namelist:jules_pftparm=psi_open_io] +fail-if= +!ns= + +[namelist:jules_pftparm=q10_leaf_io] +fail-if= +!ns= + +[namelist:jules_pftparm=r_grow_io] +fail-if= +!ns= + +[namelist:jules_pftparm=rootd_ft_io] +fail-if= +!ns= + +[namelist:jules_pftparm=sigl_io] +fail-if= +!ns= + +[namelist:jules_pftparm=sox_a_io] +fail-if= +!ns= + +[namelist:jules_pftparm=sox_p50_io] +fail-if= +!ns= + +[namelist:jules_pftparm=sox_rp_min_io] +fail-if= +!ns= + +[namelist:jules_pftparm=sug_g0_io] +fail-if= +!ns= + +[namelist:jules_pftparm=sug_grec_io] +fail-if= +!ns= + +[namelist:jules_pftparm=sug_yg_io] +fail-if= +!ns= + +[namelist:jules_pftparm=tef_io] +fail-if= +!ns= + +[namelist:jules_pftparm=tleaf_of_io] +fail-if= +!ns= + +[namelist:jules_pftparm=tlow_io] +fail-if= +!ns= + +[namelist:jules_pftparm=tupp_io] +fail-if= +!ns= + +[namelist:jules_pftparm=vint_io] +fail-if= +!ns= + +[namelist:jules_pftparm=vsl_io] +fail-if= +!ns= + +[namelist:jules_pftparm=z0hm_pft_io] +fail-if= +!ns= + +[namelist:jules_pftparm=z0v_io] +fail-if= +!ns= + +[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_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.; + +[namelist:jules_radiation=l_sea_alb_var_chl] +trigger=namelist:files=sea_ancil_path: .true. ; + +[namelist:jules_radiation=l_spec_albedo] +trigger=namelist:jules_radiation=l_spec_alb_bs: .true.; + =namelist:jules_radiation=l_niso_direct: .true.; + =namelist:jules_pftparm=albsnf_max_io: .false.; + +[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_inferno] +trigger=namelist:jules_pftparm=avg_ba_io: .true.; + =namelist:jules_pftparm=ccleaf_min_io: .true.; + =namelist:jules_pftparm=ccleaf_max_io: .true.; + =namelist:jules_pftparm=ccwood_min_io: .true.; + =namelist:jules_pftparm=ccwood_max_io: .true.; + =namelist:jules_pftparm=fef_bc_io: .true.; + =namelist:jules_pftparm=fef_ch4_io: .true.; + =namelist:jules_pftparm=fef_co2_io: .true.; + =namelist:jules_pftparm=fef_co_io: .true.; + =namelist:jules_pftparm=fef_nox_io: .true.; + =namelist:jules_pftparm=fef_oc_io: .true.; + =namelist:jules_pftparm=fef_so2_io: .true.; + =namelist:jules_pftparm=fef_c2h4_io: .true.; + =namelist:jules_pftparm=fef_c2h6_io: .true.; + =namelist:jules_pftparm=fef_c3h8_io: .true.; + =namelist:jules_pftparm=fef_hcho_io: .true.; + =namelist:jules_pftparm=fef_mecho_io: .true.; + =namelist:jules_pftparm=fef_nh3_io: .true.; + =namelist:jules_pftparm=fef_dms_io: .true.; + +[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:jules_vegetation=l_sugar] +fail-if= + +[namelist:jules_vegetation=l_trif_fire] +fail-if= + +[namelist:jules_vegetation=photo_model] +fail-if=this == 'photo_farquhar' and ( namelist:jules_vegetation=can_rad_mod != 'one' and namelist:jules_vegetation=can_rad_mod != 'five' and namelist:jules_vegetation=can_rad_mod != 'six') +# Fails-ifs omitted for items that don't exist yet +trigger=namelist:jules_pftparm=alpha_elec_io: 'photo_farquhar'; + =namelist:jules_pftparm=deact_jmax_io: 'photo_farquhar'; + =namelist:jules_pftparm=deact_vcmax_io: 'photo_farquhar'; + =namelist:jules_pftparm=jv25_ratio_io: 'photo_farquhar'; +# Triggers omitted for items that don't exist yet +value-titles=Collatz +values='collatz' + +[namelist:jules_vegetation=stomata_model] +fail-if= +trigger=namelist:jules_pftparm=dqcrit_io: 'jacobs'; + =namelist:jules_pftparm=f0_io: 'jacobs'; + =namelist:jules_pftparm=g1_stomata_io: 'medlyn'; + =namelist:jules_pftparm=sox_a_io: 'sox'; + =namelist:jules_pftparm=sox_p50_io: 'sox'; + =namelist:jules_pftparm=sox_rp_min_io: 'sox'; +value-titles=Original (Jacobs) +values='jacobs' + +# 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/rose-meta/jules-shared/jules-hydrology/HEAD/rose-meta.conf b/rose-meta/jules-shared/jules-hydrology/HEAD/rose-meta.conf index 722fa5e9..42628dec 100644 --- a/rose-meta/jules-shared/jules-hydrology/HEAD/rose-meta.conf +++ b/rose-meta/jules-shared/jules-hydrology/HEAD/rose-meta.conf @@ -17,6 +17,14 @@ trigger=namelist:jules_hydrology=l_var_rainfrac: .true.; type=logical url=https://metoffice.github.io/jules/latest/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::l_hydrology +[namelist:jules_hydrology=l_inland] +compulsory=true +description=Apply inland basin water correction to soil moisture + =NOT AVAILABLE TO STANDALONE +sort-key=Panel-G06 +type=logical +url=https://metoffice.github.io/jules/latest/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::l_inland + [namelist:jules_hydrology=l_var_rainfrac] compulsory=true description=Enable variable large scale and convective rain fractions diff --git a/rose-meta/jules-shared/jules-hydrology/vn8.2/rose-meta.conf b/rose-meta/jules-shared/jules-hydrology/vn8.2/rose-meta.conf new file mode 100644 index 00000000..9eb3c1af --- /dev/null +++ b/rose-meta/jules-shared/jules-hydrology/vn8.2/rose-meta.conf @@ -0,0 +1,35 @@ +[namelist:jules_hydrology] +compulsory=true +ns=namelist/JULES Science Settings/jules_hydrology +sort-key=Section-A12g +title=Hydrology options +url=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::l_hydrology + +[namelist:jules_hydrology=l_inland] +compulsory=true +description=Apply inland basin water correction to soil moisture + =NOT AVAILABLE TO STANDALONE +sort-key=Panel-G06 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::l_inland + +[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=https://metoffice.github.io/jules/vn8.2/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::l_var_rainfrac diff --git a/rose-meta/jules-shared/jules-model-environment/HEAD/rose-meta.conf b/rose-meta/jules-shared/jules-model-environment/HEAD/rose-meta.conf index c9a1ddad..adc29f7c 100644 --- a/rose-meta/jules-shared/jules-model-environment/HEAD/rose-meta.conf +++ b/rose-meta/jules-shared/jules-model-environment/HEAD/rose-meta.conf @@ -14,21 +14,25 @@ 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. fail-if=this != 0 and this != 2; # This should only indicate that standalone (0) or the OASIS coupler (2) is the parent model. =this == 2 and namelist:jules_model_environment=lsm_id != 3; # The OASIS coupler can only be used with Rivers-only (OASIS-Rivers). +# In the following trigger list; UM (1) & LFRic (3) while items made temporarily +# unavailable to all models as a result of developments (-1). trigger=namelist:jules_deposition=l_deposition_from_ukca: 1; =namelist:jules_deposition=l_ukca_ddepo3_ocean: 1; =namelist:jules_deposition=l_ukca_dry_dep_so2wet: 1; + =namelist:jules_hydrology=l_inland: 1; =namelist:jules_irrig=l_irrig_limit: 0; =namelist:jules_pftparm=dust_veg_scj_io: 1; =namelist:jules_pftparm=fsmc_mod_io: 0; + =namelist:jules_pftparm=pft_name_io: 3; =namelist:jules_radiation=l_cosz: 0; =namelist:jules_radiation=l_dolr_land_black: 1; =namelist:jules_radiation=l_sea_alb_var_chl: 1; - =namelist:jules_rivers=l_inland: 1; =namelist:jules_rivers=l_riv_overbank: 0; =namelist:jules_rivers=trip_globe_shape: 1; =namelist:jules_soil=l_bedrock: 0; =namelist:jules_soil=l_tile_soil: 0; =namelist:jules_soil_biogeochem=l_label_frac_cs: 0; + =namelist:jules_soil_biogeochem=l_bgc_heat: 0; =namelist:jules_surface=l_vary_z0m_soil: 1; =namelist:jules_surface=formdrag: 1; =namelist:jules_surface=i_modiscopt: 1; @@ -279,6 +283,7 @@ trigger=namelist:jules_pftparm: 1; =namelist:cable_soilparm=css_io: 2; =namelist:jules_spinup: 1,2; =namelist:jules_nlsizes: 1,2; + =namelist:jules_land_frac=l_use_land_fraction: 3; url=https://metoffice.github.io/jules/latest/namelists/model_environment.nml.html#JULES_MODEL_ENVIRONMENT::lsm_id value-titles='jules','cable','rivers-only' values=1,2,3 diff --git a/rose-meta/jules-shared/jules-model-environment/vn8.2/rose-meta.conf b/rose-meta/jules-shared/jules-model-environment/vn8.2/rose-meta.conf new file mode 100644 index 00000000..96decdad --- /dev/null +++ b/rose-meta/jules-shared/jules-model-environment/vn8.2/rose-meta.conf @@ -0,0 +1,289 @@ +[namelist:jules_model_environment] +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=https://metoffice.github.io/jules/vn8.2/namelists/model_environment.nml.html#namelist-JULES_MODEL_ENVIRONMENT + +[namelist:jules_model_environment=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. +fail-if=this != 0 and this != 2; # This should only indicate that standalone (0) or the OASIS coupler (2) is the parent model. + =this == 2 and namelist:jules_model_environment=lsm_id != 3; # The OASIS coupler can only be used with Rivers-only (OASIS-Rivers). +# In the following trigger list; UM (1) & LFRic (3) while items made temporarily +# unavailable to all models as a result of developments (-1). +trigger=namelist:jules_deposition=l_deposition_from_ukca: 1; + =namelist:jules_deposition=l_ukca_ddepo3_ocean: 1; + =namelist:jules_deposition=l_ukca_dry_dep_so2wet: 1; + =namelist:jules_hydrology=l_inland: 1; + =namelist:jules_irrig=l_irrig_limit: 0; + =namelist:jules_pftparm=dust_veg_scj_io: 1; + =namelist:jules_pftparm=fsmc_mod_io: 0; + =namelist:jules_pftparm=pft_name_io: 3; + =namelist:jules_radiation=l_cosz: 0; + =namelist:jules_radiation=l_dolr_land_black: 1; + =namelist:jules_radiation=l_sea_alb_var_chl: 1; + =namelist:jules_rivers=l_riv_overbank: 0; + =namelist:jules_rivers=trip_globe_shape: 1; + =namelist:jules_soil=l_bedrock: 0; + =namelist:jules_soil=l_tile_soil: 0; + =namelist:jules_soil_biogeochem=l_label_frac_cs: 0; + =namelist:jules_soil_biogeochem=l_bgc_heat: 0; + =namelist:jules_surface=l_vary_z0m_soil: 1; + =namelist:jules_surface=formdrag: 1; + =namelist:jules_surface=i_modiscopt: 1; + =namelist:jules_surface=srf_ex_cnv_gust: 1; + =namelist:jules_surface_types=ncpft: 0; + =namelist:jules_surface_types=tile_map_ids: 1; + =namelist:jules_urban=l_urban_empirical: 0; + =namelist:jules_vegetation=l_ag_expand: 0; + =namelist:jules_vegetation=l_trif_biocrop: 0; + =namelist:jules_vegetation=l_croprotate: 0; + =namelist:jules_vegetation=l_gleaf_fix: 0; + =namelist:jules_vegetation=l_nrun_mid_trif: 1; + =namelist:jules_vegetation=l_o3_damage: 0; + =namelist:jules_vegetation=l_prescsow: 0; + =namelist:jules_vegetation=l_trif_init_accum: 1; + =namelist:jules_vegetation=l_use_pft_psi: 0; + =namelist:jules_vegetation=l_sugar: 0; + =namelist:jules_vegetation=l_red: 0; + =namelist:jules_water_resources=l_water_resources: 0; + =namelist:jules_water_resources=l_water_environment: -1; + =namelist:jules_water_resources=l_water_transfers: -1; + =namelist:oasis_rivers: 2; + =namelist:jules_rivers_props: 0,2; + =namelist:jules_rivers_props=rivers_regrid: 0; + =namelist:jules_flake: 0; + =namelist:run_convection: 1; + =namelist:run_stochastic: 1; + =namelist:urban_properties: 0; +url=https://metoffice.github.io/jules/vn8.2/namelists/model_environment.nml.html#JULES_MODEL_ENVIRONMENT::l_jules_parent +value-titles=Standalone,OASIS +values=0,2 + +[namelist:jules_model_environment=lsm_id] +compulsory=true +description=Switch for controlling the flavour of land surface model used + =(JULES / CABLE / Standalone Rivers ) +fail-if=this == 2 and namelist:jules_model_environment=l_jules_parent == 1; # CABLE (JAC) cannot currently be used with the UM. + =this == 3 and namelist:jules_model_environment=l_jules_parent == 1; # Standalone Rivers is a standalone executable and is not coupled to the UM directly. +trigger=namelist:jules_pftparm: 1; + =namelist:jules_pftparm=a_wl_io: 1; + =namelist:jules_pftparm=a_ws_io: 1; + =namelist:jules_pftparm=act_jmax_io: 1; + =namelist:jules_pftparm=act_vcmax_io: 1; + =namelist:jules_pftparm=aef_io: 1; + =namelist:jules_pftparm=albsnc_max_io: 1; + =namelist:jules_pftparm=albsnc_min_io: 1; + =namelist:jules_pftparm=albsnf_max_io: 1; + =namelist:jules_pftparm=albsnf_maxl_io: 1; + =namelist:jules_pftparm=albsnf_maxu_io: 1; + =namelist:jules_pftparm=alnir_io: 1; + =namelist:jules_pftparm=alnirl_io: 1; + =namelist:jules_pftparm=alniru_io: 1; + =namelist:jules_pftparm=alpar_io: 1; + =namelist:jules_pftparm=alparl_io: 1; + =namelist:jules_pftparm=alparu_io: 1; + =namelist:jules_pftparm=alpha_elec_io: 1; + =namelist:jules_pftparm=alpha_io: 1; + =namelist:jules_pftparm=avg_ba_io: 1; + =namelist:jules_pftparm=b_wl_io: 1; + =namelist:jules_pftparm=c3_io: 1; + =namelist:jules_pftparm=can_struct_a_io: 1; + =namelist:jules_pftparm=catch0_io: 1; + =namelist:jules_pftparm=ccleaf_max_io: 1; + =namelist:jules_pftparm=ccleaf_min_io: 1; + =namelist:jules_pftparm=ccwood_max_io: 1; + =namelist:jules_pftparm=ccwood_min_io: 1; + =namelist:jules_pftparm=ci_st_io: 1; + =namelist:jules_pftparm=dcatch_dlai_io: 1; + =namelist:jules_pftparm=deact_jmax_io: 1; + =namelist:jules_pftparm=deact_vcmax_io: 1; + =namelist:jules_pftparm=dfp_dcuo_io: 1; + =namelist:jules_pftparm=dgl_dm_io: 1; + =namelist:jules_pftparm=dgl_dt_io: 1; + =namelist:jules_pftparm=dqcrit_io: 1; + =namelist:jules_pftparm=ds_jmax_io: 1; + =namelist:jules_pftparm=ds_vcmax_io: 1; + =namelist:jules_pftparm=dz0v_dh_io: 1; + =namelist:jules_pftparm=z0v_io: 1; + =namelist:jules_pftparm=emis_pft_io: 1; + =namelist:jules_pftparm=eta_sl_io: 1; + =namelist:jules_pftparm=f0_io: 1; + =namelist:jules_pftparm=fd_io: 1; + =namelist:jules_pftparm=fef_bc_io: 1; + =namelist:jules_pftparm=fef_ch4_io: 1; + =namelist:jules_pftparm=fef_co2_io: 1; + =namelist:jules_pftparm=fef_co_io: 1; + =namelist:jules_pftparm=fef_nox_io: 1; + =namelist:jules_pftparm=fef_oc_io: 1; + =namelist:jules_pftparm=fef_so2_io: 1; + =namelist:jules_pftparm=fef_c2h4_io: 1; + =namelist:jules_pftparm=fef_c2h6_io: 1; + =namelist:jules_pftparm=fef_c3h8_io: 1; + =namelist:jules_pftparm=fef_hcho_io: 1; + =namelist:jules_pftparm=fef_mecho_io: 1; + =namelist:jules_pftparm=fef_nh3_io: 1; + =namelist:jules_pftparm=fef_dms_io: 1; + =namelist:jules_pftparm=fire_mort_io: 1; + =namelist:jules_pftparm=fl_o3_ct_io: 1; + =namelist:jules_pftparm=fsmc_of_io: 1; + =namelist:jules_pftparm=fsmc_p0_io: 1; + =namelist:jules_pftparm=g1_stomata_io: 1; + =namelist:jules_pftparm=g_leaf_0_io: 1; + =namelist:jules_pftparm=glmin_io: 1; + =namelist:jules_pftparm=gpp_st_io: 1; + =namelist:jules_pftparm=gsoil_f_io: 1; + =namelist:jules_pftparm=hw_sw_io: 1; + =namelist:jules_pftparm=ief_io: 1; + =namelist:jules_pftparm=infil_f_io: 1; + =namelist:jules_pftparm=jv25_ratio_io: 1; + =namelist:jules_pftparm=kext_io: 1; + =namelist:jules_pftparm=kn_io: 1; + =namelist:jules_pftparm=knl_io: 1; + =namelist:jules_pftparm=kpar_io: 1; + =namelist:jules_pftparm=lai_alb_lim_io: 1; + =namelist:jules_pftparm=lma_io: 1; + =namelist:jules_pftparm=mef_io: 1; + =namelist:jules_pftparm=neff_io: 1; + =namelist:jules_pftparm=nl0_io: 1; + =namelist:jules_pftparm=nmass_io: 1; + =namelist:jules_pftparm=nr_io: 1; + =namelist:jules_pftparm=nr_nl_io: 1; + =namelist:jules_pftparm=ns_nl_io: 1; + =namelist:jules_pftparm=nsw_io: 1; + =namelist:jules_pftparm=omega_io: 1; + =namelist:jules_pftparm=omegal_io: 1; + =namelist:jules_pftparm=omegau_io: 1; + =namelist:jules_pftparm=omnir_io: 1; + =namelist:jules_pftparm=omnirl_io: 1; + =namelist:jules_pftparm=omniru_io: 1; + =namelist:jules_pftparm=orient_io: 1; + =namelist:jules_pftparm=psi_close_io: 1; + =namelist:jules_pftparm=psi_open_io: 1; + =namelist:jules_pftparm=q10_leaf_io: 1; + =namelist:jules_pftparm=r_grow_io: 1; + =namelist:jules_pftparm=rootd_ft_io: 1; + =namelist:jules_pftparm=sigl_io: 1; + =namelist:jules_pftparm=sug_g0_io: 1; + =namelist:jules_pftparm=sug_grec_io: 1; + =namelist:jules_pftparm=sug_yg_io: 1; + =namelist:jules_pftparm=tef_io: 1; + =namelist:jules_pftparm=tleaf_of_io: 1; + =namelist:jules_pftparm=tlow_io: 1; + =namelist:jules_pftparm=tupp_io: 1; + =namelist:jules_pftparm=vint_io: 1; + =namelist:jules_pftparm=vsl_io: 1; + =namelist:jules_pftparm=z0hm_classic_pft_io: 1; + =namelist:jules_pftparm=z0hm_pft_io: 1; + =namelist:jules_pftparm=canht_ft_io: 1; + =namelist:jules_pftparm=fsmc_mod_io: 1; + =namelist:jules_pftparm=lai_io: 1; + =namelist:jules_nvegparm: 1; + =namelist:jules_nvegparm=albsnc_nvg_io: 1; + =namelist:jules_nvegparm=albsnf_nvg_io: 1; + =namelist:jules_nvegparm=albsnf_nvgl_io: 1; + =namelist:jules_nvegparm=albsnf_nvgu_io: 1; + =namelist:jules_nvegparm=catch_nvg_io: 1; + =namelist:jules_nvegparm=ch_nvg_io: 1; + =namelist:jules_nvegparm=emis_nvg_io: 1; + =namelist:jules_nvegparm=gs_nvg_io: 1; + =namelist:jules_nvegparm=infil_nvg_io: 1; + =namelist:jules_nvegparm=vf_nvg_io: 1; + =namelist:jules_nvegparm=z0_nvg_io: 1; + =namelist:jules_nvegparm=z0hm_classic_nvg_io: 1; + =namelist:jules_nvegparm=z0hm_nvg_io: 1; + =namelist:cable_progs: 2; + =namelist:cable_progs=const_val: 2; + =namelist:cable_progs=file: 2; + =namelist:cable_progs=nvars: 2; + =namelist:cable_progs=use_file: 2; + =namelist:cable_progs=var: 2; + =namelist:cable_progs=var_name: 2; + =namelist:cable_surface_types: 2; + =namelist:cable_surface_types=barren_cable: 2; + =namelist:cable_surface_types=ice_cable: 2; + =namelist:cable_surface_types=lakes_cable: 2; + =namelist:cable_surface_types=nnvg_cable: 2; + =namelist:cable_surface_types=npft_cable: 2; + =namelist:cable_surface_types=urban_cable: 2; + =namelist:cable_pftparm: 2; + =namelist:cable_pftparm=canst1_io: 2; + =namelist:cable_pftparm=length_io: 2; + =namelist:cable_pftparm=width_io: 2; + =namelist:cable_pftparm=vcmax_io: 2; + =namelist:cable_pftparm=ejmax_io: 2; + =namelist:cable_pftparm=hc_io: 2; + =namelist:cable_pftparm=xfang_io: 2; + =namelist:cable_pftparm=rp20_io: 2; + =namelist:cable_pftparm=rpcoef_io: 2; + =namelist:cable_pftparm=rs20_io: 2; + =namelist:cable_pftparm=wai_io: 2; + =namelist:cable_pftparm=rootbeta_io: 2; + =namelist:cable_pftparm=shelrb_io: 2; + =namelist:cable_pftparm=vegcf_io: 2; + =namelist:cable_pftparm=frac4_io: 2; + =namelist:cable_pftparm=xalbnir_io: 2; + =namelist:cable_pftparm=extkn_io: 2; + =namelist:cable_pftparm=tminvj_io: 2; + =namelist:cable_pftparm=tmaxvj_io: 2; + =namelist:cable_pftparm=vbeta_io: 2; + =namelist:cable_pftparm=a1gs_io: 2; + =namelist:cable_pftparm=d0gs_io: 2; + =namelist:cable_pftparm=alpha_io: 2; + =namelist:cable_pftparm=convex_io: 2; + =namelist:cable_pftparm=cfrd_io: 2; + =namelist:cable_pftparm=gswmin_io: 2; + =namelist:cable_pftparm=conkc0_io: 2; + =namelist:cable_pftparm=conko0_io: 2; + =namelist:cable_pftparm=ekc_io: 2; + =namelist:cable_pftparm=eko_io: 2; + =namelist:cable_pftparm=g0_io: 2; + =namelist:cable_pftparm=g1_io: 2; + =namelist:cable_pftparm=clitt_io: 2; + =namelist:cable_pftparm=froot1_io: 2; + =namelist:cable_pftparm=froot2_io: 2; + =namelist:cable_pftparm=froot3_io: 2; + =namelist:cable_pftparm=froot4_io: 2; + =namelist:cable_pftparm=froot5_io: 2; + =namelist:cable_pftparm=froot6_io: 2; + =namelist:cable_pftparm=cplant1_io: 2; + =namelist:cable_pftparm=cplant2_io: 2; + =namelist:cable_pftparm=cplant3_io: 2; + =namelist:cable_pftparm=csoil1_io: 2; + =namelist:cable_pftparm=csoil2_io: 2; + =namelist:cable_pftparm=ratecp1_io: 2; + =namelist:cable_pftparm=ratecp2_io: 2; + =namelist:cable_pftparm=ratecp3_io: 2; + =namelist:cable_pftparm=ratecs1_io: 2; + =namelist:cable_pftparm=ratecs2_io: 2; + =namelist:cable_pftparm=refl1_io: 2; + =namelist:cable_pftparm=refl2_io: 2; + =namelist:cable_pftparm=refl3_io: 2; + =namelist:cable_pftparm=taul1_io: 2; + =namelist:cable_pftparm=taul2_io: 2; + =namelist:cable_pftparm=taul3_io: 2; + =namelist:cable_pftparm=zr_io: 2; + =namelist:cable_pftparm=lai_io: 2; + =namelist:cable_soilparm: 2; + =namelist:cable_soilparm=silt_io: 2; + =namelist:cable_soilparm=clay_io: 2; + =namelist:cable_soilparm=sand_io: 2; + =namelist:cable_soilparm=swilt_io: 2; + =namelist:cable_soilparm=sfc_io: 2; + =namelist:cable_soilparm=ssat_io: 2; + =namelist:cable_soilparm=bch_io: 2; + =namelist:cable_soilparm=hyds_io: 2; + =namelist:cable_soilparm=sucs_io: 2; + =namelist:cable_soilparm=rhosoil_io: 2; + =namelist:cable_soilparm=css_io: 2; + =namelist:jules_spinup: 1,2; + =namelist:jules_nlsizes: 1,2; + =namelist:jules_land_frac=l_use_land_fraction: 3; +url=https://metoffice.github.io/jules/vn8.2/namelists/model_environment.nml.html#JULES_MODEL_ENVIRONMENT::lsm_id +value-titles='jules','cable','rivers-only' +values=1,2,3 diff --git a/rose-meta/jules-shared/jules-nvegparm/vn8.2/rose-meta.conf b/rose-meta/jules-shared/jules-nvegparm/vn8.2/rose-meta.conf new file mode 100644 index 00000000..f91f0bfa --- /dev/null +++ b/rose-meta/jules-shared/jules-nvegparm/vn8.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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/namelists/nveg_params.nml.html#JULES_NVEGPARM::z0hm_nvg_io diff --git a/rose-meta/jules-shared/jules-pftparm/HEAD/rose-meta.conf b/rose-meta/jules-shared/jules-pftparm/HEAD/rose-meta.conf index dafeefa3..cb18e53a 100644 --- a/rose-meta/jules-shared/jules-pftparm/HEAD/rose-meta.conf +++ b/rose-meta/jules-shared/jules-pftparm/HEAD/rose-meta.conf @@ -9,134 +9,1118 @@ title=PFT parameters url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#namelist-JULES_PFTPARM widget[rose-config-edit]=cylc8_compat.PageArrayTable +[namelist:jules_pftparm=a_wl_io] +compulsory=true +description=Allometric coefficient relating the target woody biomass to the leaf area index (kg carbon m-2) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::a_wl_io + +[namelist:jules_pftparm=a_ws_io] +compulsory=true +description=Woody biomass as a multiple of live stem biomass +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::a_ws_io + +[namelist:jules_pftparm=act_jmax_io] +compulsory=true +description=Activation energy for temperature response of Jmax +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO20b +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::act_jmax_io + +[namelist:jules_pftparm=act_vcmax_io] +compulsory=true +description=Activation energy for temperature response of Vcmax +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO20b +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::act_vcmax_io + +[namelist:jules_pftparm=aef_io] +compulsory=true +description=Acetone emission factor per PFT (μgC g-1 h-1) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO10 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::aef_io + [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=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::albsnc_max_io +[namelist:jules_pftparm=albsnc_min_io] +compulsory=true +description=Snow-covered albedo for zero LAI +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::albsnc_min_io + +[namelist:jules_pftparm=albsnf_max_io] +compulsory=true +description=Snow-free albedo for large LAI +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::albsnf_max_io + +[namelist:jules_pftparm=albsnf_maxl_io] +compulsory=true +description=Lower limit on albsnf_max_io +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::albsnf_maxl_io + +[namelist:jules_pftparm=albsnf_maxu_io] +compulsory=true +description=Upper limit on albsnf_max_io +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::albsnf_maxu_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=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alnir_io +[namelist:jules_pftparm=alnirl_io] +compulsory=true +description=Lower limit on alnir_io +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alnirl_io + +[namelist:jules_pftparm=alniru_io] +compulsory=true +description=Upper limit on alnir_io +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alniru_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=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alpar_io +[namelist:jules_pftparm=alparl_io] +compulsory=true +description=Lower limit on alpar_io +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alparl_io + +[namelist:jules_pftparm=alparu_io] +compulsory=true +description=Upper limit on alpar_io +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alparu_io + +[namelist:jules_pftparm=alpha_elec_io] +compulsory=true +description=Quantum yield of electron transport (mol electrons/mol PAR photons) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO20 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alpha_elec_io + +[namelist:jules_pftparm=alpha_io] +compulsory=true +description=Quantum efficiency of photosynthesis (mol CO2/mol PAR photons) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alpha_io + +[namelist:jules_pftparm=avg_ba_io] +compulsory=true +description=Average burnt area on PFTs per fire event (fraction) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::avg_ba_io + +[namelist:jules_pftparm=b_wl_io] +compulsory=true +description=Allometric exponent relating the target woody biomass to the leaf area index +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::b_wl_io + +[namelist:jules_pftparm=c3_io] +compulsory=true +description=Flag indicating whether PFT is C3 type +!enumeration=true +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO03 +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::c3_io +value-titles=Not C3,C3 +values=0,1 + +[namelist:jules_pftparm=can_struct_a_io] +compulsory=true +description=Canopy structure factor (1.0 is structurally homogeneous). +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +sort-key=Panel-HR02 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::can_struct_a_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=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::catch0_io +[namelist:jules_pftparm=ccleaf_max_io] +compulsory=true +description=Leaf maximum combustion completeness +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::ccleaf_max_io + +[namelist:jules_pftparm=ccleaf_min_io] +compulsory=true +description=Leaf minimum combustion completeness +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::ccleaf_min_io + +[namelist:jules_pftparm=ccwood_max_io] +compulsory=true +description=Wood maximum combustion completeness +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::ccwood_max_io + +[namelist:jules_pftparm=ccwood_min_io] +compulsory=true +description=Wood minimum combustion completeness +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::ccwood_min_io + +[namelist:jules_pftparm=ci_st_io] +compulsory=true +description=Leaf-internal CO2 concentration (Pa) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO10 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::ci_st_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=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::dcatch_dlai_io -[namelist:jules_pftparm=fsmc_p0_io] +[namelist:jules_pftparm=deact_jmax_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 +description=Deactivation energy for temperature response of Jmax fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO20 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::deact_jmax_io + +[namelist:jules_pftparm=deact_vcmax_io] +compulsory=true +description=Deactivation energy for temperature response of Vcmax +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO20 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::deact_vcmax_io + +[namelist:jules_pftparm=dfp_dcuo_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO11 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::dfp_dcuo_io + +[namelist:jules_pftparm=dgl_dm_io] +compulsory=true +description=Rate of change of leaf turnover rate with moisture availability +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double ns=namelist/JULES Science Settings/jules_pftparm/Other parameters sort-key=Panel-HO05 type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fsmc_p0_io +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::dgl_dm_io -[namelist:jules_pftparm=kext_io] +[namelist:jules_pftparm=dgl_dt_io] compulsory=true -description=Light extinction coefficient - =Used with Beers Law for light absorption through tile canopies +description=Rate of change of leaf turnover rate with temperature (K-1) 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 +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::kext_io +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::dgl_dt_io -[namelist:jules_pftparm=knl_io] +[namelist:jules_pftparm=dqcrit_io] compulsory=true -description=Decay of nitrogen through the canopy for canopy radiation model 6 - =SHOULD NOT BE THE SAME AS KN! +description=Critical humidity deficit (kg H2O per kg air) fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO21a +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::dqcrit_io + +[namelist:jules_pftparm=ds_jmax_io] +compulsory=true +description=Entropy factor for temperature response of Jmax +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO20a +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::ds_jmax_io + +[namelist:jules_pftparm=ds_vcmax_io] +compulsory=true +description=Entropy factor for temperature response of Vcmax +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO20a +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::ds_vcmax_io + +[namelist:jules_pftparm=dust_veg_scj_io] +compulsory=true +description=Dust emissions scaling factor for each pft type + =NOT APPLICABLE TO STANDALONE +fail-if=len(this) != namelist:jules_surface_types=npft +help=This is applied when dust_veg_emiss is non-zero and + =allows the dust emission from different plant functional + =types to be reduced/switched off. +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HOX +type=real + +[namelist:jules_pftparm=dz0v_dh_io] +compulsory=true +description=Rate of change of vegetation roughness length for momentum with height +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double ns=namelist/JULES Science Settings/jules_pftparm/Other parameters sort-key=Panel-HO05 type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::knl_io +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::dz0v_dh_io -[namelist:jules_pftparm=omega_io] +[namelist:jules_pftparm=emis_pft_io] compulsory=true -description=VIS Leaf scattering coeff. - =Leaf scattering coefficient for wavelengths < 690nm (Photosyntehtically Active Radiation). +description=Surface emissivity fail-if=len(this) != namelist:jules_surface_types=npft -!kind=default -length=: +!kind=double ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters range=0:1 -sort-key=Panel-HR03 +sort-key=Panel-HR04 type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omega_io +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::emis_pft_io -[namelist:jules_pftparm=omnir_io] +[namelist:jules_pftparm=eta_sl_io] compulsory=true -description=NIR Leaf scattering coeff. - =Leaf scattering coefficient for Near Infra Red wavelengths > 690nm. +description=Live stemwood coefficient (kg C/m/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 +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omnir_io +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::eta_sl_io + +[namelist:jules_pftparm=f0_io] +compulsory=true +description=CI / CA for DQ = 0 +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO21a +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::f0_io + +[namelist:jules_pftparm=fd_io] +compulsory=true +description=Scale factor for dark respiration +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fd_io + +[namelist:jules_pftparm=fef_bc_io] +compulsory=true +description=Black carbon (BC) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_bc_io + +[namelist:jules_pftparm=fef_c2h4_io] +compulsory=true +description=Ethene (C2H4) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_c2h4_io + +[namelist:jules_pftparm=fef_c2h6_io] +compulsory=true +description=Ethane (C2H6) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_c2h6_io + +[namelist:jules_pftparm=fef_c3h8_io] +compulsory=true +description=Propane (C3H8) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_c3h8_io + +[namelist:jules_pftparm=fef_ch4_io] +compulsory=true +description=Methane (CH4) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_ch4_io + +[namelist:jules_pftparm=fef_co2_io] +compulsory=true +description=Carbon dioxide (CO2) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_co2_io + +[namelist:jules_pftparm=fef_co_io] +compulsory=true +description=Carbon monoxide (CO) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_co_io + +[namelist:jules_pftparm=fef_dms_io] +compulsory=true +description=Dimethyl sulfide (DMS) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_dms_io + +[namelist:jules_pftparm=fef_hcho_io] +compulsory=true +description=Formaldehyde (HCHO) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_hcho_io + +[namelist:jules_pftparm=fef_mecho_io] +compulsory=true +description=Acetaldehyde (MeCHO) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_mecho_io + +[namelist:jules_pftparm=fef_nh3_io] +compulsory=true +description=Ammonia (NH3) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_nh3_io + +[namelist:jules_pftparm=fef_nox_io] +compulsory=true +description=Nitrogen oxides (NOx) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_nox_io + +[namelist:jules_pftparm=fef_oc_io] +compulsory=true +description=Organic carbon (OC) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_oc_io + +[namelist:jules_pftparm=fef_so2_io] +compulsory=true +description=Sulphur dioxide (SO2) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_so2_io + +[namelist:jules_pftparm=fire_mort_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0:1 +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fire_mort_io + +[namelist:jules_pftparm=fl_o3_ct_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO11 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fl_o3_ct_io + +[namelist:jules_pftparm=fsmc_mod_io] +compulsory=true +description=Switch for method of weighting the contribution that different soil layers make to the soil moisture + =availability factor fsmc +!enumeration=true +fail-if=len(this) != namelist:jules_surface_types=npft; + =namelist:jules_soil_biogeochem=l_layeredc == '.true.' and namelist:jules_soil_biogeochem=soil_bgc_model == '2' and any(this == 1); # fsmc_mod=1 cannot be used with layered 4-pool soil C model +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fsmc_mod_io +value-titles=weight water stress in layers by root fraction, use average root zone properties +values=0,1 + +[namelist:jules_pftparm=fsmc_of_io] +compulsory=true +description=Moisture availability below which leaves are dropped +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fsmc_of_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 +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fsmc_p0_io + +[namelist:jules_pftparm=g1_stomata_io] +compulsory=true +description=Parameter g1 of the Medlyn et al. (2011) model of stomatal conductance. +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO21b +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::g1_stomata_io + +[namelist:jules_pftparm=g_leaf_0_io] +compulsory=true +description=Minimum turnover rate for leaves (/360days) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::g_leaf_0_io + +[namelist:jules_pftparm=glmin_io] +compulsory=true +description=Minimum leaf conductance for H2O (m s-1) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::glmin_io + +[namelist:jules_pftparm=gpp_st_io] +compulsory=true +description=Gross primary production (GPP) at standard conditions (kgC m-2 s-1 ) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO10 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::gpp_st_io + +[namelist:jules_pftparm=gsoil_f_io] +compulsory=true +description=Soil evaporation enhancement factor +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::gsoil_f_io + +[namelist:jules_pftparm=hw_sw_io] +compulsory=true +description=Ratio of N in heartwood:stemwood with trait physiology. +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO07 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::hw_sw_io + +[namelist:jules_pftparm=ief_io] +compulsory=true +description=Isoprene emission factor per PFT (μgC g-1 h-1) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO10 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::ief_io + +[namelist:jules_pftparm=infil_f_io] +compulsory=true +description=Infiltration enhancement factor +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::infil_f_io + +[namelist:jules_pftparm=jv25_ratio_io] +compulsory=true +description=Ratio of Jmax to Vcmax at 25 degC. +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO20 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::jv25_ratio_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 +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +sort-key=Panel-HR02 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::kext_io + +[namelist:jules_pftparm=kn_io] +compulsory=true +description=Decay of nitrogen through the canopy for canopy radiation models 4-5 +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::kn_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 +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::knl_io + +[namelist:jules_pftparm=kpar_io] +compulsory=true +description=PAR Extinction coefficient (m2 leaf / m2 ground) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::kpar_io + +[namelist:jules_pftparm=lai_alb_lim_io] +compulsory=true +description=Minimum LAI for plant canopies in the absence of snow. +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +sort-key=Panel-HR02 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::lai_alb_lim_io + +[namelist:jules_pftparm=lma_io] +compulsory=true +description=Leaf mass per unit area (kgLeaf m-2) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO07 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::lma_io + +[namelist:jules_pftparm=mef_io] +compulsory=true +description=Methanol emission factor per PFT (μgC g-1 h-1) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO10 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::mef_io + +[namelist:jules_pftparm=neff_io] +compulsory=true +description=Scale factor relating Vcmax with leaf nitrogen concentration +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::neff_io + +[namelist:jules_pftparm=nl0_io] +compulsory=true +description=Top leaf nitrogen concentration (kg N/kg C) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::nl0_io + +[namelist:jules_pftparm=nmass_io] +compulsory=true +description=Top leaf nitrogen content per unit mass (kgN kgLeaf-1) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO07 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::nmass_io + +[namelist:jules_pftparm=nr_io] +compulsory=true +description=Root nitrogen concentration with trait physiology +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO07 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::nr_io + +[namelist:jules_pftparm=nr_nl_io] +compulsory=true +description=Ratio of root nitrogen concentration to leaf nitrogen concentration +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::nr_nl_io + +[namelist:jules_pftparm=ns_nl_io] +compulsory=true +description=Ratio of stem nitrogen concentration to leaf nitrogen concentration +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::ns_nl_io + +[namelist:jules_pftparm=nsw_io] +compulsory=true +description=Stemwood nitrogen concentration with trait physiology. +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO07 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::nsw_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 +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omega_io + +[namelist:jules_pftparm=omegal_io] +compulsory=true +description=Lower limit on omega_io +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omegal_io + +[namelist:jules_pftparm=omegau_io] +compulsory=true +description=Upper limit on omega_io(kgLeaf m-2) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omegau_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 +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omnir_io + +[namelist:jules_pftparm=omnirl_io] +compulsory=true +description=Lower limit on omnir_io +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omnirl_io + +[namelist:jules_pftparm=omniru_io] +compulsory=true +description=Upper limit on omnir_io +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omniru_io + +[namelist:jules_pftparm=orient_io] +compulsory=true +description=Flag indicating leaf angle distribution +!enumeration=true +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +sort-key=Panel-HR01 +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::orient_io +value-titles=Spherical,Horizontal +values=0,1 + +[namelist:jules_pftparm=pft_name_io] +compulsory=true +description=Unique descriptor for plant functional type. + =Allows multiple instances of a namelist; one per PFT (LFRic only). +!kind=default +sort-key=Panel-H01 +!type=character +values='brd_leaf', 'ndl_leaf', 'c3_grass', 'c4_grass', 'shrub' + +[namelist:jules_pftparm=psi_close_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO19 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::psi_close_io + +[namelist:jules_pftparm=psi_open_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO19 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::psi_open_io + +[namelist:jules_pftparm=q10_leaf_io] +compulsory=true +description=Q10 factor for plant respiration +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::q10_leaf_io + +[namelist:jules_pftparm=r_grow_io] +compulsory=true +description=Growth respiration fraction +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::r_grow_io + +[namelist:jules_pftparm=rootd_ft_io] +compulsory=true +description=Root depth (m) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::rootd_ft_io + +[namelist:jules_pftparm=sigl_io] +compulsory=true +description=Specific density of leaf carbon (kg C/m2 leaf) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::sigl_io + +[namelist:jules_pftparm=sox_a_io] +compulsory=true +description=The shape parameter in the xylem vulnerability curve +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO21c +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::sox_a_io + +[namelist:jules_pftparm=sox_p50_io] +compulsory=true +description=Xylem water potential at which xylem hydraulic conductance is half its maximum value. (MPa) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO21c +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::sox_p50_io + +[namelist:jules_pftparm=sox_rp_min_io] +compulsory=true +description=Plant minimum hydraulic resistance. (m2 s MPa/mol) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO21c +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::sox_rp_min_io + +[namelist:jules_pftparm=sug_g0_io] +compulsory=true +description=Specific structural carbon production rate (kgC m-2 s-1) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO22 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::sug_g0_io + +[namelist:jules_pftparm=sug_grec_io] +compulsory=true +description=Specific structural carbon recycling rate (kgC m-2 s-1) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO22 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::sug_grec_io + +[namelist:jules_pftparm=sug_yg_io] +compulsory=true +description=Growth yield for SUGAR model +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO22 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::sug_yg_io + +[namelist:jules_pftparm=tef_io] +compulsory=true +description=(Mono-)Terpene emission factor per PFT (μgC g-1 h-1) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO10 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::tef_io + +[namelist:jules_pftparm=tleaf_of_io] +compulsory=true +description=Temperature below which leaves are dropped (K) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::tleaf_of_io + +[namelist:jules_pftparm=tlow_io] +compulsory=true +description=Lower temperature for photosynthesis (deg C) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::tlow_io + +[namelist:jules_pftparm=tupp_io] +compulsory=true +description=Upper temperature for photosynthesis (deg C) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::tupp_io + +[namelist:jules_pftparm=vint_io] +compulsory=true +description=Intercept in VCMAX and NAREA +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO07 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::vint_io + +[namelist:jules_pftparm=vsl_io] +compulsory=true +description=Slope in VCMAX and NAREA +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO07 +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::vsl_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 @@ -147,7 +1131,6 @@ 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 diff --git a/rose-meta/jules-shared/jules-pftparm/vn8.2/rose-meta.conf b/rose-meta/jules-shared/jules-pftparm/vn8.2/rose-meta.conf new file mode 100644 index 00000000..2f0ccb47 --- /dev/null +++ b/rose-meta/jules-shared/jules-pftparm/vn8.2/rose-meta.conf @@ -0,0 +1,1150 @@ +[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=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#namelist-JULES_PFTPARM +widget[rose-config-edit]=cylc8_compat.PageArrayTable + +[namelist:jules_pftparm=a_wl_io] +compulsory=true +description=Allometric coefficient relating the target woody biomass to the leaf area index (kg carbon m-2) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::a_wl_io + +[namelist:jules_pftparm=a_ws_io] +compulsory=true +description=Woody biomass as a multiple of live stem biomass +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::a_ws_io + +[namelist:jules_pftparm=act_jmax_io] +compulsory=true +description=Activation energy for temperature response of Jmax +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO20b +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::act_jmax_io + +[namelist:jules_pftparm=act_vcmax_io] +compulsory=true +description=Activation energy for temperature response of Vcmax +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO20b +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::act_vcmax_io + +[namelist:jules_pftparm=aef_io] +compulsory=true +description=Acetone emission factor per PFT (μgC g-1 h-1) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO10 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::aef_io + +[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 +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::albsnc_max_io + +[namelist:jules_pftparm=albsnc_min_io] +compulsory=true +description=Snow-covered albedo for zero LAI +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::albsnc_min_io + +[namelist:jules_pftparm=albsnf_max_io] +compulsory=true +description=Snow-free albedo for large LAI +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::albsnf_max_io + +[namelist:jules_pftparm=albsnf_maxl_io] +compulsory=true +description=Lower limit on albsnf_max_io +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::albsnf_maxl_io + +[namelist:jules_pftparm=albsnf_maxu_io] +compulsory=true +description=Upper limit on albsnf_max_io +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::albsnf_maxu_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 +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::alnir_io + +[namelist:jules_pftparm=alnirl_io] +compulsory=true +description=Lower limit on alnir_io +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::alnirl_io + +[namelist:jules_pftparm=alniru_io] +compulsory=true +description=Upper limit on alnir_io +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::alniru_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 +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::alpar_io + +[namelist:jules_pftparm=alparl_io] +compulsory=true +description=Lower limit on alpar_io +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::alparl_io + +[namelist:jules_pftparm=alparu_io] +compulsory=true +description=Upper limit on alpar_io +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::alparu_io + +[namelist:jules_pftparm=alpha_elec_io] +compulsory=true +description=Quantum yield of electron transport (mol electrons/mol PAR photons) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO20 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::alpha_elec_io + +[namelist:jules_pftparm=alpha_io] +compulsory=true +description=Quantum efficiency of photosynthesis (mol CO2/mol PAR photons) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::alpha_io + +[namelist:jules_pftparm=avg_ba_io] +compulsory=true +description=Average burnt area on PFTs per fire event (fraction) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::avg_ba_io + +[namelist:jules_pftparm=b_wl_io] +compulsory=true +description=Allometric exponent relating the target woody biomass to the leaf area index +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::b_wl_io + +[namelist:jules_pftparm=c3_io] +compulsory=true +description=Flag indicating whether PFT is C3 type +!enumeration=true +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO03 +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::c3_io +value-titles=Not C3,C3 +values=0,1 + +[namelist:jules_pftparm=can_struct_a_io] +compulsory=true +description=Canopy structure factor (1.0 is structurally homogeneous). +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +sort-key=Panel-HR02 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::can_struct_a_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 +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::catch0_io + +[namelist:jules_pftparm=ccleaf_max_io] +compulsory=true +description=Leaf maximum combustion completeness +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::ccleaf_max_io + +[namelist:jules_pftparm=ccleaf_min_io] +compulsory=true +description=Leaf minimum combustion completeness +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::ccleaf_min_io + +[namelist:jules_pftparm=ccwood_max_io] +compulsory=true +description=Wood maximum combustion completeness +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::ccwood_max_io + +[namelist:jules_pftparm=ccwood_min_io] +compulsory=true +description=Wood minimum combustion completeness +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::ccwood_min_io + +[namelist:jules_pftparm=ci_st_io] +compulsory=true +description=Leaf-internal CO2 concentration (Pa) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO10 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::ci_st_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 +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::dcatch_dlai_io + +[namelist:jules_pftparm=deact_jmax_io] +compulsory=true +description=Deactivation energy for temperature response of Jmax +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO20 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::deact_jmax_io + +[namelist:jules_pftparm=deact_vcmax_io] +compulsory=true +description=Deactivation energy for temperature response of Vcmax +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO20 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::deact_vcmax_io + +[namelist:jules_pftparm=dfp_dcuo_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO11 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::dfp_dcuo_io + +[namelist:jules_pftparm=dgl_dm_io] +compulsory=true +description=Rate of change of leaf turnover rate with moisture availability +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::dgl_dm_io + +[namelist:jules_pftparm=dgl_dt_io] +compulsory=true +description=Rate of change of leaf turnover rate with temperature (K-1) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::dgl_dt_io + +[namelist:jules_pftparm=dqcrit_io] +compulsory=true +description=Critical humidity deficit (kg H2O per kg air) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO21a +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::dqcrit_io + +[namelist:jules_pftparm=ds_jmax_io] +compulsory=true +description=Entropy factor for temperature response of Jmax +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO20a +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::ds_jmax_io + +[namelist:jules_pftparm=ds_vcmax_io] +compulsory=true +description=Entropy factor for temperature response of Vcmax +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO20a +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::ds_vcmax_io + +[namelist:jules_pftparm=dust_veg_scj_io] +compulsory=true +description=Dust emissions scaling factor for each pft type + =NOT APPLICABLE TO STANDALONE +fail-if=len(this) != namelist:jules_surface_types=npft +help=This is applied when dust_veg_emiss is non-zero and + =allows the dust emission from different plant functional + =types to be reduced/switched off. +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HOX +type=real + +[namelist:jules_pftparm=dz0v_dh_io] +compulsory=true +description=Rate of change of vegetation roughness length for momentum with height +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::dz0v_dh_io + +[namelist:jules_pftparm=emis_pft_io] +compulsory=true +description=Surface emissivity +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR04 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::emis_pft_io + +[namelist:jules_pftparm=eta_sl_io] +compulsory=true +description=Live stemwood coefficient (kg C/m/LAI) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::eta_sl_io + +[namelist:jules_pftparm=f0_io] +compulsory=true +description=CI / CA for DQ = 0 +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO21a +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::f0_io + +[namelist:jules_pftparm=fd_io] +compulsory=true +description=Scale factor for dark respiration +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::fd_io + +[namelist:jules_pftparm=fef_bc_io] +compulsory=true +description=Black carbon (BC) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::fef_bc_io + +[namelist:jules_pftparm=fef_c2h4_io] +compulsory=true +description=Ethene (C2H4) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::fef_c2h4_io + +[namelist:jules_pftparm=fef_c2h6_io] +compulsory=true +description=Ethane (C2H6) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::fef_c2h6_io + +[namelist:jules_pftparm=fef_c3h8_io] +compulsory=true +description=Propane (C3H8) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::fef_c3h8_io + +[namelist:jules_pftparm=fef_ch4_io] +compulsory=true +description=Methane (CH4) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::fef_ch4_io + +[namelist:jules_pftparm=fef_co2_io] +compulsory=true +description=Carbon dioxide (CO2) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::fef_co2_io + +[namelist:jules_pftparm=fef_co_io] +compulsory=true +description=Carbon monoxide (CO) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::fef_co_io + +[namelist:jules_pftparm=fef_dms_io] +compulsory=true +description=Dimethyl sulfide (DMS) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::fef_dms_io + +[namelist:jules_pftparm=fef_hcho_io] +compulsory=true +description=Formaldehyde (HCHO) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::fef_hcho_io + +[namelist:jules_pftparm=fef_mecho_io] +compulsory=true +description=Acetaldehyde (MeCHO) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::fef_mecho_io + +[namelist:jules_pftparm=fef_nh3_io] +compulsory=true +description=Ammonia (NH3) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::fef_nh3_io + +[namelist:jules_pftparm=fef_nox_io] +compulsory=true +description=Nitrogen oxides (NOx) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::fef_nox_io + +[namelist:jules_pftparm=fef_oc_io] +compulsory=true +description=Organic carbon (OC) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::fef_oc_io + +[namelist:jules_pftparm=fef_so2_io] +compulsory=true +description=Sulphur dioxide (SO2) emission factor from natural fires (INFERNO) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0: +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::fef_so2_io + +[namelist:jules_pftparm=fire_mort_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +range=0:1 +sort-key=Panel-HO16 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::fire_mort_io + +[namelist:jules_pftparm=fl_o3_ct_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO11 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::fl_o3_ct_io + +[namelist:jules_pftparm=fsmc_mod_io] +compulsory=true +description=Switch for method of weighting the contribution that different soil layers make to the soil moisture + =availability factor fsmc +!enumeration=true +fail-if=len(this) != namelist:jules_surface_types=npft; + =namelist:jules_soil_biogeochem=l_layeredc == '.true.' and namelist:jules_soil_biogeochem=soil_bgc_model == '2' and any(this == 1); # fsmc_mod=1 cannot be used with layered 4-pool soil C model +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::fsmc_mod_io +value-titles=weight water stress in layers by root fraction, use average root zone properties +values=0,1 + +[namelist:jules_pftparm=fsmc_of_io] +compulsory=true +description=Moisture availability below which leaves are dropped +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::fsmc_of_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 +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::fsmc_p0_io + +[namelist:jules_pftparm=g1_stomata_io] +compulsory=true +description=Parameter g1 of the Medlyn et al. (2011) model of stomatal conductance. +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO21b +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::g1_stomata_io + +[namelist:jules_pftparm=g_leaf_0_io] +compulsory=true +description=Minimum turnover rate for leaves (/360days) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::g_leaf_0_io + +[namelist:jules_pftparm=glmin_io] +compulsory=true +description=Minimum leaf conductance for H2O (m s-1) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::glmin_io + +[namelist:jules_pftparm=gpp_st_io] +compulsory=true +description=Gross primary production (GPP) at standard conditions (kgC m-2 s-1 ) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO10 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::gpp_st_io + +[namelist:jules_pftparm=gsoil_f_io] +compulsory=true +description=Soil evaporation enhancement factor +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::gsoil_f_io + +[namelist:jules_pftparm=hw_sw_io] +compulsory=true +description=Ratio of N in heartwood:stemwood with trait physiology. +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO07 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::hw_sw_io + +[namelist:jules_pftparm=ief_io] +compulsory=true +description=Isoprene emission factor per PFT (μgC g-1 h-1) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO10 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::ief_io + +[namelist:jules_pftparm=infil_f_io] +compulsory=true +description=Infiltration enhancement factor +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::infil_f_io + +[namelist:jules_pftparm=jv25_ratio_io] +compulsory=true +description=Ratio of Jmax to Vcmax at 25 degC. +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO20 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::jv25_ratio_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 +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +sort-key=Panel-HR02 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::kext_io + +[namelist:jules_pftparm=kn_io] +compulsory=true +description=Decay of nitrogen through the canopy for canopy radiation models 4-5 +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::kn_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 +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::knl_io + +[namelist:jules_pftparm=kpar_io] +compulsory=true +description=PAR Extinction coefficient (m2 leaf / m2 ground) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::kpar_io + +[namelist:jules_pftparm=lai_alb_lim_io] +compulsory=true +description=Minimum LAI for plant canopies in the absence of snow. +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +sort-key=Panel-HR02 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::lai_alb_lim_io + +[namelist:jules_pftparm=lma_io] +compulsory=true +description=Leaf mass per unit area (kgLeaf m-2) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO07 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::lma_io + +[namelist:jules_pftparm=mef_io] +compulsory=true +description=Methanol emission factor per PFT (μgC g-1 h-1) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO10 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::mef_io + +[namelist:jules_pftparm=neff_io] +compulsory=true +description=Scale factor relating Vcmax with leaf nitrogen concentration +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::neff_io + +[namelist:jules_pftparm=nl0_io] +compulsory=true +description=Top leaf nitrogen concentration (kg N/kg C) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::nl0_io + +[namelist:jules_pftparm=nmass_io] +compulsory=true +description=Top leaf nitrogen content per unit mass (kgN kgLeaf-1) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO07 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::nmass_io + +[namelist:jules_pftparm=nr_io] +compulsory=true +description=Root nitrogen concentration with trait physiology +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO07 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::nr_io + +[namelist:jules_pftparm=nr_nl_io] +compulsory=true +description=Ratio of root nitrogen concentration to leaf nitrogen concentration +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::nr_nl_io + +[namelist:jules_pftparm=ns_nl_io] +compulsory=true +description=Ratio of stem nitrogen concentration to leaf nitrogen concentration +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::ns_nl_io + +[namelist:jules_pftparm=nsw_io] +compulsory=true +description=Stemwood nitrogen concentration with trait physiology. +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO07 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::nsw_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 +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::omega_io + +[namelist:jules_pftparm=omegal_io] +compulsory=true +description=Lower limit on omega_io +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::omegal_io + +[namelist:jules_pftparm=omegau_io] +compulsory=true +description=Upper limit on omega_io(kgLeaf m-2) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::omegau_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 +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::omnir_io + +[namelist:jules_pftparm=omnirl_io] +compulsory=true +description=Lower limit on omnir_io +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::omnirl_io + +[namelist:jules_pftparm=omniru_io] +compulsory=true +description=Upper limit on omnir_io +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +range=0:1 +sort-key=Panel-HR03 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::omniru_io + +[namelist:jules_pftparm=orient_io] +compulsory=true +description=Flag indicating leaf angle distribution +!enumeration=true +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters +sort-key=Panel-HR01 +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::orient_io +value-titles=Spherical,Horizontal +values=0,1 + +[namelist:jules_pftparm=pft_name_io] +compulsory=true +description=Unique descriptor for plant functional type. + =Allows multiple instances of a namelist; one per PFT (LFRic only). +!kind=default +sort-key=Panel-H01 +!type=character +values='brd_leaf', 'ndl_leaf', 'c3_grass', 'c4_grass', 'shrub' + +[namelist:jules_pftparm=psi_close_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO19 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::psi_close_io + +[namelist:jules_pftparm=psi_open_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO19 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::psi_open_io + +[namelist:jules_pftparm=q10_leaf_io] +compulsory=true +description=Q10 factor for plant respiration +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::q10_leaf_io + +[namelist:jules_pftparm=r_grow_io] +compulsory=true +description=Growth respiration fraction +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::r_grow_io + +[namelist:jules_pftparm=rootd_ft_io] +compulsory=true +description=Root depth (m) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::rootd_ft_io + +[namelist:jules_pftparm=sigl_io] +compulsory=true +description=Specific density of leaf carbon (kg C/m2 leaf) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::sigl_io + +[namelist:jules_pftparm=sox_a_io] +compulsory=true +description=The shape parameter in the xylem vulnerability curve +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO21c +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::sox_a_io + +[namelist:jules_pftparm=sox_p50_io] +compulsory=true +description=Xylem water potential at which xylem hydraulic conductance is half its maximum value. (MPa) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO21c +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::sox_p50_io + +[namelist:jules_pftparm=sox_rp_min_io] +compulsory=true +description=Plant minimum hydraulic resistance. (m2 s MPa/mol) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO21c +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::sox_rp_min_io + +[namelist:jules_pftparm=sug_g0_io] +compulsory=true +description=Specific structural carbon production rate (kgC m-2 s-1) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO22 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::sug_g0_io + +[namelist:jules_pftparm=sug_grec_io] +compulsory=true +description=Specific structural carbon recycling rate (kgC m-2 s-1) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO22 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::sug_grec_io + +[namelist:jules_pftparm=sug_yg_io] +compulsory=true +description=Growth yield for SUGAR model +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO22 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::sug_yg_io + +[namelist:jules_pftparm=tef_io] +compulsory=true +description=(Mono-)Terpene emission factor per PFT (μgC g-1 h-1) +fail-if=len(this) != namelist:jules_surface_types=npft +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO10 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::tef_io + +[namelist:jules_pftparm=tleaf_of_io] +compulsory=true +description=Temperature below which leaves are dropped (K) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::tleaf_of_io + +[namelist:jules_pftparm=tlow_io] +compulsory=true +description=Lower temperature for photosynthesis (deg C) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::tlow_io + +[namelist:jules_pftparm=tupp_io] +compulsory=true +description=Upper temperature for photosynthesis (deg C) +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::tupp_io + +[namelist:jules_pftparm=vint_io] +compulsory=true +description=Intercept in VCMAX and NAREA +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO07 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::vint_io + +[namelist:jules_pftparm=vsl_io] +compulsory=true +description=Slope in VCMAX and NAREA +fail-if=len(this) != namelist:jules_surface_types=npft +!kind=double +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO07 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::vsl_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 +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/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 +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +type=real +url=https://metoffice.github.io/jules/vn8.2/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/rose-meta/jules-shared/jules-radiation/HEAD/rose-meta.conf b/rose-meta/jules-shared/jules-radiation/HEAD/rose-meta.conf index 37a0b493..933d7b25 100644 --- a/rose-meta/jules-shared/jules-radiation/HEAD/rose-meta.conf +++ b/rose-meta/jules-shared/jules-radiation/HEAD/rose-meta.conf @@ -94,6 +94,23 @@ trigger=namelist:jules_radiation=l_niso_direct: .false.; type=logical url=https://metoffice.github.io/jules/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_spec_alb_bs +[namelist:jules_radiation=l_spec_albedo] +compulsory=true +description=Include spectral land-surface albedos +sort-key=Panel-B02 +trigger=namelist:jules_radiation=l_spec_alb_bs: .true.; + =namelist:jules_radiation=l_niso_direct: .true.; + =namelist:jules_pftparm=albsnf_max_io: .false.; + =namelist:jules_radiation=l_embedded_snow: .true.; +# =namelist:jules_radiation=l_snow_albedo: .true.; # Remove l_snow_albedo as triggers albsnc to be ignored too. So will need to rely on fail-if and code checks. +# Removed triggers for alpar_io, alnir_io, omega_io & omnir_io as these actually appear to be required unless can_rad_mod=1 and l_spec_albedo=F. +# =namelist:jules_pftparm=alpar_io: .true.; +# =namelist:jules_pftparm=alnir_io: .true.; +# =namelist:jules_pftparm=omega_io: .true.; +# =namelist:jules_pftparm=omnir_io: .true.; +type=logical +url=https://metoffice.github.io/jules/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_spec_albedo + [namelist:jules_radiation=ratio_albsoil] compulsory=true description=Ratio of the NIR to the VIS albedo of bare soil diff --git a/rose-meta/jules-shared/jules-radiation/vn8.2/rose-meta.conf b/rose-meta/jules-shared/jules-radiation/vn8.2/rose-meta.conf new file mode 100644 index 00000000..738ca034 --- /dev/null +++ b/rose-meta/jules-shared/jules-radiation/vn8.2/rose-meta.conf @@ -0,0 +1,130 @@ +[namelist:jules_radiation] +compulsory=true +ns=namelist/JULES Science Settings/jules_radiation +sort-key=Section-A12d +title=Radiation options +url=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/namelists/jules_radiation.nml.html#JULES_RADIATION::l_spec_alb_bs + +[namelist:jules_radiation=l_spec_albedo] +compulsory=true +description=Include spectral land-surface albedos +sort-key=Panel-B02 +trigger=namelist:jules_radiation=l_spec_alb_bs: .true.; + =namelist:jules_radiation=l_niso_direct: .true.; + =namelist:jules_pftparm=albsnf_max_io: .false.; + =namelist:jules_radiation=l_embedded_snow: .true.; +# =namelist:jules_radiation=l_snow_albedo: .true.; # Remove l_snow_albedo as triggers albsnc to be ignored too. So will need to rely on fail-if and code checks. +# Removed triggers for alpar_io, alnir_io, omega_io & omnir_io as these actually appear to be required unless can_rad_mod=1 and l_spec_albedo=F. +# =namelist:jules_pftparm=alpar_io: .true.; +# =namelist:jules_pftparm=alnir_io: .true.; +# =namelist:jules_pftparm=omega_io: .true.; +# =namelist:jules_pftparm=omnir_io: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_radiation.nml.html#JULES_RADIATION::l_spec_albedo + +[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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/namelists/jules_radiation.nml.html#JULES_RADIATION::swdn_frac_albsoil diff --git a/rose-meta/jules-shared/jules-sea-seaice/HEAD/rose-meta.conf b/rose-meta/jules-shared/jules-sea-seaice/HEAD/rose-meta.conf new file mode 100644 index 00000000..8f6938c9 --- /dev/null +++ b/rose-meta/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/rose-meta/jules-shared/jules-sea-seaice/vn7.9/rose-meta.conf b/rose-meta/jules-shared/jules-sea-seaice/vn7.9/rose-meta.conf new file mode 100644 index 00000000..8f6938c9 --- /dev/null +++ b/rose-meta/jules-shared/jules-sea-seaice/vn7.9/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/rose-meta/jules-shared/jules-sea-seaice/vn8.0/rose-meta.conf b/rose-meta/jules-shared/jules-sea-seaice/vn8.0/rose-meta.conf new file mode 100644 index 00000000..8f6938c9 --- /dev/null +++ b/rose-meta/jules-shared/jules-sea-seaice/vn8.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/rose-meta/jules-shared/jules-sea-seaice/vn8.1/rose-meta.conf b/rose-meta/jules-shared/jules-sea-seaice/vn8.1/rose-meta.conf new file mode 100644 index 00000000..8f6938c9 --- /dev/null +++ b/rose-meta/jules-shared/jules-sea-seaice/vn8.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/rose-meta/jules-shared/jules-sea-seaice/vn8.2/rose-meta.conf b/rose-meta/jules-shared/jules-sea-seaice/vn8.2/rose-meta.conf new file mode 100644 index 00000000..8f6938c9 --- /dev/null +++ b/rose-meta/jules-shared/jules-sea-seaice/vn8.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/rose-meta/jules-shared/jules-snow/vn8.2/rose-meta.conf b/rose-meta/jules-shared/jules-snow/vn8.2/rose-meta.conf new file mode 100644 index 00000000..8685583e --- /dev/null +++ b/rose-meta/jules-shared/jules-snow/vn8.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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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/rose-meta/jules-shared/jules-soil/vn8.2/rose-meta.conf b/rose-meta/jules-shared/jules-soil/vn8.2/rose-meta.conf new file mode 100644 index 00000000..db7f2d75 --- /dev/null +++ b/rose-meta/jules-shared/jules-soil/vn8.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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil.nml.html#JULES_SOIL::l_vg_soil diff --git a/rose-meta/jules-shared/jules-surface-types/vn8.2/rose-meta.conf b/rose-meta/jules-shared/jules-surface-types/vn8.2/rose-meta.conf new file mode 100644 index 00000000..3aff08e8 --- /dev/null +++ b/rose-meta/jules-shared/jules-surface-types/vn8.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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::urban_roof diff --git a/rose-meta/jules-shared/jules-surface/vn8.2/rose-meta.conf b/rose-meta/jules-shared/jules-surface/vn8.2/rose-meta.conf new file mode 100644 index 00000000..8a05169d --- /dev/null +++ b/rose-meta/jules-shared/jules-surface/vn8.2/rose-meta.conf @@ -0,0 +1,307 @@ +[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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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_flake=nvars: .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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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/rose-meta/jules-shared/jules-urban/vn8.2/rose-meta.conf b/rose-meta/jules-shared/jules-urban/vn8.2/rose-meta.conf new file mode 100644 index 00000000..bc1098bd --- /dev/null +++ b/rose-meta/jules-shared/jules-urban/vn8.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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/namelists/urban.nml.html#JULES_URBAN::l_moruses_storage_thin diff --git a/rose-meta/jules-shared/jules-vegetation/HEAD/rose-meta.conf b/rose-meta/jules-shared/jules-vegetation/HEAD/rose-meta.conf index 30aad86a..5c8f7f03 100644 --- a/rose-meta/jules-shared/jules-vegetation/HEAD/rose-meta.conf +++ b/rose-meta/jules-shared/jules-vegetation/HEAD/rose-meta.conf @@ -17,6 +17,47 @@ value-titles=1: Single canopy layer, =5: Multi-layer with Sunfleck penetration and sunlit and shaded leaves, =6: Multi-layer with exponential decline in leaf N +[namelist:jules_vegetation=l_bvoc_emis] +compulsory=true +description=Calculate BVOC emissions +sort-key=Panel-I10 +trigger=namelist:jules_pftparm=ief_io: .true.; + =namelist:jules_pftparm=tef_io: .true.; + =namelist:jules_pftparm=mef_io: .true.; + =namelist:jules_pftparm=aef_io: .true.; + =namelist:jules_pftparm=ci_st_io: .true.; + =namelist:jules_pftparm=gpp_st_io: .true.; +type=logical +url=https://metoffice.github.io/jules/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_bvoc_emis + +[namelist:jules_vegetation=l_inferno] +compulsory=true +description=Use the INFERNO interactive fire and diagnostic emissions model +sort-key=Panel-I16 +trigger=namelist:jules_vegetation=ignition_method: .true.; + =namelist:jules_vegetation=l_trif_fire: .true.; + =namelist:jules_pftparm=avg_ba_io: .true.; + =namelist:jules_pftparm=ccleaf_min_io: .true.; + =namelist:jules_pftparm=ccleaf_max_io: .true.; + =namelist:jules_pftparm=ccwood_min_io: .true.; + =namelist:jules_pftparm=ccwood_max_io: .true.; + =namelist:jules_pftparm=fef_bc_io: .true.; + =namelist:jules_pftparm=fef_ch4_io: .true.; + =namelist:jules_pftparm=fef_co2_io: .true.; + =namelist:jules_pftparm=fef_co_io: .true.; + =namelist:jules_pftparm=fef_nox_io: .true.; + =namelist:jules_pftparm=fef_oc_io: .true.; + =namelist:jules_pftparm=fef_so2_io: .true.; + =namelist:jules_pftparm=fef_c2h4_io: .true.; + =namelist:jules_pftparm=fef_c2h6_io: .true.; + =namelist:jules_pftparm=fef_c3h8_io: .true.; + =namelist:jules_pftparm=fef_hcho_io: .true.; + =namelist:jules_pftparm=fef_mecho_io: .true.; + =namelist:jules_pftparm=fef_nh3_io: .true.; + =namelist:jules_pftparm=fef_dms_io: .true.; +type=logical +url=https://metoffice.github.io/jules/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_inferno + [namelist:jules_vegetation=l_limit_canhc] compulsory=true description=Logical for capping vegetation canopy areal thermal heat capacity @@ -25,6 +66,16 @@ sort-key=Panel-I04 type=logical url=https://metoffice.github.io/jules/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_limit_canhc +[namelist:jules_vegetation=l_o3_damage] +compulsory=true +description=Use ozone damage for vegetation + =NOT AVAILABLE TO UM OR LFRic +sort-key=Panel-I11 +trigger=namelist:jules_pftparm=dfp_dcuo_io: .true.; + =namelist:jules_pftparm=fl_o3_ct_io: .true.; +type=logical +url=https://metoffice.github.io/jules/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_o3_damage + [namelist:jules_vegetation=l_spec_veg_z0] compulsory=true description=Logical switch for setting explicit vegetation roughness lengths @@ -32,3 +83,77 @@ description=Logical switch for setting explicit vegetation roughness lengths sort-key=Panel-I05 type=logical url=https://metoffice.github.io/jules/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_spec_veg_z0 + +[namelist:jules_vegetation=l_sugar] +compulsory=true +description=Switch for using the SUGAR carbohydrate model to + = calculate respiration +fail-if=this == '.true.' and namelist:jules_model_environment=l_jules_parent == 1; # SUGAR is not available to the UM OR LFRic +sort-key=Panel-I22 +trigger=namelist:jules_pftparm=sug_g0_io: .true.; + =namelist:jules_pftparm=sug_grec_io: .true.; + =namelist:jules_pftparm=sug_yg_io: .true.; +type=logical +url=https://metoffice.github.io/jules/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_sugar + +[namelist:jules_vegetation=l_trif_fire] +compulsory=true +description=Use interactive fire linked to INFERNO including interactive fire emissions. +fail-if=this == '.true.' and (namelist:jules_vegetation=l_trif_eq == '.true.'); +sort-key=Panel-I02c +trigger=namelist:jules_pftparm=fire_mort_io: .true. +type=logical +url=https://metoffice.github.io/jules/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_trif_fire + +[namelist:jules_vegetation=l_use_pft_psi] +compulsory=true +description=Use psi_open_io and psi_close_io to calculate the soil moisture stress function on vegetation. + =NOT AVAILABLE TO THE UM OR LFRIC +sort-key=Panel-I19 +trigger=namelist:jules_pftparm=psi_close_io: .true.; + =namelist:jules_pftparm=psi_open_io: .true.; +type=logical +url=https://metoffice.github.io/jules/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_use_pft_psi + +[namelist:jules_vegetation=photo_model] +compulsory=true +description=Choice of photosynthesis model for C3 plants +!enumeration=true +fail-if=this == 2 and ( namelist:jules_vegetation=can_rad_mod != 1 and namelist:jules_vegetation=can_rad_mod != 5 and namelist:jules_vegetation=can_rad_mod != 6) + =this == 3 and (namelist:jules_vegetation=stomata_model != 3) +sort-key=Panel-I20 +trigger=namelist:jules_pftparm=alpha_elec_io: 2; + =namelist:jules_pftparm=deact_jmax_io: 2; + =namelist:jules_pftparm=deact_vcmax_io: 2; + =namelist:jules_pftparm=jv25_ratio_io: 2; + =namelist:jules_vegetation=photo_acclim_model: 2; + =namelist:jules_vegetation=photo_act_model: 2; + =namelist:jules_vegetation=photo_jv_model: 2; +url=https://metoffice.github.io/jules/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::photo_model +value-titles=Collatz, Farquhar, SOX Collatz +values=1,2,3 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_vegetation=stomata_model] +compulsory=true +description=Choice of stomatal conductance model +!enumeration=true +fail-if=this == 3 and namelist:jules_vegetation=l_scale_resp_pm =='.true.'; + = this == 3 and not any(namelist:jules_pftparm=fsmc_mod_io == 1); + = this == 3 and not namelist:jules_vegetation=can_rad_mod == 1; + = this == 3 and namelist:jules_model_environment=l_jules_parent == 1 +# l_scale_resp_pm=T is incompatible with SOX (stomata_model=3) +# SOX (stomata_model=3) must be used with fsmc_mod = 1 +# SOX (stomata_model=3) must be used with can_rad_mod = 1 +# SOX cannot currently be used with the UM +sort-key=Panel-I21 +trigger=namelist:jules_pftparm=dqcrit_io: 1; + =namelist:jules_pftparm=f0_io: 1; + =namelist:jules_pftparm=g1_stomata_io: 2; + =namelist:jules_pftparm=sox_a_io: 3; + =namelist:jules_pftparm=sox_p50_io: 3; + =namelist:jules_pftparm=sox_rp_min_io: 3; +url=https://metoffice.github.io/jules/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::stomata_model +value-titles=Original (Jacobs), Medlyn, SOX +values=1,2,3 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget diff --git a/rose-meta/jules-shared/jules-vegetation/vn8.2/rose-meta.conf b/rose-meta/jules-shared/jules-vegetation/vn8.2/rose-meta.conf new file mode 100644 index 00000000..6f224239 --- /dev/null +++ b/rose-meta/jules-shared/jules-vegetation/vn8.2/rose-meta.conf @@ -0,0 +1,159 @@ +[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=https://metoffice.github.io/jules/vn8.2/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=https://metoffice.github.io/jules/vn8.2/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_bvoc_emis] +compulsory=true +description=Calculate BVOC emissions +sort-key=Panel-I10 +trigger=namelist:jules_pftparm=ief_io: .true.; + =namelist:jules_pftparm=tef_io: .true.; + =namelist:jules_pftparm=mef_io: .true.; + =namelist:jules_pftparm=aef_io: .true.; + =namelist:jules_pftparm=ci_st_io: .true.; + =namelist:jules_pftparm=gpp_st_io: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_bvoc_emis + +[namelist:jules_vegetation=l_inferno] +compulsory=true +description=Use the INFERNO interactive fire and diagnostic emissions model +sort-key=Panel-I16 +trigger=namelist:jules_vegetation=ignition_method: .true.; + =namelist:jules_vegetation=l_trif_fire: .true.; + =namelist:jules_pftparm=avg_ba_io: .true.; + =namelist:jules_pftparm=ccleaf_min_io: .true.; + =namelist:jules_pftparm=ccleaf_max_io: .true.; + =namelist:jules_pftparm=ccwood_min_io: .true.; + =namelist:jules_pftparm=ccwood_max_io: .true.; + =namelist:jules_pftparm=fef_bc_io: .true.; + =namelist:jules_pftparm=fef_ch4_io: .true.; + =namelist:jules_pftparm=fef_co2_io: .true.; + =namelist:jules_pftparm=fef_co_io: .true.; + =namelist:jules_pftparm=fef_nox_io: .true.; + =namelist:jules_pftparm=fef_oc_io: .true.; + =namelist:jules_pftparm=fef_so2_io: .true.; + =namelist:jules_pftparm=fef_c2h4_io: .true.; + =namelist:jules_pftparm=fef_c2h6_io: .true.; + =namelist:jules_pftparm=fef_c3h8_io: .true.; + =namelist:jules_pftparm=fef_hcho_io: .true.; + =namelist:jules_pftparm=fef_mecho_io: .true.; + =namelist:jules_pftparm=fef_nh3_io: .true.; + =namelist:jules_pftparm=fef_dms_io: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_inferno + +[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=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_limit_canhc + +[namelist:jules_vegetation=l_o3_damage] +compulsory=true +description=Use ozone damage for vegetation + =NOT AVAILABLE TO UM OR LFRic +sort-key=Panel-I11 +trigger=namelist:jules_pftparm=dfp_dcuo_io: .true.; + =namelist:jules_pftparm=fl_o3_ct_io: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_o3_damage + +[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=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_spec_veg_z0 + +[namelist:jules_vegetation=l_sugar] +compulsory=true +description=Switch for using the SUGAR carbohydrate model to + = calculate respiration +fail-if=this == '.true.' and namelist:jules_model_environment=l_jules_parent == 1; # SUGAR is not available to the UM OR LFRic +sort-key=Panel-I22 +trigger=namelist:jules_pftparm=sug_g0_io: .true.; + =namelist:jules_pftparm=sug_grec_io: .true.; + =namelist:jules_pftparm=sug_yg_io: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_sugar + +[namelist:jules_vegetation=l_trif_fire] +compulsory=true +description=Use interactive fire linked to INFERNO including interactive fire emissions. +fail-if=this == '.true.' and (namelist:jules_vegetation=l_trif_eq == '.true.'); +sort-key=Panel-I02c +trigger=namelist:jules_pftparm=fire_mort_io: .true. +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_trif_fire + +[namelist:jules_vegetation=l_use_pft_psi] +compulsory=true +description=Use psi_open_io and psi_close_io to calculate the soil moisture stress function on vegetation. + =NOT AVAILABLE TO THE UM OR LFRIC +sort-key=Panel-I19 +trigger=namelist:jules_pftparm=psi_close_io: .true.; + =namelist:jules_pftparm=psi_open_io: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_use_pft_psi + +[namelist:jules_vegetation=photo_model] +compulsory=true +description=Choice of photosynthesis model for C3 plants +!enumeration=true +fail-if=this == 2 and ( namelist:jules_vegetation=can_rad_mod != 1 and namelist:jules_vegetation=can_rad_mod != 5 and namelist:jules_vegetation=can_rad_mod != 6) + =this == 3 and (namelist:jules_vegetation=stomata_model != 3) +sort-key=Panel-I20 +trigger=namelist:jules_pftparm=alpha_elec_io: 2; + =namelist:jules_pftparm=deact_jmax_io: 2; + =namelist:jules_pftparm=deact_vcmax_io: 2; + =namelist:jules_pftparm=jv25_ratio_io: 2; + =namelist:jules_vegetation=photo_acclim_model: 2; + =namelist:jules_vegetation=photo_act_model: 2; + =namelist:jules_vegetation=photo_jv_model: 2; +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::photo_model +value-titles=Collatz, Farquhar, SOX Collatz +values=1,2,3 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_vegetation=stomata_model] +compulsory=true +description=Choice of stomatal conductance model +!enumeration=true +fail-if=this == 3 and namelist:jules_vegetation=l_scale_resp_pm =='.true.'; + = this == 3 and not any(namelist:jules_pftparm=fsmc_mod_io == 1); + = this == 3 and not namelist:jules_vegetation=can_rad_mod == 1; + = this == 3 and namelist:jules_model_environment=l_jules_parent == 1 +# l_scale_resp_pm=T is incompatible with SOX (stomata_model=3) +# SOX (stomata_model=3) must be used with fsmc_mod = 1 +# SOX (stomata_model=3) must be used with can_rad_mod = 1 +# SOX cannot currently be used with the UM +sort-key=Panel-I21 +trigger=namelist:jules_pftparm=dqcrit_io: 1; + =namelist:jules_pftparm=f0_io: 1; + =namelist:jules_pftparm=g1_stomata_io: 2; + =namelist:jules_pftparm=sox_a_io: 3; + =namelist:jules_pftparm=sox_p50_io: 3; + =namelist:jules_pftparm=sox_rp_min_io: 3; +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::stomata_model +value-titles=Original (Jacobs), Medlyn, SOX +values=1,2,3 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget diff --git a/rose-meta/jules-standalone/HEAD/rose-meta.conf b/rose-meta/jules-standalone/HEAD/rose-meta.conf index df0ae55d..e30a27c5 100644 --- a/rose-meta/jules-standalone/HEAD/rose-meta.conf +++ b/rose-meta/jules-standalone/HEAD/rose-meta.conf @@ -2414,11 +2414,12 @@ fail-if=len(this) != namelist:jules_initial=nvars; = namelist:jules_initial=total_snow == '.false.' and namelist:jules_snow=nsmax > 0 and not any(this == "'tsnow'"); # tsnow must be given if total_snow = FALSE and nsmax > 0 = namelist:jules_initial=total_snow == '.false.' and namelist:jules_snow=nsmax > 0 and namelist:jules_radiation=l_snow_albedo == '.true.' and not any(this == "'rgrainl'"); # rgrainl must be given if total_snow = FALSE, nsmax > 0 and l_snow_albedo = TRUE = namelist:jules_soil=l_bedrock == '.true.' and not any(this == "'tsoil_deep'"); # tsoil_deep must be initialised if bedrock is switched on - = namelist:jules_rivers=l_rivers == '.true.' and namelist:jules_rivers=i_river_vn == "3" and not any(this == "'rivers_sto_rp'"); # rivers_sto_rp must be initialised if rivers is switched on and i_river_vn='3' : trip - = namelist:jules_rivers=l_rivers == '.true.' and namelist:jules_rivers=i_river_vn == "2" and not any(this == "'rfm_surfstore_rp'"); # rfm_surfstore_rp must be initialised if rivers is switched on and i_river_vn='2' : rfm - = namelist:jules_rivers=l_rivers == '.true.' and namelist:jules_rivers=i_river_vn == "2" and not any(this == "'rfm_substore_rp'"); # rfm_substore_rp must be initialised if rivers is switched on and i_river_vn='2' : rfm - = namelist:jules_rivers=l_rivers == '.true.' and namelist:jules_rivers=i_river_vn == "2" and not any(this == "'rfm_flowin_rp'"); # rfm_flowin_rp must be initialised if rivers is switched on and i_river_vn='2' : rfm - = namelist:jules_rivers=l_rivers == '.true.' and namelist:jules_rivers=i_river_vn == "2" and not any(this == "'rfm_bflowin_rp'"); # rfm_bflowin_rp must be initialised if rivers is switched on and i_river_vn='2' : rfm + = namelist:jules_rivers=i_river_vn == 3 and not ( any(this == "'rivers_sto_rp'") or any(namelist:jules_rivers_props=var == "'rivers_storage'") ); # rivers_sto_rp or rivers_storage must be initialised if rivers is switched on and i_river_vn='3' : trip + = ( namelist:jules_rivers=i_river_vn == 3 and not any(this == "'inland_outflow_rp'") ) and any(namelist:oasis_rivers=send_fields == "'inland_outflow'"); # inland_outflow_rp must be initialised when i_river_vn='3' (TRIP) and inland_outflow is requested + = namelist:jules_rivers=i_river_vn == "2" and not any(this == "'rfm_surfstore_rp'"); # rfm_surfstore_rp must be initialised if rivers is switched on and i_river_vn='2' : rfm + = namelist:jules_rivers=i_river_vn == "2" and not any(this == "'rfm_substore_rp'"); # rfm_substore_rp must be initialised if rivers is switched on and i_river_vn='2' : rfm + = namelist:jules_rivers=i_river_vn == "2" and not any(this == "'rfm_flowin_rp'"); # rfm_flowin_rp must be initialised if rivers is switched on and i_river_vn='2' : rfm + = namelist:jules_rivers=i_river_vn == "2" and not any(this == "'rfm_bflowin_rp'"); # rfm_bflowin_rp must be initialised if rivers is switched on and i_river_vn='2' : rfm length=: sort-key=06 url=https://metoffice.github.io/jules/latest/namelists/initial_conditions.nml.html#JULES_INITIAL::var @@ -2430,7 +2431,7 @@ values='canht','canopy','cropcanht','cropdvi','cropharvc','croplai', ='snow_grnd','snow_ice','snow_liq','snow_tile','sthu_irr','sthuf', ='sthzw','t_growth_gb','t_soil','tsnow','tstar_tile','tsoil_deep', ='wood_prod_fast','wood_prod_med','wood_prod_slow','years_since_harvest', - ='zw' + ='zw','inland_outflow_rp' [namelist:jules_initial=var_name] compulsory=true @@ -2500,6 +2501,7 @@ url=https://metoffice.github.io/jules/latest/namelists/model_grid.nml.html#JULES [namelist:jules_input_grid=nx] compulsory=true description=Size of the x dimension +fail-if=this != namelist:jules_rivers_props=nx_rivers and namelist:jules_land_frac=l_use_land_fraction == '.true.'; # If using land fractions for rivers then the input grid needs to be the same as the rivers grid so that the land fractions are copied across to the rivers grid correctly range=1: sort-key=06 type=integer @@ -2508,6 +2510,7 @@ url=https://metoffice.github.io/jules/latest/namelists/model_grid.nml.html#JULES [namelist:jules_input_grid=ny] compulsory=true description=Size of the y dimension +fail-if=this != namelist:jules_rivers_props=ny_rivers and namelist:jules_land_frac=l_use_land_fraction == '.true.'; # If using land fractions for rivers then the input grid needs to be the same as the rivers grid so that the land fractions are copied across to the rivers grid correctly range=1: sort-key=07 type=integer @@ -2605,6 +2608,21 @@ sort-key=c url=https://metoffice.github.io/jules/latest/namelists/jules_irrig.nml.html#JULES_IRRIG::irr_crop values=0,1,2 +[namelist:jules_irrig=irrig_option] +compulsory=true +description=Options for applying irrigation + =0: No irrigation + =1: In a future release this will replace l_irrig_dmd (NOT AVAILABLE YET) + =2: Apply irrigation to available irrigated surface types +fail-if=this == 2 and namelist:jules_soil=l_tile_soil == '.true.'; # Tile-based irrigation is not available with soil tiling. +sort-key=b +trigger=namelist:jules_pftparm=irrig_pft_io: 2; + =namelist:jules_surface_types=c3_irrig: 2; + =namelist:jules_surface_types=c4_irrig: 2; +url=https://metoffice.github.io/jules/latest/namelists/jules_irrig.nml.html#JULES_IRRIG::irrig_option +value-titles=No Irrigation, Tile based irrigation +values=0,2 + [namelist:jules_irrig=irrigtiles] compulsory=true description=indices of tiles to be irrigated @@ -2617,7 +2635,7 @@ url=https://metoffice.github.io/jules/latest/namelists/jules_irrig.nml.html#JULE [namelist:jules_irrig=l_irrig_dmd] compulsory=true -description=Use irrigation demand model +description=Use fraction-based irrigation demand code fail-if=namelist:jules_soil=l_holdwater == '.true.' and this == '.true.'; # Irrigation can't be used with l_holdwater = TRUE =namelist:jules_water_resources=l_water_irrigation == '.true.' and this == '.false.'; # Irrigation in water resources code requires l_irrig_dmd = TRUE sort-key=a @@ -2627,6 +2645,7 @@ trigger=namelist:jules_irrig=irr_crop: .true.; =namelist:jules_irrig=set_irrfrac_on_irrtiles: .true.; =namelist:jules_irrig=nstep_irrig: .true.; =namelist:jules_irrig_props: .true.; + =namelist:jules_irrig=irrig_option: .false.; type=logical url=https://metoffice.github.io/jules/latest/namelists/jules_irrig.nml.html#JULES_IRRIG::l_irrig_dmd @@ -2733,6 +2752,14 @@ sort-key=1 type=character url=https://metoffice.github.io/jules/latest/namelists/model_grid.nml.html#JULES_LAND_FRAC::file +[namelist:jules_land_frac=l_use_land_fraction] +compulsory=true +description=Use land fractions and pass these to river routing +fail-if=this == '.true.' and ( namelist:jules_rivers=i_river_vn != 3 or namelist:jules_model_environment=lsm_id != 3 ); # Land fractions are only used by TRIP in Rivers-standalone to determine coastal endorheic basins. +sort-key=3 +type=logical +url=https://metoffice.github.io/jules/latest/namelists/model_grid.nml.html#JULES_LAND_FRAC::l_use_land_fraction + [namelist:jules_land_frac=land_frac_name] description=Name of the variable containing the land fraction data sort-key=2 @@ -3067,6 +3094,7 @@ description=Names of variables to output, as recognised by JULES # See: https://github.com/metomi/rose/issues/2731 fail-if=len(this) != namelist:jules_output_profile=nvars; =any(namelist:jules_output_profile=var == "'outflow_per_river'") and not any(namelist:jules_rivers_props=var == "'rivers_outflow_number'"); # outflow_per_river requires the rivers outflow numbers ancillary data + =any(namelist:jules_output_profile=var == "'inland_outflow_rp'") and ( namelist:jules_rivers=i_river_vn != 3 or namelist:jules_model_environment=lsm_id != 3 ); # Inland outflow calculation can only be used with TRIP Rivers-standalone length=: sort-key=11 type=character @@ -3247,204 +3275,71 @@ sort-key=5 type=character url=https://metoffice.github.io/jules/latest/namelists/ancillaries.nml.html#JULES_PDM::var_name -#[namelist:jules_pftparm] has moved to jules-shared/jules-pftparm [namelist:jules_pftparm=a_wl_io] -compulsory=true -description=Allometric coefficient relating the target woody biomass to the leaf area index (kg carbon m-2) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::a_wl_io [namelist:jules_pftparm=a_ws_io] -compulsory=true -description=Woody biomass as a multiple of live stem biomass -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::a_ws_io [namelist:jules_pftparm=act_jmax_io] -compulsory=true -description=Activation energy for temperature response of Jmax -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO20b -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::act_jmax_io [namelist:jules_pftparm=act_vcmax_io] -compulsory=true -description=Activation energy for temperature response of Vcmax -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO20b -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::act_vcmax_io [namelist:jules_pftparm=aef_io] -compulsory=true -description=Acetone emission factor per PFT (µgC g-1 h-1) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO10 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::aef_io + +[namelist:jules_pftparm=albsnc_max_io] +length=: [namelist:jules_pftparm=albsnc_min_io] -compulsory=true -description=Snow-covered albedo for zero LAI -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::albsnc_min_io [namelist:jules_pftparm=albsnf_max_io] -compulsory=true -description=Snow-free albedo for large LAI -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::albsnf_max_io [namelist:jules_pftparm=albsnf_maxl_io] -compulsory=true -description=Lower limit on albsnf_max_io -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::albsnf_maxl_io [namelist:jules_pftparm=albsnf_maxu_io] -compulsory=true -description=Upper limit on albsnf_max_io -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::albsnf_maxu_io + +[namelist:jules_pftparm=alnir_io] +length=: [namelist:jules_pftparm=alnirl_io] -compulsory=true -description=Lower limit on alnir_io -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alnirl_io [namelist:jules_pftparm=alniru_io] -compulsory=true -description=Upper limit on alnir_io -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alniru_io + +[namelist:jules_pftparm=alpar_io] +length=: [namelist:jules_pftparm=alparl_io] -compulsory=true -description=Lower limit on alpar_io -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -sort-key=Panel-HR03 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alparl_io [namelist:jules_pftparm=alparu_io] -compulsory=true -description=Upper limit on alpar_io -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alparu_io [namelist:jules_pftparm=alpha_elec_io] -compulsory=true -description=Quantum yield of electron transport (mol electrons/mol PAR photons) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO20 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alpha_elec_io [namelist:jules_pftparm=alpha_io] -compulsory=true -description=Quantum efficiency of photosynthesis (mol CO2/mol PAR photons) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::alpha_io [namelist:jules_pftparm=avg_ba_io] -compulsory=true -description=Average burnt area on PFTs per fire event (fraction) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO16 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::avg_ba_io [namelist:jules_pftparm=b_wl_io] -compulsory=true -description=Allometric exponent relating the target woody biomass to the leaf area index -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::b_wl_io [namelist:jules_pftparm=c3_io] -compulsory=true -description=Flag indicating whether PFT is C3 type -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO03 -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::c3_io -value-titles=Not C3,C3 -values=0,1 [namelist:jules_pftparm=can_struct_a_io] -compulsory=true -description=Canopy structure factor (1.0 is structurally homogeneous). -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -sort-key=Panel-HR02 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::can_struct_a_io [namelist:jules_pftparm=canht_ft_io] fail-if=len(this) != namelist:jules_surface_types=npft @@ -3454,515 +3349,179 @@ sort-key=Panel-HO01 type=real url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::canht_ft_io +[namelist:jules_pftparm=catch0_io] +length=: + [namelist:jules_pftparm=ccleaf_max_io] -compulsory=true -description=Leaf maximum combustion completeness -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO16 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::ccleaf_max_io [namelist:jules_pftparm=ccleaf_min_io] -compulsory=true -description=Leaf minimum combustion completeness -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO16 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::ccleaf_min_io [namelist:jules_pftparm=ccwood_max_io] -compulsory=true -description=Wood maximum combustion completeness -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO16 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::ccwood_max_io [namelist:jules_pftparm=ccwood_min_io] -compulsory=true -description=Wood minimum combustion completeness -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO16 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::ccwood_min_io [namelist:jules_pftparm=ci_st_io] -compulsory=true -description=Leaf-internal CO2 concentration (Pa) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO10 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::ci_st_io + +[namelist:jules_pftparm=dcatch_dlai_io] +length=: [namelist:jules_pftparm=deact_jmax_io] -compulsory=true -description=Deactivation energy for temperature response of Jmax -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO20 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::deact_jmax_io [namelist:jules_pftparm=deact_vcmax_io] -compulsory=true -description=Deactivation energy for temperature response of Vcmax -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO20 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::deact_vcmax_io [namelist:jules_pftparm=dfp_dcuo_io] -compulsory=true -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO11 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::dfp_dcuo_io [namelist:jules_pftparm=dgl_dm_io] -compulsory=true -description=Rate of change of leaf turnover rate with moisture availability -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::dgl_dm_io [namelist:jules_pftparm=dgl_dt_io] -compulsory=true -description=Rate of change of leaf turnover rate with temperature (K-1) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::dgl_dt_io [namelist:jules_pftparm=dqcrit_io] -compulsory=true -description=Critical humidity deficit (kg H2O per kg air) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO21a -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::dqcrit_io [namelist:jules_pftparm=ds_jmax_io] -compulsory=true -description=Entropy factor for temperature response of Jmax -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO20a -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::ds_jmax_io [namelist:jules_pftparm=ds_vcmax_io] -compulsory=true -description=Entropy factor for temperature response of Vcmax -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO20a -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::ds_vcmax_io [namelist:jules_pftparm=dust_veg_scj_io] -compulsory=true -description=Dust emissions scaling factor for each pft type - =NOT APPLICABLE TO STANDALONE -fail-if=len(this) != namelist:jules_surface_types=npft -help=This is applied when dust_veg_emiss is non-zero and - =allows the dust emission from different plant functional - =types to be reduced/switched off. length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -range=0: -sort-key=Panel-HOX -type=real [namelist:jules_pftparm=dz0v_dh_io] -compulsory=true -description=Rate of change of vegetation roughness length for momentum with height -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::dz0v_dh_io [namelist:jules_pftparm=emis_pft_io] -compulsory=true -description=Surface emissivity -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR04 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::emis_pft_io [namelist:jules_pftparm=eta_sl_io] -compulsory=true -description=Live stemwood coefficient (kg C/m/LAI) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::eta_sl_io [namelist:jules_pftparm=f0_io] -compulsory=true -description=CI / CA for DQ = 0 -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO21a -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::f0_io [namelist:jules_pftparm=fd_io] -compulsory=true -description=Scale factor for dark respiration -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fd_io [namelist:jules_pftparm=fef_bc_io] -compulsory=true -description=Black carbon (BC) emission factor from natural fires (INFERNO) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -range=0: -sort-key=Panel-HO16 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_bc_io [namelist:jules_pftparm=fef_c2h4_io] -compulsory=true -description=Ethene (C2H4) emission factor from natural fires (INFERNO) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -range=0: -sort-key=Panel-HO16 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_c2h4_io [namelist:jules_pftparm=fef_c2h6_io] -compulsory=true -description=Ethane (C2H6) emission factor from natural fires (INFERNO) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -range=0: -sort-key=Panel-HO16 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_c2h6_io [namelist:jules_pftparm=fef_c3h8_io] -compulsory=true -description=Propane (C3H8) emission factor from natural fires (INFERNO) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -range=0: -sort-key=Panel-HO16 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_c3h8_io [namelist:jules_pftparm=fef_ch4_io] -compulsory=true -description=Methane (CH4) emission factor from natural fires (INFERNO) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -range=0: -sort-key=Panel-HO16 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_ch4_io [namelist:jules_pftparm=fef_co2_io] -compulsory=true -description=Carbon dioxide (CO2) emission factor from natural fires (INFERNO) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -range=0: -sort-key=Panel-HO16 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_co2_io [namelist:jules_pftparm=fef_co_io] -compulsory=true -description=Carbon monoxide (CO) emission factor from natural fires (INFERNO) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -range=0: -sort-key=Panel-HO16 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_co_io [namelist:jules_pftparm=fef_dms_io] -compulsory=true -description=Dimethyl sulfide (DMS) emission factor from natural fires (INFERNO) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -range=0: -sort-key=Panel-HO16 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_dms_io [namelist:jules_pftparm=fef_hcho_io] -compulsory=true -description=Formaldehyde (HCHO) emission factor from natural fires (INFERNO) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -range=0: -sort-key=Panel-HO16 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_hcho_io [namelist:jules_pftparm=fef_mecho_io] -compulsory=true -description=Acetaldehyde (MeCHO) emission factor from natural fires (INFERNO) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -range=0: -sort-key=Panel-HO16 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_mecho_io [namelist:jules_pftparm=fef_nh3_io] -compulsory=true -description=Ammonia (NH3) emission factor from natural fires (INFERNO) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -range=0: -sort-key=Panel-HO16 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_nh3_io [namelist:jules_pftparm=fef_nox_io] -compulsory=true -description=Nitrogen oxides (NOx) emission factor from natural fires (INFERNO) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -range=0: -sort-key=Panel-HO16 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_nox_io [namelist:jules_pftparm=fef_oc_io] -compulsory=true -description=Organic carbon (OC) emission factor from natural fires (INFERNO) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -range=0: -sort-key=Panel-HO16 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_oc_io [namelist:jules_pftparm=fef_so2_io] -compulsory=true -description=Sulphur dioxide (SO2) emission factor from natural fires (INFERNO) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -range=0: -sort-key=Panel-HO16 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fef_so2_io [namelist:jules_pftparm=fire_mort_io] -compulsory=true -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -range=0:1 -sort-key=Panel-HO16 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fire_mort_io [namelist:jules_pftparm=fl_o3_ct_io] -compulsory=true -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO11 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fl_o3_ct_io [namelist:jules_pftparm=fsmc_mod_io] -compulsory=true -description=Switch for method of weighting the contribution that different soil layers make to the soil moisture - =availability factor fsmc -fail-if=len(this) != namelist:jules_surface_types=npft; - =namelist:jules_soil_biogeochem=l_layeredc == '.true.' and namelist:jules_soil_biogeochem=soil_bgc_model == '2' and any(this == 1); # fsmc_mod=1 cannot be used with layered 4-pool soil C model length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fsmc_mod_io -value-titles=weight water stress in layers by root fraction, use average root zone properties -values=0,1 [namelist:jules_pftparm=fsmc_of_io] -compulsory=true -description=Moisture availability below which leaves are dropped -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::fsmc_of_io + +[namelist:jules_pftparm=fsmc_p0_io] +length=: [namelist:jules_pftparm=g1_stomata_io] -compulsory=true -description=Parameter g1 of the Medlyn et al. (2011) model of stomatal conductance. -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO21b -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::g1_stomata_io [namelist:jules_pftparm=g_leaf_0_io] -compulsory=true -description=Minimum turnover rate for leaves (/360days) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::g_leaf_0_io [namelist:jules_pftparm=glmin_io] -compulsory=true -description=Minimum leaf conductance for H2O (m s-1) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::glmin_io [namelist:jules_pftparm=gpp_st_io] -compulsory=true -description=Gross primary production (GPP) at standard conditions (kgC m-2 s-1 ) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO10 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::gpp_st_io [namelist:jules_pftparm=gsoil_f_io] -compulsory=true -description=Soil evaporation enhancement factor -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::gsoil_f_io [namelist:jules_pftparm=hw_sw_io] -compulsory=true -description=Ratio of N in heartwood:stemwood with trait physiology. -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO07 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::hw_sw_io [namelist:jules_pftparm=ief_io] -compulsory=true -description=Isoprene emission factor per PFT (µgC g-1 h-1) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO10 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::ief_io [namelist:jules_pftparm=infil_f_io] +length=: + +[namelist:jules_pftparm=irrig_pft_io] compulsory=true -description=Infiltration enhancement factor +description=Flag indicating whether the pft is irrigated fail-if=len(this) != namelist:jules_surface_types=npft + =any(this > 0) and namelist:jules_model_environment=l_jules_parent == 1 ; # Tile-based irrigation scheme is not available in UM + =all(this == 0) length=: ns=namelist/JULES Science Settings/jules_pftparm/Other parameters sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::infil_f_io +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::irrig_pft_io +values=0,1 [namelist:jules_pftparm=jv25_ratio_io] -compulsory=true -description=Ratio of Jmax to Vcmax at 25 degC. -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO20 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::jv25_ratio_io + +[namelist:jules_pftparm=kext_io] +length=: [namelist:jules_pftparm=kn_io] -compulsory=true -description=Decay of nitrogen through the canopy for canopy radiation models 4-5 -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::kn_io + +[namelist:jules_pftparm=knl_io] +length=: [namelist:jules_pftparm=kpar_io] -compulsory=true -description=PAR Extinction coefficient (m2 leaf / m2 ground) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::kpar_io [namelist:jules_pftparm=lai_alb_lim_io] -compulsory=true -description=Minimum LAI for plant canopies in the absence of snow. -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -sort-key=Panel-HR02 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::lai_alb_lim_io [namelist:jules_pftparm=lai_io] fail-if=len(this) != namelist:jules_surface_types=npft @@ -3973,333 +3532,115 @@ type=real url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::lai_io [namelist:jules_pftparm=lma_io] -compulsory=true -description=Leaf mass per unit area (kgLeaf m-2) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO07 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::lma_io [namelist:jules_pftparm=mef_io] -compulsory=true -description=Methanol emission factor per PFT (µgC g-1 h-1) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO10 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::mef_io [namelist:jules_pftparm=neff_io] -compulsory=true -description=Scale factor relating Vcmax with leaf nitrogen concentration -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::neff_io [namelist:jules_pftparm=nl0_io] -compulsory=true -description=Top leaf nitrogen concentration (kg N/kg C) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::nl0_io [namelist:jules_pftparm=nmass_io] -compulsory=true -description=Top leaf nitrogen content per unit mass (kgN kgLeaf-1) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO07 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::nmass_io [namelist:jules_pftparm=nr_io] -compulsory=true -description=Root nitrogen concentration with trait physiology -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO07 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::nr_io [namelist:jules_pftparm=nr_nl_io] -compulsory=true -description=Ratio of root nitrogen concentration to leaf nitrogen concentration -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::nr_nl_io [namelist:jules_pftparm=ns_nl_io] -compulsory=true -description=Ratio of stem nitrogen concentration to leaf nitrogen concentration -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::ns_nl_io [namelist:jules_pftparm=nsw_io] -compulsory=true -description=Stemwood nitrogen concentration with trait physiology. -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO07 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::nsw_io + +[namelist:jules_pftparm=omega_io] +length=: [namelist:jules_pftparm=omegal_io] -compulsory=true -description=Lower limit on omega_io -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omegal_io [namelist:jules_pftparm=omegau_io] -compulsory=true -description=Upper limit on omega_io(kgLeaf m-2) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omegau_io + +[namelist:jules_pftparm=omnir_io] +length=: [namelist:jules_pftparm=omnirl_io] -compulsory=true -description=Lower limit on omnir_io -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omnirl_io [namelist:jules_pftparm=omniru_io] -compulsory=true -description=Upper limit on omnir_io -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -range=0:1 -sort-key=Panel-HR03 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::omniru_io [namelist:jules_pftparm=orient_io] -compulsory=true -description=Flag indicating leaf angle distribution -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Radiation parameters -sort-key=Panel-HR01 -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::orient_io -value-titles=Spherical,Horizontal -values=0,1 + +[namelist:jules_pftparm=pft_name_io] +length=: [namelist:jules_pftparm=psi_close_io] -compulsory=true -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO19 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::psi_close_io [namelist:jules_pftparm=psi_open_io] -compulsory=true -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO19 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::psi_open_io [namelist:jules_pftparm=q10_leaf_io] -compulsory=true -description=Q10 factor for plant respiration -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::q10_leaf_io [namelist:jules_pftparm=r_grow_io] -compulsory=true -description=Growth respiration fraction -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::r_grow_io [namelist:jules_pftparm=rootd_ft_io] -compulsory=true -description=Root depth (m) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::rootd_ft_io [namelist:jules_pftparm=sigl_io] -compulsory=true -description=Specific density of leaf carbon (kg C/m2 leaf) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::sigl_io [namelist:jules_pftparm=sox_a_io] -compulsory=true -description=The shape parameter in the xylem vulnerability curve -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO21c -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::sox_a_io [namelist:jules_pftparm=sox_p50_io] -compulsory=true -description=Xylem water potential at which xylem hydraulic conductance is half its maximum value. (MPa) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO21c -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::sox_p50_io [namelist:jules_pftparm=sox_rp_min_io] -compulsory=true -description=Plant minimum hydraulic resistance. (m2 s MPa/mol) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO21c -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::sox_rp_min_io [namelist:jules_pftparm=sug_g0_io] -compulsory=true -description=Specific structural carbon production rate (kgC m-2 s-1) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO22 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::sug_g0_io [namelist:jules_pftparm=sug_grec_io] -compulsory=true -description=Specific structural carbon recycling rate (kgC m-2 s-1) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO22 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::sug_grec_io [namelist:jules_pftparm=sug_yg_io] -compulsory=true -description=Growth yield for SUGAR model -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO22 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::sug_yg_io [namelist:jules_pftparm=tef_io] -compulsory=true -description=(Mono-)Terpene emission factor per PFT (µgC g-1 h-1) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO10 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::tef_io [namelist:jules_pftparm=tleaf_of_io] -compulsory=true -description=Temperature below which leaves are dropped (K) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::tleaf_of_io [namelist:jules_pftparm=tlow_io] -compulsory=true -description=Lower temperature for photosynthesis (deg C) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::tlow_io [namelist:jules_pftparm=tupp_io] -compulsory=true -description=Upper temperature for photosynthesis (deg C) -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO05 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::tupp_io [namelist:jules_pftparm=vint_io] -compulsory=true -description=Intercept in VCMAX and NAREA -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO07 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::vint_io [namelist:jules_pftparm=vsl_io] -compulsory=true -description=Slope in VCMAX and NAREA -fail-if=len(this) != namelist:jules_surface_types=npft length=: -ns=namelist/JULES Science Settings/jules_pftparm/Other parameters -sort-key=Panel-HO07 -type=real -url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::vsl_io [namelist:jules_pftparm=z0hm_classic_pft_io] compulsory=true description=Ratio of the roughness length for heat to the roughness length for momentum for the CLASSIC aerosol =scheme only - =NOT APPLICABLE TO STANDALONE + =NOT APPLICABLE TO STANDALONE OR LFRIC (l_aero_classic) fail-if=len(this) != namelist:jules_surface_types=npft length=: ns=namelist/JULES Science Settings/jules_pftparm/Other parameters @@ -4307,6 +3648,12 @@ sort-key=Panel-HOX type=real url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::z0hm_classic_pft_io +[namelist:jules_pftparm=z0hm_pft_io] +length=: + +[namelist:jules_pftparm=z0v_io] +length=: + [namelist:jules_prescribed] compulsory=true ns=namelist/Prescribed data @@ -4512,23 +3859,6 @@ trigger=namelist:jules_snow=r0: .true.; type=logical url=https://metoffice.github.io/jules/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_snow_albedo -[namelist:jules_radiation=l_spec_albedo] -compulsory=true -description=Include spectral land-surface albedos -sort-key=Panel-B02 -trigger=namelist:jules_radiation=l_spec_alb_bs: .true.; - =namelist:jules_radiation=l_niso_direct: .true.; - =namelist:jules_pftparm=albsnf_max_io: .false.; - =namelist:jules_radiation=l_embedded_snow: .true.; -# =namelist:jules_radiation=l_snow_albedo: .true.; # Remove l_snow_albedo as triggers albsnc to be ignored too. So will need to rely on fail-if and code checks. -# Removed triggers for alpar_io, alnir_io, omega_io & omnir_io as these actually appear to be required unless can_rad_mod=1 and l_spec_albedo=F. -# =namelist:jules_pftparm=alpar_io: .true.; -# =namelist:jules_pftparm=alnir_io: .true.; -# =namelist:jules_pftparm=omega_io: .true.; -# =namelist:jules_pftparm=omnir_io: .true.; -type=logical -url=https://metoffice.github.io/jules/latest/namelists/jules_radiation.nml.html#JULES_RADIATION::l_spec_albedo - [namelist:jules_radiation=l_spec_sea_alb] compulsory=true description=Use spectrally varying open sea albedos @@ -4746,17 +4076,6 @@ value-titles=RFM,TRIP values=2,3 widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget -[namelist:jules_rivers=l_inland] -compulsory=true -description=Re-routing inland basin water back to soil moisture -help=Selecting 'Re-routing inland basin water back to soil moisture' is only - =applicable to the global river routing scheme 1A and fixes a bug where - =water from inland outflow points was previously 'lost' to the system on - =regridding. The re-routed water is held over until the next timestep - =and added to the change in top-level soil moisture. -sort-key=aa2 -type=logical - [namelist:jules_rivers=l_riv_overbank] compulsory=true description=Enable overbank inundation @@ -4772,7 +4091,6 @@ description=Enable river routing sort-key=a trigger=namelist:jules_rivers=i_river_vn: .true.; = namelist:jules_rivers=nstep_rivers: .true.; - = namelist:jules_rivers=l_inland: .true.; = namelist:jules_rivers=l_riv_overbank: .true.; = namelist:jules_overbank: .true.; = namelist:jules_rivers_props: .true.; @@ -4942,6 +4260,7 @@ url=https://metoffice.github.io/jules/latest/namelists/ancillaries.nml.html#JULE [namelist:jules_rivers_props=nx_rivers] compulsory=true description=Size of the x dimension of the river routing grid +fail-if=this != namelist:jules_input_grid=nx and namelist:jules_land_frac=l_use_land_fraction == '.true.'; # If using land fractions for rivers then the input grid needs to be the same as the rivers grid so that the land fractions are copied across to the rivers grid correctly range=2: sort-key=07 type=integer @@ -4958,6 +4277,7 @@ url=https://metoffice.github.io/jules/latest/namelists/ancillaries.nml.html#JULE [namelist:jules_rivers_props=ny_rivers] compulsory=true description=Size of the y dimension of the river routing grid +fail-if=this != namelist:jules_input_grid=ny and namelist:jules_land_frac=l_use_land_fraction == '.true.'; # If using land fractions for rivers then the input grid needs to be the same as the rivers grid so that the land fractions are copied across to the rivers grid correctly range=2: sort-key=08 type=integer @@ -5528,6 +4848,16 @@ sort-key=2e type=real url=https://metoffice.github.io/jules/latest/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::const_ch4_resps +[namelist:jules_soil_biogeochem=cs_decomp_soil_moist_func] +compulsory=true +description=Switch for moisture function for soil decomposition +sort-key=m1 +trigger=namelist:jules_soil_biogeochem=fsthsat_cs_decomp_opt1: 1; +url=https://metoffice.github.io/jules/latest/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::cs_decomp_soil_moist_func +value-titles=Clark (2011) function, Modified Chadburn (2022) function +values=0,1 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + [namelist:jules_soil_biogeochem=cue_ch4] compulsory=true description=Carbon use efficiency of methanogenic growth @@ -5560,6 +4890,22 @@ sort-key=8h type=real url=https://metoffice.github.io/jules/latest/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::frz_ch4 +[namelist:jules_soil_biogeochem=fsthsat_cs_decomp_opt1] +compulsory=true +description=Soil decomposition factor when soil is saturated (proportion of maximum) +range=0.0:1.0 +sort-key=m1a +type=real +url=https://metoffice.github.io/jules/latest/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::fsthsat_cs_decomp_opt1 + +[namelist:jules_soil_biogeochem=heat_of_respiration] +compulsory=true +description=The heat released during respiration (J/kg C) +range=0: +sort-key=c1a +type=real +url=https://metoffice.github.io/jules/latest/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::heat_of_respiration + [namelist:jules_soil_biogeochem=k2_ch4] compulsory=true description=Scale factor for methanogenic respiration rate (hr-1) @@ -5593,6 +4939,16 @@ sort-key=8c type=real url=https://metoffice.github.io/jules/latest/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::kd_ch4 +[namelist:jules_soil_biogeochem=l_bgc_heat] +compulsory=true +description=Switch for release of biogeochemical heat into the soil. + =Not available to the UM. +fail-if=this == '.true.' and namelist:jules_model_environment=l_jules_parent == 1; #Biogenic heating scheme is not available to the UM +sort-key=c1 +trigger=namelist:jules_soil_biogeochem=heat_of_respiration: .true.; +type=logical +url=https://metoffice.github.io/jules/latest/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::l_bgc_heat + [namelist:jules_soil_biogeochem=l_ch4_interactive] compulsory=true description=Switch on interactive methane @@ -5659,6 +5015,7 @@ sort-key=c url=https://metoffice.github.io/jules/latest/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::l_q10 value-titles=Q10 temperature function,Clark et al. (2011) temperature function values=.true.,.false. +warn-if=this == '.false.' and namelist:jules_soil_biogeochem=l_bgc_heat == '.true.' widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget [namelist:jules_soil_biogeochem=l_soil_resp_lev2] @@ -5752,6 +5109,7 @@ sort-key=a trigger=namelist:jules_soil_biogeochem=l_q10: 1, 2; =namelist:jules_soil_biogeochem=q10_soil: 1, 2, 3; =namelist:jules_soil_biogeochem=l_soil_resp_lev2: 1, 2; + =namelist:jules_soil_biogeochem=cs_decomp_soil_moist_func: 1, 2; =namelist:jules_soil_biogeochem=kaps: 1; =namelist:jules_soil_biogeochem=kaps_4pool: 2; =namelist:jules_soil_biogeochem=sorp: 2; @@ -6427,6 +5785,15 @@ sort-key=Panel-A3b type=integer url=https://metoffice.github.io/jules/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c3_crop +[namelist:jules_surface_types=c3_irrig] +compulsory=true +description=Pseudo level of C3 irrig PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A3d +type=integer +url=https://metoffice.github.io/jules/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c3_irrig + [namelist:jules_surface_types=c3_pasture] description=Pseudo level of C3 pasture PFT fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft @@ -6443,6 +5810,15 @@ sort-key=Panel-A4b type=integer url=https://metoffice.github.io/jules/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c4_crop +[namelist:jules_surface_types=c4_irrig] +compulsory=true +description=Pseudo level of C4 irrig PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A4d +type=integer +url=https://metoffice.github.io/jules/latest/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c4_irrig + [namelist:jules_surface_types=c4_pasture] description=Pseudo level of C4 pasture PFT fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft @@ -7127,19 +6503,6 @@ trigger=namelist:jules_triffid=ag_expand_io: .true.; type=logical url=https://metoffice.github.io/jules/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_ag_expand -[namelist:jules_vegetation=l_bvoc_emis] -compulsory=true -description=Calculate BVOC emissions -sort-key=Panel-I10 -trigger=namelist:jules_pftparm=ief_io: .true.; - =namelist:jules_pftparm=tef_io: .true.; - =namelist:jules_pftparm=mef_io: .true.; - =namelist:jules_pftparm=aef_io: .true.; - =namelist:jules_pftparm=ci_st_io: .true.; - =namelist:jules_pftparm=gpp_st_io: .true.; -type=logical -url=https://metoffice.github.io/jules/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_bvoc_emis - [namelist:jules_vegetation=l_croprotate] compulsory=true description=Switch to allow double cropping in JULES @@ -7164,34 +6527,6 @@ sort-key=Panel-I02c type=logical url=https://metoffice.github.io/jules/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_ht_compete -[namelist:jules_vegetation=l_inferno] -compulsory=true -description=Use the INFERNO interactive fire and diagnostic emissions model -sort-key=Panel-I16 -trigger=namelist:jules_vegetation=ignition_method: .true.; - =namelist:jules_vegetation=l_trif_fire: .true.; - =namelist:jules_pftparm=avg_ba_io: .true.; - =namelist:jules_pftparm=ccleaf_min_io: .true.; - =namelist:jules_pftparm=ccleaf_max_io: .true.; - =namelist:jules_pftparm=ccwood_min_io: .true.; - =namelist:jules_pftparm=ccwood_max_io: .true.; - =namelist:jules_pftparm=fef_bc_io: .true.; - =namelist:jules_pftparm=fef_ch4_io: .true.; - =namelist:jules_pftparm=fef_co2_io: .true.; - =namelist:jules_pftparm=fef_co_io: .true.; - =namelist:jules_pftparm=fef_nox_io: .true.; - =namelist:jules_pftparm=fef_oc_io: .true.; - =namelist:jules_pftparm=fef_so2_io: .true.; - =namelist:jules_pftparm=fef_c2h4_io: .true.; - =namelist:jules_pftparm=fef_c2h6_io: .true.; - =namelist:jules_pftparm=fef_c3h8_io: .true.; - =namelist:jules_pftparm=fef_hcho_io: .true.; - =namelist:jules_pftparm=fef_mecho_io: .true.; - =namelist:jules_pftparm=fef_nh3_io: .true.; - =namelist:jules_pftparm=fef_dms_io: .true.; -type=logical -url=https://metoffice.github.io/jules/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_inferno - [namelist:jules_vegetation=l_landuse] compulsory=true description=Switch for using landuse change in conjunction with TRIFFID @@ -7222,16 +6557,6 @@ description=Start an NRUN mid way through a TRIFFID calling period sort-key=Panel-I02c type=logical -[namelist:jules_vegetation=l_o3_damage] -compulsory=true -description=Use ozone damage for vegetation - =NOT AVAILABLE TO UM -sort-key=Panel-I11 -trigger=namelist:jules_pftparm=dfp_dcuo_io: .true.; - =namelist:jules_pftparm=fl_o3_ct_io: .true.; -type=logical -url=https://metoffice.github.io/jules/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_o3_damage - [namelist:jules_vegetation=l_phenol] compulsory=true description=Include leaf phenology @@ -7301,18 +6626,6 @@ sort-key=Panel-I06 type=logical url=https://metoffice.github.io/jules/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_stem_resp_fix -[namelist:jules_vegetation=l_sugar] -compulsory=true -description=Switch for using the SUGAR carbohydrate model to - = calculate respiration -fail-if=this == '.true.' and namelist:jules_model_environment=l_jules_parent == 1; # SUGAR is not available to the UM. -sort-key=Panel-I22 -trigger=namelist:jules_pftparm=sug_g0_io: .true.; - =namelist:jules_pftparm=sug_grec_io: .true.; - =namelist:jules_pftparm=sug_yg_io: .true.; -type=logical -url=https://metoffice.github.io/jules/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_sugar - [namelist:jules_vegetation=l_trait_phys] compulsory=true description=Switch for using trait-based physiology. @@ -7360,15 +6673,6 @@ sort-key=Panel-I02c type=logical url=https://metoffice.github.io/jules/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_trif_eq -[namelist:jules_vegetation=l_trif_fire] -compulsory=true -description=Use interactive fire linked to INFERNO including interactive fire emissions. -fail-if=this == '.true.' and (namelist:jules_vegetation=l_trif_eq == '.true.'); -sort-key=Panel-I02c -trigger=namelist:jules_pftparm=fire_mort_io: .true. -type=logical -url=https://metoffice.github.io/jules/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_trif_fire - [namelist:jules_vegetation=l_trif_init_accum] compulsory=true description=Start a NRUN resetting accumulated Carbon fluxes to zero @@ -7405,16 +6709,6 @@ trigger=namelist:jules_vegetation=l_nrun_mid_trif: .true.; type=logical url=https://metoffice.github.io/jules/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_triffid -[namelist:jules_vegetation=l_use_pft_psi] -compulsory=true -description=Use psi_open_io and psi_close_io to calculate the soil moisture stress function on vegetation. - =NOT AVAILABLE TO THE UM -sort-key=Panel-I19 -trigger=namelist:jules_pftparm=psi_close_io: .true.; - =namelist:jules_pftparm=psi_open_io: .true.; -type=logical -url=https://metoffice.github.io/jules/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_use_pft_psi - [namelist:jules_vegetation=l_veg_compete] compulsory=true description=Use competing vegetation @@ -7514,24 +6808,6 @@ value-titles=Jmax only, total N constant values=1,2 widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget -[namelist:jules_vegetation=photo_model] -compulsory=true -description=Choice of photosynthesis model for C3 plants -fail-if=this == 2 and ( namelist:jules_vegetation=can_rad_mod != 1 and namelist:jules_vegetation=can_rad_mod != 5 and namelist:jules_vegetation=can_rad_mod != 6) - =this == 3 and (namelist:jules_vegetation=stomata_model != 3) -sort-key=Panel-I20 -trigger=namelist:jules_pftparm=alpha_elec_io: 2; - =namelist:jules_pftparm=deact_jmax_io: 2; - =namelist:jules_pftparm=deact_vcmax_io: 2; - =namelist:jules_pftparm=jv25_ratio_io: 2; - =namelist:jules_vegetation=photo_acclim_model: 2; - =namelist:jules_vegetation=photo_act_model: 2; - =namelist:jules_vegetation=photo_jv_model: 2; -url=https://metoffice.github.io/jules/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::photo_model -value-titles=Collatz, Farquhar, SOX Collatz -values=1,2,3 -widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget - [namelist:jules_vegetation=pow] compulsory=true description=Power in sigmodial function used to get competition coefficients @@ -7547,29 +6823,6 @@ sort-key=Panel-I09a1 type=real url=https://metoffice.github.io/jules/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::stanton_leaf -[namelist:jules_vegetation=stomata_model] -compulsory=true -description=Choice of stomatal conductance model -fail-if=this == 3 and namelist:jules_vegetation=l_scale_resp_pm =='.true.'; - = this == 3 and not any(namelist:jules_pftparm=fsmc_mod_io == 1); - = this == 3 and not namelist:jules_vegetation=can_rad_mod == 1; - = this == 3 and namelist:jules_model_environment=l_jules_parent == 1 -# l_scale_resp_pm=T is incompatible with SOX (stomata_model=3) -# SOX (stomata_model=3) must be used with fsmc_mod = 1 -# SOX (stomata_model=3) must be used with can_rad_mod = 1 -# SOX cannot currently be used with the UM -sort-key=Panel-I21 -trigger=namelist:jules_pftparm=dqcrit_io: 1; - =namelist:jules_pftparm=f0_io: 1; - =namelist:jules_pftparm=g1_stomata_io: 2; - =namelist:jules_pftparm=sox_a_io: 3; - =namelist:jules_pftparm=sox_p50_io: 3; - =namelist:jules_pftparm=sox_rp_min_io: 3; -url=https://metoffice.github.io/jules/latest/namelists/jules_vegetation.nml.html#JULES_VEGETATION::stomata_model -value-titles=Original (Jacobs), Medlyn, SOX -values=1,2,3 -widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget - [namelist:jules_vegetation=triffid_period] compulsory=true description=Update frequency for TRIFFID (days) @@ -7994,7 +7247,7 @@ compulsory=true description=Number of sent fields via OASIS fail-if=this < 0; =this == 0 and namelist:oasis_rivers=np_receive == 0; # Oasis coupling requested but no fields coupled -range=0:1 +range=0:2 sort-key=1 trigger=namelist:oasis_rivers=send_fields: this > 0; =namelist:oasis_rivers=cpl_freq: this >= 0; @@ -8014,13 +7267,13 @@ values='sub_surf_roff_rp','surf_roff_rp','sub_surf_roff','surf_roff' [namelist:oasis_rivers=send_fields] compulsory=true description=List of fields sent via OASIS coupling -fail-if=len(this)>1; +fail-if=len(this)>2; =len(this) != namelist:oasis_rivers=np_send; =any(this == "'outflow_per_river'") and not any(namelist:jules_rivers_props=var == "'rivers_outflow_number'"); # outflow_per_river requires the rivers outflow numbers ancillary data length=: sort-key=2 url=https://metoffice.github.io/jules/latest/namelists/oasis_rivers.nml.html#OASIS_RIVERS::send_fields -values='outflow_per_river' +values='outflow_per_river','inland_outflow' [namelist:run_convection] compulsory=false diff --git a/rose-meta/jules-standalone/version81_82.py b/rose-meta/jules-standalone/version81_82.py new file mode 100644 index 00000000..4d59aaa8 --- /dev/null +++ b/rose-meta/jules-standalone/version81_82.py @@ -0,0 +1,158 @@ +import re +import sys + +if sys.version_info[0] == 2: + from rose.upgrade import MacroUpgrade +else: + from metomi.rose.upgrade import MacroUpgrade + + +class vn81_t70(MacroUpgrade): + + """Upgrade macro from JULES by Eleanor Burke""" + + BEFORE_TAG = "vn8.1" + AFTER_TAG = "vn8.1_t70" + + def upgrade(self, config, meta_config=None): + """Upgrade a JULES runtime app configuration.""" + + """Add cs_decomp_soil_moist_func to namelist jules_soil_biogeochem""" + self.add_setting(config, ["namelist:jules_soil_biogeochem", "cs_decomp_soil_moist_func"], "0") + self.add_setting(config, ["namelist:jules_soil_biogeochem", "fsthsat_cs_decomp_opt1"], "0.2") + + + return config, self.reports + + +class vn81_t41(MacroUpgrade): + + """Upgrade macro from JULES by Maggie Hendry""" + + BEFORE_TAG = "vn8.1_t70" + AFTER_TAG = "vn8.1_t41" + + def upgrade(self, config, meta_config=None): + """Upgrade a JULES runtime app configuration.""" + lsm_id = int( + self.get_setting_value( + config, ["namelist:jules_model_environment", "lsm_id"] + ) + ) + if lsm_id != 3: + npft = int( + self.get_setting_value( + config, ["namelist:jules_surface_types", "npft"] + ) + ) + self.add_setting( + config, + ["namelist:jules_pftparm", "pft_name_io"], + ",".join(["''"] * npft), + ) + + return config, self.reports + + +class vn81_t59(MacroUpgrade): + + """Upgrade macro from JULES by Carolina Duran Rojas""" + + BEFORE_TAG = "vn8.1_t41" + AFTER_TAG = "vn8.1_t59" + + def upgrade(self,config, meta_config=None): + """Upgrade a JULES runtime app configuration.""" + + # Adding logical and real to the jules biogeochemical namelist + self.add_setting(config, + ["namelist:jules_soil_biogeochem", "l_bgc_heat"], ".false.") + self.add_setting(config, + ["namelist:jules_soil_biogeochem", "heat_of_respiration"], "3.9e07") + + return config, self.reports + + +class vn81_t23(MacroUpgrade): + + """ Upgrade macro from JULES by Heather Rumbold """ + + BEFORE_TAG = "vn8.1_t59" + AFTER_TAG = "vn8.1_t23" + + def upgrade(self,config, meta_config=None): + """Upgrade a JULES runtime app configuration.""" + + """ + 1. Add switches to indicate whether a JULES surface tile is irrigated (pft) + 2. Add the surface types, c3_irrig and c4_irrig with a value of zero + """ + lsm_id = int( + self.get_setting_value( + config, ["namelist:jules_model_environment", "lsm_id"] + ) + ) + if lsm_id != 3: + + # Add the pft size + npft = int( + self.get_setting_value(config, ["namelist:jules_surface_types", "npft"]) + ) + + # Add new setting + self.add_setting( + config, + ["namelist:jules_pftparm", "irrig_pft_io"], + ",".join(["0"] * npft), + False, + ) + + self.add_setting(config, ["namelist:jules_surface_types", "c3_irrig"], "0") + self.add_setting(config, ["namelist:jules_surface_types", "c4_irrig"], "0") + self.add_setting(config, ["namelist:jules_irrig", "irrig_option"], "0") + + return config, self.reports + + +class vn81_t34(MacroUpgrade): + """Upgrade macro from JULES #34 by Dan Copsey""" + + BEFORE_TAG = "vn8.1_t23" + AFTER_TAG = "vn8.1_t34" + + def upgrade(self, config, meta_config=None): + """Upgrade a JULES runtime app configuration.""" + + # Move the l_inland switch from the rivers namelist to the hydrology + # namelist. l_inland should always be false as it is only used + # in um-jules and lfric-jules (not jules-standalone). + # Also add l_use_land_fraction as false. + + lsm_id = int( + self.get_setting_value( + config, ["namelist:jules_model_environment", "lsm_id"] + ) + ) + if lsm_id != 3: + self.add_setting( + config, ["namelist:jules_hydrology", "l_inland"], ".false." + ) + self.remove_setting(config, ["namelist:jules_rivers", "l_inland"]) + + self.add_setting( + config, + ["namelist:jules_land_frac", "l_use_land_fraction"], + ".false.", + ) + return config, self.reports + + +class vn81_vn82(MacroUpgrade): + """Version bump macro""" + + BEFORE_TAG = "vn8.1_t34" + AFTER_TAG = "vn8.2" + + def upgrade(self, config, meta_config=None): + # Nothing to do + return config, self.reports diff --git a/rose-meta/jules-standalone/versions.py b/rose-meta/jules-standalone/versions.py index 9ac2041f..1d4c41a9 100644 --- a/rose-meta/jules-standalone/versions.py +++ b/rose-meta/jules-standalone/versions.py @@ -42,6 +42,8 @@ from .version78_79 import * from .version79_80 import * from .version80_81 import * +from .version81_82 import * + class vnYY_txxxx(MacroUpgrade): diff --git a/rose-meta/jules-standalone/vn8.2/lib/python/widget/__init__.py b/rose-meta/jules-standalone/vn8.2/lib/python/widget/__init__.py new file mode 100644 index 00000000..b00d2a1e --- /dev/null +++ b/rose-meta/jules-standalone/vn8.2/lib/python/widget/__init__.py @@ -0,0 +1 @@ +import variable_table \ No newline at end of file diff --git a/rose-meta/jules-standalone/vn8.2/lib/python/widget/cylc8_compat.py b/rose-meta/jules-standalone/vn8.2/lib/python/widget/cylc8_compat.py new file mode 100644 index 00000000..26d25e25 --- /dev/null +++ b/rose-meta/jules-standalone/vn8.2/lib/python/widget/cylc8_compat.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# *****************************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******************************* +""" +This module contains a wrapper around rose.config_editor widgets to allow +Cylc 8 compatability. + +""" + +from __future__ import print_function +import sys + +if sys.version[0] == '2': + from rose.config_editor.valuewidget.combobox import ComboBoxValueWidget + from rose.config_editor.pagewidget.table import PageArrayTable + + class ComboBoxValueWidget(ComboBoxValueWidget): + """ + Standard ComboBoxValueWidget + """ + + class PageArrayTable(PageArrayTable): + """ + Standard PageArrayTable + """ + +else: + print("[WARN] standard rose edit widgets ignored in Python 3", file=sys.stderr) + + class ComboBoxValueWidget(): + """ + Dummy ComboBoxValueWidget + """ + + class PageArrayTable(): + """ + Dummy PageArrayTable + """ diff --git a/rose-meta/jules-standalone/vn8.2/lib/python/widget/pages.py b/rose-meta/jules-standalone/vn8.2/lib/python/widget/pages.py new file mode 100644 index 00000000..197e5434 --- /dev/null +++ b/rose-meta/jules-standalone/vn8.2/lib/python/widget/pages.py @@ -0,0 +1,421 @@ +import sys +if sys.version[0] == '3': + class PageWithVariableTable(): + """ + Dummy Page + """ +else: + import pygtk + pygtk.require('2.0') + import gtk + import gobject + import pango + import webbrowser + import optparse + + import rose + + + class PageWithVariableTable(gtk.VBox): + """Page widget that displays all widgets normally except for a table of variable information""" + + def __init__(self, active, latent, var_ops, modes, arg_str=None): + super(PageWithVariableTable, self).__init__(False, 1) + + self.__drawing_suspended = True + + self.__var_ops = var_ops + + # Parse the given arguments to work out which variables to include in the table + parser = optparse.OptionParser() + parser.add_option('-n', '--nvar', action = "store", + type = "string", dest = "nvar", default = "nvars") + (args, vars) = parser.parse_args(arg_str.split() if arg_str else []) + + # Store the names for easy looking up later + self.__var_names = [args.nvar] + vars + + # Work out which variables we will explicitly manage and which variables we will defer + # to the default page + self.__nvar = None + self.__vars = [] + for var in active[:]: + if var.name == args.nvar: + self.__nvar = var + active.remove(var) + for var in latent[:]: + if var.name == args.nvar: + self.__nvar = var + latent.remove(var) + for var_name in vars: + for var in active[:]: + if var.name == var_name: + self.__vars.append(var) + active.remove(var) + for var in latent[:]: + if var.name == var_name: + self.__vars.append(var) + latent.remove(var) + + # Correct the sizes of all the variables to match the current value of self.__nvar + for var in self.__vars: + value = self.__python_list_for_variable(var) + self.__var_ops.set_var_value(var, ",".join([self.__value_to_string(var, v) for v in value])) + + # Build the default table for all the other variables and insert it as the first element + self.__table = rose.config_editor.pagewidget.table.PageTable(active, latent, var_ops, modes, arg_str) + self.pack_start(self.__table) + + # Add another panel to contain the table + self.__table_panel = gtk.VBox(False, 0) + self.pack_start(self.__table_panel) + + toolbar = gtk.HBox() + + error_panel = gtk.HBox() + self.__error_icon = gtk.image_new_from_stock(gtk.STOCK_DIALOG_ERROR, gtk.ICON_SIZE_MENU) + self.__error_icon.set_padding(5, 3) + self.__error_icon.show() + error_panel.pack_start(self.__error_icon, expand = False, fill = False) + self.__error_label = gtk.Label() + self.__error_label.set_alignment(xalign=0, yalign=0.5) + self.__error_label.show() + error_panel.pack_start(self.__error_label, expand = True, fill = True) + error_panel.show() + toolbar.pack_start(error_panel, expand = True, fill = True) + + add_button = gtk.Button(stock=gtk.STOCK_ADD) + add_button.connect("clicked", self.__handle_add_row) + toolbar.pack_end(add_button, expand = False, fill = False) + + self.__table_panel.pack_start(toolbar) + add_button.show() + toolbar.show() + + # Build the initial state of our store + col_types = [] + renderers = [] + col_idx = 0 + for var in self.__vars: + if 'values' in var.metadata: + col_types.append(str) + values_store = gtk.ListStore(str) + for item in var.metadata['values']: + values_store.append([item]) + renderer = gtk.CellRendererCombo() + renderer.set_property('has-entry', False) + renderer.set_property('editable', True) + renderer.set_property('model', values_store) + renderer.set_property("text-column", 0) + renderer.connect("edited", self.__handle_text_edit, var, col_idx) + else: + type = var.metadata.get('type', None) + if type == 'integer': + col_types.append(int) + renderer = gtk.CellRendererSpin() + renderer.set_property('editable', True) + renderer.set_property('adjustment', 1) + renderer.connect("edited", self.__handle_text_edit, var, col_idx) + elif type == 'boolean': + col_types.append(bool) + renderer = gtk.CellRendererToggle() + renderer.set_property('active', 0) + renderer.connect("toggled", self.__handle_toggle, var, col_idx) + elif type == 'logical': + col_types.append(bool) + renderer = gtk.CellRendererToggle() + renderer.set_property('active', 0) + renderer.connect("toggled", self.__handle_toggle, var, col_idx) + elif type == 'real': + col_types.append(float) + renderer = gtk.CellRendererText() + renderer.set_property('editable', True) + renderer.connect("edited", self.__handle_text_edit, var, col_idx) + else: + col_types.append(str) + renderer = gtk.CellRendererText() + renderer.set_property('editable', True) + renderer.connect("edited", self.__handle_text_edit, var, col_idx) + renderer.set_property("xpad", 8) + renderer.set_property("ypad", 5) + renderers.append(renderer) + col_idx += 1 + + self.__store = gtk.ListStore(*col_types) + + treeview = gtk.TreeView(self.__store) + self.__columns = [] + for col in range(len(self.__vars)): + var = self.__vars[col] + title = var.metadata.get('title', var.name) + # We have to create a separate label widget for the column headers to enable tooltips + column = gtk.TreeViewColumn('', renderers[col], text = col, active = col) + column_header = gtk.Label(title) + column_header.modify_font(pango.FontDescription("bold")) + column_header.show() + column.set_widget(column_header) + column.connect("clicked", self.__handle_header_click, var) + if 'description' in var.metadata: + tooltips = gtk.Tooltips() + tooltips.set_tip(column_header, var.metadata['description']) + self.__columns.append(column) + treeview.append_column(column) + treeview.set_headers_clickable(True) + + table_viewport = gtk.Viewport() + table_viewport.set_shadow_type(gtk.SHADOW_OUT) + table_viewport.add(treeview) + self.__table_panel.pack_start(table_viewport) + treeview.show() + table_viewport.show() + + self.__table_panel.show() + + # Add the right click context menu to the treeview body + treeview.connect("button-press-event", self.__handle_mouse_click) + # Add the right click context menu to the treeview headers + for col in range(len(self.__vars)): + var = self.__vars[col] + button = self.__columns[col].get_widget() + while not isinstance(button, gtk.Button): + button = button.get_parent() + button.connect("button-press-event", self.__handle_header_button_press, var) + + self.__drawing_suspended = False + self.__redraw() + + self.show() + + + def add_variable_widget(self, var): + if var.name not in self.__var_names: + self.__table.add_variable_widget(var) + + def reload_variable_widget(self, var): + if var.name not in self.__var_names: + self.__table.reload_variable_widget(var) + + def remove_variable_widget(self, var): + if var.name not in self.__var_names: + self.__table.remove_variable_widget(var) + + def update_ignored(self): + # Refresh the variables in our store + self.__redraw() + self.__table.update_ignored() + + + def __redraw(self): + """Redraws the variable table from scratch""" + + if self.__drawing_suspended: + return + + # If the nvar variable is ignored, hide the whole table + if self.__nvar.ignored_reason: + self.__table_panel.hide() + return + else: + self.__table_panel.show() + + store_data = [] + for col in range(len(self.__vars)): + var = self.__vars[col] + values = self.__python_list_for_variable(var) + store_data.append(values) + # Check if the column needs ignoring + self.__columns[col].set_visible(var.ignored_reason == {}) + + self.__store.clear() + for row in range(int(self.__nvar.value)): + self.__store.append([store_data[col][row] for col in range(len(self.__vars))]) + + # Check for any errors we need to show + self.__error_icon.hide() + self.__error_label.hide() + if self.__nvar.error: + self.__error_label.set_label("%s: %s" % (self.__nvar.name, self.__nvar.error['type'])) + self.__error_icon.show() + self.__error_label.show() + + + def __default_value_for_variable(self, var): + """Gets the default Python value for the given variable""" + + default = '' + # Check if we need to correct from the strings we already have + if 'values' in var.metadata: + default = var.metadata['values'][0] + else: + type = var.metadata.get('type', None) + if type == 'integer': + default = 0 + elif type == 'boolean' or type == 'logical': + default = False + elif type == 'real': + default = 0.0 + return default + + + def __value_from_string(self, var, value): + """Takes a string value and parses it to the correct type for the variable""" + + if 'values' not in var.metadata: + type = var.metadata.get('type', None) + if type == 'integer': + return int(value) + elif type == 'boolean': + return value == 'true' + elif type == 'logical': + return value == '.true.' + elif type == 'real': + return float(value) + elif type == 'character': + return rose.config_editor.util.text_for_character_widget(value) + return value + + + def __value_to_string(self, var, value): + """Takes the given value and creates a suitable string in the context of the given variable""" + + if 'values' not in var.metadata: + type = var.metadata.get('type', None) + if type == 'boolean': + return 'true' if value else 'false' + elif type == 'logical': + return '.true.' if value else '.false.' + elif type == 'character': + return rose.config_editor.util.text_from_character_widget(value) + return str(value) + + + def __python_list_for_variable(self, var): + """Convert the value of the variable to a Python list appropriate for its type""" + + values = var.value.split(',') if var.value else [] + values = [self.__value_from_string(var, value) for value in values] + default = self.__default_value_for_variable(var) + # Expand with the default value if required + nrows = int(self.__nvar.value) + return (values + [default] * nrows)[:nrows] + + + def __handle_add_row(self, button): + """Adds a new row to the variable table""" + + self.__drawing_suspended = True + + # Update the count + self.__var_ops.set_var_value(self.__nvar, str(int(self.__nvar.value) + 1)) + # For each variable, add the default onto the end and set a new value + for var in self.__vars: + # Since the count has been updated, this will get an array of the new size + # with the last element populated with default - exactly what we want + new_value = self.__python_list_for_variable(var) + self.__var_ops.set_var_value(var, ",".join([self.__value_to_string(var, v) for v in new_value])) + + self.__drawing_suspended = False + self.__redraw() + + + def __handle_text_edit(self, cell, row, new_text, var, col): + """Triggered when text is edited""" + + row = int(row) + value = self.__python_list_for_variable(var) + value[row] = self.__value_from_string(var, new_text) + self.__var_ops.set_var_value(var, ",".join([self.__value_to_string(var, v) for v in value])) + self.__redraw() + + + def __handle_toggle(self, cell, row, var, col): + """Triggered when a boolean is toggled""" + + row = int(row) + value = self.__python_list_for_variable(var) + value[row] = not value[row] + self.__var_ops.set_var_value(var, ",".join([self.__value_to_string(var, v) for v in value])) + self.__redraw() + + + def __handle_mouse_click(self, treeview, event): + """Handles a mouse click to see if we need to display a context menu""" + + if event.button == 3: + x = int(event.x) + y = int(event.y) + time = event.time + pthinfo = treeview.get_path_at_pos(x, y) + if pthinfo is not None: + row, col, cellx, celly = pthinfo + treeview.grab_focus() + treeview.set_cursor(row, col, 0) + # Create the context menu to pop up + ctx_menu = gtk.Menu() + clone_item = gtk.ImageMenuItem(gtk.STOCK_COPY) + clone_item.connect("activate", self.__handle_clone_row, row) + clone_item.show() + ctx_menu.attach(clone_item, 0, 1, 0, 1) + remove_item = gtk.ImageMenuItem(gtk.STOCK_REMOVE) + remove_item.connect("activate", self.__handle_remove_row, row) + remove_item.show() + ctx_menu.attach(remove_item, 0, 1, 1, 2) + ctx_menu.popup(None, None, None, event.button, time) + + + def __handle_clone_row(self, item, row): + row = int(row[0]) + + self.__drawing_suspended = True + + # Update the count + self.__var_ops.set_var_value(self.__nvar, str(int(self.__nvar.value) + 1)) + for var in self.__vars: + # Since the count has been updated, this will get an array of the new size + value = self.__python_list_for_variable(var) + # So we just correct the last element + value[-1] = value[row] + self.__var_ops.set_var_value(var, ",".join([self.__value_to_string(var, v) for v in value])) + + self.__drawing_suspended = False + self.__redraw() + + + def __handle_remove_row(self, item, row): + row = int(row[0]) + + self.__drawing_suspended = True + + # Remove the given row from each variable + for var in self.__vars: + # This is a list at the old size, since the count hasn't been updated yet + value = self.__python_list_for_variable(var) + del value[row] + self.__var_ops.set_var_value(var, ",".join([self.__value_to_string(var, v) for v in value])) + # Update the count + self.__var_ops.set_var_value(self.__nvar, str(int(self.__nvar.value) - 1)) + + self.__drawing_suspended = False + self.__redraw() + + + def __handle_header_click(self, column, var): + if 'url' in var.metadata: + # For a left mouse click, launch the help for the variable + webbrowser.open(var.metadata['url'], new=True, autoraise=True) + + + def __handle_header_button_press(self, button, event, var): + """Handles a mouse click on column headers to see if we need to display a context menu""" + + if event.button == 3: + # Create the context menu to pop up + ctx_menu = gtk.Menu() + clone_item = gtk.MenuItem('Clone item') + clone_item.show() + ctx_menu.attach(clone_item, 0, 1, 0, 1) + remove_item = gtk.MenuItem('Remove item') + remove_item.show() + ctx_menu.attach(remove_item, 0, 1, 1, 2) + ctx_menu.popup(None, None, None, event.button, event.time) + diff --git a/rose-meta/jules-standalone/vn8.2/rose-meta.conf b/rose-meta/jules-standalone/vn8.2/rose-meta.conf new file mode 100644 index 00000000..c6289002 --- /dev/null +++ b/rose-meta/jules-standalone/vn8.2/rose-meta.conf @@ -0,0 +1,7433 @@ +# Please see jules:wiki:SharingJULESmetadata + +import=jules-shared/jules-hydrology/vn8.2 + =jules-shared/jules-model-environment/vn8.2 + =jules-shared/jules-nvegparm/vn8.2 + =jules-shared/jules-pftparm/vn8.2 + =jules-shared/jules-radiation/vn8.2 + =jules-shared/jules-snow/vn8.2 + =jules-shared/jules-soil/vn8.2 + =jules-shared/jules-surface/vn8.2 + =jules-shared/jules-surface-types/vn8.2 + =jules-shared/jules-urban/vn8.2 + =jules-shared/jules-vegetation/vn8.2 + +[command] +ns=Execution command +sort-key=00 + +[command=default] +description=If serial build was used, this cannot be parallel +sort-key=1 +title=Method to use to invoke JULES +value-titles=auto-detect,serial,parallel,profile +values=rose-run jules.exe,jules.exe,rose mpi-launch jules.exe,rose mpi-launch valgrind --tool=callgrind jules.exe +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[command=rivers-only] +description=UNDER DEVELOPMENT + =Driving data timestamp issue leads to non-scientific results +sort-key=2 +title=Method to use to invoke Standalone Rivers +value-titles=auto-detect +values=rose-run river.exe +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist] +title=Namelist configuration + +[namelist:cable_pftparm] +compulsory=true +description=This namelist reads the values of parameters for each of the plant + =functional types (PFTs) if the CABLE land surface model is being + =used. These parameters are a function of PFT only. Every member + =must be given a value for every run. CABLE uses the same parameters + =for veg and non-veg surface types, unlike JULES, and therefore its + =arrays are of dimension (npft + nnvg). +ns=namelist/CABLE Science Settings/cable_pftparm +title=CABLE PFT Parameters +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#namelist-CABLE_PFTPARM +widget[rose-config-edit]=cylc8_compat.PageArrayTable + +[namelist:cable_pftparm=a1gs_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::a1gs_io + +[namelist:cable_pftparm=alpha_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::alpha_io + +[namelist:cable_pftparm=canst1_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::canst1_io + +[namelist:cable_pftparm=cfrd_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::cfrd_io + +[namelist:cable_pftparm=clitt_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::clitt_io + +[namelist:cable_pftparm=conkc0_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::conkc0_io + +[namelist:cable_pftparm=conko0_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::conko0_io + +[namelist:cable_pftparm=convex_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::convex_io + +[namelist:cable_pftparm=cplant1_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::cplant1_io + +[namelist:cable_pftparm=cplant2_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::cplant2_io + +[namelist:cable_pftparm=cplant3_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::cplant3_io + +[namelist:cable_pftparm=csoil1_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::csoil1_io + +[namelist:cable_pftparm=csoil2_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::csoil2_io + +[namelist:cable_pftparm=d0gs_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::d0gs_io + +[namelist:cable_pftparm=ejmax_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::ejmax_io + +[namelist:cable_pftparm=ekc_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::ekc_io + +[namelist:cable_pftparm=eko_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::eko_io + +[namelist:cable_pftparm=extkn_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::extkn_io + +[namelist:cable_pftparm=frac4_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::frac4_io + +[namelist:cable_pftparm=froot1_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::froot1_io + +[namelist:cable_pftparm=froot2_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::froot2_io + +[namelist:cable_pftparm=froot3_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::froot3_io + +[namelist:cable_pftparm=froot4_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::froot4_io + +[namelist:cable_pftparm=froot5_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::froot5_io + +[namelist:cable_pftparm=froot6_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::froot6_io + +[namelist:cable_pftparm=g0_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::g0_io + +[namelist:cable_pftparm=g1_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::g1_io + +[namelist:cable_pftparm=gswmin_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::gswmin_io + +[namelist:cable_pftparm=hc_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::hc_io + +[namelist:cable_pftparm=lai_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::lai_io + +[namelist:cable_pftparm=length_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::length_io + +[namelist:cable_pftparm=ratecp1_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::ratecp1_io + +[namelist:cable_pftparm=ratecp2_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::ratecp2_io + +[namelist:cable_pftparm=ratecp3_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::ratecp3_io + +[namelist:cable_pftparm=ratecs1_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::ratecs1_io + +[namelist:cable_pftparm=ratecs2_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::ratecs2_io + +[namelist:cable_pftparm=refl1_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::refl1_io + +[namelist:cable_pftparm=refl2_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::refl2_io + +[namelist:cable_pftparm=refl3_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::refl3_io + +[namelist:cable_pftparm=rootbeta_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::rootbeta_io + +[namelist:cable_pftparm=rp20_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::rp20_io + +[namelist:cable_pftparm=rpcoef_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::rpcoef_io + +[namelist:cable_pftparm=rs20_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::rs20_io + +[namelist:cable_pftparm=shelrb_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::shelrb_io + +[namelist:cable_pftparm=taul1_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::taul1_io + +[namelist:cable_pftparm=taul2_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::taul2_io + +[namelist:cable_pftparm=taul3_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::taul3_io + +[namelist:cable_pftparm=tmaxvj_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::tmaxvj_io + +[namelist:cable_pftparm=tminvj_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::tminvj_io + +[namelist:cable_pftparm=vbeta_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::vbeta_io + +[namelist:cable_pftparm=vcmax_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::vcmax_io + +[namelist:cable_pftparm=vegcf_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::vegcf_io + +[namelist:cable_pftparm=wai_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::wai_io + +[namelist:cable_pftparm=width_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::width_io + +[namelist:cable_pftparm=xalbnir_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::xalbnir_io + +[namelist:cable_pftparm=xfang_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::xfang_io + +[namelist:cable_pftparm=zr_io] +compulsory=true +fail-if=len(this) != (namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_pftparm.nml.html#CABLE_PFTPARM::zr_io + +[namelist:cable_progs] +compulsory=true +description=Configuration of spatially varying soil properties +ns=namelist/Ancillary data/Cable prognostics +sort-key=17 +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_prognostics.nml.html#namelist-CABLE_PROGS +widget[rose-config-edit]=pages.PageWithVariableTable --nvar nvars var use_file var_name const_val + +[namelist:cable_progs=const_val] +compulsory=true +description=Constant value for all points (used if use_file = .false.) +fail-if=len(this) != namelist:cable_progs=nvars +length=: +sort-key=9 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_prognostics.nml.html#CABLE_PROGS::const_val + +[namelist:cable_progs=file] +compulsory=true +description=File (or file name template) to read CABLE prognostic initial values from +sort-key=3 +trigger=namelist:cable_progs=tpl_name: '%vv' in this; +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_prognostics.nml.html#CABLE_PROGS::file + +[namelist:cable_progs=nvars] +compulsory=true +description=Number of soil properties that will be given +range=9:11 +sort-key=4 +trigger=namelist:cable_progs=var: this > 0; + = namelist:cable_progs=use_file: this > 0; + = namelist:cable_progs=var_name: this > 0; + = namelist:cable_progs=const_val: this > 0; + = namelist:cable_progs=tpl_name: this > 0; +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_prognostics.nml.html#CABLE_PROGS::nvars + +[namelist:cable_progs=tpl_name] +compulsory=true +description=String to substitute into the file name template (used if use_file = .true.) +fail-if=len(this) != namelist:cable_progs=nvars +length=: +sort-key=7 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_prognostics.nml.html#CABLE_PROGS::tpl_name + +[namelist:cable_progs=use_file] +compulsory=true +description=Read variable from file +fail-if=len(this) != namelist:cable_progs=nvars +length=: +sort-key=6 +trigger=namelist:cable_progs=file: any(this == '.true.'); + = namelist:cable_progs=var_name: any(this == '.true.'); + = namelist:cable_progs=const_val: not all(this == '.true.'); +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_prognostics.nml.html#CABLE_PROGS::use_file + +[namelist:cable_progs=var] +compulsory=true +description=Name of the prognostic variable, as recognised by CABLE +fail-if=len(this) != namelist:cable_progs=nvars +length=: +sort-key=5 +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_prognostics.nml.html#CABLE_PROGS::var +values='SoilTemp_CABLE','SoilMoisture_CABLE','FrozenSoilFrac_CABLE','SnowDepth_CABLE', + ='SnowMass_CABLE','SnowDensity_CABLE','SnowTemp_CABLE','SnowAge_CABLE', + ='OneLyrSnowDensity_CABLE','ThreeLayerSnowFlag_CABLE' + +[namelist:cable_progs=var_name] +compulsory=true +description=Name in file (used if use_file = .true.) +fail-if=len(this) != namelist:cable_progs=nvars +length=: +sort-key=7 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_prognostics.nml.html#CABLE_PROGS::var_name + +[namelist:cable_soilparm] +compulsory=true +description=This namelist reads the values of parameters for each of the soil + =types if the CABLE land surface model is being used. These + =parameters are a function of surface type only. All parameters must + =be defined for any configuration. The number of soil types is stored + =in the n_soiltypes parameter and for the current version of CABLE + =is set to 9. +ns=namelist/CABLE Science Settings/cable_soilparm +title=CABLE Soil Parameters +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_soilparm.nml.html#namelist-CABLE_SOILPARM +widget[rose-config-edit]=cylc8_compat.PageArrayTable + +[namelist:cable_soilparm=bch_io] +compulsory=true +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_soilparm.nml.html#CABLE_SOILPARM::bch_io + +[namelist:cable_soilparm=clay_io] +compulsory=true +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_soilparm.nml.html#CABLE_SOILPARM::clay_io + +[namelist:cable_soilparm=css_io] +compulsory=true +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_soilparm.nml.html#CABLE_SOILPARM::css_io + +[namelist:cable_soilparm=hyds_io] +compulsory=true +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_soilparm.nml.html#CABLE_SOILPARM::hyds_io + +[namelist:cable_soilparm=rhosoil_io] +compulsory=true +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_soilparm.nml.html#CABLE_SOILPARM::rhosoil_io + +[namelist:cable_soilparm=sand_io] +compulsory=true +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_soilparm.nml.html#CABLE_SOILPARM::sand_io + +[namelist:cable_soilparm=sfc_io] +compulsory=true +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_soilparm.nml.html#CABLE_SOILPARM::sfc_io + +[namelist:cable_soilparm=silt_io] +compulsory=true +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_soilparm.nml.html#CABLE_SOILPARM::silt_io + +[namelist:cable_soilparm=ssat_io] +compulsory=true +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_soilparm.nml.html#CABLE_SOILPARM::ssat_io + +[namelist:cable_soilparm=sucs_io] +compulsory=true +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_soilparm.nml.html#CABLE_SOILPARM::sucs_io + +[namelist:cable_soilparm=swilt_io] +compulsory=true +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_soilparm.nml.html#CABLE_SOILPARM::swilt_io + +[namelist:cable_surface_types] +compulsory=true +ns=namelist/CABLE Surface Types/cable_surface_types +sort-key=01 +title=CABLE Surface Types +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_surface_types.nml.html#namelist-CABLE_SURFACE_TYPES + +[namelist:cable_surface_types=barren_cable] +compulsory=true +description=Pseudo level of barren soil surface type +fail-if=any(this > namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); # Pseudo level must be less than or equal to npft_cable+nnvg_cable + =any(this <= namelist:cable_surface_types=npft_cable and this != -1); # PFTs must be grouped together first with non-vegetated tiles following +length=: +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_surface_types.nml.html#CABLE_SURFACE_TYPES::barren_cable + +[namelist:cable_surface_types=ice_cable] +compulsory=true +description=Pseudo level of ice_cable surface type +fail-if=any(this > namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); # Pseudo level must be less than or equal to npft_cable+nnvg_cable + =any(this <= namelist:cable_surface_types=npft_cable and this != -1); # PFTs must be grouped together first with non-vegetated tiles following +length=: +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_surface_types.nml.html#CABLE_SURFACE_TYPES::ice_cable + +[namelist:cable_surface_types=lakes_cable] +compulsory=true +description=Pseudo level of lakes_cable surface type +fail-if=any(this > namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); # Pseudo level must be less than or equal to npft_cable+nnvg_cable + =any(this <= namelist:cable_surface_types=npft_cable and this != -1); # PFTs must be grouped together first with non-vegetated tiles following +length=: +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_surface_types.nml.html#CABLE_SURFACE_TYPES::lakes_cable + +[namelist:cable_surface_types=nnvg_cable] +compulsory=true +description=Number of non-plant surface types to be modelled +range=1: +sort-key=c +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_surface_types.nml.html#CABLE_SURFACE_TYPES::nnvg_cable + +[namelist:cable_surface_types=npft_cable] +compulsory=true +description=Number of plant functional types to be modelled +range=0: +sort-key=a +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_surface_types.nml.html#CABLE_SURFACE_TYPES::npft_cable + +[namelist:cable_surface_types=urban_cable] +compulsory=true +description=Pseudo level of urban_cable surface type +fail-if=any(this > namelist:cable_surface_types=npft_cable + namelist:cable_surface_types=nnvg_cable); # Pseudo level must be less than or equal to npft_cable+nnvg_cable + =any(this <= namelist:cable_surface_types=npft_cable and this != -1); # PFTs must be grouped together first with non-vegetated tiles following +length=: +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/cable_surface_types.nml.html#CABLE_SURFACE_TYPES::urban_cable + +[namelist:fire_switches] +compulsory=true +description=Switches for controlling activation of the fire module +ns=namelist/JULES Science Settings/fire_switches +sort-key=16 +title=Fire options +url=https://metoffice.github.io/jules/vn8.2/namelists/fire.nml.html#namelist-FIRE_SWITCHES + +[namelist:fire_switches=canadian_flag] +compulsory=true +description=Switch for Canadian Fire Weather Index (FWI) +sort-key=04 +trigger=namelist:fire_switches=canadian_hemi_opt: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/fire.nml.html#FIRE_SWITCHES::canadian_flag + +[namelist:fire_switches=canadian_hemi_opt] +compulsory=true +description=If TRUE, apply 6-month offset to S-hemisphere month-dependent parameters +sort-key=05 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/fire.nml.html#FIRE_SWITCHES::canadian_hemi_opt + +[namelist:fire_switches=l_fire] +compulsory=true +description=Switch to enable the fire module +sort-key=01 +trigger=namelist:fire_switches=mcarthur_flag: .true.; + =namelist:fire_switches=mcarthur_opt: .true.; + =namelist:fire_switches=canadian_flag: .true.; + =namelist:fire_switches=nesterov_flag: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/fire.nml.html#FIRE_SWITCHES::l_fire + +[namelist:fire_switches=mcarthur_flag] +compulsory=true +description=Switch for McArthur Forest Fire Danger Index (FFDI) +sort-key=02 +trigger=namelist:fire_switches=mcarthur_opt: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/fire.nml.html#FIRE_SWITCHES::mcarthur_flag + +[namelist:fire_switches=mcarthur_opt] +compulsory=true +description=Method for soil moisture deficit in McArthur FFDI +sort-key=03 +url=https://metoffice.github.io/jules/vn8.2/namelists/fire.nml.html#FIRE_SWITCHES::mcarthur_opt +value-titles=Model value,Fixed at 120 mm +values=1,2 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:fire_switches=nesterov_flag] +compulsory=true +description=Switch for Nesterov Index +sort-key=06 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/fire.nml.html#FIRE_SWITCHES::nesterov_flag + +[namelist:imogen_anlg_vals_list] +compulsory=true +ns=namelist/IMOGEN/GCM Analogue configuration +sort-key=1 +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#namelist-IMOGEN_ANLG_VALS_LIST + +[namelist:imogen_anlg_vals_list=diff_frac_const_imogen] +compulsory=true +description=Fraction of downward shortwave radiation assumed to be diffuse for IMOGEN +range=0:1 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_ANLG_VALS_LIST::diff_frac_const_imogen +warn-if=this == 0; #There will be no diffuse downward SW radiation + +[namelist:imogen_anlg_vals_list=f_ocean] +compulsory=true +description=Fractional coverage of the ocean +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_ANLG_VALS_LIST::f_ocean + +[namelist:imogen_anlg_vals_list=file_base_anom] +compulsory=true +description=Directory containing prescribed anomalies +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_ANLG_VALS_LIST::file_base_anom + +[namelist:imogen_anlg_vals_list=file_clim] +compulsory=true +description=Directory containing initialising climatology +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_ANLG_VALS_LIST::file_clim + +[namelist:imogen_anlg_vals_list=file_patt] +compulsory=true +description=Directory containing the GCM patterns +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_ANLG_VALS_LIST::file_patt + +[namelist:imogen_anlg_vals_list=kappa_o] +compulsory=true +description=Ocean eddy diffusivity (W m-1 K-1) +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_ANLG_VALS_LIST::kappa_o + +[namelist:imogen_anlg_vals_list=lambda_l] +compulsory=true +description=Inverse of climate sensitivity over land (W m-2 K-1) +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_ANLG_VALS_LIST::lambda_l + +[namelist:imogen_anlg_vals_list=lambda_o] +compulsory=true +description=Inverse of climate sensitivity over ocean (W m-2 K-1) +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_ANLG_VALS_LIST::lambda_o + +[namelist:imogen_anlg_vals_list=mu] +compulsory=true +description=Ratio of land to ocean temperature anomalies +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_ANLG_VALS_LIST::mu + +[namelist:imogen_anlg_vals_list=q2co2] +compulsory=true +description=Radiative forcing due to doubling CO2 (W m-2) +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_ANLG_VALS_LIST::q2co2 + +[namelist:imogen_anlg_vals_list=t_ocean_init] +compulsory=true +description=Initial ocean temperature (K) +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_ANLG_VALS_LIST::t_ocean_init + +[namelist:imogen_onoff_switch] +compulsory=true +ns=namelist/IMOGEN +sort-key=1 +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#namelist-IMOGEN_RUN_LIST + +[namelist:imogen_onoff_switch=l_daily_metdata_climatol] +compulsory=true +description=Use daily climatology (default is monthly) +sort-key=1 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_ONOFF_SWITCH::l_daily_metdata_climatol + +[namelist:imogen_onoff_switch=l_imogen] +compulsory=true +description=Use IMOGEN to generate meteorological forcing data +fail-if=this == '.true.' and '01-01 00:00:00' not in namelist:jules_time=main_run_start; # IMOGEN runs must start at 00:00:00 on 1st Jan for some year + = this == '.true.' and (namelist:jules_input_grid=grid_is_1d == '.true.' or namelist:jules_input_grid=nx != 96 or namelist:jules_input_grid=ny != 56); # IMOGEN requires a 2D grid of size 96 x 56 +sort-key=0 +trigger=namelist:jules_drive=l_daily_disagg: .false.; + = namelist:jules_drive=data_start: .false.; + = namelist:jules_drive=data_end: .false.; + = namelist:jules_drive=data_period: .false.; + = namelist:jules_drive=read_list: .false.; + = namelist:jules_drive=file: .false.; + = namelist:jules_drive=nvars: .false.; + = namelist:jules_drive=l_perturb_driving: .false.; + = namelist:imogen_run_list: .true.; + = namelist:imogen_anlg_vals_list: .true.; + = namelist:imogen_onoff_switch=l_daily_metdata_climatol: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_ONOFF_SWITCH::l_imogen + +[namelist:imogen_run_list] +compulsory=true +ns=namelist/IMOGEN/Run options +sort-key=1 +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#namelist-IMOGEN_RUN_LIST + +[namelist:imogen_run_list=c_emissions] +compulsory=true +description=Calculate CO2 concentration based on anthropogenic emissions + = (with or without land and ocean feedbacks) +sort-key=1g +trigger=namelist:imogen_run_list=land_feed_co2: .true.; + =namelist:imogen_run_list=ocean_feed: .true.; + =namelist:imogen_run_list=file_scen_emits: .true.; + =namelist:imogen_run_list=nyr_emiss: .true.; + =namelist:imogen_run_list=file_scen_co2_ppmv: .false.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_RUN_LIST::c_emissions + +[namelist:imogen_run_list=ch4_init_ppbv] +compulsory=true +description=Initial CH4 concentration (ppbv) +sort-key=4b +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_RUN_LIST::ch4_init_ppbv + +[namelist:imogen_run_list=ch4_ppbv_ref] +compulsory=true +description=Atmospheric CH4 concentration at reference year (ppbv) +sort-key=4c +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_RUN_LIST::ch4_ppbv_ref + +[namelist:imogen_run_list=change_metdata_method] +compulsory=true +description=Choice of method used to change meteorological data over time +fail-if=this == 2 and namelist:imogen_run_list=land_feed_co2 == '.true.'; + =this == 2 and namelist:imogen_run_list=ocean_feed == '.true.'; + =this == 2 and namelist:imogen_run_list=land_feed_ch4 == '.true.'; + =this == 2 and namelist:imogen_run_list=c_emissions == '.true.'; + =this == 2 and namelist:imogen_run_list=include_non_co2_radf == '.true.'; + =this == 3 and namelist:imogen_run_list=land_feed_co2 == '.true.'; + =this == 3 and namelist:imogen_run_list=ocean_feed == '.true.'; + =this == 3 and namelist:imogen_run_list=land_feed_ch4 == '.true.'; + =this == 3 and namelist:imogen_run_list=c_emissions == '.true.'; + =this == 3 and namelist:imogen_run_list=include_non_co2_radf == '.true.'; +sort-key=1f +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_RUN_LIST::change_metdata_method +value-titles=Analogue model and patterns,Prescribed anomalies,Global temperature change applied to patterns +values=1,2,3 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:imogen_run_list=co2_init_ppmv] +compulsory=true +description=Initial CO2 concentration (ppmv) +sort-key=3a +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_RUN_LIST::co2_init_ppmv + +[namelist:imogen_run_list=dump_file] +compulsory=true +description=Name of the dump file to initialise from +sort-key=5b +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_RUN_LIST::dump_file + +[namelist:imogen_run_list=fch4_ref] +compulsory=true +description=Reference global CH4 flux from natural land to atmosphere (Tg CH4/yr) +sort-key=4d +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_RUN_LIST::fch4_ref + +[namelist:imogen_run_list=file_ch4_n2o] +compulsory=true +description=File containing ch4 and n2o concentration + =required for radiative forcing calculations +sort-key=4g +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_RUN_LIST::file_ch4_n2o + +[namelist:imogen_run_list=file_non_co2_radf] +compulsory=true +description=File containing non-CO2 values +sort-key=6b +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_RUN_LIST::file_non_co2_radf + +[namelist:imogen_run_list=file_scen_co2_ppmv] +compulsory=true +description=File containing CO2 values +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_RUN_LIST::file_scen_co2_ppmv + +[namelist:imogen_run_list=file_scen_emits] +compulsory=true +description=File containing CO2 emissions +sort-key=3c +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_RUN_LIST::file_scen_emits + +[namelist:imogen_run_list=include_co2] +compulsory=true +description=Include adjustments to CO2 values +sort-key=1e +trigger=namelist:imogen_run_list=c_emissions: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_RUN_LIST::include_co2 + +[namelist:imogen_run_list=include_non_co2_radf] +compulsory=true +description=Include adjustments to non-CO2 radiative forcing +sort-key=6a +trigger=namelist:imogen_run_list=file_non_co2_radf: .true.; + =namelist:imogen_run_list=nyr_non_co2: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_RUN_LIST::include_non_co2_radf + +[namelist:imogen_run_list=initial_co2_ch4_year] +compulsory=true +description=Initial year for the ocean CO2 accumulation +sort-key=2d +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_RUN_LIST::initial_co2_ch4_year + +[namelist:imogen_run_list=initialise_from_dump] +compulsory=true +description=Use the given dump file to initialise IMOGEN prognostics +sort-key=5a +trigger=namelist:imogen_run_list=dump_file: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_RUN_LIST::initialise_from_dump + +[namelist:imogen_run_list=l_change_metdata] +compulsory=true +description=Allow driving met data to change over time +sort-key=1e +trigger=namelist:imogen_run_list=change_metdata_method: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_RUN_LIST::l_change_metdata + +[namelist:imogen_run_list=land_feed_ch4] +compulsory=true +description=Include land CH4 feedbacks on atmospheric CH4 +sort-key=4a +trigger=namelist:imogen_run_list=nyr_ch4_n2o: .true.; + =namelist:imogen_run_list=yr_fch4_ref: .true.; + =namelist:imogen_run_list=file_ch4_n2o: .true.; + =namelist:imogen_run_list=fch4_ref: .true.; + =namelist:imogen_run_list=tau_ch4_ref: .true.; + =namelist:imogen_run_list=ch4_ppbv_ref: .true.; + =namelist:imogen_run_list=ch4_init_ppbv: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_RUN_LIST::land_feed_ch4 + +[namelist:imogen_run_list=land_feed_co2] +compulsory=true +description=Include land CO2 feedbacks on atmospheric CO2 +sort-key=2c +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_RUN_LIST::land_feed_co2 + +[namelist:imogen_run_list=nyr_ch4_n2o] +compulsory=true +description=Number of years of CH4 and N2O data in file +range=0: +sort-key=4h +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_RUN_LIST::nyr_ch4_n2o + +[namelist:imogen_run_list=nyr_emiss] +compulsory=true +description=Number of years of emission data in file +range=0: +sort-key=1f +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_RUN_LIST::nyr_emiss + +[namelist:imogen_run_list=nyr_non_co2] +compulsory=true +description=Number of years for which non-CO2 forcing is prescribed +range=0: +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_RUN_LIST::nyr_non_co2 + +[namelist:imogen_run_list=ocean_feed] +compulsory=true +description=Include ocean feedbacks on atmospheric CO2 +sort-key=2c +trigger=namelist:imogen_run_list=initial_co2_ch4_year: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_RUN_LIST::ocean_feed + +[namelist:imogen_run_list=tau_ch4_ref] +compulsory=true +description=Decay rate of atmospheric CH4 at reference year (years) +sort-key=4e +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_RUN_LIST::tau_ch4_ref + +[namelist:imogen_run_list=yr_fch4_ref] +compulsory=true +description=Reference year for CH4 emissions scaling +range=0: +sort-key=4f +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html#IMOGEN_RUN_LIST::yr_fch4_ref + +[namelist:jules_agric] +compulsory=true +ns=namelist/Ancillary data/Agricultural fraction +sort-key=19 +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#namelist-JULES_AGRIC + +[namelist:jules_agric=agric_name] +description=Name of the variable containing the agricultural fraction data +sort-key=5 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_AGRIC::agric_name + +[namelist:jules_agric=biocrop_name] +description=The name of the variable containing the biocrop fraction data. +sort-key=5 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_AGRIC::biocrop_name + +[namelist:jules_agric=file] +description=Name of the file to read agricultural fraction data from +sort-key=4 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_AGRIC::file + +[namelist:jules_agric=file_biocrop] +description=Name of the file to read biocrop fraction data from +sort-key=4 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_AGRIC::file_biocrop + +[namelist:jules_agric=file_harvest_doy] +compulsory=true +description=Name of file containing harvest_doy +sort-key=2 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_AGRIC::file_harvest_doy + +[namelist:jules_agric=file_past] +description=Name of the file to read pasture fraction data from +sort-key=4 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_AGRIC::file_past + +[namelist:jules_agric=frac_agr] +description=Agricultural fraction for the single location +sort-key=3 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_AGRIC::frac_agr + +[namelist:jules_agric=frac_biocrop] +description=Biocrop fraction for the single location +sort-key=3 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_AGRIC::frac_biocrop + +[namelist:jules_agric=frac_past] +description=Pasture fraction for the single location +sort-key=3 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_AGRIC::frac_past + +[namelist:jules_agric=harvest_doy_name] +compulsory=true +description=Name of variable containing harvest_doy in FILE +sort-key=3 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_AGRIC::harvest_doy_name + +[namelist:jules_agric=past_name] +description=Name of the variable containing the pasture fraction data +sort-key=5 +type=character +# Entry does not exist in documentation +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_AGRIC::past_name + +[namelist:jules_agric=read_from_dump] +compulsory=true +description=Read agricultural fraction from the dump file +sort-key=1 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_AGRIC::read_from_dump + +[namelist:jules_agric=read_harvest_doy_from_dump] +compulsory=true +description=Read harvest day-of-year from the dump file +sort-key=1 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_AGRIC::read_harvest_doy_from_dump + +[namelist:jules_agric=zero_agric] +compulsory=true +description=Set agricultural fraction at all points to zero +sort-key=2 +trigger=namelist:jules_agric=frac_agr: .false.; + = namelist:jules_agric=file: .false.; + = namelist:jules_agric=agric_name: .false.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_AGRIC::zero_agric + +[namelist:jules_agric=zero_biocrop] +compulsory=true +description=Set biocrop fraction at all points to zero if True (default). Otherwise set fractions with frac_biocrop from file_biocrop. +sort-key=2 +trigger=namelist:jules_agric=frac_biocrop: .false.; + = namelist:jules_agric=file_biocrop: .false.; + = namelist:jules_agric=biocrop_name: .false.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_AGRIC::zero_biocrop + +[namelist:jules_agric=zero_past] +compulsory=true +description=Set pasture fraction at all points to zero +sort-key=2 +trigger=namelist:jules_agric=frac_past: .false.; + = namelist:jules_agric=file_past: .false.; + = namelist:jules_agric=past_name: .false.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_AGRIC::zero_past + +[namelist:jules_co2] +compulsory=true +description=Configuration of co2 concentration +ns=namelist/Ancillary data/CO2 concentration +sort-key=22 +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#namelist-JULES_CO2 + +[namelist:jules_co2=co2_mmr] +description=Concentration of atmospheric CO2 as a mass mixing ratio +sort-key=2 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_CO2::file + +[namelist:jules_co2=read_from_dump] +compulsory=true +description=Read CO2 concentration from the dump file +sort-key=1 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_CO2::read_from_dump + +[namelist:jules_crop_props] +compulsory=true +description=Configuration of spatially varying crop properties +ns=namelist/Ancillary data/Crop properties +sort-key=20 +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#namelist-JULES_CROP_PROPS +widget[rose-config-edit]=pages.PageWithVariableTable --nvar nvars var use_file var_name tpl_name const_val + +[namelist:jules_crop_props=const_val] +compulsory=true +description=Constant value for all points (used if use_file = .false.) +fail-if=len(this) != namelist:jules_crop_props=nvars +length=: +sort-key=8 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_CROP_PROPS::const_val + +[namelist:jules_crop_props=file] +compulsory=true +description=If read_list = TRUE, file to read list of file names + =If read_list = FALSE, file or file name template + =from which to read crop properties. +sort-key=2 +trigger=namelist:jules_crop_props=tpl_name: '%vv' in this; + =namelist:jules_crop_props=read_list: '%vv' not in this; +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_CROP_PROPS::file + +[namelist:jules_crop_props=nvars] +compulsory=true +description=Number of crop properties that will be given +range=2:3 +sort-key=3 +trigger=namelist:jules_crop_props=var: this > 0; + = namelist:jules_crop_props=use_file: this > 0; +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_CROP_PROPS::nvars + +[namelist:jules_crop_props=read_from_dump] +compulsory=true +description=Read spatially varying crop properties from the dump file +sort-key=1 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_CROP_PROPS::read_from_dump + +[namelist:jules_crop_props=read_list] +compulsory=true +description=Use list of file names; one per line for each of nvars. +fail-if=this == '.true.' and '%vv' in namelist:jules_crop_props=file; # Cannot use variable name templating while reading a list of files. +sort-key=2a +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_CROP_PROPS::read_list + +[namelist:jules_crop_props=tpl_name] +compulsory=true +description=String to substitute into the file name template (used if use_file = .true.) +fail-if=len(this) != namelist:jules_crop_props=nvars +length=: +sort-key=7 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_CROP_PROPS::tpl_name + +[namelist:jules_crop_props=use_file] +compulsory=true +description=Read variable from file +fail-if=len(this) != namelist:jules_crop_props=nvars +length=: +sort-key=5 +trigger=namelist:jules_crop_props=file: any(this == '.true.'); + = namelist:jules_crop_props=var_name: any(this == '.true.'); + = namelist:jules_crop_props=const_val: not all(this == '.true.'); +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_CROP_PROPS::use_file + +[namelist:jules_crop_props=var] +compulsory=true +description=Names of the crop variable, as recognised by JULES +fail-if=len(this) != namelist:jules_crop_props=nvars +length=: +sort-key=4 +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_CROP_PROPS::var +values='cropsowdate','cropttrep','cropttveg','croplatestharvdate' + +[namelist:jules_crop_props=var_name] +compulsory=true +description=Name in file (used if use_file = .true.) +fail-if=len(this) != namelist:jules_crop_props=nvars +length=: +sort-key=6 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_CROP_PROPS::var_name + +[namelist:jules_cropparm] +compulsory=true +description=Click on names for more details + = +ns=namelist/JULES Science Settings/jules_cropparm +sort-key=10 +title=Crop parameters +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#namelist-JULES_CROPPARM +widget[rose-config-edit]=cylc8_compat.PageArrayTable + +[namelist:jules_cropparm=allo1_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::allo1_io + +[namelist:jules_cropparm=allo2_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::allo2_io + +[namelist:jules_cropparm=alpha1_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::alpha1_io + +[namelist:jules_cropparm=alpha2_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::alpha2_io + +[namelist:jules_cropparm=alpha3_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::alpha3_io + +[namelist:jules_cropparm=beta1_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::beta1_io + +[namelist:jules_cropparm=beta2_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::beta2_io + +[namelist:jules_cropparm=beta3_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::beta3_io + +[namelist:jules_cropparm=cfrac_l_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::cfrac_l_io + +[namelist:jules_cropparm=cfrac_r_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::cfrac_r_io + +[namelist:jules_cropparm=cfrac_s_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::cfrac_s_io + +[namelist:jules_cropparm=crit_pp_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::crit_pp_io + +[namelist:jules_cropparm=delta_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::delta_io + +[namelist:jules_cropparm=gamma_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::gamma_io + +[namelist:jules_cropparm=initial_c_dvi_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::initial_c_dvi_io + +[namelist:jules_cropparm=initial_carbon_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::initial_carbon_io + +[namelist:jules_cropparm=mu_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::mu_io + +[namelist:jules_cropparm=nu_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::nu_io + +[namelist:jules_cropparm=pp_sens_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::pp_sens_io + +[namelist:jules_cropparm=remob_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::remob_io + +[namelist:jules_cropparm=rt_dir_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::rt_dir_io + +[namelist:jules_cropparm=sen_dvi_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::sen_dvi_io + +[namelist:jules_cropparm=t_bse_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::t_bse_io + +[namelist:jules_cropparm=t_max_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::t_max_io + +[namelist:jules_cropparm=t_mort_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::t_mort_io + +[namelist:jules_cropparm=t_opt_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::t_opt_io + +[namelist:jules_cropparm=tt_emr_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::tt_emr_io + +[namelist:jules_cropparm=yield_frac_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=ncpft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/crop_params.nml.html#JULES_CROPPARM::yield_frac_io + +[namelist:jules_deposition] +compulsory=true +description=Configuration of atmospheric deposition +ns=namelist/JULES Science Settings/jules_deposition +title=Deposition +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#namelist-JULES_DEPOSITION + +[namelist:jules_deposition=dep_h2_soil_scheme] +compulsory=true +description=Scheme for H2 soil deposition +fail-if=( this == 2 and namelist:jules_model_environment=l_jules_parent == 1 ) ; # The Paulot et al. H2 scheme is not yet fully implemented for UM-coupled JULES applications (when JULES deposition called from UKCA): only Conrad & Seiler scheme available, dep_h2_soil_scheme = 1 +sort-key=5f +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION::dep_h2_soil_scheme +value-titles=Conrad & Seiler H2 deposition scheme,Paulot et al. H2 deposition scheme +values=1,2 + +[namelist:jules_deposition=dry_dep_model] +compulsory=true +description=Dry deposition model +sort-key=2 +trigger=namelist:jules_deposition_species=dd_ice_coeff_io: 2; + =namelist:jules_deposition_species=dep_species_name_io: 1,2; + =namelist:jules_deposition_species=dep_species_rmm_io: 2; + =namelist:jules_deposition_species=diffusion_coeff_io: 2; + =namelist:jules_deposition_species=diffusion_corr_io: 2; + =namelist:jules_deposition_species=r_tundra_io: 2; + =namelist:jules_deposition_species=rsurf_std_io: 2; + =namelist:jules_deposition_species_specific=ch4_mml_io: 2; + =namelist:jules_deposition_species_specific=ch4_scaling_io: 2; + =namelist:jules_deposition_species_specific=ch4_up_flux_io: 2; + =namelist:jules_deposition_species_specific=ch4dd_tundra_io: 2; + =namelist:jules_deposition_species_specific=cuticle_o3_io: 2; + =namelist:jules_deposition_species_specific=h2dd_c_io: 2; + =namelist:jules_deposition_species_specific=h2dd_m_io: 2; + =namelist:jules_deposition_species_specific=h2dd_q_io: 2; + =namelist:jules_deposition_species_specific=r_wet_soil_o3_io: 2; +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION::dry_dep_model +value-titles=JULES with restricted UKCA deposition,JULES with flexible UKCA deposition +values=1,2 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_deposition=dzl_const] +compulsory=true +description=Constant separation for boundary layer levels (m) +range=0: +sort-key=6 +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION::dzl_const + +[namelist:jules_deposition=l_deposition] +compulsory=true +description=Switch to enable JULES-based atmospheric dry deposition +fail-if=(this == '.true.' and namelist:jules_surface=l_aggregate == ".true.") ; # Deposition does not work with aggregated tile +sort-key=1 +trigger=namelist:jules_deposition=dep_h2_soil_scheme: .true.; + =namelist:jules_deposition=dry_dep_model: .true.; + =namelist:jules_deposition=dzl_const: .true.; + =namelist:jules_deposition=l_deposition_flux: .true.; + =namelist:jules_deposition=l_deposition_gc_corr: .true.; + =namelist:jules_deposition=l_ukca_ddep_lev1: .true.; + =namelist:jules_deposition=l_ukca_ddepo3_ocean: .true.; + =namelist:jules_deposition=l_ukca_dry_dep_so2wet: .true.; + =namelist:jules_deposition=l_ukca_emsdrvn_ch4: .true.; + =namelist:jules_deposition=ndry_dep_species: .true.; + =namelist:jules_deposition=tundra_s_limit: .true.; + =namelist:jules_deposition_species: .true.; + =namelist:jules_deposition_species_specific: .true.; + =namelist:jules_temp_fixes=l_fix_drydep_so2_water: .true.; + =namelist:jules_temp_fixes=l_fix_improve_drydep: .true.; + =namelist:jules_temp_fixes=l_fix_ukca_h2dd_x: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION::l_deposition + +[namelist:jules_deposition=l_deposition_flux] +compulsory=true +description=Switch to enable calculation of deposition fluxes +sort-key=4a +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION::l_deposition_flux + +[namelist:jules_deposition=l_deposition_from_ukca] +compulsory=true +description=Switch to call JULES-based deposition routines from ukca_chemistry_ctl +fail-if=( this == '.false.' and namelist:jules_model_environment=l_jules_parent == 1 ) ; # For UM_JULES applications, only the call to the deposition routines from the UKCA is currently available + =( this == '.true.' and namelist:jules_model_environment=l_jules_parent == 0 ) ; # Deposition switch cannot be true in JULES standalone as JULES-based deposition routines called from UKCA +sort-key=5a +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION::l_deposition_from_ukca + +[namelist:jules_deposition=l_deposition_gc_corr] +compulsory=true +description=Switch to correct stomatal conductance for bare soil evaporation +fail-if=( this == '.true.' and namelist:jules_model_environment=l_jules_parent == 1 ) ; # For UM_JULES applications, stomatal conductance corrected for bare soil evaporation is not available in the UKCA +sort-key=4b +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION::l_deposition_gc_corr + +[namelist:jules_deposition=l_ukca_ddep_lev1] +compulsory=true +description=Apply dry deposition losses only from the lowest level (true) or all levels (false) in the atmospheric boundary layer +sort-key=5b +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION::l_ukca_ddep_lev1 + +[namelist:jules_deposition=l_ukca_ddepo3_ocean] +compulsory=true +description=Use a mechanistic calculation for ocean ozone deposition +fail-if=( this == '.true.' and namelist:jules_model_environment=l_jules_parent == 0 ) ; # Deposition switch not available in JULES standalone as requires >75% open water fraction +sort-key=5c +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION::l_ukca_ddepo3 + +[namelist:jules_deposition=l_ukca_dry_dep_so2wet] +compulsory=true +description=Accounting for surface wetness in the dry deposition for SO2 +fail-if=( this == '.true.' and namelist:jules_model_environment=l_jules_parent == 0 ) ; # Deposition switch not fully implemented in JULES standalone +sort-key=5d +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION::l_ukca_dry_dep_so2wet + +[namelist:jules_deposition=l_ukca_emsdrvn_ch4] +compulsory=true +description=CH4 emission driven UKCA +sort-key=5e +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION::l_ukca_emsdrvn_ch4 + +[namelist:jules_deposition=ndry_dep_species] +compulsory=true +description=Number of species for dry deposition +range=1:200 +sort-key=3 +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION::ndry_dep_species + +[namelist:jules_deposition=tundra_s_limit] +compulsory=true +description=sine of latitude of southern limit of tundra +range=-1:1 +sort-key=7 +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION::tundra_s_limit + +[namelist:jules_deposition_species] +compulsory=true +description=Deposition parameters that depend on species +duplicate=true +ns=namelist/JULES Science Settings/jules_deposition/jules_deposition_species +title=Deposition Species +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#namelist-JULES_DEPOSITION_SPECIES + +[namelist:jules_deposition_species=dd_ice_coeff_io] +compulsory=true +description=Coefficients for quadratic dependency of dry deposition to ice +fail-if=any(this == -1073741824.0) ; # Invalid parameter value(s) +length=3 +sort-key=6 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION_SPECIES::dd_ice_coeff_io + +[namelist:jules_deposition_species=dep_species_name_io] +compulsory=true +description=Name of chemical species to be deposited +fail-if=(this == "'unset'") ; # Invalid name for deposited species +sort-key=01 +trigger=namelist:jules_deposition_species=dd_ice_coeff_io: this == "'SO2'" or this == "'HNO3'" or this == "'HONO2'" or this == "'ISON'" or this == "'HCl'" or this == "'HOCl'" or this == "'HBr'" or this == "'HOBr'" ; + =namelist:jules_deposition_species=diffusion_corr_io: this == "'NO2'" or this == "'O3'" or this == "'SO2'" or this == "'NH3'" or this == "'PAN'" or this == "'MPAN'" or this == "'PPAN'" or this == "'ONITU'" ; + =namelist:jules_deposition_species=r_tundra_io: this == "'NO2'" or this == "'O3'" or this == "'CO'" or this == "'H2'" or this == "'PAN'" or this == "'MPAN'" or this == "'PPAN'" or this == "'ONITU'" ; +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION_SPECIES::dep_species_name_io + +[namelist:jules_deposition_species=dep_species_rmm_io] +compulsory=true +description=Relative molecular mass (g mol-1), used in calculation of quasi-laminar resistance (Rb) +range=0: +sort-key=02a +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION_SPECIES::dep_species_rmm_io + +[namelist:jules_deposition_species=diffusion_coeff_io] +compulsory=true +description=Diffusion coefficient (m2 s-1), used in calculation of quasi-laminar resistance (Rb) +range=-1,0: +sort-key=02b +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION_SPECIES::diffusion_coeff_io + +[namelist:jules_deposition_species=diffusion_corr_io] +compulsory=true +description=Diffusion correction for stomatal conductance +range=0: +sort-key=04 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION_SPECIES::diffusion_corr_io + +[namelist:jules_deposition_species=r_tundra_io] +compulsory=true +description=Surface resistance used in tundra region (s m-1) +range=0:1.0e+30 +sort-key=05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION_SPECIES::r_tundra_io + +[namelist:jules_deposition_species=rsurf_std_io] +compulsory=true +description=Standard values of surface resistance (s m-1) +fail-if=len(this) != (namelist:jules_surface_types=npft)+(namelist:jules_surface_types=nnvg) +length=: +range=0:1.0e+30 +sort-key=03 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION_SPECIES::rsurf_std_io + +[namelist:jules_deposition_species_specific] +compulsory=true +description=Deposition parameters that depend on species +ns=namelist/JULES Science Settings/jules_deposition/jules_deposition_species_specific +title=Deposition Species Specific +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#namelist-JULES_DEPOSITION_SPECIES + +[namelist:jules_deposition_species_specific=ch4_mml_io] +compulsory=true +description=Factor to convert methane flux to dry dep velocity +range=0: +sort-key=02b +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION_SPECIES::ch4_mml_io + +[namelist:jules_deposition_species_specific=ch4_scaling_io] +compulsory=true +description=Scaling applied to CH4 soil uptake +range=0: +sort-key=02a +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION_SPECIES::ch4_scaling_io + +[namelist:jules_deposition_species_specific=ch4_up_flux_io] +compulsory=true +description=Uptake of methane to different surface types +fail-if=len(this) != (namelist:jules_surface_types=npft)+(namelist:jules_surface_types=nnvg) +length=: +range=0: +sort-key=02c +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION_SPECIES::ch4_up_flux_io + +[namelist:jules_deposition_species_specific=ch4dd_tundra_io] +compulsory=true +description=Coefficients of cubic fit for CH4 loss to tundra +fail-if=any(this == -1073741824.0) ; # Invalid parameter value(s) +length=4 +sort-key=02d +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION_SPECIES::ch4dd_tundra_io + +[namelist:jules_deposition_species_specific=cuticle_o3_io] +compulsory=true +description=Constant in calculation of cuticular resistance for ozone (s m-1) +range=0:1.0e+30 +sort-key=1a +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION_SPECIES::cuticle_o3_io + +[namelist:jules_deposition_species_specific=h2dd_c_io] +compulsory=true +description=Constant in quadratic function for hydrogen deposition +fail-if=len(this) != (namelist:jules_surface_types=npft)+(namelist:jules_surface_types=nnvg) + =any(this == -1073741824.0) ; # Invalid parameter value(s) +length=: +sort-key=03a +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION_SPECIES::h2dd_c_io + +[namelist:jules_deposition_species_specific=h2dd_m_io] +compulsory=true +description=Coefficient of first order term in quadratic function for hydrogen deposition +fail-if=len(this) != (namelist:jules_surface_types=npft)+(namelist:jules_surface_types=nnvg) + =any(this == -1073741824.0) ; # Invalid parameter value(s) +length=: +sort-key=03b +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION_SPECIES::h2dd_m_io + +[namelist:jules_deposition_species_specific=h2dd_q_io] +compulsory=true +description=Coefficient of second order term in quadratic function for hydrogen deposition +fail-if=len(this) != (namelist:jules_surface_types=npft)+(namelist:jules_surface_types=nnvg) + =any(this == -1073741824.0) ; # Invalid parameter value(s) +length=: +sort-key=03c +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION_SPECIES::h2dd_q_io + +[namelist:jules_deposition_species_specific=r_wet_soil_o3_io] +compulsory=true +description=Wet soil surface resistance for ozone (s m-1) +range=0:1.0e+30 +sort-key=01b +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_deposition.nml.html#JULES_DEPOSITION_SPECIES::r_wet_soil_o3_io + +[namelist:jules_drive] +compulsory=true +description=Configuration of meteorological forcing data +ns=namelist/Driving data +sort-key=07 +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#namelist-JULES_DRIVE +widget[rose-config-edit]=pages.PageWithVariableTable --nvar nvars var var_name tpl_name interp + +[namelist:jules_drive=bl_height] +compulsory=true +description=Height of boundary layer (m) +sort-key=15 +type=real + +[namelist:jules_drive=data_end] +compulsory=true +description=End time of the last timestep of data +pattern=\d{4}-\d{2}-\d{2}\s{1}\d{2}:\d{2}:\d{2} +sort-key=19 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::data_end + +[namelist:jules_drive=data_period] +compulsory=true +description=Period of the data + = -2 => Annual, -1 => Monthly, > 1 => Period in seconds +range=-2,-1,1: +sort-key=20 +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::data_period + +[namelist:jules_drive=data_start] +compulsory=true +description=Start time of the first timestep of data +pattern=\d{4}-\d{2}-\d{2}\s{1}\d{2}:\d{2}:\d{2} +sort-key=18 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::data_start + +[namelist:jules_drive=diff_frac_const] +compulsory=true +description=Fraction of downward shortwave radiation assumed to be diffuse +range=0:1 +sort-key=31 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::diff_frac_const + +[namelist:jules_drive=dur_conv_rain] +compulsory=true +description=Duration of a convective rainfall event in seconds +range=0: +sort-key=07 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::dur_conv_rain + +[namelist:jules_drive=dur_conv_snow] +compulsory=true +description=Duration of a convective snowfall event in seconds +range=0: +sort-key=09 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::dur_conv_snow + +[namelist:jules_drive=dur_ls_rain] +compulsory=true +description=Duration of a large-scale rainfall event in seconds +range=0: +sort-key=08 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::dur_ls_rain + +[namelist:jules_drive=dur_ls_snow] +compulsory=true +description=Duration of a large-scale snowfall event in seconds +range=0: +sort-key=10 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::dur_ls_snow + +[namelist:jules_drive=file] +compulsory=true +description=If read_list = TRUE, file to read list of data file names and times from + =If read_list = FALSE, file or file name template for data files +sort-key=23 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::file + +[namelist:jules_drive=interp] +compulsory=true +description=Method of time interpolation for each variable in var +fail-if=len(this) != namelist:jules_drive=nvars +length=: +sort-key=28 +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::interp +values='b','c','f','i','nb','nc','nf' + +[namelist:jules_drive=l_daily_disagg] +compulsory=true +description=Use daily disaggregator +fail-if=this == '.true.' and namelist:jules_drive=data_period != 86400; # Daily disaggregator requires daily data + = this == '.true.' and '00:00:00' not in namelist:jules_drive=data_start; # Daily disaggregator requires data start time of 00:00:00 + = this == '.true.' and '00:00:00' not in namelist:jules_time=main_run_start; # Daily disaggregator requires run start time of 00:00:00 + = this == '.true.' and '00:00:00' not in namelist:jules_spinup=spinup_start; # Daily disaggregator requires spinup start time of 00:00:00 + = this == '.true.' and not any(namelist:jules_drive=var == "'lw_down'"); # Daily disaggregator requires that lw_down and sw_down are present in var + = this == '.true.' and not any(namelist:jules_drive=var == "'dt_range'"); # Daily disaggregator requires that dt_range is present in var +sort-key=02 +trigger=namelist:jules_drive=l_disagg_const_rh: .true.; + = namelist:jules_drive=dur_conv_rain: .true.; + = namelist:jules_drive=dur_ls_rain: .true.; + = namelist:jules_drive=dur_conv_snow: .true.; + = namelist:jules_drive=dur_ls_snow: .true.; + = namelist:jules_drive=precip_disagg_method: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::l_daily_disagg + +[namelist:jules_drive=l_disagg_const_rh] +compulsory=true +description=Keep relative humidity constant over the day +sort-key=06 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::l_disagg_const_rh + +[namelist:jules_drive=l_perturb_driving] +compulsory=true +description=Apply perturbation to driving data +sort-key=02 +trigger=namelist:jules_drive=temperature_abs_perturbation: .true.; + = namelist:jules_drive=precip_rel_perturbation: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::l_perturb_driving + +[namelist:jules_drive=nfiles] +compulsory=true +description=Number of files to read names and start times for +range=0: +sort-key=22 +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::nfiles + +[namelist:jules_drive=nvars] +compulsory=true +description=Number of forcing variables that will be provided +fail-if=this == 2 and not namelist:jules_model_environment=lsm_id == 3; # Only standalone Rivers is allowed to have two driving variables. +range=2,7:13 +sort-key=24 +trigger=namelist:jules_drive=var: this > 0; + = namelist:jules_drive=var_name: this > 0; + = namelist:jules_drive=tpl_name: this > 0; + = namelist:jules_drive=interp: this > 0; +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::nfiles + +[namelist:jules_drive=precip_disagg_method] +compulsory=true +description=Disaggregation method for precipitation +sort-key=12 +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::precip_disagg_method +value-titles=No disaggregation,IMOGEN method,IMOGEN method with no upper limit,Random wet and dry timesteps +values=1,2,3,4 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_drive=precip_rel_perturbation] +compulsory=true +description=Relative perturbation for precipitation variables (a multiplicative factor). +fail-if=this < 0.0 +range=0: +sort-key=04 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::precip_rel_perturbation + +[namelist:jules_drive=read_list] +compulsory=true +description=Use list of file names with start times +sort-key=21 +trigger=namelist:jules_drive=nfiles: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::read_list + +[namelist:jules_drive=t_for_con_rain] +compulsory=true +description=Temperature (K) at or above which rainfall is assumed to be convective +range=0: +sort-key=30 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::t_for_con_rain + +[namelist:jules_drive=t_for_snow] +compulsory=true +description=Temperature (K) at or below which precipitation is assumed to be snowfall +range=0: +sort-key=29 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::t_for_snow + +[namelist:jules_drive=temperature_abs_perturbation] +compulsory=true +description=Absolute perturbation amount to add to temperature. Can be positive or negative. +range=0: +sort-key=03 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::temperature_abs_perturbation + +[namelist:jules_drive=tpl_name] +compulsory=true +description=String to substitute into the file name template (used if use_file = .true.) +fail-if=len(this) != namelist:jules_drive=nvars +length=: +sort-key=27 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::tpl_name + +[namelist:jules_drive=var] +compulsory=true +description=Forcing variable names as recognised by JULES +fail-if=len(this) != namelist:jules_drive=nvars; + = not any(this == "'pstar'") and not namelist:jules_model_environment=lsm_id == 3; # pstar is required + = not any(this == "'q'") and not namelist:jules_model_environment=lsm_id == 3; # q is required + = not any(this == "'t'") and not namelist:jules_model_environment=lsm_id == 3; # t is required + = any(this == "'rad_net'") and not any(this == "'sw_down'") and not namelist:jules_model_environment=lsm_id == 3; # If rad_net is given, sw_down must be given + = any(this == "'lw_net'") and not any(this == "'sw_net'") and not namelist:jules_model_environment=lsm_id == 3; # If lw_net is given, sw_net must be given + = any(this == "'lw_down'") and (not any(this == "'sw_down'") and not any(this == "'sw_net'")) and not namelist:jules_model_environment=lsm_id == 3; # If lw_down is given, sw_down or sw_net must be given + = any(this == "'tot_rain'") and not any(this == "'tot_snow'") and not namelist:jules_model_environment=lsm_id == 3; # If tot_rain is given, tot_snow must be given + = any(this == "'ls_rain'") and namelist:jules_surface=l_point_data == '.true.' and not namelist:jules_model_environment=lsm_id == 3; # If l_point_data is TRUE, precip or tot_rain/tot_snow must be used + = any(this == "'ls_rain'") and not any(this == "'con_rain'") and not namelist:jules_model_environment=lsm_id == 3; # If ls_rain is given, con_rain must be given + = any(this == "'ls_snow'") and not any(this == "'con_snow'") and not namelist:jules_model_environment=lsm_id == 3; # If ls_snow is given, con_snow must be given + = any(this == "'u'") and not any(this == "'v'") and not namelist:jules_model_environment=lsm_id == 3; # If u is given, v must be given + = any(this == "'sub_surf_roff'") and not namelist:jules_model_environment=lsm_id == 3; # sub_surf_roff is only allowed for driving standalone Rivers + = any(this == "'surf_roff'") and not namelist:jules_model_environment=lsm_id == 3; # surf_roff is only allowed for driving standalone Rivers +length=: +sort-key=25 +trigger=namelist:jules_drive=t_for_snow: any(this == "'precip'"); + = namelist:jules_drive=t_for_con_rain: any(this == "'precip'") or any(this == "'tot_rain'"); + = namelist:jules_drive=diff_frac_const: not any(this == "'diff_rad'"); +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::var +values='con_rain','con_snow','diff_rad','dt_range','ls_rain','ls_snow','lw_down','lw_net','precip','pstar','q','rad_net','sw_down','sw_net','t','tot_rain','tot_snow','u','v','wind','sub_surf_roff','surf_roff' + +[namelist:jules_drive=var_name] +compulsory=true +description=Name of the variable in file for each variable in var +fail-if=len(this) != namelist:jules_drive=nvars +length=: +sort-key=26 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::var_name + +[namelist:jules_drive=z1_tq_file] +compulsory=true +description=File to read spatially varying z1_tq from +sort-key=16 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::z1_tq_file + +[namelist:jules_drive=z1_tq_in] +compulsory=true +description=Height (m) at which the temperature and humidity data are valid for every point +sort-key=15 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::z1_tq_in + +[namelist:jules_drive=z1_tq_var_name] +compulsory=true +description=Name of the variable containing the data for z1_tq +sort-key=17 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::z1_tq_var_name + +[namelist:jules_drive=z1_tq_vary] +compulsory=true +description=Use spatially varying z1_tq +sort-key=14 +trigger=namelist:jules_drive=z1_tq_in: .false.; + = namelist:jules_drive=z1_tq_file: .true.; + = namelist:jules_drive=z1_tq_var_name: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::z1_tq_vary + +[namelist:jules_drive=z1_uv_in] +compulsory=true +description=Height (m) at which the wind data are valid for every point +sort-key=13 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/drive.nml.html#JULES_DRIVE::z1_uv_in + +[namelist:jules_flake] +compulsory=true +description=Configuration of the FLake model, only required if l_flake_model=true +ns=namelist/Ancillary data/FLake +sort-key=20 +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#namelist-JULES_FLAKE + +[namelist:jules_flake=const_val] +compulsory=true +description=Constant value for all points (used if use_file = .false.) +fail-if=len(this) != namelist:jules_flake=nvars +length=: +sort-key=4 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_FLAKE::const_val + +[namelist:jules_flake=file] +compulsory=true +description=If read_list = TRUE, file to read list of file names + =If read_list = FALSE, file or file name template + =from which to read FLake properties. +sort-key=5 +trigger=namelist:jules_flake=tpl_name: '%vv' in this; + =namelist:jules_flake=read_list: '%vv' not in this; +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_FLAKE::file + +[namelist:jules_flake=nvars] +compulsory=true +range=0: +sort-key=1 +trigger=namelist:jules_flake=var: this > 0; + = namelist:jules_flake=use_file: this > 0; +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_FLAKE::nvars + +[namelist:jules_flake=read_from_dump] +compulsory=true +sort-key=2 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_FLAKE::read_from_dump + +[namelist:jules_flake=read_list] +compulsory=true +description=Use list of file names; one per line for each of nvars. +fail-if=this == '.true.' and '%vv' in namelist:jules_flake=file; # Cannot use variable name templating while reading a list of files. +sort-key=5a +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_FLAKE::read_list + +[namelist:jules_flake=tpl_name] +compulsory=true +description=String to substitute into the file name template (used if use_file = .true.) +fail-if=len(this) != namelist:jules_flake=nvars +length=: +sort-key=8 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_FLAKE::tpl_name + +[namelist:jules_flake=use_file] +compulsory=true +description=Read variable from file +fail-if=len(this) != namelist:jules_flake=nvars +length=: +sort-key=3 +trigger=namelist:jules_flake=file: any(this == '.true.'); + = namelist:jules_flake=var_name: any(this == '.true.'); + = namelist:jules_flake=const_val: not all(this == '.true.'); +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_FLAKE::use_file + +[namelist:jules_flake=var] +compulsory=true +description=Names of the FLake variables, as recognised by JULES +fail-if=len(this) != namelist:jules_flake=nvars +length=: +sort-key=6 +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_FLAKE::var +values='lake_depth' + +[namelist:jules_flake=var_name] +compulsory=true +description=Name in file (used if use_file = .true.) +fail-if=len(this) != namelist:jules_flake=nvars +length=: +sort-key=7 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_FLAKE::var_name + +[namelist:jules_frac] +compulsory=true +description=Configuration of the surface type fractional coverage +ns=namelist/Ancillary data/Fractions +sort-key=16 +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#namelist-JULES_FRAC + +[namelist:jules_frac=file] +compulsory=true +description=Name of the file to read surface type fractional coverage data +sort-key=2 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_FRAC::file + +[namelist:jules_frac=frac_name] +description=Name of the variable containing the surface type fractional coverage data +sort-key=3 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_SURF_HGT::frac_name + +[namelist:jules_frac=read_from_dump] +compulsory=true +description=Read surface type fractional coverage from the dump file +sort-key=1 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_FRAC::read_from_dump + +#[namelist:jules_hydrology] has moved to jules-shared/jules-hydrology +[namelist:jules_hydrology=b_pdm] +compulsory=true +description=Shape factor for the pdf +sort-key=Panel-G04a +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::b_pdm + +[namelist:jules_hydrology=dz_pdm] +compulsory=true +description=Depth of soil considered by PDM (m) +sort-key=Panel-G04a +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::dz_pdm + +[namelist:jules_hydrology=l_limit_gsoil] +compulsory=true +description=Limit soil conductance above critical soil moisture. +sort-key=Panel-G05 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::l_limit_gsoil + +[namelist:jules_hydrology=l_pdm] +compulsory=true +description=Use PDM scheme +sort-key=Panel-G04 +trigger=namelist:jules_hydrology=b_pdm: .true.; + = namelist:jules_hydrology=dz_pdm: .true.; + = namelist:jules_hydrology=l_spdmvar: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::l_pdm + +[namelist:jules_hydrology=l_spdmvar] +compulsory=true +description=Use a linear function of topographic slope to calculate S0/Smax within the PDM scheme +fail-if=this == '.true.' and namelist:jules_hydrology=l_pdm == '.false.'; # clarify that l_spdmvar=T can only be used with l_pdm=T +sort-key=Panel-G04b +trigger=namelist:jules_hydrology=slope_pdm_max: .true.; + =namelist:jules_hydrology=s_pdm: .false.; + =namelist:jules_pdm: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::l_spdmvar + +[namelist:jules_hydrology=l_top] +compulsory=true +description=Use TOPMODEL scheme +fail-if=this == '.true.' and namelist:jules_hydrology=l_pdm == '.true.'; # Can't have TOPMODEL and PDM together +sort-key=Panel-G03 +trigger=namelist:jules_hydrology=zw_max: .true.; + = namelist:jules_hydrology=ti_max: .true.; + = namelist:jules_hydrology=ti_wetl: .true.; + = namelist:jules_hydrology=nfita: .true.; + = namelist:jules_hydrology=l_wetland_unfrozen: .true.; + = namelist:jules_soil_biogeochem=ch4_substrate: .true.; + = namelist:jules_soil_biogeochem=l_ch4_tlayered: .true.; + = namelist:jules_soil_biogeochem=l_ch4_interactive: .true.; + = namelist:jules_top: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::l_top + +[namelist:jules_hydrology=l_wetland_unfrozen] +compulsory=true +description=Use unfrozen wetland TOPMODEL scheme +sort-key=Panel-G03a +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::l_wetland_unfrozen + +[namelist:jules_hydrology=nfita] +compulsory=true +description=Number of values tried in the fitting of exponential wetland/ + =saturation fraction functions with water table depth. +sort-key=Panel-G03b +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::nfita + +[namelist:jules_hydrology=s_pdm] +compulsory=true +description=Minimum storage below which there is no surface saturation + =considered by PDM (fraction of maximum storage, as S0/Smax) +sort-key=Panel-G04b1 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::s_pdm + +[namelist:jules_hydrology=slope_pdm_max] +compulsory=true +description=Maximum slope (degrees) that will produce a S0/Smax value of zero + =in the linear function of topographic slope to calculate S0/Smax + =within the PDM scheme. +sort-key=Panel-G04b1 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::slope_pdm_max + +[namelist:jules_hydrology=ti_max] +compulsory=true +description=Maximum possible value of the topographic index +sort-key=Panel-G03b +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::ti_max + +[namelist:jules_hydrology=ti_wetl] +compulsory=true +description=Calibration parameter used in calculation of the wetland fraction +sort-key=Panel-G03b +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::ti_wetl + +[namelist:jules_hydrology=zw_max] +compulsory=true +description=Maximum allowed depth to the water table (m) +sort-key=Panel-G03b +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_hydrology.nml.html#JULES_HYDROLOGY::zw_max + +[namelist:jules_initial] +compulsory=true +ns=namelist/Initial conditions +sort-key=10 +url=https://metoffice.github.io/jules/vn8.2/namelists/initial_conditions.nml.html#namelist-JULES_INITIAL +widget[rose-config-edit]=pages.PageWithVariableTable --nvar nvars var use_file var_name tpl_name const_val + +[namelist:jules_initial=const_val] +compulsory=true +description=Constant value for all points (used if use_file = .false.) +fail-if=len(this) != namelist:jules_initial=nvars +length=: +sort-key=10 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/initial_conditions.nml.html#JULES_INITIAL::const_val + +[namelist:jules_initial=dump_file] +compulsory=true +description=Given file is a JULES dump file +sort-key=01 +trigger=namelist:jules_frac=read_from_dump : .true.; + = namelist:jules_vegetation_props=read_from_dump : .true.; + = namelist:jules_soil_props=read_from_dump : .true.; + = namelist:jules_top=read_from_dump : .true.; + = namelist:jules_agric=read_from_dump : .true.; + = namelist:jules_crop_props=read_from_dump : .true.; + = namelist:jules_irrig_props=read_from_dump : .true.; + = namelist:jules_co2=read_from_dump : .true.; + = namelist:jules_water_resources_props=read_from_dump : .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/initial_conditions.nml.html#JULES_INITIAL::dump_file + +[namelist:jules_initial=file] +compulsory=true +description=File to read initial conditions from +sort-key=04 +trigger=namelist:jules_initial=tpl_name: '%vv' in this; +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/initial_conditions.nml.html#JULES_INITIAL::file + +[namelist:jules_initial=l_broadcast_soilt] +compulsory=true +description=Switch to broadcast non-soil tiled initial condition to all soil tiles (including ancils if read from the dump file) +sort-key=03 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/initial_conditions.nml.html#JULES_INITIAL::l_broadcast_soilt + +[namelist:jules_initial=nvars] +compulsory=true +description=Number of initial condition variables provided + = If dump_file = TRUE, 0 indicates all variables should be read from dump +fail-if=this == 0 and namelist:jules_initial=dump_file == '.false.'; # nvars == 0 can only be used with a dump file +range=0,6:32 +sort-key=05 +trigger=namelist:jules_initial=var: this > 0; + = namelist:jules_initial=use_file: this > 0; + = namelist:jules_initial=var_name: this > 0; + = namelist:jules_initial=tpl_name: this > 0; + = namelist:jules_initial=const_val: this > 0; +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/initial_conditions.nml.html#JULES_INITIAL::file + +[namelist:jules_initial=total_snow] +compulsory=true +description=Use simplified initialisation of snow variables +sort-key=02 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/initial_conditions.nml.html#JULES_INITIAL::total_snow + +[namelist:jules_initial=tpl_name] +compulsory=true +description=String to substitute into the file name template (used if use_file = .true.) +fail-if=len(this) != namelist:jules_initial=nvars +length=: +sort-key=09 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/initial_conditions.nml.html#JULES_INITIAL::tpl_name + +[namelist:jules_initial=use_file] +compulsory=true +description=Read variable from file +fail-if=len(this) != namelist:jules_initial=nvars +length=: +sort-key=07 +trigger=namelist:jules_initial=var_name: any(this == '.true.'); + = namelist:jules_initial=const_val: not all(this == '.true.'); +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/initial_conditions.nml.html#JULES_INITIAL::use_file + +[namelist:jules_initial=var] +compulsory=true +description=Name of initial condition variable, as recognised by JULES +fail-if=len(this) != namelist:jules_initial=nvars; + = not any(this == "'canopy'"); # canopy must be given + = not any(this == "'cs'"); # cs must be given + = not any(this == "'snow_tile'"); # snow_tile must be given + = namelist:jules_prescribed=n_datasets == 0 and not any(this == "'sthuf'"); # sthuf must be given here if not prescribed FIXME: is there a way to check all namelist:jules_prescribed_dataset=var to see if one is 'sthuf'? + = not any(this == "'t_soil'"); # t_soil must be given + = not any(this == "'tstar_tile'"); # tstar_tile must be given + = namelist:jules_vegetation=can_rad_mod == 1 and not any(this == "'gs'"); # gs must be given if can_rad_mod=1 + = namelist:jules_vegetation=photo_acclim_model > 1 and not any(this == "'t_growth_gb'"); # t_growth_gb must be given if photo_acclim_model == 2 or 3 + = namelist:jules_vegetation=l_phenol == '.true.' and not any(this == "'lai'"); # lai must be given if l_phenol = TRUE + = namelist:jules_vegetation=l_triffid == '.true.' and not any(this == "'canht'"); # canht must be given if l_triffid = TRUE + = namelist:jules_vegetation=l_veg_compete == '.true.' and not any(this == "'frac'"); # frac must be given if l_veg_compete = TRUE + = namelist:jules_vegetation=l_landuse == '.true.' and not any(this == "'frac_agr_prev'"); # must be given if l_landuse = TRUE + = namelist:jules_vegetation=l_landuse == '.true.' and not any(this == "'wood_prod_fast'"); # must be given if l_landuse = TRUE + = namelist:jules_vegetation=l_landuse == '.true.' and not any(this == "'wood_prod_med'"); # must be given if l_landuse = TRUE + = namelist:jules_vegetation=l_landuse == '.true.' and not any(this == "'wood_prod_slow'"); # must be given if l_landuse = TRUE + = namelist:jules_vegetation=l_nitrogen == '.true.' and not any(this == "'ns'"); # must be given if l_nitrogen = TRUE + = namelist:jules_vegetation=l_nitrogen == '.true.' and not any(this == "'n_inorg'"); # must be given if l_nitrogen = TRUE + = namelist:jules_surface_types=ncpft > 0 and not any(this == "'cropdvi'"); # cropdvi must be given if ncpft > 0 + = namelist:jules_surface_types=ncpft > 0 and not any(this == "'croprootc'"); # croprootc must be given if ncpft > 0 + = namelist:jules_surface_types=ncpft > 0 and not any(this == "'cropharvc'"); # cropharvc must be given if ncpft > 0 + = namelist:jules_surface_types=ncpft > 0 and not any(this == "'cropreservec'"); # cropreservec must be given if ncpft > 0 + = namelist:jules_surface_types=ncpft > 0 and namelist:jules_vegetation=l_phenol == '.false.' and not any(this == "'croplai'"); # croplai must be given if ncpft > 0 but l_phenol = FALSE + = namelist:jules_surface_types=ncpft > 0 and namelist:jules_vegetation=l_triffid == '.false.' and not any(this == "'cropcanht'"); # cropcanht must be given if ncpft > 0 but l_triffid = FALSE + = namelist:jules_hydrology=l_top == '.true.' and not any(this == "'sthzw'"); # sthzw must be given if l_top = TRUE + = namelist:jules_hydrology=l_top == '.true.' and not any(this == "'zw'"); # zw must be given if l_top = TRUE + = namelist:jules_radiation=l_snow_albedo == '.true.' and not any(this == "'rgrain'"); # rgrain must be given if l_snow_albedo = TRUE + = namelist:jules_initial=total_snow == '.false.' and not any(this == "'rho_snow'"); # rho_snow must be given if total_snow = FALSE + = namelist:jules_initial=total_snow == '.false.' and not any(this == "'snow_depth'"); # snow_depth must be given if total_snow = FALSE + = namelist:jules_initial=total_snow == '.false.' and namelist:jules_vegetation=can_model == 4 and not any(this == "'snow_grnd'"); # snow_grnd must be given if total_snow = FALSE and can_model = 4 + = namelist:jules_initial=total_snow == '.false.' and namelist:jules_snow=nsmax > 0 and not any(this == "'nsnow'"); # nsnow must be given if total_snow = FALSE and nsmax > 0 + = namelist:jules_initial=total_snow == '.false.' and namelist:jules_snow=nsmax > 0 and not any(this == "'snow_ds'"); # snow_ds must be given if total_snow = FALSE and nsmax > 0 + = namelist:jules_initial=total_snow == '.false.' and namelist:jules_snow=nsmax > 0 and not any(this == "'snow_ice'"); # snow_ice must be given if total_snow = FALSE and nsmax > 0 + = namelist:jules_initial=total_snow == '.false.' and namelist:jules_snow=nsmax > 0 and not any(this == "'snow_liq'"); # snow_liq must be given if total_snow = FALSE and nsmax > 0 + = namelist:jules_initial=total_snow == '.false.' and namelist:jules_snow=nsmax > 0 and not any(this == "'tsnow'"); # tsnow must be given if total_snow = FALSE and nsmax > 0 + = namelist:jules_initial=total_snow == '.false.' and namelist:jules_snow=nsmax > 0 and namelist:jules_radiation=l_snow_albedo == '.true.' and not any(this == "'rgrainl'"); # rgrainl must be given if total_snow = FALSE, nsmax > 0 and l_snow_albedo = TRUE + = namelist:jules_soil=l_bedrock == '.true.' and not any(this == "'tsoil_deep'"); # tsoil_deep must be initialised if bedrock is switched on + = namelist:jules_rivers=i_river_vn == 3 and not ( any(this == "'rivers_sto_rp'") or any(namelist:jules_rivers_props=var == "'rivers_storage'") ); # rivers_sto_rp or rivers_storage must be initialised if rivers is switched on and i_river_vn='3' : trip + = ( namelist:jules_rivers=i_river_vn == 3 and not any(this == "'inland_outflow_rp'") ) and any(namelist:oasis_rivers=send_fields == "'inland_outflow'"); # inland_outflow_rp must be initialised when i_river_vn='3' (TRIP) and inland_outflow is requested + = namelist:jules_rivers=i_river_vn == "2" and not any(this == "'rfm_surfstore_rp'"); # rfm_surfstore_rp must be initialised if rivers is switched on and i_river_vn='2' : rfm + = namelist:jules_rivers=i_river_vn == "2" and not any(this == "'rfm_substore_rp'"); # rfm_substore_rp must be initialised if rivers is switched on and i_river_vn='2' : rfm + = namelist:jules_rivers=i_river_vn == "2" and not any(this == "'rfm_flowin_rp'"); # rfm_flowin_rp must be initialised if rivers is switched on and i_river_vn='2' : rfm + = namelist:jules_rivers=i_river_vn == "2" and not any(this == "'rfm_bflowin_rp'"); # rfm_bflowin_rp must be initialised if rivers is switched on and i_river_vn='2' : rfm +length=: +sort-key=06 +url=https://metoffice.github.io/jules/vn8.2/namelists/initial_conditions.nml.html#JULES_INITIAL::var +values='canht','canopy','cropcanht','cropdvi','cropharvc','croplai', + ='cropreservec','croprootc','cs','frac','frac_agr_prev','frac_past_prev', + ='frac_biocrop_prev','gs','lai','n_inorg','nsnow','ns','rfm_bflowin_rp', + ='rfm_flowin_rp','rfm_substore_rp','rfm_surfstore_rp','rgrain','rgrainl', + ='rho_snow','rivers_sto_rp','rivers_outflow_rp','snow_depth','snow_ds', + ='snow_grnd','snow_ice','snow_liq','snow_tile','sthu_irr','sthuf', + ='sthzw','t_growth_gb','t_soil','tsnow','tstar_tile','tsoil_deep', + ='wood_prod_fast','wood_prod_med','wood_prod_slow','years_since_harvest', + ='zw','inland_outflow_rp' + +[namelist:jules_initial=var_name] +compulsory=true +description=Name in file (used if use_file = .true.) +fail-if=len(this) != namelist:jules_initial=nvars +length=: +sort-key=08 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/initial_conditions.nml.html#JULES_INITIAL::var_name + +[namelist:jules_input_grid] +compulsory=true +ns=namelist/Grid configuration/Input grid +sort-key=11 +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#namelist-JULES_INPUT_GRID + +[namelist:jules_input_grid=bedrock_dim_name] +description=Dimension name used when variables have an additional dimension of size ns_deep +sort-key=18 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_INPUT_GRID::bedrock_dim_name + +[namelist:jules_input_grid=bl_level_dim_name] +description=Dimension name used when variables have an additional dimension of size bl_levels +sort-key=20 +type=character + +[namelist:jules_input_grid=cpft_dim_name] +description=Dimension name used when variables have an additional dimension of size ncpft +sort-key=10 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_INPUT_GRID::cpft_dim_name + +[namelist:jules_input_grid=grid_dim_name] +description=Name of the single grid dimension +sort-key=02 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_INPUT_GRID::grid_dim_name + +[namelist:jules_input_grid=grid_is_1d] +compulsory=true +description=Input is on a 1d grid +sort-key=01 +trigger=namelist:jules_input_grid=grid_dim_name: .true.; + = namelist:jules_input_grid=npoints: .true.; + = namelist:jules_input_grid=x_dim_name: .false.; + = namelist:jules_input_grid=y_dim_name: .false.; + = namelist:jules_input_grid=nx: .false.; + = namelist:jules_input_grid=ny: .false.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_INPUT_GRID::grid_is_1d + +[namelist:jules_input_grid=npoints] +compulsory=true +description=Size of the single grid dimension +range=1: +sort-key=03 +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_INPUT_GRID::npoints + +[namelist:jules_input_grid=nvg_dim_name] +description=Dimension name used when variables have an additional dimension of size nnvg +sort-key=11 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_INPUT_GRID::nvg_dim_name + +[namelist:jules_input_grid=nx] +compulsory=true +description=Size of the x dimension +fail-if=this != namelist:jules_rivers_props=nx_rivers and namelist:jules_land_frac=l_use_land_fraction == '.true.'; # If using land fractions for rivers then the input grid needs to be the same as the rivers grid so that the land fractions are copied across to the rivers grid correctly +range=1: +sort-key=06 +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_INPUT_GRID::nx + +[namelist:jules_input_grid=ny] +compulsory=true +description=Size of the y dimension +fail-if=this != namelist:jules_rivers_props=ny_rivers and namelist:jules_land_frac=l_use_land_fraction == '.true.'; # If using land fractions for rivers then the input grid needs to be the same as the rivers grid so that the land fractions are copied across to the rivers grid correctly +range=1: +sort-key=07 +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_INPUT_GRID::ny + +[namelist:jules_input_grid=pft_dim_name] +description=Dimension name used when variables have an additional dimension of size npft +sort-key=09 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_INPUT_GRID::pft_dim_name + +[namelist:jules_input_grid=sclayer_dim_name] +description=Dimension name used when variables have an additional dimension of size dim_cs1 +sort-key=16 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_INPUT_GRID::sclayer_dim_name + +[namelist:jules_input_grid=scpool_dim_name] +description=Dimension name used when variables have an additional dimension of size dim_cs1 +sort-key=17 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_INPUT_GRID::scpool_dim_name + +[namelist:jules_input_grid=snow_dim_name] +description=Dimension name used when variables have an additional dimension of size nsmax +sort-key=15 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_INPUT_GRID::snow_dim_name + +[namelist:jules_input_grid=soil_dim_name] +description=Dimension name used when variables have an additional dimension of size sm_levels +sort-key=14 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_INPUT_GRID::soil_dim_name + +[namelist:jules_input_grid=tile_dim_name] +description=Dimension name used when variables have an additional dimension of size ntiles +sort-key=13 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_INPUT_GRID::tile_dim_name + +[namelist:jules_input_grid=time_dim_name] +description=Name of the time dimension in input files containing time-varying data +sort-key=08 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_INPUT_GRID::time_dim_name + +[namelist:jules_input_grid=tracer_dim_name] +description=Dimension name used when variables have an additional dimension of size ndry_dep_species +sort-key=19 +type=character + +[namelist:jules_input_grid=type_dim_name] +description=Dimension name used when variables have an additional dimension of size ntype +sort-key=12 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_INPUT_GRID::type_dim_name + +[namelist:jules_input_grid=x_dim_name] +description=Name of the x dimension +sort-key=04 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_INPUT_GRID::x_dim_name + +[namelist:jules_input_grid=y_dim_name] +description=Name of the y dimension +sort-key=05 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_INPUT_GRID::y_dim_name + +[namelist:jules_irrig] +compulsory=true +description=Configuration of irrigation demand code +ns=namelist/JULES Science Settings/jules_irrig +sort-key=21 +title=Irrigation options +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_irrig.nml.html#namelist-JULES_IRRIG + +[namelist:jules_irrig=frac_irrig_all_tiles] +compulsory=true +description=Irrigate all tiles + =NOT AVAILABLE TO UM +fail-if=namelist:jules_irrig=set_irrfrac_on_irrtiles == '.true.' and this == '.true.'; # cannot set both frac_irrig_all_tiles and set_irrfrac_on_irrtiles to TRUE +sort-key=f +trigger=namelist:jules_irrig=nirrtile: .false.; + = namelist:jules_irrig=irrigtiles: .false.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_irrig.nml.html#JULES_IRRIG::frac_irrig_all_tiles + +[namelist:jules_irrig=irr_crop] +compulsory=true +description=Switch for how the irrigation model determines when to irrigate. + =0 is the only option available in the UM +sort-key=c +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_irrig.nml.html#JULES_IRRIG::irr_crop +values=0,1,2 + +[namelist:jules_irrig=irrig_option] +compulsory=true +description=Options for applying irrigation + =0: No irrigation + =1: In a future release this will replace l_irrig_dmd (NOT AVAILABLE YET) + =2: Apply irrigation to available irrigated surface types +fail-if=this == 2 and namelist:jules_soil=l_tile_soil == '.true.'; # Tile-based irrigation is not available with soil tiling. +sort-key=b +trigger=namelist:jules_pftparm=irrig_pft_io: 2; + =namelist:jules_surface_types=c3_irrig: 2; + =namelist:jules_surface_types=c4_irrig: 2; +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_irrig.nml.html#JULES_IRRIG::irrig_option +value-titles=No Irrigation, Tile based irrigation +values=0,2 + +[namelist:jules_irrig=irrigtiles] +compulsory=true +description=indices of tiles to be irrigated +fail-if=len(this) != namelist:jules_irrig=nirrtile +length=: +range=1: +sort-key=e +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_irrig.nml.html#JULES_IRRIG::irrigtiles + +[namelist:jules_irrig=l_irrig_dmd] +compulsory=true +description=Use fraction-based irrigation demand code +fail-if=namelist:jules_soil=l_holdwater == '.true.' and this == '.true.'; # Irrigation can't be used with l_holdwater = TRUE + =namelist:jules_water_resources=l_water_irrigation == '.true.' and this == '.false.'; # Irrigation in water resources code requires l_irrig_dmd = TRUE +sort-key=a +trigger=namelist:jules_irrig=irr_crop: .true.; + =namelist:jules_irrig=l_irrig_limit: .true.; + =namelist:jules_irrig=frac_irrig_all_tiles: .true.; + =namelist:jules_irrig=set_irrfrac_on_irrtiles: .true.; + =namelist:jules_irrig=nstep_irrig: .true.; + =namelist:jules_irrig_props: .true.; + =namelist:jules_irrig=irrig_option: .false.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_irrig.nml.html#JULES_IRRIG::l_irrig_dmd + +[namelist:jules_irrig=l_irrig_limit] +compulsory=true +description=Limit irrigation supply + =NOT AVAILABLE TO UM +fail-if=namelist:jules_rivers=l_rivers == '.false.' and this == '.true.'; # l_rivers must TRUE if l_irrig_limit = TRUE + =namelist:jules_rivers=i_river_vn != 3 and this == '.true.'; # i_river_vn must be 3 (trip) if l_irrig_limit = TRUE + =namelist:jules_hydrology=l_top == '.false.' and this == '.true.'; # l_top must TRUE if l_irrig_limit = TRUE + =namelist:jules_water_resources=l_water_irrigation == '.true.' and this == '.true.'; # l_irrig_limit must be F if l_water_irrigation=T + =this == '.true.' and namelist:jules_model_environment=l_jules_parent == 1; # Irrigation limitation is not tested in the UM yet. +sort-key=b +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_irrig.nml.html#JULES_IRRIG::l_irrig_limit + +[namelist:jules_irrig=nirrtile] +compulsory=true +description=Number of tile to be irrigated +range=0: +sort-key=d +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_irrig.nml.html#JULES_IRRIG::nirrtile + +[namelist:jules_irrig=nstep_irrig] +compulsory=true +description=Number of model timesteps per irrigation update step +range=1: +sort-key=h +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_irrig.nml.html#JULES_IRRIG::nstep_irrig + +[namelist:jules_irrig=set_irrfrac_on_irrtiles] +compulsory=true +description=Irrigate only irrigated tiles + =NOT AVAILABLE TO UM +fail-if=namelist:jules_irrig=frac_irrig_all_tiles == '.true.' and this == '.true.'; # cannot set both frac_irrig_all_tiles and set_irrfrac_on_irrtiles to TRUE +sort-key=g +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_irrig.nml.html#JULES_IRRIG::set_irrfrac_on_irrtiles + +[namelist:jules_irrig_props] +compulsory=true +description=Configuration of irrigation properties +ns=namelist/Ancillary data/Irrigation properties +sort-key=23 +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#namelist-JULES_IRRIG_PROPS + +[namelist:jules_irrig_props=const_frac_irr] +compulsory=true +description=Constant value of irrigation fraction to be applied to gridbox +sort-key=e +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_IRRIG_PROPS::const_frac_irr + +[namelist:jules_irrig_props=const_irrfrac_irrtiles] +compulsory=true +description=Constant value of irrigation fraction to be applied to irrigated tiles +sort-key=m +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_IRRIG_PROPS::const_irrfrac_irrtiles + +[namelist:jules_irrig_props=irrig_frac_file] +compulsory=true +description=Path to file containing irrigation fraction +sort-key=c +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_IRRIG_PROPS::irrig_frac_file + +[namelist:jules_irrig_props=read_file] +compulsory=true +description=Read irrigation fraction from file +sort-key=b +trigger=namelist:jules_irrig_props=irrig_frac_file: .true.; + = namelist:jules_irrig_props=var_name: .true.; + = namelist:jules_irrig_props=const_frac_irr: .false.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_IRRIG_PROPS::read_file + +[namelist:jules_irrig_props=read_from_dump] +compulsory=true +description=Read irrigation demand ancillary data from the dump file +sort-key=a +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_IRRIG_PROPS::read_from_dump + +[namelist:jules_irrig_props=var_name] +compulsory=true +description=Name of irrigation fraction variable in file +sort-key=d +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_IRRIG_PROPS::var_name + +[namelist:jules_land_frac] +compulsory=true +description=When the input grid is a single point, that single point is assumed to be 100% land +ns=namelist/Grid configuration/Land fraction +sort-key=13 +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#namelist-JULES_LAND_FRAC + +[namelist:jules_land_frac=file] +description=File to read land fraction data from +sort-key=1 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_LAND_FRAC::file + +[namelist:jules_land_frac=l_use_land_fraction] +compulsory=true +description=Use land fractions and pass these to river routing +fail-if=this == '.true.' and ( namelist:jules_rivers=i_river_vn != 3 or namelist:jules_model_environment=lsm_id != 3 ); # Land fractions are only used by TRIP in Rivers-standalone to determine coastal endorheic basins. +sort-key=3 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_LAND_FRAC::l_use_land_fraction + +[namelist:jules_land_frac=land_frac_name] +description=Name of the variable containing the land fraction data +sort-key=2 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_LAND_FRAC::land_frac_name + +[namelist:jules_latlon] +compulsory=true +ns=namelist/Grid configuration/Latitude and longitude +sort-key=12 +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#namelist-JULES_LATLON +widget[rose-config-edit]=pages.PageWithVariableTable --nvar nvars var use_file var_name tpl_name const_val + +[namelist:jules_latlon=const_val] +compulsory=true +description=Constant value for all points (used if use_file = .false.) +fail-if=len(this) != namelist:jules_latlon=nvars +length=: +sort-key=8 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_LATLON::const_val + +[namelist:jules_latlon=file] +description=File to read variables from +sort-key=3 +trigger=namelist:jules_latlon=tpl_name: '%vv' in this; +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_LATLON::file + +[namelist:jules_latlon=l_coord_latlon] +compulsory=true +description=Switch indicating if model grid is defined by latitude and longitude coordinates +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_latlon.nml.html#JULES_LATLON::l_coord_latlon + +[namelist:jules_latlon=nvars] +compulsory=true +description=Number of variables that will be given +range=2:3 +sort-key=2 +trigger=namelist:jules_latlon=var: this > 0; + = namelist:jules_latlon=use_file: this > 0; +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_LATLON::nvars + +[namelist:jules_latlon=read_from_dump] +compulsory=true +description=Read spatially-varying properties from the dump file +sort-key=1 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_LATLON::read_from_dump + +[namelist:jules_latlon=tpl_name] +compulsory=true +description=String to substitute into the file name template (used if use_file = .true.) +fail-if=len(this) != namelist:jules_latlon=nvars +length=: +sort-key=7 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_LATLON::tpl_name + +[namelist:jules_latlon=use_file] +compulsory=true +description=Read variable from file +fail-if=len(this) != namelist:jules_latlon=nvars +length=: +sort-key=5 +trigger=namelist:jules_latlon=file: any(this == '.true.'); + = namelist:jules_latlon=var_name: any(this == '.true.'); + = namelist:jules_latlon=const_val: not all(this == '.true.'); +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_LATLON::use_file + +[namelist:jules_latlon=var] +compulsory=true +description=Names of the variables, as recognised by JULES +fail-if=len(this) != namelist:jules_latlon=nvars +length=: +sort-key=4 +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_LATLON::var +values='grid_area','latitude','longitude' + +[namelist:jules_latlon=var_name] +compulsory=true +description=Name in file (used if use_file = .true.) +fail-if=len(this) != namelist:jules_latlon=nvars +length=: +sort-key=6 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_LATLON::var_name + +[namelist:jules_model_grid] +compulsory=true +ns=namelist/Grid configuration/Model grid +sort-key=14 +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#namelist-JULES_MODEL_GRID + +[namelist:jules_model_grid=force_1d_grid] +compulsory=true +description=Force 1D model grid +sort-key=2 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_MODEL_GRID::force_1d_grid + +[namelist:jules_model_grid=l_bounds] +compulsory=true +description=Subgrid selection method +sort-key=4 +trigger=namelist:jules_model_grid=x_bounds: .true.; + = namelist:jules_model_grid=y_bounds: .true.; + = namelist:jules_model_grid=npoints: .false.; + = namelist:jules_model_grid=points_file: .false.; +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_MODEL_GRID::l_bounds +value-titles=Coordinate bounds,Points list +values=.true.,.false. +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_model_grid=land_only] +compulsory=true +description=Model land points only +sort-key=1 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_MODEL_GRID::land_only + +[namelist:jules_model_grid=npoints] +compulsory=true +description=Number of points in the points file +range=1: +sort-key=7 +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_MODEL_GRID::npoints + +[namelist:jules_model_grid=points_file] +compulsory=true +description=Name of the file containing the latitude and longitude of each point +sort-key=8 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_MODEL_GRID::points_file + +[namelist:jules_model_grid=use_subgrid] +compulsory=true +description=Model only a subgrid of the input grid +sort-key=3 +trigger=namelist:jules_model_grid=l_bounds: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_MODEL_GRID::use_subgrid + +[namelist:jules_model_grid=x_bounds] +compulsory=true +description=Lower and upper bounds (in that order) for x coordinate +fail-if=this(1) > this(2); # Lower bound must be smaller than upper bound +length=2 +sort-key=6 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_MODEL_GRID::x_bounds + +[namelist:jules_model_grid=y_bounds] +compulsory=true +description=Lower and upper bounds (in that order) for y coordinate +fail-if=this(1) > this(2); # Lower bound must be smaller than upper bound +length=2 +sort-key=5 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_MODEL_GRID::y_bounds + +[namelist:jules_nlsizes] +compulsory=true +ns=namelist/Grid configuration/BL levels +sort-key=11 + +[namelist:jules_nlsizes=bl_levels] +compulsory=true +description=Number of boundary layer levels +range=1: +sort-key=1 +type=integer + +#[namelist:jules_nvegparm] has moved to jules-shared/jules-nvegparm +[namelist:jules_nvegparm=z0hm_classic_nvg_io] +compulsory=true +description=Ratio of the roughness length for heat to the roughness length for momentum for the CLASSIC aerosol scheme only +fail-if=len(this) != namelist:jules_surface_types=nnvg +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/nveg_params.nml.html#JULES_NVEGPARM::z0hm_classic_nvg_io + +[namelist:jules_output] +compulsory=true +ns=namelist/Output +sort-key=11 +url=https://metoffice.github.io/jules/vn8.2/namelists/output.nml.html#namelist-JULES_OUTPUT + +[namelist:jules_output=dump_period] +compulsory=true +description=Model dumps period +range=1: +sort-key=04 +type=integer + +[namelist:jules_output=dump_period_unit] +compulsory=true +description=Model dumps period unit, calendar year or second of calendar day + =If 'Y', dump period in number of calendar years + =If 'T', dump period in number of seconds into a calendar day +sort-key=05 +values='Y','T' + +[namelist:jules_output=nprofiles] +compulsory=true +description=Number of output profiles +range=0: +sort-key=03 +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/output.nml.html#JULES_OUTPUT::nprofiles + +[namelist:jules_output=output_dir] +compulsory=true +description=Directory for output files +sort-key=01 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/output.nml.html#JULES_OUTPUT::output_dir + +[namelist:jules_output=run_id] +compulsory=true +description=Identifier for the run +sort-key=02 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/output.nml.html#JULES_OUTPUT::run_id + +[namelist:jules_output_profile] +duplicate=true +ns=namelist/Output/Profiles +sort-key=12 +url=https://metoffice.github.io/jules/vn8.2/namelists/output.nml.html#namelist-JULES_OUTPUT_PROFILE +widget[rose-config-edit]=pages.PageWithVariableTable --nvar nvars var var_name output_type + +[namelist:jules_output_profile=file_period] +compulsory=true +description=Period of output files +sort-key=02 +url=https://metoffice.github.io/jules/vn8.2/namelists/output.nml.html#JULES_OUTPUT_PROFILE::file_period +value-titles=Annual files,Monthly files,Daily files,Single file +values=-2,-1,-3,0 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_output_profile=l_land_frac] +compulsory=true +description=Output gridbox land fraction to output profile +sort-key=01b +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/output.nml.html#JULES_OUTPUT_PROFILE::l_land_frac; # Not added to docs yet + +[namelist:jules_output_profile=nvars] +compulsory=true +description=Number of variables to output +range=1: +sort-key=10 +trigger=namelist:jules_output_profile=var: this > 0; +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/output.nml.html#JULES_OUTPUT_PROFILE::nvars + +[namelist:jules_output_profile=output_end] +description=Time to stop collecting data for output +pattern=\d{4}-\d{2}-\d{2}\s{1}\d{2}:\d{2}:\d{2} +sort-key=06 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/output.nml.html#JULES_OUTPUT_PROFILE::output_end + +[namelist:jules_output_profile=output_initial] +description=Output initial data +sort-key=07 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/output.nml.html#JULES_OUTPUT_PROFILE::output_initial + +[namelist:jules_output_profile=output_main_run] +compulsory=true +description=Produce output during the main run +sort-key=04 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/output.nml.html#JULES_OUTPUT_PROFILE::output_main_run + +[namelist:jules_output_profile=output_period] +description=Output period (s) + = -2 => Annual, -1 => Monthly, > 0 => Period in seconds +range=-2,-1,1: +sort-key=09 +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/output.nml.html#JULES_OUTPUT_PROFILE::output_period + +[namelist:jules_output_profile=output_spinup] +compulsory=true +description=Produce output during spinup +sort-key=03 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/output.nml.html#JULES_OUTPUT_PROFILE::output_spinup + +[namelist:jules_output_profile=output_start] +description=Time to start collecting data for output +pattern=\d{4}-\d{2}-\d{2}\s{1}\d{2}:\d{2}:\d{2} +sort-key=05 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/output.nml.html#JULES_OUTPUT_PROFILE::output_start + +[namelist:jules_output_profile=output_type] +compulsory=true +description=Type of output for each variable in var +fail-if=len(this) != namelist:jules_output_profile=nvars; +length=: +sort-key=13 +url=https://metoffice.github.io/jules/vn8.2/namelists/output.nml.html#JULES_OUTPUT_PROFILE::output_type +values='S','M','A','N','X' + +[namelist:jules_output_profile=profile_name] +compulsory=true +description=Name of the output profile +sort-key=01 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/output.nml.html#JULES_OUTPUT_PROFILE::profile_name + +[namelist:jules_output_profile=sample_period] +description=Sampling period (s) +range=1: +sort-key=08 +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/output.nml.html#JULES_OUTPUT_PROFILE::sample_period + +[namelist:jules_output_profile=var] +compulsory=true +description=Names of variables to output, as recognised by JULES +# NOTE: Please don't change "namelist:jules_output_profile=var" to "this" as +# it breaks the "fail-if" +# See: https://github.com/metomi/rose/issues/2731 +fail-if=len(this) != namelist:jules_output_profile=nvars; + =any(namelist:jules_output_profile=var == "'outflow_per_river'") and not any(namelist:jules_rivers_props=var == "'rivers_outflow_number'"); # outflow_per_river requires the rivers outflow numbers ancillary data + =any(namelist:jules_output_profile=var == "'inland_outflow_rp'") and ( namelist:jules_rivers=i_river_vn != 3 or namelist:jules_model_environment=lsm_id != 3 ); # Inland outflow calculation can only be used with TRIP Rivers-standalone +length=: +sort-key=11 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/output.nml.html#JULES_OUTPUT_PROFILE::var + +[namelist:jules_output_profile=var_name] +compulsory=true +description=Name to give variable in output files for each variable in var +fail-if=len(this) != namelist:jules_output_profile=nvars; +length=: +sort-key=12 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/output.nml.html#JULES_OUTPUT_PROFILE::var_name + +[namelist:jules_overbank] +compulsory=true +ns=namelist/JULES Science Settings/jules_overbank +sort-key=14 +title=River overbank inundation options +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#namelist-JULES_overbank + +[namelist:jules_overbank=coef_b] +compulsory=true +description=Coefficient in the QBF (=bankfull discharge) allometry. +range=0: +sort-key=f +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#JULES_overbank::coef_b + +[namelist:jules_overbank=ent_ratio] +compulsory=true +description=Rosgen entrenchment ratio (= ratio of flood-prone width to bankfull width + = of a channel, where flood-prone width = when the channel depth is + = 2x bankfull depth) +range=0: +sort-key=g +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#JULES_overbank::ent_ratio + +[namelist:jules_overbank=exp_c] +compulsory=true +description=Exponent in the QBF (=bankfull discharge) allometry. +range=0: +sort-key=h +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#JULES_overbank::exp_c + +[namelist:jules_overbank=overbank_model] +compulsory=true +description=Choice of overbank inundation model +sort-key=a +trigger=namelist:jules_overbank=coef_b: 2; + = namelist:jules_overbank=ent_ratio: 2; + = namelist:jules_overbank=exp_c: 2; + = namelist:jules_overbank=riv_a: 1, 2; + = namelist:jules_overbank=riv_b: 1, 2; + = namelist:jules_overbank=riv_c: 2, 3; + = namelist:jules_overbank=riv_f: 2, 3; +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#JULES_overbank::overbank_model +value-titles=Simple, Simple with Rosgen, Hypsometric integral +values=1,2,3 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_overbank=riv_a] +compulsory=true +description=Coefficient in the allometry for river width +range=0: +sort-key=d +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#JULES_overbank::riv_a + +[namelist:jules_overbank=riv_b] +compulsory=true +description=Exponent in the allometry for river width +range=0: +sort-key=e +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#JULES_overbank::riv_b + +[namelist:jules_overbank=riv_c] +compulsory=true +description=Coefficient in the allometry for river depth +range=0: +sort-key=b +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#JULES_overbank::riv_c + +[namelist:jules_overbank=riv_f] +compulsory=true +description=Exponent in the allometry for river depth +range=0: +sort-key=c +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#JULES_overbank::riv_f + +[namelist:jules_pdm] +compulsory=true +description=Configuration of spatially varying PDM properties +ns=namelist/Ancillary data/PDM properties +sort-key=19 +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#namelist-JULES_PDM +widget[rose-config-edit]=pages.PageWithVariableTable --nvar nvars var use_file var_name tpl_name const_val + +[namelist:jules_pdm=const_val] +compulsory=true +description=Constant value for all points (used if use_file = .false.) +fail-if=len(this) != namelist:jules_pdm=nvars +length=: +sort-key=7 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_PDM::const_val + +[namelist:jules_pdm=file] +compulsory=true +description=If read_list = TRUE, file to read list of file names + =If read_list = FALSE, file or file name template + =from which to read PDM properties. +sort-key=1 +trigger=namelist:jules_pdm=tpl_name: '%vv' in this; + =namelist:jules_pdm=read_list: '%vv' not in this; +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_PDM::file + +[namelist:jules_pdm=nvars] +compulsory=true +description=Number of PDM properties that will be given +range=0: +sort-key=2 +trigger=namelist:jules_pdm=var: this > 0; + = namelist:jules_pdm=use_file: this > 0; +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_PDM::nvars + +[namelist:jules_pdm=read_list] +compulsory=true +description=Use list of file names; one per line for each of nvars. +fail-if=this == '.true.' and '%vv' in namelist:jules_pdm=file; # Cannot use variable name templating while reading a list of files. +sort-key=1a +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_PDM::read_list + +[namelist:jules_pdm=tpl_name] +compulsory=true +description=String to substitute into the file name template (used if use_file = .true.) +fail-if=len(this) != namelist:jules_pdm=nvars +length=: +sort-key=6 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_PDM::tpl_name + +[namelist:jules_pdm=use_file] +compulsory=true +description=Read variable from file +fail-if=len(this) != namelist:jules_pdm=nvars +length=: +sort-key=4 +trigger=namelist:jules_pdm=file: any(this == '.true.'); + = namelist:jules_pdm=var_name: any(this == '.true.'); + = namelist:jules_pdm=const_val: not all(this == '.true.'); +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_PDM::use_file + +[namelist:jules_pdm=var] +compulsory=true +description=Names of the PDM variable, as recognised by JULES +fail-if=len(this) != namelist:jules_pdm=nvars +length=: +sort-key=3 +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_PDM::var +values='slope' + +[namelist:jules_pdm=var_name] +compulsory=true +description=Name in file (used if use_file = .true.) +fail-if=len(this) != namelist:jules_pdm=nvars +length=: +sort-key=5 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_PDM::var_name + +[namelist:jules_pftparm=a_wl_io] +length=: + +[namelist:jules_pftparm=a_ws_io] +length=: + +[namelist:jules_pftparm=act_jmax_io] +length=: + +[namelist:jules_pftparm=act_vcmax_io] +length=: + +[namelist:jules_pftparm=aef_io] +length=: + +[namelist:jules_pftparm=albsnc_max_io] +length=: + +[namelist:jules_pftparm=albsnc_min_io] +length=: + +[namelist:jules_pftparm=albsnf_max_io] +length=: + +[namelist:jules_pftparm=albsnf_maxl_io] +length=: + +[namelist:jules_pftparm=albsnf_maxu_io] +length=: + +[namelist:jules_pftparm=alnir_io] +length=: + +[namelist:jules_pftparm=alnirl_io] +length=: + +[namelist:jules_pftparm=alniru_io] +length=: + +[namelist:jules_pftparm=alpar_io] +length=: + +[namelist:jules_pftparm=alparl_io] +length=: + +[namelist:jules_pftparm=alparu_io] +length=: + +[namelist:jules_pftparm=alpha_elec_io] +length=: + +[namelist:jules_pftparm=alpha_io] +length=: + +[namelist:jules_pftparm=avg_ba_io] +length=: + +[namelist:jules_pftparm=b_wl_io] +length=: + +[namelist:jules_pftparm=c3_io] +length=: + +[namelist:jules_pftparm=can_struct_a_io] +length=: + +[namelist:jules_pftparm=canht_ft_io] +fail-if=len(this) != namelist:jules_surface_types=npft +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO01 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::canht_ft_io + +[namelist:jules_pftparm=catch0_io] +length=: + +[namelist:jules_pftparm=ccleaf_max_io] +length=: + +[namelist:jules_pftparm=ccleaf_min_io] +length=: + +[namelist:jules_pftparm=ccwood_max_io] +length=: + +[namelist:jules_pftparm=ccwood_min_io] +length=: + +[namelist:jules_pftparm=ci_st_io] +length=: + +[namelist:jules_pftparm=dcatch_dlai_io] +length=: + +[namelist:jules_pftparm=deact_jmax_io] +length=: + +[namelist:jules_pftparm=deact_vcmax_io] +length=: + +[namelist:jules_pftparm=dfp_dcuo_io] +length=: + +[namelist:jules_pftparm=dgl_dm_io] +length=: + +[namelist:jules_pftparm=dgl_dt_io] +length=: + +[namelist:jules_pftparm=dqcrit_io] +length=: + +[namelist:jules_pftparm=ds_jmax_io] +length=: + +[namelist:jules_pftparm=ds_vcmax_io] +length=: + +[namelist:jules_pftparm=dust_veg_scj_io] +length=: + +[namelist:jules_pftparm=dz0v_dh_io] +length=: + +[namelist:jules_pftparm=emis_pft_io] +length=: + +[namelist:jules_pftparm=eta_sl_io] +length=: + +[namelist:jules_pftparm=f0_io] +length=: + +[namelist:jules_pftparm=fd_io] +length=: + +[namelist:jules_pftparm=fef_bc_io] +length=: + +[namelist:jules_pftparm=fef_c2h4_io] +length=: + +[namelist:jules_pftparm=fef_c2h6_io] +length=: + +[namelist:jules_pftparm=fef_c3h8_io] +length=: + +[namelist:jules_pftparm=fef_ch4_io] +length=: + +[namelist:jules_pftparm=fef_co2_io] +length=: + +[namelist:jules_pftparm=fef_co_io] +length=: + +[namelist:jules_pftparm=fef_dms_io] +length=: + +[namelist:jules_pftparm=fef_hcho_io] +length=: + +[namelist:jules_pftparm=fef_mecho_io] +length=: + +[namelist:jules_pftparm=fef_nh3_io] +length=: + +[namelist:jules_pftparm=fef_nox_io] +length=: + +[namelist:jules_pftparm=fef_oc_io] +length=: + +[namelist:jules_pftparm=fef_so2_io] +length=: + +[namelist:jules_pftparm=fire_mort_io] +length=: + +[namelist:jules_pftparm=fl_o3_ct_io] +length=: + +[namelist:jules_pftparm=fsmc_mod_io] +length=: + +[namelist:jules_pftparm=fsmc_of_io] +length=: + +[namelist:jules_pftparm=fsmc_p0_io] +length=: + +[namelist:jules_pftparm=g1_stomata_io] +length=: + +[namelist:jules_pftparm=g_leaf_0_io] +length=: + +[namelist:jules_pftparm=glmin_io] +length=: + +[namelist:jules_pftparm=gpp_st_io] +length=: + +[namelist:jules_pftparm=gsoil_f_io] +length=: + +[namelist:jules_pftparm=hw_sw_io] +length=: + +[namelist:jules_pftparm=ief_io] +length=: + +[namelist:jules_pftparm=infil_f_io] +length=: + +[namelist:jules_pftparm=irrig_pft_io] +compulsory=true +description=Flag indicating whether the pft is irrigated +fail-if=len(this) != namelist:jules_surface_types=npft + =any(this > 0) and namelist:jules_model_environment=l_jules_parent == 1 ; # Tile-based irrigation scheme is not available in UM + =all(this == 0) +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO05 +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::irrig_pft_io +values=0,1 + +[namelist:jules_pftparm=jv25_ratio_io] +length=: + +[namelist:jules_pftparm=kext_io] +length=: + +[namelist:jules_pftparm=kn_io] +length=: + +[namelist:jules_pftparm=knl_io] +length=: + +[namelist:jules_pftparm=kpar_io] +length=: + +[namelist:jules_pftparm=lai_alb_lim_io] +length=: + +[namelist:jules_pftparm=lai_io] +fail-if=len(this) != namelist:jules_surface_types=npft +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HO02 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::lai_io + +[namelist:jules_pftparm=lma_io] +length=: + +[namelist:jules_pftparm=mef_io] +length=: + +[namelist:jules_pftparm=neff_io] +length=: + +[namelist:jules_pftparm=nl0_io] +length=: + +[namelist:jules_pftparm=nmass_io] +length=: + +[namelist:jules_pftparm=nr_io] +length=: + +[namelist:jules_pftparm=nr_nl_io] +length=: + +[namelist:jules_pftparm=ns_nl_io] +length=: + +[namelist:jules_pftparm=nsw_io] +length=: + +[namelist:jules_pftparm=omega_io] +length=: + +[namelist:jules_pftparm=omegal_io] +length=: + +[namelist:jules_pftparm=omegau_io] +length=: + +[namelist:jules_pftparm=omnir_io] +length=: + +[namelist:jules_pftparm=omnirl_io] +length=: + +[namelist:jules_pftparm=omniru_io] +length=: + +[namelist:jules_pftparm=orient_io] +length=: + +[namelist:jules_pftparm=pft_name_io] +length=: + +[namelist:jules_pftparm=psi_close_io] +length=: + +[namelist:jules_pftparm=psi_open_io] +length=: + +[namelist:jules_pftparm=q10_leaf_io] +length=: + +[namelist:jules_pftparm=r_grow_io] +length=: + +[namelist:jules_pftparm=rootd_ft_io] +length=: + +[namelist:jules_pftparm=sigl_io] +length=: + +[namelist:jules_pftparm=sox_a_io] +length=: + +[namelist:jules_pftparm=sox_p50_io] +length=: + +[namelist:jules_pftparm=sox_rp_min_io] +length=: + +[namelist:jules_pftparm=sug_g0_io] +length=: + +[namelist:jules_pftparm=sug_grec_io] +length=: + +[namelist:jules_pftparm=sug_yg_io] +length=: + +[namelist:jules_pftparm=tef_io] +length=: + +[namelist:jules_pftparm=tleaf_of_io] +length=: + +[namelist:jules_pftparm=tlow_io] +length=: + +[namelist:jules_pftparm=tupp_io] +length=: + +[namelist:jules_pftparm=vint_io] +length=: + +[namelist:jules_pftparm=vsl_io] +length=: + +[namelist:jules_pftparm=z0hm_classic_pft_io] +compulsory=true +description=Ratio of the roughness length for heat to the roughness length for momentum for the CLASSIC aerosol + =scheme only + =NOT APPLICABLE TO STANDALONE OR LFRIC (l_aero_classic) +fail-if=len(this) != namelist:jules_surface_types=npft +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HOX +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::z0hm_classic_pft_io + +[namelist:jules_pftparm=z0hm_pft_io] +length=: + +[namelist:jules_pftparm=z0v_io] +length=: + +[namelist:jules_prescribed] +compulsory=true +ns=namelist/Prescribed data +sort-key=09 +url=https://metoffice.github.io/jules/vn8.2/namelists/prescribed_data.nml.html#namelist-JULES_PRESCRIBED + +[namelist:jules_prescribed=n_datasets] +compulsory=true +range=0: +sort-key=1 +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/prescribed_data.nml.html#JULES_PRESCRIBED::n_datasets + +[namelist:jules_prescribed_dataset] +duplicate=true +ns=namelist/Prescribed data/Datasets +url=https://metoffice.github.io/jules/vn8.2/namelists/prescribed_data.nml.html#namelist-JULES_PRESCRIBED_DATASET +widget[rose-config-edit]=pages.PageWithVariableTable --nvar nvars var var_name tpl_name interp + +[namelist:jules_prescribed_dataset=data_end] +compulsory=true +description=End time of the last timestep of data +pattern=\d{4}-\d{2}-\d{2}\s{1}\d{2}:\d{2}:\d{2} +sort-key=02 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/prescribed_data.nml.html#JULES_PRESCRIBED_DATASET::data_end + +[namelist:jules_prescribed_dataset=data_period] +compulsory=true +description=Period of the data + = -2 => Annual, -1 => Monthly, > 1 => Period in seconds +range=-2,-1,1: +sort-key=03 +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/prescribed_data.nml.html#JULES_PRESCRIBED_DATASET::data_period + +[namelist:jules_prescribed_dataset=data_start] +compulsory=true +description=Start time of the first timestep of data +pattern=\d{4}-\d{2}-\d{2}\s{1}\d{2}:\d{2}:\d{2} +sort-key=01 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/prescribed_data.nml.html#JULES_PRESCRIBED_DATASET::data_start + +[namelist:jules_prescribed_dataset=file] +compulsory=true +description=If read_list = TRUE, file to read list of data file names and times from + =If read_list = FALSE, file or file name template for data files +sort-key=07 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/prescribed_data.nml.html#JULES_PRESCRIBED_DATASET::file + +[namelist:jules_prescribed_dataset=interp] +compulsory=true +description=Method of time interpolation +fail-if=len(this) != namelist:jules_prescribed_dataset=nvars +length=: +sort-key=12 +url=https://metoffice.github.io/jules/vn8.2/namelists/prescribed_data.nml.html#JULES_PRESCRIBED_DATASET::interp +values='b','c','f','i','nb','nc','nf' + +[namelist:jules_prescribed_dataset=is_climatology] +compulsory=true +description=Data is to be used as a climatology + = Exactly one year of data must be specified +sort-key=04 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/prescribed_data.nml.html#JULES_PRESCRIBED_DATASET::is_climatology + +[namelist:jules_prescribed_dataset=nfiles] +compulsory=true +description=Number of files to read names and start times for +range=0: +sort-key=06 +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/prescribed_data.nml.html#JULES_PRESCRIBED_DATASET::nfiles + +[namelist:jules_prescribed_dataset=nvars] +compulsory=true +description=Number of variables that the dataset will provide +range=1: +sort-key=08 +trigger=namelist:jules_prescribed_dataset=var: this > 0; + = namelist:jules_prescribed_dataset=var_name: this > 0; + = namelist:jules_prescribed_dataset=tpl_name: this > 0; + = namelist:jules_prescribed_dataset=interp: this > 0; +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/prescribed_data.nml.html#JULES_PRESCRIBED_DATASET::nfiles + +[namelist:jules_prescribed_dataset=prescribed_levels] +description=indices of levels to be prescribed (only implemented for sthuf at the moment) +fail-if=len(this) > namelist:jules_soil=sm_levels; +length=: +sort-key=11 +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_PRESCRIBED_DATASET::prescribed_levels + +[namelist:jules_prescribed_dataset=read_list] +compulsory=true +description=Use list of file names with start times +sort-key=05 +trigger=namelist:jules_prescribed_dataset=nfiles: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/prescribed_data.nml.html#JULES_PRESCRIBED_DATASET::read_list + +[namelist:jules_prescribed_dataset=tpl_name] +compulsory=true +description=String to substitute into the file name template +fail-if=len(this) != namelist:jules_prescribed_dataset=nvars +length=: +sort-key=11 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/prescribed_data.nml.html#JULES_PRESCRIBED_DATASET::tpl_name + +[namelist:jules_prescribed_dataset=var] +compulsory=true +description=Variable name as recognised by JULES +fail-if=len(this) != namelist:jules_prescribed_dataset=nvars +length=: +sort-key=09 +trigger=namelist:jules_prescribed_dataset=prescribed_levels: this == "'sthuf'"; +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/prescribed_data.nml.html#JULES_PRESCRIBED_DATASET::var + +[namelist:jules_prescribed_dataset=var_name] +compulsory=true +description=Name of the variable in file +fail-if=len(this) != namelist:jules_prescribed_dataset=nvars; +length=: +sort-key=10 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/prescribed_data.nml.html#JULES_PRESCRIBED_DATASET::var_name + +[namelist:jules_prnt_control] +ns=namelist/IO System Settings/jules_prnt_control +title=Print Manager Control +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_prnt_control.nml.html#namelist-JULES_PRNT_CONTROL + +[namelist:jules_prnt_control=prnt_writers] +compulsory=true +description=Selects which tasks in a parallel job will write informative output. +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_prnt_control.nml.html#JULES_PRNT_CONTROL::jules_prnt_control=prnt_writers +value-titles=All tasks write output, + =Only the first task (Task 0) writes output +values=1,2 + +#[namelist:jules_radiation] has moved to jules-shared/jules-radiation +[namelist:jules_radiation=l_cosz] +compulsory=true +description=Calculate solar zenith angle in standalone. + =STANDALONE ONLY: This is not applicable to UM as the solar zenith + =angle is implicitly calculated by the UM. To create an equivalent + =standalone app it must be .true. +sort-key=Panel-BS01 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_radiation.nml.html#JULES_RADIATION::l_cosz + +[namelist:jules_radiation=l_dolr_land_black] +compulsory=true +description=If true, + =do not use the surface emissivity in adjusting the OLR at land points + =HAS NO EFFECT IN STANDALONE +sort-key=Panel-BX01 +type=logical + +[namelist:jules_radiation=l_embedded_snow] +compulsory=true +description=Use embedded canopy snow albedo scheme. +fail-if=this == '.true.' and namelist:jules_radiation=l_spec_albedo != '.true.'; # If l_embedded_snow = T then l_spec_albedo must also be T + =this == '.true.' and namelist:jules_radiation=l_snow_albedo == '.true.'; # Embedded canopy snow albedo model is exclusive of l_snow_albedo. +sort-key=Panel-B02a +trigger=namelist:jules_snow=can_clump: .true.; + =namelist:jules_snow=n_lai_exposed: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_radiation.nml.html#JULES_RADIATION::l_embedded_snow + +[namelist:jules_radiation=l_mask_snow_orog] +compulsory=true +description=Include orographic masking of snow. +sort-key=Panel-B06 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_radiation.nml.html#JULES_RADIATION::l_mask_snow_orog + +[namelist:jules_radiation=l_sea_alb_var_chl] +fail-if=this == '.true.' and namelist:jules_model_environment=l_jules_parent == 0; # This is not currently available to standalone. + +[namelist:jules_radiation=l_snow_albedo] +compulsory=true +description=Include prognostic snow albedos. +fail-if=this == '.true.' and namelist:jules_radiation=l_spec_albedo == '.false.' # Prognostic snow albedo can only be used when l_spec_albedo=T +sort-key=Panel-B02 +# Only available when namelist:jules_radiation=l_spec_albedo is true, however it is not trigger-ignored as the trigger cascade results in albsnc not being available when namelist:jules_radiation=l_spec_albedo is false. +trigger=namelist:jules_snow=r0: .true.; + =namelist:jules_snow=rmax: .true.; + =namelist:jules_snow=snow_ggr: .true.; + =namelist:jules_snow=amax: .true.; + =namelist:jules_snow=dtland: .false.; + =namelist:jules_snow=kland_numerator: .false.; + =namelist:jules_pftparm=albsnc_max_io: .false.; + =namelist:jules_pftparm=albsnc_min_io: .false.; + =namelist:jules_nvegparm=albsnc_nvg_io: .false.; + =namelist:jules_radiation=l_embedded_snow: .false.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_radiation.nml.html#JULES_RADIATION::l_snow_albedo + +[namelist:jules_radiation=l_spec_sea_alb] +compulsory=true +description=Use spectrally varying open sea albedos +sort-key=Panel-B05c +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_radiation.nml.html#JULES_RADIATION::l_spec_sea_alb + +[namelist:jules_radiation=wght_alb] +compulsory=true +description=Weights for disaggregation of SW flux in the standard order VIS direct, VIS diffuse, NIR direct, NIR diffuse +length=4 +sort-key=Panel-BR01 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_surface.nml.html#JULES_RADIATION::wght_alb + +[namelist:jules_red] +compulsory=true +description=All parameters in this section are required to use the Robust Ecosystem Demography + = calculation. + = + =Click on names for more details + = +ns=namelist/JULES Science Settings/jules_red +sort-key=10 +title=RED PFT parameters +url=https://metoffice.github.io/jules/vn8.2/namelists/red_params.nml.html#namelist-JULES_RED + +[namelist:jules_red=alpha_recrt] +compulsory=true +description=The fraction of PFT carbon assimilate devoted to reproduction +fail-if=len(this) != (namelist:jules_surface_types=npft) +length=: +sort-key=PANEL-I02da +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/red_params.nml.html#JULES_RED::alpha_recrt + +[namelist:jules_red=crwn_area0] +compulsory=true +description=The lowest PFT crown area, value corresponds to the mass0 class (m2) +fail-if=len(this) != (namelist:jules_surface_types=npft) +length=: +sort-key=PANEL-I02db +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/red_params.nml.html#JULES_RED::crwn_area0 + +[namelist:jules_red=dom_order] +compulsory=true +description=The value that describes the competitive hierarchy of PFTs competition in + =JULES-RED, the higher the value the more dominant. +fail-if=len(this) != (namelist:jules_surface_types=npft) +length=: +sort-key=PANEL-I02dc +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/red_params.nml.html#JULES_RED::dom_order + +[namelist:jules_red=height0] +compulsory=true +description=The lowest PFT height, value corresponds to the mass0 class (m) +fail-if=len(this) != (namelist:jules_surface_types=npft) +length=: +sort-key=PANEL-I02dd +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/red_params.nml.html#JULES_RED::height0 + +[namelist:jules_red=lai_bal0] +compulsory=true +description=The lowest PFT balanced LAI, which corresponds to the mass0 class (m2/m2) +fail-if=len(this) != (namelist:jules_surface_types=npft) +length=: +sort-key=PANEL-I02de +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/red_params.nml.html#JULES_RED::lai_bal0 + +[namelist:jules_red=mass0] +compulsory=true +description=The lowest PFT mass class (kg C) +fail-if=len(this) != (namelist:jules_surface_types=npft) +length=: +sort-key=PANEL-I02df +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/red_params.nml.html#JULES_RED::mass0 + +[namelist:jules_red=massi] +compulsory=true +description=The highest PFT mass class (kg C) +fail-if=len(this) != (namelist:jules_surface_types=npft) +length=: +sort-key=PANEL-I02dg +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/red_params.nml.html#JULES_RED::massi + +[namelist:jules_red=mclass] +compulsory=true +description=Number of mass classes for each PFT +fail-if=len(this) != (namelist:jules_surface_types=npft) +length=: +sort-key=PANEL-I02dh +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/red_params.nml.html#JULES_RED::mclass + +[namelist:jules_red=mort_base] +compulsory=true +description=The baseline PFT mortality rate (/360 days) +fail-if=len(this) != (namelist:jules_surface_types=npft) +length=: +sort-key=PANEL-I02di +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/red_params.nml.html#JULES_RED::mort_base + +[namelist:jules_red=phi_a] +compulsory=true +description=The allometric/power scaling of PFT mass to PFT height +fail-if=len(this) != (namelist:jules_surface_types=npft) +length=: +sort-key=PANEL-I02dj +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/red_params.nml.html#JULES_RED::phi_a + +[namelist:jules_red=phi_g] +compulsory=true +description=The allometric/power scaling of PFT mass to PFT mass growth rate +fail-if=len(this) != (namelist:jules_surface_types=npft) +length=: +sort-key=PANEL-I02dk +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/red_params.nml.html#JULES_RED::phi_g + +[namelist:jules_red=phi_h] +compulsory=true +description=The allometric/power scaling of PFT mass to PFT height +fail-if=len(this) != (namelist:jules_surface_types=npft) +length=: +sort-key=PANEL-I02dl +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/red_params.nml.html#JULES_RED::phi_h + +[namelist:jules_red=phi_l] +compulsory=true +description=The allometric/power scaling of PFT mass to PFT leaf area index +fail-if=len(this) != (namelist:jules_surface_types=npft) +length=: +sort-key=PANEL-I02dm +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/red_params.nml.html#JULES_RED::phi_l + +[namelist:jules_rivers] +compulsory=true +ns=namelist/JULES Science Settings/jules_rivers +sort-key=06 +title=River routing options +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#namelist-JULES_RIVERS + +[namelist:jules_rivers=a_thresh] +compulsory=true +description=The threshold drainage area (specified in number of cells) + = draining to a gridbox above which the gridbox is + = considered to be a river point +sort-key=j +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#JULES_RIVERS::a_thresh + +[namelist:jules_rivers=cbland] +compulsory=true +description=The subsurface land wave speed (kinematic wave speed for subsurface flow in a land grid box on the river routing grid, m s-1) +range=this>0 +sort-key=f +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#JULES_RIVERS::cbland + +[namelist:jules_rivers=cbriver] +compulsory=true +description=The subsurface river wave speed (kinematic wave speed for subsurface flow in a river grid box on the river routing grid, m s-1) +range=this>0 +sort-key=g +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#JULES_RIVERS::cbriver + +[namelist:jules_rivers=cland] +compulsory=true +description=The land wave speed (kinematic wave speed for surface flow in a land grid box on the river routing grid, m s-1) +range=this>0 +sort-key=d +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#JULES_RIVERS::cland + +[namelist:jules_rivers=criver] +compulsory=true +description=The river wave speed (kinematic wave speed for surface flow in a river grid box on the river routing grid, m s-1) +range=this>0 +sort-key=e +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#JULES_RIVERS::criver + +[namelist:jules_rivers=i_river_vn] +compulsory=true +description=Routing algorithm to use +fail-if=this == 1 and namelist:jules_model_environment=l_jules_parent == 0; # UM_TRIP is not compatible with standalone. + =(this !=1 and this !=2) and namelist:jules_model_environment=l_jules_parent == 1; # UM_TRIP and RFM are the only options compatible with the UM. +sort-key=b +trigger=namelist:jules_rivers=cland: 2; + = namelist:jules_rivers=criver: 2; + = namelist:jules_rivers=cbland: 2; + = namelist:jules_rivers=cbriver: 2; + = namelist:jules_rivers=retl: 2; + = namelist:jules_rivers=retr: 2; + = namelist:jules_rivers=a_thresh: 2; + = namelist:jules_rivers=runoff_factor: 2; + = namelist:jules_rivers=rivers_speed: 1,3; + = namelist:jules_rivers=rivers_meander: 1,3; + = namelist:jules_rivers_props=l_use_area: 2; + = namelist:jules_rivers=lake_water_conserve_method: 1; + = namelist:jules_rivers=trip_globe_shape: 1; +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#JULES_RIVERS::i_river_vn +value-titles=RFM,TRIP +values=2,3 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_rivers=l_riv_overbank] +compulsory=true +description=Enable overbank inundation +fail-if=this == '.true.' and namelist:jules_model_environment=l_jules_parent != 0; # Overbank inundation is not available to the UM or OASIS. +sort-key=n +trigger=namelist:jules_overbank=overbank_model: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#JULES_RIVERS::l_riv_overbank + +[namelist:jules_rivers=l_rivers] +compulsory=true +description=Enable river routing +sort-key=a +trigger=namelist:jules_rivers=i_river_vn: .true.; + = namelist:jules_rivers=nstep_rivers: .true.; + = namelist:jules_rivers=l_riv_overbank: .true.; + = namelist:jules_overbank: .true.; + = namelist:jules_rivers_props: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#JULES_RIVERS::l_rivers + +[namelist:jules_rivers=lake_water_conserve_method] +compulsory=true +description=Selects different fields for use in water conservation of lake evaporation +fail-if=this > 0 and namelist:jules_rivers=i_river_vn > 1; # lake_water_conserve_method is not compatible with standalone rivers +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#JULES_RIVERS::lake_water_conserve_method +value-titles=Use fqw_surft,Use elake_surft +values=1,2 + +[namelist:jules_rivers=nstep_rivers] +compulsory=true +description=Number of model timesteps per routing timestep +range=1: +sort-key=c +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#JULES_RIVERS::nstep_rivers + +[namelist:jules_rivers=retl] +compulsory=true +description=The (resolution dependent) land return flow fraction +range=-1:1 +sort-key=h +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#JULES_RIVERS::retl + +[namelist:jules_rivers=retr] +compulsory=true +description=The (resolution dependent) river return flow fraction +range=-1:1 +sort-key=i +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#JULES_RIVERS::retr + +[namelist:jules_rivers=rivers_meander] +compulsory=true +description=Ratio of the actual to calculated river lengths in a river routing gridbox +range=this>0 +sort-key=m +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#JULES_RIVERS::rivers_meander + +[namelist:jules_rivers=rivers_speed] +compulsory=true +description=The effective river velocity (m/s) +range=this>0 +sort-key=l +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#JULES_RIVERS::rivers_speed + +[namelist:jules_rivers=runoff_factor] +compulsory=true +description=A runoff volume factor (recommended setting=1) +range=this>0 +sort-key=k +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#JULES_RIVERS::runoff_factor + +[namelist:jules_rivers=trip_globe_shape] +compulsory=true +description=The shape of the Earth in the TRIP river routing scheme +sort-key=j +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_rivers.nml.html#JULES_RIVERS::trip_globe_shape +value-titles=Spherical,Ellipsoidal +values=1,2 + +[namelist:jules_rivers_props] +compulsory=true +description=Configuration of spatially varying rivers properties including inundation +ns=namelist/Ancillary data/Rivers properties +sort-key=24 +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#namelist-JULES_RIVERS_PROPS +widget[rose-config-edit]=pages.PageWithVariableTable --nvar nvars var use_file is_climatology var_name tpl_name const_val + +[namelist:jules_rivers_props=const_val] +compulsory=true +description=Constant value for all points (used if use_file = .false.) +fail-if=len(this) != namelist:jules_rivers_props=nvars +length=: +sort-key=7 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_RIVERS_PROPS::const_val + +[namelist:jules_rivers_props=coordinate_file] +compulsory=true +description=File from which to read river routing coordinates (if templating is used or reading a list of files) +fail-if='%vv' in this; # Coordinate file cannot contain variable name template. +sort-key=17b +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_RIVERS_PROPS::coordinate_file + +[namelist:jules_rivers_props=file] +compulsory=true +description=If read_list = TRUE, file to read list of file names + =If read_list = FALSE, file or file name template + =from which to read river routing & overbank indunation properties. +fail-if='%vv' in this and namelist:jules_rivers_props=coordinate_file == "''"; # If variable name templating is used, the file to read coordinates from must be specified. +sort-key=17 +trigger=namelist:jules_rivers_props=tpl_name: '%vv' in this; + =namelist:jules_rivers_props=read_list: '%vv' not in this; +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_RIVERS_PROPS::file + +[namelist:jules_rivers_props=is_climatology] +compulsory=true +description=Indicate whether the file specified is a 12-month climatology +length=: +sort-key=4 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_RIVERS_PROPS::is_climatology + +[namelist:jules_rivers_props=l_find_grid] +compulsory=true +description=Switch to control specification of the land and river grids +sort-key=17b +trigger=namelist:jules_rivers_props=nx_land_grid: .false.; + =namelist:jules_rivers_props=ny_land_grid: .false.; + =namelist:jules_rivers_props=x1_land_grid: .false.; + =namelist:jules_rivers_props=y1_land_grid: .false.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_RIVERS_PROPS::l_find_grid + +[namelist:jules_rivers_props=l_use_area] +compulsory=true +description=Switch to use a drainage area ancillary field to identify river points +sort-key=17c +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_RIVERS_PROPS::l_use_area + +[namelist:jules_rivers_props=land_dx] +compulsory=true +description=x coordinate spacing of 2D regular grid containing the model input grid +range=this>0 +sort-key=14 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_RIVERS_PROPS::land_dx + +[namelist:jules_rivers_props=land_dy] +compulsory=true +description=y coordinate spacing of 2D regular containing the model input grid +range=this>0 +sort-key=15 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_RIVERS_PROPS::land_dy + +[namelist:jules_rivers_props=nvars] +compulsory=true +description=Number of river routing properties that will be given +sort-key=18 +trigger=namelist:jules_rivers_props=var: this > 0; + = namelist:jules_rivers_props=use_file: this > 0; +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_RIVERS_PROPS::nvars + +[namelist:jules_rivers_props=nx_land_grid] +compulsory=true +description=Size of the x dimension of the 2D regular lat/lon grid containing the model input grid +range=1: +sort-key=10 +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_RIVERS_PROPS::nx_land_grid + +[namelist:jules_rivers_props=nx_rivers] +compulsory=true +description=Size of the x dimension of the river routing grid +fail-if=this != namelist:jules_input_grid=nx and namelist:jules_land_frac=l_use_land_fraction == '.true.'; # If using land fractions for rivers then the input grid needs to be the same as the rivers grid so that the land fractions are copied across to the rivers grid correctly +range=2: +sort-key=07 +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_RIVERS_PROPS::nx_rivers + +[namelist:jules_rivers_props=ny_land_grid] +compulsory=true +description=Size of the y dimension of the 2D regular lat/lon grid containing the model input grid +range=1: +sort-key=11 +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_RIVERS_PROPS::ny_land_grid + +[namelist:jules_rivers_props=ny_rivers] +compulsory=true +description=Size of the y dimension of the river routing grid +fail-if=this != namelist:jules_input_grid=ny and namelist:jules_land_frac=l_use_land_fraction == '.true.'; # If using land fractions for rivers then the input grid needs to be the same as the rivers grid so that the land fractions are copied across to the rivers grid correctly +range=2: +sort-key=08 +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_RIVERS_PROPS::ny_rivers + +[namelist:jules_rivers_props=read_list] +compulsory=true +description=Use list of file names; one per line for each of nvars. +fail-if=this == '.true.' and '%vv' in namelist:jules_rivers_props=file; # Cannot use variable name templating while reading a list of files. + =this == '.true.' and namelist:jules_rivers_props=coordinate_file == "''"; # If reading a list of files, the file to read coordinates from must be specified. + =this == '.true.' and namelist:jules_rivers_props=file == "''"; # If reading a list of files, there has to be a file specified to read. +sort-key=17a +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_RIVERS_PROPS::read_list + +[namelist:jules_rivers_props=rivers_length] +compulsory=true +description=Constant size of the rivers grid (m) +sort-key=16 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_RIVERS_PROPS::rivers_length + +[namelist:jules_rivers_props=rivers_regrid] +compulsory=true +description=Regridding is required between land and river routing grids +fail-if=this == '.true.' and namelist:jules_latlon=l_coord_latlon == '.false.'; # Regridding is only available for lat-lon grids +sort-key=09 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_RIVERS_PROPS::rivers_regrid + +[namelist:jules_rivers_props=tpl_name] +compulsory=true +description=String to substitute into the file name template (used if use_file = .true.) +fail-if=len(this) != namelist:jules_rivers_props=nvars +length=: +sort-key=6 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_RIVERS_PROPS::tpl_name + +[namelist:jules_rivers_props=use_file] +compulsory=true +description=Read variable from file +fail-if=len(this) != namelist:jules_rivers_props=nvars +length=: +sort-key=4 +trigger=namelist:jules_rivers_props=file: any(this == '.true.'); + = namelist:jules_rivers_props=var_name: any(this == '.true.'); + = namelist:jules_rivers_props=const_val: not all(this == '.true.'); + = namelist:jules_rivers_props=is_climatology: any(this == '.true.'); +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_RIVERS_PROPS::use_file + +[namelist:jules_rivers_props=var] +compulsory=true +description=Name of the river routing variable, as recognised by JULES +fail-if=len(this) != namelist:jules_rivers_props=nvars +length=: +sort-key=3 +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_RIVERS_PROPS::var +values='area','direction','sequence','latitude_2d','longitude_2d', + ='rivers_outflow_number','logn_mean','logn_stdev','rivers_storage' + +[namelist:jules_rivers_props=var_name] +compulsory=true +description=Name in file (used if use_file = .true.) +fail-if=len(this) != namelist:jules_rivers_props=nvars +length=: +sort-key=5 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_RIVERS_PROPS::var_name + +[namelist:jules_rivers_props=x1_land_grid] +compulsory=true +description=x coordinate of gridpoint in lower-left corner of 2D regular grid containing the model input grid +sort-key=12 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_RIVERS_PROPS::x1_land_grid + +[namelist:jules_rivers_props=x_dim_name] +compulsory=true +description=Name of the x dimension of the river routing grid +sort-key=05 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_RIVERS_PROPS::x_dim_name + +[namelist:jules_rivers_props=y1_land_grid] +compulsory=true +description=y coordinate of gridpoint in lower-left corner of 2D regular grid containing the model input grid +sort-key=13 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_RIVERS_PROPS::y1_land_grid + +[namelist:jules_rivers_props=y_dim_name] +compulsory=true +description=Name of the y dimension of the river routing grid +sort-key=06 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_RIVERS_PROPS::y_dim_name + +#[namelist:jules_snow] has moved to jules-shared/jules-snow +[namelist:jules_snow=a_snow_et] +compulsory=true +description=Constant in Parametrization of equitemperature metamorphism +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D14a +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::a_snow_et + +[namelist:jules_snow=aicemax] +compulsory=true +description=Maximum albedos (VIS and NIR) for bare ice +length=2 +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +range=0.01:0.99 +sort-key=Panel-D08 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::aicemax + +[namelist:jules_snow=amax] +compulsory=false +description=Maximum albedos (VIS and NIR) for fresh snow +length=2 +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=Panel-D06 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::amax + +[namelist:jules_snow=b_snow_et] +compulsory=true +description=Constant in Parametrization of equitemperature metamorphism +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D14a +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::b_snow_et + +[namelist:jules_snow=c_snow_et] +compulsory=true +description=Constant in Parametrization of equitemperature metamorphism +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D14a +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::c_snow_et + +[namelist:jules_snow=dtland] +compulsory=false +description=Degrees Celsius below zero at which snow albedo equals cold deep snow albedo +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=Panel-D07 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::dtland + +[namelist:jules_snow=dzsnow] +compulsory=true +description=Prescribed thickness of each snow layer (m) when the multilayer scheme is enabled. +fail-if=len(this) != namelist:jules_snow=nsmax; # A value must be given for each snow layer +length=: +sort-key=Panel-D01a +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::dzsnow + +[namelist:jules_snow=frac_snow_subl_melt] +compulsory=true +description=Switch for use of snow-cover fraction in the calculation of sublimation and melting +sort-key=Panel-D03 +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::frac_snow_subl_melt +value-titles=Off,On +values=0,1 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_snow=graupel_options] +compulsory=true +description=Switch for treatment of graupel in the snow scheme +sort-key=Panel-D04 +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::graupel_options +value-titles=Include graupel as snowfall,Ignore graupel in the surface snowfall, + =Treat graupel separately +values=0,1,2 + +[namelist:jules_snow=i_snow_cond_parm] +compulsory=true +description=Identifier for parametrization of snow conductivity. +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D01d +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::i_snow_cond_parm +value-titles=Yen1981,Calonne2011 +values=0,1 + +[namelist:jules_snow=kland_numerator] +compulsory=false +description=Used in snow-ageing effect on albedo in the diagnostic albedo scheme. +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=Panel-D07 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::kland_numerator + +[namelist:jules_snow=l_et_metamorph] +compulsory=true +description=Switch for the inclusion of equitemperature metamorphism. +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D14 +trigger=namelist:jules_snow=a_snow_et: .true.; + = namelist:jules_snow=b_snow_et: .true.; + = namelist:jules_snow=c_snow_et: .true.; + = namelist:jules_snow=rho_snow_et_crit: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::l_et_metamorph + +[namelist:jules_snow=l_snow_infilt] +compulsory=true +description=Switch to allow the infiltration of rain and canopy melting into the snowpack. +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D15 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::l_snow_infilt + +[namelist:jules_snow=l_snow_nocan_hc] +compulsory=true +description=Switch to ignore heat capacity of the canopy above the snowpack on tiles where a canopy model is not used. +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D16 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::l_snow_nocan_hc + +[namelist:jules_snow=l_snowdep_surf] +compulsory=true +description=Use equivalent canopy snow depth for surface calculations on tiles with a snow canopy +sort-key=Panel-D02 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::l_snowdep_surf + +[namelist:jules_snow=lai_alb_lim_sn] +compulsory=true +description=Minimum LAI applied to plant canopies in the presence of snow to represent stems. +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT +length=: +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=Panel-D10 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::lai_alb_lim_sn + +[namelist:jules_snow=maskd] +compulsory=false +description=Used in exponent of equation weighting snow-covered and snow-free albedo, sublimation and melting. +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=Panel-D05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::maskd + +[namelist:jules_snow=nsmax] +compulsory=true +description=Maximum number of layers in the snow pack when the mutilayer scheme is enabled. +range=0: +sort-key=Panel-D01 +trigger=namelist:jules_snow=dzsnow: this > 0; + =namelist:jules_snow=rho_snow_fresh: this > 0; + =namelist:jules_snow=snowliqcap: this > 0; + =namelist:jules_snow=i_relayer_opt: this > 0; + =namelist:jules_snow=i_grain_growth_opt: this > 0; + =namelist:jules_snow=i_snow_cond_parm: this > 0; + =namelist:jules_snow=l_snow_nocan_hc: this > 0; +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::nsmax + +[namelist:jules_snow=r0] +compulsory=false +description=Grain size for fresh snow (um) +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=Panel-D06 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::r0 + +[namelist:jules_snow=rho_firn_albedo] +compulsory=true +description=Threshold density for the firn albedo parameterisation to replace that for snow +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +range=0.01:1000. +sort-key=Panel-D08 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::rho_firn_albedo + +[namelist:jules_snow=rho_snow_const] +compulsory=false +description=Constant density of lying snow (kg m-3), used on canopies and for very thin snow. +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D01b +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::rho_snow_const + +[namelist:jules_snow=rho_snow_et_crit] +compulsory=true +description=Constant in Parametrization of equitemperature metamorphism +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D14a +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::rho_snow_et_crit + +[namelist:jules_snow=rmax] +compulsory=false +description=Maximum snow grain size (um) +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=Panel-D06 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::rmax + =Code Review de + +[namelist:jules_snow=snow_ggr] +compulsory=false +description=Snow grain area growth rates (um2 s-1) +length=3 +ns=namelist/JULES Science Settings/jules_snow/Radiation parameters +sort-key=Panel-D06 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::snow_ggr + +[namelist:jules_snow=snow_hcap] +compulsory=false +description=Thermal capacity of lying snow (J K-1 m-3) +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D12 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::snow_hcap + +[namelist:jules_snow=snow_hcon] +compulsory=false +description=Default thermal conductivity of lying snow (W m-1 K-1). +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D11 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::snow_hcon + +[namelist:jules_snow=snowinterceptfact] +compulsory=false +description=Constant in relationship between mass of intercepted snow and snowfall rate +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::snowinterceptfact + +[namelist:jules_snow=snowliqcap] +compulsory=false +description=Liquid water holding capacity of lying snow, as a fraction of snow mass +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D01c +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::snowliqcap + +[namelist:jules_snow=snowloadlai] +description=Ratio of maximum canopy snow load to leaf area index (kg m-2) +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::snowloadlai + +[namelist:jules_snow=snowunloadfact] +description=Constant in relationship between canopy snow unloading and canopy snow melt rate +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D05 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::snowunloadfact + +[namelist:jules_snow=unload_rate_cnst] +compulsory=true +description=Constant term 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 +length=: +ns=namelist/JULES Science Settings/jules_snow/Other parameters +sort-key=Panel-D13 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_snow.nml.html#JULES_SNOW::unload_rate_cnst + +#[namelist:jules_soil] has moved to jules-shared/jules-soil +[namelist:jules_soil=confrac] +compulsory=true +description=Fraction of the gridbox assumed to be covered by convective precipitation +range=0.0:1.0 +sort-key=Panel-E10 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil.nml.html#JULES_SOIL::confrac + +[namelist:jules_soil=cs_min] +compulsory=true +description=Minimum allowed soil carbon (kg m-2) +range=0.000001: +sort-key=Panel-E07 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil.nml.html#JULES_SOIL::cs_min + +[namelist:jules_soil=dzdeep] +compulsory=true +description=Thickness of bedrock (m) +range=0.01: +sort-key=Panel-E06d +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil.nml.html#JULES_SOIL::dzdeep + +[namelist:jules_soil=dzsoil_elev] +compulsory=true +description=Depth (m) of tiled bedrock subsurfaces under elevated tiles. +fail-if=this <= 0 ; # Must have positive value +range=0.01: +sort-key=Panel-E12 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil.nml.html#JULES_SOIL::dzsoil_elev + +[namelist:jules_soil=dzsoil_io] +compulsory=true +description=Soil layer depths (m), starting with the uppermost layer +fail-if=len(this) != namelist:jules_soil=sm_levels; # Must have a value for each soil level +length=: +sort-key=Panel-E11 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil.nml.html#JULES_SOIL::dzsoil_io + +[namelist:jules_soil=hcapdeep] +compulsory=true +description=Heat capacity of bedrock (J K-1 m-3) +range=100000:8000000 +sort-key=Panel-E06b +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil.nml.html#JULES_SOIL::hcapdeep + +[namelist:jules_soil=hcondeep] +compulsory=true +description=Thermal conductivity of bedrock (W m-2 K-1) +range=0.4:12.0 +sort-key=Panel-E06c +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil.nml.html#JULES_SOIL::hcondeep + +[namelist:jules_soil=l_bedrock] +compulsory=true +description=Include bedrock below soil column with thermal diffusion; does not include hydrology + =NOT AVAILABLE TO UM +sort-key=Panel-E06 +trigger=namelist:jules_soil=ns_deep: .true.; + = namelist:jules_soil=hcapdeep: .true.; + = namelist:jules_soil=hcondeep: .true.; + = namelist:jules_soil=dzdeep: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil.nml.html#JULES_SOIL::l_bedrock + +[namelist:jules_soil=l_broadcast_ancils] +description=Switch to broadcast non-soil tiled ancillary data to all soil tiles (if read from ancil files) +sort-key=Panel-E14a +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil.nml.html#JULES_SOIL::l_broadcast_ancils + +[namelist:jules_soil=l_holdwater] +compulsory=true +description=Stops water being pushed out of the soil column when a single layer is supersaturated +sort-key=Panel-E13 +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil.nml.html#JULES_SOIL::l_holdwater +value-titles=Bug fixed,Original +values=.true.,.false. +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_soil=l_tile_soil] +compulsory=true +description=Switch to set the number of soil tiles to equal the number of surface tiles +fail-if=this == '.true.' and namelist:jules_model_environment=l_jules_parent == 1; # Not available in the UM +sort-key=Panel-E14 +trigger=namelist:jules_soil=l_broadcast_ancils: .true.; + =namelist:jules_initial=l_broadcast_soilt: .true. +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil.nml.html#JULES_SOIL::l_tile_soil + +[namelist:jules_soil=ns_deep] +compulsory=true +description=Number of bedrock layers +range=1: +sort-key=Panel-E06a +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil.nml.html#JULES_SOIL::ns_deep + +[namelist:jules_soil=sm_levels] +compulsory=true +description=Number of soil layers +range=1: +sort-key=Panel-E01 +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil.nml.html#JULES_SOIL::sm_levels + +[namelist:jules_soil=soilhc_method] +compulsory=true +description=Choice of soil thermal conductivity model +sort-key=Panel-E05 +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil.nml.html#JULES_SOIL::soilhc_method +value-titles=Cox et al (1999),Simplified Johansen (1975),Chadburn et al (2015) +values=1,2,3 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_soil=zsmc] +compulsory=true +description=Depth of layer over which soil moisture diagnostic is averaged (m) +range=0.01: +sort-key=Panel-E08 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil.nml.html#JULES_SOIL::zsmc + +[namelist:jules_soil=zst] +compulsory=true +description=Depth of layer over which soil temperature diagnostic is averaged (m) +range=0.01: +sort-key=Panel-E09 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil.nml.html#JULES_SOIL::zst + +[namelist:jules_soil_biogeochem] +compulsory=true +ns=namelist/JULES Science Settings/jules_soil_biogeochem +sort-key=07 +title=Soil biogeochemistry options +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#namelist-JULES_SOIL_BIOGEOCHEM + +[namelist:jules_soil_biogeochem=alpha_ch4] +compulsory=true +description=Ratio between maintenance and growth respiration rates for methanogens +range=0.00001:0.1 +sort-key=8i +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::alpha_ch4 + +[namelist:jules_soil_biogeochem=bio_hum_cn] +compulsory=true +description=Bio and Hum Soil Carbon pools CN ratio +range=1:301 +sort-key=g +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::bio_hum_cn + +[namelist:jules_soil_biogeochem=ch4_cpow] +compulsory=true +description=Power of soil carbon used for anaerobic decomposition (default 1, could be 2/3 for organic soils) +range=0.01:5 +sort-key=r +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::ch4_cpow + +[namelist:jules_soil_biogeochem=ch4_substrate] +compulsory=true +description=Choose substrate for interactive methane +sort-key=o +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::ch4_substrate +value-titles=Soil carbon,NPP,Soil respiration +values=1,2,3 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_soil_biogeochem=const_ch4_cs] +compulsory=true +description=Scale factor for soil carbon substrate CH4 emissions +range=1.0e-14:1.0e-6 +sort-key=2c +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::const_ch4_cs + +[namelist:jules_soil_biogeochem=const_ch4_npp] +compulsory=true +description=Scale factor for NPP substrate CH4 emissions +range=1.0e-5:0.01 +sort-key=2d +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::const_ch4_npp + +[namelist:jules_soil_biogeochem=const_ch4_resps] +compulsory=true +description=Scale factor for soil respiration substrate CH4 emissions +range=1.0e-5:0.01 +sort-key=2e +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::const_ch4_resps + +[namelist:jules_soil_biogeochem=cs_decomp_soil_moist_func] +compulsory=true +description=Switch for moisture function for soil decomposition +sort-key=m1 +trigger=namelist:jules_soil_biogeochem=fsthsat_cs_decomp_opt1: 1; +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::cs_decomp_soil_moist_func +value-titles=Clark (2011) function, Modified Chadburn (2022) function +values=0,1 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_soil_biogeochem=cue_ch4] +compulsory=true +description=Carbon use efficiency of methanogenic growth +range=0.001:0.5 +sort-key=8f +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::cue_ch4 + +[namelist:jules_soil_biogeochem=diff_n_pft] +compulsory=true +description=Inorganic N diffusion in soil (360 days-1) +range=0.1:1500 +sort-key=b2 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::diff_n_pft + +[namelist:jules_soil_biogeochem=ev_ch4] +compulsory=true +description=Timescale over which methanogenic traits adapt to temperature change (yr) +range=0.1:10.0 +sort-key=8j +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::ev_ch4 + +[namelist:jules_soil_biogeochem=frz_ch4] +compulsory=true +description=Factor to reduce CH4 substrate production when soil is sufficiently frozen (only in microbial scheme) +range=0:1 +sort-key=8h +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::frz_ch4 + +[namelist:jules_soil_biogeochem=fsthsat_cs_decomp_opt1] +compulsory=true +description=Soil decomposition factor when soil is saturated (proportion of maximum) +range=0.0:1.0 +sort-key=m1a +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::fsthsat_cs_decomp_opt1 + +[namelist:jules_soil_biogeochem=heat_of_respiration] +compulsory=true +description=The heat released during respiration (J/kg C) +range=0: +sort-key=c1a +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::heat_of_respiration + +[namelist:jules_soil_biogeochem=k2_ch4] +compulsory=true +description=Scale factor for methanogenic respiration rate (hr-1) +range=0.001:0.5 +sort-key=8b +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::k2_ch4 + +[namelist:jules_soil_biogeochem=kaps] +compulsory=true +description=Specific soil respiration rate at 25 degC and optimum soil moisture (s-1) for 1-pool model +range=1.0e-12:1.0e-4 +sort-key=e +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::kaps + +[namelist:jules_soil_biogeochem=kaps_4pool] +compulsory=true +description=Specific soil respiration rates for the four pools of the 4-pool model (s-1) +length=4 +range=1.0e-12:1.0e-4 +sort-key=f +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::kaps_4pool + +[namelist:jules_soil_biogeochem=kd_ch4] +compulsory=true +description=Scale factor for methanogenic death/turnover rate (hr-1) +range=0.000001:0.01 +sort-key=8c +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::kd_ch4 + +[namelist:jules_soil_biogeochem=l_bgc_heat] +compulsory=true +description=Switch for release of biogeochemical heat into the soil. + =Not available to the UM. +fail-if=this == '.true.' and namelist:jules_model_environment=l_jules_parent == 1; #Biogenic heating scheme is not available to the UM +sort-key=c1 +trigger=namelist:jules_soil_biogeochem=heat_of_respiration: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::l_bgc_heat + +[namelist:jules_soil_biogeochem=l_ch4_interactive] +compulsory=true +description=Switch on interactive methane +fail-if=this == '.true.' and namelist:jules_soil_biogeochem=l_ch4_tlayered == '.false.' +sort-key=n +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::l_ch4_interactive +value-titles=Methane flux updates soil C, Methane flux does not update soil C +values=.true.,.false. +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_soil_biogeochem=l_ch4_microbe] +compulsory=true +description=Use microbial methane model + =NOT AVAILABLE TO UM +sort-key=8a +trigger=namelist:jules_soil_biogeochem=k2_ch4: .true.; + =namelist:jules_soil_biogeochem=kd_ch4: .true.; + =namelist:jules_soil_biogeochem=rho_ch4: .true.; + =namelist:jules_soil_biogeochem=q10_mic_ch4: .true.; + =namelist:jules_soil_biogeochem=cue_ch4: .true.; + =namelist:jules_soil_biogeochem=mu_ch4: .true.; + =namelist:jules_soil_biogeochem=frz_ch4: .true.; + =namelist:jules_soil_biogeochem=alpha_ch4: .true.; + =namelist:jules_soil_biogeochem=ev_ch4: .true.; + =namelist:jules_soil_biogeochem=q10_ev_ch4: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::l_ch4_microbe +warn-if=this== '.true.' and namelist:jules_soil_biogeochem=ch4_substrate != 1 # microbial model only tuned for ch4_substrate=1 + +[namelist:jules_soil_biogeochem=l_ch4_tlayered] +compulsory=true +description=Calculate methane emissions from layered soil temperature (vs 1m average) +sort-key=p +trigger=namelist:jules_soil_biogeochem=tau_ch4: .true.; +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::l_ch4_tlayered +value-titles=Use layered soil temperature, Use depth-averaged soil temperature +values=.true.,.false. +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_soil_biogeochem=l_label_frac_cs] +compulsory=true +description=Label and trace a fraction of soil carbon + =NOT AVAILABLE TO UM +sort-key=b1 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::l_label_frac_cs + +[namelist:jules_soil_biogeochem=l_layeredc] +compulsory=true +description=Use layered soil carbon model +fail-if=this == '.true.' and namelist:jules_soil_biogeochem=soil_bgc_model == 3 +sort-key=b +trigger=namelist:jules_soil_biogeochem=tau_resp: .true.; + =namelist:jules_soil_biogeochem=l_label_frac_cs: .true.; + =namelist:jules_soil_biogeochem=diff_n_pft: .true.; + =namelist:jules_soil_biogeochem=z_burn_max: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::l_layeredc + +[namelist:jules_soil_biogeochem=l_q10] +compulsory=true +description=Choose soil decomposition dependence on temperature +sort-key=c +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::l_q10 +value-titles=Q10 temperature function,Clark et al. (2011) temperature function +values=.true.,.false. +warn-if=this == '.false.' and namelist:jules_soil_biogeochem=l_bgc_heat == '.true.' +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_soil_biogeochem=l_soil_resp_lev2] +compulsory=true +description=Soil respiration calculated using temperature and moisture from layer 2 +sort-key=m +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::l_soil_resp_lev2 +value-titles=Use 2nd soil layer + total moisture content for respiration, Use top soil layer + unfrozen moisture content for respiration +values=.true.,.false. +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_soil_biogeochem=mu_ch4] +compulsory=true +description=Threshold growth rate below which methanogens die (hr-1) +range=0.000001:0.01 +sort-key=8g +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::mu_ch4 + +[namelist:jules_soil_biogeochem=n_inorg_turnover] +compulsory=true +description=Inorganic Nitrogren Turnover rate (360 days-1) +range=0.01:100 +sort-key=i +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::n_inorg_turnover + +[namelist:jules_soil_biogeochem=q10_ch4_cs] +compulsory=true +description=Q10 factor for soil carbon substrate CH4 emissions +range=0.1:10.0 +sort-key=2f +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::q10_ch4_cs + +[namelist:jules_soil_biogeochem=q10_ch4_npp] +compulsory=true +description=Q10 factor for NPP substrate CH4 emissions +range=0.1:10.0 +sort-key=2g +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::q10_ch4_npp + +[namelist:jules_soil_biogeochem=q10_ch4_resps] +compulsory=true +description=Q10 factor for soil respiration substrate CH4 emissions +range=0.1:10.0 +sort-key=2h +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::q10_ch4_resps + +[namelist:jules_soil_biogeochem=q10_ev_ch4] +compulsory=true +description=Q10 for temperature response of methanogenic traits under adaptation +range=0.1:10.0 +sort-key=8k +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::q10_ev_ch4 + +[namelist:jules_soil_biogeochem=q10_mic_ch4] +compulsory=true +description=Q10 factor for methanogens +range=0.1:10.0 +sort-key=8e +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::q10_mic_ch4 + +[namelist:jules_soil_biogeochem=q10_soil] +compulsory=true +description=Q10 factor for soil respiration +range=0.1:10.0 +sort-key=d +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::q10_soil + +[namelist:jules_soil_biogeochem=rho_ch4] +compulsory=true +description=Factor in substrate limitation function (related to half saturation of substrate for methanogenic respiration) +range=1.0:1000.0 +sort-key=8d +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::rho_ch4 + +[namelist:jules_soil_biogeochem=soil_bgc_model] +compulsory=true +description=Choice of soil biogeochemistry model +fail-if=this == 1 and namelist:jules_vegetation=l_triffid == '.true.'; # Can't use 1-pool with TRIFFID + =this == 2 and namelist:jules_vegetation=l_triffid != '.true.'; # Can't use 4-pool soil C without TRIFFID + =this == 3 and namelist:jules_vegetation=l_triffid != '.true.'; # Can't use ECOSSE without TRIFFID +sort-key=a +trigger=namelist:jules_soil_biogeochem=l_q10: 1, 2; + =namelist:jules_soil_biogeochem=q10_soil: 1, 2, 3; + =namelist:jules_soil_biogeochem=l_soil_resp_lev2: 1, 2; + =namelist:jules_soil_biogeochem=cs_decomp_soil_moist_func: 1, 2; + =namelist:jules_soil_biogeochem=kaps: 1; + =namelist:jules_soil_biogeochem=kaps_4pool: 2; + =namelist:jules_soil_biogeochem=sorp: 2; + =namelist:jules_soil_biogeochem=n_inorg_turnover: 2; + =namelist:jules_soil_biogeochem=bio_hum_cn: 2; + =namelist:jules_soil_biogeochem=diff_n_pft: 2; + =namelist:jules_soil_biogeochem=tau_lit: 2, 3; + =namelist:jules_soil_biogeochem=tau_resp: 2; + =namelist:jules_soil_ecosse=l_soil_n: 3; + =namelist:jules_soil_ecosse=depo_nit_frac: 3; + =namelist:jules_soil_ecosse=l_match_layers: 3; + =namelist:jules_soil_ecosse=dt_soilc: 3; + =namelist:jules_soil_ecosse=dz_soilc_io: 3; + =namelist:jules_soil_ecosse=plant_input_profile: 3; + =namelist:jules_soil_ecosse=pi_sfc_depth: 3; + =namelist:jules_soil_ecosse=pi_sfc_frac: 3; + =namelist:jules_soil_ecosse=bacteria_min_frac: 3; + =namelist:jules_soil_ecosse=bacteria_max_frac: 3; + =namelist:jules_soil_ecosse=bacteria_min_frac_ph: 3; + =namelist:jules_soil_ecosse=bacteria_max_frac_ph: 3; + =namelist:jules_soil_ecosse=cn_bacteria: 3; + =namelist:jules_soil_ecosse=cn_fungi: 3; + =namelist:jules_soil_ecosse=decomp_rate: 3; + =namelist:jules_soil_ecosse=decomp_wrate_min_smith: 3; + =namelist:jules_soil_ecosse=decomp_wrate_min_clark: 3; + =namelist:jules_soil_ecosse=decomp_temp_coeff_smith: 3; + =namelist:jules_soil_ecosse=decomp_ph_min: 3; + =namelist:jules_soil_ecosse=decomp_ph_max: 3; + =namelist:jules_soil_ecosse=decomp_ph_rate_min: 3; + =namelist:jules_soil_ecosse=depth_nitrif: 3; + =namelist:jules_soil_ecosse=nitrif_frac_n2o_fc: 3; + =namelist:jules_soil_ecosse=nitrif_frac_gas: 3; + =namelist:jules_soil_ecosse=nitrif_frac_no: 3; + =namelist:jules_soil_ecosse=nitrif_max_factor: 3; + =namelist:jules_soil_ecosse=nitrif_rate: 3; + =namelist:jules_soil_ecosse=nitrif_wrate_min: 3; + =namelist:jules_soil_ecosse=denit50: 3; + =namelist:jules_soil_ecosse=denit_frac_n2_fc: 3; + =namelist:jules_soil_ecosse=denit_nitrate_equal: 3; + =namelist:jules_soil_ecosse=denit_water_coeff: 3; + =namelist:jules_soil_ecosse=denit_bio_factor: 3; + =namelist:jules_soil_ecosse=amm_leach_min: 3; + =namelist:jules_soil_ecosse=n_inorg_max_conc: 3; + =namelist:jules_soil_ecosse=l_driver_ave: 3; + =namelist:jules_soil_ecosse=l_decomp_slow: 3; + =namelist:jules_soil_ecosse=temp_modifier: 3; + =namelist:jules_soil_ecosse=water_modifier: 3; + =namelist:jules_soil_ecosse=dim_cslayer: 3; +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::soil_bgc_model +value-titles=Single pool model,4-pool model,ECOSSE +values=1,2,3 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_soil_biogeochem=sorp] +compulsory=true +description=Soil leaching N Retention factor +range=0.01:100.0 +sort-key=h +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::sorp + +[namelist:jules_soil_biogeochem=t0_ch4] +compulsory=true +description=Reference temperature for Q10 function CH4 emissions +range=250:320 +sort-key=2b +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::t0_ch4 + +[namelist:jules_soil_biogeochem=tau_ch4] +compulsory=true +description=Decay factor with depth representing methane oxidation +range=0.01:100.0 +sort-key=q +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::tau_ch4 + +[namelist:jules_soil_biogeochem=tau_lit] +compulsory=true +description=Exponential decay constant for reduction of litter inputs with depth +range=0.01:100.0 +sort-key=b2 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::tau_lit + +[namelist:jules_soil_biogeochem=tau_resp] +compulsory=true +description=Exponential decay constant for reduction of respiration with depth +range=0.01:100.0 +sort-key=b2 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::tau_resp + +[namelist:jules_soil_biogeochem=z_burn_max] +compulsory=true +description=Maximum burn depth for soil - soil carbon is burned above this level +range=0.0:10.0 +sort-key=b2 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_biogeochem.nml.html#JULES_SOIL_BIOGEOCHEM::z_burn_max + +[namelist:jules_soil_ecosse] +compulsory=true +ns=namelist/JULES Science Settings/jules_soil_ecosse +sort-key=07 +title=Soil ECOSSE model options + +[namelist:jules_soil_ecosse=amm_leach_min] +compulsory=true +description=Minimum allowed amount of N in NH4 after leaching (kg m-3) +range=0: +type=real + +[namelist:jules_soil_ecosse=bacteria_max_frac] +compulsory=true +description=Maximum fraction of decomposer community that are bacteria +range=0:1 +type=real + +[namelist:jules_soil_ecosse=bacteria_max_frac_ph] +compulsory=true +description=Soil pH at or above which the fraction of bacteria is at a maximum +range=0:14 +type=real + +[namelist:jules_soil_ecosse=bacteria_min_frac] +compulsory=true +description=Minimum fraction of decomposer community that are bacteria +range=0:1 +type=real + +[namelist:jules_soil_ecosse=bacteria_min_frac_ph] +compulsory=true +description=Soil pH at or below which the fraction of bacteria is at a minimum +range=0:14 +type=real + +[namelist:jules_soil_ecosse=cn_bacteria] +compulsory=true +description=C:N ratio of soil bacteria +range=0.1: +type=real + +[namelist:jules_soil_ecosse=cn_fungi] +compulsory=true +description=C:N ratio of soil fungi +range=0.1: +type=real + +[namelist:jules_soil_ecosse=decomp_ph_max] +compulsory=true +description=pH above which rate of decomposition is maximum +range=0:14 +type=real + +[namelist:jules_soil_ecosse=decomp_ph_min] +compulsory=true +description=pH below which rate of decomposition is minimum +range=0:14 +type=real + +[namelist:jules_soil_ecosse=decomp_ph_rate_min] +compulsory=true +description=Minimum allowed value of pH rate modifier for decomposition +range=0:1 +type=real + +[namelist:jules_soil_ecosse=decomp_rate] +compulsory=true +description=Rate constants for decomposition of each pool (s-1) +length=4 +type=real + +[namelist:jules_soil_ecosse=decomp_temp_coeff_smith] +compulsory=true +description=Constants in Smith et al. (2010) soil C decomposition rate temperature modifier +length=3 +type=real + +[namelist:jules_soil_ecosse=decomp_wrate_min_clark] +compulsory=true +description=Minimum allowed value of the JULES form for water rate modifier for decomposition +range=0:1 +type=real + +[namelist:jules_soil_ecosse=decomp_wrate_min_smith] +compulsory=true +description=Minimum allowed value of the Smith et al. (2010) water rate modifier for decomposition +range=0:1 +type=real + +[namelist:jules_soil_ecosse=denit50] +compulsory=true +description=Amount of nitrate at which denitrification rate is 50% of the potential rate (kg m-3) +range=0: +type=real + +[namelist:jules_soil_ecosse=denit_bio_factor] +compulsory=true +description=Factor in denitrification calculation to convert C flux into a representation of biological activity +range=0: +type=real + +[namelist:jules_soil_ecosse=denit_frac_n2_fc] +compulsory=true +description=Fraction of denitrified N that becomes N2 when soil moisture is at field capacity +range=0:1 +type=real + +[namelist:jules_soil_ecosse=denit_nitrate_equal] +compulsory=true +description=Amount of N in soil nitrate at which denitrified N is released as equal amounts of N2 and N2O (kg m-3) +range=0: +type=real + +[namelist:jules_soil_ecosse=denit_water_coeff] +compulsory=true +description=Fitted constants describing water modifier for denitrification +length=3 +type=real + +[namelist:jules_soil_ecosse=depo_nit_frac] +compulsory=true +description=Fraction of total N deposition that is added to soil nitrate +range=0:1 +type=real + +[namelist:jules_soil_ecosse=depth_nitrif] +compulsory=true +description=Greatest depth at which nitrification and denitrification are allowed (m) +range=0: +type=real + +[namelist:jules_soil_ecosse=dim_cslayer] +compulsory=true +description=Number of soil carbon layers +range=1: +type=integer + +[namelist:jules_soil_ecosse=dt_soilc] +compulsory=true +description=Timestep length for soil biogeochemistry model (s) +type=real + +[namelist:jules_soil_ecosse=dz_soilc_io] +compulsory=true +description=Thicknesses of the soil biogeochemistry layers (m) +fail-if=len(this) != dim_cslayer; # Must have a value for each layer +length=: +type=real + +[namelist:jules_soil_ecosse=l_decomp_slow] +compulsory=true +description=Switch to slow decomposition when N is limiting +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_ecosse.nml.html#JULES_SOIL_ECOSSE::l_decomp_slow +value-titles=Decomposition slowed, Decomposition less efficient +values=.true.,.false. +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_soil_ecosse=l_driver_ave] +compulsory=true +description=Switch for time-averaging of ECOSSE driving variables +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_ecosse.nml.html#JULES_SOIL_ECOSSE::l_driver_ave +value-titles=Time average, Instantaneous values +values=.true.,.false. +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_soil_ecosse=l_match_layers] +compulsory=true +description=Switch to match soil C and N layers to soil moisture layers +trigger=namelist:jules_soil_ecosse=dim_cslayer: .false.; + =namelist:jules_soil_ecosse=dz_soilc_io: .false.; +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_soil_ecosse.nml.html#JULES_SOIL_ECOSSE::l_match_layers +value-titles=Match to soil moisture layers, Specify layers +values=.true.,.false. +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_soil_ecosse=l_soil_n] +compulsory=true +description=Switch for a prognostic model of soil Nitrogen +trigger=namelist:jules_soil_ecosse=depo_nit_frac: .true.; + =namelist:jules_soil_ecosse=l_decomp_slow: .true.; + =namelist:jules_soil_ecosse=bacteria_min_frac: .true.; + =namelist:jules_soil_ecosse=bacteria_max_frac: .true.; + =namelist:jules_soil_ecosse=bacteria_min_frac_ph: .true.; + =namelist:jules_soil_ecosse=bacteria_max_frac_ph: .true.; + =namelist:jules_soil_ecosse=cn_bacteria: .true.; + =namelist:jules_soil_ecosse=cn_fungi: .true.; + =namelist:jules_soil_ecosse=depth_nitrif: .true.; + =namelist:jules_soil_ecosse=nitrif_frac_n2o_fc: .true.; + =namelist:jules_soil_ecosse=nitrif_rate: .true.; + =namelist:jules_soil_ecosse=nitrif_frac_gas: .true.; + =namelist:jules_soil_ecosse=nitrif_frac_no: .true.; + =namelist:jules_soil_ecosse=nitrif_max_factor: .true.; + =namelist:jules_soil_ecosse=nitrif_wrate_min: .true.; + =namelist:jules_soil_ecosse=denit50: .true.; + =namelist:jules_soil_ecosse=denit_frac_n2_fc: .true.; + =namelist:jules_soil_ecosse=denit_nitrate_equal: .true.; + =namelist:jules_soil_ecosse=denit_water_coeff: .true.; + =namelist:jules_soil_ecosse=denit_bio_factor: .true.; + =namelist:jules_soil_ecosse=amm_leach_min: .true.; + =namelist:jules_soil_ecosse=n_inorg_max_conc: .true.; +type=logical + +[namelist:jules_soil_ecosse=n_inorg_max_conc] +compulsory=true +description=Maximum-allowed concentration of inorganic N in a layer (kg m-3) +type=real + +[namelist:jules_soil_ecosse=nitrif_frac_gas] +compulsory=true +description=Fraction of nitrification lost as gas through full nitrification +range=0:1 +type=real + +[namelist:jules_soil_ecosse=nitrif_frac_n2o_fc] +compulsory=true +description=Fraction of nitrification lost as N2O by partial nitrification at field capacity +range=0:1 +type=real + +[namelist:jules_soil_ecosse=nitrif_frac_no] +compulsory=true +description=Fraction of nitrification gas loss through full nitrification that is NO +range=0:1 +type=real + +[namelist:jules_soil_ecosse=nitrif_max_factor] +compulsory=true +description=Shape factor in rate modifier for nitrification (kg m-3) +range=0:1 +type=real + +[namelist:jules_soil_ecosse=nitrif_rate] +compulsory=true +description=Rate constant for nitrification (s-1) +range=0: +type=real + +[namelist:jules_soil_ecosse=nitrif_wrate_min] +compulsory=true +description=Minimum allowed value of water rate modifier for nitrification when Smith et al., 2010 form is used +range=0: +type=real + +[namelist:jules_soil_ecosse=pi_sfc_depth] +compulsory=true +description=Depth of soil over which fraction pi_sfc_frac of plant litterfall is added (m). +type=real + +[namelist:jules_soil_ecosse=pi_sfc_frac] +compulsory=true +description=Fraction of plant litterfall that is added to the surface soil layer (of depth pi_sfc_depth). +range=0:1 +type=real + +[namelist:jules_soil_ecosse=plant_input_profile] +compulsory=true +description=Switch for distribution of litterfall inputs to the soil. +trigger=namelist:jules_soil_ecosse=pi_sfc_depth: 1; + =namelist:jules_soil_ecosse=pi_sfc_frac: 1; +value-titles=RootProfile,Exponential +values=1,2 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_soil_ecosse=temp_modifier] +compulsory=true +description=Switch for form of temperature rate modifier for decomposition +value-titles=Q10,Smith +values=1,2 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_soil_ecosse=water_modifier] +compulsory=true +description=Switch for form of water rate modifier for decomposition +value-titles=Clark,Smith +values=1,2 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_soil_props] +compulsory=true +description=Configuration of spatially varying soil properties +ns=namelist/Ancillary data/Soil properties +sort-key=17 +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#namelist-JULES_SOIL_PROPS +widget[rose-config-edit]=pages.PageWithVariableTable --nvar nvars var use_file var_name tpl_name const_val + +[namelist:jules_soil_props=const_val] +compulsory=true +description=Constant value for all points (used if use_file = .false.) +fail-if=len(this) != namelist:jules_soil_props=nvars +length=: +sort-key=9 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_SOIL_PROPS::const_val + +[namelist:jules_soil_props=const_z] +compulsory=true +description=Use constant-profile soil properties +sort-key=2 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_SOIL_PROPS::const_z + +[namelist:jules_soil_props=file] +compulsory=true +description=If read_list = TRUE, file to read list of file names + =If read_list = FALSE, file or file name template + =from which to read soil properties. +sort-key=3 +trigger=namelist:jules_soil_props=tpl_name: '%vv' in this; + =namelist:jules_soil_props=read_list: '%vv' not in this; +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_SOIL_PROPS::file + +[namelist:jules_soil_props=nvars] +compulsory=true +description=Number of soil properties that will be given +range=9:11 +sort-key=4 +trigger=namelist:jules_soil_props=var: this > 0; + = namelist:jules_soil_props=use_file: this > 0; +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_SOIL_PROPS::nvars + +[namelist:jules_soil_props=read_from_dump] +compulsory=true +description=Read spatially varying soil properties from the dump file +sort-key=1 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_SOIL_PROPS::read_from_dump + +[namelist:jules_soil_props=read_list] +compulsory=true +description=Use list of file names; one per line for each of nvars. +fail-if=this == '.true.' and '%vv' in namelist:jules_soil_props=file; # Cannot use variable name templating while reading a list of files. +sort-key=3a +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_SOIL_PROPS::read_list + +[namelist:jules_soil_props=tpl_name] +compulsory=true +description=String to substitute into the file name template (used if use_file = .true.) +fail-if=len(this) != namelist:jules_soil_props=nvars +length=: +sort-key=8 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_SOIL_PROPS::tpl_name + +[namelist:jules_soil_props=use_file] +compulsory=true +description=Read variable from file +fail-if=len(this) != namelist:jules_soil_props=nvars +length=: +sort-key=6 +trigger=namelist:jules_soil_props=file: any(this == '.true.'); + = namelist:jules_soil_props=var_name: any(this == '.true.'); + = namelist:jules_soil_props=const_val: not all(this == '.true.'); +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_SOIL_PROPS::use_file + +[namelist:jules_soil_props=var] +compulsory=true +description=Name of the soil variable, as recognised by JULES +fail-if=len(this) != namelist:jules_soil_props=nvars +length=: +sort-key=5 +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_SOIL_PROPS::var +values='albsoil','b','hcap','hcon','satcon','sathh','sm_crit','sm_sat','sm_wilt','clay','soil_ph' + +[namelist:jules_soil_props=var_name] +compulsory=true +description=Name in file (used if use_file = .true.) +fail-if=len(this) != namelist:jules_soil_props=nvars +length=: +sort-key=7 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_SOIL_PROPS::var_name + +[namelist:jules_spinup] +compulsory=true +ns=namelist/Spinup configuration +sort-key=04 +url=https://metoffice.github.io/jules/vn8.2/namelists/timesteps.nml.html#namelist-JULES_SPINUP +widget[rose-config-edit]=pages.PageWithVariableTable --nvar nvars var use_percent tolerance + +[namelist:jules_spinup=max_spinup_cycles] +compulsory=true +description=Maximum number of times the spin-up period will be repeated +range=0: +sort-key=1 +trigger=namelist:jules_spinup=spinup_start: this > 0; + = namelist:jules_spinup=spinup_end: this > 0; + = namelist:jules_spinup=terminate_on_spinup_fail: this > 0; + = namelist:jules_spinup=nvars: this > 0; +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/timesteps.nml.html#JULES_SPINUP::max_spinup_cycles + +[namelist:jules_spinup=nvars] +compulsory=true +description=Number of variables used to assess if the model has spun up +range=0: +sort-key=5 +trigger=namelist:jules_spinup=var: this > 0; + = namelist:jules_spinup=use_percent: this > 0; + = namelist:jules_spinup=tolerance: this > 0; +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/timesteps.nml.html#JULES_SPINUP::nvars + +[namelist:jules_spinup=spinup_end] +compulsory=true +description=End time for each cycle of spinup +pattern=\d{4}-\d{2}-\d{2}\s{1}\d{2}:\d{2}:\d{2} +sort-key=3 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/timesteps.nml.html#JULES_SPINUP::spinup_end + +[namelist:jules_spinup=spinup_start] +compulsory=true +description=Start time for each cycle of spinup +pattern=\d{4}-\d{2}-\d{2}\s{1}\d{2}:\d{2}:\d{2} +sort-key=2 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/timesteps.nml.html#JULES_SPINUP::spinup_start + +[namelist:jules_spinup=terminate_on_spinup_fail] +compulsory=true +description=End the run if the model has not spun up +sort-key=4 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/timesteps.nml.html#JULES_SPINUP::terminate_on_spinup_fail + +[namelist:jules_spinup=tolerance] +compulsory=true +description=Tolerance for the spin-up test (for each variable) +fail-if=len(this) != namelist:jules_spinup=nvars; # Must have exactly nvars entries +length=: +sort-key=8 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/timesteps.nml.html#JULES_SPINUP::tolerance + +[namelist:jules_spinup=use_percent] +compulsory=true +description=Use percentage-based tolerance (for each variable) +fail-if=len(this) != namelist:jules_spinup=nvars; # Must have exactly nvars entries +length=: +sort-key=7 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/timesteps.nml.html#JULES_SPINUP::use_percent + +[namelist:jules_spinup=var] +compulsory=true +description=Variables to be used to determine if the model has spun up +fail-if=len(this) != namelist:jules_spinup=nvars; # Must have exactly nvars entries +length=: +sort-key=6 +url=https://metoffice.github.io/jules/vn8.2/namelists/timesteps.nml.html#JULES_SPINUP::var +values='smcl','t_soil' + +[namelist:jules_surf_hgt] +compulsory=true +ns=namelist/Grid configuration/Tile elevations +sort-key=15 +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#namelist-JULES_SURF_HGT + +[namelist:jules_surf_hgt=file] +compulsory=true +description=Name of the file containing tile elevations relative to the gridbox mean +sort-key=4 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_SURF_HGT::file + +[namelist:jules_surf_hgt=l_elev_absolute_height] +compulsory=true +description=Set tile elevations to absolute values above sea-level +fail-if=(namelist:jules_surface=l_aggregate and len(this) != 1) or (not namelist:jules_surface=l_aggregate and len(this) != (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg)) +length=: +sort-key=2 +trigger=namelist:jules_surf_hgt=use_file: all(this == '.false.'); + = namelist:jules_z_land=use_file: any(this == '.true.'); + = namelist:jules_z_land=surf_hgt_band: any(this == '.true.'); +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_SURF_HGT::l_elev_absolute_height + +[namelist:jules_surf_hgt=surf_hgt_io] +compulsory=true +description=Tile elevation relative to the gridbox mean for a single location +fail-if=(namelist:jules_surface=l_aggregate and len(this) != 1) or (not namelist:jules_surface=l_aggregate and len(this) != (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg)) +length=: +sort-key=6 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_SURF_HGT::surf_hgt_io + +[namelist:jules_surf_hgt=surf_hgt_name] +compulsory=true +description=Name of the variable containing tile elevations relative to the gridbox mean +sort-key=5 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_SURF_HGT::surf_hgt_name + +[namelist:jules_surf_hgt=use_file] +compulsory=true +description=Read tile elevations relative to the gridbox mean from a file +length=: +sort-key=3 +trigger=namelist:jules_surf_hgt=file: .true.; + = namelist:jules_surf_hgt=surf_hgt_name: .true.; + = namelist:jules_surf_hgt=surf_hgt_io: .false. ; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_SURF_HGT::use_file + +[namelist:jules_surf_hgt=zero_height] +compulsory=true +description=Set all tile elevations to zero +sort-key=1 +trigger=namelist:jules_surf_hgt=l_elev_absolute_height: .false.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_SURF_HGT::zero_height + +[namelist:jules_surface=i_aggregate_opt] +compulsory=true +description=Method of aggregating tiled properties +sort-key=Panel-F02a +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_surface.nml.html#JULES_SURFACE::i_aggregate_opt +value-titles=Original option,Separate aggregation +values=0,1 + +[namelist:jules_surface=l_aggregate] +compulsory=true +description=Use aggregate surface scheme +sort-key=Panel-F02 +trigger=namelist:jules_surface=i_aggregate_opt: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_surface.nml.html#JULES_SURFACE::l_aggregate + +[namelist:jules_surface=l_point_data] +trigger=namelist:jules_drive=t_for_con_rain: .false.; + +[namelist:jules_surface=srf_ex_cnv_gust] +value-titles=Off,On +values=0,1 + +#[namelist:jules_surface_types] has moved to jules-shared/jules-surface-types +[namelist:jules_surface_types=brd_leaf_dec] +description=Pseudo level of broadleaf (decidous) PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A1b +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::brd_leaf_dec + +[namelist:jules_surface_types=brd_leaf_eg_temp] +description=Pseudo level of broadleaf (evergreen temperate) PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A1d +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::brd_leaf_eg_temp + +[namelist:jules_surface_types=brd_leaf_eg_trop] +description=Pseudo level of broadleaf (evergreen tropical) PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +help=Must have value <= npft +range=1: +sort-key=Panel-A1c +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::brd_leaf_eg_trop + +[namelist:jules_surface_types=c3_crop] +description=Pseudo level of C3 crop PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A3b +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c3_crop + +[namelist:jules_surface_types=c3_irrig] +compulsory=true +description=Pseudo level of C3 irrig PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A3d +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c3_irrig + +[namelist:jules_surface_types=c3_pasture] +description=Pseudo level of C3 pasture PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A3c +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c3_pasture + +[namelist:jules_surface_types=c4_crop] +description=Pseudo level of C4 crop PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A4b +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c4_crop + +[namelist:jules_surface_types=c4_irrig] +compulsory=true +description=Pseudo level of C4 irrig PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A4d +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c4_irrig + +[namelist:jules_surface_types=c4_pasture] +description=Pseudo level of C4 pasture PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A4c +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::c4_pasture + +[namelist:jules_surface_types=elev_ice] +compulsory=true +description=Pseudo levels of elevated ice surface type (Glacier/Icesheet model) +fail-if=any(this > namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =any(this <= namelist:jules_surface_types=npft and this != -1); # PFTs must be grouped together first with non-vegetated tiles following +length=: +range=-1,1: +sort-key=Panel-A9b +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::elev_ice + +[namelist:jules_surface_types=elev_rock] +compulsory=true +description=Pseudo levels of elevated bedrock surface type (Glacier/Icesheet model) +fail-if=any(this > namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg + =any(this <= namelist:jules_surface_types=npft and this != -1); # PFTs must be grouped together first with non-vegetated tiles following +length=: +range=-1,1: +sort-key=Panel-A9c +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::elev_rock + +[namelist:jules_surface_types=ncpft] +description=Number of crop plant functional types to be modelled + =NOT AVAILABLE TO THE UM +fail-if=this > namelist:jules_surface_types=npft; # Number of crop PFTs must be less than total number of PFTs + =this > 0 and namelist:jules_model_environment=l_jules_parent == 1; # This is not available to the UM. Should be zero. +range=0: +sort-key=Panel-A0c +trigger=namelist:jules_vegetation=l_prescsow: this > 0; + = namelist:jules_crop_props: this > 0; + = namelist:jules_cropparm: this > 0; +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::ncpft + +[namelist:jules_surface_types=ndl_leaf_dec] +description=Pseudo level of needleleaf (deciduous) PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A2b +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::ndl_leaf_dec + +[namelist:jules_surface_types=ndl_leaf_eg] +description=Pseudo level of needleleaf (evergreen) PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A2c +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::ndl_leaf_eg + +[namelist:jules_surface_types=shrub_dec] +description=Pseudo level of shrub (deciduous) PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A5b +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::shrub_dec + +[namelist:jules_surface_types=shrub_eg] +description=Pseudo level of shrub (evergreen) PFT +fail-if=this > namelist:jules_surface_types=npft; # Pseudo level must be less than or equal to npft +range=1: +sort-key=Panel-A5c +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::shrub_eg + +[namelist:jules_surface_types=tile_map_ids] +description=Tile mapping array from input to output dump surface type configuration + =NOT AVAILABLE TO STANDALONE +fail-if=len(this) != namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg +help=Mapping array, containing tile ID numbers, used by the reconfiguration to determine which + =tile in the input dump should be used to initialise each tile in the output dump. The + =reconfiguration determines the corresponding pseudo level map (tile_map_pslevs) containing + =the pseudo levels where the tile types from tile_map_ids reside in the input dump. + =Allows new tiles added (e.g. urban_canyon and urban_roof) to be initialised from existing + =tiles (e.g. urban) or an old dump with the incorrect labelling to be used. Depends on the + =input dump so if an option file is used to change the input dump, tile_map_ids will also + =need to be ammended. +length=: +range=1: +sort-key=Panel-A0d +type=integer + +[namelist:jules_surface_types=usr_type] +description=Pseudo level of user surface types +fail-if=any(this > namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg); # Pseudo level must be less than or equal to npft+nnvg +help=Must have value less than or equal to ntype +length=: +range=1: +sort-key=Panel-A0e +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_surface_types.nml.html#JULES_SURFACE_TYPES::usr_type + +[namelist:jules_temp_fixes] +compulsory=true +description=To assist managing science fixes across JULES versions +ns=namelist/JULES Science Settings/jules_temp_fixes +sort-key=00 +title=Short term logicals +url=https://metoffice.github.io/jules/vn8.2/namelists/science_fixes.nml.html#namelist-JULES_TEMP_SWITCHES + +[namelist:jules_temp_fixes=ctile_orog_fix] +compulsory=true +description=Fix surface exchange in coastally tiled grid-boxes +fail-if=(this == '0' or this == '1') and namelist:jules_model_environment=l_jules_parent == 0; # This should be 2 in JULES standalone. +url=https://metoffice.github.io/jules/vn8.2/namelists/science_fixes.nml.html#JULES_TEMP_FIXES::ctile_orog_fix +value-titles=No fix,Correct sea adjust land,Correct sea only +values=0,1,2 + +[namelist:jules_temp_fixes=l_accurate_rho] +compulsory=true +description=Improve the accuracy of air density in surface fluxes +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/science_fixes.nml.html#JULES_TEMP_FIXES::l_accurate_rho + +[namelist:jules_temp_fixes=l_dtcanfix] +compulsory=true +description=Correct the evolution of the skin temperature in the implicit solver +fail-if=this == '.false.' and namelist:jules_model_environment=l_jules_parent == 0; # This should be .true. in JULES standalone. +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/science_fixes.nml.html#JULES_TEMP_FIXES::l_dtcanfix + +[namelist:jules_temp_fixes=l_fix_alb_ice_thick] +compulsory=true +description=Fix bug in ice thickness used for sea ice albedo calculation. +fail-if=this == '.false.' and namelist:jules_model_environment=l_jules_parent == 0; # This should be .true. in JULES standalone. +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/science_fixes.nml.html#JULES_TEMP_FIXES::l_fix_alb_ice_thick + +[namelist:jules_temp_fixes=l_fix_albsnow_ts] +compulsory=true +description=Fix bug in the two-stream calculation of the albedo of snow. +fail-if=this == '.false.' and namelist:jules_model_environment=l_jules_parent == 0; # This should be .true. in JULES standalone. +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/science_fixes.nml.html#JULES_TEMP_FIXES::l_fix_albsnow_ts + +[namelist:jules_temp_fixes=l_fix_drydep_so2_water] +compulsory=true +description=Use correct surface resistance of water when calculating the dry deposition of SO2 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/science_fixes.nml.html#JULES_TEMP_FIXES::l_fix_drydep_so2_water + +[namelist:jules_temp_fixes=l_fix_improve_drydep] +compulsory=true +description=Fix dry deposition velocities +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/science_fixes.nml.html#JULES_TEMP_FIXES::l_fix_improve_drydep + +[namelist:jules_temp_fixes=l_fix_lake_ice_temperatures] +compulsory=true +description=Fix evolution of lake ice temperatures +help=Allow sea ice temperatures in lakes to evolve over time for atmosphere-ocean coupled + =models when the lake is defined as a sea point but is not coupled to an ocean model. +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/science_fixes.nml.html#JULES_TEMP_FIXES::l_fix_lake_ice_temperatures + +[namelist:jules_temp_fixes=l_fix_moruses_roof_rad_coupling] +compulsory=true +description=Correction to the roof radiative coupling of MORUSES +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/science_fixes.nml.html#JULES_TEMP_FIXES::l_fix_moruses_roof_rad_coupling + +[namelist:jules_temp_fixes=l_fix_neg_snow] +compulsory=true +description=Activate corrections to avoid the generation of negative amounts of snow. +fail-if=this == '.false.' and namelist:jules_model_environment=l_jules_parent == 0; # This should be .true. in JULES standalone. +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/science_fixes.nml.html#JULES_TEMP_FIXES::l_fix_neg_snow + +[namelist:jules_temp_fixes=l_fix_osa_chloro] +compulsory=true +description=Correct the units of chlorophyll in the ocean surface albedo +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/science_fixes.nml.html#JULES_TEMP_FIXES::l_fix_osa_chloro + +[namelist:jules_temp_fixes=l_fix_snow_frac] +compulsory=true +description=Correction to prevent persistent small snow amounts when using the frac_snow_subl_melt=1 option +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/science_fixes.nml.html#JULES_TEMP_FIXES::l_fix_snow_frac + +[namelist:jules_temp_fixes=l_fix_ukca_h2dd_x] +compulsory=true +description=Fix for UKCA deposition of H2. +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/science_fixes.nml.html#JULES_TEMP_FIXES::l_fix_h2dd_x + +[namelist:jules_temp_fixes=l_fix_ustar_dust] +compulsory=true +description=Fix surface exchange for dust deposition +fail-if=this == '.false.' and namelist:jules_model_environment=l_jules_parent == 0; # This should be .true. in JULES standalone. +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/science_fixes.nml.html#JULES_TEMP_FIXES::l_fix_ustar_dust + +[namelist:jules_temp_fixes=l_fix_wind_snow] +compulsory=true +description=Fix to ensure wind speed is provided for snow unloading from vegetation +fail-if=this == '.false.' and namelist:jules_model_environment=l_jules_parent == 0; # This should be .true. in JULES standalone. +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/science_fixes.nml.html#JULES_TEMP_FIXES::l_fix_wind_snow + +[namelist:jules_time] +compulsory=true +ns=namelist/Timestepping information +sort-key=03 +url=https://metoffice.github.io/jules/vn8.2/namelists/timesteps.nml.html#namelist-JULES_TIME + +[namelist:jules_time=l_360] +compulsory=true +description=Use a 360-day year +fail-if=this == '.false.' and namelist:imogen_onoff_switch=l_imogen == '.true.'; # This should be .true. in IMOGEN. +sort-key=1 +trigger=namelist:jules_time=l_leap: .false.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/timesteps.nml.html#JULES_TIME::l_360 + +[namelist:jules_time=l_leap] +compulsory=true +description=Include leap years +sort-key=2 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/timesteps.nml.html#JULES_TIME::l_leap + +[namelist:jules_time=l_local_solar_time] +compulsory=true +description=Interpret time in the driving data and throughout the code as local solar time. +sort-key=2 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/timesteps.nml.html#JULES_TIME::l_local_solar_time + +[namelist:jules_time=main_run_end] +compulsory=true +description=End time for the integration +pattern=\d{4}-\d{2}-\d{2}\s{1}\d{2}:\d{2}:\d{2} +sort-key=5 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/timesteps.nml.html#JULES_TIME::main_run_end + +[namelist:jules_time=main_run_start] +compulsory=true +description=Start time for the integration +pattern=\d{4}-\d{2}-\d{2}\s{1}\d{2}:\d{2}:\d{2} +sort-key=4 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/timesteps.nml.html#JULES_TIME::main_run_start + +[namelist:jules_time=print_step] +description=Number of timesteps between printing timestep information to screen +range=1: +sort-key=6 +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/timesteps.nml.html#JULES_TIME::print_step + +[namelist:jules_time=timestep_len] +compulsory=true +description=Model timestep length (s) +range=1: +sort-key=3 +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/timesteps.nml.html#JULES_TIME::timestep_len + +[namelist:jules_top] +compulsory=true +description=Configuration of spatially varying TOPMODEL properties +ns=namelist/Ancillary data/TOPMODEL properties +sort-key=18 +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#namelist-JULES_TOP +widget[rose-config-edit]=pages.PageWithVariableTable --nvar nvars var use_file var_name tpl_name const_val + +[namelist:jules_top=const_val] +compulsory=true +description=Constant value for all points (used if use_file = .false.) +fail-if=len(this) != namelist:jules_top=nvars +length=: +sort-key=8 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_TOP::const_val + +[namelist:jules_top=file] +compulsory=true +description=If read_list = TRUE, file to read list of file names + =If read_list = FALSE, file or file name template + =from which to read TOPMODEL properties. +sort-key=2 +trigger=namelist:jules_top=tpl_name: '%vv' in this; + =namelist:jules_top=read_list: '%vv' not in this; +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_TOP::file + +[namelist:jules_top=nvars] +compulsory=true +description=Number of TOPMODEL properties that will be given +range=3:3 +sort-key=3 +trigger=namelist:jules_top=var: this > 0; + = namelist:jules_top=use_file: this > 0; +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_TOP::nvars + +[namelist:jules_top=read_from_dump] +compulsory=true +description=Read spatially varying TOPMODEL properties from the dump file +sort-key=1 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_TOP::read_from_dump + +[namelist:jules_top=read_list] +compulsory=true +description=Use list of file names; one per line for each of nvars. +fail-if=this == '.true.' and '%vv' in namelist:jules_top=file; # Cannot use variable name templating while reading a list of files. +sort-key=2a +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_TOP::read_list + +[namelist:jules_top=tpl_name] +compulsory=true +description=String to substitute into the file name template (used if use_file = .true.) +fail-if=len(this) != namelist:jules_top=nvars +length=: +sort-key=7 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_TOP::tpl_name + +[namelist:jules_top=use_file] +compulsory=true +description=Read variable from file +fail-if=len(this) != namelist:jules_top=nvars +length=: +sort-key=5 +trigger=namelist:jules_top=file: any(this == '.true.'); + = namelist:jules_top=var_name: any(this == '.true.'); + = namelist:jules_top=const_val: not all(this == '.true.'); +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_TOP::use_file + +[namelist:jules_top=var] +compulsory=true +description=Names of the TOPMODEL variable, as recognised by JULES +fail-if=len(this) != namelist:jules_top=nvars +length=: +sort-key=4 +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_TOP::var +values='fexp','ti_mean','ti_sig' + +[namelist:jules_top=var_name] +compulsory=true +description=Name in file (used if use_file = .true.) +fail-if=len(this) != namelist:jules_top=nvars +length=: +sort-key=6 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_TOP::var_name + +[namelist:jules_triffid] +compulsory=true +description=Most parameters in this section are required, even if they are not used + =However, they can be left at their default value + = + =Click on names for more details + = +ns=namelist/JULES Science Settings/jules_triffid +sort-key=10 +title=TRIFFID PFT parameters +url=https://metoffice.github.io/jules/vn8.2/namelists/triffid_params.nml.html#namelist-JULES_TRIFFID +widget[rose-config-edit]=cylc8_compat.PageArrayTable + +[namelist:jules_triffid=ag_expand_io] +compulsory=true +description=Type of agricultural expansion employed when l_ag_expand=T. + =0 means PFTs grow into the increased agricultural area naturally (default) + =1 means new agricultural area is automatically filled with the selected PFT. +fail-if=len(this) != namelist:jules_surface_types=npft +length=: +url=https://metoffice.github.io/jules/vn8.2/namelists/triffid_params.nml.html#JULES_TRIFFID::ag_expand_io +values=0,1 + +[namelist:jules_triffid=alloc_fast_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=npft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/triffid_params.nml.html#JULES_TRIFFID::alloc_fast_io + +[namelist:jules_triffid=alloc_med_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=npft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/triffid_params.nml.html#JULES_TRIFFID::alloc_med_io + +[namelist:jules_triffid=alloc_slow_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=npft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/triffid_params.nml.html#JULES_TRIFFID::alloc_slow_io + +[namelist:jules_triffid=crop_io] +compulsory=true +description=Flag indicating whether the PFT is crop, pasture, bioenergy/forestry, or natural. +fail-if=any(this > 1) and (namelist:jules_vegetation=l_trif_crop == '.false.') or (len(this) != namelist:jules_surface_types=npft) +length=: +url=https://metoffice.github.io/jules/vn8.2/namelists/triffid_params.nml.html#JULES_TRIFFID::crop_io +value-titles=Natural,Crop,Pasture,Bioenergy/Forestry +values=0,1,2,3 + +[namelist:jules_triffid=dpm_rpm_ratio_io] +compulsory=true +fail-if=len(this) != namelist:jules_surface_types=npft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/triffid_params.nml.htm#JULES_TRIFFID::dpm_rpm_ratio_io + +[namelist:jules_triffid=g_area_io] +compulsory=true +description=Disturbance rate (/360days) +fail-if=len(this) != namelist:jules_surface_types=npft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/triffid_params.nml.html#JULES_TRIFFID::g_area_io + +[namelist:jules_triffid=g_grow_io] +compulsory=true +description=Rate of leaf growth (/360days) +fail-if=len(this) != namelist:jules_surface_types=npft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/triffid_params.nml.html#JULES_TRIFFID::g_grow_io + +[namelist:jules_triffid=g_root_io] +compulsory=true +description=Turnover rate for root biomass (/360days) +fail-if=len(this) != namelist:jules_surface_types=npft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/triffid_params.nml.html#JULES_TRIFFID::g_root_io + +[namelist:jules_triffid=g_wood_io] +compulsory=true +description=Turnover rate for woody biomass (/360days) +fail-if=len(this) != namelist:jules_surface_types=npft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/triffid_params.nml.html#JULES_TRIFFID::g_wood_io + +[namelist:jules_triffid=harvest_freq_io] +compulsory=true +description=Frequency of harvest of crops. +fail-if=len(this) != namelist:jules_surface_types=npft +length=: +sort-key=01a +url=https://metoffice.github.io/jules/vn8.2/namelists/triffid_params.nml.html#JULES_TRIFFID::harvest_freq_io + +[namelist:jules_triffid=harvest_ht_io] +compulsory=true +description=Height to which the PFT is reduced at each harvest cycle. +fail-if=len(this) != namelist:jules_surface_types=npft +length=: +sort-key=01a +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/triffid_params.nml.html#JULES_TRIFFID::harvest_ht_io + +[namelist:jules_triffid=harvest_type_io] +compulsory=true +description=Type of harvesting, set to 0 for natural PFTs. + =0: No harvesting (default) + =1: Continuous harvesting from litter, as historically used in TRIFFID crop scheme + =2: Periodic harvesting with harvest frequency set to harvest_freq_io. +fail-if=len(this) != namelist:jules_surface_types=npft +length=: +sort-key=01 +trigger=namelist:jules_triffid=harvest_freq_io: any(this == 2); + =namelist:jules_triffid=harvest_ht_io: any(this == 2); +url=https://metoffice.github.io/jules/vn8.2/namelists/triffid_params.nml.html#JULES_TRIFFID::harvest_type_io +values=0,1,2 + +[namelist:jules_triffid=lai_max_io] +compulsory=true +description=Maximum LAI +fail-if=len(this) != namelist:jules_surface_types=npft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/triffid_params.nml.html#JULES_TRIFFID::lai_max_io + +[namelist:jules_triffid=lai_min_io] +compulsory=true +description=Minimum LAI +fail-if=len(this) != namelist:jules_surface_types=npft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/triffid_params.nml.html#JULES_TRIFFID::lai_min_io + +[namelist:jules_triffid=retran_l_io] +compulsory=true +description=Leaf N retranslocation +fail-if=len(this) != namelist:jules_surface_types=npft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/triffid_params.nml.htm#JULES_TRIFFID::retran_l_io + +[namelist:jules_triffid=retran_r_io] +compulsory=true +description=Root N retranslocation +fail-if=len(this) != namelist:jules_surface_types=npft +length=: +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/triffid_params.nml.htm#JULES_TRIFFID::retran_r_io + +#[namelist:jules_urban] has moved to jules-shared/jules-urban +[namelist:jules_urban=l_moruses_albedo] +fail-if=this == '.true.' and namelist:jules_radiation=l_cosz == '.false.' # Requires l_cosz = TRUE + +[namelist:jules_urban=l_moruses_macdonald] +compulsory=true +description=Use MacDonald et al. (1998) to calculate effective roughness length and displacement height +fail-if=namelist:jules_urban=l_urban_empirical == '.true.' and this == '.false.'; # Must be true if l_urban_empirical is true +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/urban.nml.html#JULES_URBAN::l_moruses_macdonald + +[namelist:jules_urban=l_urban_empirical] +compulsory=true +description=Use empirical relationships for urban geometry + =NOT AVAILABLE TO UM +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/urban.nml.html#JULES_URBAN::l_urban_empirical + +#[namelist:jules_vegetation] has moved to jules-shared/jules-vegetation +[namelist:jules_vegetation=act_j_coef] +compulsory=true +description=Coefficients for the activation energy of Jmax. +length=3 +sort-key=Panel-I20b1 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::act_j_coef + +[namelist:jules_vegetation=act_v_coef] +compulsory=true +description=Coefficients for the activation energy of Vcmax. +length=3 +sort-key=Panel-I20b2 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::act_v_coef + +[namelist:jules_vegetation=c1_usuh] +compulsory=true +description=Ratio of friction velocity to wind speed at the top of a dense canopy +range=0: +sort-key=Panel-I09b +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::c1_usuh + +[namelist:jules_vegetation=c2_usuh] +compulsory=true +description=Ratio of friction velocity to wind speed at the surface of the substrate under the canopy +range=0: +sort-key=Panel-I09b +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::c2_usuh + +[namelist:jules_vegetation=c3_usuh] +compulsory=true +description=Used in the exponent of the equation weighting dense and sparse vegetation + = to get u*/U(h) in neutral conditions +range=0: +sort-key=Panel-I09b +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::c3_usuh + +[namelist:jules_vegetation=can_model] +compulsory=true +description=Choice of canopy model for vegetation +sort-key=Panel-I12 +trigger=namelist:jules_snow=cansnowpft: 4; + =namelist:jules_snow=snowinterceptfact: 4; + =namelist:jules_snow=snowloadlai: 4; + =namelist:jules_snow=snowunloadfact: 4; + =namelist:jules_surface=hleaf: 3,4; + =namelist:jules_surface=hwood: 3,4; +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::can_model +value-titles=No distinct canopy,Radiative canopy with no heat capacity,Radiative canopy with heat capacity,As 3 but with snow beneath canopy +values=1,2,3,4 +warn-if=this == 3; # can_model = 3 is deprecated, with 4 preferred +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_vegetation=can_rad_mod] +trigger=namelist:jules_vegetation=ilayers: 4,5,6; + =namelist:jules_pftparm=knl_io: 6; +values=1,4,5,6 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_vegetation=cd_leaf] +compulsory=true +description=Leaf level drag coefficient +range=0:1 +sort-key=Panel-I09b +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::cd_leaf + +[namelist:jules_vegetation=dsj_coef] +compulsory=true +description=Coefficients for the rate of change with leaf temperature of the Jmax entropy factor. +length=3 +sort-key=Panel-I20a1 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::dsj_coef + +[namelist:jules_vegetation=dsv_coef] +compulsory=true +description=Coefficients for the rate of change with leaf temperature of the Vcmax entropy factor. +length=3 +sort-key=Panel-I20a1 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::dsv_coef + +[namelist:jules_vegetation=frac_min] +compulsory=true +description=Minimum fraction that a PFT is allowed to cover if TRIFFID is used +sort-key=Panel-I02b +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::frac_min + +[namelist:jules_vegetation=frac_seed] +compulsory=true +description=Seed fraction for TRIFFID +sort-key=Panel-I02b +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::frac_seed + +[namelist:jules_vegetation=fsmc_shape] +compulsory=true +description=Shape of soil moisture stress on vegetation function +fail-if=(namelist:jules_vegetation=l_use_pft_psi == ".false." or namelist:jules_soil_props=const_z == ".false.") and this == 1; # 1. Piece-wise linear in soil potential. Currently only allowed when const_z = T and l_use_pft_psi = T. + =this == 1 and namelist:jules_model_environment=l_jules_parent == 1; # Piece-wise linear in soil potential is not currently available to the UM. Should be 0 (volumetric soil moisture). +sort-key=Panel-I17 +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::fsmc_shape +value-titles=Piece-wise linear in volumetric soil moisture, Piece-wise linear in soil potential +values=0,1 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_vegetation=ignition_method] +compulsory=true +description=The method to use for ignitions +sort-key=Panel-I16a +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::ignition_method +value-titles=(1) constant human and natural ignition sources, + =(2) constant human varying natural ignition sources, + =(3) varying human and natural ignition sources +values=1,2,3 + +[namelist:jules_vegetation=ilayers] +compulsory=true +description=Number of layers for canopy radiation model +range=1:100 +sort-key=Panel-I13a +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::ilayers + +[namelist:jules_vegetation=jv25_coef] +compulsory=true +description=Coefficients for the ratio Jmax:Vcmax at 25 degC. +length=3 +sort-key=Panel-I20a1 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::jv25_coef + +[namelist:jules_vegetation=l_ag_expand] +compulsory=true +description=Allow assisted expansion of agricultural crop areas. + =The type of expansion is set with ag_expand_io. +fail-if=this == '.true.' and namelist:jules_vegetation=l_trif_biocrop == '.false.'; +sort-key=Panel-I02c1a1 +trigger=namelist:jules_triffid=ag_expand_io: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_ag_expand + +[namelist:jules_vegetation=l_croprotate] +compulsory=true +description=Switch to allow double cropping in JULES + =NOT AVAILABLE TO UM +fail-if=namelist:jules_vegetation=l_prescsow == '.false.' and this == '.true.'; # l_prescsow must be TRUE if l_croprotate = TRUE +sort-key=Panel-I14 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_croprotate + +[namelist:jules_vegetation=l_gleaf_fix] +compulsory=true +description=Use fix for accumulating g_leaf_phen_acc between calls to TRIFFID + =Standalone only bug fix. +sort-key=Panel-I15 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_gleaf_fix + +[namelist:jules_vegetation=l_ht_compete] +compulsory=true +description=Switch for using height based competition in TRIFFID +sort-key=Panel-I02c +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_ht_compete + +[namelist:jules_vegetation=l_landuse] +compulsory=true +description=Switch for using landuse change in conjunction with TRIFFID +sort-key=Panel-I02c +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_landuse + +[namelist:jules_vegetation=l_leaf_n_resp_fix] +compulsory=true +description=Switch to use correct forms for canopy-average leaf nitrogen + =(for plant maintenance resp and N demand). + =This affects can_rad_mod = 1, 4 and 5, not 6 (which is correct). +sort-key=Panel-I03 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_leaf_n_resp_fix + +[namelist:jules_vegetation=l_nitrogen] +compulsory=true +description=Use the TRIFFID Nitrogen limitation scheme for interactive carbon cycle +sort-key=Panel-I02c +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_nitrogen + +[namelist:jules_vegetation=l_nrun_mid_trif] +compulsory=true +description=Start an NRUN mid way through a TRIFFID calling period + =ONLY APPLICABLE TO UM +sort-key=Panel-I02c +type=logical + +[namelist:jules_vegetation=l_phenol] +compulsory=true +description=Include leaf phenology +sort-key=Panel-I01 +trigger=namelist:jules_vegetation=phenol_period: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_phenol + +[namelist:jules_vegetation=l_prescsow] +compulsory=true +description=Use prescribed sowing dates for crops + =NOT AVAILABLE TO THE UM +sort-key=Panel-I14 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_prescsow + +[namelist:jules_vegetation=l_red] +compulsory=true +description=Switch for using the Robust Ecosystem Demography (RED). + = RED is not available to the UM. +fail-if=this == '.true.' and namelist:jules_model_environment=l_jules_parent == 1; # RED is not available to the UM. + =this == '.true.' and namelist:jules_surface_types=ncpft > 0; +sort-key=Panel-I02d +trigger=namelist:jules_red: .true.; + =namelist:jules_red=alpha_recrt: .true.; + =namelist:jules_red=crwn_area0: .true.; + =namelist:jules_red=dom_order: .true.; + =namelist:jules_red=height0: .true.; + =namelist:jules_red=lai_bal0: .true.; + =namelist:jules_red=mass0: .true.; + =namelist:jules_red=massi: .true.; + =namelist:jules_red=mclass: .true.; + =namelist:jules_red=mort_base: .true.; + =namelist:jules_red=phi_a: .true.; + =namelist:jules_red=phi_g: .true.; + =namelist:jules_red=phi_h: .true.; + =namelist:jules_red=phi_l: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_red + +[namelist:jules_vegetation=l_rsl_scalar] +compulsory=true +description=Switch for using roughness sublayer correction scheme in scalar + = variables. This is triggered if vegetative drag scheme is used. +sort-key=Panel-I09a +trigger=namelist:jules_vegetation=stanton_leaf: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_rsl_scalar + +[namelist:jules_vegetation=l_scale_resp_pm] +compulsory=true +description=Scale whole plant maintenance respiration by the soil moisture + =stress factor, instead of only scaling leaf respiration. +sort-key=Panel-I18 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_scale_resp_pm + +[namelist:jules_vegetation=l_spec_veg_z0] +trigger=namelist:jules_pftparm=dz0v_dh_io: .false.; + =namelist:jules_pftparm=z0v_io: .true.; + +[namelist:jules_vegetation=l_stem_resp_fix] +compulsory=true +description=Switch for bug fix for stem respiration to use balanced LAI to + =derive respiring stem mass. +sort-key=Panel-I06 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_stem_resp_fix + +[namelist:jules_vegetation=l_trait_phys] +compulsory=true +description=Switch for using trait-based physiology. +sort-key=Panel-I07 +trigger=namelist:jules_pftparm=hw_sw_io: .true.; + =namelist:jules_pftparm=lma_io: .true.; + =namelist:jules_pftparm=nmass_io: .true.; + =namelist:jules_pftparm=nr_io: .true.; + =namelist:jules_pftparm=nsw_io: .true.; + =namelist:jules_pftparm=vint_io: .true.; + =namelist:jules_pftparm=vsl_io: .true.; + =namelist:jules_pftparm=neff_io: .false.; + =namelist:jules_pftparm=nl0_io: .false.; + =namelist:jules_pftparm=sigl_io: .false.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_trait_phys + +[namelist:jules_vegetation=l_trif_biocrop] +compulsory=true +description=Allow periodic harvesting of biocrops +fail-if=this == '.true.' and namelist:jules_vegetation=l_trif_crop == '.false.'; +sort-key=Panel-I02c1a +trigger=namelist:jules_triffid=harvest_type_io: .true.; + =namelist:jules_vegetation=l_ag_expand: .true.; + =namelist:jules_agric=file_harvest_doy: .true.; + =namelist:jules_agric=read_harvest_doy_from_dump: .true.; + =namelist:jules_agric=harvest_doy_name: .true.; + =namelist:jules_agric=zero_biocrop: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_trif_biocrop + +[namelist:jules_vegetation=l_trif_crop] +compulsory=true +description=Use agricultural PFTs +fail-if=this == '.true.' and namelist:jules_vegetation=l_trif_eq == '.true.'; +sort-key=Panel-I02c1 +trigger=namelist:jules_vegetation=l_trif_biocrop: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_trif_crop + +[namelist:jules_vegetation=l_trif_eq] +compulsory=true +description=Run TRIFFID in equilibrium mode +sort-key=Panel-I02c +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_trif_eq + +[namelist:jules_vegetation=l_trif_init_accum] +compulsory=true +description=Start a NRUN resetting accumulated Carbon fluxes to zero + =ONLY APPLICABLE TO THE UM +fail-if=this == '.true.' and namelist:jules_model_environment=l_jules_parent == 0; # This is only applicable to the UM so should be false in standalone +help=TRUE: Reset accumulated npp and respiration fluxes to 0. in an NRUN. This is the default + =FALSE: Accumulated fluxes are read from the dump. This is required for a NRUN-NRUN simulation to + =be bit comparable to a NRUN-CRUN experiment + =In a CRUN accumulated fluxes are always read from the dump +sort-key=Panel-I02c +type=logical + +[namelist:jules_vegetation=l_triffid] +compulsory=true +description=Use the TRIFFID dynamic vegetation model, except for competition +sort-key=Panel-I02 +trigger=namelist:jules_vegetation=l_nrun_mid_trif: .true.; + =namelist:jules_vegetation=l_trif_eq: .true.; + =namelist:jules_vegetation=triffid_period: .true.; + =namelist:jules_vegetation=l_veg_compete: .true.; + =namelist:jules_vegetation=l_landuse: .true.; + =namelist:jules_vegetation=l_ht_compete: .true.; + =namelist:jules_vegetation=l_nitrogen: .true.; + =namelist:jules_vegetation=l_red: .true.; + =namelist:jules_vegetation=l_trif_crop: .true.; + =namelist:jules_vegetation=l_trif_fire: .true.; + =namelist:jules_vegetation=l_trif_init_accum: .true.; + =namelist:jules_vegetation=frac_min: .true.; + =namelist:jules_vegetation=frac_seed: .true.; + =namelist:jules_vegetation=pow: .true.; + =namelist:jules_triffid: .true.; + =namelist:jules_agric=zero_agric: .true.; + =namelist:jules_agric=zero_past: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_triffid + +[namelist:jules_vegetation=l_veg_compete] +compulsory=true +description=Use competing vegetation +sort-key=Panel-I02c +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_veg_compete + +[namelist:jules_vegetation=l_vegcan_soilfx] +compulsory=true +description=Allow for conduction in the soil below the vegetative canopy. +sort-key=Panel-I08 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_vegcan_soilfx + +[namelist:jules_vegetation=l_vegdrag_pft] +compulsory=true +description=Switch for using vegetation canopy drag scheme for each PFT +fail-if=len(this) != namelist:jules_surface_types=npft; # A value must be given for each PFT +length=: +sort-key=Panel-I09 +trigger=namelist:jules_vegetation=c1_usuh: any(this == '.true.'); + = namelist:jules_vegetation=c2_usuh: any(this == '.true.'); + = namelist:jules_vegetation=c3_usuh: any(this == '.true.'); + = namelist:jules_vegetation=cd_leaf: any(this == '.true.'); + = namelist:jules_vegetation=l_rsl_scalar: any(this == '.true.'); +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::l_vegdrag_pft + +[namelist:jules_vegetation=n_alloc_jmax] +compulsory=true +description=Constant relating nitrogen allocation to Jmax +sort-key=Panel-I20c1 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::n_alloc_jmax + +[namelist:jules_vegetation=n_alloc_vcmax] +compulsory=true +description=Constant relating nitrogen allocation to Vcmax +sort-key=Panel-I20c1 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::n_alloc_vcmax + +[namelist:jules_vegetation=n_day_photo_acclim] +compulsory=true +description=Time constant for moving average of temperature (days) +sort-key=Panel-I20a1 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::n_day_photo_acclim + +[namelist:jules_vegetation=phenol_period] +compulsory=true +description=Update frequency for leaf phenology (days) +range=1:365 +sort-key=Panel-I01a +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::phenol_period + +[namelist:jules_vegetation=photo_acclim_model] +compulsory=true +description=Choice of model for acclimation of photosynthesis +sort-key=Panel-I20a +trigger=namelist:jules_pftparm=ds_jmax_io: 0; + =namelist:jules_pftparm=ds_vcmax_io: 0; + =namelist:jules_vegetation=dsj_coef: this > 0; + =namelist:jules_vegetation=dsv_coef: this > 0; + =namelist:jules_vegetation=jv25_coef: this > 0; + =namelist:jules_vegetation=n_day_photo_acclim: 2, 3; + =namelist:jules_vegetation_props: 1, 3; +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::photo_acclim_model +value-titles=No acclimation, Thermal adaptation, Thermal acclimation, Thermal adaptation and acclimation +values=0,1,2,3 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_vegetation=photo_act_model] +compulsory=true +description=Choice of model for the activation energies of Jmax and Vcmax. +fail-if=namelist:jules_vegetation=photo_acclim_model == 0 and this != 1; +sort-key=Panel-I20b +trigger=namelist:jules_pftparm=act_jmax_io: 1; + =namelist:jules_pftparm=act_vcmax_io: 1; + =namelist:jules_vegetation=act_j_coef: 2; + =namelist:jules_vegetation=act_v_coef: 2; +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::photo_act_model +value-titles=Vary by PFT only, Vary by acclimation only +values=1,2 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_vegetation=photo_jv_model] +compulsory=true +description=Choice of model for the variation of J25:V25 +fail-if=namelist:jules_vegetation=photo_acclim_model == 0 and this != 1; +sort-key=Panel-I20c +trigger=namelist:jules_vegetation=n_alloc_jmax: 2; + =namelist:jules_vegetation=n_alloc_vcmax: 2; +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::photo_jv_model +value-titles=Jmax only, total N constant +values=1,2 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_vegetation=pow] +compulsory=true +description=Power in sigmodial function used to get competition coefficients +sort-key=Panel-I02b +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::pow + +[namelist:jules_vegetation=stanton_leaf] +compulsory=true +description=Leaf-level Stanton number +range=0:1 +sort-key=Panel-I09a1 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::stanton_leaf + +[namelist:jules_vegetation=triffid_period] +compulsory=true +description=Update frequency for TRIFFID (days) +range=1:10000 +sort-key=Panel-I02a +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_vegetation.nml.html#JULES_VEGETATION::triffid_period + +[namelist:jules_vegetation_props] +compulsory=true +description=Configuration of spatially-varying thermal acclimation properties +ns=namelist/Ancillary data/Vegetation properties +sort-key=26 +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#namelist-JULES_VEGETATION_PROPS +widget[rose-config-edit]=pages.PageWithVariableTable --nvar nvars var use_file var_name tpl_name const_val + +[namelist:jules_vegetation_props=const_val] +compulsory=true +description=Constant value for all points (used if use_file = .false.) +fail-if=len(this) != namelist:jules_vegetation_props=nvars +length=: +sort-key=8 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_VEGETATION_PROPS::const_val + +[namelist:jules_vegetation_props=file] +compulsory=true +description=If read_list = TRUE, file to read list of file names + =If read_list = FALSE, file or file name template + =from which to read thermal acclimation properties. +sort-key=2 +trigger=namelist:jules_vegetation_props=tpl_name: '%vv' in this; + =namelist:jules_vegetation_props=read_list: '%vv' not in this; +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_VEGETATION_PROPS::file + +[namelist:jules_vegetation_props=nvars] +compulsory=true +description=Number of thermal acclimation properties that will be given +range=1 +sort-key=3 +trigger=namelist:jules_vegetation_props=var: this > 0; + = namelist:jules_vegetation_props=use_file: this > 0; +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_VEGETATION_PROPS::nvars + +[namelist:jules_vegetation_props=read_from_dump] +compulsory=true +description=Read spatially varying thermal acclimation properties from the dump file +sort-key=1 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_VEGETATION_PROPS::read_from_dump + +[namelist:jules_vegetation_props=read_list] +compulsory=true +description=Use list of file names; one per line for each of nvars. +fail-if=this == '.true.' and '%vv' in namelist:jules_vegetation_props=file; # Cannot use variable name templating while reading a list of files. +sort-key=2a +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_VEGETATION_PROPS::read_list + +[namelist:jules_vegetation_props=tpl_name] +compulsory=true +description=String to substitute into the file name template (used if use_file = .true.) +fail-if=len(this) != namelist:jules_vegetation_props=nvars +length=: +sort-key=7 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_VEGETATION_PROPS::tpl_name + +[namelist:jules_vegetation_props=use_file] +compulsory=true +description=Read variable from file +fail-if=len(this) != namelist:jules_vegetation_props=nvars +length=: +sort-key=5 +trigger=namelist:jules_vegetation_props=file: any(this == '.true.'); + = namelist:jules_vegetation_props=var_name: any(this == '.true.'); + = namelist:jules_vegetation_props=const_val: not all(this == '.true.'); +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_VEGETATION_PROPS::use_file + +[namelist:jules_vegetation_props=var] +compulsory=true +description=Names of the thermal acclimation ancillary variables, as recognised by JULES +fail-if=len(this) != namelist:jules_vegetation_props=nvars +length=: +sort-key=4 +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_VEGETATION_PROPS::var +values='t_home_gb' + +[namelist:jules_vegetation_props=var_name] +compulsory=true +description=Name in file (used if use_file = .true.) +fail-if=len(this) != namelist:jules_vegetation_props=nvars +length=: +sort-key=6 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_VEGETATION_PROPS::var_name + +[namelist:jules_water_resources] +compulsory=true +description=Configuration of water resource modelling +ns=namelist/JULES Science Settings/jules_water_resources +sort-key=15 +title=Water resources +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_water_resources.nml.html#namelist-JULES_WATER_RESOURCES + +[namelist:jules_water_resources=l_prioritise] +compulsory=true +description=Switch to specify the priority of water demands +sort-key=a8 +trigger=namelist:jules_water_resources=priority: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_water_resources.nml.html#JULES_WATER_RESOURCES::l_prioritise + +[namelist:jules_water_resources=l_water_domestic] +compulsory=true +description=Switch for modelling of water for domestic use +sort-key=a2 +trigger=namelist:jules_water_resources=rf_domestic: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_water_resources.nml.html#JULES_WATER_RESOURCES::l_water_domestic + +[namelist:jules_water_resources=l_water_environment] +compulsory=true +description=Switch for modelling of water for environmental use +fail-if=this == '.true.'; # code is not yet complete +sort-key=a3 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_water_resources.nml.html#JULES_WATER_RESOURCES::l_water_environment + +[namelist:jules_water_resources=l_water_industry] +compulsory=true +description=Switch for modelling of water for industrial use +sort-key=a4 +trigger=namelist:jules_water_resources=rf_industry: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_water_resources.nml.html#JULES_WATER_RESOURCES::l_water_industry + +[namelist:jules_water_resources=l_water_irrigation] +compulsory=true +description=Switch for modelling of water for irrigation +fail-if=namelist:jules_irrig=l_irrig_limit == '.true.' and this == '.true.'; # l_irrig_limit must be F if l_water_irrigation=T +sort-key=a5 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_water_resources.nml.html#JULES_WATER_RESOURCES::l_water_irrigation + +[namelist:jules_water_resources=l_water_livestock] +compulsory=true +description=Switch for modelling of water for livestock +sort-key=a6 +trigger=namelist:jules_water_resources=rf_livestock: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_water_resources.nml.html#JULES_WATER_RESOURCES::l_water_livestock + +[namelist:jules_water_resources=l_water_resources] +compulsory=true +description=Switch for modelling of water resource modelling + =This must be .false. in the UM until further testing. +fail-if=this == '.true.' and namelist:jules_model_environment=l_jules_parent == 1; # Must be false in the UM. +sort-key=a1 +trigger=namelist:jules_water_resources=l_prioritise: .true.; + =namelist:jules_water_resources=l_water_domestic: .true.; + =namelist:jules_water_resources=l_water_environment: .true.; + =namelist:jules_water_resources=l_water_industry: .true.; + =namelist:jules_water_resources=l_water_irrigation: .true.; + =namelist:jules_water_resources=l_water_livestock: .true.; + =namelist:jules_water_resources=l_water_transfers: .true.; + =namelist:jules_water_resources=nr_gwater_model: .true.; + =namelist:jules_water_resources=nstep_water_res: .true.; + =namelist:jules_water_resources=partition_method: .true.; + =namelist:jules_water_resources_props: .true.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_water_resources.nml.html#JULES_WATER_RESOURCES::l_water_resources + +[namelist:jules_water_resources=l_water_transfers] +compulsory=true +description=Switch for modelling of water for water transfers +fail-if=this == '.true.'; # code is not yet complete +sort-key=a7 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_water_resources.nml.html#JULES_WATER_RESOURCES::l_water_transfers + +[namelist:jules_water_resources=nr_gwater_model] +compulsory=true +description=Model for non-renewable groundwater +sort-key=b2 +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_water_resources.nml.html#JULES_WATER_RESOURCES::nr_gwater_model +value-titles=None,Last resort,Mix +values=0,1,2 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_water_resources=nstep_water_res] +compulsory=true +description=Timestep length for water resource model (number of main model timesteps) +range=1: +sort-key=b1 +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_water_resources.nml.html#JULES_WATER_RESOURCES::nstep_water_res + +[namelist:jules_water_resources=partition_method] +compulsory=true +description=Method used to get the target fraction of demand to be met from surface water +sort-key=b6 +trigger=namelist:jules_water_resources=sfc_water_factor: 2; +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_water_resources.nml.html#JULES_WATER_RESOURCES::partition_method +value-titles=None,Use ancillary file,Calculate from stores +values=0,1,2 +widget[rose-config-edit]=cylc8_compat.ComboBoxValueWidget + +[namelist:jules_water_resources=priority] +compulsory=true +description=Water sector names, in order of decreasing priority +length=: +sort-key=a9 +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_water_resources.nml.html#JULES_WATER_RESOURCES::priority +values='dom','env','ind','irr','liv','tra' + +[namelist:jules_water_resources=rf_domestic] +compulsory=true +description=Fraction of water that is returned after abstraction for domestic use +range=0:1 +sort-key=b3 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_water_resources.nml.html#JULES_WATER_RESOURCES::rf_domestic + +[namelist:jules_water_resources=rf_industry] +compulsory=true +description=Fraction of water that is returned after abstraction for industrial purposes +range=0:1 +sort-key=b4 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_water_resources.nml.html#JULES_WATER_RESOURCES::rf_industry + +[namelist:jules_water_resources=rf_livestock] +compulsory=true +description=Fraction of water that is returned after abstraction for livestock +range=0:1 +sort-key=b5 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_water_resources.nml.html#JULES_WATER_RESOURCES::rf_livestock + +[namelist:jules_water_resources=sfc_water_factor] +compulsory=true +description=Weight applied to surface water when calculating target fraction for surface water +range=0: +sort-key=b7 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_water_resources.nml.html#JULES_WATER_RESOURCES::sfc_water_factor + +[namelist:jules_water_resources_props] +compulsory=true +description=Configuration of spatially-varying water resource properties +ns=namelist/Ancillary data/Water resource properties +sort-key=26 +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#namelist-JULES_WATER_RESOURCES_PROPS +widget[rose-config-edit]=pages.PageWithVariableTable --nvar nvars var use_file var_name tpl_name const_val + +[namelist:jules_water_resources_props=const_val] +compulsory=true +description=Constant value for all points (used if use_file = .false.) +fail-if=len(this) != namelist:jules_water_resources_props=nvars +length=: +sort-key=8 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_WATER_RESOURCES_PROPS::const_val + +[namelist:jules_water_resources_props=file] +compulsory=true +description=If read_list = TRUE, file to read list of file names + =If read_list = FALSE, file or file name template + =from which to read overbank inundation properties. +sort-key=2 +trigger=namelist:jules_water_resources_props=tpl_name: '%vv' in this; + =namelist:jules_water_resources_props=read_list: '%vv' not in this; +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_WATER_RESOURCES_PROPS::file + +[namelist:jules_water_resources_props=nvars] +compulsory=true +description=Number of water resource properties that will be given +range=2:3 +sort-key=3 +trigger=namelist:jules_water_resources_props=var: this > 0; + = namelist:jules_water_resources_props=use_file: this > 0; +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_WATER_RESOURCES_PROPS::nvars + +[namelist:jules_water_resources_props=read_from_dump] +compulsory=true +description=Read spatially-varying water resource properties from the dump file +sort-key=1 +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_WATER_RESOURCES_PROPS::read_from_dump + +[namelist:jules_water_resources_props=read_list] +compulsory=true +description=Use list of file names; one per line for each of nvars. +fail-if=this == '.true.' and '%vv' in namelist:jules_water_resources_props=file; # Cannot use variable name templating while reading a list of files. +sort-key=2a +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_WATER_RESOURCES_PROPS::read_list + +[namelist:jules_water_resources_props=tpl_name] +compulsory=true +description=String to substitute into the file name template (used if use_file = .true.) +fail-if=len(this) != namelist:jules_water_resources_props=nvars +length=: +sort-key=7 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_WATER_RESOURCES_PROPS::tpl_name + +[namelist:jules_water_resources_props=use_file] +compulsory=true +description=Read variable from file +fail-if=len(this) != namelist:jules_water_resources_props=nvars +length=: +sort-key=5 +trigger=namelist:jules_water_resources_props=file: any(this == '.true.'); + = namelist:jules_water_resources_props=var_name: any(this == '.true.'); + = namelist:jules_water_resources_props=const_val: not all(this == '.true.'); +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_WATER_RESOURCES_PROPS::use_file + +[namelist:jules_water_resources_props=var] +compulsory=true +description=Names of the water resource ancillary variables, as recognised by JULES +fail-if=len(this) != namelist:jules_water_resources_props=nvars +length=: +sort-key=4 +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_WATER_RESOURCES_PROPS::var +values='conv_loss_frac','sfc_water_frac' + +[namelist:jules_water_resources_props=var_name] +compulsory=true +description=Name in file (used if use_file = .true.) +fail-if=len(this) != namelist:jules_water_resources_props=nvars +length=: +sort-key=6 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_WATER_RESOURCES_PROPS::var_name + +[namelist:jules_z_land] +compulsory=true +ns=namelist/Grid configuration/Gridbox mean elevation associated with the forcing data +sort-key=27 +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#namelist-JULES_Z_LAND + +[namelist:jules_z_land=file] +compulsory=true +description=Name of the file to read the elevation of the forcing data +sort-key=3 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_Z_LAND::file + +[namelist:jules_z_land=surf_hgt_band] +compulsory=true +description=Spatially invariant elevation bands used if any tile has l_elev_absolute_height=.true.. Elevation bands may have absolute or relative to gridbox mean elevations. +fail-if=(namelist:jules_surface=l_aggregate and len(this) != 1) or (not namelist:jules_surface=l_aggregate and len(this) != (namelist:jules_surface_types=npft + namelist:jules_surface_types=nnvg)) +length=: +sort-key=1 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_SURF_HGT::surf_hgt_io + +[namelist:jules_z_land=use_file] +compulsory=true +description=Read the elevation of forcing data from a file +length=: +sort-key=2 +trigger=namelist:jules_z_land=file: .true.; + = namelist:jules_z_land=z_land_name: .true.; + = namelist:jules_z_land=z_land_io: .false.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_Z_LAND::use_file + +[namelist:jules_z_land=z_land_io] +compulsory=true +description=Elevation of the forcing data for the single location +length=: +sort-key=5 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelist/model_grid.nml.html#JULES_Z_LAND::z_land_io + +[namelist:jules_z_land=z_land_name] +compulsory=true +description=Name of the variable containing the elevation of the forcing data +sort-key=4 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/model_grid.nml.html#JULES_Z_LAND::z_land_name + +[namelist:oasis_rivers] +compulsory=true +description=Configuration of Rivers coupled via OASIS to parent model +ns=namelist/River coupling +sort-key=07 +url=https://metoffice.github.io/jules/vn8.2/namelists/oasis_rivers.nml.html#namelist-OASIS_RIVERS + +[namelist:oasis_rivers=cpl_freq] +compulsory=true +description=River coupling frequency in seconds +fail-if=(this % namelist:jules_time=timestep_len) != 0; # The coupling frequency must be a multiple of the time step +range=1: +sort-key=1 +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/oasis_rivers.nml.html#OASIS_RIVERS::cpl_freq + +[namelist:oasis_rivers=np_receive] +compulsory=true +description=Number of received fields via OASIS +fail-if=this < 0; + =this != 2; # Only fully coupled mode is supported +range=0:2 +sort-key=1 +trigger=namelist:oasis_rivers=receive_fields: this > 0; + =namelist:oasis_rivers=cpl_freq: this >= 0; +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/oasis_rivers.nml.html#OASIS_RIVERS::np_receive + +[namelist:oasis_rivers=np_send] +compulsory=true +description=Number of sent fields via OASIS +fail-if=this < 0; + =this == 0 and namelist:oasis_rivers=np_receive == 0; # Oasis coupling requested but no fields coupled +range=0:2 +sort-key=1 +trigger=namelist:oasis_rivers=send_fields: this > 0; + =namelist:oasis_rivers=cpl_freq: this >= 0; +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/oasis_rivers.nml.html#OASIS_RIVERS::np_send + +[namelist:oasis_rivers=receive_fields] +compulsory=true +description=List of fields received via OASIS coupling +fail-if=len(this)>2; + =len(this) != namelist:oasis_rivers=np_receive; +length=: +sort-key=3 +url=https://metoffice.github.io/jules/vn8.2/namelists/oasis_rivers.nml.html#OASIS_RIVERS::receive_fields +values='sub_surf_roff_rp','surf_roff_rp','sub_surf_roff','surf_roff' + +[namelist:oasis_rivers=send_fields] +compulsory=true +description=List of fields sent via OASIS coupling +fail-if=len(this)>2; + =len(this) != namelist:oasis_rivers=np_send; + =any(this == "'outflow_per_river'") and not any(namelist:jules_rivers_props=var == "'rivers_outflow_number'"); # outflow_per_river requires the rivers outflow numbers ancillary data +length=: +sort-key=2 +url=https://metoffice.github.io/jules/vn8.2/namelists/oasis_rivers.nml.html#OASIS_RIVERS::send_fields +values='outflow_per_river','inland_outflow' + +[namelist:run_convection] +compulsory=false +description=Atmosphere Convection + =NOT AVAILABLE TO STANDALONE + =READ BY UM-JULES ONLY + =INCLUDED TO ALLOW TRIGGER LISTS TO BE SHARED + +[namelist:run_convection=cnv_cold_pools] +compulsory=false +description=Convective cold pool scheme. + =NOT AVAILABLE TO STANDALONE + =READ BY UM-JULES ONLY + =INCLUDED TO ALLOW TRIGGER LISTS TO BE SHARED + +[namelist:run_stochastic] +compulsory=false +description=Atmosphere Stochastic Schemes + =NOT AVAILABLE TO STANDALONE + =READ BY UM-JULES ONLY + =INCLUDED TO ALLOW TRIGGER LISTS TO BE SHARED + +[namelist:run_stochastic=orog_drag_param_rp] +compulsory=false +description=Orographic form drag parameter + =NOT AVAILABLE TO STANDALONE + =READ BY UM-JULES ONLY + =INCLUDED TO ALLOW TRIGGER LISTS TO BE SHARED + +[namelist:run_stochastic=z0_urban_mult_rp] +compulsory=false +description=RP for the roughness length for urban canyon and roof tiles + =NOT AVAILABLE TO STANDALONE + =READ BY UM-JULES ONLY + =INCLUDED TO ALLOW TRIGGER LISTS TO BE SHARED + +[namelist:urban_properties] +compulsory=true +description=Configuration of spatially varying urban properties +ns=namelist/Ancillary data/Urban properties +sort-key=23 +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#namelist-URBAN_PROPERTIES +widget[rose-config-edit]=pages.PageWithVariableTable --nvar nvars var use_file var_name tpl_name const_val + +[namelist:urban_properties=const_val] +compulsory=true +description=Constant value for all points (used if use_file = .false.) +fail-if=len(this) != namelist:urban_properties=nvars +length=: +sort-key=7 +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#URBAN_PROPERTIES::const_val + +[namelist:urban_properties=file] +compulsory=true +description=If read_list = TRUE, file to read list of file names + =If read_list = FALSE, file or file name template + =from which to read urban properties. +sort-key=1 +trigger=namelist:urban_properties=tpl_name: '%vv' in this; + =namelist:urban_properties=read_list: '%vv' not in this; +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#URBAN_PROPERTIES::file + +[namelist:urban_properties=nvars] +compulsory=true +description=Number of urban properties that will be given +fail-if=this == 0 and namelist:jules_surface_types=urban_canyon > 0; # Urban properties need to be supplied when using two-tile urban schemes + =this == 0 and namelist:jules_surface_types=urban_roof > 0; # Urban properties need to be supplied when using two-tile urban schemes +range=1:9 +sort-key=2 +trigger=namelist:urban_properties=var: this > 0; + = namelist:urban_properties=use_file: this > 0; +type=integer +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#URBAN_PROPERTIES::nvars + +[namelist:urban_properties=read_list] +compulsory=true +description=Use list of file names; one per line for each of nvars. +fail-if=this == '.true.' and '%vv' in namelist:urban_properties=file; # Cannot use variable name templating while reading a list of files. +sort-key=1a +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#URBAN_PROPERTIES::read_list + +[namelist:urban_properties=tpl_name] +compulsory=true +description=String to substitute into the file name template (used if use_file = .true.) +fail-if=len(this) != namelist:urban_properties=nvars +length=: +sort-key=6 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#URBAN_PROPERTIES::tpl_name + +[namelist:urban_properties=use_file] +compulsory=true +description=Read variable from file +fail-if=len(this) != namelist:urban_properties=nvars +length=: +sort-key=4 +trigger=namelist:urban_properties=file: any(this == '.true.'); + = namelist:urban_properties=var_name: any(this == '.true.'); + = namelist:urban_properties=const_val: not all(this == '.true.'); +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#URBAN_PROPERTIES::use_file + +[namelist:urban_properties=var] +compulsory=true +description=Name of the urban variable, as recognised by JULES +fail-if=len(this) != namelist:urban_properties=nvars + =not any(this == "'wrr'") and (namelist:jules_surface_types=urban_canyon > 0 or namelist:jules_surface_types=urban_roof > 0); # wrr must be specified when using two-tile urban schemes + =(not any(this == "'wrr'") or not any(this == "'hgt'") or not any(this == "'hwr'")) and (not namelist:jules_urban=l_urban_empirical); # Urban morphology must be specified if not using empirical morphology + =not any(this == "'ztm'") and namelist:jules_urban=l_moruses_macdonald == '.false.'; # Roughness length must be specified if not using MacDonald parametrisation + =not any(this == "'disp'") and namelist:jules_urban=l_moruses_macdonald == '.false.'; # Displacement height must be specified if not using MacDonald parametrisation + =not any(this == "'albwl'") and namelist:jules_urban=l_moruses_albedo == '.true.'; # Albedo of wall is required if using MORUSES albedo parameterisation + =not any(this == "'albrd'") and namelist:jules_urban=l_moruses_albedo == '.true.'; # Albedo of road is required if using MORUSES albedo parameterisation + =not any(this == "'emisw'") and namelist:jules_urban=l_moruses_emissivity == '.true.'; # Emissivity of wall is required if using MORUSES emissivity parameterisation + =not any(this == "'emisr'") and namelist:jules_urban=l_moruses_emissivity == '.true.'; # Emissivity of road is required if using MORUSES emissivity parameterisation +length=: +sort-key=3 +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#URBAN_PROPERTIES::var +values='albrd','albwl','disp','emisr','emisw','hgt','hwr','wrr','ztm' + +[namelist:urban_properties=var_name] +compulsory=true +description=Name in file (used if use_file = .true.) +fail-if=len(this) != namelist:urban_properties=nvars +length=: +sort-key=5 +type=character +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#URBAN_PROPERTIES::var_name + +# Dummy page to force sort order for Ancillary namespace +[namespace:ancils] +ns=namelist/Ancillary data +sort-key=06 + +# Dummy page to force sort order for Grid configuration settings +[namespace:grid] +ns=namelist/Grid configuration +sort-key=05 + +# Dummy section to combine IMOGEN namelists +[namespace:imogen] +ns=namelist/IMOGEN +sort-key=08 +url=https://metoffice.github.io/jules/vn8.2/namelists/imogen.nml.html + +# Dummy page to force sort order for JULES Science Settings +[namespace:science] +ns=namelist/JULES Science Settings +sort-key=02 + +# Dummy page to force sort order for JULES Surface Types +[namespace:surface_types] +ns=namelist/JULES Surface Types +sort-key=01 diff --git a/rose-meta/jules-um/HEAD/rose-meta.conf b/rose-meta/jules-um/HEAD/rose-meta.conf index edcf667e..0f8fdd05 100644 --- a/rose-meta/jules-um/HEAD/rose-meta.conf +++ b/rose-meta/jules-um/HEAD/rose-meta.conf @@ -186,6 +186,357 @@ trigger=namelist:jules_pftparm: 1; =namelist:run_stochastic=z0v_rp_min: 1 ; =namelist:run_stochastic=z0v_rp: 1 ; +[namelist:jules_pftparm=a_wl_io] +length=: + +[namelist:jules_pftparm=a_ws_io] +length=: + +[namelist:jules_pftparm=act_jmax_io] +length=: + +[namelist:jules_pftparm=act_vcmax_io] +length=: + +[namelist:jules_pftparm=aef_io] +length=: + +[namelist:jules_pftparm=albsnc_max_io] +length=: + +[namelist:jules_pftparm=albsnc_min_io] +length=: + +[namelist:jules_pftparm=albsnf_max_io] +length=: + +[namelist:jules_pftparm=albsnf_maxl_io] +length=: + +[namelist:jules_pftparm=albsnf_maxu_io] +length=: + +[namelist:jules_pftparm=alnir_io] +length=: + +[namelist:jules_pftparm=alnirl_io] +length=: + +[namelist:jules_pftparm=alniru_io] +length=: + +[namelist:jules_pftparm=alpar_io] +length=: + +[namelist:jules_pftparm=alparl_io] +length=: + +[namelist:jules_pftparm=alparu_io] +length=: + +[namelist:jules_pftparm=alpha_elec_io] +length=: + +[namelist:jules_pftparm=alpha_io] +length=: + +[namelist:jules_pftparm=avg_ba_io] +length=: + +[namelist:jules_pftparm=b_wl_io] +length=: + +[namelist:jules_pftparm=c3_io] +length=: + +[namelist:jules_pftparm=can_struct_a_io] +length=: + +[namelist:jules_pftparm=catch0_io] +length=: + +[namelist:jules_pftparm=ccleaf_max_io] +length=: + +[namelist:jules_pftparm=ccleaf_min_io] +length=: + +[namelist:jules_pftparm=ccwood_max_io] +length=: + +[namelist:jules_pftparm=ccwood_min_io] +length=: + +[namelist:jules_pftparm=ci_st_io] +length=: + +[namelist:jules_pftparm=dcatch_dlai_io] +length=: + +[namelist:jules_pftparm=deact_jmax_io] +length=: + +[namelist:jules_pftparm=deact_vcmax_io] +length=: + +[namelist:jules_pftparm=dfp_dcuo_io] +length=: + +[namelist:jules_pftparm=dgl_dm_io] +length=: + +[namelist:jules_pftparm=dgl_dt_io] +length=: + +[namelist:jules_pftparm=dqcrit_io] +length=: + +[namelist:jules_pftparm=ds_jmax_io] +length=: + +[namelist:jules_pftparm=ds_vcmax_io] +length=: + +[namelist:jules_pftparm=dust_veg_scj_io] +length=: + +[namelist:jules_pftparm=dz0v_dh_io] +length=: + +[namelist:jules_pftparm=emis_pft_io] +length=: + +[namelist:jules_pftparm=eta_sl_io] +length=: + +[namelist:jules_pftparm=f0_io] +length=: + +[namelist:jules_pftparm=fd_io] +length=: + +[namelist:jules_pftparm=fef_bc_io] +length=: + +[namelist:jules_pftparm=fef_c2h4_io] +length=: + +[namelist:jules_pftparm=fef_c2h6_io] +length=: + +[namelist:jules_pftparm=fef_c3h8_io] +length=: + +[namelist:jules_pftparm=fef_ch4_io] +length=: + +[namelist:jules_pftparm=fef_co2_io] +length=: + +[namelist:jules_pftparm=fef_co_io] +length=: + +[namelist:jules_pftparm=fef_dms_io] +length=: + +[namelist:jules_pftparm=fef_hcho_io] +length=: + +[namelist:jules_pftparm=fef_mecho_io] +length=: + +[namelist:jules_pftparm=fef_nh3_io] +length=: + +[namelist:jules_pftparm=fef_nox_io] +length=: + +[namelist:jules_pftparm=fef_oc_io] +length=: + +[namelist:jules_pftparm=fef_so2_io] +length=: + +[namelist:jules_pftparm=fire_mort_io] +length=: + +[namelist:jules_pftparm=fl_o3_ct_io] +length=: + +[namelist:jules_pftparm=fsmc_mod_io] +length=: + +[namelist:jules_pftparm=fsmc_of_io] +length=: + +[namelist:jules_pftparm=fsmc_p0_io] +length=: + +[namelist:jules_pftparm=g1_stomata_io] +length=: + +[namelist:jules_pftparm=g_leaf_0_io] +length=: + +[namelist:jules_pftparm=glmin_io] +length=: + +[namelist:jules_pftparm=gpp_st_io] +length=: + +[namelist:jules_pftparm=gsoil_f_io] +length=: + +[namelist:jules_pftparm=hw_sw_io] +length=: + +[namelist:jules_pftparm=ief_io] +length=: + +[namelist:jules_pftparm=infil_f_io] +length=: + +[namelist:jules_pftparm=jv25_ratio_io] +length=: + +[namelist:jules_pftparm=kext_io] +length=: + +[namelist:jules_pftparm=kn_io] +length=: + +[namelist:jules_pftparm=knl_io] +length=: + +[namelist:jules_pftparm=kpar_io] +length=: + +[namelist:jules_pftparm=lai_alb_lim_io] +length=: + +[namelist:jules_pftparm=lma_io] +length=: + +[namelist:jules_pftparm=mef_io] +length=: + +[namelist:jules_pftparm=neff_io] +length=: + +[namelist:jules_pftparm=nl0_io] +length=: + +[namelist:jules_pftparm=nmass_io] +length=: + +[namelist:jules_pftparm=nr_io] +length=: + +[namelist:jules_pftparm=nr_nl_io] +length=: + +[namelist:jules_pftparm=ns_nl_io] +length=: + +[namelist:jules_pftparm=nsw_io] +length=: + +[namelist:jules_pftparm=omega_io] +length=: + +[namelist:jules_pftparm=omegal_io] +length=: + +[namelist:jules_pftparm=omegau_io] +length=: + +[namelist:jules_pftparm=omnir_io] +length=: + +[namelist:jules_pftparm=omnirl_io] +length=: + +[namelist:jules_pftparm=omniru_io] +length=: + +[namelist:jules_pftparm=orient_io] +length=: + +[namelist:jules_pftparm=pft_name_io] +length=: + +[namelist:jules_pftparm=psi_close_io] +length=: + +[namelist:jules_pftparm=psi_open_io] +length=: + +[namelist:jules_pftparm=q10_leaf_io] +length=: + +[namelist:jules_pftparm=r_grow_io] +length=: + +[namelist:jules_pftparm=rootd_ft_io] +length=: + +[namelist:jules_pftparm=sigl_io] +length=: + +[namelist:jules_pftparm=sox_a_io] +length=: + +[namelist:jules_pftparm=sox_p50_io] +length=: + +[namelist:jules_pftparm=sox_rp_min_io] +length=: + +[namelist:jules_pftparm=sug_g0_io] +length=: + +[namelist:jules_pftparm=sug_grec_io] +length=: + +[namelist:jules_pftparm=sug_yg_io] +length=: + +[namelist:jules_pftparm=tef_io] +length=: + +[namelist:jules_pftparm=tleaf_of_io] +length=: + +[namelist:jules_pftparm=tlow_io] +length=: + +[namelist:jules_pftparm=tupp_io] +length=: + +[namelist:jules_pftparm=vint_io] +length=: + +[namelist:jules_pftparm=vsl_io] +length=: + +[namelist:jules_pftparm=z0hm_classic_pft_io] +compulsory=true +description=Ratio of the roughness length for heat to the roughness length for momentum for the CLASSIC aerosol + =scheme only + =NOT APPLICABLE TO STANDALONE OR LFRIC (l_aero_classic) +fail-if=len(this) != namelist:jules_surface_types=npft +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HOX +type=real +url=https://metoffice.github.io/jules/latest/namelists/pft_params.nml.html#JULES_PFTPARM::z0hm_classic_pft_io + +[namelist:jules_pftparm=z0hm_pft_io] +length=: + +[namelist:jules_pftparm=z0v_io] +length=: + [namelist:jules_rivers_props] compulsory=true description=Configuration of spatially varying rivers properties diff --git a/rose-meta/jules-um/vn8.2/rose-meta.conf b/rose-meta/jules-um/vn8.2/rose-meta.conf new file mode 100644 index 00000000..d53e9a4e --- /dev/null +++ b/rose-meta/jules-um/vn8.2/rose-meta.conf @@ -0,0 +1,592 @@ +############################################################################### +# This is the UM flavour of the JULES metadata +############################################################################### +# This should only contain: +# * Import statements from jules-shared. +# * UM specific amendments to the imported metadata. +# The majority of the metadata should be under rose-meta/jules-shared. +# Please see jules:wiki:SharingJULESmetadata +############################################################################### + +import=jules-shared/jules-hydrology/vn8.2 + =jules-shared/jules-model-environment/vn8.2 + =jules-shared/jules-nvegparm/vn8.2 + =jules-shared/jules-pftparm/vn8.2 + =jules-shared/jules-radiation/vn8.2 + =jules-shared/jules-snow/vn8.2 + =jules-shared/jules-soil/vn8.2 + =jules-shared/jules-surface/vn8.2 + =jules-shared/jules-surface-types/vn8.2 + =jules-shared/jules-urban/vn8.2 + =jules-shared/jules-vegetation/vn8.2 + +[namelist:jules_flake] +description=Configuration of the FLake model, only required if l_flake_model=true + =NOT AVAILABLE TO UM + =READ BY STANDALONE EXECUTABLES ONLY + =INCLUDED TO ALLOW TRIGGER LISTS TO BE SHARED +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#namelist-JULES_FLAKE + +[namelist:jules_flake=nvars] +description=Number of FLake variables that will be provided + =NOT AVAILABLE TO UM + =READ BY STANDALONE EXECUTABLES ONLY + =INCLUDED TO ALLOW TRIGGER LISTS TO BE SHARED +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_FLAKE::nvars + +[namelist:jules_model_environment=l_jules_parent] +fail-if=this == 0; # This should be 1 to indicate UM-JULES. + =this == 2 and namelist:jules_model_environment=lsm_id != 3; # The OASIS coupler can only be used with Rivers-only (OASIS-Rivers). +value-titles=UM +values=1 + +[namelist:jules_model_environment=lsm_id] +trigger=namelist:jules_pftparm: 1; + =namelist:jules_pftparm=a_wl_io: 1; + =namelist:jules_pftparm=a_ws_io: 1; + =namelist:jules_pftparm=act_jmax_io: 1; + =namelist:jules_pftparm=act_vcmax_io: 1; + =namelist:jules_pftparm=aef_io: 1; + =namelist:jules_pftparm=albsnc_max_io: 1; + =namelist:jules_pftparm=albsnc_min_io: 1; + =namelist:jules_pftparm=albsnf_max_io: 1; + =namelist:jules_pftparm=albsnf_maxl_io: 1; + =namelist:jules_pftparm=albsnf_maxu_io: 1; + =namelist:jules_pftparm=alnir_io: 1; + =namelist:jules_pftparm=alnirl_io: 1; + =namelist:jules_pftparm=alniru_io: 1; + =namelist:jules_pftparm=alpar_io: 1; + =namelist:jules_pftparm=alparl_io: 1; + =namelist:jules_pftparm=alparu_io: 1; + =namelist:jules_pftparm=alpha_elec_io: 1; + =namelist:jules_pftparm=alpha_io: 1; + =namelist:jules_pftparm=avg_ba_io: 1; + =namelist:jules_pftparm=b_wl_io: 1; + =namelist:jules_pftparm=c3_io: 1; + =namelist:jules_pftparm=can_struct_a_io: 1; + =namelist:jules_pftparm=catch0_io: 1; + =namelist:jules_pftparm=ccleaf_max_io: 1; + =namelist:jules_pftparm=ccleaf_min_io: 1; + =namelist:jules_pftparm=ccwood_max_io: 1; + =namelist:jules_pftparm=ccwood_min_io: 1; + =namelist:jules_pftparm=ci_st_io: 1; + =namelist:jules_pftparm=dcatch_dlai_io: 1; + =namelist:jules_pftparm=deact_jmax_io: 1; + =namelist:jules_pftparm=deact_vcmax_io: 1; + =namelist:jules_pftparm=dfp_dcuo_io: 1; + =namelist:jules_pftparm=dgl_dm_io: 1; + =namelist:jules_pftparm=dgl_dt_io: 1; + =namelist:jules_pftparm=dqcrit_io: 1; + =namelist:jules_pftparm=ds_jmax_io: 1; + =namelist:jules_pftparm=ds_vcmax_io: 1; + =namelist:jules_pftparm=dz0v_dh_io: 1; + =namelist:jules_pftparm=z0v_io: 1; + =namelist:jules_pftparm=emis_pft_io: 1; + =namelist:jules_pftparm=eta_sl_io: 1; + =namelist:jules_pftparm=f0_io: 1; + =namelist:jules_pftparm=fd_io: 1; + =namelist:jules_pftparm=fef_bc_io: 1; + =namelist:jules_pftparm=fef_ch4_io: 1; + =namelist:jules_pftparm=fef_co2_io: 1; + =namelist:jules_pftparm=fef_co_io: 1; + =namelist:jules_pftparm=fef_nox_io: 1; + =namelist:jules_pftparm=fef_oc_io: 1; + =namelist:jules_pftparm=fef_so2_io: 1; + =namelist:jules_pftparm=fef_c2h4_io: 1; + =namelist:jules_pftparm=fef_c2h6_io: 1; + =namelist:jules_pftparm=fef_c3h8_io: 1; + =namelist:jules_pftparm=fef_hcho_io: 1; + =namelist:jules_pftparm=fef_mecho_io: 1; + =namelist:jules_pftparm=fef_nh3_io: 1; + =namelist:jules_pftparm=fef_dms_io: 1; + =namelist:jules_pftparm=fire_mort_io: 1; + =namelist:jules_pftparm=fl_o3_ct_io: 1; + =namelist:jules_pftparm=fsmc_of_io: 1; + =namelist:jules_pftparm=fsmc_p0_io: 1; + =namelist:jules_pftparm=g1_stomata_io: 1; + =namelist:jules_pftparm=g_leaf_0_io: 1; + =namelist:jules_pftparm=glmin_io: 1; + =namelist:jules_pftparm=gpp_st_io: 1; + =namelist:jules_pftparm=gsoil_f_io: 1; + =namelist:jules_pftparm=hw_sw_io: 1; + =namelist:jules_pftparm=ief_io: 1; + =namelist:jules_pftparm=infil_f_io: 1; + =namelist:jules_pftparm=jv25_ratio_io: 1; + =namelist:jules_pftparm=kext_io: 1; + =namelist:jules_pftparm=kn_io: 1; + =namelist:jules_pftparm=knl_io: 1; + =namelist:jules_pftparm=kpar_io: 1; + =namelist:jules_pftparm=lai_alb_lim_io: 1; + =namelist:jules_pftparm=lma_io: 1; + =namelist:jules_pftparm=mef_io: 1; + =namelist:jules_pftparm=neff_io: 1; + =namelist:jules_pftparm=nl0_io: 1; + =namelist:jules_pftparm=nmass_io: 1; + =namelist:jules_pftparm=nr_io: 1; + =namelist:jules_pftparm=nr_nl_io: 1; + =namelist:jules_pftparm=ns_nl_io: 1; + =namelist:jules_pftparm=nsw_io: 1; + =namelist:jules_pftparm=omega_io: 1; + =namelist:jules_pftparm=omegal_io: 1; + =namelist:jules_pftparm=omegau_io: 1; + =namelist:jules_pftparm=omnir_io: 1; + =namelist:jules_pftparm=omnirl_io: 1; + =namelist:jules_pftparm=omniru_io: 1; + =namelist:jules_pftparm=orient_io: 1; + =namelist:jules_pftparm=psi_close_io: 1; + =namelist:jules_pftparm=psi_open_io: 1; + =namelist:jules_pftparm=q10_leaf_io: 1; + =namelist:jules_pftparm=r_grow_io: 1; + =namelist:jules_pftparm=rootd_ft_io: 1; + =namelist:jules_pftparm=sigl_io: 1; + =namelist:jules_pftparm=sug_g0_io: 1; + =namelist:jules_pftparm=sug_grec_io: 1; + =namelist:jules_pftparm=sug_yg_io: 1; + =namelist:jules_pftparm=tef_io: 1; + =namelist:jules_pftparm=tleaf_of_io: 1; + =namelist:jules_pftparm=tlow_io: 1; + =namelist:jules_pftparm=tupp_io: 1; + =namelist:jules_pftparm=vint_io: 1; + =namelist:jules_pftparm=vsl_io: 1; + =namelist:jules_pftparm=z0hm_classic_pft_io: 1; + =namelist:jules_pftparm=z0hm_pft_io: 1; + =namelist:jules_nvegparm: 1; + =namelist:jules_nvegparm=albsnc_nvg_io: 1; + =namelist:jules_nvegparm=albsnf_nvg_io: 1; + =namelist:jules_nvegparm=albsnf_nvgl_io: 1; + =namelist:jules_nvegparm=albsnf_nvgu_io: 1; + =namelist:jules_nvegparm=catch_nvg_io: 1; + =namelist:jules_nvegparm=ch_nvg_io: 1; + =namelist:jules_nvegparm=emis_nvg_io: 1; + =namelist:jules_nvegparm=gs_nvg_io: 1; + =namelist:jules_nvegparm=infil_nvg_io: 1; + =namelist:jules_nvegparm=vf_nvg_io: 1; + =namelist:jules_nvegparm=z0_nvg_io: 1; + =namelist:jules_nvegparm=z0hm_classic_nvg_io: 1; + =namelist:jules_nvegparm=z0hm_nvg_io: 1; + =namelist:run_stochastic=alnir_rp_max: 1 ; + =namelist:run_stochastic=alnir_rp_min: 1 ; + =namelist:run_stochastic=alnir_rp: 1 ; + =namelist:run_stochastic=alpar_rp_max: 1 ; + =namelist:run_stochastic=alpar_rp_min: 1 ; + =namelist:run_stochastic=alpar_rp: 1 ; + =namelist:run_stochastic=omega_rp_max: 1 ; + =namelist:run_stochastic=omega_rp_min: 1 ; + =namelist:run_stochastic=omega_rp: 1 ; + =namelist:run_stochastic=omnir_rp_max: 1 ; + =namelist:run_stochastic=omnir_rp_min: 1 ; + =namelist:run_stochastic=omnir_rp: 1 ; + =namelist:run_stochastic=z0_soil_rp: 1 ; + =namelist:run_stochastic=z0_urban_mult_rp: 1 ; + =namelist:run_stochastic=z0hm_pft_rp_max: 1 ; + =namelist:run_stochastic=z0hm_pft_rp_min: 1 ; + =namelist:run_stochastic=z0hm_pft_rp: 1 ; + =namelist:run_stochastic=z0hm_soil_rp: 1 ; + =namelist:run_stochastic=z0v_rp_max: 1 ; + =namelist:run_stochastic=z0v_rp_min: 1 ; + =namelist:run_stochastic=z0v_rp: 1 ; + +[namelist:jules_pftparm=a_wl_io] +length=: + +[namelist:jules_pftparm=a_ws_io] +length=: + +[namelist:jules_pftparm=act_jmax_io] +length=: + +[namelist:jules_pftparm=act_vcmax_io] +length=: + +[namelist:jules_pftparm=aef_io] +length=: + +[namelist:jules_pftparm=albsnc_max_io] +length=: + +[namelist:jules_pftparm=albsnc_min_io] +length=: + +[namelist:jules_pftparm=albsnf_max_io] +length=: + +[namelist:jules_pftparm=albsnf_maxl_io] +length=: + +[namelist:jules_pftparm=albsnf_maxu_io] +length=: + +[namelist:jules_pftparm=alnir_io] +length=: + +[namelist:jules_pftparm=alnirl_io] +length=: + +[namelist:jules_pftparm=alniru_io] +length=: + +[namelist:jules_pftparm=alpar_io] +length=: + +[namelist:jules_pftparm=alparl_io] +length=: + +[namelist:jules_pftparm=alparu_io] +length=: + +[namelist:jules_pftparm=alpha_elec_io] +length=: + +[namelist:jules_pftparm=alpha_io] +length=: + +[namelist:jules_pftparm=avg_ba_io] +length=: + +[namelist:jules_pftparm=b_wl_io] +length=: + +[namelist:jules_pftparm=c3_io] +length=: + +[namelist:jules_pftparm=can_struct_a_io] +length=: + +[namelist:jules_pftparm=catch0_io] +length=: + +[namelist:jules_pftparm=ccleaf_max_io] +length=: + +[namelist:jules_pftparm=ccleaf_min_io] +length=: + +[namelist:jules_pftparm=ccwood_max_io] +length=: + +[namelist:jules_pftparm=ccwood_min_io] +length=: + +[namelist:jules_pftparm=ci_st_io] +length=: + +[namelist:jules_pftparm=dcatch_dlai_io] +length=: + +[namelist:jules_pftparm=deact_jmax_io] +length=: + +[namelist:jules_pftparm=deact_vcmax_io] +length=: + +[namelist:jules_pftparm=dfp_dcuo_io] +length=: + +[namelist:jules_pftparm=dgl_dm_io] +length=: + +[namelist:jules_pftparm=dgl_dt_io] +length=: + +[namelist:jules_pftparm=dqcrit_io] +length=: + +[namelist:jules_pftparm=ds_jmax_io] +length=: + +[namelist:jules_pftparm=ds_vcmax_io] +length=: + +[namelist:jules_pftparm=dust_veg_scj_io] +length=: + +[namelist:jules_pftparm=dz0v_dh_io] +length=: + +[namelist:jules_pftparm=emis_pft_io] +length=: + +[namelist:jules_pftparm=eta_sl_io] +length=: + +[namelist:jules_pftparm=f0_io] +length=: + +[namelist:jules_pftparm=fd_io] +length=: + +[namelist:jules_pftparm=fef_bc_io] +length=: + +[namelist:jules_pftparm=fef_c2h4_io] +length=: + +[namelist:jules_pftparm=fef_c2h6_io] +length=: + +[namelist:jules_pftparm=fef_c3h8_io] +length=: + +[namelist:jules_pftparm=fef_ch4_io] +length=: + +[namelist:jules_pftparm=fef_co2_io] +length=: + +[namelist:jules_pftparm=fef_co_io] +length=: + +[namelist:jules_pftparm=fef_dms_io] +length=: + +[namelist:jules_pftparm=fef_hcho_io] +length=: + +[namelist:jules_pftparm=fef_mecho_io] +length=: + +[namelist:jules_pftparm=fef_nh3_io] +length=: + +[namelist:jules_pftparm=fef_nox_io] +length=: + +[namelist:jules_pftparm=fef_oc_io] +length=: + +[namelist:jules_pftparm=fef_so2_io] +length=: + +[namelist:jules_pftparm=fire_mort_io] +length=: + +[namelist:jules_pftparm=fl_o3_ct_io] +length=: + +[namelist:jules_pftparm=fsmc_mod_io] +length=: + +[namelist:jules_pftparm=fsmc_of_io] +length=: + +[namelist:jules_pftparm=fsmc_p0_io] +length=: + +[namelist:jules_pftparm=g1_stomata_io] +length=: + +[namelist:jules_pftparm=g_leaf_0_io] +length=: + +[namelist:jules_pftparm=glmin_io] +length=: + +[namelist:jules_pftparm=gpp_st_io] +length=: + +[namelist:jules_pftparm=gsoil_f_io] +length=: + +[namelist:jules_pftparm=hw_sw_io] +length=: + +[namelist:jules_pftparm=ief_io] +length=: + +[namelist:jules_pftparm=infil_f_io] +length=: + +[namelist:jules_pftparm=jv25_ratio_io] +length=: + +[namelist:jules_pftparm=kext_io] +length=: + +[namelist:jules_pftparm=kn_io] +length=: + +[namelist:jules_pftparm=knl_io] +length=: + +[namelist:jules_pftparm=kpar_io] +length=: + +[namelist:jules_pftparm=lai_alb_lim_io] +length=: + +[namelist:jules_pftparm=lma_io] +length=: + +[namelist:jules_pftparm=mef_io] +length=: + +[namelist:jules_pftparm=neff_io] +length=: + +[namelist:jules_pftparm=nl0_io] +length=: + +[namelist:jules_pftparm=nmass_io] +length=: + +[namelist:jules_pftparm=nr_io] +length=: + +[namelist:jules_pftparm=nr_nl_io] +length=: + +[namelist:jules_pftparm=ns_nl_io] +length=: + +[namelist:jules_pftparm=nsw_io] +length=: + +[namelist:jules_pftparm=omega_io] +length=: + +[namelist:jules_pftparm=omegal_io] +length=: + +[namelist:jules_pftparm=omegau_io] +length=: + +[namelist:jules_pftparm=omnir_io] +length=: + +[namelist:jules_pftparm=omnirl_io] +length=: + +[namelist:jules_pftparm=omniru_io] +length=: + +[namelist:jules_pftparm=orient_io] +length=: + +[namelist:jules_pftparm=pft_name_io] +length=: + +[namelist:jules_pftparm=psi_close_io] +length=: + +[namelist:jules_pftparm=psi_open_io] +length=: + +[namelist:jules_pftparm=q10_leaf_io] +length=: + +[namelist:jules_pftparm=r_grow_io] +length=: + +[namelist:jules_pftparm=rootd_ft_io] +length=: + +[namelist:jules_pftparm=sigl_io] +length=: + +[namelist:jules_pftparm=sox_a_io] +length=: + +[namelist:jules_pftparm=sox_p50_io] +length=: + +[namelist:jules_pftparm=sox_rp_min_io] +length=: + +[namelist:jules_pftparm=sug_g0_io] +length=: + +[namelist:jules_pftparm=sug_grec_io] +length=: + +[namelist:jules_pftparm=sug_yg_io] +length=: + +[namelist:jules_pftparm=tef_io] +length=: + +[namelist:jules_pftparm=tleaf_of_io] +length=: + +[namelist:jules_pftparm=tlow_io] +length=: + +[namelist:jules_pftparm=tupp_io] +length=: + +[namelist:jules_pftparm=vint_io] +length=: + +[namelist:jules_pftparm=vsl_io] +length=: + +[namelist:jules_pftparm=z0hm_classic_pft_io] +compulsory=true +description=Ratio of the roughness length for heat to the roughness length for momentum for the CLASSIC aerosol + =scheme only + =NOT APPLICABLE TO STANDALONE OR LFRIC (l_aero_classic) +fail-if=len(this) != namelist:jules_surface_types=npft +length=: +ns=namelist/JULES Science Settings/jules_pftparm/Other parameters +sort-key=Panel-HOX +type=real +url=https://metoffice.github.io/jules/vn8.2/namelists/pft_params.nml.html#JULES_PFTPARM::z0hm_classic_pft_io + +[namelist:jules_pftparm=z0hm_pft_io] +length=: + +[namelist:jules_pftparm=z0v_io] +length=: + +[namelist:jules_rivers_props] +compulsory=true +description=Configuration of spatially varying rivers properties + =NOT AVAILABLE TO UM + =READ BY STANDALONE EXECUTABLES ONLY +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#namelist-JULES_RIVERS_PROPS + +[namelist:jules_rivers_props=rivers_regrid] +compulsory=true +description=Regridding is required between model input and river routing grids + =NOT AVAILABLE TO UM + =USED BY STANDALONE EXECUTABLES ONLY +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#JULES_RIVERS_PROPS::rivers_regrid + +[namelist:jules_surface=i_aggregate_opt] +compulsory=true +description=Method of aggregating tiled properties +sort-key=Panel-F02a +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_surface.nml.html#JULES_SURFACE::i_aggregate_opt +value-titles=Original option,Separate aggregation +values=0,1 + +[namelist:jules_surface=l_aggregate] +compulsory=true +description=Use aggregate surface scheme +sort-key=Panel-F02 +trigger=namelist:jules_surface=i_aggregate_opt: .true.; + =namelist:recon_science=l_canopy_snow_throughfall: .false.; + =namelist:jules_elevate=surf_hgt_io: .false.; + =namelist:jules_elevate=l_elev_absolute_height: .false.; +type=logical +url=https://metoffice.github.io/jules/vn8.2/namelists/jules_surface.nml.html#JULES_SURFACE::l_aggregate + +[namelist:jules_surface=l_elev_land_ice] +# This trigger list is different, but may just be an oversight. Leave for now. +trigger=namelist:jules_soil=dzsoil_elev: .true.; + =namelist:jules_surface_types=elev_ice: .true.; + =namelist:jules_surface_types=elev_rock: .true.; + +[namelist:jules_surface=l_vary_z0m_soil] +help=Allows the bare soil momentum roughness length (z0(m)) to + =vary. This field needs to be input/reconfigured in as an + =ancillary field in the soil parameters file as STASH item 97. + +[namelist:jules_surface=srf_ex_cnv_gust] +value-titles=Off,On +values=0,1 + +[namelist:urban_properties] +description=Configuration of spatially varying urban properties + =NOT AVAILABLE TO UM + =USED BY STANDALONE EXECUTABLES ONLY +url=https://metoffice.github.io/jules/vn8.2/namelists/ancillaries.nml.html#namelist-URBAN_PROPERTIES diff --git a/rose-stem/app/eraint_rfm_2ddata/rose-app.conf b/rose-stem/app/eraint_rfm_2ddata/rose-app.conf index ae019a5c..b7ac5b19 100644 --- a/rose-stem/app/eraint_rfm_2ddata/rose-app.conf +++ b/rose-stem/app/eraint_rfm_2ddata/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -453,6 +453,7 @@ frac_name='frac' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -493,6 +494,7 @@ y_dim_name='latitude' [namelist:jules_irrig] !!frac_irrig_all_tiles=.true. !!irr_crop=2 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -510,6 +512,7 @@ read_file=.false. [namelist:jules_land_frac] file='$ERAINT_INSTALL_DIR/ancil/MOSES2p2_land_frac_latlon.nc' +!!l_use_land_fraction=.false. land_frac_name='lsmask' [namelist:jules_latlon] @@ -671,6 +674,7 @@ gsoil_f_io=9*1.0 !!hw_sw_io=9*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0,16.0,16.0,8.0,16.0 infil_f_io=4.00000,4.00000,7*2.00000 +!!irrig_pft_io=9*0 !!jv25_ratio_io=9*1.97 kext_io=9*5.00000e-1 kn_io=9*0.78 @@ -697,6 +701,7 @@ omnir_io=0.70,0.45,7*0.83 !!omnirl_io=0.50,0.30,7*0.53 !!omniru_io=0.90,0.65,7*0.98 orient_io=9*0 +!!pft_name_io=9*'' !!psi_close_io=9*-1.5E6 !!psi_open_io=9*-0.033E6 q10_leaf_io=9*2.00 @@ -769,7 +774,6 @@ cbriver=0.15 cland=0.2 criver=0.62 i_river_vn=2 -!!l_inland=.false. l_riv_overbank=.false. l_rivers=.true. !!lake_water_conserve_method=1 @@ -876,14 +880,18 @@ ch4_substrate=1 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -1019,7 +1027,9 @@ brd_leaf_dec=1 brd_leaf_eg_temp=3 brd_leaf_eg_trop=2 c3_grass=6 +!!c3_irrig=0 c4_grass=7 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=13 diff --git a/rose-stem/app/eraint_trip_2ddata/rose-app.conf b/rose-stem/app/eraint_trip_2ddata/rose-app.conf index 4f75946c..d537d871 100644 --- a/rose-stem/app/eraint_trip_2ddata/rose-app.conf +++ b/rose-stem/app/eraint_trip_2ddata/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -453,6 +453,7 @@ read_from_dump=.false. !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -492,6 +493,7 @@ y_dim_name='latitude' [namelist:jules_irrig] !!frac_irrig_all_tiles=.true. !!irr_crop=2 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -509,6 +511,7 @@ read_from_dump=.false. [namelist:jules_land_frac] file='$ERAINT_INSTALL_DIR/ancil/MOSES2p2_land_frac_latlon.nc' +!!l_use_land_fraction=.false. land_frac_name='lsmask' [namelist:jules_latlon] @@ -670,6 +673,7 @@ gsoil_f_io=9*1.0 !!hw_sw_io=9*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0,16.0,16.0,8.0,16.0 infil_f_io=4.00000,4.00000,7*2.00000 +!!irrig_pft_io=9*0 !!jv25_ratio_io=9*1.97 kext_io=9*5.00000e-1 kn_io=9*0.78 @@ -696,6 +700,7 @@ omnir_io=0.70,0.45,7*0.83 !!omnirl_io=0.50,0.30,7*0.53 !!omniru_io=0.90,0.65,7*0.98 orient_io=9*0 +!!pft_name_io=9*'' !!psi_close_io=9*-1.5E6 !!psi_open_io=9*-0.033E6 q10_leaf_io=9*2.00 @@ -768,7 +773,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 i_river_vn=3 -!!l_inland=.false. l_riv_overbank=.false. l_rivers=.true. !!lake_water_conserve_method=1 @@ -875,14 +879,18 @@ ch4_substrate=1 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -1018,7 +1026,9 @@ brd_leaf_dec=1 brd_leaf_eg_temp=3 brd_leaf_eg_trop=2 c3_grass=6 +!!c3_irrig=0 c4_grass=7 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=13 diff --git a/rose-stem/app/fcm_make_jules/rose-app.conf b/rose-stem/app/fcm_make_jules/rose-app.conf index ebbaad84..6739f0ba 100644 --- a/rose-stem/app/fcm_make_jules/rose-app.conf +++ b/rose-stem/app/fcm_make_jules/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-fcm-make/vn8.1 +meta=jules-fcm-make/vn8.2 # This is deliberately left empty to allow setting of environment variables # from the rose-stem suite diff --git a/rose-stem/app/fcm_make_river/rose-app.conf b/rose-stem/app/fcm_make_river/rose-app.conf index ebbaad84..6739f0ba 100644 --- a/rose-stem/app/fcm_make_river/rose-app.conf +++ b/rose-stem/app/fcm_make_river/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-fcm-make/vn8.1 +meta=jules-fcm-make/vn8.2 # This is deliberately left empty to allow setting of environment variables # from the rose-stem suite diff --git a/rose-stem/app/gswp2_closures/rose-app.conf b/rose-stem/app/gswp2_closures/rose-app.conf index dc55f33c..587a017c 100644 --- a/rose-stem/app/gswp2_closures/rose-app.conf +++ b/rose-stem/app/gswp2_closures/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -450,6 +450,7 @@ frac_name='field1391' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -487,6 +488,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -504,6 +506,7 @@ read_file=.false. [namelist:jules_land_frac] file='$GSWP2_INSTALL_DIR/ancil/lsmask_vector.nc' +!!l_use_land_fraction=.false. land_frac_name='lsmask' [namelist:jules_latlon] @@ -676,6 +679,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*0.50 kn_io=5*0.78 @@ -699,6 +703,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -769,7 +774,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -876,14 +880,18 @@ ch4_cpow=1.0 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. !!l_ch4_interactive=.false. l_ch4_microbe=.false. !!l_ch4_tlayered=.false. @@ -1017,7 +1025,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/gswp2_es_1p1/rose-app.conf b/rose-stem/app/gswp2_es_1p1/rose-app.conf index 0af628d9..c8c62f9f 100644 --- a/rose-stem/app/gswp2_es_1p1/rose-app.conf +++ b/rose-stem/app/gswp2_es_1p1/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -451,6 +451,7 @@ read_from_dump=.true. !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -487,6 +488,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -504,6 +506,7 @@ read_from_dump=.false. [namelist:jules_land_frac] file='$GSWP2_INSTALL_DIR/ancil/lsmask_vector.nc' +!!l_use_land_fraction=.false. land_frac_name='lsmask' [namelist:jules_latlon] @@ -691,6 +694,7 @@ gsoil_f_io=13*1.0 hw_sw_io=13*0.5 ief_io=35,24,16,8,8,16,5,5,24,5,5,10,20 infil_f_io=5*4,8*2 +!!irrig_pft_io=13*0 !!jv25_ratio_io=1.78,1.6,1.63,1.48,1.48,6*2.47,1.78,1.63 kext_io=13*0.5 kn_io=13*0.78 @@ -719,6 +723,7 @@ omnir_io=0.7,0.7,0.7,0.45,0.45,8*0.83 !!omnirl_io=0.5,0.5,0.5,0.3,0.3,8*0.53 !!omniru_io=0.9,0.9,0.9,0.65,0.65,8*0.98 orient_io=13*0 +!!pft_name_io=13*'' !!psi_close_io=13*0 !!psi_open_io=13*0 q10_leaf_io=13*2 @@ -864,7 +869,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -959,14 +963,18 @@ ch4_substrate=2 const_ch4_cs=5.41e-10 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 !!kaps=0.5e-8 kaps_4pool=2.15e-7,6.43e-9,1.41e-8,4.29e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -1103,9 +1111,11 @@ brd_leaf_eg_temp=3 brd_leaf_eg_trop=2 c3_crop=7 c3_grass=6 +!!c3_irrig=0 c3_pasture=8 c4_crop=10 c4_grass=9 +!!c4_irrig=0 c4_pasture=11 !!elev_ice=-1 !!elev_rock=-1 diff --git a/rose-stem/app/gswp2_euro4/rose-app.conf b/rose-stem/app/gswp2_euro4/rose-app.conf index 939c9e39..f1b28d5c 100644 --- a/rose-stem/app/gswp2_euro4/rose-app.conf +++ b/rose-stem/app/gswp2_euro4/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -451,6 +451,7 @@ frac_name='field1391' b_pdm=0.40 dz_pdm=0.50 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.true. l_spdmvar=.false. @@ -488,6 +489,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -505,6 +507,7 @@ read_file=.false. [namelist:jules_land_frac] file='$GSWP2_INSTALL_DIR/ancil/lsmask_vector.nc' +!!l_use_land_fraction=.false. land_frac_name='lsmask' [namelist:jules_latlon] @@ -677,6 +680,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*5.00e-1 kn_io=5*0.78 @@ -700,6 +704,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -770,7 +775,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -863,14 +867,18 @@ ch4_cpow=1.0 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. !!l_ch4_interactive=.false. l_ch4_microbe=.false. !!l_ch4_tlayered=.false. @@ -1004,7 +1012,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/gswp2_gl4/rose-app.conf b/rose-stem/app/gswp2_gl4/rose-app.conf index 3539dbae..9113dc0e 100644 --- a/rose-stem/app/gswp2_gl4/rose-app.conf +++ b/rose-stem/app/gswp2_gl4/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -451,6 +451,7 @@ frac_name='field1391' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -488,6 +489,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -505,6 +507,7 @@ read_file=.false. [namelist:jules_land_frac] file='$GSWP2_INSTALL_DIR/ancil/lsmask_vector.nc' +!!l_use_land_fraction=.false. land_frac_name='lsmask' [namelist:jules_latlon] @@ -677,6 +680,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*5.00e-1 kn_io=5*0.78 @@ -700,6 +704,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -770,7 +775,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -863,14 +867,18 @@ ch4_substrate=1 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -1004,7 +1012,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/gswp2_gl7/rose-app.conf b/rose-stem/app/gswp2_gl7/rose-app.conf index 2e42fbf5..b748b2a6 100644 --- a/rose-stem/app/gswp2_gl7/rose-app.conf +++ b/rose-stem/app/gswp2_gl7/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -451,6 +451,7 @@ frac_name='field1391' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -488,6 +489,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=0 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -505,6 +507,7 @@ read_file=.false. [namelist:jules_land_frac] file='$GSWP2_INSTALL_DIR/ancil/lsmask_vector.nc' +!!l_use_land_fraction=.false. land_frac_name='lsmask' [namelist:jules_latlon] @@ -677,6 +680,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=25.0,8.00,16.00,24.00,20.00 infil_f_io=4.00000,4.00000,2.00000,2.00000,2.00000 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*5.00000e-1 kn_io=5*0.78 @@ -700,6 +704,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -770,7 +775,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -865,14 +869,18 @@ ch4_substrate=1 const_ch4_cs=5.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -1006,7 +1014,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/gswp2_irrig_limit_high_river_storage/rose-app.conf b/rose-stem/app/gswp2_irrig_limit_high_river_storage/rose-app.conf index 7bbd9b99..edb3d6e2 100644 --- a/rose-stem/app/gswp2_irrig_limit_high_river_storage/rose-app.conf +++ b/rose-stem/app/gswp2_irrig_limit_high_river_storage/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -450,6 +450,7 @@ read_from_dump=.false. !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -488,6 +489,7 @@ time_dim_name='tstep' [namelist:jules_irrig] frac_irrig_all_tiles=.true. irr_crop=0 +!!irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.true. l_irrig_limit=.true. @@ -505,6 +507,7 @@ read_from_dump=.false. [namelist:jules_land_frac] file='$GSWP2_INSTALL_DIR/ancil/lsmask_vector.nc' +!!l_use_land_fraction=.false. land_frac_name='lsmask' [namelist:jules_latlon] @@ -677,6 +680,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*0.50 kn_io=5*0.78 @@ -700,6 +704,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -770,7 +775,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 i_river_vn=3 -!!l_inland=.false. l_riv_overbank=.false. l_rivers=.true. !!lake_water_conserve_method=1 @@ -878,14 +882,18 @@ ch4_substrate=1 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -1019,7 +1027,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/gswp2_irrig_limit_low_river_storage/rose-app.conf b/rose-stem/app/gswp2_irrig_limit_low_river_storage/rose-app.conf index 321941f9..a983d17b 100644 --- a/rose-stem/app/gswp2_irrig_limit_low_river_storage/rose-app.conf +++ b/rose-stem/app/gswp2_irrig_limit_low_river_storage/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -450,6 +450,7 @@ read_from_dump=.false. !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -488,6 +489,7 @@ time_dim_name='tstep' [namelist:jules_irrig] frac_irrig_all_tiles=.true. irr_crop=0 +!!irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.true. l_irrig_limit=.true. @@ -505,6 +507,7 @@ read_from_dump=.false. [namelist:jules_land_frac] file='$GSWP2_INSTALL_DIR/ancil/lsmask_vector.nc' +!!l_use_land_fraction=.false. land_frac_name='lsmask' [namelist:jules_latlon] @@ -677,6 +680,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*0.50 kn_io=5*0.78 @@ -700,6 +704,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -770,7 +775,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 i_river_vn=3 -!!l_inland=.false. l_riv_overbank=.false. l_rivers=.true. !!lake_water_conserve_method=1 @@ -878,14 +882,18 @@ ch4_substrate=1 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -1019,7 +1027,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/gswp2_rivers/opt/rose-app-rivers-only.conf b/rose-stem/app/gswp2_rivers/opt/rose-app-rivers-only.conf index f0cea6bd..53268c73 100644 --- a/rose-stem/app/gswp2_rivers/opt/rose-app-rivers-only.conf +++ b/rose-stem/app/gswp2_rivers/opt/rose-app-rivers-only.conf @@ -19,6 +19,7 @@ time_dim_name='time' [namelist:jules_land_frac] file='$RIVERS_ONLY_INSTALL_DIR/$RIVERS_ONLY_DRIVE_TASK.drive_rivers-only.nc' +l_use_land_fraction=.false. land_frac_name='land_fraction' [namelist:jules_latlon] diff --git a/rose-stem/app/gswp2_rivers/rose-app.conf b/rose-stem/app/gswp2_rivers/rose-app.conf index 12a440f3..48e334c4 100644 --- a/rose-stem/app/gswp2_rivers/rose-app.conf +++ b/rose-stem/app/gswp2_rivers/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -450,6 +450,7 @@ frac_name='field1391' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -487,6 +488,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -504,6 +506,7 @@ read_file=.false. [namelist:jules_land_frac] file='$GSWP2_INSTALL_DIR/ancil/lsmask_vector.nc' +!!l_use_land_fraction=.false. land_frac_name='lsmask' [namelist:jules_latlon] @@ -690,6 +693,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*0.50 kn_io=5*0.78 @@ -713,6 +717,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -783,7 +788,6 @@ cbriver=0.15 cland=0.2 criver=0.62 i_river_vn=2 -!!l_inland=.false. l_riv_overbank=.false. l_rivers=.true. !!lake_water_conserve_method=1 @@ -890,14 +894,18 @@ ch4_cpow=1.0 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. !!l_ch4_interactive=.false. l_ch4_microbe=.false. !!l_ch4_tlayered=.false. @@ -1031,7 +1039,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/gswp2_rivers_restart/opt/rose-app-rivers-only.conf b/rose-stem/app/gswp2_rivers_restart/opt/rose-app-rivers-only.conf index 684cf01b..92a3cf7c 100644 --- a/rose-stem/app/gswp2_rivers_restart/opt/rose-app-rivers-only.conf +++ b/rose-stem/app/gswp2_rivers_restart/opt/rose-app-rivers-only.conf @@ -19,6 +19,7 @@ time_dim_name='time' [namelist:jules_land_frac] file='$RIVERS_ONLY_INSTALL_DIR/$RIVERS_ONLY_DRIVE_TASK.drive_rivers-only.nc' +l_use_land_fraction=.false. land_frac_name='land_fraction' [namelist:jules_latlon] diff --git a/rose-stem/app/gswp2_rivers_restart/rose-app.conf b/rose-stem/app/gswp2_rivers_restart/rose-app.conf index fa699c4a..cd5294c4 100644 --- a/rose-stem/app/gswp2_rivers_restart/rose-app.conf +++ b/rose-stem/app/gswp2_rivers_restart/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -450,6 +450,7 @@ read_from_dump=.false. !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -489,6 +490,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -506,6 +508,7 @@ read_from_dump=.false. [namelist:jules_land_frac] file='$GSWP2_INSTALL_DIR/ancil/lsmask_vector.nc' +!!l_use_land_fraction=.false. land_frac_name='lsmask' [namelist:jules_latlon] @@ -692,6 +695,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*0.50 kn_io=5*0.78 @@ -715,6 +719,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -785,7 +790,6 @@ cbriver=0.15 cland=0.2 criver=0.62 i_river_vn=2 -!!l_inland=.false. l_riv_overbank=.false. l_rivers=.true. !!lake_water_conserve_method=1 @@ -892,14 +896,18 @@ ch4_cpow=1.0 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. !!l_ch4_interactive=.false. l_ch4_microbe=.false. !!l_ch4_tlayered=.false. @@ -1033,7 +1041,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/gswp2_rivers_spinup/rose-app.conf b/rose-stem/app/gswp2_rivers_spinup/rose-app.conf index 2ec57eea..4dbbd485 100644 --- a/rose-stem/app/gswp2_rivers_spinup/rose-app.conf +++ b/rose-stem/app/gswp2_rivers_spinup/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -450,6 +450,7 @@ frac_name='field1391' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -487,6 +488,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -504,6 +506,7 @@ read_file=.false. [namelist:jules_land_frac] file='$GSWP2_INSTALL_DIR/ancil/lsmask_vector.nc' +!!l_use_land_fraction=.false. land_frac_name='lsmask' [namelist:jules_latlon] @@ -648,6 +651,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*0.50 kn_io=5*0.78 @@ -671,6 +675,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -741,7 +746,6 @@ cbriver=0.15 cland=0.2 criver=0.62 i_river_vn=2 -!!l_inland=.false. l_riv_overbank=.false. l_rivers=.true. !!lake_water_conserve_method=1 @@ -848,14 +852,18 @@ ch4_cpow=1.0 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. !!l_ch4_interactive=.false. l_ch4_microbe=.false. !!l_ch4_tlayered=.false. @@ -989,7 +997,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/gswp2_trip/opt/rose-app-rivers-only.conf b/rose-stem/app/gswp2_trip/opt/rose-app-rivers-only.conf index 28ea8d93..d76e9fed 100644 --- a/rose-stem/app/gswp2_trip/opt/rose-app-rivers-only.conf +++ b/rose-stem/app/gswp2_trip/opt/rose-app-rivers-only.conf @@ -19,6 +19,7 @@ time_dim_name='time' [namelist:jules_land_frac] file='$RIVERS_ONLY_INSTALL_DIR/$RIVERS_ONLY_DRIVE_TASK.drive_rivers-only.nc' +l_use_land_fraction=.false. land_frac_name='land_fraction' [namelist:jules_latlon] @@ -45,6 +46,12 @@ lsm_id=3 [namelist:jules_output] nprofiles=2 +[namelist:jules_output_profile(2)] +nvars=3 +output_type='S','S','S' +var='rivers_outflow_rp','outflow_per_river','inland_outflow_rp' +var_name='','','' + [!!namelist:jules_pftparm] !!a_wl_io=0.65,0.65,0.005,0.005,0.10 !!a_ws_io=10.00,10.00,1.00,1.00,10.00 diff --git a/rose-stem/app/gswp2_trip/rose-app.conf b/rose-stem/app/gswp2_trip/rose-app.conf index 5eedc2e4..b70fb4bd 100644 --- a/rose-stem/app/gswp2_trip/rose-app.conf +++ b/rose-stem/app/gswp2_trip/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -450,6 +450,7 @@ frac_name='field1391' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -464,17 +465,17 @@ l_var_rainfrac=.false. !!zw_max=6.0 [namelist:jules_initial] -const_val=0.0,275.0,10.0,50.0,0.75,0.75,278.0 +const_val=0.0,275.0,10.0,50.0,0.75,0.75,278.0,0.0 dump_file=.false. file='' !!l_broadcast_soilt=.false. -nvars=7 +nvars=8 total_snow=.true. -!!tpl_name=7*'' -use_file=7*.false. +!!tpl_name=8*'' +use_file=8*.false. var='canopy','tstar_tile','cs','rgrain','snow_tile','sthuf', - ='t_soil' -!!var_name=7*'' + ='t_soil','rivers_sto_rp' +!!var_name=8*'' [namelist:jules_input_grid] grid_dim_name='land' @@ -487,6 +488,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -504,6 +506,7 @@ read_file=.false. [namelist:jules_land_frac] file='$GSWP2_INSTALL_DIR/ancil/lsmask_vector.nc' +!!l_use_land_fraction=.false. land_frac_name='lsmask' [namelist:jules_latlon] @@ -690,6 +693,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*0.50 kn_io=5*0.78 @@ -713,6 +717,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -783,7 +788,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 i_river_vn=3 -!!l_inland=.false. l_riv_overbank=.false. l_rivers=.true. !!lake_water_conserve_method=1 @@ -891,14 +895,18 @@ ch4_cpow=1.0 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. !!l_ch4_interactive=.false. l_ch4_microbe=.false. !!l_ch4_tlayered=.false. @@ -1032,7 +1040,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/gswp2_trip_restart/opt/rose-app-rivers-only.conf b/rose-stem/app/gswp2_trip_restart/opt/rose-app-rivers-only.conf index 7aecfb16..8af893fb 100644 --- a/rose-stem/app/gswp2_trip_restart/opt/rose-app-rivers-only.conf +++ b/rose-stem/app/gswp2_trip_restart/opt/rose-app-rivers-only.conf @@ -19,6 +19,7 @@ time_dim_name='time' [namelist:jules_land_frac] file='$RIVERS_ONLY_INSTALL_DIR/$RIVERS_ONLY_DRIVE_TASK.drive_rivers-only.nc' +l_use_land_fraction=.false. land_frac_name='land_fraction' [namelist:jules_latlon] diff --git a/rose-stem/app/gswp2_trip_restart/rose-app.conf b/rose-stem/app/gswp2_trip_restart/rose-app.conf index a943bcca..dd36eb25 100644 --- a/rose-stem/app/gswp2_trip_restart/rose-app.conf +++ b/rose-stem/app/gswp2_trip_restart/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -450,6 +450,7 @@ read_from_dump=.false. !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -488,6 +489,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -505,6 +507,7 @@ read_from_dump=.false. [namelist:jules_land_frac] file='$GSWP2_INSTALL_DIR/ancil/lsmask_vector.nc' +!!l_use_land_fraction=.false. land_frac_name='lsmask' [namelist:jules_latlon] @@ -691,6 +694,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*0.50 kn_io=5*0.78 @@ -714,6 +718,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -784,7 +789,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 i_river_vn=3 -!!l_inland=.false. l_riv_overbank=.false. l_rivers=.true. !!lake_water_conserve_method=1 @@ -892,14 +896,18 @@ ch4_cpow=1.0 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. !!l_ch4_interactive=.false. l_ch4_microbe=.false. !!l_ch4_tlayered=.false. @@ -1033,7 +1041,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/gswp2_trip_spinup/rose-app.conf b/rose-stem/app/gswp2_trip_spinup/rose-app.conf index a2cb2d42..f07ef790 100644 --- a/rose-stem/app/gswp2_trip_spinup/rose-app.conf +++ b/rose-stem/app/gswp2_trip_spinup/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -450,6 +450,7 @@ frac_name='field1391' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -464,17 +465,17 @@ l_var_rainfrac=.false. !!zw_max=6.0 [namelist:jules_initial] -const_val=0.0,275.0,10.0,50.0,0.75,0.75,278.0 +const_val=0.0,275.0,10.0,50.0,0.75,0.75,278.0,0.0 dump_file=.false. file='' !!l_broadcast_soilt=.false. -nvars=7 +nvars=8 total_snow=.true. -!!tpl_name=7*'' -use_file=7*.false. +!!tpl_name=8*'' +use_file=8*.false. var='canopy','tstar_tile','cs','rgrain','snow_tile','sthuf', - ='t_soil' -!!var_name=7*'' + ='t_soil','rivers_sto_rp' +!!var_name=8*'' [namelist:jules_input_grid] grid_dim_name='land' @@ -487,6 +488,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -504,6 +506,7 @@ read_file=.false. [namelist:jules_land_frac] file='$GSWP2_INSTALL_DIR/ancil/lsmask_vector.nc' +!!l_use_land_fraction=.false. land_frac_name='lsmask' [namelist:jules_latlon] @@ -648,6 +651,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*0.50 kn_io=5*0.78 @@ -671,6 +675,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -741,7 +746,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 i_river_vn=3 -!!l_inland=.false. l_riv_overbank=.false. l_rivers=.true. !!lake_water_conserve_method=1 @@ -849,14 +853,18 @@ ch4_cpow=1.0 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. !!l_ch4_interactive=.false. l_ch4_microbe=.false. !!l_ch4_tlayered=.false. @@ -990,7 +998,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/gswp2_ukv/opt/rose-app-flake.conf b/rose-stem/app/gswp2_ukv/opt/rose-app-flake.conf index e71b4008..f43cdf29 100644 --- a/rose-stem/app/gswp2_ukv/opt/rose-app-flake.conf +++ b/rose-stem/app/gswp2_ukv/opt/rose-app-flake.conf @@ -5,6 +5,7 @@ use_file=.false. var='lake_depth' [namelist:jules_irrig] +!!irrig_option=0 !!l_irrig_dmd=.false. [namelist:jules_nvegparm] diff --git a/rose-stem/app/gswp2_ukv/rose-app.conf b/rose-stem/app/gswp2_ukv/rose-app.conf index 08277de6..cbf0337d 100644 --- a/rose-stem/app/gswp2_ukv/rose-app.conf +++ b/rose-stem/app/gswp2_ukv/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -451,6 +451,7 @@ frac_name='field1391' b_pdm=0.40 dz_pdm=0.50 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.true. l_spdmvar=.false. @@ -488,6 +489,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -505,6 +507,7 @@ read_file=.false. [namelist:jules_land_frac] file='$GSWP2_INSTALL_DIR/ancil/lsmask_vector.nc' +!!l_use_land_fraction=.false. land_frac_name='lsmask' [namelist:jules_latlon] @@ -677,6 +680,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=25.0,8.00,16.00,24.00,20.00 infil_f_io=4.00000,4.00000,2.00000,2.00000,2.00000 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*5.00000e-1 kn_io=5*0.78 @@ -700,6 +704,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -770,7 +775,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -865,14 +869,18 @@ ch4_cpow=1.0 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. !!l_ch4_interactive=.false. l_ch4_microbe=.false. !!l_ch4_tlayered=.false. @@ -1006,7 +1014,9 @@ l_urban2t=.true. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=8 diff --git a/rose-stem/app/imogen_layeredc/rose-app.conf b/rose-stem/app/imogen_layeredc/rose-app.conf index 0b49c26c..c3357fea 100644 --- a/rose-stem/app/imogen_layeredc/rose-app.conf +++ b/rose-stem/app/imogen_layeredc/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -446,6 +446,7 @@ read_from_dump=.false. !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -481,6 +482,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=0 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -498,6 +500,7 @@ read_from_dump=.false. [namelist:jules_land_frac] file='$IMOGEN_INSTALL_DIR/ancil/grid_info.nc' +!!l_use_land_fraction=.false. land_frac_name='land_fraction' [namelist:jules_latlon] @@ -659,6 +662,7 @@ gsoil_f_io=10*1.0 hw_sw_io=10*0.5 !!ief_io=35,35,35,12,12,16,16,8,20,20 infil_f_io=5*4,5*2 +!!irrig_pft_io=10*0 !!jv25_ratio_io=10*1.97 kext_io=10*0.50 kn_io=10*0.20 @@ -686,6 +690,7 @@ omnir_io=0.70,0.70,0.70,0.45,0.45,5*0.83 !!omnirl_io=0.50,0.50,0.50,0.30,0.30,5*0.53 !!omniru_io=0.90,0.90,0.90,0.65,0.65,5*0.98 orient_io=10*0 +!!pft_name_io=10*'' !!psi_close_io=10*-1.5E6 !!psi_open_io=10*-0.033E6 q10_leaf_io=10*2.00 @@ -757,7 +762,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -853,14 +857,18 @@ ch4_substrate=1 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 diff_n_pft=1000.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 !!kaps=0.5e-8 kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.true. l_ch4_microbe=.false. l_ch4_tlayered=.true. @@ -996,7 +1004,9 @@ brd_leaf_dec=1 brd_leaf_eg_temp=3 brd_leaf_eg_trop=2 c3_grass=6 +!!c3_irrig=0 c4_grass=8 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=14 diff --git a/rose-stem/app/imogen_layeredc_spinup/rose-app.conf b/rose-stem/app/imogen_layeredc_spinup/rose-app.conf index 35edddda..b7b28a31 100644 --- a/rose-stem/app/imogen_layeredc_spinup/rose-app.conf +++ b/rose-stem/app/imogen_layeredc_spinup/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -446,6 +446,7 @@ read_from_dump=.false. !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -482,6 +483,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=0 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -499,6 +501,7 @@ read_from_dump=.false. [namelist:jules_land_frac] file='$IMOGEN_INSTALL_DIR/ancil/grid_info.nc' +!!l_use_land_fraction=.false. land_frac_name='land_fraction' [namelist:jules_latlon] @@ -644,6 +647,7 @@ gsoil_f_io=10*1.0 hw_sw_io=10*0.5 !!ief_io=35,35,35,12,12,16,16,8,20,20 infil_f_io=5*4,5*2 +!!irrig_pft_io=10*0 !!jv25_ratio_io=10*1.97 kext_io=10*0.50 kn_io=10*0.20 @@ -671,6 +675,7 @@ omnir_io=0.70,0.70,0.70,0.45,0.45,5*0.83 !!omnirl_io=0.50,0.50,0.50,0.30,0.30,5*0.53 !!omniru_io=0.90,0.90,0.90,0.65,0.65,5*0.98 orient_io=10*0 +!!pft_name_io=10*'' !!psi_close_io=10*-1.5E6 !!psi_open_io=10*-0.033E6 q10_leaf_io=10*2.00 @@ -742,7 +747,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -838,14 +842,18 @@ ch4_substrate=1 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 diff_n_pft=1000.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 !!kaps=0.5e-8 kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.true. l_ch4_microbe=.false. l_ch4_tlayered=.true. @@ -981,7 +989,9 @@ brd_leaf_dec=1 brd_leaf_eg_temp=3 brd_leaf_eg_trop=2 c3_grass=6 +!!c3_irrig=0 c4_grass=8 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=14 diff --git a/rose-stem/app/loobos_crm1_traitF/rose-app.conf b/rose-stem/app/loobos_crm1_traitF/rose-app.conf index 6f0158e0..e0c28f7e 100644 --- a/rose-stem/app/loobos_crm1_traitF/rose-app.conf +++ b/rose-stem/app/loobos_crm1_traitF/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -449,6 +449,7 @@ file='tile_fractions.dat' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -487,6 +488,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -503,6 +505,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -685,6 +688,7 @@ gsoil_f_io=9*1.0 !!hw_sw_io=9*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0,16.0,16.0,8.0,16.0 infil_f_io=4,4,7*2 +!!irrig_pft_io=9*0 !!jv25_ratio_io=9*1.97 kext_io=9*0.5 kn_io=9*0.78 @@ -709,6 +713,7 @@ omnir_io=0.7,0.45,7*0.83 !!omnirl_io=0.50,0.30,7*0.53 !!omniru_io=0.90,0.65,7*0.98 orient_io=9*0 +!!pft_name_io=9*'' !!psi_close_io=9*-1.5E6 !!psi_open_io=9*-0.033E6 q10_leaf_io=9*2.00 @@ -780,7 +785,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -873,14 +877,18 @@ ch4_substrate=1 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -1016,7 +1024,9 @@ brd_leaf_dec=1 brd_leaf_eg_temp=3 brd_leaf_eg_trop=2 c3_grass=6 +!!c3_irrig=0 c4_grass=7 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=13 diff --git a/rose-stem/app/loobos_crm4_traitF/rose-app.conf b/rose-stem/app/loobos_crm4_traitF/rose-app.conf index 147fafc0..e6b05a7d 100644 --- a/rose-stem/app/loobos_crm4_traitF/rose-app.conf +++ b/rose-stem/app/loobos_crm4_traitF/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -449,6 +449,7 @@ file='tile_fractions.dat' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -487,6 +488,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -503,6 +505,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -685,6 +688,7 @@ gsoil_f_io=9*1.0 !!hw_sw_io=9*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0,16.0,16.0,8.0,16.0 infil_f_io=4,4,7*2 +!!irrig_pft_io=9*0 !!jv25_ratio_io=9*1.97 kext_io=9*0.5 kn_io=9*0.78 @@ -709,6 +713,7 @@ omnir_io=0.7,0.45,7*0.83 !!omnirl_io=0.50,0.30,7*0.53 !!omniru_io=0.90,0.65,7*0.98 orient_io=9*0 +!!pft_name_io=9*'' !!psi_close_io=9*-1.5E6 !!psi_open_io=9*-0.033E6 q10_leaf_io=9*2.00 @@ -780,7 +785,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -873,14 +877,18 @@ ch4_substrate=1 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -1016,7 +1024,9 @@ brd_leaf_dec=1 brd_leaf_eg_temp=3 brd_leaf_eg_trop=2 c3_grass=6 +!!c3_irrig=0 c4_grass=7 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=13 diff --git a/rose-stem/app/loobos_crm5_traitF/rose-app.conf b/rose-stem/app/loobos_crm5_traitF/rose-app.conf index b8d39c37..23273644 100644 --- a/rose-stem/app/loobos_crm5_traitF/rose-app.conf +++ b/rose-stem/app/loobos_crm5_traitF/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -449,6 +449,7 @@ file='tile_fractions.dat' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -487,6 +488,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -503,6 +505,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -685,6 +688,7 @@ gsoil_f_io=9*1.0 !!hw_sw_io=9*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0,16.0,16.0,8.0,16.0 infil_f_io=4,4,7*2 +!!irrig_pft_io=9*0 !!jv25_ratio_io=9*1.97 kext_io=9*0.5 kn_io=9*0.78 @@ -709,6 +713,7 @@ omnir_io=0.7,0.45,7*0.83 !!omnirl_io=0.50,0.30,7*0.53 !!omniru_io=0.90,0.65,7*0.98 orient_io=9*0 +!!pft_name_io=9*'' !!psi_close_io=9*-1.5E6 !!psi_open_io=9*-0.033E6 q10_leaf_io=9*2.00 @@ -780,7 +785,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -873,14 +877,18 @@ ch4_substrate=1 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -1016,7 +1024,9 @@ brd_leaf_dec=1 brd_leaf_eg_temp=3 brd_leaf_eg_trop=2 c3_grass=6 +!!c3_irrig=0 c4_grass=7 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=13 diff --git a/rose-stem/app/loobos_crm6_traitF/rose-app.conf b/rose-stem/app/loobos_crm6_traitF/rose-app.conf index a3497666..4fcb54c2 100644 --- a/rose-stem/app/loobos_crm6_traitF/rose-app.conf +++ b/rose-stem/app/loobos_crm6_traitF/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -449,6 +449,7 @@ file='tile_fractions.dat' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -487,6 +488,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -503,6 +505,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -685,6 +688,7 @@ gsoil_f_io=9*1.0 !!hw_sw_io=9*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0,16.0,16.0,8.0,16.0 infil_f_io=4,4,7*2 +!!irrig_pft_io=9*0 !!jv25_ratio_io=9*1.97 kext_io=9*0.5 kn_io=9*0.78 @@ -709,6 +713,7 @@ omnir_io=0.7,0.45,7*0.83 !!omnirl_io=0.50,0.30,7*0.53 !!omniru_io=0.90,0.65,7*0.98 orient_io=9*0 +!!pft_name_io=9*'' !!psi_close_io=9*-1.5E6 !!psi_open_io=9*-0.033E6 q10_leaf_io=9*2.00 @@ -780,7 +785,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -873,14 +877,18 @@ ch4_substrate=1 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -1016,7 +1024,9 @@ brd_leaf_dec=1 brd_leaf_eg_temp=3 brd_leaf_eg_trop=2 c3_grass=6 +!!c3_irrig=0 c4_grass=7 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=13 diff --git a/rose-stem/app/loobos_crm6_traitF_srfT/rose-app.conf b/rose-stem/app/loobos_crm6_traitF_srfT/rose-app.conf index 1c425c04..48323ad8 100644 --- a/rose-stem/app/loobos_crm6_traitF_srfT/rose-app.conf +++ b/rose-stem/app/loobos_crm6_traitF_srfT/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -449,6 +449,7 @@ file='tile_fractions.dat' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -487,6 +488,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -503,6 +505,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -685,6 +688,7 @@ gsoil_f_io=9*1.0 !!hw_sw_io=9*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0,16.0,16.0,8.0,16.0 infil_f_io=4,4,7*2 +!!irrig_pft_io=9*0 !!jv25_ratio_io=9*1.97 kext_io=9*0.5 kn_io=9*0.78 @@ -709,6 +713,7 @@ omnir_io=0.7,0.45,7*0.83 !!omnirl_io=0.50,0.30,7*0.53 !!omniru_io=0.90,0.65,7*0.98 orient_io=9*0 +!!pft_name_io=9*'' !!psi_close_io=9*-1.5E6 !!psi_open_io=9*-0.033E6 q10_leaf_io=9*2.00 @@ -780,7 +785,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -873,14 +877,18 @@ ch4_substrate=1 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -1016,7 +1024,9 @@ brd_leaf_dec=1 brd_leaf_eg_temp=3 brd_leaf_eg_trop=2 c3_grass=6 +!!c3_irrig=0 c4_grass=7 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=13 diff --git a/rose-stem/app/loobos_crm6_traitT/rose-app.conf b/rose-stem/app/loobos_crm6_traitT/rose-app.conf index e78afea4..beb71ec4 100644 --- a/rose-stem/app/loobos_crm6_traitT/rose-app.conf +++ b/rose-stem/app/loobos_crm6_traitT/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -449,6 +449,7 @@ file='tile_fractions.dat' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -487,6 +488,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -503,6 +505,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -685,6 +688,7 @@ gsoil_f_io=9*1.0 hw_sw_io=9*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0,16.0,16.0,8.0,16.0 infil_f_io=4,4,7*2 +!!irrig_pft_io=9*0 !!jv25_ratio_io=9*1.97 kext_io=9*0.5 kn_io=9*0.78 @@ -711,6 +715,7 @@ omnir_io=0.7,0.45,7*0.83 !!omnirl_io=0.50,0.30,7*0.53 !!omniru_io=0.90,0.65,7*0.98 orient_io=9*0 +!!pft_name_io=9*'' !!psi_close_io=9*-1.5E6 !!psi_open_io=9*-0.033E6 q10_leaf_io=9*2.00 @@ -782,7 +787,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -875,14 +879,18 @@ ch4_substrate=1 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -1018,7 +1026,9 @@ brd_leaf_dec=1 brd_leaf_eg_temp=3 brd_leaf_eg_trop=2 c3_grass=6 +!!c3_irrig=0 c4_grass=7 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=13 diff --git a/rose-stem/app/loobos_crops/rose-app.conf b/rose-stem/app/loobos_crops/rose-app.conf index baab48e4..a2f18178 100644 --- a/rose-stem/app/loobos_crops/rose-app.conf +++ b/rose-stem/app/loobos_crops/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -449,6 +449,7 @@ file='tile_fractions.dat' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -487,6 +488,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -503,6 +505,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -687,6 +690,7 @@ gsoil_f_io=9*1.0 !!hw_sw_io=9*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0,16.0,16.0,8.0,16.0 infil_f_io=4,4,7*2 +!!irrig_pft_io=9*0 !!jv25_ratio_io=9*1.97 kext_io=9*0.5 kn_io=9*0.78 @@ -711,6 +715,7 @@ omnir_io=0.7,0.45,7*0.83 !!omnirl_io=0.50,0.30,7*0.53 !!omniru_io=0.90,0.65,7*0.98 orient_io=9*0 +!!pft_name_io=9*'' !!psi_close_io=9*-1.5E6 !!psi_open_io=9*-0.033E6 q10_leaf_io=9*2.00 @@ -782,7 +787,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -875,14 +879,18 @@ ch4_substrate=1 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -1018,7 +1026,9 @@ brd_leaf_dec=1 brd_leaf_eg_temp=3 brd_leaf_eg_trop=2 c3_grass=6 +!!c3_irrig=0 c4_grass=7 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=13 diff --git a/rose-stem/app/loobos_daily_disagg/rose-app.conf b/rose-stem/app/loobos_daily_disagg/rose-app.conf index cece851b..c5450cdb 100644 --- a/rose-stem/app/loobos_daily_disagg/rose-app.conf +++ b/rose-stem/app/loobos_daily_disagg/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -449,6 +449,7 @@ file='tile_fractions.dat' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -485,6 +486,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -501,6 +503,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -669,6 +672,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*5.00e-1 kn_io=5*0.78 @@ -692,6 +696,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -762,7 +767,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -855,14 +859,18 @@ ch4_substrate=1 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -996,7 +1004,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/loobos_euro4/rose-app.conf b/rose-stem/app/loobos_euro4/rose-app.conf index 2d97cc1f..bacc8d89 100644 --- a/rose-stem/app/loobos_euro4/rose-app.conf +++ b/rose-stem/app/loobos_euro4/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -448,6 +448,7 @@ file='tile_fractions.dat' b_pdm=0.40 dz_pdm=0.50 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.true. l_spdmvar=.false. @@ -484,6 +485,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -500,6 +502,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -668,6 +671,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*5.00e-1 kn_io=5*0.78 @@ -691,6 +695,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -761,7 +766,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -854,14 +858,18 @@ ch4_cpow=1.0 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. !!l_ch4_interactive=.false. l_ch4_microbe=.false. !!l_ch4_tlayered=.false. @@ -995,7 +1003,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/loobos_fire/rose-app.conf b/rose-stem/app/loobos_fire/rose-app.conf index c0f93f31..a75595b7 100644 --- a/rose-stem/app/loobos_fire/rose-app.conf +++ b/rose-stem/app/loobos_fire/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -447,6 +447,7 @@ read_from_dump=.true. b_pdm=1.0 dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.true. l_spdmvar=.false. @@ -482,6 +483,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -498,6 +500,7 @@ read_from_dump=.true. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -679,6 +682,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*0.50 kn_io=5*0.78 @@ -702,6 +706,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -772,7 +777,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -879,14 +883,18 @@ ch4_cpow=1.0 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 !!kaps=0.5e-8 kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. !!l_ch4_interactive=.false. l_ch4_microbe=.false. !!l_ch4_tlayered=.false. @@ -1020,7 +1028,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/loobos_fire_spinup/rose-app.conf b/rose-stem/app/loobos_fire_spinup/rose-app.conf index a005b4f2..c46a84a9 100644 --- a/rose-stem/app/loobos_fire_spinup/rose-app.conf +++ b/rose-stem/app/loobos_fire_spinup/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -447,6 +447,7 @@ file='' b_pdm=1.0 dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.true. l_spdmvar=.false. @@ -483,6 +484,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -499,6 +501,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -654,6 +657,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*0.50 kn_io=5*0.78 @@ -677,6 +681,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -747,7 +752,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -854,14 +858,18 @@ ch4_cpow=1.0 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 !!kaps=0.5e-8 kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. !!l_ch4_interactive=.false. l_ch4_microbe=.false. !!l_ch4_tlayered=.false. @@ -995,7 +1003,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/loobos_forecast/rose-app.conf b/rose-stem/app/loobos_forecast/rose-app.conf index 35e13612..b06c894a 100644 --- a/rose-stem/app/loobos_forecast/rose-app.conf +++ b/rose-stem/app/loobos_forecast/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -448,6 +448,7 @@ file='tile_fractions.dat' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -483,6 +484,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -499,6 +501,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -667,6 +670,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*5.00e-1 kn_io=5*0.78 @@ -690,6 +694,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -760,7 +765,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -853,14 +857,18 @@ ch4_cpow=1.0 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. !!l_ch4_interactive=.false. l_ch4_microbe=.false. !!l_ch4_tlayered=.false. @@ -994,7 +1002,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/loobos_gl4/opt/rose-app-cable.conf b/rose-stem/app/loobos_gl4/opt/rose-app-cable.conf index fe9ed03a..07c405d8 100644 --- a/rose-stem/app/loobos_gl4/opt/rose-app-cable.conf +++ b/rose-stem/app/loobos_gl4/opt/rose-app-cable.conf @@ -238,6 +238,7 @@ var_name='','','','' !!glmin_io=5*1.0e-6 !!gsoil_f_io=13*1.0 !!infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=13*0 !!jv25_ratio_io=13*1.97 !!kext_io=5*5.00e-1 !!kn_io=5*0.78 @@ -251,6 +252,7 @@ var_name='','','','' !!omega_io=0.15,0.15,0.15,0.17,0.15 !!omnir_io=0.70,0.45,0.83,0.83,0.83 !!orient_io=5*0 +!!pft_name_io=13*'' !!q10_leaf_io=5*2.00 !!r_grow_io=5*0.25 !!rootd_ft_io=3.00,1.00,5.00e-1,5.00e-1,5.00e-1 diff --git a/rose-stem/app/loobos_gl4/rose-app.conf b/rose-stem/app/loobos_gl4/rose-app.conf index a9c19d34..18ffe3ee 100644 --- a/rose-stem/app/loobos_gl4/rose-app.conf +++ b/rose-stem/app/loobos_gl4/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -449,6 +449,7 @@ file='tile_fractions.dat' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -485,6 +486,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -501,6 +503,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -669,6 +672,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*5.00e-1 kn_io=5*0.78 @@ -692,6 +696,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -762,7 +767,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -855,14 +859,18 @@ ch4_substrate=1 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -996,7 +1004,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/loobos_gl7/rose-app.conf b/rose-stem/app/loobos_gl7/rose-app.conf index 463fbeb6..f5ff2a6c 100644 --- a/rose-stem/app/loobos_gl7/rose-app.conf +++ b/rose-stem/app/loobos_gl7/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -449,6 +449,7 @@ file='tile_fractions.dat' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -485,6 +486,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -501,6 +503,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -669,6 +672,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=25.0,8.00,16.00,24.00,20.00 infil_f_io=4.00000,4.00000,2.00000,2.00000,2.00000 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*5.00000e-1 kn_io=5*0.78 @@ -692,6 +696,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -762,7 +767,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -857,14 +861,18 @@ ch4_substrate=1 const_ch4_cs=5.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -998,7 +1006,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/loobos_gl8/file/initial_conditions_irrigtiles.dat b/rose-stem/app/loobos_gl8/file/initial_conditions_irrigtiles.dat new file mode 100644 index 00000000..ce636f16 --- /dev/null +++ b/rose-stem/app/loobos_gl8/file/initial_conditions_irrigtiles.dat @@ -0,0 +1,3 @@ +# sthuf(1:4) t_soil(1:4) snow_tile(1:11) + 0.749 0.743 0.754 0.759 276.78 277.46 278.99 282.48 0.0 0.46 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + \ No newline at end of file diff --git a/rose-stem/app/loobos_gl8/file/tile_fractions_5050_C3C3irrig.dat b/rose-stem/app/loobos_gl8/file/tile_fractions_5050_C3C3irrig.dat new file mode 100644 index 00000000..ca55ccd7 --- /dev/null +++ b/rose-stem/app/loobos_gl8/file/tile_fractions_5050_C3C3irrig.dat @@ -0,0 +1 @@ +0.0 0.0 0.5 0.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \ No newline at end of file diff --git a/rose-stem/app/loobos_gl8/opt/rose-app-irrigon_5050irrigtiles.conf b/rose-stem/app/loobos_gl8/opt/rose-app-irrigon_5050irrigtiles.conf new file mode 100644 index 00000000..e027319a --- /dev/null +++ b/rose-stem/app/loobos_gl8/opt/rose-app-irrigon_5050irrigtiles.conf @@ -0,0 +1,143 @@ +[namelist:jules_frac] +file='tile_fractions_5050_C3C3irrig.dat' + +[namelist:jules_initial] +file='initial_conditions_irrigtiles.dat' + +[namelist:jules_irrig] +irrig_option=2 + +[namelist:jules_pftparm] +a_wl_io=0.65,0.65,0.005,0.005,0.005,0.005,0.10 +a_ws_io=10.00,10.00,1.00,1.00,1.00,1.00,10.00 +!!act_jmax_io=7*50.0e3 +!!act_vcmax_io=7*72.0e3 +!!aef_io=0.43,0.87,0.29,0.29,0.43,0.43,0.20 +albsnc_max_io=2.50e-1,2.50e-1,6.00e-1,6.00e-1,6.00e-1,6.00e-1,4.00e-1 +albsnc_min_io=3.00000e-1,3.00000e-1,5*8.00000e-1 +!!albsnf_max_io=1.00000e-1,1.00000e-1,5*2.00000e-1 +!!albsnf_maxl_io=0.095,0.059,0.128,0.128,0.106,0.106,0.077 +!!albsnf_maxu_io=0.215,0.132,0.288,0.288,0.239,0.239,0.173 +alnir_io=0.45,0.35,5*0.58 +!!alnirl_io=0.30,0.23,5*0.30 +!!alniru_io=0.75,0.65,0.95,0.95,0.95,0.95,0.87 +alpar_io=0.10,0.07,5*0.10 +!!alparl_io=0.06,0.04,5*0.06 +!!alparu_io=0.15,0.11,5*0.25 +!!alpha_elec_io=7*0.4 +alpha_io=0.08,0.08,0.08,0.08,0.040,0.040,0.08 +!!avg_ba_io=0.6E6,0.6E6,1.4E6,1.4E6,1.4E6,1.4E6,1.2E6 +b_wl_io=7*1.667 +c3_io=1,1,1,1,0,0,1 +can_struct_a_io=7*1.0 +canht_ft_io=19.01,16.38,0.79,0.79,1.26,1.26,1.00 +catch0_io=7*5.00000e-1 +!!ccleaf_max_io=7*1.0 +!!ccleaf_min_io=7*0.8 +!!ccwood_max_io=7*0.4 +!!ccwood_min_io=7*0.0 +!!ci_st_io=33.46,33.46,34.26,34.26,29.98,29.98,34.26 +dcatch_dlai_io=7*5.00000e-2 +!!deact_jmax_io=7*200.0e3 +!!deact_vcmax_io=7*200.0e3 +dgl_dm_io=7*0.0 +dgl_dt_io=9.0,9.0,0.0,0.0,0.0,0.0,9.0 +dqcrit_io=0.090,0.060,0.100,0.100,0.075,0.075,0.100 +!!ds_jmax_io=7*646.0 +!!ds_vcmax_io=7*649.0 +!!dust_veg_scj_io=0.0,0.0,1.0,1.0,1.0,1.0,0.5 +dz0v_dh_io=5.00000e-2,5.00000e-2,5*1.00000e-1 +emis_pft_io=0.9800,0.9900,5*0.9800 +eta_sl_io=7*0.01 +f0_io=0.875,0.875,0.900,0.900,0.800,0.800,0.900 +fd_io=0.015,0.015,0.015,0.015,0.025,0.025,0.015 +!!fef_bc_io=0.56,0.56,0.56,0.56,0.47,0.47,0.56 +!!fef_c2h4_io=7*-1073741824 +!!fef_c2h6_io=7*-1073741824 +!!fef_c3h8_io=7*-1073741824 +!!fef_ch4_io=6.8,4.8,4.8,4.8,2.4,2.4,4.8 +!!fef_co2_io=1631,1576,1576,1576,1654,1654,1576 +!!fef_co_io=100,106,106,106,64,64,106 +!!fef_dms_io=7*-1073741824 +!!fef_hcho_io=7*-1073741824 +!!fef_mecho_io=7*-1073741824 +!!fef_nh3_io=7*-1073741824 +!!fef_nox_io=2.55,3.24,3.24,3.24,2.49,2.49,3.24 +!!fef_oc_io=4.3,9.1,9.1,9.1,3.2,3.2,9.1 +!!fef_so2_io=0.40,0.40,0.40,0.40,0.48,0.48,0.40 +fsmc_mod_io=7*0 +fsmc_of_io=7*0.00 +fsmc_p0_io=7*0.0 +g_leaf_0_io=7*0.25 +glmin_io=7*1.0e-6 +!!gpp_st_io=1.29E-07,2.58E-08,2.07E-07,2.07E-07,3.42E-07,3.42E-07, + =1.68E-007 +gsoil_f_io=7*1.0 +!!hw_sw_io=7*0.5 +!!ief_io=25.0,8.00,16.00,16.00,24.00,24.00,20.00 +infil_f_io=4.00000,4.00000,5*2.00000 +irrig_pft_io=0,0,0,1,0,1,0 +!!jv25_ratio_io=7*1.97 +kext_io=7*5.00e-1 +kn_io=7*0.78 +!!knl_io=7*0.20 +kpar_io=7*0.50 +lai_alb_lim_io=7*0.005 +lai_io=5.0,4.0,2.0,2.0,4.0,4.0,1.0 +!!lma_io=0.0824,0.2263,0.0498,0.0498,0.1370,0.1370,0.0695 +!!mef_io=0.9,1.8,0.6,0.6,0.9,0.9,0.57 +neff_io=0.8e-3,0.8e-3,0.8e-3,0.8e-3,0.4e-3,0.4e-3,0.8e-3 +nl0_io=0.040,0.030,0.060,0.060,0.030,0.030,0.030 +!!nmass_io=0.0210,0.0115,0.0219,0.0219,0.0131,0.0131,0.0219 +!!nr_io=0.01726,0.00784,0.0162,0.0162,0.0084,0.0084,0.01726 +nr_nl_io=7*1.00 +ns_nl_io=0.10,0.10,1.00,1.00,1.00,1.00,0.10 +!!nsw_io=0.0072,0.0083,0.01604,0.01604,0.0202,0.0202,0.0072 +omega_io=0.15,0.15,0.15,0.15,0.17,0.17,0.15 +!!omegal_io=0.10,0.05,0.10,0.10,0.12,0.12,0.10 +!!omegau_io=0.23,0.23,5*0.35 +omnir_io=0.70,0.45,5*0.83 +!!omnirl_io=0.50,0.30,5*0.53 +!!omniru_io=0.90,0.65,5*0.98 +orient_io=7*0 +q10_leaf_io=7*2.00 +r_grow_io=7*0.25 +rootd_ft_io=3.00000,1.00000,5*5.00000e-1 +sigl_io=0.0375,0.1000,0.0250,0.0250,0.0500,0.0500,0.0500 +!!sox_a_io=7*0.0 +!!sox_p50_io=7*0.0 +!!sox_rp_min_io=7*0.0 +!!sug_g0_io=7*1.0 +!!sug_grec_io=7*1.0 +!!sug_yg_io=7*1.0 +!!tef_io=1.2,2.4,0.8,0.8,1.2,1.2,0.8 +tleaf_of_io=273.15,243.15,258.15,258.15,258.15,258.15,243.15 +tlow_io=0.0,-5.0,0.0,0.0,13.0,13.0,0.0 +tupp_io=36.0,31.0,36.0,36.0,45.0,45.0,36.0 +!!vint_io=5.73,6.32,6.42,6.42,0.00,0.00,14.71 +!!vsl_io=29.81,18.15,40.96,40.96,10.24,10.24,23.15 +z0hm_classic_pft_io=7*0.1 +z0hm_pft_io=1.65,1.65,5*0.1 +!!z0v_io=1.1,1.1,0.22,0.22,0.22,0.22,1.0 + +[namelist:jules_snow] +can_clump=1.0,4.0,5*1.0 +cansnowpft=.false.,.true.,5*.false. +lai_alb_lim_sn=1.0,1.0,5*0.1 +n_lai_exposed=1.0,1.0,5*0.1 +unload_rate_cnst=7*0.0 +unload_rate_u=0.0,2.31e-06,5*0.0 + +[namelist:jules_surface_types] +c3_irrig=4 +c4_grass=5 +c4_irrig=6 +ice=11 +lake=9 +npft=7 +shrub=7 +soil=10 +urban=8 + +[namelist:jules_vegetation] +l_vegdrag_pft=7*.false. diff --git a/rose-stem/app/loobos_gl8/rose-app.conf b/rose-stem/app/loobos_gl8/rose-app.conf index ccf40953..28ee475f 100644 --- a/rose-stem/app/loobos_gl8/rose-app.conf +++ b/rose-stem/app/loobos_gl8/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -449,6 +449,7 @@ file='tile_fractions.dat' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -485,6 +486,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -501,6 +503,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -669,6 +672,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=25.0,8.0,16.0,24.0,20.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*5.00e-1 kn_io=5*0.78 @@ -692,6 +696,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -762,7 +767,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -857,14 +861,18 @@ ch4_substrate=1 const_ch4_cs=5.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -998,7 +1006,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/loobos_gl8_medlyn/rose-app.conf b/rose-stem/app/loobos_gl8_medlyn/rose-app.conf index 2488d529..ea8fa881 100644 --- a/rose-stem/app/loobos_gl8_medlyn/rose-app.conf +++ b/rose-stem/app/loobos_gl8_medlyn/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -449,6 +449,7 @@ file='tile_fractions.dat' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -485,6 +486,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -501,6 +503,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -669,6 +672,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=25.0,8.0,16.0,24.0,20.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*5.00e-1 kn_io=5*0.78 @@ -692,6 +696,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -762,7 +767,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -857,14 +861,18 @@ ch4_substrate=1 const_ch4_cs=5.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -998,7 +1006,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/loobos_irrig/rose-app.conf b/rose-stem/app/loobos_irrig/rose-app.conf index c0d89c53..e75eb7ce 100644 --- a/rose-stem/app/loobos_irrig/rose-app.conf +++ b/rose-stem/app/loobos_irrig/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -449,6 +449,7 @@ file='tile_fractions.dat' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -487,6 +488,7 @@ time_dim_name='tstep' [namelist:jules_irrig] frac_irrig_all_tiles=.true. irr_crop=2 +!!irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.true. l_irrig_limit=.false. @@ -503,6 +505,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -685,6 +688,7 @@ gsoil_f_io=9*1.0 !!hw_sw_io=9*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0,16.0,16.0,8.0,16.0 infil_f_io=4,4,7*2 +!!irrig_pft_io=9*0 !!jv25_ratio_io=9*1.97 kext_io=9*0.5 kn_io=9*0.78 @@ -710,6 +714,7 @@ omnir_io=0.7,0.45,7*0.83 !!omnirl_io=0.50,0.30,7*0.53 !!omniru_io=0.90,0.65,7*0.98 orient_io=9*0 +!!pft_name_io=9*'' !!psi_close_io=9*-1.5E6 !!psi_open_io=9*-0.033E6 q10_leaf_io=9*2.00 @@ -781,7 +786,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -874,14 +878,18 @@ ch4_substrate=1 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -1017,7 +1025,9 @@ brd_leaf_dec=1 brd_leaf_eg_temp=3 brd_leaf_eg_trop=2 c3_grass=6 +!!c3_irrig=0 c4_grass=7 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=13 diff --git a/rose-stem/app/loobos_irrig_nirrtile/rose-app.conf b/rose-stem/app/loobos_irrig_nirrtile/rose-app.conf index 67cff8a5..261f3ba8 100644 --- a/rose-stem/app/loobos_irrig_nirrtile/rose-app.conf +++ b/rose-stem/app/loobos_irrig_nirrtile/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -449,6 +449,7 @@ file='tile_fractions.dat' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -487,6 +488,7 @@ time_dim_name='tstep' [namelist:jules_irrig] frac_irrig_all_tiles=.false. irr_crop=0 +!!irrig_option=0 irrigtiles=3,4 l_irrig_dmd=.true. l_irrig_limit=.false. @@ -503,6 +505,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -685,6 +688,7 @@ gsoil_f_io=9*1.0 !!hw_sw_io=9*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0,16.0,16.0,8.0,16.0 infil_f_io=4,4,7*2 +!!irrig_pft_io=9*0 !!jv25_ratio_io=9*1.97 kext_io=9*0.5 kn_io=9*0.78 @@ -710,6 +714,7 @@ omnir_io=0.7,0.45,7*0.83 !!omnirl_io=0.50,0.30,7*0.53 !!omniru_io=0.90,0.65,7*0.98 orient_io=9*0 +!!pft_name_io=9*'' !!psi_close_io=9*-1.5E6 !!psi_open_io=9*-0.033E6 q10_leaf_io=9*2.00 @@ -781,7 +786,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -874,14 +878,18 @@ ch4_substrate=1 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -1017,7 +1025,9 @@ brd_leaf_dec=1 brd_leaf_eg_temp=3 brd_leaf_eg_trop=2 c3_grass=6 +!!c3_irrig=0 c4_grass=7 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=13 diff --git a/rose-stem/app/loobos_jules_c1p1/rose-app.conf b/rose-stem/app/loobos_jules_c1p1/rose-app.conf index 68ca2656..0fb1d2d4 100644 --- a/rose-stem/app/loobos_jules_c1p1/rose-app.conf +++ b/rose-stem/app/loobos_jules_c1p1/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -448,6 +448,7 @@ read_from_dump=.false. !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -483,6 +484,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -499,6 +501,7 @@ read_from_dump=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -739,6 +742,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=5*0.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*0.50 kn_io=5*0.78 @@ -762,6 +766,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -832,7 +837,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -939,14 +943,18 @@ ch4_cpow=1.0 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 !!kaps=0.5e-8 kaps_4pool=1.738e-7,5.211e-9,1.144e-8,3.472e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. !!l_ch4_interactive=.false. l_ch4_microbe=.false. !!l_ch4_tlayered=.false. @@ -1080,7 +1088,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/loobos_jules_c1p1_fire/rose-app.conf b/rose-stem/app/loobos_jules_c1p1_fire/rose-app.conf index ac5bce24..cce3ae05 100644 --- a/rose-stem/app/loobos_jules_c1p1_fire/rose-app.conf +++ b/rose-stem/app/loobos_jules_c1p1_fire/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -448,6 +448,7 @@ read_from_dump=.false. !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -483,6 +484,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -499,6 +501,7 @@ read_from_dump=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -746,6 +749,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=5*0.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*0.50 kn_io=5*0.78 @@ -769,6 +773,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -839,7 +844,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -946,14 +950,18 @@ ch4_cpow=1.0 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 !!kaps=0.5e-8 kaps_4pool=1.738e-7,5.211e-9,1.144e-8,3.472e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. !!l_ch4_interactive=.false. l_ch4_microbe=.false. !!l_ch4_tlayered=.false. @@ -1087,7 +1095,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/loobos_jules_cn/rose-app.conf b/rose-stem/app/loobos_jules_cn/rose-app.conf index c7676e85..f6a8f395 100644 --- a/rose-stem/app/loobos_jules_cn/rose-app.conf +++ b/rose-stem/app/loobos_jules_cn/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -448,6 +448,7 @@ read_from_dump=.false. b_pdm=1.0 dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.true. l_spdmvar=.false. @@ -483,6 +484,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -499,6 +501,7 @@ read_from_dump=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -683,6 +686,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=5*0.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*0.50 kn_io=5*0.78 @@ -706,6 +710,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -791,7 +796,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -898,14 +902,18 @@ ch4_cpow=1.0 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 !!kaps=0.5e-8 kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. !!l_ch4_interactive=.false. l_ch4_microbe=.false. !!l_ch4_tlayered=.false. @@ -1039,7 +1047,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/loobos_jules_cn_spinup/rose-app.conf b/rose-stem/app/loobos_jules_cn_spinup/rose-app.conf index b4867b39..431dabd0 100644 --- a/rose-stem/app/loobos_jules_cn_spinup/rose-app.conf +++ b/rose-stem/app/loobos_jules_cn_spinup/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -448,6 +448,7 @@ file='' b_pdm=1.0 dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.true. l_spdmvar=.false. @@ -486,6 +487,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -502,6 +504,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -644,6 +647,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=5*0.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*0.50 kn_io=5*0.78 @@ -667,6 +671,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -752,7 +757,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -859,14 +863,18 @@ ch4_cpow=1.0 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 !!kaps=0.5e-8 kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. !!l_ch4_interactive=.false. l_ch4_microbe=.false. !!l_ch4_tlayered=.false. @@ -1000,7 +1008,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/loobos_jules_es_1p0/rose-app.conf b/rose-stem/app/loobos_jules_es_1p0/rose-app.conf index 033cfa48..3112cedc 100644 --- a/rose-stem/app/loobos_jules_es_1p0/rose-app.conf +++ b/rose-stem/app/loobos_jules_es_1p0/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -450,6 +450,7 @@ read_from_dump=.false. !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -485,6 +486,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -501,6 +503,7 @@ read_from_dump=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -728,6 +731,7 @@ gsoil_f_io=13*1.0 hw_sw_io=13*0.5 ief_io=35,24,16,8,8,16,5,5,24,5,5,10,20 infil_f_io=5*4,8*2 +!!irrig_pft_io=13*0 !!jv25_ratio_io=13*1.97 kext_io=13*0.5 kn_io=13*0.78 @@ -756,6 +760,7 @@ omnir_io=0.7,0.7,0.7,0.45,0.45,8*0.83 !!omnirl_io=0.5,0.5,0.5,0.3,0.3,8*0.53 !!omniru_io=0.9,0.9,0.9,0.65,0.65,8*0.98 orient_io=13*0 +!!pft_name_io=13*'' !!psi_close_io=13*0 !!psi_open_io=13*0 q10_leaf_io=13*2 @@ -873,7 +878,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -968,14 +972,18 @@ ch4_substrate=2 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 !!kaps=0.5e-8 kaps_4pool=2.15e-7,6.43e-9,1.41e-8,4.29e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -1112,9 +1120,11 @@ brd_leaf_eg_temp=3 brd_leaf_eg_trop=2 c3_crop=7 c3_grass=6 +!!c3_irrig=0 c3_pasture=8 c4_crop=10 c4_grass=9 +!!c4_irrig=0 c4_pasture=11 !!elev_ice=-1 !!elev_rock=-1 diff --git a/rose-stem/app/loobos_jules_es_1p0_biocrop/rose-app.conf b/rose-stem/app/loobos_jules_es_1p0_biocrop/rose-app.conf index a11d8878..e01d474c 100644 --- a/rose-stem/app/loobos_jules_es_1p0_biocrop/rose-app.conf +++ b/rose-stem/app/loobos_jules_es_1p0_biocrop/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -451,6 +451,7 @@ read_from_dump=.false. !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -486,6 +487,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -502,6 +504,7 @@ read_from_dump=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -847,6 +850,7 @@ gsoil_f_io=14*1.0 hw_sw_io=13*0.5,5.00E-01 ief_io=35,24,16,8,8,16,5,5,24,5,5,10,20,5 infil_f_io=5*4,9*2 +!!irrig_pft_io=14*0 !!jv25_ratio_io=13*1.97 kext_io=14*0.5 kn_io=14*0.78 @@ -875,6 +879,7 @@ omnir_io=0.7,0.7,0.7,0.45,0.45,9*0.83 !!omnirl_io=0.5,0.5,0.5,0.3,0.3,8*0.53 !!omniru_io=0.9,0.9,0.9,0.65,0.65,8*0.98 orient_io=14*0 +!!pft_name_io=14*'' !!psi_close_io=13*0 !!psi_open_io=13*0 q10_leaf_io=14*2 @@ -1006,7 +1011,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -1101,14 +1105,18 @@ ch4_substrate=2 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 !!kaps=0.5e-8 kaps_4pool=2.15e-7,6.43e-9,1.41e-8,4.29e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -1245,9 +1253,11 @@ brd_leaf_eg_temp=3 brd_leaf_eg_trop=2 c3_crop=7 c3_grass=6 +!!c3_irrig=0 c3_pasture=8 c4_crop=10 c4_grass=9 +!!c4_irrig=0 c4_pasture=11 !!elev_ice=-1 !!elev_rock=-1 diff --git a/rose-stem/app/loobos_jules_es_1p0_biocrop_agexpand/rose-app.conf b/rose-stem/app/loobos_jules_es_1p0_biocrop_agexpand/rose-app.conf index 423cc94b..ddf3faf8 100644 --- a/rose-stem/app/loobos_jules_es_1p0_biocrop_agexpand/rose-app.conf +++ b/rose-stem/app/loobos_jules_es_1p0_biocrop_agexpand/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -451,6 +451,7 @@ read_from_dump=.false. !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -486,6 +487,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -502,6 +504,7 @@ read_from_dump=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -847,6 +850,7 @@ gsoil_f_io=14*1.0 hw_sw_io=13*0.5,5.00E-01 ief_io=35,24,16,8,8,16,5,5,24,5,5,10,20,5 infil_f_io=5*4,9*2 +!!irrig_pft_io=14*0 !!jv25_ratio_io=13*1.97 kext_io=14*0.5 kn_io=14*0.78 @@ -875,6 +879,7 @@ omnir_io=0.7,0.7,0.7,0.45,0.45,9*0.83 !!omnirl_io=0.5,0.5,0.5,0.3,0.3,8*0.53 !!omniru_io=0.9,0.9,0.9,0.65,0.65,8*0.98 orient_io=14*0 +!!pft_name_io=14*'' !!psi_close_io=13*0 !!psi_open_io=13*0 q10_leaf_io=14*2 @@ -1006,7 +1011,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -1101,14 +1105,18 @@ ch4_substrate=2 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 !!kaps=0.5e-8 kaps_4pool=2.15e-7,6.43e-9,1.41e-8,4.29e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -1245,9 +1253,11 @@ brd_leaf_eg_temp=3 brd_leaf_eg_trop=2 c3_crop=7 c3_grass=6 +!!c3_irrig=0 c3_pasture=8 c4_crop=10 c4_grass=9 +!!c4_irrig=0 c4_pasture=11 !!elev_ice=-1 !!elev_rock=-1 diff --git a/rose-stem/app/loobos_jules_es_1p0_biocrop_spinup/rose-app.conf b/rose-stem/app/loobos_jules_es_1p0_biocrop_spinup/rose-app.conf index b5358ce4..a24d7007 100644 --- a/rose-stem/app/loobos_jules_es_1p0_biocrop_spinup/rose-app.conf +++ b/rose-stem/app/loobos_jules_es_1p0_biocrop_spinup/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -451,6 +451,7 @@ file='' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -491,6 +492,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -507,6 +509,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -852,6 +855,7 @@ gsoil_f_io=14*1.0 hw_sw_io=13*0.5,5.00E-01 ief_io=35,24,16,8,8,16,5,5,24,5,5,10,20,5 infil_f_io=5*4,9*2 +!!irrig_pft_io=14*0 !!jv25_ratio_io=13*1.97 kext_io=14*0.5 kn_io=14*0.78 @@ -880,6 +884,7 @@ omnir_io=0.7,0.7,0.7,0.45,0.45,9*0.83 !!omnirl_io=0.5,0.5,0.5,0.3,0.3,8*0.53 !!omniru_io=0.9,0.9,0.9,0.65,0.65,8*0.98 orient_io=14*0 +!!pft_name_io=14*'' !!psi_close_io=13*0 !!psi_open_io=13*0 q10_leaf_io=14*2 @@ -1011,7 +1016,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -1106,14 +1110,18 @@ ch4_substrate=2 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 !!kaps=0.5e-8 kaps_4pool=2.15e-7,6.43e-9,1.41e-8,4.29e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -1250,9 +1258,11 @@ brd_leaf_eg_temp=3 brd_leaf_eg_trop=2 c3_crop=7 c3_grass=6 +!!c3_irrig=0 c3_pasture=8 c4_crop=10 c4_grass=9 +!!c4_irrig=0 c4_pasture=11 !!elev_ice=-1 !!elev_rock=-1 diff --git a/rose-stem/app/loobos_jules_es_1p0_deposition/rose-app.conf b/rose-stem/app/loobos_jules_es_1p0_deposition/rose-app.conf index 8bf4f971..4c8759d0 100644 --- a/rose-stem/app/loobos_jules_es_1p0_deposition/rose-app.conf +++ b/rose-stem/app/loobos_jules_es_1p0_deposition/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -450,6 +450,7 @@ read_from_dump=.false. !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -485,6 +486,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -501,6 +503,7 @@ read_from_dump=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -855,6 +858,7 @@ gsoil_f_io=13*1.0 hw_sw_io=13*0.5 ief_io=35,24,16,8,8,16,5,5,24,5,5,10,20 infil_f_io=5*4,8*2 +!!irrig_pft_io=13*0 !!jv25_ratio_io=13*1.97 kext_io=13*0.5 kn_io=13*0.78 @@ -883,6 +887,7 @@ omnir_io=0.7,0.7,0.7,0.45,0.45,8*0.83 !!omnirl_io=0.5,0.5,0.5,0.3,0.3,8*0.53 !!omniru_io=0.9,0.9,0.9,0.65,0.65,8*0.98 orient_io=13*0 +!!pft_name_io=13*'' !!psi_close_io=13*0 !!psi_open_io=13*0 q10_leaf_io=13*2 @@ -1000,7 +1005,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -1095,14 +1099,18 @@ ch4_substrate=2 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 !!kaps=0.5e-8 kaps_4pool=2.15e-7,6.43e-9,1.41e-8,4.29e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -1239,9 +1247,11 @@ brd_leaf_eg_temp=3 brd_leaf_eg_trop=2 c3_crop=7 c3_grass=6 +!!c3_irrig=0 c3_pasture=8 c4_crop=10 c4_grass=9 +!!c4_irrig=0 c4_pasture=11 !!elev_ice=-1 !!elev_rock=-1 diff --git a/rose-stem/app/loobos_jules_es_1p0_deposition_spinup/rose-app.conf b/rose-stem/app/loobos_jules_es_1p0_deposition_spinup/rose-app.conf index 31bdf26e..50108e70 100644 --- a/rose-stem/app/loobos_jules_es_1p0_deposition_spinup/rose-app.conf +++ b/rose-stem/app/loobos_jules_es_1p0_deposition_spinup/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -449,6 +449,7 @@ file='' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -488,6 +489,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -504,6 +506,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -858,6 +861,7 @@ gsoil_f_io=13*1.0 hw_sw_io=13*0.5 ief_io=35,24,16,8,8,16,5,5,24,5,5,10,20 infil_f_io=5*4,8*2 +!!irrig_pft_io=13*0 !!jv25_ratio_io=13*1.97 kext_io=13*0.5 kn_io=13*0.78 @@ -886,6 +890,7 @@ omnir_io=0.7,0.7,0.7,0.45,0.45,8*0.83 !!omnirl_io=0.5,0.5,0.5,0.3,0.3,8*0.53 !!omniru_io=0.9,0.9,0.9,0.65,0.65,8*0.98 orient_io=13*0 +!!pft_name_io=13*'' !!psi_close_io=13*0 !!psi_open_io=13*0 q10_leaf_io=13*2 @@ -973,7 +978,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -1068,14 +1072,18 @@ ch4_substrate=2 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 !!kaps=0.5e-8 kaps_4pool=2.15e-7,6.43e-9,1.41e-8,4.29e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -1212,9 +1220,11 @@ brd_leaf_eg_temp=3 brd_leaf_eg_trop=2 c3_crop=7 c3_grass=6 +!!c3_irrig=0 c3_pasture=8 c4_crop=10 c4_grass=9 +!!c4_irrig=0 c4_pasture=11 !!elev_ice=-1 !!elev_rock=-1 diff --git a/rose-stem/app/loobos_jules_es_1p0_spinup/rose-app.conf b/rose-stem/app/loobos_jules_es_1p0_spinup/rose-app.conf index 78f0b4ac..6b5a7e5d 100644 --- a/rose-stem/app/loobos_jules_es_1p0_spinup/rose-app.conf +++ b/rose-stem/app/loobos_jules_es_1p0_spinup/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -449,6 +449,7 @@ file='' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -488,6 +489,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -504,6 +506,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -731,6 +734,7 @@ gsoil_f_io=13*1.0 hw_sw_io=13*0.5 ief_io=35,24,16,8,8,16,5,5,24,5,5,10,20 infil_f_io=5*4,8*2 +!!irrig_pft_io=13*0 !!jv25_ratio_io=13*1.97 kext_io=13*0.5 kn_io=13*0.78 @@ -759,6 +763,7 @@ omnir_io=0.7,0.7,0.7,0.45,0.45,8*0.83 !!omnirl_io=0.5,0.5,0.5,0.3,0.3,8*0.53 !!omniru_io=0.9,0.9,0.9,0.65,0.65,8*0.98 orient_io=13*0 +!!pft_name_io=13*'' !!psi_close_io=13*0 !!psi_open_io=13*0 q10_leaf_io=13*2 @@ -846,7 +851,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -941,14 +945,18 @@ ch4_substrate=2 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 !!kaps=0.5e-8 kaps_4pool=2.15e-7,6.43e-9,1.41e-8,4.29e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -1085,9 +1093,11 @@ brd_leaf_eg_temp=3 brd_leaf_eg_trop=2 c3_crop=7 c3_grass=6 +!!c3_irrig=0 c3_pasture=8 c4_crop=10 c4_grass=9 +!!c4_irrig=0 c4_pasture=11 !!elev_ice=-1 !!elev_rock=-1 diff --git a/rose-stem/app/loobos_jules_layeredcn/rose-app.conf b/rose-stem/app/loobos_jules_layeredcn/rose-app.conf index 7cd985d2..628b4da5 100644 --- a/rose-stem/app/loobos_jules_layeredcn/rose-app.conf +++ b/rose-stem/app/loobos_jules_layeredcn/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -448,6 +448,7 @@ read_from_dump=.false. b_pdm=1.0 dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.true. l_spdmvar=.false. @@ -483,6 +484,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -499,6 +501,7 @@ read_from_dump=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -685,6 +688,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=5*0.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*0.50 kn_io=5*0.78 @@ -708,6 +712,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -793,7 +798,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -900,14 +904,18 @@ ch4_cpow=1.0 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 diff_n_pft=5.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 !!kaps=0.5e-8 kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. !!l_ch4_interactive=.false. l_ch4_microbe=.false. !!l_ch4_tlayered=.false. @@ -1041,7 +1049,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/loobos_jules_layeredcn_spinup/rose-app.conf b/rose-stem/app/loobos_jules_layeredcn_spinup/rose-app.conf index 132046f7..cf2465f5 100644 --- a/rose-stem/app/loobos_jules_layeredcn_spinup/rose-app.conf +++ b/rose-stem/app/loobos_jules_layeredcn_spinup/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -448,6 +448,7 @@ file='' b_pdm=1.0 dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.true. l_spdmvar=.false. @@ -486,6 +487,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -502,6 +504,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -644,6 +647,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=5*0.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*0.50 kn_io=5*0.78 @@ -667,6 +671,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -752,7 +757,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -859,14 +863,18 @@ ch4_cpow=1.0 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 diff_n_pft=5.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 !!kaps=0.5e-8 kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. !!l_ch4_interactive=.false. l_ch4_microbe=.false. !!l_ch4_tlayered=.false. @@ -1000,7 +1008,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/loobos_julesc/rose-app.conf b/rose-stem/app/loobos_julesc/rose-app.conf index f53991cb..23918da6 100644 --- a/rose-stem/app/loobos_julesc/rose-app.conf +++ b/rose-stem/app/loobos_julesc/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -448,6 +448,7 @@ read_from_dump=.false. b_pdm=1.0 dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.true. l_spdmvar=.false. @@ -483,6 +484,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -499,6 +501,7 @@ read_from_dump=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -667,6 +670,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=5*0.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*0.50 kn_io=5*0.78 @@ -690,6 +694,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -760,7 +765,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -867,14 +871,18 @@ ch4_cpow=1.0 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 !!kaps=0.5e-8 kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. !!l_ch4_interactive=.false. l_ch4_microbe=.false. !!l_ch4_tlayered=.false. @@ -1008,7 +1016,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/loobos_julesc_spinup/rose-app.conf b/rose-stem/app/loobos_julesc_spinup/rose-app.conf index e75072c4..d1cbccc5 100644 --- a/rose-stem/app/loobos_julesc_spinup/rose-app.conf +++ b/rose-stem/app/loobos_julesc_spinup/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -448,6 +448,7 @@ file='' b_pdm=1.0 dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.true. l_spdmvar=.false. @@ -486,6 +487,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -502,6 +504,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -644,6 +647,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=5*0.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*0.50 kn_io=5*0.78 @@ -667,6 +671,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -737,7 +742,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -844,14 +848,18 @@ ch4_cpow=1.0 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 !!kaps=0.5e-8 kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. !!l_ch4_interactive=.false. l_ch4_microbe=.false. !!l_ch4_tlayered=.false. @@ -985,7 +993,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/loobos_prescribe_sthuf/rose-app.conf b/rose-stem/app/loobos_prescribe_sthuf/rose-app.conf index 16acce1b..e7be79d5 100644 --- a/rose-stem/app/loobos_prescribe_sthuf/rose-app.conf +++ b/rose-stem/app/loobos_prescribe_sthuf/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -449,6 +449,7 @@ file='tile_fractions.dat' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -486,6 +487,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -502,6 +504,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -696,6 +699,7 @@ gsoil_f_io=9*1.0 !!hw_sw_io=9*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0,16.0,16.0,8.0,16.0 infil_f_io=4,4,7*2 +!!irrig_pft_io=9*0 !!jv25_ratio_io=9*1.97 kext_io=9*0.5 kn_io=9*0.78 @@ -720,6 +724,7 @@ omnir_io=0.7,0.45,7*0.83 !!omnirl_io=0.50,0.30,7*0.53 !!omniru_io=0.90,0.65,7*0.98 orient_io=9*0 +!!pft_name_io=9*'' !!psi_close_io=9*-1.5E6 !!psi_open_io=9*-0.033E6 q10_leaf_io=9*2.00 @@ -806,7 +811,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -899,14 +903,18 @@ ch4_cpow=1.0 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. !!l_ch4_interactive=.false. l_ch4_microbe=.false. !!l_ch4_tlayered=.false. @@ -1042,7 +1050,9 @@ brd_leaf_dec=1 brd_leaf_eg_temp=3 brd_leaf_eg_trop=2 c3_grass=6 +!!c3_irrig=0 c4_grass=7 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=13 diff --git a/rose-stem/app/loobos_trif/rose-app.conf b/rose-stem/app/loobos_trif/rose-app.conf index d59a240f..c14a9572 100644 --- a/rose-stem/app/loobos_trif/rose-app.conf +++ b/rose-stem/app/loobos_trif/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -447,6 +447,7 @@ read_from_dump=.false. b_pdm=1.0 dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.true. l_spdmvar=.false. @@ -482,6 +483,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -498,6 +500,7 @@ read_from_dump=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -666,6 +669,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*0.50 kn_io=5*0.78 @@ -689,6 +693,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -759,7 +764,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -866,14 +870,18 @@ ch4_cpow=1.0 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 !!kaps=0.5e-8 kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. !!l_ch4_interactive=.false. l_ch4_microbe=.false. !!l_ch4_tlayered=.false. @@ -1007,7 +1015,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/loobos_trif_spinup/rose-app.conf b/rose-stem/app/loobos_trif_spinup/rose-app.conf index fa9329d4..c8b1eb10 100644 --- a/rose-stem/app/loobos_trif_spinup/rose-app.conf +++ b/rose-stem/app/loobos_trif_spinup/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -447,6 +447,7 @@ file='' b_pdm=1.0 dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.true. l_spdmvar=.false. @@ -483,6 +484,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -499,6 +501,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -641,6 +644,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=35.0,12.0,16.0,8.0,20.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*0.50 kn_io=5*0.78 @@ -664,6 +668,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -734,7 +739,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -841,14 +845,18 @@ ch4_cpow=1.0 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 !!kaps=0.5e-8 kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. !!l_ch4_interactive=.false. l_ch4_microbe=.false. !!l_ch4_tlayered=.false. @@ -982,7 +990,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/loobos_ukv/rose-app.conf b/rose-stem/app/loobos_ukv/rose-app.conf index 18fd9b67..2949fb9f 100644 --- a/rose-stem/app/loobos_ukv/rose-app.conf +++ b/rose-stem/app/loobos_ukv/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -448,6 +448,7 @@ file='tile_fractions.dat' b_pdm=0.40 dz_pdm=0.50 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.true. l_spdmvar=.false. @@ -484,6 +485,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -500,6 +502,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -668,6 +671,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=25.0,8.00,16.00,24.00,20.00 infil_f_io=4.00000,4.00000,2.00000,2.00000,2.00000 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*5.00000e-1 kn_io=5*0.78 @@ -691,6 +695,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -761,7 +766,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -856,14 +860,18 @@ ch4_cpow=1.0 const_ch4_cs=7.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. !!l_ch4_interactive=.false. l_ch4_microbe=.false. !!l_ch4_tlayered=.false. @@ -997,7 +1005,9 @@ l_urban2t=.true. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=8 diff --git a/rose-stem/app/loobos_vegdrag/rose-app.conf b/rose-stem/app/loobos_vegdrag/rose-app.conf index 80a54adf..5ad4f62b 100644 --- a/rose-stem/app/loobos_vegdrag/rose-app.conf +++ b/rose-stem/app/loobos_vegdrag/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -449,6 +449,7 @@ file='tile_fractions.dat' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -485,6 +486,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -501,6 +503,7 @@ read_file=.false. !!var_name='' [namelist:jules_land_frac] +!!l_use_land_fraction=.false. [namelist:jules_latlon] const_val=52.168,5.744 @@ -669,6 +672,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=25.0,8.0,16.0,24.0,20.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5*5.00e-1 kn_io=5*0.78 @@ -692,6 +696,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -762,7 +767,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -857,14 +861,18 @@ ch4_substrate=1 const_ch4_cs=5.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -998,7 +1006,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/app/surf_gl9/rose-app.conf b/rose-stem/app/surf_gl9/rose-app.conf index aba54713..45a42211 100644 --- a/rose-stem/app/surf_gl9/rose-app.conf +++ b/rose-stem/app/surf_gl9/rose-app.conf @@ -1,4 +1,4 @@ -meta=jules-standalone/vn8.1 +meta=jules-standalone/vn8.2 [command] default=rose-run jules.exe @@ -451,6 +451,7 @@ frac_name='field216' !!b_pdm=1.0 !!dz_pdm=1.0 l_hydrology=.true. +!!l_inland=.false. l_limit_gsoil=.false. l_pdm=.false. !!l_spdmvar=.false. @@ -496,6 +497,7 @@ time_dim_name='tstep' [namelist:jules_irrig] !!frac_irrig_all_tiles=.false. !!irr_crop=1 +irrig_option=0 !!irrigtiles=0 l_irrig_dmd=.false. !!l_irrig_limit=.false. @@ -513,6 +515,7 @@ read_file=.false. [namelist:jules_land_frac] file='$SURF_INSTALL_DIR/MaskData1.nc' +!!l_use_land_fraction=.false. land_frac_name='field30' [namelist:jules_latlon] @@ -672,6 +675,7 @@ gsoil_f_io=5*1.0 !!hw_sw_io=5*0.5 !!ief_io=25.0,8.0,16.0,24.0,20.0 infil_f_io=4.00,4.00,2.00,2.00,2.00 +!!irrig_pft_io=5*0 !!jv25_ratio_io=5*1.97 kext_io=5.00000e-1,5.00000e-1,1.00000,1.00000,5.00000e-1 kn_io=5*0.78 @@ -695,6 +699,7 @@ omnir_io=0.70,0.45,0.83,0.83,0.83 !!omnirl_io=0.50,0.30,0.53,0.53,0.53 !!omniru_io=0.90,0.65,0.98,0.98,0.98 orient_io=5*0 +!!pft_name_io=5*'' !!psi_close_io=5*-1.5E6 !!psi_open_io=5*-0.033E6 q10_leaf_io=5*2.00 @@ -779,7 +784,6 @@ wght_alb=0.0,0.5,0.0,0.5 !!cland=0.2 !!criver=0.62 !!i_river_vn=2 -!!l_inland=.false. !!l_riv_overbank=.false. l_rivers=.false. !!lake_water_conserve_method=1 @@ -874,14 +878,18 @@ ch4_substrate=1 const_ch4_cs=5.41e-12 const_ch4_npp=9.99e-3 const_ch4_resps=4.36e-3 +cs_decomp_soil_moist_func=0 !!cue_ch4=0.03 !!diff_n_pft=100.0 !!ev_ch4=5.0 !!frz_ch4=0.5 +!!fsthsat_cs_decomp_opt1=0.2 +!!heat_of_respiration=3.9e07 !!k2_ch4=0.01 kaps=0.5e-8 !!kaps_4pool=3.22e-7,9.65e-9,2.12e-8,6.43e-10 !!kd_ch4=0.0003 +l_bgc_heat=.false. l_ch4_interactive=.false. l_ch4_microbe=.false. l_ch4_tlayered=.false. @@ -1015,7 +1023,9 @@ l_urban2t=.false. [namelist:jules_surface_types] brd_leaf=1 c3_grass=3 +!!c3_irrig=0 c4_grass=4 +!!c4_irrig=0 !!elev_ice=0 !!elev_rock=0 ice=9 diff --git a/rose-stem/bin/create_jules_version_metadata.py b/rose-stem/bin/create_jules_version_metadata.py index 0e8c0312..176b1e71 100755 --- a/rose-stem/bin/create_jules_version_metadata.py +++ b/rose-stem/bin/create_jules_version_metadata.py @@ -132,14 +132,14 @@ def check_version_numbers(fname, current_version, new_version): print(line.strip()) if not re.search(r"%s"%(current_version), line): print("%s does not match 'Current version'\n"%(fname)) - something = input("Press CTRL-c to abort, or enter to continue: ") + _ = input("Press CTRL-c to abort, or enter to continue: ") else: print("%s consistent with 'Current version'"%(fname)) if abs(new_version - current_version - 0.1) > 0.01: print ("Increment between 'Current version' and 'New version' greater" " than normal value 0.1. Was this intentional?\n") - something = input("Press CTRL-c to abort, or enter to continue: ") + _ = input("Press CTRL-c to abort, or enter to continue: ") def check_for_new_revision_dirs(dirs, new_version): @@ -196,6 +196,7 @@ def check_for_new_revision_dirs(dirs, new_version): dirs.append("../rose-meta/jules-fcm-make") dirs.append("../rose-meta/jules-standalone") dirs.append("../rose-meta/jules-um") + dirs.append("../rose-meta/jules-lfric") # Check that new_version directories do not already exist print("\nChecking for existing vn%s directories"%(new_version)) diff --git a/rose-stem/include/cehwl1/graph.cylc b/rose-stem/include/cehwl1/graph.cylc index 7bd5d0e5..d35e8781 100644 --- a/rose-stem/include/cehwl1/graph.cylc +++ b/rose-stem/include/cehwl1/graph.cylc @@ -16,6 +16,11 @@ "loobos_gl8_medlyn" : "remote_init_ceh => extract_source => fcm_make_debug => \ loobos_gl8_medlyn => nccmp_loobos_gl8_medlyn => housekeep_loobos_gl8_medlyn", + + "loobos_gl8_irrigon_5050irrigtiles" : "remote_init_ceh => fcm_make_debug => \ + loobos_gl8_irrigon_5050irrigtiles => \ + nccmp_loobos_gl8_irrigon_5050irrigtiles => \ + housekeep_loobos_gl8_irrigon_5050irrigtiles", "loobos_vegdrag" : "remote_init_ceh => extract_source => fcm_make_debug => \ loobos_vegdrag => nccmp_loobos_vegdrag => housekeep_loobos_vegdrag", @@ -213,6 +218,7 @@ "all" : ["loobos", "gswp2", "eraint", "gswp2_es", "imogen"], "loobos" : ["loobos_gl4","loobos_gl4_cable", "loobos_gl7", "loobos_gl8", "loobos_gl8_medlyn", + "loobos_gl8_irrigon_5050irrigtiles", "loobos_vegdrag", "loobos_euro4", "loobos_forecast", "loobos_ukv", "loobos_trif", "loobos_crops", "loobos_prescribe_sthuf", "loobos_fire", "loobos_daily_disagg","loobos_julesc","loobos_jules_layeredcn", diff --git a/rose-stem/include/cehwl1/runtime.cylc b/rose-stem/include/cehwl1/runtime.cylc index ff80691c..75feeef6 100644 --- a/rose-stem/include/cehwl1/runtime.cylc +++ b/rose-stem/include/cehwl1/runtime.cylc @@ -74,6 +74,12 @@ [[loobos_gl8_medlyn]] inherit = LOOBOS, CEH_LOOBOS + [[loobos_gl8_irrigon_5050irrigtiles]] + inherit = LOOBOS, CEH_LOOBOS + [[[environment]]] + ROSE_TASK_APP = loobos_gl8 + ROSE_APP_OPT_CONF_KEYS = irrigon_5050irrigtiles + [[loobos_vegdrag]] inherit = LOOBOS, CEH_LOOBOS @@ -434,6 +440,11 @@ [[[environment]]] OUTPUT_DIR = ../loobos_gl8_medlyn/output + [[nccmp_loobos_gl8_irrigon_5050irrigtiles]] + inherit = KGO_CHECK, CEH_NETCDF_COMPARISON + [[[environment]]] + OUTPUT_DIR = ../loobos_gl8_irrigon_5050irrigtiles/output + [[nccmp_loobos_vegdrag]] inherit = KGO_CHECK, CEH_NETCDF_COMPARISON [[[environment]]] @@ -737,6 +748,11 @@ [[[environment]]] DIR1 = ../loobos_gl8_medlyn + [[housekeep_loobos_gl8_irrigon_5050irrigtiles]] + inherit = HOUSEKEEPING, LINUX + [[[environment]]] + DIR1 = ../loobos_gl8_irrigon_5050irrigtiles + [[housekeep_loobos_vegdrag]] inherit = HOUSEKEEPING, LINUX [[[environment]]] diff --git a/rose-stem/include/esnz/graph-cascade.cylc b/rose-stem/include/esnz/graph-cascade.cylc new file mode 100644 index 00000000..a2b9030b --- /dev/null +++ b/rose-stem/include/esnz/graph-cascade.cylc @@ -0,0 +1,94 @@ +############################################################################### +## Name graphs +############################################################################### + +# The Loobos crops graph needs to be listed explicitly for the tutorial group +{%- set name_graphs_cascade = { + + "esnz_cascade_fcm_make" : "extract_source => fcm_make_esnz_cascade_omp + extract_source => fcm_make_esnz_cascade_debug_noomp", + + "esnz_cascade_ifx_loobos_jules_es_1p0_biocrop" : "extract_source => fcm_make_esnz_cascade_ifx_debug_noomp => \ + esnz_cascade_ifx_loobos_jules_es_1p0_biocrop_spinup => esnz_cascade_ifx_loobos_jules_es_1p0_biocrop \ + & esnz_cascade_ifx_loobos_jules_es_1p0_biocrop_agexpand => \ + nccmp_esnz_cascade_ifx_loobos_jules_es_1p0_biocrop \ + & nccmp_esnz_cascade_ifx_loobos_jules_es_1p0_biocrop_agexpand => \ + housekeep_esnz_cascade_ifx_loobos_jules_es_1p0_biocrop_spinup \ + & housekeep_esnz_cascade_ifx_loobos_jules_es_1p0_biocrop \ + & housekeep_esnz_cascade_ifx_loobos_jules_es_1p0_biocrop_agexpand", + + "esnz_cascade_ifx_loobos_crops" : "extract_source => fcm_make_esnz_cascade_ifx_debug_noomp => + esnz_cascade_ifx_loobos_crops => + nccmp_esnz_cascade_ifx_loobos_crops => + housekeep_esnz_cascade_ifx_loobos_crops", + + "esnz_cascade_ifx_loobos_single" : "extract_source => fcm_make_esnz_cascade_ifx_debug_noomp => + esnz_cascade_ifx_loobos => + nccmp_esnz_cascade_ifx_loobos => + housekeep_esnz_cascade_ifx_loobos", + + "esnz_cascade_ifx_loobos_with_spinup" : "extract_source => fcm_make_esnz_cascade_ifx_debug_noomp => + esnz_cascade_ifx_loobos_spinup => + esnz_cascade_ifx_loobos => + nccmp_esnz_cascade_ifx_loobos => + housekeep_esnz_cascade_ifx_loobos_spinup & \ + housekeep_esnz_cascade_ifx_loobos + + extract_source => fcm_make_esnz_cascade_ifx_debug_noomp => + esnz_cascade_ifx_loobos_julesc_spinup => + esnz_cascade_ifx_loobos => + nccmp_esnz_cascade_ifx_loobos => + housekeep_esnz_cascade_ifx_loobos_julesc_spinup & \ + housekeep_esnz_cascade_ifx_loobos", + + "esnz_cascade_ifx_gswp2_single" : "extract_source => fcm_make_esnz_cascade_ifx_omp => + esnz_cascade_ifx_gswp2 => + nccmp_esnz_cascade_ifx_gswp2 => + housekeep_esnz_cascade_ifx_gswp2", + + "esnz_cascade_ifx_gswp2_es_1p1" : "extract_source => fcm_make_esnz_cascade_ifx_omp => + esnz_cascade_ifx_gswp2_es => + nccmp_esnz_cascade_ifx_gswp2_es => + housekeep_esnz_cascade_ifx_gswp2_es", + + "esnz_cascade_ifx_gswp2_with_spinup" : "extract_source => fcm_make_esnz_cascade_ifx_omp => + esnz_cascade_ifx_gswp2_trip_spinup => + esnz_cascade_ifx_gswp2_irrig_limit_river_storage => + nccmp_esnz_cascade_ifx_gswp2_irrig_limit_river_storage => + housekeep_esnz_cascade_ifx_gswp2_trip_spinup => + housekeep_esnz_cascade_ifx_gswp2_irrig_limit_river_storage", + + "esnz_cascade_ifx_eraint" : "extract_source => fcm_make_esnz_cascade_ifx_omp => + esnz_cascade_ifx_eraint => + nccmp_esnz_cascade_ifx_eraint => + housekeep_esnz_cascade_ifx_eraint", + + } +%} + +############################################################################### +## Group definitions +############################################################################### + +{%- set groups_cascade = { + + "esnz_cascade_all" : ["esnz_cascade_build", + "esnz_cascade_loobos", + "esnz_cascade_gswp2", + "esnz_cascade_eraint"], + + "esnz_cascade_build" : ["esnz_cascade_fcm_make"], + + "esnz_cascade_loobos" : ["esnz_cascade_ifx_loobos_single", + "esnz_cascade_ifx_loobos_with_spinup", + "esnz_cascade_ifx_loobos_crops", + "esnz_cascade_ifx_loobos_jules_es_1p0_biocrop"], + + "esnz_cascade_gswp2" : ["esnz_cascade_ifx_gswp2_single", + "esnz_cascade_ifx_gswp2_with_spinup", + "esnz_cascade_ifx_gswp2_es_1p1"], + + "esnz_cascade_eraint" : ["esnz_cascade_ifx_eraint"], + + } +%} diff --git a/rose-stem/include/niwa/graph.cylc b/rose-stem/include/esnz/graph.cylc similarity index 52% rename from rose-stem/include/niwa/graph.cylc rename to rose-stem/include/esnz/graph.cylc index 39a36681..46a6c97a 100644 --- a/rose-stem/include/niwa/graph.cylc +++ b/rose-stem/include/esnz/graph.cylc @@ -1,19 +1,17 @@ ############################################################################### ## Imports ############################################################################### -%include 'include/niwa/graph-cs500.cylc' -%include 'include/niwa/graph-xc50.cylc' +%include 'include/esnz/graph-cascade.cylc' ############################################################################### ## Name graphs ############################################################################### {%- set name_graphs = { - "umdp3_check" : "export_source => umdp3_checker", - "metadata_check" : "export_source => metadata_checker", - "site_validator" : "export_source => site_validator", + "umdp3_check" : "extract_source => umdp3_checker", + "metadata_check" : "extract_source => metadata_checker", + "site_validator" : "extract_source => site_validator", } %} -{%- do name_graphs.update(name_graphs_cs500.items()) %} -{%- do name_graphs.update(name_graphs_xc50.items()) %} +{%- do name_graphs.update(name_graphs_cascade.items()) %} ############################################################################### ## Group definitions @@ -21,13 +19,12 @@ {%- set groups = { - "all" : ["niwa_cs500_all", "niwa_xc50_all", "scripts"], + "all" : ["esnz_cascade_all", "scripts"], - "tutorial" : ["niwa_xc50_intel_loobos_crops"], + "tutorial" : ["esnz_cascade_ifx_loobos_crops"], "scripts" : ["umdp3_check", "metadata_check", "site_validator"], } %} -{%- do groups.update(groups_cs500.items()) %} -{%- do groups.update(groups_xc50.items()) %} +{%- do groups.update(groups_cascade.items()) %} diff --git a/rose-stem/include/esnz/parameters.cylc b/rose-stem/include/esnz/parameters.cylc new file mode 100644 index 00000000..21008d46 --- /dev/null +++ b/rose-stem/include/esnz/parameters.cylc @@ -0,0 +1,17 @@ +[task parameters] + # Compilers + compiler_cascade = ifx + # Loobos test variants + loobos_single = gl4, gl4_cable, gl7, gl8, gl8_irrigon_5050irrigtiles, \ + vegdrag, euro4, forecast, ukv, crops, \ + prescribe_sthuf, irrig, daily_disagg, crm1_traitF, crm4_traitF, \ + crm5_traitF, crm6_traitF, crm6_traitT, crm6_traitF_srfT + loobos_with_spinup = trif, julesc, jules_layeredcn, jules_cn, jules_es_1p0, jules_es_1p0_biocrop, fire + loobos_jules_c1p1 = jules_c1p1, jules_c1p1_fire + # GSWP2 test variants + gswp2_single = closures, euro4, gl4, gl7, ukv + gswp2_es_1p1 = 1p1, curr, beta + gswp2_with_spinup = trip + gswp2_irrig = low, high + # Eraint test variants + eraint_tests = rfm_2ddata, trip_2ddata diff --git a/rose-stem/include/esnz/queues.cylc b/rose-stem/include/esnz/queues.cylc new file mode 100644 index 00000000..00cee5f1 --- /dev/null +++ b/rose-stem/include/esnz/queues.cylc @@ -0,0 +1,7 @@ + [[queues]] + [[[cascade_run]]] + limit = 5 + members = ESNZ_CASCADE_LOOBOS, ESNZ_CASCADE_GSWP2, ESNZ_CASCADE_ERAINT + [[[cascade_build]]] + limit = 1 + members = ESNZ_CASCADE_BUILD diff --git a/rose-stem/include/esnz/runtime-cascade.cylc b/rose-stem/include/esnz/runtime-cascade.cylc new file mode 100644 index 00000000..3f17bbcf --- /dev/null +++ b/rose-stem/include/esnz/runtime-cascade.cylc @@ -0,0 +1,300 @@ +############################################################################### +## Common classes +############################################################################### + + [[ESNZ_CASCADE]] + + [[ESNZ_CASCADE_BG]] + inherit = ESNZ_CASCADE + platform = niwa-build01-background + execution time limit = PT45M + + [[ESNZ_CASCADE_PBS]] + inherit = ESNZ_CASCADE + platform = cascade-pbs + execution time limit = PT10M + [[[directives]]] + -q = shortq + + [[extract_source]] + inherit = ESNZ_CASCADE_BG, SOURCE_EXTRACTION + +# Cascade node setup + [[ESNZ_CASCADE_CORES_1]] + [[[directives]]] + -l select=1:ncpus=1:mem=2G:ompthreads=1:mpiprocs=1 + + [[ESNZ_CASCADE_CORES_8]] + [[[directives]]] + -l select=1:ncpus=8:mem=16G:ompthreads=1:mpiprocs=8 + + [[ESNZ_CASCADE_CORES_32]] + [[[directives]]] + -l select=1:ncpus=32:mem=64G:ompthreads=1:mpiprocs=32 + +############################################################################### +## Scripts +############################################################################### + +# Redefine site-independent SCRIPTS group to run on build node + [[SCRIPTS]] + inherit = ESNZ_CASCADE_BG + +############################################################################### +## Build jobs +############################################################################### + + [[ESNZ_CASCADE_BUILD]] + inherit = ESNZ_CASCADE_BG, EXTRACT_AND_BUILD + [[[environment]]] + ROSE_TASK_N_JOBS = 6 + + [[ESNZ_CASCADE_BUILD_ifx]] + inherit = ESNZ_CASCADE_BUILD + pre-script = """ + . /esi/project/niwa00001/spack/share/spack/setup-env.sh + spack load intel-oneapi-compilers@2025.1.0 /5gt5gbh + spack load intel-oneapi-mpi@2021.15.0%oneapi@2025.1.0 /yzq7ltd + spack load fcm@2021.05.0 /qcebcci + export NETCDF_FORTRAN_ROOT=$(spack location -i netcdf-fortran@4.6.1%oneapi@2025.1.0 /ws6lxbf) + """ + [[[environment]]] + JULES_PLATFORM = esnz-cascade-ifx + +# Debug build without OpenMP + [[fcm_make_esnz_cascade_debug_noomp]] + inherit = ESNZ_CASCADE_BUILD + [[[environment]]] + JULES_BUILD = debug + JULES_OMP = noomp + +# Normal build with OpenMP + [[fcm_make_esnz_cascade_omp]] + inherit = ESNZ_CASCADE_BUILD + [[[environment]]] + JULES_BUILD = normal + JULES_OMP = omp + +############################################################################### +## Compute jobs +############################################################################### + + [[ESNZ_CASCADE_RUN]] + inherit = ESNZ_CASCADE_PBS + + [[ESNZ_CASCADE_RUN_ifx]] + inherit = ESNZ_CASCADE_RUN + env-script = """ + . /esi/project/niwa00001/spack/share/spack/setup-env.sh + spack load intel-oneapi-mpi@2021.15.0%oneapi@2025.1.0 /yzq7ltd + export PATH=$(spack location -i intel-oneapi-compilers@2025.1.0 /5gt5gbh)/compiler/latest/bin/compiler:$PATH + """ + [[[environment]]] + ROSE_LAUNCHER = mpiexec + + # Loobos variants + [[ESNZ_CASCADE_LOOBOS]] + inherit = ESNZ_CASCADE_RUN_ifx, ESNZ_CASCADE_CORES_1, LOOBOS, COMPUTE + [[[environment]]] + BUILD_NAME = fcm_make_esnz_cascade_ifx_debug_noomp + LOOBOS_INSTALL_DIR = /opt/niwa/um_sys/jules/benchmarking-data/loobos + + [[esnz_cascade_ifx_loobos]] + inherit = ESNZ_CASCADE_LOOBOS + [[[environment]]] + ROSE_TASK_APP = loobos_${CYLC_TASK_PARAM_loobos_single} + + [[esnz_cascade_ifx_loobos]] + inherit = ESNZ_CASCADE_LOOBOS + [[[environment]]] + ROSE_TASK_APP = loobos_gl4 + ROSE_APP_OPT_CONF_KEYS = cable + + [[esnz_cascade_ifx_loobos]] + inherit = ESNZ_CASCADE_LOOBOS + [[[environment]]] + ROSE_TASK_APP = loobos_gl8 + ROSE_APP_OPT_CONF_KEYS = irrigon_5050irrigtiles + + [[esnz_cascade_ifx_loobos_spinup]] + inherit = ESNZ_CASCADE_LOOBOS + [[[environment]]] + ROSE_TASK_APP = loobos_${CYLC_TASK_PARAM_loobos_with_spinup}_spinup + + [[esnz_cascade_ifx_loobos]] + inherit = ESNZ_CASCADE_LOOBOS + [[[environment]]] + ROSE_TASK_APP = loobos_${CYLC_TASK_PARAM_loobos_with_spinup} + DUMP_FILE = ../esnz_cascade_ifx_loobos_${CYLC_TASK_PARAM_loobos_with_spinup}_spinup/output/esnz_cascade_ifx_loobos_${CYLC_TASK_PARAM_loobos_with_spinup}_spinup.dump.19971231.82800.nc + + [[esnz_cascade_ifx_loobos]] + inherit = ESNZ_CASCADE_LOOBOS + [[[environment]]] + ROSE_TASK_APP = loobos_${CYLC_TASK_PARAM_loobos_jules_c1p1} + DUMP_FILE = ../esnz_cascade_ifx_loobos_julesc_spinup/output/esnz_cascade_ifx_loobos_julesc_spinup.dump.19971231.82800.nc + + [[esnz_cascade_ifx_loobos_jules_es_1p0_biocrop_agexpand]] + inherit = ESNZ_CASCADE_LOOBOS + [[[environment]]] + ROSE_TASK_APP = loobos_jules_es_1p0_biocrop_agexpand + DUMP_FILE = ../esnz_cascade_ifx_loobos_jules_es_1p0_biocrop_spinup/output/esnz_cascade_ifx_loobos_jules_es_1p0_biocrop_spinup.dump.19971231.82800.nc + + # GSWP2 variants + [[ESNZ_CASCADE_GSWP2]] + inherit = ESNZ_CASCADE_RUN_ifx, ESNZ_CASCADE_CORES_32, GSWP2, COMPUTE + pre-script = gen_gswp2_drive_file + [[[environment]]] + BUILD_NAME = fcm_make_esnz_cascade_ifx_omp + GSWP2_INSTALL_DIR = /opt/niwa/um_sys/jules/benchmarking-data/gswp2 + + [[esnz_cascade_ifx_gswp2]] + inherit = ESNZ_CASCADE_GSWP2 + [[[environment]]] + ROSE_TASK_APP = gswp2_${CYLC_TASK_PARAM_gswp2_single} + + [[esnz_cascade_ifx_gswp2_spinup]] + inherit = ESNZ_CASCADE_GSWP2 + [[[environment]]] + ROSE_TASK_APP = gswp2_${CYLC_TASK_PARAM_gswp2_with_spinup}_spinup + + [[esnz_cascade_ifx_gswp2_irrig_limit_river_storage]] + inherit = ESNZ_CASCADE_GSWP2 + [[[environment]]] + ROSE_TASK_APP = gswp2_irrig_limit_${CYLC_TASK_PARAM_gswp2_irrig}_river_storage + DUMP_FILE = ../esnz_cascade_ifx_gswp2_trip_spinup/output/esnz_cascade_ifx_gswp2_trip_spinup.dump.19820701.10800.nc + + [[esnz_cascade_ifx_gswp2_es]] + inherit = ESNZ_CASCADE_GSWP2 + [[[environment]]] + ROSE_TASK_APP = gswp2_es_1p1 + ROSE_APP_OPT_CONF_KEYS = ${CYLC_TASK_PARAM_gswp2_es_1p1} + + # Eraint variants + [[ESNZ_CASCADE_ERAINT]] + inherit = ESNZ_CASCADE_RUN_ifx, ESNZ_CASCADE_CORES_8, ERAINT, COMPUTE + [[[environment]]] + BUILD_NAME = fcm_make_esnz_cascade_ifx_omp + ERAINT_INSTALL_DIR = /opt/niwa/um_sys/jules/benchmarking-data/eraint + + [[esnz_cascade_ifx_eraint]] + inherit = ESNZ_CASCADE_ERAINT + [[[environment]]] + ROSE_TASK_APP = eraint_${CYLC_TASK_PARAM_eraint_tests} + DUMP_FILE = $ERAINT_INSTALL_DIR/brahma_eraint_small.dump.19951031.0.nc + +############################################################################### +## Comparison jobs +############################################################################### + + [[ESNZ_CASCADE_NETCDF_COMPARISON]] + inherit = ESNZ_CASCADE_BG, KGO_CHECK, COMPARISON + pre-script = """ + . /opt/niwa/profile/conda_24.11.3_2025.05.1.sh + conda activate niwa_tools_2025.07.1 + """ + [[[environment]]] + CMD_CMP = nccmp -d --force + KGO_DIR = /esi/project/niwa00001/rose-stem/jules/rose-stem-kgo/{{ KGO_VERSION }} + + # Loobos variants + [[nccmp_esnz_cascade_ifx_loobos]] + inherit = ESNZ_CASCADE_NETCDF_COMPARISON + [[[environment]]] + OUTPUT_DIR = ../esnz_cascade_ifx_loobos_${CYLC_TASK_PARAM_loobos_single}/output + + [[nccmp_esnz_cascade_ifx_loobos]] + inherit = ESNZ_CASCADE_NETCDF_COMPARISON + [[[environment]]] + OUTPUT_DIR = ../esnz_cascade_ifx_loobos_${CYLC_TASK_PARAM_loobos_with_spinup}/output + + [[nccmp_esnz_cascade_ifx_loobos]] + inherit = ESNZ_CASCADE_NETCDF_COMPARISON + [[[environment]]] + OUTPUT_DIR = ../esnz_cascade_ifx_loobos_${CYLC_TASK_PARAM_loobos_jules_c1p1}/output + + [[nccmp_esnz_cascade_ifx_loobos_jules_es_1p0_biocrop_agexpand]] + inherit = ESNZ_CASCADE_NETCDF_COMPARISON + [[[environment]]] + OUTPUT_DIR = ../esnz_cascade_ifx_loobos_jules_es_1p0_biocrop_agexpand/output + + # GSWP2 variants + [[nccmp_esnz_cascade_ifx_gswp2]] + inherit = ESNZ_CASCADE_NETCDF_COMPARISON + [[[environment]]] + OUTPUT_DIR = ../esnz_cascade_ifx_gswp2_${CYLC_TASK_PARAM_gswp2_single}/output + + [[nccmp_esnz_cascade_ifx_gswp2_irrig_limit_river_storage]] + inherit = ESNZ_CASCADE_NETCDF_COMPARISON + [[[environment]]] + OUTPUT_DIR = ../esnz_cascade_ifx_gswp2_irrig_limit_${CYLC_TASK_PARAM_gswp2_irrig}_river_storage/output + + [[nccmp_esnz_cascade_ifx_gswp2_es]] + inherit = ESNZ_CASCADE_NETCDF_COMPARISON + [[[environment]]] + OUTPUT_DIR = ../esnz_cascade_ifx_gswp2_es_${CYLC_TASK_PARAM_gswp2_es_1p1}/output + + # Eraint variants + [[nccmp_esnz_cascade_ifx_eraint]] + inherit = ESNZ_CASCADE_NETCDF_COMPARISON + [[[environment]]] + OUTPUT_DIR = ../esnz_cascade_ifx_eraint_${CYLC_TASK_PARAM_eraint_tests}/output + +############################################################################### +## Housekeeping jobs +############################################################################### + + [[ESNZ_CASCADE_HOUSEKEEPING]] + inherit = ESNZ_CASCADE_BG, HOUSEKEEPING + + # Loobos variants + [[housekeep_esnz_cascade_ifx_loobos]] + inherit = ESNZ_CASCADE_HOUSEKEEPING + [[[environment]]] + DIR1 = ../esnz_cascade_ifx_loobos_${CYLC_TASK_PARAM_loobos_single} + + [[housekeep_esnz_cascade_ifx_loobos_spinup]] + inherit = ESNZ_CASCADE_HOUSEKEEPING + [[[environment]]] + DIR1 = ../esnz_cascade_ifx_loobos_${CYLC_TASK_PARAM_loobos_with_spinup}_spinup + + [[housekeep_esnz_cascade_ifx_loobos]] + inherit = ESNZ_CASCADE_HOUSEKEEPING + [[[environment]]] + DIR1 = ../esnz_cascade_ifx_loobos_${CYLC_TASK_PARAM_loobos_with_spinup} + + [[housekeep_esnz_cascade_ifx_loobos]] + inherit = ESNZ_CASCADE_HOUSEKEEPING + [[[environment]]] + DIR1 = ../esnz_cascade_ifx_loobos_${CYLC_TASK_PARAM_loobos_jules_c1p1} + + [[housekeep_esnz_cascade_ifx_loobos_jules_es_1p0_biocrop_agexpand]] + inherit = ESNZ_CASCADE_HOUSEKEEPING + [[[environment]]] + DIR1 = ../esnz_cascade_ifx_loobos_jules_es_1p0_biocrop_agexpand + + # GSWP2 variants + [[housekeep_esnz_cascade_ifx_gswp2]] + inherit = ESNZ_CASCADE_HOUSEKEEPING + [[[environment]]] + DIR1 = ../esnz_cascade_ifx_gswp2_${CYLC_TASK_PARAM_gswp2_single} + + [[housekeep_esnz_cascade_ifx_gswp2_spinup]] + inherit = ESNZ_CASCADE_HOUSEKEEPING + [[[environment]]] + DIR1 = ../esnz_cascade_ifx_gswp2_${CYLC_TASK_PARAM_gswp2_with_spinup}_spinup + + [[housekeep_esnz_cascade_ifx_gswp2_irrig_limit_river_storage]] + inherit = ESNZ_CASCADE_HOUSEKEEPING + [[[environment]]] + DIR1 = ../esnz_cascade_ifx_gswp2_irrig_limit_${CYLC_TASK_PARAM_gswp2_irrig}_river_storage + + [[housekeep_esnz_cascade_ifx_gswp2_es]] + inherit = ESNZ_CASCADE_HOUSEKEEPING + [[[environment]]] + DIR1 = ../esnz_cascade_ifx_gswp2_es_${CYLC_TASK_PARAM_gswp2_es_1p1} + + # Eraint variants + [[housekeep_esnz_cascade_ifx_eraint]] + inherit = ESNZ_CASCADE_HOUSEKEEPING + [[[environment]]] + DIR1 = ../esnz_cascade_ifx_eraint_${CYLC_TASK_PARAM_eraint_tests} diff --git a/rose-stem/include/esnz/runtime.cylc b/rose-stem/include/esnz/runtime.cylc new file mode 100644 index 00000000..08a97938 --- /dev/null +++ b/rose-stem/include/esnz/runtime.cylc @@ -0,0 +1,2 @@ +# Include Cascade definitions +%include 'include/esnz/runtime-cascade.cylc' diff --git a/rose-stem/include/graph.cylc b/rose-stem/include/graph.cylc index cf452bbd..55f6adb3 100644 --- a/rose-stem/include/graph.cylc +++ b/rose-stem/include/graph.cylc @@ -12,8 +12,8 @@ %include 'include/vm/graph.cylc' {% elif SITE == 'jasmin' %} %include 'include/jasmin/graph.cylc' -{% elif SITE == 'niwa' %} -%include 'include/niwa/graph.cylc' +{% elif SITE == 'esnz' %} +%include 'include/esnz/graph.cylc' {% elif SITE == 'cehwl1' %} %include 'include/cehwl1/graph.cylc' {% elif SITE == 'nci' %} diff --git a/rose-stem/include/jasmin/graph.cylc b/rose-stem/include/jasmin/graph.cylc index 1c888486..e39a213d 100644 --- a/rose-stem/include/jasmin/graph.cylc +++ b/rose-stem/include/jasmin/graph.cylc @@ -17,6 +17,11 @@ "loobos_gl8_medlyn" : "remote_init_jasmin => extract_source => fcm_make_debug => \ loobos_gl8_medlyn => nccmp_loobos_gl8_medlyn => housekeep_loobos_gl8_medlyn", + "loobos_gl8_irrigon_5050irrigtiles" : "remote_init_jasmin => extract_source => fcm_make_debug => \ + loobos_gl8_irrigon_5050irrigtiles => \ + nccmp_loobos_gl8_irrigon_5050irrigtiles => \ + housekeep_loobos_gl8_irrigon_5050irrigtiles", + "loobos_vegdrag" : "remote_init_jasmin => extract_source => fcm_make_debug => \ loobos_vegdrag => nccmp_loobos_vegdrag => housekeep_loobos_vegdrag", @@ -221,6 +226,7 @@ "all" : ["loobos", "gswp2", "eraint", "gswp2_es", "imogen"], "loobos" : ["loobos_gl4", "loobos_gl4_cable", "loobos_gl7", "loobos_gl8", "loobos_gl8_medlyn", + "loobos_gl8_irrigon_5050irrigtiles", "loobos_vegdrag", "loobos_euro4", "loobos_forecast", "loobos_ukv", "loobos_trif", "loobos_crops", "loobos_prescribe_sthuf", "loobos_fire", "loobos_daily_disagg", "loobos_julesc", "loobos_jules_layeredcn", "loobos_irrig","loobos_irrig_nirrtile", diff --git a/rose-stem/include/jasmin/runtime.cylc b/rose-stem/include/jasmin/runtime.cylc index d50cd637..3ea1534f 100644 --- a/rose-stem/include/jasmin/runtime.cylc +++ b/rose-stem/include/jasmin/runtime.cylc @@ -129,6 +129,12 @@ [[loobos_gl8_medlyn]] inherit = LOOBOS, JASMIN_LOOBOS + [[loobos_gl8_irrigon_5050irrigtiles]] + inherit = LOOBOS, JASMIN_LOOBOS + [[[environment]]] + ROSE_TASK_APP = loobos_gl8 + ROSE_APP_OPT_CONF_KEYS = irrigon_5050irrigtiles + [[loobos_vegdrag]] inherit = LOOBOS, JASMIN_LOOBOS @@ -485,6 +491,11 @@ [[[environment]]] OUTPUT_DIR = ../loobos_gl8_medlyn/output + [[nccmp_loobos_gl8_irrigon_5050irrigtiles]] + inherit = KGO_CHECK, JASMIN_NETCDF_COMPARISON + [[[environment]]] + OUTPUT_DIR = ../loobos_gl8_irrigon_5050irrigtiles/output + [[nccmp_loobos_vegdrag]] inherit = KGO_CHECK, JASMIN_NETCDF_COMPARISON [[[environment]]] @@ -777,6 +788,11 @@ inherit = HOUSEKEEPING, JASMIN_LOTUS [[[environment]]] DIR1 = ../loobos_gl8_medlyn + + [[housekeep_loobos_gl8_irrigon_5050irrigtiles]] + inherit = HOUSEKEEPING, JASMIN_LOTUS + [[[environment]]] + DIR1 = ../loobos_gl8_irrigon_5050irrigtiles [[housekeep_loobos_vegdrag]] inherit = HOUSEKEEPING, JASMIN_LOTUS diff --git a/rose-stem/include/meto/graph-azspice-gnu.cylc b/rose-stem/include/meto/graph-azspice-gnu.cylc index 72bd68cc..6bfe9647 100644 --- a/rose-stem/include/meto/graph-azspice-gnu.cylc +++ b/rose-stem/include/meto/graph-azspice-gnu.cylc @@ -41,6 +41,11 @@ nccmp_meto_azspice_gnu_loobos_gl8_medlyn => \ housekeep_meto_azspice_gnu_loobos_gl8_medlyn", + "meto_azspice_gnu_loobos_gl8_irrigon_5050irrigtiles" : loobos_build + " => \ + meto_azspice_gnu_loobos_gl8_irrigon_5050irrigtiles => \ + nccmp_meto_azspice_gnu_loobos_gl8_irrigon_5050irrigtiles => \ + housekeep_meto_azspice_gnu_loobos_gl8_irrigon_5050irrigtiles", + "meto_azspice_gnu_loobos_vegdrag" : loobos_build + " => \ meto_azspice_gnu_loobos_vegdrag => \ nccmp_meto_azspice_gnu_loobos_vegdrag => \ @@ -421,6 +426,7 @@ "meto_azspice_gnu_loobos_gl4_cable", "meto_azspice_gnu_loobos_gl8", "meto_azspice_gnu_loobos_gl8_medlyn", + "meto_azspice_gnu_loobos_gl8_irrigon_5050irrigtiles", "meto_azspice_gnu_loobos_vegdrag", "meto_azspice_gnu_loobos_euro4", "meto_azspice_gnu_loobos_forecast", "meto_azspice_gnu_loobos_ukv", diff --git a/rose-stem/include/meto/graph-ex1a-cce.cylc b/rose-stem/include/meto/graph-ex1a-cce.cylc index c0c0f93b..fc75a68d 100644 --- a/rose-stem/include/meto/graph-ex1a-cce.cylc +++ b/rose-stem/include/meto/graph-ex1a-cce.cylc @@ -27,7 +27,12 @@ nccmp_meto_ex1a_cce_loobos_gl8_medlyn => \ housekeep_meto_ex1a_cce_loobos_gl8_medlyn", - "meto_ex1a_cce_loobos_vegdrag" : "remote_init_ex1a & extract_source => extract_source_ex1a => fcm_make_meto_ex1a_cce_debug=> \ + "meto_ex1a_cce_loobos_gl8_irrigon_5050irrigtiles" : "remote_init_ex1a & extract_source => extract_source_ex1a => fcm_make_meto_ex1a_cce_debug => \ + meto_ex1a_cce_loobos_gl8_irrigon_5050irrigtiles => \ + nccmp_meto_ex1a_cce_loobos_gl8_irrigon_5050irrigtiles => \ + housekeep_meto_ex1a_cce_loobos_gl8_irrigon_5050irrigtiles", + + "meto_ex1a_cce_loobos_vegdrag" : "remote_init_ex1a & extract_source => extract_source_ex1a => fcm_make_meto_ex1a_cce_debug => \ meto_ex1a_cce_loobos_vegdrag => \ nccmp_meto_ex1a_cce_loobos_vegdrag => \ housekeep_meto_ex1a_cce_loobos_vegdrag", @@ -397,6 +402,7 @@ "ex1a_cce" : ["ex1a_cce_loobos", "ex1a_cce_gswp2", "ex1a_cce_gswp2_es", "ex1a_cce_eraint", "ex1a_cce_imogen", "ex1a_cce_surf"], "ex1a_cce_loobos" : ["meto_ex1a_cce_loobos_gl7", "meto_ex1a_cce_loobos_gl8", "meto_ex1a_cce_loobos_gl8_medlyn", + "meto_ex1a_cce_loobos_gl8_irrigon_5050irrigtiles", "meto_ex1a_cce_loobos_vegdrag", "meto_ex1a_cce_loobos_euro4", "meto_ex1a_cce_loobos_forecast", "meto_ex1a_cce_loobos_ukv", "meto_ex1a_cce_loobos_trif", "meto_ex1a_cce_loobos_crops", diff --git a/rose-stem/include/meto/graph-ex1a-gfortran.cylc b/rose-stem/include/meto/graph-ex1a-gfortran.cylc index b7f890eb..41af689c 100644 --- a/rose-stem/include/meto/graph-ex1a-gfortran.cylc +++ b/rose-stem/include/meto/graph-ex1a-gfortran.cylc @@ -27,6 +27,11 @@ nccmp_meto_ex1a_gfortran_loobos_gl8_medlyn => \ housekeep_meto_ex1a_gfortran_loobos_gl8_medlyn", + "meto_ex1a_gfortran_loobos_gl8_irrigon_5050irrigtiles" : "remote_init_ex1a & extract_source => extract_source_ex1a => fcm_make_meto_ex1a_gfortran_debug => \ + meto_ex1a_gfortran_loobos_gl8_irrigon_5050irrigtiles => \ + nccmp_meto_ex1a_gfortran_loobos_gl8_irrigon_5050irrigtiles => \ + housekeep_meto_ex1a_gfortran_loobos_gl8_irrigon_5050irrigtiles", + "meto_ex1a_gfortran_loobos_vegdrag" : "remote_init_ex1a & extract_source => extract_source_ex1a => fcm_make_meto_ex1a_gfortran_debug => \ meto_ex1a_gfortran_loobos_vegdrag => \ nccmp_meto_ex1a_gfortran_loobos_vegdrag => \ @@ -309,6 +314,7 @@ "ex1a_gfortran_gswp2_es", "ex1a_gfortran_imogen"], "ex1a_gfortran_loobos" : ["meto_ex1a_gfortran_loobos_gl7", "meto_ex1a_gfortran_loobos_gl8", "meto_ex1a_gfortran_loobos_gl8_medlyn", + "meto_ex1a_gfortran_loobos_gl8_irrigon_5050irrigtiles", "meto_ex1a_gfortran_loobos_vegdrag", "meto_ex1a_gfortran_loobos_euro4", "meto_ex1a_gfortran_loobos_forecast", "meto_ex1a_gfortran_loobos_ukv", "meto_ex1a_gfortran_loobos_trif", "meto_ex1a_gfortran_loobos_crops", diff --git a/rose-stem/include/meto/runtime-azspice-fcm-make-gnu.cylc b/rose-stem/include/meto/runtime-azspice-fcm-make-gnu.cylc index 9a5551db..304a4c10 100644 --- a/rose-stem/include/meto/runtime-azspice-fcm-make-gnu.cylc +++ b/rose-stem/include/meto/runtime-azspice-fcm-make-gnu.cylc @@ -9,7 +9,7 @@ inherit = METO_AZSPICE_GNU_BUILD pre-script = """ module purge - module load um/vn14.0 + module load um/vn14.2 module list 2>&1 """ @@ -17,7 +17,7 @@ inherit = METO_AZSPICE_GNU_BUILD pre-script = """ module purge - module load um/vn14.0 + module load um/vn14.2 module list 2>&1 """ @@ -121,7 +121,13 @@ [[[environment]]] ROSE_TASK_APP = loobos_gl8_medlyn - [[meto_azspice_gnu_loobos_vegdrag]] + [[meto_azspice_gnu_loobos_gl8_irrigon_5050irrigtiles]] + inherit = METO_AZSPICE_GNU_LOOBOS + [[[environment]]] + ROSE_TASK_APP = loobos_gl8 + ROSE_APP_OPT_CONF_KEYS=irrigon_5050irrigtiles + + [[meto_azspice_gnu_loobos_vegdrag]] inherit = METO_AZSPICE_GNU_LOOBOS [[[environment]]] ROSE_TASK_APP = loobos_vegdrag @@ -669,6 +675,11 @@ codecov -prj JULES -dpi $CYLC_SUITE_SHARE_DIR/coverage/pgopti.dpi -spi $CYLC_SUI [[[environment]]] OUTPUT_DIR = ../meto_azspice_gnu_loobos_gl8_medlyn/output + [[nccmp_meto_azspice_gnu_loobos_gl8_irrigon_5050irrigtiles]] + inherit = METO_AZSPICE_GNU_NETCDF_COMPARISON + [[[environment]]] + OUTPUT_DIR = ../meto_azspice_gnu_loobos_gl8_irrigon_5050irrigtiles/output + [[nccmp_meto_azspice_gnu_loobos_vegdrag]] inherit = METO_AZSPICE_GNU_NETCDF_COMPARISON [[[environment]]] @@ -1025,6 +1036,11 @@ codecov -prj JULES -dpi $CYLC_SUITE_SHARE_DIR/coverage/pgopti.dpi -spi $CYLC_SUI [[[environment]]] DIR1 = ../meto_azspice_gnu_loobos_gl8_medlyn + [[housekeep_meto_azspice_gnu_loobos_gl8_irrigon_5050irrigtiles]] + inherit = METO_AZSPICE_GNU_HOUSEKEEPING + [[[environment]]] + DIR1 = ../meto_azspice_gnu_loobos_gl8_irrigon_5050irrigtiles + [[housekeep_meto_azspice_gnu_loobos_vegdrag]] inherit = METO_AZSPICE_GNU_HOUSEKEEPING [[[environment]]] diff --git a/rose-stem/include/meto/runtime-ex1a-cce.cylc b/rose-stem/include/meto/runtime-ex1a-cce.cylc index 0b1f799f..027b4a40 100644 --- a/rose-stem/include/meto/runtime-ex1a-cce.cylc +++ b/rose-stem/include/meto/runtime-ex1a-cce.cylc @@ -100,6 +100,12 @@ [[[environment]]] ROSE_TASK_APP = loobos_gl8_medlyn + [[meto_ex1a_cce_loobos_gl8_irrigon_5050irrigtiles]] + inherit = METO_EX1A_CCE_LOOBOS + [[[environment]]] + ROSE_TASK_APP = loobos_gl8 + ROSE_APP_OPT_CONF_KEYS=irrigon_5050irrigtiles + [[meto_ex1a_cce_loobos_vegdrag]] inherit = METO_EX1A_CCE_LOOBOS [[[environment]]] @@ -636,6 +642,11 @@ [[[environment]]] OUTPUT_DIR = ../meto_ex1a_cce_loobos_gl8_medlyn/output + [[nccmp_meto_ex1a_cce_loobos_gl8_irrigon_5050irrigtiles]] + inherit = METO_EX1A_NETCDF_COMPARISON + [[[environment]]] + OUTPUT_DIR = ../meto_ex1a_cce_loobos_gl8_irrigon_5050irrigtiles/output + [[nccmp_meto_ex1a_cce_loobos_vegdrag]] inherit = METO_EX1A_NETCDF_COMPARISON [[[environment]]] @@ -1009,6 +1020,11 @@ [[[environment]]] DIR1 = ../meto_ex1a_cce_loobos_gl8_medlyn + [[housekeep_meto_ex1a_cce_loobos_gl8_irrigon_5050irrigtiles]] + inherit = METO_EX1A_HOUSEKEEPING + [[[environment]]] + DIR1 = ../meto_ex1a_cce_loobos_gl8_irrigon_5050irrigtiles + [[housekeep_meto_ex1a_cce_loobos_vegdrag]] inherit = METO_EX1A_HOUSEKEEPING [[[environment]]] diff --git a/rose-stem/include/meto/runtime-ex1a-gfortran.cylc b/rose-stem/include/meto/runtime-ex1a-gfortran.cylc index 3c83f270..11d09384 100644 --- a/rose-stem/include/meto/runtime-ex1a-gfortran.cylc +++ b/rose-stem/include/meto/runtime-ex1a-gfortran.cylc @@ -75,6 +75,12 @@ [[[environment]]] ROSE_TASK_APP = loobos_gl8_medlyn + [[meto_ex1a_gfortran_loobos_gl8_irrigon_5050irrigtiles]] + inherit = METO_EX1A_GFORTRAN_LOOBOS + [[[environment]]] + ROSE_TASK_APP = loobos_gl8 + ROSE_APP_OPT_CONF_KEYS=irrigon_5050irrigtiles + [[meto_ex1a_gfortran_loobos_vegdrag]] inherit = METO_EX1A_GFORTRAN_LOOBOS [[[environment]]] @@ -528,6 +534,11 @@ [[[environment]]] OUTPUT_DIR = ../meto_ex1a_gfortran_loobos_gl8_medlyn/output + [[nccmp_meto_ex1a_gfortran_loobos_gl8_irrigon_5050irrigtiles]] + inherit = METO_EX1A_NETCDF_COMPARISON + [[[environment]]] + OUTPUT_DIR = ../meto_ex1a_gfortran_loobos_gl8_irrigon_5050irrigtiles/output + [[nccmp_meto_ex1a_gfortran_loobos_vegdrag]] inherit = METO_EX1A_NETCDF_COMPARISON [[[environment]]] @@ -842,6 +853,11 @@ [[[environment]]] DIR1 = ../meto_ex1a_gfortran_loobos_gl8_medlyn + [[housekeep_meto_ex1a_gfortran_loobos_gl8_irrigon_5050irrigtiles]] + inherit = METO_EX1A_HOUSEKEEPING + [[[environment]]] + DIR1 = ../meto_ex1a_gfortran_loobos_gl8_irrigon_5050irrigtiles + [[housekeep_meto_ex1a_gfortran_loobos_vegdrag]] inherit = METO_EX1A_HOUSEKEEPING [[[environment]]] diff --git a/rose-stem/include/nci/graph-gfortran.cylc b/rose-stem/include/nci/graph-gfortran.cylc index bd9d15a1..18f2b9ed 100644 --- a/rose-stem/include/nci/graph-gfortran.cylc +++ b/rose-stem/include/nci/graph-gfortran.cylc @@ -27,6 +27,12 @@ nccmp_nci_gfortran_loobos_gl8_medlyn => \ housekeep_nci_gfortran_loobos_gl8_medlyn", + "nci_gfortran_loobos_gl8_irrigon_5050irrigtiles" : "remote_init_nci => extract_source => fcm_make_nci_gfortran_debug => \ + nci_gfortran_loobos_gl8_irrigon_5050irrigtiles => \ + nccmp_nci_gfortran_loobos_gl8_irrigon_5050irrigtiles => \ + housekeep_nci_gfortran_loobos_gl8_irrigon_5050irrigtiles", + + "nci_gfortran_loobos_vegdrag" : "remote_init_nci => extract_source => fcm_make_nci_gfortran_debug => \ nci_gfortran_loobos_vegdrag => \ nccmp_nci_gfortran_loobos_vegdrag => \ @@ -265,7 +271,9 @@ "gfortran_loobos" : ["nci_gfortran_loobos_gl4", "nci_gfortran_loobos_gl4_cable", "nci_gfortran_loobos_gl7", "nci_gfortran_loobos_gl8", - "nci_gfortran_loobos_gl8_medlyn", "nci_gfortran_loobos_vegdrag", + "nci_gfortran_loobos_gl8_medlyn", + "nci_gfortran_loobos_gl8_irrigon_5050irrigtiles", + "nci_gfortran_loobos_vegdrag", "nci_gfortran_loobos_euro4", "nci_gfortran_loobos_forecast", "nci_gfortran_loobos_ukv", "nci_gfortran_loobos_trif", "nci_gfortran_loobos_crops", "nci_gfortran_loobos_prescribe_sthuf", diff --git a/rose-stem/include/nci/graph-intel.cylc b/rose-stem/include/nci/graph-intel.cylc index bcc03d75..45ab94b3 100644 --- a/rose-stem/include/nci/graph-intel.cylc +++ b/rose-stem/include/nci/graph-intel.cylc @@ -37,6 +37,11 @@ nccmp_nci_intel_loobos_gl8_medlyn => \ housekeep_nci_intel_loobos_gl8_medlyn", + "nci_intel_loobos_gl8_irrigon_5050irrigtiles" : debug_build + " => \ + nci_intel_loobos_gl8_irrigon_5050irrigtiles => \ + nccmp_nci_intel_loobos_gl8_irrigon_5050irrigtiles => \ + housekeep_nci_intel_loobos_gl8_irrigon_5050irrigtiles", + "nci_intel_loobos_vegdrag" : debug_build + " => \ nci_intel_loobos_vegdrag => \ nccmp_nci_intel_loobos_vegdrag => \ @@ -302,7 +307,9 @@ "intel_loobos" : ["nci_intel_loobos_gl4", "nci_intel_loobos_gl4_cable", "nci_intel_loobos_gl7", "nci_intel_loobos_gl8", - "nci_intel_loobos_gl8_medlyn", "nci_intel_loobos_vegdrag", + "nci_intel_loobos_gl8_medlyn", + "nci_intel_loobos_gl8_irrigon_5050irrigtiles", + "nci_intel_loobos_vegdrag", "nci_intel_loobos_euro4", "nci_intel_loobos_forecast", "nci_intel_loobos_ukv", "nci_intel_loobos_trif", "nci_intel_loobos_crops", "nci_intel_loobos_prescribe_sthuf", diff --git a/rose-stem/include/nci/runtime-gfortran.cylc b/rose-stem/include/nci/runtime-gfortran.cylc index dcbe8c71..36284047 100644 --- a/rose-stem/include/nci/runtime-gfortran.cylc +++ b/rose-stem/include/nci/runtime-gfortran.cylc @@ -52,6 +52,7 @@ inherit = NCI_GFORTRAN_LOOBOS [[[environment]]] ROSE_TASK_APP = loobos_gl7 + [[nci_gfortran_loobos_gl4_cable]] inherit = NCI_GFORTRAN_LOOBOS [[[environment]]] @@ -68,6 +69,12 @@ [[[environment]]] ROSE_TASK_APP = loobos_gl8_medlyn + [[nci_gfortran_loobos_gl8_irrigon_5050irrigtiles]] + inherit = NCI_GFORTRAN_LOOBOS + [[[environment]]] + ROSE_TASK_APP = loobos_gl8 + ROSE_APP_OPT_CONF_KEYS=irrigon_5050irrigtiles + [[nci_gfortran_loobos_vegdrag]] inherit = NCI_GFORTRAN_LOOBOS [[[environment]]] @@ -455,6 +462,11 @@ [[[environment]]] OUTPUT_DIR = ../nci_gfortran_loobos_gl8_medlyn/output + [[nccmp_nci_gfortran_loobos_gl8_irrigon_5050irrigtiles]] + inherit = NCI_GFORTRAN_NETCDF_COMPARISON + [[[environment]]] + OUTPUT_DIR = ../nci_gfortran_loobos_gl8_irrigon_5050irrigtiles/output + [[nccmp_nci_gfortran_loobos_vegdrag]] inherit = NCI_GFORTRAN_NETCDF_COMPARISON [[[environment]]] @@ -728,6 +740,11 @@ [[[environment]]] DIR1 = ../nci_gfortran_loobos_gl8_medlyn + [[housekeep_nci_gfortran_loobos_gl8_irrigon_5050irrigtiles]] + inherit = NCI_GFORTRAN_HOUSEKEEPING + [[[environment]]] + DIR1 = ../nci_gfortran_loobos_gl8_irrigon_5050irrigtiles + [[housekeep_nci_gfortran_loobos_vegdrag]] inherit = NCI_GFORTRAN_HOUSEKEEPING [[[environment]]] diff --git a/rose-stem/include/nci/runtime-intel.cylc b/rose-stem/include/nci/runtime-intel.cylc index 414b1f5f..2a598871 100644 --- a/rose-stem/include/nci/runtime-intel.cylc +++ b/rose-stem/include/nci/runtime-intel.cylc @@ -99,6 +99,12 @@ [[[environment]]] ROSE_TASK_APP = loobos_gl8_medlyn + [[nci_intel_loobos_gl8_irrigon_5050irrigtiles]] + inherit = NCI_INTEL_LOOBOS + [[[environment]]] + ROSE_TASK_APP = loobos_gl8 + ROSE_APP_OPT_CONF_KEYS=irrigon_5050irrigtiles + [[nci_intel_loobos_vegdrag]] inherit = NCI_INTEL_LOOBOS [[[environment]]] @@ -545,6 +551,11 @@ [[[environment]]] OUTPUT_DIR = ../nci_intel_loobos_gl8_medlyn/output + [[nccmp_nci_intel_loobos_gl8_irrigon_5050irrigtiles]] + inherit = NCI_INTEL_NETCDF_COMPARISON + [[[environment]]] + OUTPUT_DIR = ../nci_intel_loobos_gl8_irrigon_5050irrigtiles/output + [[nccmp_nci_intel_loobos_vegdrag]] inherit = NCI_INTEL_NETCDF_COMPARISON [[[environment]]] @@ -828,6 +839,11 @@ [[[environment]]] DIR1 = ../nci_intel_loobos_gl8_medlyn + [[housekeep_nci_intel_loobos_gl8_irrigon_5050irrigtiles]] + inherit = NCI_INTEL_HOUSEKEEPING + [[[environment]]] + DIR1 = ../nci_intel_loobos_gl8_irrigon_5050irrigtiles + [[housekeep_nci_intel_loobos_vegdrag]] inherit = NCI_INTEL_HOUSEKEEPING [[[environment]]] diff --git a/rose-stem/include/niwa/graph-cs500.cylc b/rose-stem/include/niwa/graph-cs500.cylc deleted file mode 100644 index 0ac9750f..00000000 --- a/rose-stem/include/niwa/graph-cs500.cylc +++ /dev/null @@ -1,111 +0,0 @@ -############################################################################### -## Name graphs -############################################################################### - -# The Loobos crops graph needs to be listed explicitly for the tutorial group -{%- set name_graphs_cs500 = { - - "niwa_cs500_fcm_make" : "remote_init_cs500 => fcm_make_niwa_cs500_omp - remote_init_cs500 => fcm_make_niwa_cs500_debug_noomp", - - "niwa_cs500_intel_loobos_crops" : "remote_init_cs500 => fcm_make_niwa_cs500_intel_debug_noomp => - niwa_cs500_intel_loobos_crops => - nccmp_niwa_cs500_intel_loobos_crops => - housekeep_niwa_cs500_intel_loobos_crops", - - "niwa_cs500_intel_loobos_jules_es_1p0_biocrop" : "remote_init_cs500 => fcm_make_niwa_cs500_intel_debug_noomp => \ - niwa_cs500_intel_loobos_jules_es_1p0_biocrop_spinup => \ - niwa_cs500_intel_loobos_jules_es_1p0_biocrop \ - & niwa_cs500_intel_loobos_jules_es_1p0_biocrop_agexpand => \ - nccmp_niwa_cs500_intel_loobos_jules_es_1p0_biocrop | - & nccmp_niwa_cs500_intel_loobos_jules_es_1p0_biocrop_agexpand => \ - housekeep_niwa_cs500_intel_loobos_jules_es_1p0_biocrop_spinup \ - & housekeep_niwa_cs500_intel_loobos_jules_es_1p0_biocrop \ - & housekeep_niwa_cs500_intel_loobos_jules_es_1p0_biocrop_agexpand", - - "niwa_cs500_intel_loobos_single" : "remote_init_cs500 => fcm_make_niwa_cs500_intel_debug_noomp => - niwa_cs500_intel_loobos => - nccmp_niwa_cs500_intel_loobos => - housekeep_niwa_cs500_intel_loobos", - - "niwa_cs500_intel_loobos_with_spinup" : "remote_init_cs500 => fcm_make_niwa_cs500_intel_debug_noomp => - niwa_cs500_intel_loobos_spinup => - niwa_cs500_intel_loobos => - nccmp_niwa_cs500_intel_loobos => - housekeep_niwa_cs500_intel_loobos_spinup & \ - housekeep_niwa_cs500_intel_loobos - - remote_init_cs500 => fcm_make_niwa_cs500_intel_debug_noomp => - niwa_cs500_intel_loobos_julesc_spinup => - niwa_cs500_intel_loobos => - nccmp_niwa_cs500_intel_loobos => - housekeep_niwa_cs500_intel_loobos_julesc_spinup & \ - housekeep_niwa_cs500_intel_loobos", - - "niwa_cs500_intel_gswp2_single" : "remote_init_cs500 => fcm_make_niwa_cs500_intel_omp => - niwa_cs500_intel_gswp2 => - nccmp_niwa_cs500_intel_gswp2 => - housekeep_niwa_cs500_intel_gswp2", - - "niwa_cs500_intel_gswp2_es_1p1" : "remote_init_cs500 => fcm_make_niwa_cs500_intel_omp => - niwa_cs500_intel_gswp2_es => - nccmp_niwa_cs500_intel_gswp2_es => - housekeep_niwa_cs500_intel_gswp2_es", - - "niwa_cs500_intel_gswp2_with_spinup" : "remote_init_cs500 => fcm_make_niwa_cs500_intel_omp => - niwa_cs500_intel_gswp2_spinup => - niwa_cs500_intel_gswp2_restart => - nccmp_niwa_cs500_intel_gswp2_restart => - housekeep_niwa_cs500_intel_gswp2_spinup => - housekeep_niwa_cs500_intel_gswp2_restart - - remote_init_cs500 => fcm_make_niwa_cs500_intel_omp => - niwa_cs500_intel_gswp2_trip_spinup => - niwa_cs500_intel_gswp2_irrig_limit_river_storage => - nccmp_niwa_cs500_intel_gswp2_irrig_limit_river_storage => - housekeep_niwa_cs500_intel_gswp2_trip_spinup => - housekeep_niwa_cs500_intel_gswp2_irrig_limit_river_storage", - - "niwa_cs500_intel_eraint" : "remote_init_cs500 => fcm_make_niwa_cs500_intel_omp => - niwa_cs500_intel_eraint => - nccmp_niwa_cs500_intel_eraint => - housekeep_niwa_cs500_intel_eraint", - - "niwa_cs500_intel_imogen_with_spinup" : "remote_init_cs500 => fcm_make_niwa_cs500_intel_omp => - niwa_cs500_intel_imogen_spinup => - niwa_cs500_intel_imogen => - nccmp_niwa_cs500_intel_imogen => - housekeep_niwa_cs500_intel_imogen_spinup & \ - housekeep_niwa_cs500_intel_imogen", - - } -%} - -############################################################################### -## Group definitions -############################################################################### - -{%- set groups_cs500 = { - - "niwa_cs500_all" : ["niwa_cs500_build", - "niwa_cs500_loobos", - "niwa_cs500_gswp2", - "niwa_cs500_eraint", - "niwa_cs500_imogen", - "niwa_cs500_loobos_jules_es_1p0_biocrop"], - - "niwa_cs500_build" : ["niwa_cs500_fcm_make"], - - "niwa_cs500_loobos" : ["niwa_cs500_intel_loobos_single", - "niwa_cs500_intel_loobos_with_spinup"], - - "niwa_cs500_gswp2" : ["niwa_cs500_intel_gswp2_single", - "niwa_cs500_intel_gswp2_with_spinup", - "niwa_cs500_intel_gswp2_es_1p1"], - - "niwa_cs500_eraint" : ["niwa_cs500_intel_eraint"], - - "niwa_cs500_imogen" : ["niwa_cs500_intel_imogen_with_spinup"], - - } -%} diff --git a/rose-stem/include/niwa/graph-xc50.cylc b/rose-stem/include/niwa/graph-xc50.cylc deleted file mode 100644 index 742f52e9..00000000 --- a/rose-stem/include/niwa/graph-xc50.cylc +++ /dev/null @@ -1,110 +0,0 @@ -############################################################################### -## Name graphs -############################################################################### - -# The Loobos crops graph needs to be listed explicitly for the tutorial group -{%- set name_graphs_xc50 = { - - "niwa_xc50_fcm_make" : "remote_init_xc50 => fcm_make_niwa_xc50_omp - remote_init_xc50 => fcm_make_niwa_xc50_debug_noomp", - - "niwa_xc50_intel_loobos_jules_es_1p0_biocrop" : "remote_init_xc50 => fcm_make_niwa_xc50_intel_debug_noomp => \ - niwa_xc50_intel_loobos_jules_es_1p0_biocrop_spinup => niwa_xc50_intel_loobos_jules_es_1p0_biocrop \ - & niwa_xc50_intel_loobos_jules_es_1p0_biocrop_agexpand => \ - nccmp_niwa_xc50_intel_loobos_jules_es_1p0_biocrop \ - & nccmp_niwa_xc50_intel_loobos_jules_es_1p0_biocrop_agexpand => \ - housekeep_niwa_xc50_intel_loobos_jules_es_1p0_biocrop_spinup \ - & housekeep_niwa_xc50_intel_loobos_jules_es_1p0_biocrop \ - & housekeep_niwa_xc50_intel_loobos_jules_es_1p0_biocrop_agexpand", - - "niwa_xc50_intel_loobos_crops" : "remote_init_xc50 => fcm_make_niwa_xc50_intel_debug_noomp => - niwa_xc50_intel_loobos_crops => - nccmp_niwa_xc50_intel_loobos_crops => - housekeep_niwa_xc50_intel_loobos_crops", - - "niwa_xc50_intel_loobos_single" : "remote_init_xc50 => fcm_make_niwa_xc50_intel_debug_noomp => - niwa_xc50_intel_loobos => - nccmp_niwa_xc50_intel_loobos => - housekeep_niwa_xc50_intel_loobos", - - "niwa_xc50_intel_loobos_with_spinup" : "remote_init_xc50 => fcm_make_niwa_xc50_intel_debug_noomp => - niwa_xc50_intel_loobos_spinup => - niwa_xc50_intel_loobos => - nccmp_niwa_xc50_intel_loobos => - housekeep_niwa_xc50_intel_loobos_spinup & \ - housekeep_niwa_xc50_intel_loobos - - remote_init_xc50 => fcm_make_niwa_xc50_intel_debug_noomp => - niwa_xc50_intel_loobos_julesc_spinup => - niwa_xc50_intel_loobos => - nccmp_niwa_xc50_intel_loobos => - housekeep_niwa_xc50_intel_loobos_julesc_spinup & \ - housekeep_niwa_xc50_intel_loobos", - - "niwa_xc50_intel_gswp2_single" : "remote_init_xc50 => fcm_make_niwa_xc50_intel_omp => - niwa_xc50_intel_gswp2 => - nccmp_niwa_xc50_intel_gswp2 => - housekeep_niwa_xc50_intel_gswp2", - - "niwa_xc50_intel_gswp2_es_1p1" : "remote_init_xc50 => fcm_make_niwa_xc50_intel_omp => - niwa_xc50_intel_gswp2_es => - nccmp_niwa_xc50_intel_gswp2_es => - housekeep_niwa_xc50_intel_gswp2_es", - - "niwa_xc50_intel_gswp2_with_spinup" : "remote_init_xc50 => fcm_make_niwa_xc50_intel_omp => - niwa_xc50_intel_gswp2_spinup => - niwa_xc50_intel_gswp2_restart => - nccmp_niwa_xc50_intel_gswp2_restart => - housekeep_niwa_xc50_intel_gswp2_spinup => - housekeep_niwa_xc50_intel_gswp2_restart - - remote_init_xc50 => fcm_make_niwa_xc50_intel_omp => - niwa_xc50_intel_gswp2_trip_spinup => - niwa_xc50_intel_gswp2_irrig_limit_river_storage => - nccmp_niwa_xc50_intel_gswp2_irrig_limit_river_storage => - housekeep_niwa_xc50_intel_gswp2_trip_spinup => - housekeep_niwa_xc50_intel_gswp2_irrig_limit_river_storage", - - "niwa_xc50_intel_eraint" : "remote_init_xc50 => fcm_make_niwa_xc50_intel_omp => - niwa_xc50_intel_eraint => - nccmp_niwa_xc50_intel_eraint => - housekeep_niwa_xc50_intel_eraint", - - "niwa_xc50_intel_imogen_with_spinup" : "remote_init_xc50 => fcm_make_niwa_xc50_intel_omp => - niwa_xc50_intel_imogen_spinup => - niwa_xc50_intel_imogen => - nccmp_niwa_xc50_intel_imogen => - housekeep_niwa_xc50_intel_imogen_spinup & \ - housekeep_niwa_xc50_intel_imogen", - - } -%} - -############################################################################### -## Group definitions -############################################################################### - -{%- set groups_xc50 = { - - "niwa_xc50_all" : ["niwa_xc50_build", - "niwa_xc50_loobos", - "niwa_xc50_gswp2", - "niwa_xc50_eraint", - "niwa_xc50_imogen", - "niwa_xc50_loobos_jules_es_1p0_biocrop"], - - "niwa_xc50_build" : ["niwa_xc50_fcm_make"], - - "niwa_xc50_loobos" : ["niwa_xc50_intel_loobos_single", - "niwa_xc50_intel_loobos_with_spinup"], - - "niwa_xc50_gswp2" : ["niwa_xc50_intel_gswp2_single", - "niwa_xc50_intel_gswp2_with_spinup", - "niwa_xc50_intel_gswp2_es_1p1"], - - "niwa_xc50_eraint" : ["niwa_xc50_intel_eraint"], - - "niwa_xc50_imogen" : ["niwa_xc50_intel_imogen_with_spinup"], - - } -%} diff --git a/rose-stem/include/niwa/parameters.cylc b/rose-stem/include/niwa/parameters.cylc deleted file mode 100644 index 6891d6f4..00000000 --- a/rose-stem/include/niwa/parameters.cylc +++ /dev/null @@ -1,19 +0,0 @@ -[task parameters] - compiler_xc50 = cce, gfortran, intel - compiler_cs500 = gfortran, intel - # Loobos test variants - loobos_single = gl4, gl4_cable, gl7, gl8, vegdrag, euro4, forecast, ukv, crops, \ - prescribe_sthuf, irrig, daily_disagg, \ - crm1_traitF, crm4_traitF, \ - crm5_traitF, crm6_traitF, crm6_traitT, crm6_traitF_srfT - loobos_with_spinup = trif, julesc, jules_layeredcn, jules_cn, jules_es_1p0, fire - loobos_jules_c1p1 = jules_c1p1, jules_c1p1_fire - # GSWP2 test variants - gswp2_single = rivers, trip, closures, euro4, gl4, gl7, ukv - gswp2_es_1p1 = 1p1, curr, beta - gswp2_with_spinup = rivers, trip - gswp2_irrig = low, high - # Eraint test variants - eraint_tests = rfm_2ddata, trip_2ddata - # Imogen test variants - imogen_with_spinup = layeredc, layeredc_co2conc, layeredc_dtempg, layeredc_ch4 diff --git a/rose-stem/include/niwa/queues.cylc b/rose-stem/include/niwa/queues.cylc deleted file mode 100644 index 66f3cf04..00000000 --- a/rose-stem/include/niwa/queues.cylc +++ /dev/null @@ -1,13 +0,0 @@ - [[queues]] - [[[xc50_run]]] - limit = 5 - members = NIWA_XC50_LOOBOS, NIWA_XC50_GSWP2, NIWA_XC50_ERAINT, NIWA_XC50_IMOGEN - [[[cs500_run]]] - limit = 5 - members = NIWA_CS500_LOOBOS, NIWA_CS500_GSWP2, NIWA_CS500_ERAINT, NIWA_CS500_IMOGEN - [[[xc50_build]]] - limit = 1 - members = NIWA_XC50_BUILD - [[[cs500_build]]] - limit = 1 - members = NIWA_CS500_BUILD diff --git a/rose-stem/include/niwa/runtime-cs500.cylc b/rose-stem/include/niwa/runtime-cs500.cylc deleted file mode 100644 index 2e6cd7ee..00000000 --- a/rose-stem/include/niwa/runtime-cs500.cylc +++ /dev/null @@ -1,404 +0,0 @@ -############################################################################### -## Common classes -############################################################################### - - [[NIWA_CS500]] - [[[remote]]] - host = w-mauivlab02.maui.niwa.co.nz - - [[NIWA_CS500_SL]] - [[[job]]] - batch system = slurm - [[[directives]]] - --clusters = maui_ancil - --partition = nesi_prepost - --account = niwa00001 - --job-name = jules_test - --time = 00:06:00 - --mem-per-cpu = 1G - --hint = nomultithread - - [[remote_init_cs500]] - inherit = NIWA_CS500_SL - script = true - -# CS500 node setup -# Single OpenMP thread - [[NIWA_CS500_PARALLEL_THREADS_1]] - [[[environment]]] - OMP_NUM_THREADS = 1 - -# Single task - [[NIWA_CS500_PARALLEL_TASKS_1]] - [[[directives]]] - --nodes = 1 - --ntasks = 1 - -# 8 tasks - [[NIWA_CS500_PARALLEL_TASKS_8]] - [[[directives]]] - --nodes = 1 - --ntasks = 8 - -############################################################################### -## Extract and build jobs -############################################################################### - - [[NIWA_CS500_BUILD]] - inherit = NIWA_CS500, EXTRACT_AND_BUILD - [[[environment]]] - ROSE_TASK_N_JOBS = 6 - - [[NIWA_CS500_BUILD_gfortran]] - inherit = NIWA_CS500_BUILD - pre-script = """ - module purge - module load NIWA - module load FCM/2019.05.0-GCC-7.1.0 - module load gimpi/2018b - module load netCDF-Fortran/4.4.4-gimpi-2018b-parallel - """ - [[[environment]]] - JULES_PLATFORM = niwa-cs500-gfortran - ROSE_TASK_N_JOBS = 1 - - [[NIWA_CS500_BUILD_intel]] - inherit = NIWA_CS500_BUILD - pre-script = """ - module purge - module load NIWA - module load FCM/2019.05.0-GCC-7.1.0 - module load iimpi/2018b - module load netCDF-Fortran/4.4.4-iimpi-2018b-parallel - """ - [[[environment]]] - JULES_PLATFORM = niwa-cs500-intel - -############################################################################### -## Scripts -############################################################################### - -# Redefine site-independent SCRIPTS group to run CS500 node - [[SCRIPTS]] - inherit = None, NIWA_CS500 - -############################################################################### -## Build jobs -############################################################################### - -# Debug build without OpenMP - [[fcm_make_niwa_cs500_debug_noomp]] - inherit = NIWA_CS500_BUILD - [[[environment]]] - JULES_BUILD = debug - JULES_OMP = noomp - -# Normal build with OpenMP - [[fcm_make_niwa_cs500_omp]] - inherit = NIWA_CS500_BUILD - [[[environment]]] - JULES_BUILD = normal - JULES_OMP = omp - -############################################################################### -## Compute jobs -############################################################################### - - # Loobos variants - [[NIWA_CS500_LOOBOS]] - inherit = NIWA_CS500, NIWA_CS500_SL, NIWA_CS500_PARALLEL_TASKS_1, NIWA_CS500_PARALLEL_THREADS_1, LOOBOS, COMPUTE - pre-script = """ - module purge - module load NIWA - module load netCDF-Fortran/4.4.4-iimpi-2018b-parallel - """ - [[[environment]]] - BUILD_NAME = fcm_make_niwa_cs500_intel_debug_noomp - LOOBOS_INSTALL_DIR = /opt/niwa/um_sys/jules/benchmarking-data/loobos - - [[niwa_cs500_intel_loobos]] - inherit = NIWA_CS500_LOOBOS - [[[environment]]] - ROSE_TASK_APP = loobos_${CYLC_TASK_PARAM_loobos_single} - - [[niwa_cs500_intel_loobos]] - inherit = NIWA_CS500_LOOBOS - [[[environment]]] - ROSE_TASK_APP = loobos_gl4 - ROSE_APP_OPT_CONF_KEYS = cable - - [[niwa_cs500_intel_loobos_spinup]] - inherit = NIWA_CS500_LOOBOS - [[[environment]]] - ROSE_TASK_APP = loobos_${CYLC_TASK_PARAM_loobos_with_spinup}_spinup - - [[niwa_cs500_intel_loobos]] - inherit = NIWA_CS500_LOOBOS - [[[environment]]] - ROSE_TASK_APP = loobos_${CYLC_TASK_PARAM_loobos_with_spinup} - DUMP_FILE = ../niwa_cs500_intel_loobos_${CYLC_TASK_PARAM_loobos_with_spinup}_spinup/output/niwa_cs500_intel_loobos_${CYLC_TASK_PARAM_loobos_with_spinup}_spinup.dump.19971231.82800.nc - - [[niwa_cs500_intel_loobos]] - inherit = NIWA_CS500_LOOBOS - [[[environment]]] - ROSE_TASK_APP = loobos_${CYLC_TASK_PARAM_loobos_jules_c1p1} - DUMP_FILE = ../niwa_cs500_intel_loobos_julesc_spinup/output/niwa_cs500_intel_loobos_julesc_spinup.dump.19971231.82800.nc - - [[niwa_cs500_intel_loobos_jules_es_1p0_biocrop_spinup]] - inherit = NIWA_CS500_LOOBOS - [[[environment]]] - ROSE_TASK_APP = loobos_jules_es_1p0_biocrop_spinup - - [[niwa_cs500_intel_loobos_jules_es_1p0_biocrop]] - inherit = NIWA_CS500_LOOBOS - [[[environment]]] - ROSE_TASK_APP = loobos_jules_es_1p0_biocrop - DUMP_FILE = ../niwa_cs500_intel_loobos_jules_es_1p0_biocrop_spinup/output/niwa_cs500_intel_loobos_jules_es_1p0_biocrop_spinup.dump.19971231.82800.nc - - [[niwa_cs500_intel_loobos_jules_es_1p0_biocrop_agexpand]] - inherit = NIWA_CS500_LOOBOS - [[[environment]]] - ROSE_TASK_APP = loobos_jules_es_1p0_biocrop_agexpand - DUMP_FILE = ../niwa_cs500_intel_loobos_jules_es_1p0_biocrop_spinup/output/niwa_cs500_intel_loobos_jules_es_1p0_biocrop_spinup.dump.19971231.82800.nc - - # GSWP2 variants - [[NIWA_CS500_GSWP2]] - inherit = NIWA_CS500, NIWA_CS500_SL, NIWA_CS500_PARALLEL_TASKS_8, NIWA_CS500_PARALLEL_THREADS_1, GSWP2, COMPUTE - pre-script = """ - module purge - module load NIWA - module load netCDF-Fortran/4.4.4-iimpi-2018b-parallel - gen_gswp2_drive_file - """ - [[[environment]]] - BUILD_NAME = fcm_make_niwa_cs500_intel_omp - GSWP2_INSTALL_DIR = /opt/niwa/um_sys/jules/benchmarking-data/gswp2 - - [[niwa_cs500_intel_gswp2]] - inherit = NIWA_CS500_GSWP2 - [[[environment]]] - ROSE_TASK_APP = gswp2_${CYLC_TASK_PARAM_gswp2_single} - - [[niwa_cs500_intel_gswp2_spinup]] - inherit = NIWA_CS500_GSWP2 - [[[environment]]] - ROSE_TASK_APP = gswp2_${CYLC_TASK_PARAM_gswp2_with_spinup}_spinup - - [[niwa_cs500_intel_gswp2_restart]] - inherit = NIWA_CS500_GSWP2 - [[[environment]]] - ROSE_TASK_APP = gswp2_${CYLC_TASK_PARAM_gswp2_with_spinup}_restart - DUMP_FILE = ../niwa_cs500_intel_gswp2_${CYLC_TASK_PARAM_gswp2_with_spinup}_spinup/output/niwa_cs500_intel_gswp2_${CYLC_TASK_PARAM_gswp2_with_spinup}_spinup.dump.19820701.10800.nc - - [[niwa_cs500_intel_gswp2_irrig_limit_river_storage]] - inherit = NIWA_CS500_GSWP2 - [[[environment]]] - ROSE_TASK_APP = gswp2_irrig_limit_${CYLC_TASK_PARAM_gswp2_irrig}_river_storage - DUMP_FILE = ../niwa_cs500_intel_gswp2_trip_spinup/output/niwa_cs500_intel_gswp2_trip_spinup.dump.19820701.10800.nc - - [[niwa_cs500_intel_gswp2_es]] - inherit = NIWA_CS500_GSWP2 - [[[environment]]] - ROSE_TASK_APP = gswp2_es_1p1 - ROSE_APP_OPT_CONF_KEYS = ${CYLC_TASK_PARAM_gswp2_es_1p1} - - # Eraint variants - [[NIWA_CS500_ERAINT]] - inherit = NIWA_CS500, NIWA_CS500_SL, NIWA_CS500_PARALLEL_TASKS_8, NIWA_CS500_PARALLEL_THREADS_1, ERAINT, COMPUTE - pre-script = """ - module purge - module load NIWA - module load netCDF-Fortran/4.4.4-iimpi-2018b-parallel - """ - [[[environment]]] - BUILD_NAME = fcm_make_niwa_cs500_intel_omp - ERAINT_INSTALL_DIR = /opt/niwa/um_sys/jules/benchmarking-data/eraint - - [[niwa_cs500_intel_eraint]] - inherit = NIWA_CS500_ERAINT - [[[environment]]] - ROSE_TASK_APP = eraint_${CYLC_TASK_PARAM_eraint_tests} - DUMP_FILE = $ERAINT_INSTALL_DIR/brahma_eraint_small.dump.19951031.0.nc - - # Imogen variants - [[NIWA_CS500_IMOGEN]] - inherit = NIWA_CS500, NIWA_CS500_SL, NIWA_CS500_PARALLEL_TASKS_8, NIWA_CS500_PARALLEL_THREADS_1, IMOGEN, COMPUTE - pre-script = """ - module purge - module load NIWA - module load netCDF-Fortran/4.4.4-iimpi-2018b-parallel - """ - [[[environment]]] - BUILD_NAME = fcm_make_niwa_cs500_intel_omp - IMOGEN_INSTALL_DIR = /opt/niwa/um_sys/jules/benchmarking-data/imogen - - [[niwa_cs500_intel_imogen_spinup]] - inherit = NIWA_CS500_IMOGEN - [[[environment]]] - ROSE_TASK_APP = imogen_${CYLC_TASK_PARAM_imogen_with_spinup}_spinup - - [[niwa_cs500_intel_imogen]] - inherit = NIWA_CS500_IMOGEN - [[[environment]]] - ROSE_TASK_APP = imogen_${CYLC_TASK_PARAM_imogen_with_spinup} - DUMP_FILE = ../niwa_cs500_intel_imogen_${CYLC_TASK_PARAM_imogen_with_spinup}_spinup/output/niwa_cs500_intel_imogen_${CYLC_TASK_PARAM_imogen_with_spinup}_spinup.dump.18650101.0.nc - -############################################################################### -## Comparison jobs -############################################################################### - - [[NIWA_CS500_NETCDF_COMPARISON]] - inherit = NIWA_CS500, KGO_CHECK, COMPARISON - pre-script = """ - module purge - module load NIWA - module load nccmp/1.8.5.0-GCC-7.1.0 - """ - [[[environment]]] - CMD_CMP = nccmp -d --force - KGO_DIR = /opt/niwa/um_sys/jules/rose-stem-kgo/{{ KGO_VERSION }} - - # Loobos variants - [[nccmp_niwa_cs500_intel_loobos]] - inherit = NIWA_CS500_NETCDF_COMPARISON - [[[environment]]] - OUTPUT_DIR = ../niwa_cs500_intel_loobos_${CYLC_TASK_PARAM_loobos_single}/output - - [[nccmp_niwa_cs500_intel_loobos]] - inherit = NIWA_CS500_NETCDF_COMPARISON - [[[environment]]] - OUTPUT_DIR = ../niwa_cs500_intel_loobos_${CYLC_TASK_PARAM_loobos_with_spinup}/output - - [[nccmp_niwa_cs500_intel_loobos]] - inherit = NIWA_CS500_NETCDF_COMPARISON - [[[environment]]] - OUTPUT_DIR = ../niwa_cs500_intel_loobos_${CYLC_TASK_PARAM_loobos_jules_c1p1}/output - - [[nccmp_niwa_cs500_intel_loobos_jules_es_1p0_biocrop]] - inherit = NIWA_CS500_NETCDF_COMPARISON - [[[environment]]] - OUTPUT_DIR = ../niwa_cs500_intel_loobos_jules_es_1p0_biocrop/output - - [[nccmp_niwa_cs500_intel_loobos_jules_es_1p0_biocrop_agexpand]] - inherit = NIWA_CS500_NETCDF_COMPARISON - [[[environment]]] - OUTPUT_DIR = ../niwa_cs500_intel_loobos_jules_es_1p0_biocrop_agexpand/output - - # GSWP2 variants - [[nccmp_niwa_cs500_intel_gswp2]] - inherit = NIWA_CS500_NETCDF_COMPARISON - [[[environment]]] - OUTPUT_DIR = ../niwa_cs500_intel_gswp2_${CYLC_TASK_PARAM_gswp2_single}/output - - [[nccmp_niwa_cs500_intel_gswp2_restart]] - inherit = NIWA_CS500_NETCDF_COMPARISON - [[[environment]]] - OUTPUT_DIR = ../niwa_cs500_intel_gswp2_${CYLC_TASK_PARAM_gswp2_with_spinup}_restart/output - - [[nccmp_niwa_cs500_intel_gswp2_irrig_limit_river_storage]] - inherit = NIWA_CS500_NETCDF_COMPARISON - [[[environment]]] - OUTPUT_DIR = ../niwa_cs500_intel_gswp2_irrig_limit_${CYLC_TASK_PARAM_gswp2_irrig}_river_storage/output - - [[nccmp_niwa_cs500_intel_gswp2_es]] - inherit = NIWA_CS500_NETCDF_COMPARISON - [[[environment]]] - OUTPUT_DIR = ../niwa_cs500_intel_gswp2_es_${CYLC_TASK_PARAM_gswp2_es_1p1}/output - - # Eraint variants - [[nccmp_niwa_cs500_intel_eraint]] - inherit = NIWA_CS500_NETCDF_COMPARISON - [[[environment]]] - OUTPUT_DIR = ../niwa_cs500_intel_eraint_${CYLC_TASK_PARAM_eraint_tests}/output - - # Imogen - [[nccmp_niwa_cs500_intel_imogen]] - inherit = NIWA_CS500_NETCDF_COMPARISON - [[[environment]]] - OUTPUT_DIR = ../niwa_cs500_intel_imogen_${CYLC_TASK_PARAM_imogen_with_spinup}/output - -############################################################################### -## Housekeeping jobs -############################################################################### - - [[NIWA_CS500_HOUSEKEEPING]] - inherit = NIWA_CS500, HOUSEKEEPING - - # Loobos variants - [[housekeep_niwa_cs500_intel_loobos]] - inherit = NIWA_CS500_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_cs500_intel_loobos_${CYLC_TASK_PARAM_loobos_single} - - [[housekeep_niwa_cs500_intel_loobos_spinup]] - inherit = NIWA_CS500_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_cs500_intel_loobos_${CYLC_TASK_PARAM_loobos_with_spinup}_spinup - - [[housekeep_niwa_cs500_intel_loobos]] - inherit = NIWA_CS500_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_cs500_intel_loobos_${CYLC_TASK_PARAM_loobos_with_spinup} - - [[housekeep_niwa_cs500_intel_loobos]] - inherit = NIWA_CS500_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_cs500_intel_loobos_${CYLC_TASK_PARAM_loobos_jules_c1p1} - - [[housekeep_niwa_cs500_intel_loobos_jules_es_1p0_biocrop_spinup]] - inherit = NIWA_CS500_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_cs500_intel_loobos_jules_es_1p0_biocrop_spinup - - [[housekeep_niwa_cs500_intel_loobos_jules_es_1p0_biocrop]] - inherit = NIWA_CS500_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_cs500_intel_loobos_jules_es_1p0_biocrop - - [[housekeep_niwa_cs500_intel_loobos_jules_es_1p0_biocrop_agexpand]] - inherit = NIWA_CS500_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_cs500_intel_loobos_jules_es_1p0_biocrop_agexpand - - # GSWP2 variants - [[housekeep_niwa_cs500_intel_gswp2]] - inherit = NIWA_CS500_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_cs500_intel_gswp2_${CYLC_TASK_PARAM_gswp2_single} - - [[housekeep_niwa_cs500_intel_gswp2_spinup]] - inherit = NIWA_CS500_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_cs500_intel_gswp2_${CYLC_TASK_PARAM_gswp2_with_spinup}_spinup - - [[housekeep_niwa_cs500_intel_gswp2_restart]] - inherit = NIWA_CS500_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_cs500_intel_gswp2_${CYLC_TASK_PARAM_gswp2_with_spinup}_restart - - [[housekeep_niwa_cs500_intel_gswp2_irrig_limit_river_storage]] - inherit = NIWA_CS500_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_cs500_intel_gswp2_irrig_limit_${CYLC_TASK_PARAM_gswp2_irrig}_river_storage - - [[housekeep_niwa_cs500_intel_gswp2_es]] - inherit = NIWA_CS500_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_cs500_intel_gswp2_es_${CYLC_TASK_PARAM_gswp2_es_1p1} - - # Eraint variants - [[housekeep_niwa_cs500_intel_eraint]] - inherit = NIWA_CS500_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_cs500_intel_eraint_${CYLC_TASK_PARAM_eraint_tests} - - # Imogen variants - [[housekeep_niwa_cs500_intel_imogen_spinup]] - inherit = NIWA_CS500_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_cs500_intel_imogen_${CYLC_TASK_PARAM_imogen_with_spinup}_spinup - - [[housekeep_niwa_cs500_intel_imogen]] - inherit = NIWA_CS500_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_cs500_intel_imogen_${CYLC_TASK_PARAM_imogen_with_spinup} diff --git a/rose-stem/include/niwa/runtime-xc50.cylc b/rose-stem/include/niwa/runtime-xc50.cylc deleted file mode 100644 index db87e1c0..00000000 --- a/rose-stem/include/niwa/runtime-xc50.cylc +++ /dev/null @@ -1,399 +0,0 @@ -############################################################################### -## Common classes -############################################################################### - - [[NIWA_XC50]] - [[[remote]]] - host = login.maui.niwa.co.nz - - [[NIWA_XC50_SL]] - [[[job]]] - batch system = slurm - [[[directives]]] - --clusters = maui - --partition = nesi_research - --account = niwa00001 - --job-name = jules_test - --time = 00:06:00 - --mem-per-cpu = 1G - --hint = nomultithread - [[[environment]]] - HDF5_USE_FILE_LOCKING = FALSE - - [[remote_init_xc50]] - inherit = NIWA_XC50_SL - script = true - -# XC50 node setup -# Single OpenMP thread - [[NIWA_XC50_PARALLEL_THREADS_1]] - [[[environment]]] - OMP_NUM_THREADS = 1 - -# Single task - [[NIWA_XC50_PARALLEL_TASKS_1]] - [[[directives]]] - --nodes = 1 - --ntasks = 1 - -# 8 tasks - [[NIWA_XC50_PARALLEL_TASKS_8]] - [[[directives]]] - --nodes = 1 - --ntasks = 8 - -# 40 tasks - [[NIWA_XC50_PARALLEL_TASKS_40]] - [[[directives]]] - --nodes = 1 - --ntasks = 40 - -############################################################################### -## Extract and build jobs -############################################################################### - - [[NIWA_XC50_BUILD]] - inherit = NIWA_XC50, EXTRACT_AND_BUILD - [[[environment]]] - ROSE_TASK_N_JOBS = 6 - - [[NIWA_XC50_BUILD_cce]] - inherit = NIWA_XC50_BUILD - pre-script = """ - module swap NeSI NIWA - module load PrgEnv-cray craype-x86-skylake cray-netcdf-hdf5parallel FCM - module swap PrgEnv-cray PrgEnv-cray/6.0.10 - module swap cce cce/15.0.1 - module swap cray-netcdf-hdf5parallel cray-netcdf-hdf5parallel/4.9.0.3 - module swap FCM FCM/2019.09.0 - """ - [[[environment]]] - JULES_PLATFORM = niwa-xc50-cce - - [[NIWA_XC50_BUILD_gfortran]] - inherit = NIWA_XC50_BUILD - pre-script = """ - module swap NeSI NIWA - module load PrgEnv-cray cray-netcdf-hdf5parallel FCM - module swap PrgEnv-cray PrgEnv-gnu/6.0.10 - module swap gcc gcc/12.1.0 - module load craype-x86-skylake - module swap cray-netcdf-hdf5parallel cray-netcdf-hdf5parallel/4.9.0.3 - module swap FCM FCM/2019.09.0 - """ - [[[environment]]] - JULES_PLATFORM = niwa-xc50-gfortran - - [[NIWA_XC50_BUILD_intel]] - inherit = NIWA_XC50_BUILD - pre-script = """ - module swap NeSI NIWA - module load PrgEnv-cray craype-x86-skylake cray-netcdf-hdf5parallel FCM - module swap PrgEnv-cray PrgEnv-intel/6.0.10 - module swap intel intel/19.1.3.304 - module swap cray-netcdf-hdf5parallel cray-netcdf-hdf5parallel/4.9.0.3 - module swap FCM FCM/2019.09.0 - """ - [[[environment]]] - JULES_PLATFORM = niwa-xc50-intel - -############################################################################### -## Build jobs -############################################################################### - -# Debug build without OpenMP - [[fcm_make_niwa_xc50_debug_noomp]] - inherit = NIWA_XC50_BUILD - [[[environment]]] - JULES_BUILD = debug - JULES_OMP = noomp - -# Normal build with OpenMP - [[fcm_make_niwa_xc50_omp]] - inherit = NIWA_XC50_BUILD - [[[environment]]] - JULES_BUILD = normal - JULES_OMP = omp - -############################################################################### -## Compute jobs -############################################################################### - - # Loobos variants - [[NIWA_XC50_LOOBOS]] - inherit = NIWA_XC50, NIWA_XC50_SL, NIWA_XC50_PARALLEL_TASKS_1, NIWA_XC50_PARALLEL_THREADS_1, LOOBOS, COMPUTE - [[[environment]]] - BUILD_NAME = fcm_make_niwa_xc50_intel_debug_noomp - LOOBOS_INSTALL_DIR = /opt/niwa/um_sys/jules/benchmarking-data/loobos - - [[niwa_xc50_intel_loobos]] - inherit = NIWA_XC50_LOOBOS - [[[environment]]] - ROSE_TASK_APP = loobos_${CYLC_TASK_PARAM_loobos_single} - - [[niwa_xc50_intel_loobos]] - inherit = NIWA_XC50_LOOBOS - [[[environment]]] - ROSE_TASK_APP = loobos_gl4 - ROSE_APP_OPT_CONF_KEYS = cable - - [[niwa_xc50_intel_loobos_spinup]] - inherit = NIWA_XC50_LOOBOS - [[[environment]]] - ROSE_TASK_APP = loobos_${CYLC_TASK_PARAM_loobos_with_spinup}_spinup - - [[niwa_xc50_intel_loobos]] - inherit = NIWA_XC50_LOOBOS - [[[environment]]] - ROSE_TASK_APP = loobos_${CYLC_TASK_PARAM_loobos_with_spinup} - DUMP_FILE = ../niwa_xc50_intel_loobos_${CYLC_TASK_PARAM_loobos_with_spinup}_spinup/output/niwa_xc50_intel_loobos_${CYLC_TASK_PARAM_loobos_with_spinup}_spinup.dump.19971231.82800.nc - - [[niwa_xc50_intel_loobos]] - inherit = NIWA_XC50_LOOBOS - [[[environment]]] - ROSE_TASK_APP = loobos_${CYLC_TASK_PARAM_loobos_jules_c1p1} - DUMP_FILE = ../niwa_xc50_intel_loobos_julesc_spinup/output/niwa_xc50_intel_loobos_julesc_spinup.dump.19971231.82800.nc - - [[niwa_xc50_intel_loobos_jules_es_1p0_biocrop_spinup]] - inherit =NIWA_XC50_LOOBOS - [[[environment]]] - ROSE_TASK_APP = loobos_jules_es_1p0_biocrop_spinup - - [[niwa_xc50_intel_loobos_jules_es_1p0_biocrop]] - inherit =NIWA_XC50_LOOBOS - [[[environment]]] - ROSE_TASK_APP = loobos_jules_es_1p0_biocrop - DUMP_FILE = ../niwa_xc50_intel_loobos_jules_es_1p0_biocrop_spinup/output/niwa_xc50_intel_loobos_jules_es_1p0_biocrop_spinup.dump.19971231.82800.nc - - [[niwa_xc50_intel_loobos_jules_es_1p0_biocrop_agexpand]] - inherit =NIWA_XC50_LOOBOS - [[[environment]]] - ROSE_TASK_APP = loobos_jules_es_1p0_biocrop_agexpand - DUMP_FILE = ../niwa_xc50_intel_loobos_jules_es_1p0_biocrop_spinup/output/niwa_xc50_intel_loobos_jules_es_1p0_biocrop_spinup.dump.19971231.82800.nc - - # GSWP2 variants - [[NIWA_XC50_GSWP2]] - inherit = NIWA_XC50, NIWA_XC50_SL, NIWA_XC50_PARALLEL_TASKS_40, NIWA_XC50_PARALLEL_THREADS_1, GSWP2, COMPUTE - pre-script = gen_gswp2_drive_file - [[[environment]]] - BUILD_NAME = fcm_make_niwa_xc50_intel_omp - GSWP2_INSTALL_DIR = /opt/niwa/um_sys/jules/benchmarking-data/gswp2 - - [[niwa_xc50_intel_gswp2]] - inherit = NIWA_XC50_GSWP2 - [[[environment]]] - ROSE_TASK_APP = gswp2_${CYLC_TASK_PARAM_gswp2_single} - - [[niwa_xc50_intel_gswp2_spinup]] - inherit = NIWA_XC50_GSWP2 - [[[environment]]] - ROSE_TASK_APP = gswp2_${CYLC_TASK_PARAM_gswp2_with_spinup}_spinup - - [[niwa_xc50_intel_gswp2_restart]] - inherit = NIWA_XC50_GSWP2 - [[[environment]]] - ROSE_TASK_APP = gswp2_${CYLC_TASK_PARAM_gswp2_with_spinup}_restart - DUMP_FILE = ../niwa_xc50_intel_gswp2_${CYLC_TASK_PARAM_gswp2_with_spinup}_spinup/output/niwa_xc50_intel_gswp2_${CYLC_TASK_PARAM_gswp2_with_spinup}_spinup.dump.19820701.10800.nc - - [[niwa_xc50_intel_gswp2_irrig_limit_river_storage]] - inherit = NIWA_XC50_GSWP2 - [[[environment]]] - ROSE_TASK_APP = gswp2_irrig_limit_${CYLC_TASK_PARAM_gswp2_irrig}_river_storage - DUMP_FILE = ../niwa_xc50_intel_gswp2_trip_spinup/output/niwa_xc50_intel_gswp2_trip_spinup.dump.19820701.10800.nc - - # Eraint variants - [[NIWA_XC50_ERAINT]] - inherit = NIWA_XC50, NIWA_XC50_SL, NIWA_XC50_PARALLEL_TASKS_8, NIWA_XC50_PARALLEL_THREADS_1, ERAINT, COMPUTE - [[[environment]]] - BUILD_NAME = fcm_make_niwa_xc50_intel_omp - ERAINT_INSTALL_DIR = /opt/niwa/um_sys/jules/benchmarking-data/eraint - - [[niwa_xc50_intel_eraint]] - inherit = NIWA_XC50_ERAINT - [[[environment]]] - ROSE_TASK_APP = eraint_${CYLC_TASK_PARAM_eraint_tests} - DUMP_FILE = $ERAINT_INSTALL_DIR/brahma_eraint_small.dump.19951031.0.nc - - [[niwa_xc50_intel_gswp2_es]] - inherit = NIWA_XC50_GSWP2 - [[[environment]]] - ROSE_TASK_APP = gswp2_es_1p1 - ROSE_APP_OPT_CONF_KEYS = ${CYLC_TASK_PARAM_gswp2_es_1p1} - - # Imogen variants - [[NIWA_XC50_IMOGEN]] - inherit = NIWA_XC50, NIWA_XC50_SL, NIWA_XC50_PARALLEL_TASKS_8, NIWA_XC50_PARALLEL_THREADS_1, IMOGEN, COMPUTE - [[[environment]]] - BUILD_NAME = fcm_make_niwa_xc50_intel_omp - IMOGEN_INSTALL_DIR = /opt/niwa/um_sys/jules/benchmarking-data/imogen - - [[niwa_xc50_intel_imogen_spinup]] - inherit = NIWA_XC50_IMOGEN - [[[environment]]] - ROSE_TASK_APP = imogen_${CYLC_TASK_PARAM_imogen_with_spinup}_spinup - - [[niwa_xc50_intel_imogen]] - inherit = NIWA_XC50_IMOGEN - [[[environment]]] - ROSE_TASK_APP = imogen_${CYLC_TASK_PARAM_imogen_with_spinup} - DUMP_FILE = ../niwa_xc50_intel_imogen_${CYLC_TASK_PARAM_imogen_with_spinup}_spinup/output/niwa_xc50_intel_imogen_${CYLC_TASK_PARAM_imogen_with_spinup}_spinup.dump.18650101.0.nc - -############################################################################### -## Comparison jobs -############################################################################### - - [[NIWA_XC50_NETCDF_COMPARISON]] - inherit = NIWA_CS500, KGO_CHECK, COMPARISON - pre-script = """ - module purge - module load NIWA - module load nccmp/1.8.5.0-GCC-7.1.0 - """ - [[[environment]]] - CMD_CMP = nccmp -d --force - KGO_DIR = /opt/niwa/um_sys/jules/rose-stem-kgo/{{ KGO_VERSION }} - - # Loobos variants - [[nccmp_niwa_xc50_intel_loobos]] - inherit = NIWA_XC50_NETCDF_COMPARISON - [[[environment]]] - OUTPUT_DIR = ../niwa_xc50_intel_loobos_${CYLC_TASK_PARAM_loobos_single}/output - - [[nccmp_niwa_xc50_intel_loobos]] - inherit = NIWA_XC50_NETCDF_COMPARISON - [[[environment]]] - OUTPUT_DIR = ../niwa_xc50_intel_loobos_${CYLC_TASK_PARAM_loobos_with_spinup}/output - - [[nccmp_niwa_xc50_intel_loobos]] - inherit = NIWA_XC50_NETCDF_COMPARISON - [[[environment]]] - OUTPUT_DIR = ../niwa_xc50_intel_loobos_${CYLC_TASK_PARAM_loobos_jules_c1p1}/output - - [[nccmp_niwa_xc50_intel_loobos_jules_es_1p0_biocrop]] - inherit = NIWA_XC50_NETCDF_COMPARISON - [[[environment]]] - OUTPUT_DIR = ../niwa_xc50_intel_loobos_jules_es_1p0_biocrop/output - - [[nccmp_niwa_xc50_intel_loobos_jules_es_1p0_biocrop_agexpand]] - inherit = NIWA_XC50_NETCDF_COMPARISON - [[[environment]]] - OUTPUT_DIR = ../niwa_xc50_intel_loobos_jules_es_1p0_biocrop_agexpand/output - - # GSWP2 variants - [[nccmp_niwa_xc50_intel_gswp2]] - inherit = NIWA_XC50_NETCDF_COMPARISON - [[[environment]]] - OUTPUT_DIR = ../niwa_xc50_intel_gswp2_${CYLC_TASK_PARAM_gswp2_single}/output - - [[nccmp_niwa_xc50_intel_gswp2_restart]] - inherit = NIWA_XC50_NETCDF_COMPARISON - [[[environment]]] - OUTPUT_DIR = ../niwa_xc50_intel_gswp2_${CYLC_TASK_PARAM_gswp2_with_spinup}_restart/output - - [[nccmp_niwa_xc50_intel_gswp2_irrig_limit_river_storage]] - inherit = NIWA_XC50_NETCDF_COMPARISON - [[[environment]]] - OUTPUT_DIR = ../niwa_xc50_intel_gswp2_irrig_limit_${CYLC_TASK_PARAM_gswp2_irrig}_river_storage/output - - [[nccmp_niwa_xc50_intel_gswp2_es]] - inherit = NIWA_XC50_NETCDF_COMPARISON - [[[environment]]] - OUTPUT_DIR = ../niwa_xc50_intel_gswp2_es_${CYLC_TASK_PARAM_gswp2_es_1p1}/output - - # Eraint variants - [[nccmp_niwa_xc50_intel_eraint]] - inherit = NIWA_XC50_NETCDF_COMPARISON - [[[environment]]] - OUTPUT_DIR = ../niwa_xc50_intel_eraint_${CYLC_TASK_PARAM_eraint_tests}/output - - # Imogen - [[nccmp_niwa_xc50_intel_imogen]] - inherit = NIWA_XC50_NETCDF_COMPARISON - [[[environment]]] - OUTPUT_DIR = ../niwa_xc50_intel_imogen_${CYLC_TASK_PARAM_imogen_with_spinup}/output - -############################################################################### -## Housekeeping jobs -############################################################################### - - [[NIWA_XC50_HOUSEKEEPING]] - inherit = NIWA_XC50, HOUSEKEEPING - - # Loobos variants - [[housekeep_niwa_xc50_intel_loobos]] - inherit = NIWA_XC50_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_xc50_intel_loobos_${CYLC_TASK_PARAM_loobos_single} - - [[housekeep_niwa_xc50_intel_loobos_spinup]] - inherit = NIWA_XC50_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_xc50_intel_loobos_${CYLC_TASK_PARAM_loobos_with_spinup}_spinup - - [[housekeep_niwa_xc50_intel_loobos]] - inherit = NIWA_XC50_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_xc50_intel_loobos_${CYLC_TASK_PARAM_loobos_with_spinup} - - [[housekeep_niwa_xc50_intel_loobos]] - inherit = NIWA_XC50_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_xc50_intel_loobos_${CYLC_TASK_PARAM_loobos_jules_c1p1} - - [[housekeep_niwa_xc50_intel_loobos_jules_es_1p0_biocrop_spinup]] - inherit = NIWA_XC50_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_xc50_intel_loobos_jules_es_1p0_biocrop_spinup - - [[housekeep_niwa_xc50_intel_loobos_jules_es_1p0_biocrop]] - inherit = NIWA_XC50_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_xc50_intel_loobos_jules_es_1p0_biocrop - - [[housekeep_niwa_xc50_intel_loobos_jules_es_1p0_biocrop_agexpand]] - inherit = NIWA_XC50_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_xc50_intel_loobos_jules_es_1p0_biocrop_agexpand - - # GSWP2 variants - [[housekeep_niwa_xc50_intel_gswp2]] - inherit = NIWA_XC50_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_xc50_intel_gswp2_${CYLC_TASK_PARAM_gswp2_single} - - [[housekeep_niwa_xc50_intel_gswp2_spinup]] - inherit = NIWA_XC50_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_xc50_intel_gswp2_${CYLC_TASK_PARAM_gswp2_with_spinup}_spinup - - [[housekeep_niwa_xc50_intel_gswp2_restart]] - inherit = NIWA_XC50_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_xc50_intel_gswp2_${CYLC_TASK_PARAM_gswp2_with_spinup}_restart - - [[housekeep_niwa_xc50_intel_gswp2_irrig_limit_river_storage]] - inherit = NIWA_XC50_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_xc50_intel_gswp2_irrig_limit_${CYLC_TASK_PARAM_gswp2_irrig}_river_storage - - [[housekeep_niwa_xc50_intel_gswp2_es]] - inherit = NIWA_XC50_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_xc50_intel_gswp2_es_${CYLC_TASK_PARAM_gswp2_es_1p1} - - # Eraint variants - [[housekeep_niwa_xc50_intel_eraint]] - inherit = NIWA_XC50_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_xc50_intel_eraint_${CYLC_TASK_PARAM_eraint_tests} - - # Imogen variants - [[housekeep_niwa_xc50_intel_imogen_spinup]] - inherit = NIWA_XC50_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_xc50_intel_imogen_${CYLC_TASK_PARAM_imogen_with_spinup}_spinup - - [[housekeep_niwa_xc50_intel_imogen]] - inherit = NIWA_XC50_HOUSEKEEPING - [[[environment]]] - DIR1 = ../niwa_xc50_intel_imogen_${CYLC_TASK_PARAM_imogen_with_spinup} diff --git a/rose-stem/include/niwa/runtime.cylc b/rose-stem/include/niwa/runtime.cylc deleted file mode 100644 index b915d453..00000000 --- a/rose-stem/include/niwa/runtime.cylc +++ /dev/null @@ -1,3 +0,0 @@ -# Include XC50 and CS500 definitions -%include 'include/niwa/runtime-cs500.cylc' -%include 'include/niwa/runtime-xc50.cylc' diff --git a/rose-stem/include/parameters.cylc b/rose-stem/include/parameters.cylc index 36641d8f..a1de21b8 100644 --- a/rose-stem/include/parameters.cylc +++ b/rose-stem/include/parameters.cylc @@ -1,5 +1,5 @@ # Import site-specific parameter sets -{% if SITE == 'niwa' %} -%include 'include/niwa/parameters.cylc' +{% if SITE == 'esnz' %} +%include 'include/esnz/parameters.cylc' {% endif %} diff --git a/rose-stem/include/queues.cylc b/rose-stem/include/queues.cylc index 1d09a83d..7df3fdf0 100644 --- a/rose-stem/include/queues.cylc +++ b/rose-stem/include/queues.cylc @@ -6,8 +6,8 @@ %include 'include/meto/queues.cylc' {% elif SITE == 'vm' %} %include 'include/vm/queues.cylc' -{% elif SITE == 'niwa' %} -%include 'include/niwa/queues.cylc' +{% elif SITE == 'esnz' %} +%include 'include/esnz/queues.cylc' {% elif SITE == 'cehwl1' %} %include 'include/cehwl1/queues.cylc' {% elif SITE == 'nci' %} diff --git a/rose-stem/include/runtime.cylc b/rose-stem/include/runtime.cylc index a665c95e..99f95f30 100644 --- a/rose-stem/include/runtime.cylc +++ b/rose-stem/include/runtime.cylc @@ -124,8 +124,8 @@ rsync -avz --exclude=".*" $SOURCE_DIRECTORY/* $hostname:$RELATIVE_SOURCE_DIRECTO %include 'include/meto/runtime.cylc' {% elif SITE == 'vm' %} %include 'include/vm/runtime.cylc' -{% elif SITE == 'niwa' %} -%include 'include/niwa/runtime.cylc' +{% elif SITE == 'esnz' %} +%include 'include/esnz/runtime.cylc' {% elif SITE == 'cehwl1' %} %include 'include/cehwl1/runtime.cylc' {% elif SITE == 'nci' %} diff --git a/rose-stem/include/variables.cylc b/rose-stem/include/variables.cylc index cd540402..3bbf61b1 100644 --- a/rose-stem/include/variables.cylc +++ b/rose-stem/include/variables.cylc @@ -1,4 +1,4 @@ ############################################################################### ## Common variable definitions ############################################################################### -{%- set KGO_VERSION = 'vn8.1' %} +{%- set KGO_VERSION = 'vn8.2' %} diff --git a/rose-stem/include/vm/graph.cylc b/rose-stem/include/vm/graph.cylc index 53daeaca..1385a41f 100644 --- a/rose-stem/include/vm/graph.cylc +++ b/rose-stem/include/vm/graph.cylc @@ -17,6 +17,10 @@ "loobos_gl8_medlyn" : "remote_init_vm => extract_source => fcm_make_debug & install_loobos_data => \ loobos_gl8_medlyn => nccmp_loobos_gl8_medlyn => housekeep_loobos_gl8_medlyn", + "loobos_gl8_irrigon_5050irrigtiles" : "remote_init_vm => extract_source => fcm_make_debug & install_loobos_data => \ + loobos_gl8_irrigon_5050irrigtiles => nccmp_loobos_gl8_irrigon_5050irrigtiles => \ + housekeep_loobos_gl8_irrigon_5050irrigtiles", + "loobos_vegdrag" : "remote_init_vm => extract_source => fcm_make_debug & install_loobos_data => \ loobos_vegdrag => nccmp_loobos_vegdrag => housekeep_loobos_vegdrag", @@ -189,7 +193,8 @@ {%- set groups = { "all" : ["loobos", "gswp2", "eraint", "gswp2_es", "imogen"], - "loobos" : ["loobos_gl4","loobos_gl4_cable", "loobos_gl7", "loobos_gl8", "loobos_gl8_medlyn", "loobos_vegdrag", + "loobos" : ["loobos_gl4","loobos_gl4_cable", "loobos_gl7", "loobos_gl8", "loobos_gl8_medlyn", + "loobos_gl8_irrigon_5050irrigtiles","loobos_vegdrag", "loobos_euro4", "loobos_forecast", "loobos_ukv", "loobos_trif", "loobos_crops", "loobos_prescribe_sthuf", "loobos_fire", "loobos_daily_disagg", "loobos_julesc", "loobos_jules_layeredcn", "loobos_jules_cn", diff --git a/rose-stem/include/vm/runtime.cylc b/rose-stem/include/vm/runtime.cylc index 3846dabd..b7edcbee 100644 --- a/rose-stem/include/vm/runtime.cylc +++ b/rose-stem/include/vm/runtime.cylc @@ -83,6 +83,12 @@ fcm export --force fcm:jules_doc.x_tr/loobos/Loobos_1997_day.dat [[loobos_gl8_medlyn]] inherit = LOOBOS, VM_LOOBOS + [[loobos_gl8_irrigon_5050irrigtiles]] + inherit = LOOBOS, VM_LOOBOS + [[[environment]]] + ROSE_TASK_APP = loobos_gl8 + ROSE_APP_OPT_CONF_KEYS = irrigon_5050irrigtiles + [[loobos_vegdrag]] inherit = LOOBOS, VM_LOOBOS @@ -387,6 +393,11 @@ fcm export --force fcm:jules_doc.x_tr/loobos/Loobos_1997_day.dat [[[environment]]] OUTPUT_DIR = ../loobos_gl8_medlyn/output + [[nccmp_loobos_gl8_irrigon_5050irrigtiles]] + inherit = KGO_CHECK, VM_NETCDF_COMPARISON + [[[environment]]] + OUTPUT_DIR = ../loobos_gl8_irrigon_5050irrigtiles/output + [[nccmp_loobos_vegdrag]] inherit = KGO_CHECK, VM_NETCDF_COMPARISON [[[environment]]] @@ -658,6 +669,11 @@ fcm export --force fcm:jules_doc.x_tr/loobos/Loobos_1997_day.dat [[[environment]]] DIR1 = ../loobos_gl8_medlyn + [[housekeep_loobos_gl8_irrigon_5050irrigtiles]] + inherit = HOUSEKEEPING, LINUX + [[[environment]]] + DIR1 = ../loobos_gl8_irrigon_5050irrigtiles + [[housekeep_loobos_vegdrag]] inherit = HOUSEKEEPING, LINUX [[[environment]]] diff --git a/rose-stem/rose-suite.conf b/rose-stem/rose-suite.conf index 0f49ee4b..707d8f0e 100644 --- a/rose-stem/rose-suite.conf +++ b/rose-stem/rose-suite.conf @@ -14,4 +14,4 @@ SUITE_TIMEOUT='PT15M' USE_HEADS=false USE_MIRRORS=false USE_TOKENS=false -VN='vn8.1' +VN='vn8.2' diff --git a/src/control/imogen/sunny_mod.F90 b/src/control/imogen/sunny_mod.F90 index 9556f62d..0268a669 100644 --- a/src/control/imogen/sunny_mod.F90 +++ b/src/control/imogen/sunny_mod.F90 @@ -8,6 +8,8 @@ ! ! [Met Office Ref SC0237] !******************************COPYRIGHT************************************** +! Some of the content of this file has been produced with the assistance of +! Met Office Github Copilot Enterprise MODULE sunny_mod @@ -43,7 +45,7 @@ SUBROUTINE sunny( & ! !----------------------------------------------------------------------------- -INTEGER :: & +INTEGER, INTENT(IN) :: & daynumber, & ! IN Day of the year. jday, & @@ -52,15 +54,20 @@ SUBROUTINE sunny( & ! IN Number of spatial points. year ! IN Calender year. -REAL :: & +REAL, INTENT(IN) :: & lat(points), & ! IN Latitude (degrees). - lon(points), & + lon(points) ! IN Longitude (degrees). + + +REAL, INTENT(OUT) :: & sun(points,jday), & ! OUT Normalised solar radiation at each time. - time_max(points), & + time_max(points) ! OUT Time (UTC) at which temperature is maximum (hrs). + +REAL :: & cosdec, & ! WORK COS (solar declination). coslat, & @@ -97,8 +104,13 @@ SUBROUTINE sunny( & INTEGER :: i,j ! WORK Loop counter. +REAL, PARAMETER :: frac_day_to_tmax = 0.15 + ! fraction of day after local noon when the daily maximum + ! temperature is assumed to occur. +REAL, PARAMETER :: deg_per_hour = 15.0 + ! 360 degrees / 24 hours -CALL solpos (daynumber, year, sindec, scs) +CALL solpos (daynumber, year, sindec, scs) ! scs is calculated but unused DO i = 1,points latrad = pi_over_180 * lat(i) @@ -114,6 +126,9 @@ SUBROUTINE sunny( & !---------------------------------------------------------------------- ! Calculate the COSZ at each time !---------------------------------------------------------------------- +cosz(:) = 0.0 +lit(:) = 0.0 + DO j = 1,jday timeday = (j-1) * timestep @@ -162,13 +177,29 @@ SUBROUTINE sunny( & time_down = 0.5 * rhour_per_day & * ((omega_down - lonrad(i)) / pi + 1.0) - ELSE ! Perpertual day or night - time_up = 0.0 - time_down = 0.0 + time_max(i) = 0.5 * (time_up + time_down) & + + frac_day_to_tmax * (time_down - time_up) + + ELSE IF (tantan < -1.0) THEN ! Perpetual day (sun never sets) + ! Local noon in UTC: 12 - (longitude in hours) + ! Max temp 3.6 hours after local noon + time_max(i) = rhour_per_day / 2.0 - (lon(i) / deg_per_hour) + & + frac_day_to_tmax * rhour_per_day + + ELSE ! Perpetual night (sun never rises) + ! No solar heating; set to local noon as placeholder + time_max(i) = rhour_per_day / 2.0 - (lon(i) / deg_per_hour) + END IF - time_max(i) = 0.5 * (time_up + time_down) & - + 0.15 * (time_down - time_up) + ! Wrap time_max to 0-24 range + DO WHILE (time_max(i) < 0.0) + time_max(i) = time_max(i) + rhour_per_day + END DO + + DO WHILE (time_max(i) >= rhour_per_day) + time_max(i) = time_max(i) - rhour_per_day + END DO END DO diff --git a/src/control/rivers-standalone/oasis_rivers_control_mod.F90 b/src/control/rivers-standalone/oasis_rivers_control_mod.F90 index 6e2f0d76..52eb949a 100644 --- a/src/control/rivers-standalone/oasis_rivers_control_mod.F90 +++ b/src/control/rivers-standalone/oasis_rivers_control_mod.F90 @@ -330,7 +330,9 @@ SUBROUTINE oasis_send(rivers, TIME) oasis_torestout, oasis_waitgroup, oasis_ok USE oasis_rivers_mod, ONLY: np_send, cpl_send USE jules_rivers_mod, ONLY: rivers_type, n_rivers, & - l_outflow_per_river, calc_outflow_per_river + l_outflow_per_river, calc_outflow_per_river, & + nx_rivers, ny_rivers, l_inland_outflow +USE rivers_regrid_mod, ONLY: rp_to_twod USE missing_data_mod, ONLY: imdi ! IMPLICIT NONE @@ -353,6 +355,7 @@ SUBROUTINE oasis_send(rivers, TIME) ! Local variables REAL, ALLOCATABLE :: outflow_per_river(:) INTEGER :: i, ip, ierror, ERROR +REAL :: inland_outflow(nx_rivers, ny_rivers) CHARACTER(LEN=*), PARAMETER :: RoutineName = 'OASIS_SEND' @@ -366,12 +369,19 @@ SUBROUTINE oasis_send(rivers, TIME) outflow_per_river = calc_outflow_per_river(rivers) END IF +! Convert inland basin flow from river points grid to 2D rivers grid +IF (l_inland_outflow) THEN + CALL rp_to_twod(rivers%inland_outflow_rp, inland_outflow, rivers) +END IF + ! Loop in all variables that are sent via coupling DO i = 1, np_send SELECT CASE(TRIM(cpl_send(i)%field_name)) ! send the right field CASE ('outflow_per_river') CALL oasis_put(cpl_send(i)%field_id,TIME,outflow_per_river,ierror) + CASE ('inland_outflow') + CALL oasis_put(cpl_send(i)%field_id,TIME,inland_outflow,ierror) END SELECT IF (ierror /= oasis_sent .AND. ierror /= oasis_loctrans .AND. & diff --git a/src/control/rivers-standalone/oasis_rivers_mod.F90 b/src/control/rivers-standalone/oasis_rivers_mod.F90 index a45a8bbe..92c8e9a5 100644 --- a/src/control/rivers-standalone/oasis_rivers_mod.F90 +++ b/src/control/rivers-standalone/oasis_rivers_mod.F90 @@ -75,7 +75,7 @@ MODULE oasis_rivers_mod SUBROUTINE check_oasis_rivers() -USE jules_rivers_mod, ONLY: l_outflow_per_river +USE jules_rivers_mod, ONLY: l_outflow_per_river, l_inland_outflow USE jules_model_environment_mod, ONLY: l_oasis_rivers USE model_time_mod, ONLY: timestep_len USE ereport_mod, ONLY: ereport @@ -128,10 +128,10 @@ SUBROUTINE check_oasis_rivers() ELSE IF (np_send < 0) THEN errcode = 107 CALL ereport(RoutineName, errcode, 'np_send must be >= 0') - ELSE IF (np_send > 1) THEN + ELSE IF (np_send > 2) THEN errcode = 108 CALL ereport(RoutineName, errcode, 'np_send must be ' // & - 'in the range 0:1') + 'in the range 0:2') END IF ! Check that at least one coupling field is exchanged @@ -185,6 +185,9 @@ SUBROUTINE check_oasis_rivers() cpl_send(i)%field_name = TRIM(send_fields(i)) l_runoff_1d = .TRUE. ! 1d runoff partition required l_outflow_per_river = .TRUE. ! Check river number ancillary is given + CASE ('inland_outflow') + cpl_send(i)%field_name = TRIM(send_fields(i)) + l_inland_outflow = .TRUE. ! Generate inland basin flows CASE DEFAULT errcode = 117 CALL ereport(RoutineName, errcode, & diff --git a/src/control/shared/ancil_info.F90 b/src/control/shared/ancil_info.F90 index 0b2b0113..b0e244ba 100644 --- a/src/control/shared/ancil_info.F90 +++ b/src/control/shared/ancil_info.F90 @@ -177,6 +177,8 @@ MODULE ancil_info REAL(KIND=real_jlslsm), ALLOCATABLE :: longitude(:,:) ! longitude (degree) ! hard-coded to 0 if l_local_solar_time=T to get local diagnostics + REAL(KIND=real_jlslsm), ALLOCATABLE :: non_irrig_frac(:) + ! Fraction of non-irrigated tiles. END TYPE !================================ @@ -216,6 +218,8 @@ MODULE ancil_info REAL(KIND=real_jlslsm), POINTER :: sstfrz_ij(:,:) REAL(KIND=real_jlslsm), POINTER :: latitude(:,:) REAL(KIND=real_jlslsm), POINTER :: longitude(:,:) + REAL(KIND=real_jlslsm), POINTER :: non_irrig_frac(:) + END TYPE CHARACTER(LEN=*), PARAMETER, PRIVATE :: ModuleName='ANCIL_INFO' @@ -281,6 +285,7 @@ SUBROUTINE ancil_info_alloc(land_pts,t_i_length,t_j_length, & ALLOCATE(ainfo_data%frac_surft(land_pts,ntype)) ALLOCATE(ainfo_data%latitude(t_i_length,t_j_length)) ALLOCATE(ainfo_data%longitude(t_i_length,t_j_length)) +ALLOCATE(ainfo_data%non_irrig_frac(land_pts)) ainfo_data%l_lice_surft(:) = .FALSE. ainfo_data%soilt_pts(:) = 0 @@ -312,6 +317,7 @@ SUBROUTINE ancil_info_alloc(land_pts,t_i_length,t_j_length, & ainfo_data%frac_surft(:,:) = 0.0 ainfo_data%latitude(:,:) = 0.0 ainfo_data%longitude(:,:) = 0.0 +ainfo_data%non_irrig_frac(:) = 1.0 IF (lhook) CALL dr_hook(ModuleName//':'//RoutineName,zhook_out,zhook_handle) RETURN @@ -373,6 +379,7 @@ SUBROUTINE ancil_info_dealloc(ainfo_data) DEALLOCATE(ainfo_data%frac_surft) DEALLOCATE(ainfo_data%latitude) DEALLOCATE(ainfo_data%longitude) +DEALLOCATE(ainfo_data%non_irrig_frac) IF (lhook) CALL dr_hook(ModuleName//':'//RoutineName,zhook_out,zhook_handle) END SUBROUTINE ancil_info_dealloc @@ -438,6 +445,7 @@ SUBROUTINE ancil_info_assoc(ainfo,ainfo_data) ainfo%frac_surft => ainfo_data%frac_surft ainfo%latitude => ainfo_data%latitude ainfo%longitude => ainfo_data%longitude +ainfo%non_irrig_frac => ainfo_data%non_irrig_frac IF (lhook) CALL dr_hook(ModuleName//':'//RoutineName,zhook_out,zhook_handle) RETURN @@ -500,6 +508,7 @@ SUBROUTINE ancil_info_nullify(ainfo) NULLIFY(ainfo%frac_surft) NULLIFY(ainfo%latitude) NULLIFY(ainfo%longitude) +NULLIFY(ainfo%non_irrig_frac) IF (lhook) CALL dr_hook(ModuleName//':'//RoutineName,zhook_out,zhook_handle) RETURN diff --git a/src/control/shared/coastal.F90 b/src/control/shared/coastal.F90 index badea544..7afde8c9 100644 --- a/src/control/shared/coastal.F90 +++ b/src/control/shared/coastal.F90 @@ -17,6 +17,10 @@ MODULE coastal REAL, DIMENSION(:,:), ALLOCATABLE :: flandg ! Land fraction on all tiles. +LOGICAL :: l_use_land_fraction = .FALSE. +! Switch to indicate that land fractions should be used instead of all land +! fractions being set to 1.0 by standalone. + !----------------------------------------------------------------------------- ! Implementation for field variables ! Each variable is declared in both the 'data' TYPE and the 'pointer' type. diff --git a/src/control/shared/jules_hydrology_mod.F90 b/src/control/shared/jules_hydrology_mod.F90 index 2e2a7f31..f1d360b4 100644 --- a/src/control/shared/jules_hydrology_mod.F90 +++ b/src/control/shared/jules_hydrology_mod.F90 @@ -45,8 +45,10 @@ MODULE jules_hydrology_mod l_wetland_unfrozen = .FALSE., & ! Switch for TOPMODEL-based hydrology with unfrozen wetland inundation ! Only used if l_top=.T. - l_limit_gsoil = .FALSE. + l_limit_gsoil = .FALSE., & ! Switch for limiting gsoil above theta_crit + l_inland = .FALSE. + ! Switch for putting inland water from from rivers into soil moisture !----------------------------------------------------------------------------- ! PDM parameters @@ -83,7 +85,7 @@ MODULE jules_hydrology_mod !------------------------------------------------------------------------------ NAMELIST / jules_hydrology/ & l_hydrology, l_top, l_pdm, l_spdmvar, l_baseflow_corr, l_var_rainfrac, & - l_wetland_unfrozen, l_limit_gsoil, & + l_wetland_unfrozen, l_limit_gsoil, l_inland, & dz_pdm, b_pdm, s_pdm, slope_pdm_max, ti_max, ti_wetl, zw_max, nfita @@ -231,6 +233,9 @@ SUBROUTINE print_nlist_jules_hydrology() WRITE(lineBuffer, *) ' l_limit_gsoil = ', l_limit_gsoil CALL jules_print('jules_hydrology', lineBuffer) +WRITE(lineBuffer, *) ' l_inland = ', l_inland +CALL jules_print('jules_hydrology', lineBuffer) + WRITE(lineBuffer, *) ' dz_pdm = ', dz_pdm CALL jules_print('jules_hydrology', lineBuffer) @@ -297,7 +302,7 @@ SUBROUTINE read_nml_jules_hydrology (unitnumber) INTEGER, PARAMETER :: no_of_types = 3 INTEGER, PARAMETER :: n_int = 1 INTEGER, PARAMETER :: n_real = 7 -INTEGER, PARAMETER :: n_log = 8 +INTEGER, PARAMETER :: n_log = 9 TYPE :: my_namelist SEQUENCE @@ -317,6 +322,7 @@ SUBROUTINE read_nml_jules_hydrology (unitnumber) LOGICAL :: l_var_rainfrac LOGICAL :: l_wetland_unfrozen LOGICAL :: l_limit_gsoil + LOGICAL :: l_inland END TYPE my_namelist TYPE (my_namelist) :: my_nml @@ -352,6 +358,7 @@ SUBROUTINE read_nml_jules_hydrology (unitnumber) my_nml % l_var_rainfrac = l_var_rainfrac my_nml % l_wetland_unfrozen = l_wetland_unfrozen my_nml % l_limit_gsoil = l_limit_gsoil + my_nml % l_inland = l_inland END IF @@ -377,6 +384,7 @@ SUBROUTINE read_nml_jules_hydrology (unitnumber) l_var_rainfrac = my_nml % l_var_rainfrac l_wetland_unfrozen = my_nml % l_wetland_unfrozen l_limit_gsoil = my_nml % l_limit_gsoil + l_inland = my_nml % l_inland END IF diff --git a/src/control/shared/jules_irrig_mod.F90 b/src/control/shared/jules_irrig_mod.F90 index 4f5b8650..74cd8f3a 100644 --- a/src/control/shared/jules_irrig_mod.F90 +++ b/src/control/shared/jules_irrig_mod.F90 @@ -59,6 +59,17 @@ MODULE jules_irrig_mod INTEGER :: nstep_irrig = imdi ! Timestep for irrigation (number of model timesteps) +INTEGER :: irrig_option = imdi + ! Options for applying irrigation + +INTEGER, PARAMETER :: & + no_irrigation = 0, & + ! No irrigation + frac_based_irrigation = 1, & + ! Not currently available; will replace l_irrig_dmd in a future release + tile_based_irrigation = 2 + ! Apply irrigation to available irrigated surface types + ! Non-namelist variable but arrays used elsewhere after namelists are ! read in - moved out of crop_vars_mod (Hopefully this is the best place ! to put these). @@ -70,7 +81,7 @@ MODULE jules_irrig_mod !----------------------------------------------------------------------------- NAMELIST / jules_irrig/ l_irrig_dmd, l_irrig_limit, irr_crop, & frac_irrig_all_tiles, nirrtile, irrigtiles, & - set_irrfrac_on_irrtiles, nstep_irrig + set_irrfrac_on_irrtiles, nstep_irrig, irrig_option CHARACTER(LEN=*), PARAMETER, PRIVATE :: ModuleName='JULES_IRRIG_MOD' @@ -243,6 +254,33 @@ SUBROUTINE check_jules_irrig() "set_irrfrac_on_irrtiles to be true ") END IF +! irrig_option can be used when l_irrig_dmd = F +IF ( irrig_option /= imdi ) THEN + SELECT CASE ( irrig_option ) + CASE ( no_irrigation, tile_based_irrigation ) + ! These are allowed options + CASE ( frac_based_irrigation ) + errcode = 101 + WRITE(jules_message,'(A,I0)') & + "Fraction based irrigation is not yet available. irrig_option = ", & + irrig_option + CALL ereport(RoutineName, errcode, jules_message) + CASE DEFAULT + errcode = 101 + WRITE(jules_message,'(A,I0)') & + "Invalid value for irrig_option. irrig_option = ", irrig_option + CALL ereport(RoutineName, errcode, jules_message) + END SELECT +END IF + +IF ( l_irrig_dmd .AND. irrig_option /= imdi ) THEN + errcode = 101 + WRITE(jules_message,'(A,I0)') & + "l_irrig_dmd and irrig_option cannot be used at the same time. " // & + "irrig_option = ", irrig_option + CALL ereport(RoutineName, errcode, jules_message) +END IF + END SUBROUTINE check_jules_irrig #endif @@ -282,6 +320,9 @@ SUBROUTINE print_nlist_jules_irrig() WRITE(lineBuffer,*)' nstep_irrig = ',nstep_irrig CALL jules_print('jules_irrig',lineBuffer) +WRITE(lineBuffer,*)' irrig_option = ',irrig_option +CALL jules_print('jules_irrig',lineBuffer) + CALL jules_print('jules_irrig', & '- - - - - - end of namelist - - - - - -') @@ -323,7 +364,7 @@ SUBROUTINE read_nml_jules_irrig (unitnumber) ! set number of each type of variable in my_namelist type INTEGER, PARAMETER :: no_of_types = 2 INTEGER, PARAMETER :: n_log = 4 -INTEGER, PARAMETER :: n_int = 3 + npft_max +INTEGER, PARAMETER :: n_int = 4 + npft_max TYPE :: my_namelist SEQUENCE @@ -335,6 +376,7 @@ SUBROUTINE read_nml_jules_irrig (unitnumber) INTEGER :: nirrtile INTEGER :: irrigtiles(npft_max) INTEGER :: nstep_irrig + INTEGER :: irrig_option END TYPE my_namelist TYPE (my_namelist) :: my_nml @@ -359,6 +401,7 @@ SUBROUTINE read_nml_jules_irrig (unitnumber) my_nml % nirrtile = nirrtile my_nml % irrigtiles = irrigtiles my_nml % nstep_irrig = nstep_irrig + my_nml % irrig_option = irrig_option END IF CALL mpl_bcast(my_nml,1,mpl_nml_type,0,my_comm,icode) @@ -373,6 +416,7 @@ SUBROUTINE read_nml_jules_irrig (unitnumber) nirrtile = my_nml % nirrtile irrigtiles = my_nml % irrigtiles nstep_irrig = my_nml % nstep_irrig + irrig_option = my_nml % irrig_option END IF CALL mpl_type_free(mpl_nml_type,icode) diff --git a/src/control/shared/jules_print_mgr.F90 b/src/control/shared/jules_print_mgr.F90 index 5944b429..25e90e3d 100644 --- a/src/control/shared/jules_print_mgr.F90 +++ b/src/control/shared/jules_print_mgr.F90 @@ -49,7 +49,7 @@ SUBROUTINE jules_print(src,line,level) INTEGER, OPTIONAL :: level #if defined(UM_JULES) -CALL umPrint(TRIM(line),src = src,model='jules',level = level) +CALL umPrint( TRIM(src)//': '//TRIM(line), model='jules', level = level ) #else CALL log_info(TRIM(src),TRIM(line)) #endif diff --git a/src/control/shared/jules_rivers_mod.F90 b/src/control/shared/jules_rivers_mod.F90 index 44f80d97..38b019f9 100644 --- a/src/control/shared/jules_rivers_mod.F90 +++ b/src/control/shared/jules_rivers_mod.F90 @@ -122,8 +122,6 @@ MODULE jules_rivers_mod LOGICAL :: & l_rivers = .FALSE. & ! Switch for runoff routing - ,l_inland = .FALSE. & - ! Control rerouting of inland basin water ,l_riv_overbank = .FALSE. & ! Logical to control overbank inundation ,l_outflow_per_river = .FALSE. & @@ -138,7 +136,12 @@ MODULE jules_rivers_mod ! so outflow_per_river should be present in jules_output. ! Both cases are checked once the latter namelist is read. ! Additionally, rivers_outflow_rp is added to the dump. - + ,l_inland_outflow = .FALSE. & + ! Internal flag which is set to TRUE when at least one of the + ! following is true: + ! - OASIS send field contains 'inland_outflow' + ! - The diagnostic 'inland_outflow_rp' has been requested + ! - UM-TRIP when l_inland = T ,l_init_storage = .FALSE. ! Set to true if an initial river storage ancillary file is ! used @@ -235,7 +238,7 @@ MODULE jules_rivers_mod ! Single namelist definition for UM and standalone !------------------------------------------------------------------------------ NAMELIST /jules_rivers/ & - l_rivers, l_inland, l_riv_overbank, l_adapt_timestep, l_sea_level, & + l_rivers, l_riv_overbank, l_adapt_timestep, l_sea_level, & l_vary_sea_level, i_river_vn, nstep_rivers, & trip_globe_shape, & cland, criver, cbland, cbriver, runoff_factor, retl, retr, & @@ -451,6 +454,8 @@ MODULE jules_rivers_mod ! Maps ocean outflow gridboxes to the river they ! belong to (on river points) ! Used for coupling to ocean model + REAL(KIND=real_jlslsm), ALLOCATABLE :: land_fraction_rp(:) + ! Land fraction on river points REAL(KIND=real_jlslsm), ALLOCATABLE :: rivers_sto_rp(:) ! Water storage (kg) REAL(KIND=real_jlslsm), ALLOCATABLE :: rivers_lat_rp(:) @@ -562,12 +567,15 @@ MODULE jules_rivers_mod ! from an ancillary on the 2d Rivers grid. ! The ancillary can either be for a single time or ! a 12-month climatology + REAL(KIND=real_jlslsm), ALLOCATABLE :: land_fraction_2d(:,:) + ! Land fraction on global 2D grid + + ! Arrays defined on 1d river points vectors REAL(KIND=real_jlslsm), ALLOCATABLE :: rivers_xgrid(:) ! Coordinate values for x-dimension of rivers grid REAL(KIND=real_jlslsm), ALLOCATABLE :: rivers_ygrid(:) ! Coordinate values for y-dimension of rivers grid - ! Arrays defined on 1d river points vectors REAL(KIND=real_jlslsm), ALLOCATABLE :: rfm_flowobs1_rp(:) ! Initial (observed) river flow (kg m-2 s-1) REAL(KIND=real_jlslsm), ALLOCATABLE :: rfm_surfstore_rp(:) @@ -586,6 +594,8 @@ MODULE jules_rivers_mod ! Gridbox area of each river grid pixel (m2) REAL(KIND=real_jlslsm), ALLOCATABLE :: rivers_outflow_rp(:) ! River outflow into the ocean (kg s-1) + REAL(KIND=real_jlslsm), ALLOCATABLE :: inland_outflow_rp(:) + ! Inland basin flow into soil moisture (kg m-2 s-1) END TYPE rivers_data_type TYPE :: rivers_type @@ -602,6 +612,8 @@ MODULE jules_rivers_mod INTEGER, POINTER :: rivers_next_rp(:) INTEGER, POINTER :: rivers_seq_rp(:) INTEGER, POINTER :: rivers_outflow_number_rp(:) + REAL(KIND=real_jlslsm), POINTER :: land_fraction_2d(:,:) + REAL(KIND=real_jlslsm), POINTER :: land_fraction_rp(:) REAL(KIND=real_jlslsm), POINTER :: rivers_sto_rp(:) REAL(KIND=real_jlslsm), POINTER :: rivers_lat_rp(:) REAL(KIND=real_jlslsm), POINTER :: rivers_lon_rp(:) @@ -651,6 +663,7 @@ MODULE jules_rivers_mod REAL(KIND=real_jlslsm), POINTER :: rfm_baseflow_rp(:) REAL(KIND=real_jlslsm), POINTER :: rivers_boxareas_rp(:) REAL(KIND=real_jlslsm), POINTER :: rivers_outflow_rp(:) + REAL(KIND=real_jlslsm), POINTER :: inland_outflow_rp(:) END TYPE rivers_type CONTAINS @@ -1161,8 +1174,6 @@ SUBROUTINE print_nlist_jules_rivers() WRITE(lineBuffer,*)' l_rivers = ',l_rivers CALL jules_print('jules_rivers',lineBuffer) -WRITE(lineBuffer,*)' l_inland = ',l_inland -CALL jules_print('jules_rivers',lineBuffer) WRITE(lineBuffer,*)' l_riv_overbank = ',l_riv_overbank CALL jules_print('jules_rivers',lineBuffer) WRITE(lineBuffer,*)' i_river_vn = ',i_river_vn @@ -1304,7 +1315,7 @@ SUBROUTINE read_nml_jules_rivers(unit_in) INTEGER, PARAMETER :: no_of_types = 3 INTEGER, PARAMETER :: n_int = 5 INTEGER, PARAMETER :: n_real = 12 -INTEGER, PARAMETER :: n_log = 6 +INTEGER, PARAMETER :: n_log = 5 TYPE :: my_namelist SEQUENCE @@ -1326,7 +1337,6 @@ SUBROUTINE read_nml_jules_rivers(unit_in) REAL(KIND=real_jlslsm) :: rivers_speed REAL(KIND=real_jlslsm) :: runoff_factor LOGICAL :: l_adapt_timestep - LOGICAL :: l_inland LOGICAL :: l_riv_overbank LOGICAL :: l_rivers LOGICAL :: l_sea_level @@ -1365,7 +1375,6 @@ SUBROUTINE read_nml_jules_rivers(unit_in) my_nml % rivers_speed = rivers_speed my_nml % runoff_factor = runoff_factor my_nml % l_adapt_timestep = l_adapt_timestep - my_nml % l_inland = l_inland my_nml % l_riv_overbank = l_riv_overbank my_nml % l_rivers = l_rivers my_nml % l_sea_level = l_sea_level @@ -1393,7 +1402,6 @@ SUBROUTINE read_nml_jules_rivers(unit_in) rivers_speed = my_nml % rivers_speed runoff_factor = my_nml % runoff_factor l_adapt_timestep = my_nml % l_adapt_timestep - l_inland = my_nml % l_inland l_riv_overbank = my_nml % l_riv_overbank l_rivers = my_nml % l_rivers l_sea_level = my_nml % l_sea_level diff --git a/src/control/shared/jules_soil_biogeochem_mod.F90 b/src/control/shared/jules_soil_biogeochem_mod.F90 index 48944fe5..4b6588f6 100644 --- a/src/control/shared/jules_soil_biogeochem_mod.F90 +++ b/src/control/shared/jules_soil_biogeochem_mod.F90 @@ -37,7 +37,7 @@ MODULE jules_soil_biogeochem_mod !----------------------------------------------------------------------------- ! Parameters identifying alternative soil biogeochemistry models. ! (The "bgc" is for biogeochemistry!) -! These should be >0 and unique. +! These should be > 0 and unique. INTEGER, PARAMETER :: & soil_model_1pool = 1, & ! A 1-pool model of soil carbon turnover in which the pool is not @@ -79,8 +79,10 @@ MODULE jules_soil_biogeochem_mod ! Namelist variables used by both 1-pool and 4-pool models. !----------------------------------------------------------------------------- REAL(KIND=real_jlslsm) :: & - q10_soil = rmdi + q10_soil = rmdi, & ! Q10 factor for soil respiration. + heat_of_respiration = rmdi + ! The heat released during respiration (J/kgC) LOGICAL :: & l_layeredC = .FALSE., & @@ -105,18 +107,21 @@ MODULE jules_soil_biogeochem_mod ! l_soil_resp_lev2=T means uses T and moisture from layer 2 ! l_soil_resp_lev2=F means uses T and moisture from layer 1 l_ch4_interactive = .FALSE., & - ! Switch to couple methane release into the carbon cycle - ! CH4 flux will be removed from soil carbon pools. - ! Must have l_ch4_tlayered = .TRUE. + ! Switch to couple methane release into the carbon cycle + ! CH4 flux will be removed from soil carbon pools. + ! Must have l_ch4_tlayered = .TRUE. l_ch4_tlayered = .FALSE., & - ! Switch to calculate CH4 according to layered soil temperature - ! instead of top 1m average. + ! Switch to calculate CH4 according to layered soil temperature + ! instead of top 1m average. l_ch4_microbe = .FALSE., & - ! Switch to use microbial methane production scheme - l_label_frac_cs = .FALSE. - ! Need l_layeredc=TRUE - ! Switch to determine whether a subset of the soil carbon is labelled - ! and traced throughout the simulation + ! Switch to use microbial methane production scheme + l_label_frac_cs = .FALSE., & + ! Need l_layeredc=TRUE + ! Switch to determine whether a subset of the soil carbon is labelled + ! and traced throughout the simulation + l_bgc_heat = .FALSE. + ! Switch to control biogeochemical heating. If True the heat of + ! respiration is added to the soils. INTEGER :: & ch4_substrate = ch4_substrate_soil, & @@ -126,6 +131,16 @@ MODULE jules_soil_biogeochem_mod ! If methane is calculated from individual soil layer temperatures, this ! will be equal to sm_levels (depends on l_ch4_tlayered) +INTEGER :: & + cs_decomp_soil_moist_func = 0 + ! Switch for response of soil carbon decomposition to soil moisture + ! cs_decomp_soil_moist_func=0: Method of Clark et al (2011) + ! cs_decomp_soil_moist_func=1: Method of Chadburn et al (2022) + +REAL(KIND=real_jlslsm) :: & + fsthsat_cs_decomp_opt1 = rmdi + ! decomposition at soil saturatation for cs_decomp_soil_moist_func=1 + !----------------------------------------------------------------------------- ! Namelist variables used only by the 1-pool model. !----------------------------------------------------------------------------- @@ -237,10 +252,12 @@ MODULE jules_soil_biogeochem_mod soil_bgc_model, ch4_substrate, kaps, kaps_4pool, q10_soil, sorp, & n_inorg_turnover, diff_n_pft, tau_resp, tau_lit, bio_hum_CN, l_layeredC, & l_q10, l_soil_resp_lev2, l_ch4_interactive, l_ch4_tlayered, l_ch4_microbe, & + cs_decomp_soil_moist_func, & t0_ch4, const_ch4_cs, const_ch4_npp, const_ch4_resps, q10_ch4_cs, & q10_ch4_npp, q10_ch4_resps, tau_ch4, ch4_cpow, k2_ch4, kd_ch4, rho_ch4, & q10_mic_ch4, cue_ch4, mu_ch4, alpha_ch4, frz_ch4, ev_ch4, q10_ev_ch4, & - l_label_frac_cs, z_burn_max + l_label_frac_cs, z_burn_max, l_bgc_heat, heat_of_respiration, & + fsthsat_cs_decomp_opt1 CHARACTER(LEN=*), PARAMETER, PRIVATE :: & ModuleName = 'JULES_SOIL_BIOGEOCHEM_MOD' @@ -274,7 +291,7 @@ SUBROUTINE check_jules_soil_biogeochem() IMPLICIT NONE ! Local scalar parameters. -INTEGER :: errorstatus +INTEGER :: errorstatus, warningstatus CHARACTER(LEN=*), PARAMETER :: & RoutineName = 'CHECK_JULES_SOIL_BIOGEOCHEM' ! Name of this procedure. @@ -316,6 +333,31 @@ SUBROUTINE check_jules_soil_biogeochem() 'the layered soil temperature calculation (l_ch4_tlayered)' ) END IF +! Check if l_q10=T to use l_bgc_heat +IF ( .NOT. l_q10 .AND. l_bgc_heat ) THEN + CALL ereport( TRIM(RoutineName), warningstatus, & + 'To use the biogenic heating of soil carbon decomposition' // & + 'you must use l_q10=.true. and l_bgc_heat=.true.' ) +END IF + +! Check if l_layeredC=T to use l_bgc_heat +IF ( .NOT. l_layeredc .AND. l_bgc_heat ) THEN + CALL ereport( TRIM(RoutineName), errorstatus, & + 'To use the biogenic heating of soil carbon decomposition' // & + 'you must use l_layeredc=.true. and l_bgc_heat=.true.' ) +END IF + +! Check if l_bgc_heat = T, heat_of_respiration is 3.7e09 +IF ( l_bgc_heat ) THEN + IF ( ABS( heat_of_respiration - rmdi ) < EPSILON(1.0) ) THEN + CALL ereport(RoutineName, errorstatus, "heat_of_respiration not found") + ELSE IF ( heat_of_respiration < 0.0 ) THEN + CALL ereport(RoutineName, errorstatus, & + "To use the biogenic heating of soil carbon decomposition" // & + "the heat_of_respiration must be positive.'") + END IF +END IF + ! Check that certain soil models are only used with a vegetation model. SELECT CASE ( soil_bgc_model ) CASE ( soil_model_ecosse, soil_model_4pool ) @@ -356,6 +398,23 @@ SUBROUTINE check_jules_soil_biogeochem() END SELECT END IF +! Check that cs_decomp_soil_moist_func is only used with 1-pool and 4-pool models. +! if cs_decomp_soil_moist_func = 1, fsthsat_cs_decomp_opt1 is set and between 0 and 1 +IF ( cs_decomp_soil_moist_func == 1 ) THEN + SELECT CASE ( soil_bgc_model ) + CASE ( soil_model_1pool, soil_model_4pool ) + IF ( ABS( fsthsat_cs_decomp_opt1 - rmdi ) < EPSILON(1.0) ) THEN + CALL ereport(RoutineName, errorstatus, "fsthsat_cs_decomp_opt1 not found") + ELSE IF ( fsthsat_cs_decomp_opt1 < 0.0 .OR. fsthsat_cs_decomp_opt1 > 1.0 ) THEN + CALL ereport(RoutineName, errorstatus, & + "fsthsat_cs_decomp_opt1 must lie in the range 0.0 to 1.0") + END IF + CASE DEFAULT + CALL ereport(TRIM(RoutineName), errorstatus, & + 'cs_decomp_soil_moist_func should be 0 with this soil model.') + END SELECT +END IF + ! Need layered C to trace a fraction of the soil C IF ( l_label_frac_cs .AND. .NOT. l_layeredc ) THEN CALL ereport(TRIM(RoutineName), errorstatus, & @@ -647,6 +706,9 @@ SUBROUTINE print_nlist_jules_soil_biogeochem() WRITE(lineBuffer,*) ' soil_bgc_model = ', soil_bgc_model CALL jules_print('jules_soil_biogeochem_mod',lineBuffer) +WRITE(lineBuffer, *) ' l_bgc_heat = ', l_bgc_heat +CALL jules_print('jules_soil_biogeochem_mod', lineBuffer) + WRITE(lineBuffer, *) ' l_layeredC = ', l_layeredC CALL jules_print('jules_soil_biogeochem_mod',lineBuffer) @@ -668,6 +730,9 @@ SUBROUTINE print_nlist_jules_soil_biogeochem() WRITE(lineBuffer, *) ' kaps_4pool = ', kaps_4pool CALL jules_print('jules_soil_biogeochem_mod', lineBuffer) +WRITE(lineBuffer, *) ' fsthsat_cs_decomp_opt1 = ', fsthsat_cs_decomp_opt1 +CALL jules_print('jules_soil_biogeochem_mod', lineBuffer) + WRITE(lineBuffer, *) ' sorp = ', sorp CALL jules_print('jules_soil_biogeochem_mod', lineBuffer) @@ -695,6 +760,9 @@ SUBROUTINE print_nlist_jules_soil_biogeochem() WRITE(lineBuffer, *) ' l_ch4_tlayered = ', l_ch4_tlayered CALL jules_print('jules_soil_biogeochem_mod',lineBuffer) +WRITE(lineBuffer, *) ' cs_decomp_soil_moist_func = ', cs_decomp_soil_moist_func +CALL jules_print('jules_soil_biogeochem_mod',lineBuffer) + WRITE(lineBuffer, *) ' tau_ch4 = ', tau_ch4 CALL jules_print('jules_soil_biogeochem_mod',lineBuffer) @@ -758,6 +826,9 @@ SUBROUTINE print_nlist_jules_soil_biogeochem() WRITE(lineBuffer, *) 'q10_ch4_resps = ', q10_ch4_resps CALL jules_print('jules_soil_biogeochem_mod', lineBuffer) +WRITE(lineBuffer, *) ' heat_of_respiration = ', heat_of_respiration +CALL jules_print('jules_soil_biogeochem_mod', lineBuffer) + CALL jules_print('jules_soil_biogeochem_mod', & '- - - - - - end of namelist - - - - - -') @@ -801,17 +872,19 @@ SUBROUTINE read_nml_jules_soil_biogeochem (unitnumber) ! set number of each type of variable in my_namelist type INTEGER, PARAMETER :: no_of_types = 3 -INTEGER, PARAMETER :: n_int = 2 -INTEGER, PARAMETER :: n_real = 28 + 4 -INTEGER, PARAMETER :: n_log = 7 +INTEGER, PARAMETER :: n_int = 3 +INTEGER, PARAMETER :: n_real = 30 + 4 +INTEGER, PARAMETER :: n_log = 8 TYPE :: my_namelist SEQUENCE INTEGER :: soil_bgc_model INTEGER :: ch4_substrate + INTEGER :: cs_decomp_soil_moist_func REAL(KIND=real_jlslsm) :: q10_soil REAL(KIND=real_jlslsm) :: kaps REAL(KIND=real_jlslsm) :: kaps_4pool(4) + REAL(KIND=real_jlslsm) :: fsthsat_cs_decomp_opt1 REAL(KIND=real_jlslsm) :: sorp REAL(KIND=real_jlslsm) :: bio_hum_cn REAL(KIND=real_jlslsm) :: n_inorg_turnover @@ -837,6 +910,7 @@ SUBROUTINE read_nml_jules_soil_biogeochem (unitnumber) REAL(KIND=real_jlslsm) :: alpha_ch4 REAL(KIND=real_jlslsm) :: ev_ch4 REAL(KIND=real_jlslsm) :: q10_ev_ch4 + REAL(KIND=real_jlslsm) :: heat_of_respiration REAL(KIND=real_jlslsm) :: z_burn_max LOGICAL :: l_layeredC LOGICAL :: l_label_frac_cs @@ -845,6 +919,7 @@ SUBROUTINE read_nml_jules_soil_biogeochem (unitnumber) LOGICAL :: l_ch4_interactive LOGICAL :: l_ch4_tlayered LOGICAL :: l_ch4_microbe + LOGICAL :: l_bgc_heat END TYPE my_namelist TYPE (my_namelist) :: my_nml @@ -866,9 +941,11 @@ SUBROUTINE read_nml_jules_soil_biogeochem (unitnumber) my_nml % soil_bgc_model = soil_bgc_model my_nml % ch4_substrate = ch4_substrate + my_nml % cs_decomp_soil_moist_func = cs_decomp_soil_moist_func my_nml % q10_soil = q10_soil my_nml % kaps = kaps my_nml % kaps_4pool = kaps_4pool + my_nml % fsthsat_cs_decomp_opt1 = fsthsat_cs_decomp_opt1 my_nml % sorp = sorp my_nml % bio_hum_cn = bio_hum_cn my_nml % n_inorg_turnover = n_inorg_turnover @@ -884,6 +961,7 @@ SUBROUTINE read_nml_jules_soil_biogeochem (unitnumber) my_nml % l_ch4_interactive = l_ch4_interactive my_nml % l_ch4_tlayered = l_ch4_tlayered my_nml % l_ch4_microbe = l_ch4_microbe + my_nml % l_bgc_heat = l_bgc_heat my_nml % t0_ch4 = t0_ch4 my_nml % const_ch4_cs = const_ch4_cs my_nml % const_ch4_npp = const_ch4_npp @@ -902,6 +980,7 @@ SUBROUTINE read_nml_jules_soil_biogeochem (unitnumber) my_nml % ev_ch4 = ev_ch4 my_nml % q10_ev_ch4 = q10_ev_ch4 my_nml % z_burn_max = z_burn_max + my_nml % heat_of_respiration = heat_of_respiration END IF @@ -910,9 +989,11 @@ SUBROUTINE read_nml_jules_soil_biogeochem (unitnumber) IF (mype /= 0) THEN soil_bgc_model = my_nml % soil_bgc_model ch4_substrate = my_nml % ch4_substrate + cs_decomp_soil_moist_func = my_nml % cs_decomp_soil_moist_func q10_soil = my_nml % q10_soil kaps = my_nml % kaps kaps_4pool = my_nml % kaps_4pool + fsthsat_cs_decomp_opt1 = my_nml % fsthsat_cs_decomp_opt1 sorp = my_nml % sorp bio_hum_CN = my_nml % bio_hum_CN n_inorg_turnover = my_nml % n_inorg_turnover @@ -928,6 +1009,7 @@ SUBROUTINE read_nml_jules_soil_biogeochem (unitnumber) l_ch4_interactive = my_nml % l_ch4_interactive l_ch4_tlayered = my_nml % l_ch4_tlayered l_ch4_microbe = my_nml % l_ch4_microbe + l_bgc_heat = my_nml % l_bgc_heat t0_ch4 = my_nml % t0_ch4 const_ch4_cs = my_nml % const_ch4_cs const_ch4_npp = my_nml % const_ch4_npp @@ -946,6 +1028,8 @@ SUBROUTINE read_nml_jules_soil_biogeochem (unitnumber) ev_ch4 = my_nml % ev_ch4 q10_ev_ch4 = my_nml % q10_ev_ch4 z_burn_max = my_nml % z_burn_max + heat_of_respiration = my_nml % heat_of_respiration + END IF CALL mpl_type_free(mpl_nml_type,icode) diff --git a/src/control/shared/jules_soil_mod.F90 b/src/control/shared/jules_soil_mod.F90 index 711b8cd2..92d646a0 100644 --- a/src/control/shared/jules_soil_mod.F90 +++ b/src/control/shared/jules_soil_mod.F90 @@ -372,7 +372,7 @@ SUBROUTINE print_nlist_jules_soil() WRITE(lineBuffer, *) ' dzdeep = ', dzdeep CALL jules_print('jules_soil', lineBuffer) -WRITE(lineBuffer, *) ' dzsoil_io = ', dzsoil_io +WRITE(lineBuffer, *) ' dzsoil_io = ', dzsoil_io(1:sm_levels) CALL jules_print('jules_soil', lineBuffer) WRITE(lineBuffer, *) ' dzsoil_elev = ', dzsoil_elev diff --git a/src/control/shared/jules_surface_types_mod.F90 b/src/control/shared/jules_surface_types_mod.F90 index f2f80bad..19192d29 100644 --- a/src/control/shared/jules_surface_types_mod.F90 +++ b/src/control/shared/jules_surface_types_mod.F90 @@ -83,12 +83,16 @@ MODULE jules_surface_types_mod ! Index of surface type 'C3 crop' c3_pasture = imdi, & ! Index of surface type 'C3 pasture' + c3_irrig = imdi, & + ! Index of surface type 'C3 irrig' c4_grass = imdi, & ! Index of surface type 'C4 grass' c4_crop = imdi, & ! Index of surface type 'C4 crop' c4_pasture = imdi, & ! Index of surface type 'C4 pasture' + c4_irrig = imdi, & + ! Index of surface type 'C4 irrig' shrub = imdi, & ! Index of surface type 'shrub' shrub_dec = imdi, & @@ -109,9 +113,9 @@ MODULE jules_surface_types_mod NAMELIST / jules_surface_types/ & npft, ncpft, nnvg, brd_leaf, brd_leaf_dec, brd_leaf_eg_trop, & brd_leaf_eg_temp, ndl_leaf, ndl_leaf_dec, ndl_leaf_eg, c3_grass, & - c3_crop, c3_pasture, c4_grass, c4_crop, c4_pasture, shrub, shrub_dec, & - shrub_eg, urban, urban_canyon, urban_roof, lake, soil, ice, & - elev_ice, elev_rock, usr_type, tile_map_ids + c3_crop, c3_pasture, c3_irrig, c4_grass, c4_crop, c4_pasture, c4_irrig, & + shrub, shrub_dec, shrub_eg, urban, urban_canyon, urban_roof, lake, soil, & + ice, elev_ice, elev_rock, usr_type, tile_map_ids CHARACTER(LEN=*), PARAMETER, PRIVATE :: ModuleName='JULES_SURFACE_TYPES_MOD' @@ -199,12 +203,16 @@ SUBROUTINE check_jules_surface_types() RoutineName, errorstatus, nchecks ) CALL check_surface_type_value ( c3_pasture, "c3_pasture", 1, npft, & RoutineName, errorstatus, nchecks ) +CALL check_surface_type_value ( c3_irrig, "c3_irrig", 1, npft, & + RoutineName, errorstatus, nchecks ) CALL check_surface_type_value ( c4_grass, "c4_grass", 1, npft, & RoutineName, errorstatus, nchecks ) CALL check_surface_type_value ( c4_crop, "c4_crop", 1, npft, & RoutineName, errorstatus, nchecks ) CALL check_surface_type_value ( c4_pasture, "c4_pasture", 1, npft, & RoutineName, errorstatus, nchecks ) +CALL check_surface_type_value ( c4_irrig, "c4_irrig", 1, npft, & + RoutineName, errorstatus, nchecks ) CALL check_surface_type_value ( shrub, "shrub", 1, npft, & RoutineName, errorstatus, nchecks ) CALL check_surface_type_value ( shrub_dec, "shrub_dec", 1, npft, & @@ -353,6 +361,11 @@ SUBROUTINE print_nlist_jules_surface_types() CALL jules_print('jules_surface_types', lineBuffer) END IF +IF ( c3_irrig > 0 ) THEN + WRITE(lineBuffer, *) ' c3_irrig = ', c3_irrig + CALL jules_print('jules_surface_types', lineBuffer) +END IF + IF ( c4_grass > 0 ) THEN WRITE(lineBuffer, *) ' c4_grass = ', c4_grass CALL jules_print('jules_surface_types', lineBuffer) @@ -368,6 +381,11 @@ SUBROUTINE print_nlist_jules_surface_types() CALL jules_print('jules_surface_types', lineBuffer) END IF +IF ( c4_irrig > 0 ) THEN + WRITE(lineBuffer, *) ' c4_irrig = ', c4_irrig + CALL jules_print('jules_surface_types', lineBuffer) +END IF + IF ( shrub > 0 ) THEN WRITE(lineBuffer, *) ' shrub = ', shrub CALL jules_print('jules_surface_types', lineBuffer) @@ -474,7 +492,7 @@ SUBROUTINE read_nml_jules_surface_types (unitnumber) ! set number of each type of variable in my_namelist type INTEGER, PARAMETER :: no_of_types = 1 -INTEGER, PARAMETER :: n_int = 25 + (2 * ntype_max) + (2 * elev_tile_max) +INTEGER, PARAMETER :: n_int = 27 + (2 * ntype_max) + (2 * elev_tile_max) TYPE :: my_namelist SEQUENCE @@ -491,9 +509,11 @@ SUBROUTINE read_nml_jules_surface_types (unitnumber) INTEGER :: c3_grass INTEGER :: c3_crop INTEGER :: c3_pasture + INTEGER :: c3_irrig INTEGER :: c4_grass INTEGER :: c4_crop INTEGER :: c4_pasture + INTEGER :: c4_irrig INTEGER :: shrub INTEGER :: shrub_dec INTEGER :: shrub_eg @@ -536,9 +556,11 @@ SUBROUTINE read_nml_jules_surface_types (unitnumber) my_nml % c3_grass = c3_grass my_nml % c3_crop = c3_crop my_nml % c3_pasture = c3_pasture + my_nml % c3_irrig = c3_irrig my_nml % c4_grass = c4_grass my_nml % c4_crop = c4_crop my_nml % c4_pasture = c4_pasture + my_nml % c4_irrig = c4_irrig my_nml % shrub = shrub my_nml % shrub_dec = shrub_dec my_nml % shrub_eg = shrub_eg @@ -571,9 +593,11 @@ SUBROUTINE read_nml_jules_surface_types (unitnumber) c3_grass = my_nml % c3_grass c3_crop = my_nml % c3_crop c3_pasture = my_nml % c3_pasture + c3_irrig = my_nml % c3_irrig c4_grass = my_nml % c4_grass c4_crop = my_nml % c4_crop c4_pasture = my_nml % c4_pasture + c4_irrig = my_nml % c4_irrig shrub = my_nml % shrub shrub_dec = my_nml % shrub_dec shrub_eg = my_nml % shrub_eg diff --git a/src/control/shared/jules_vegetation_mod.F90 b/src/control/shared/jules_vegetation_mod.F90 index c92fcfda..bf222c07 100644 --- a/src/control/shared/jules_vegetation_mod.F90 +++ b/src/control/shared/jules_vegetation_mod.F90 @@ -819,6 +819,7 @@ END SUBROUTINE check_jules_vegetation SUBROUTINE print_nlist_jules_vegetation() USE jules_print_mgr, ONLY: jules_print +USE jules_surface_types_mod, ONLY: npft IMPLICIT NONE @@ -893,7 +894,7 @@ SUBROUTINE print_nlist_jules_vegetation() WRITE(lineBuffer,*) ' l_o3_damage = ',l_o3_damage CALL jules_print('jules_vegetation_mod',lineBuffer) -WRITE(lineBuffer,*) ' l_vegdrag_pft = ',l_vegdrag_pft +WRITE(lineBuffer,*) ' l_vegdrag_pft = ',l_vegdrag_pft(1:npft) CALL jules_print('jules_vegetation_mod',lineBuffer) WRITE(lineBuffer,*) ' l_rsl_scalar = ',l_rsl_scalar diff --git a/src/control/shared/land_tile_ids_mod.F90 b/src/control/shared/land_tile_ids_mod.F90 index 192b3f28..0c83574c 100644 --- a/src/control/shared/land_tile_ids_mod.F90 +++ b/src/control/shared/land_tile_ids_mod.F90 @@ -39,9 +39,11 @@ MODULE land_tile_ids_mod ! 3 - C3 Grass ! 301 - C3 Crop ! 302 - C3 Pasture +! 303 - C3 Irrig ! 4 - C4 Grass ! 401 - C4 Crop ! 402 - C4 Pasture +! 403 - C4 Irrig ! 5 - Shrub ! 501 - Shrub deciduous ! 502 - Shrub evergreen @@ -81,12 +83,16 @@ MODULE land_tile_ids_mod ! ID number of surface type 'C3 Crop' ,id_C3pasture = 302 & ! ID number of surface type 'C3 Pasture' + ,id_C3irrig = 303 & + ! ID number of surface type 'C3 Irrig' ,id_C4grass = 4 & ! ID number of surface type 'C4 Grass' ,id_C4crop = 401 & ! ID number of surface type 'C4 Crop' ,id_C4pasture = 402 & ! ID number of surface type 'C4 Pasture' + ,id_C4irrig = 403 & + ! ID number of surface type 'C4 Irrig' ,id_shrub = 5 & ! ID number of surface type 'Shrub' ,id_shrub_dec = 501 & @@ -161,9 +167,11 @@ SUBROUTINE set_surface_type_ids ( ) c3_grass, & c3_crop, & c3_pasture, & + c3_irrig, & c4_grass, & c4_crop, & c4_pasture, & + c4_irrig, & shrub, & shrub_dec, & shrub_eg, & @@ -215,12 +223,16 @@ SUBROUTINE set_surface_type_ids ( ) surface_type_ids(c3_crop ) = id_c3crop IF (c3_pasture > 0) & surface_type_ids(c3_pasture ) = id_c3pasture +IF (c3_irrig > 0) & + surface_type_ids(c3_irrig ) = id_c3irrig IF (c4_grass > 0) & surface_type_ids(c4_grass ) = id_c4grass IF (c4_crop > 0) & surface_type_ids(c4_crop ) = id_c4crop IF (c4_pasture > 0) & surface_type_ids(c4_pasture ) = id_c4pasture +IF (c4_irrig > 0) & + surface_type_ids(c4_irrig ) = id_c4irrig IF (shrub > 0) & surface_type_ids(shrub ) = id_shrub IF (shrub_dec > 0) & diff --git a/src/control/shared/surf_couple_explicit_mod.F90 b/src/control/shared/surf_couple_explicit_mod.F90 index 5052725b..973b4f9b 100644 --- a/src/control/shared/surf_couple_explicit_mod.F90 +++ b/src/control/shared/surf_couple_explicit_mod.F90 @@ -600,7 +600,8 @@ SUBROUTINE surf_couple_explicit( & trif_vars%n_leaf_pft,trif_vars%n_root_pft,trif_vars%n_stem_pft, & trif_vars%lai_bal_pft, & progs%gc_surft,canhc_surft,wt_ext_surft,flake, & - ainfo%surft_index,surft_pts,tile_frac,fluxes%fsmc_pft,emis_soil, & + ainfo%surft_index,surft_pts,tile_frac,ainfo%non_irrig_frac, & + fluxes%fsmc_pft,emis_soil, & trifctltype%growth_sug_pft,trifctltype%growth_sug_gb,progs%f_nsc_pft, & trifctltype%lwp_c_pft, trifctltype%psi_root_zone_pft, & ! OUT required for classic aerosols @@ -812,6 +813,7 @@ SUBROUTINE surf_couple_explicit( & flake(:,:) = 0.0 hcons_soilt(:,:) = 0.0 tile_frac(:,:) = 0.0 + ainfo%non_irrig_frac(:) = 1.0 progs_cbl%SoilTemp_CABLE(:,:,:) = 0.0 progs_cbl%SoilMoisture_CABLE(:,:,:) = 0.0 diff --git a/src/control/shared/surf_couple_extra_mod.F90 b/src/control/shared/surf_couple_extra_mod.F90 index ca35dc00..4b52d3c1 100644 --- a/src/control/shared/surf_couple_extra_mod.F90 +++ b/src/control/shared/surf_couple_extra_mod.F90 @@ -128,7 +128,7 @@ SUBROUTINE surf_couple_extra( & !Import interfaces to subroutines called USE hydrol_mod, ONLY: hydrol USE snow_mod, ONLY: snow -USE jules_rivers_mod, ONLY: l_rivers, l_inland, rivers_call +USE jules_rivers_mod, ONLY: l_rivers, rivers_call ! Code which isn't currently suitable for building into LFRic #if !defined(LFRIC) @@ -190,7 +190,8 @@ SUBROUTINE surf_couple_extra( & USE deposition_from_surf_couple_extra_mod, & ONLY: deposition_from_surf_couple_extra -USE jules_hydrology_mod, ONLY: l_hydrology, l_pdm, l_top, l_var_rainfrac +USE jules_hydrology_mod, ONLY: l_hydrology, l_pdm, l_top, l_var_rainfrac, & + l_inland USE lake_mod, ONLY: h_snow_sw_att & , trap_frozen & diff --git a/src/control/shared/surf_couple_implicit_mod.F90 b/src/control/shared/surf_couple_implicit_mod.F90 index 461271a4..fa1e4b16 100644 --- a/src/control/shared/surf_couple_implicit_mod.F90 +++ b/src/control/shared/surf_couple_implicit_mod.F90 @@ -438,7 +438,7 @@ SUBROUTINE surf_couple_implicit( & land_pts,ainfo%land_index,nsurft,ainfo%surft_index,surft_pts, & sm_levels, & canhc_surft,progs%canopy_surft,flake,progs%smc_soilt,tile_frac, & - wt_ext_surft,coast%fland,flandg, & + ainfo%non_irrig_frac,wt_ext_surft,coast%fland,flandg, & !IN values defining water tracer field dimensions n_wtrac_jls, n_evap_srce, & ! IN everything not covered so far : diff --git a/src/control/shared/surf_couple_rivers_mod.F90 b/src/control/shared/surf_couple_rivers_mod.F90 index ba24b206..56f5740b 100644 --- a/src/control/shared/surf_couple_rivers_mod.F90 +++ b/src/control/shared/surf_couple_rivers_mod.F90 @@ -59,7 +59,8 @@ SUBROUTINE surf_couple_rivers( & rivers_type, l_riv_overbank, & l_vary_sea_level, & ! UM only - l_inland, rivers_um_trip, rivers_first + l_inland_outflow, rivers_um_trip, & + rivers_first USE jules_model_environment_mod, ONLY: l_oasis_rivers USE timestep_mod, ONLY: timestep @@ -291,7 +292,7 @@ SUBROUTINE surf_couple_rivers( & #if defined(UM_JULES) !Pass inland flow to soil moisture every timestep -IF ( .NOT. l_inland) THEN +IF ( .NOT. l_inland_outflow) THEN DO j = 1, rows DO i = 1, row_length inlandout_atmos(i,j) = 0.0 @@ -675,7 +676,7 @@ SUBROUTINE surf_couple_rivers( & #if defined(UM_JULES) !compress inland basin outputs to land points only - IF (l_inland) THEN + IF (l_inland_outflow) THEN DO l = 1,land_pts j = (land_index(l) - 1) / row_length +1 i = land_index(l) - (j-1) * row_length diff --git a/src/control/standalone/check_unavailable_options_mod.F90 b/src/control/standalone/check_unavailable_options_mod.F90 index 05ed5893..198871ea 100644 --- a/src/control/standalone/check_unavailable_options_mod.F90 +++ b/src/control/standalone/check_unavailable_options_mod.F90 @@ -18,11 +18,11 @@ SUBROUTINE check_unavailable_options() USE jules_print_mgr, ONLY: jules_message, jules_print, jules_format, & PrNorm, newline USE missing_data_mod, ONLY: imdi -USE jules_hydrology_mod, ONLY: l_var_rainfrac +USE jules_hydrology_mod, ONLY: l_var_rainfrac, l_inland USE jules_surface_mod, ONLY: formdrag, no_drag, i_modiscopt, iscrntdiag, & srf_ex_cnv_gust, l_vary_z0m_soil USE jules_surface_types_mod, ONLY: tile_map_ids, ntype -USE jules_rivers_mod, ONLY: i_river_vn, l_inland, rivers_um_trip, & +USE jules_rivers_mod, ONLY: i_river_vn, rivers_um_trip, & trip_globe_shape USE jules_radiation_mod, ONLY: l_sea_alb_var_chl, l_dolr_land_black USE jules_vegetation_mod, ONLY: l_nrun_mid_trif, l_trif_init_accum @@ -38,6 +38,15 @@ SUBROUTINE check_unavailable_options() error_sum = 0 +! jules_hydrology +IF ( l_inland ) THEN + error_sum = error_sum + 1 + WRITE(jules_message,'(I0,A,L1)') error_sum, & + ": Re-routing inland basin water back to soil moisture is not " // & + " required (must not be selected) by standalone. l_inland = ", l_inland + CALL jules_print(RoutineName, jules_message, level = PrNorm) +END IF + ! jules_surface IF ( formdrag /= no_drag ) THEN error_sum = error_sum + 1 @@ -102,14 +111,6 @@ SUBROUTINE check_unavailable_options() CALL jules_print(RoutineName, jules_message, level = PrNorm) END IF -IF ( l_inland ) THEN - error_sum = error_sum + 1 - WRITE(jules_message,'(I0,A,L1)') error_sum, & - ": Re-routing inland basin water back to soil moisture is not " // & - " required (must not be selected) by standalone. l_inland = ", l_inland - CALL jules_print(RoutineName, jules_message, level = PrNorm) -END IF - IF ( trip_globe_shape /= imdi ) THEN error_sum = error_sum + 1 WRITE(jules_message,'(I0,A,L1)') error_sum, & diff --git a/src/control/um/check_unavailable_options_mod.F90 b/src/control/um/check_unavailable_options_mod.F90 index e044bd7f..5c39b56f 100644 --- a/src/control/um/check_unavailable_options_mod.F90 +++ b/src/control/um/check_unavailable_options_mod.F90 @@ -24,7 +24,8 @@ SUBROUTINE check_unavailable_options() USE jules_urban_mod, ONLY: l_urban_empirical USE jules_rivers_mod, ONLY: l_riv_overbank, l_rivers, i_river_vn, & rivers_um_trip, rivers_rfm -USE jules_soil_biogeochem_mod, ONLY: l_ch4_microbe, l_label_frac_cs +USE jules_soil_biogeochem_mod, ONLY: l_ch4_microbe, l_label_frac_cs, & + l_bgc_heat USE jules_soil_mod, ONLY: l_tile_soil, l_bedrock USE jules_surface_types_mod, ONLY: ncpft USE jules_water_resources_mod, ONLY: l_water_resources @@ -70,6 +71,15 @@ SUBROUTINE check_unavailable_options() END IF END IF +! jules_soil_biogeochem_mod +IF ( l_bgc_heat ) THEN + error_sum = error_sum + 1 + WRITE(jules_message,'(I0,A,L1)') error_sum, & + ": Biogenic heating scheme is only available to standalone JULES. " // & + "l_bgc_heat = ", l_bgc_heat + CALL jules_print(RoutineName, jules_message, level = PrNorm) +END IF + ! jules_soil_biogeochem_mod IF ( l_ch4_microbe ) THEN error_sum = error_sum + 1 diff --git a/src/initialisation/rivers-standalone/check_compatible_options_mod.F90 b/src/initialisation/rivers-standalone/check_compatible_options_mod.F90 index 99acfdf4..fef06851 100644 --- a/src/initialisation/rivers-standalone/check_compatible_options_mod.F90 +++ b/src/initialisation/rivers-standalone/check_compatible_options_mod.F90 @@ -24,7 +24,7 @@ SUBROUTINE check_compatible_options() !----------------------------------------------------------------------------- USE model_time_mod, ONLY: max_spinup_cycles - +USE check_compatible_options_rivers_mod, ONLY: check_compatible_options_rivers USE ereport_mod, ONLY: ereport USE jules_print_mgr, ONLY: jules_print, jules_message @@ -47,6 +47,9 @@ SUBROUTINE check_compatible_options() CALL jules_print(routinename, jules_message) END IF +! Call rivers compatible options routine +CALL check_compatible_options_rivers(ERROR) + IF ( ERROR /= 0 ) & CALL ereport(routinename, ERROR, & "Error(s) found in enabled science options and/or " // & diff --git a/src/initialisation/shared/allocate_jules_arrays.F90 b/src/initialisation/shared/allocate_jules_arrays.F90 index 2712494b..533ff2f7 100644 --- a/src/initialisation/shared/allocate_jules_arrays.F90 +++ b/src/initialisation/shared/allocate_jules_arrays.F90 @@ -77,11 +77,11 @@ SUBROUTINE allocate_jules_arrays(crop_vars_data,psparms_data,top_pdm_data, & USE crop_vars_mod, ONLY: crop_vars_alloc USE cropparm, ONLY: cropparm_alloc USE c_z0h_z0m, ONLY: c_z0h_z0m_alloc +USE c_irrigation_mod, ONLY: c_irrigation_alloc USE fire_vars_mod, ONLY: fire_vars_alloc USE fluxes_mod, ONLY: fluxes_alloc USE jules_vars_mod, ONLY: jules_vars_alloc USE jules_irrig_mod, ONLY: irrig_vars_alloc -USE metstats_mod, ONLY: metstats_allocate USE nvegparm, ONLY: nvegparm_alloc USE jules_chemvars_mod, ONLY: chemvars_alloc USE pftparm, ONLY: pftparm_alloc @@ -224,13 +224,13 @@ SUBROUTINE allocate_jules_arrays(crop_vars_data,psparms_data,top_pdm_data, & CALL c_z0h_z0m_alloc(ntype) +CALL c_irrigation_alloc(ntype) + CALL jules_vars_alloc(land_pts,ntype,nsurft,rad_nband,nsoilt,sm_levels, & t_i_length, t_j_length, npft, bl_levels, pdims_s, pdims, & l_albedo_obs, cansnowtile, l_deposition, & jules_vars_data) -CALL metstats_allocate(land_pts) - CALL nvegparm_alloc(nnvg) CALL pftparm_alloc(npft) diff --git a/src/initialisation/shared/check_compatible_options_mod.F90 b/src/initialisation/shared/check_compatible_options_mod.F90 index 9ff4d911..ff64bbec 100644 --- a/src/initialisation/shared/check_compatible_options_mod.F90 +++ b/src/initialisation/shared/check_compatible_options_mod.F90 @@ -25,12 +25,14 @@ SUBROUTINE check_compatible_options(call_type) USE jules_deposition_mod, ONLY: l_deposition USE jules_irrig_mod, ONLY: l_irrig_dmd, l_irrig_limit, & - nstep_irrig + nstep_irrig, irrig_option, & + tile_based_irrigation +USE jules_hydrology_mod, ONLY: l_inland USE jules_model_environment_mod, ONLY: lsm_id, cable USE jules_radiation_mod, ONLY: l_albedo_obs, l_snow_albedo, & l_albedo_obs -USE jules_rivers_mod, ONLY: i_river_vn, l_rivers, l_riv_overbank, & - rivers_camaflood, rivers_rfm +USE jules_rivers_mod, ONLY: i_river_vn, l_rivers, rivers_um_trip, & + l_inland_outflow USE jules_soil_biogeochem_mod, ONLY: l_layeredc, z_burn_max USE jules_soil_mod, ONLY: l_tile_soil, l_holdwater USE jules_surface_mod, ONLY: l_flake_model, l_aggregate @@ -43,6 +45,7 @@ SUBROUTINE check_compatible_options(call_type) USE land_tile_ids_mod, ONLY: surface_type_ids, ml_snow_type_ids USE nvegparm, ONLY: vf_nvg, albsnc_nvg, albsnf_nvgl, & albsnf_nvgu +USE c_irrigation_mod, ONLY: irrig_tile USE overbank_inundation_mod, ONLY: overbank_hypsometric, overbank_model, & overbank_quantiles, overbank_simple, & overbank_simple_rosgen @@ -54,6 +57,7 @@ SUBROUTINE check_compatible_options(call_type) jules_format, newline USE errormessagelength_mod, ONLY: errormessagelength +USE check_compatible_options_rivers_mod, ONLY: check_compatible_options_rivers USE check_unavailable_options_mod, ONLY: check_unavailable_options USE jules_water_tracers_mod, ONLY: l_wtrac_jls USE wtrac_check_options_mod, ONLY: wtrac_check_options @@ -80,7 +84,7 @@ SUBROUTINE check_compatible_options(call_type) ERROR = 0 ! Check for compatibility with soil tiling. At present it is not allowed for -! TRIFFID, INFERNO, and l_albedo_obs +! TRIFFID, INFERNO, l_albedo_obs or tile-based irrigation. IF ( l_triffid .AND. l_tile_soil ) THEN ERROR = 1 @@ -100,6 +104,12 @@ SUBROUTINE check_compatible_options(call_type) "l_albedo_obs not presently compatible with soil tiling") END IF +IF ( irrig_option == tile_based_irrigation .AND. l_tile_soil ) THEN + ERROR = 1 + CALL jules_print(routinename, & + "Tile-based irrigation is not compatible with soil tiling") +END IF + IF (l_irrig_dmd .AND. l_holdwater) THEN ERROR = 1 CALL jules_print(routinename, & @@ -179,6 +189,15 @@ SUBROUTINE check_compatible_options(call_type) ! These checks are not to be carried out when called from UM RECON or when the ! land surface model is CABLE, which has its own namelists. IF (check_tiles_namelists) THEN + ! Check to make sure that if l_irrig_dmd is TRUE then irrig_option related + ! variables are not set + IF (l_irrig_dmd) THEN + IF ( ANY( irrig_tile(1:ntype) > 0.0 ) ) THEN + ERROR = 1 + CALL jules_print(routinename, 'irrig_pft cannot be set if l_irrig_dmd=T') + END IF + END IF + IF ( l_moruses_storage ) THEN ! The roof surface needs to be either 0 (meaning "uncoupled" ! in this case) @@ -278,44 +297,14 @@ SUBROUTINE check_compatible_options(call_type) CALL wtrac_check_options(ERROR) END IF -! Overbank inundation can only be used if rivers are modelled. -IF ( l_riv_overbank .AND. .NOT. l_rivers ) THEN - ERROR = 1 - CALL jules_print(routinename, & - "Overbank inundation can only be used if river routing is modelled.") +! UM-TRIP inland outflow soil moisture correction (l_inland) requires +! inland outflow to be calculated. Internal switch needs to be set. +IF ( i_river_vn == rivers_um_trip .AND. l_inland ) THEN + l_inland_outflow = .TRUE. END IF -! Check that a suitable combination of river routing and overbank models is -! selected. -SELECT CASE ( overbank_model ) -CASE ( overbank_simple, overbank_simple_rosgen, overbank_hypsometric ) - ! Diagnostic overbank inundation can currently only be used with RFM river - ! routing. - IF ( i_river_vn /= rivers_rfm ) THEN - ERROR = 1 - CALL jules_print(routinename, & - "Diagnostic overbank inundation can only be used " // & - "with RFM river routing.") - END IF -CASE ( overbank_quantiles ) - ! Only CaMa-Flood can use elevation quantiles. - IF ( i_river_vn /= rivers_camaflood ) THEN - ERROR = 1 - CALL jules_print(routinename, & - "Elevation quantiles can only be used with CaMa-Flood routing.") - END IF -END SELECT - -! While CaMa-Flood routing is in development it can only be used with overbank -! inundation using quantiles. -IF ( l_rivers .AND. i_river_vn == rivers_camaflood .AND. & - ( .NOT. l_riv_overbank .OR. .NOT. overbank_model == overbank_quantiles ) & - ) THEN - ERROR = 1 - CALL jules_print(routinename, & - "CaMa-Flood routing can only be used with overbank " // & - "inundation using quantiles.") -END IF +! Call rivers compatible options routine +CALL check_compatible_options_rivers(ERROR) IF ( ERROR /= 0 ) THEN CALL ereport(routinename, ERROR, & diff --git a/src/initialisation/shared/check_compatible_options_rivers_mod.F90 b/src/initialisation/shared/check_compatible_options_rivers_mod.F90 new file mode 100644 index 00000000..05d9f0e9 --- /dev/null +++ b/src/initialisation/shared/check_compatible_options_rivers_mod.F90 @@ -0,0 +1,119 @@ +! *****************************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************************************** +MODULE check_compatible_options_rivers_mod + +IMPLICIT NONE + +CONTAINS + +SUBROUTINE check_compatible_options_rivers( ERROR ) +!----------------------------------------------------------------------------- +! Description: +! Checks that the enabled Rivers schemes are compatible. Refer to the JULES +! user manual for more information. +! +! Code Owner: Please refer to ModuleLeaders.txt +! This file belongs in TECHNICAL +! +! Code Description: +! Language: Fortran 90. +! This code is written to JULES coding standards v1. +!----------------------------------------------------------------------------- + +USE jules_rivers_mod, ONLY: i_river_vn, l_rivers, l_riv_overbank, & + rivers_camaflood, rivers_um_trip, & + rivers_rfm, rivers_trip, & + l_inland_outflow +USE jules_model_environment_mod, ONLY: lsm_id, rivers +USE overbank_inundation_mod, ONLY: overbank_hypsometric, overbank_model, & + overbank_quantiles, overbank_simple, & + overbank_simple_rosgen +USE coastal, ONLY: l_use_land_fraction + +USE jules_print_mgr, ONLY: jules_print, jules_message + +IMPLICIT NONE + +! Arguments +INTEGER, INTENT(IN OUT) :: ERROR ! Error indicator + +! Local +CHARACTER(LEN=*), PARAMETER :: routinename='CHECK_COMPATIBLE_OPTIONS_RIVERS' + +! Overbank inundation can only be used if rivers are modelled. +IF ( l_riv_overbank .AND. .NOT. l_rivers ) THEN + ERROR = 1 + CALL jules_print(routinename, & + "Overbank inundation can only be used if river routing is modelled.") +END IF + +! Check that a suitable combination of river routing and overbank models is +! selected. +SELECT CASE ( overbank_model ) +CASE ( overbank_simple, overbank_simple_rosgen, overbank_hypsometric ) + ! Diagnostic overbank inundation can currently only be used with RFM river + ! routing. + IF ( i_river_vn /= rivers_rfm ) THEN + ERROR = 1 + CALL jules_print(routinename, & + "Diagnostic overbank inundation can only be used " // & + "with RFM river routing.") + END IF +CASE ( overbank_quantiles ) + ! Only CaMa-Flood can use elevation quantiles. + IF ( i_river_vn /= rivers_camaflood ) THEN + ERROR = 1 + CALL jules_print(routinename, & + "Elevation quantiles can only be used with CaMa-Flood routing.") + END IF +END SELECT + +! While CaMa-Flood routing is in development it can only be used with overbank +! inundation using quantiles. +IF ( l_rivers .AND. i_river_vn == rivers_camaflood .AND. & + ( .NOT. l_riv_overbank .OR. .NOT. overbank_model == overbank_quantiles ) & + ) THEN + ERROR = 1 + CALL jules_print(routinename, & + "CaMa-Flood routing can only be used with overbank " // & + "inundation using quantiles.") +END IF + +! Check land fractions are only used in rivers-standalone when inland outflow +! calculation is requested. +IF ( l_use_land_fraction ) THEN + IF ( lsm_id /= rivers ) THEN + ERROR = 1 + ELSE + SELECT CASE ( i_river_vn ) + CASE ( rivers_trip ) + IF ( .NOT. l_inland_outflow ) ERROR = 1 + CASE DEFAULT + ERROR = 1 + END SELECT + END IF + WRITE(jules_message,'(A,1x,L1,2(1x,A,I0))') & + "Land fractions (l_use_land_fraction) only used to calculate inland " // & + "outflow in Rivers-standalone; l_inland_outflow = ", l_inland_outflow, & + "lsm_id = ", lsm_id, "i_river_vn = ", i_river_vn + CALL jules_print(routinename, jules_message) +END IF + +IF ( l_inland_outflow ) THEN + SELECT CASE ( i_river_vn ) + CASE ( rivers_trip, rivers_um_trip ) + ! Inland outflow calculation allowed for these + CASE DEFAULT + ERROR = 1 + WRITE(jules_message,'(A,1x,I0)') & + "Inland outflow can only be calculated by TRIP; i_river_vn = ", i_river_vn + CALL jules_print(routinename, jules_message) + END SELECT +END IF + +END SUBROUTINE check_compatible_options_rivers +END MODULE check_compatible_options_rivers_mod + diff --git a/src/initialisation/standalone/ancillaries/init_ancillaries_coupling_mod.F90 b/src/initialisation/standalone/ancillaries/init_ancillaries_coupling_mod.F90 index 94967496..2eacb777 100644 --- a/src/initialisation/standalone/ancillaries/init_ancillaries_coupling_mod.F90 +++ b/src/initialisation/standalone/ancillaries/init_ancillaries_coupling_mod.F90 @@ -25,12 +25,13 @@ MODULE init_ancillaries_coupling_mod SUBROUTINE check_ancil_rivers( dir_mouth, dir_inland_drainage, & direction_grid, & rivers_outflow_number, & - rivers_storage ) + rivers_storage, land_fraction_2d ) USE jules_rivers_mod, ONLY: nx_rivers, ny_rivers, n_rivers, i_river_vn, & - rivers_trip, l_inland, l_outflow_per_river, & - l_init_storage + rivers_trip, l_inland_outflow, & + l_outflow_per_river, l_init_storage USE jules_rivers_props_mod, ONLY: l_ignore_ancil_rivers_check +USE coastal, ONLY: l_use_land_fraction USE missing_data_mod, ONLY: imdi USE string_utils_mod, ONLY: to_string USE um_types, ONLY: real_jlslsm @@ -58,6 +59,10 @@ SUBROUTINE check_ancil_rivers( dir_mouth, dir_inland_drainage, & rivers_storage(nx_rivers,ny_rivers) ! River routing gridbox river storage (kg). +REAL(KIND=real_jlslsm), INTENT(IN) :: & + land_fraction_2d(nx_rivers,ny_rivers) + ! Fraction of land in each grid box + !------------------------------------------------------------------------------ ! Array arguments with INTENT(IN OUT) !------------------------------------------------------------------------------ @@ -75,6 +80,8 @@ SUBROUTINE check_ancil_rivers( dir_mouth, dir_inland_drainage, & ! Field to be checked for consistency check_river_ancil_ctrl(:,:), & ! Field used as a control to check for consistency + check_land_fractions(:,:), & + ! Field used to check land fractions for conststency match(:,:) ! Difference between test and control @@ -85,6 +92,7 @@ SUBROUTINE check_ancil_rivers( dir_mouth, dir_inland_drainage, & ALLOCATE ( check_river_ancil_test(nx_rivers,ny_rivers) ) ALLOCATE ( check_river_ancil_ctrl(nx_rivers,ny_rivers) ) +ALLOCATE ( check_land_fractions(nx_rivers,ny_rivers) ) ALLOCATE ( match(nx_rivers,ny_rivers) ) IF ( l_outflow_per_river ) THEN @@ -115,19 +123,19 @@ SUBROUTINE check_ancil_rivers( dir_mouth, dir_inland_drainage, & ! The River routing ancillary includes inland basin flow points. The River ! number ancillary supports inland basin flow for water conservation and hence ! each inland basin has an accompanying River number, although inland basin - ! water conservation is not currently implemented. When l_inland=F, outflow is - ! not calculated for inland basins hence we don't include it in the outflow - ! per river calculation. + ! water conservation is not currently implemented. When l_inland_outflow=F, + ! outflow is not calculated for inland basins hence we don't include it in the + ! outflow per river calculation. check_river_ancil_ctrl(:,:) = 0 WHERE ( direction_grid(:,:) == dir_inland_drainage ) check_river_ancil_ctrl(:,:) = 1 END WHERE ! Setting the river number to zero for inland basins, excludes them from the ! outflow per river calculation. - IF ( .NOT. l_inland ) THEN + IF ( .NOT. l_inland_outflow ) THEN CALL log_info(RoutineName, & 'Inland basins will not be included in outflow per river ' // & - 'calculation. l_inland = F.') + 'calculation. l_inland_outflow = F.') WHERE ( check_river_ancil_ctrl(:,:) == 1 ) rivers_outflow_number(:,:) = 0 END WHERE @@ -188,7 +196,7 @@ SUBROUTINE check_ancil_rivers( dir_mouth, dir_inland_drainage, & IF ( ERROR /= 0 ) THEN WRITE(jules_message, *) & - 'River routine & storage ancillary is not consistent. ' // & + 'River routing & storage ancillary are not consistent. ' // & 'Number of inconsistent points = ', ERROR CALL log_error(RoutineName, jules_message) ELSE @@ -197,7 +205,53 @@ SUBROUTINE check_ancil_rivers( dir_mouth, dir_inland_drainage, & END IF END IF -DEALLOCATE( check_river_ancil_test, check_river_ancil_ctrl, match ) +IF ( l_use_land_fraction) THEN + ! Make sure there are no land fractions at non-river points. + check_land_fractions(:,:) = 0 + WHERE ( land_fraction_2d(:,:) > 0 ) + check_land_fractions(:,:) = 1 ! Set points with land fractions to 1 + END WHERE + WHERE ( direction_grid(:,:) > 0 ) + check_land_fractions(:,:) = 0 ! Set points with rivers back to 0 + END WHERE + + ERROR = SUM( check_land_fractions ) + + IF ( ERROR /= 0 ) THEN + WRITE(jules_message, *) & + 'There are some land fractions at non-river points. ' // & + 'Number of inconsistent points = ', ERROR + CALL log_fatal(RoutineName, jules_message) + ELSE + CALL log_info(RoutineName, & + 'All non-zero land fraction points are modelled by rivers') + END IF + + ! Make sure there are no river direction points (not outflow) + ! at zero land fraction points. + check_land_fractions(:,:) = 0 + WHERE ( direction_grid(:,:) > 0 .AND. direction_grid(:,:) < dir_mouth ) + check_land_fractions(:,:) = 1 ! Set points with river directions to 1 + END WHERE + WHERE ( land_fraction_2d(:,:) > 0 ) + check_land_fractions(:,:) = 0 ! Set points with land fractions back to 0 + END WHERE + + ERROR = SUM( check_land_fractions ) + + IF ( ERROR /= 0 ) THEN + WRITE(jules_message, *) & + 'There are some river direction points at zero land fraction points. '//& + 'Number of inconsistent points = ', ERROR + CALL log_fatal(RoutineName, jules_message) + ELSE + CALL log_info(RoutineName, & + 'All river direction points have a non-zero land fraction.') + END IF +END IF + +DEALLOCATE( check_river_ancil_test, check_river_ancil_ctrl, match, & + check_land_fractions ) END SUBROUTINE check_ancil_rivers diff --git a/src/initialisation/standalone/ancillaries/init_rivers_process_data_mod.F90 b/src/initialisation/standalone/ancillaries/init_rivers_process_data_mod.F90 index 3f637d79..d2b50cfe 100644 --- a/src/initialisation/standalone/ancillaries/init_rivers_process_data_mod.F90 +++ b/src/initialisation/standalone/ancillaries/init_rivers_process_data_mod.F90 @@ -19,6 +19,7 @@ MODULE init_rivers_process_data_mod USE jules_rivers_mod, ONLY: inland_drainage, river_mouth, sea USE logging_mod, ONLY: log_fatal, log_info, log_warn +USE jules_print_mgr, ONLY: jules_message USE string_utils_mod, ONLY: to_string @@ -139,6 +140,8 @@ SUBROUTINE process_rivers_data( l_use_direction, rivers, rivers_data ) USE rivers_utils, ONLY: rivers_earth_area +USE coastal, ONLY: flandg, l_use_land_fraction + IMPLICIT NONE !------------------------------------------------------------------------------ @@ -269,6 +272,14 @@ SUBROUTINE process_rivers_data( l_use_direction, rivers, rivers_data ) l_reverse_y, rivers_reglatlon, rivers%global_land_index, & global_proj_x_land_work, river_xbound, river_ybound ) + !---------------------------------------------------------------------------- + ! Copy the land fraction from the land grid to the rivers grid. + ! We have already checked that the two grids have the same size. + !---------------------------------------------------------------------------- + IF ( l_use_land_fraction ) THEN + rivers%land_fraction_2d(:,:) = flandg(:,:) + END IF + !---------------------------------------------------------------------------- ! If necessary remap from river input grid to river grid. This handles river ! routing and overbank inundation variables. @@ -355,7 +366,7 @@ SUBROUTINE process_rivers_data( l_use_direction, rivers, rivers_data ) IF ( l_outflow_per_river .OR. l_init_storage ) THEN CALL check_ancil_rivers( dir_mouth, dir_inland_drainage, & direction_grid, rivers%rivers_outflow_number, & - rivers%rivers_storage ) + rivers%rivers_storage, rivers%land_fraction_2d ) END IF END IF ! is_master @@ -1138,6 +1149,10 @@ SUBROUTINE remap_ancil( nx_rivers, ny_rivers, rivers_dx, & CALL remap_field( nx_rivers, ny_rivers, rivers_dx, l_shift_x, l_reverse_y, & rivers%rivers_xgrid, rivers%rivers_storage ) +CASE ( 'land_fraction_2d' ) + CALL remap_field( nx_rivers, ny_rivers, rivers_dx, l_shift_x, l_reverse_y, & + rivers%rivers_xgrid, rivers%land_fraction_2d ) + CASE ( 'sequence' ) CALL remap_field( nx_rivers, ny_rivers, rivers_dx, l_shift_x, l_reverse_y, & rivers%rivers_xgrid, rivers%rivers_seq ) @@ -2219,6 +2234,8 @@ SUBROUTINE set_river_point_values( rivers_x1_input, & logn_mean_rp, logn_stdev_rp, overbank_hypsometric, & overbank_model, overbank_quantiles +USE coastal, ONLY: l_use_land_fraction + IMPLICIT NONE !------------------------------------------------------------------------------ @@ -2267,8 +2284,11 @@ SUBROUTINE set_river_point_values( rivers_x1_input, & irx, iry, ix, iy ! Index variables. +LOGICAL :: & + frac_chck(np_rivers) + ! Flag indicating coastal river points i.e. land fraction < 1.0. + !end of header -!------------------------------------------------------------------------------ !------------------------------------------------------------------------------ ! Scan the river grid for river points and add these to the 1-D river point @@ -2420,6 +2440,14 @@ SUBROUTINE set_river_point_values( rivers_x1_input, & NINT(rivers%rivers_outflow_number(irx,iry)) END IF + !------------------------------------------------------------------------ + ! If the grids are compatible then copy across the land fraction into + ! the rivers grid and test whether the model is using fractional land. + !------------------------------------------------------------------------ + IF ( l_use_land_fraction ) THEN + rivers%land_fraction_rp(ip) = rivers%land_fraction_2d(ix,iy) + END IF + !------------------------------------------------------------------------ ! Set overbank inundation ancillary variables, if required. !------------------------------------------------------------------------ @@ -2439,6 +2467,18 @@ SUBROUTINE set_river_point_values( rivers_x1_input, & END DO ! iy END DO ! ix +! Confirm that land fractions are being used +IF ( l_use_land_fraction ) THEN + frac_chck(:) = ( ( 1.0 - rivers%land_fraction_rp(:) ) > EPSILON(1.0) ) + IF ( ANY ( frac_chck(:) ) ) THEN + WRITE(jules_message,*) COUNT ( frac_chck(:) ), & + " coastal points have been detected." + CALL log_info(RoutineName, jules_message) + END IF +ELSE + CALL log_info(RoutineName, "Land fractions are not being used") +END IF + END SUBROUTINE set_river_point_values diff --git a/src/initialisation/standalone/ancillaries/init_rivers_props_mod.F90 b/src/initialisation/standalone/ancillaries/init_rivers_props_mod.F90 index 85d8774e..541870ba 100644 --- a/src/initialisation/standalone/ancillaries/init_rivers_props_mod.F90 +++ b/src/initialisation/standalone/ancillaries/init_rivers_props_mod.F90 @@ -61,6 +61,7 @@ SUBROUTINE init_rivers_props(rivers, rivers_data) x_dim_name, y_dim_name, is_climatology USE logging_mod, ONLY: log_fatal, log_info +USE jules_print_mgr, ONLY: jules_message USE model_grid_mod, ONLY: global_land_pts, l_coord_latlon @@ -69,6 +70,7 @@ SUBROUTINE init_rivers_props(rivers, rivers_data) USE overbank_inundation_mod, ONLY: & init_rosgen_vars, overbank_model, overbank_simple_rosgen, & overbank_hypsometric, overbank_quantiles +USE coastal, ONLY: l_use_land_fraction USE parallel_mod, ONLY: is_master_task, master_task_id @@ -145,6 +147,7 @@ SUBROUTINE init_rivers_props(rivers, rivers_data) use_sub_local ! A local copy of use_subgrid. + !------------------------------------------------------------------------------ ! Local array variables (not in namelist). !------------------------------------------------------------------------------ @@ -383,6 +386,21 @@ SUBROUTINE init_rivers_props(rivers, rivers_data) CALL mpi_bcast( l_init_storage, 1, mpi_logical, master_task_id, & mpi_local_comm, ERROR ) +!------------------------------------------------------------------------------ +! Check to see if the 2d rivers grid (dummy_grid) and the 2d land grid +! (local_grid) are the same. If so then we can copy the land fractions +! across from the land grid to the rivers grid in process_rivers_data. +!------------------------------------------------------------------------------ +IF ( l_use_land_fraction ) THEN + IF ( ( local_grid%nx /= dummy_grid%nx ) .OR. & + ( local_grid%ny /= dummy_grid%ny ) ) THEN + WRITE(jules_message,*) & + "JULES model grid must be the same as the 2D Rivers grid, " // & + "when l_use_land_fraction = T" + CALL log_fatal( RoutineName, jules_message ) + END IF +END IF + !------------------------------------------------------------------------------ ! Process the ancillary fields to identify river points and populate fields ! on river points. diff --git a/src/initialisation/standalone/ancillaries/jules_rivers_props_mod.F90 b/src/initialisation/standalone/ancillaries/jules_rivers_props_mod.F90 index a48715f2..d847d1a0 100644 --- a/src/initialisation/standalone/ancillaries/jules_rivers_props_mod.F90 +++ b/src/initialisation/standalone/ancillaries/jules_rivers_props_mod.F90 @@ -501,6 +501,8 @@ SUBROUTINE allocate_river_vars_grid( global_land_pts, nx_rivers, ny_rivers, & error_sum = error_sum + ERROR ALLOCATE( river_manning_grid(nx_size, ny_size), STAT = ERROR ) error_sum = error_sum + ERROR +ALLOCATE( rivers_data%land_fraction_2d(nx_rivers, ny_rivers), STAT = ERROR ) +error_sum = error_sum + ERROR ! CaMa-Flood variables that depend on a further switch. IF ( i_river_vn == rivers_camaflood .AND. l_sea_level ) THEN @@ -583,6 +585,7 @@ SUBROUTINE allocate_river_vars_grid( global_land_pts, nx_rivers, ny_rivers, & rivers_data%rivers_seq(:,:) = rmdi rivers_data%rivers_outflow_number(:,:) = rmdi rivers_data%rivers_storage(:,:) = rmdi +rivers_data%land_fraction_2d(:,:) = rmdi ! Associate pointers rivers%rivers_dir => rivers_data%rivers_dir @@ -593,6 +596,7 @@ SUBROUTINE allocate_river_vars_grid( global_land_pts, nx_rivers, ny_rivers, & rivers%rivers_seq => rivers_data%rivers_seq rivers%rivers_outflow_number => rivers_data%rivers_outflow_number rivers%rivers_storage => rivers_data%rivers_storage +rivers%land_fraction_2d => rivers_data%land_fraction_2d RETURN END SUBROUTINE allocate_river_vars_grid @@ -681,12 +685,16 @@ SUBROUTINE allocate_rivers_vars_rp( np_rivers, rivers, rivers_data ) error_sum = error_sum + ERROR ALLOCATE(rivers_data%rivers_y_coord_rp(np_rivers_tmp), STAT = ERROR) error_sum = error_sum + ERROR +ALLOCATE(rivers_data%land_fraction_rp(np_rivers), STAT = ERROR) +error_sum = error_sum + ERROR ! Fluxes. ALLOCATE(rivers_data%rflow_rp(np_rivers_tmp), STAT = ERROR) error_sum = error_sum + ERROR ALLOCATE(rivers_data%rivers_outflow_rp(np_rivers), STAT = ERROR) error_sum = error_sum + ERROR +ALLOCATE(rivers_data%inland_outflow_rp(np_rivers), STAT = ERROR) +error_sum = error_sum + ERROR ALLOCATE(rivers_data%rrun_rp(np_rivers_tmp), STAT = ERROR) error_sum = error_sum + ERROR ALLOCATE(rivers_data%rrun_sub_surf_rp(np_rivers_tmp), STAT = ERROR) @@ -888,12 +896,14 @@ SUBROUTINE allocate_rivers_vars_rp( np_rivers, rivers, rivers_data ) rivers_data%rivers_next_rp(:) = imdi rivers_data%rivers_x_coord_rp(:) = rmdi rivers_data%rivers_y_coord_rp(:) = rmdi +rivers_data%land_fraction_rp(:) = 1.0 ! Fluxes. rivers_data%rflow_rp(:) = 0.0 rivers_data%rivers_outflow_rp(:) = rmdi rivers_data%rrun_rp(:) = 0.0 rivers_data%rrun_sub_surf_rp(:) = 0.0 rivers_data%rrun_surf_rp(:) = 0.0 +rivers_data%inland_outflow_rp(:) = rmdi ! Initialise regridding variable. rivers_data%map_river_to_land_points(:) = imdi @@ -959,12 +969,14 @@ SUBROUTINE allocate_rivers_vars_rp( np_rivers, rivers, rivers_data ) rivers%rivers_next_rp => rivers_data%rivers_next_rp rivers%rivers_x_coord_rp => rivers_data%rivers_x_coord_rp rivers%rivers_y_coord_rp => rivers_data%rivers_y_coord_rp +rivers%land_fraction_rp => rivers_data%land_fraction_rp ! Fluxes. rivers%rflow_rp => rivers_data%rflow_rp rivers%rivers_outflow_rp => rivers_data%rivers_outflow_rp rivers%rrun_rp => rivers_data%rrun_rp rivers%rrun_sub_surf_rp => rivers_data%rrun_sub_surf_rp rivers%rrun_surf_rp => rivers_data%rrun_surf_rp +rivers%inland_outflow_rp => rivers_data%inland_outflow_rp ! Associate pointers for regridding variable. rivers%map_river_to_land_points => rivers_data%map_river_to_land_points diff --git a/src/initialisation/standalone/grid/init_land_frac_mod.F90 b/src/initialisation/standalone/grid/init_land_frac_mod.F90 index 09af073a..54ae1341 100644 --- a/src/initialisation/standalone/grid/init_land_frac_mod.F90 +++ b/src/initialisation/standalone/grid/init_land_frac_mod.F90 @@ -16,7 +16,7 @@ SUBROUTINE init_land_frac() USE string_utils_mod, ONLY: to_string -USE coastal, ONLY: flandg +USE coastal, ONLY: flandg, l_use_land_fraction USE input_mod, ONLY: input_grid => grid @@ -49,7 +49,8 @@ SUBROUTINE init_land_frac() !----------------------------------------------------------------------------- CHARACTER(LEN=max_file_name_len) :: FILE CHARACTER(LEN=max_sdf_name_len) :: land_frac_name -NAMELIST / jules_land_frac/ FILE, land_frac_name + +NAMELIST /jules_land_frac/ FILE, land_frac_name, l_use_land_fraction !----------------------------------------------------------------------------- ! Initialise @@ -97,13 +98,15 @@ SUBROUTINE init_land_frac() is_climatology = [ .FALSE. ]) END IF -! For now, make sure that land fraction is either 1.0 or 0.0 - until JULES -! can deal with coastal tiling -WHERE ( flandg > EPSILON(1.0) ) - flandg = 1.0 -ELSE WHERE - flandg = 0.0 -END WHERE +IF ( .NOT. l_use_land_fraction ) THEN + ! For now, make sure that land fraction is either 1.0 or 0.0 - until JULES + ! can deal with coastal tiling + WHERE ( flandg > EPSILON(1.0) ) + flandg = 1.0 + ELSE WHERE + flandg = 0.0 + END WHERE +END IF RETURN diff --git a/src/initialisation/standalone/init.F90 b/src/initialisation/standalone/init.F90 index 19f03feb..f96a37ed 100644 --- a/src/initialisation/standalone/init.F90 +++ b/src/initialisation/standalone/init.F90 @@ -66,6 +66,7 @@ SUBROUTINE init(nml_dir, crop_vars_data, crop_vars, & USE init_rivers_mod, ONLY: init_rivers USE init_water_resources_mod, ONLY: init_water_resources USE metstats_init_mod, ONLY: metstats_init +USE metstats_mod, ONLY: metstats_allocate USE init_parms_mod, ONLY: init_parms USE init_soil_ecosse_mod, ONLY: init_soil_ecosse USE check_compatible_options_mod, ONLY: check_compatible_options @@ -358,14 +359,11 @@ SUBROUTINE init(nml_dir, crop_vars_data, crop_vars, & END IF ! Initialise model parameters -CALL init_params(nml_dir,progs,land_pts,nsurft,nnpft,npft,nmasst) +CALL init_params(nml_dir,progs,land_pts,nsurft,nnpft,npft,nmasst,ntype) ! Initialise fire module CALL init_fire(nml_dir,ainfo%land_index) -! Initialise the metstats module -CALL metstats_init(ainfo) - ! Contains allocation of progs_data%seed_rain - hence passing in the data type CALL init_drive(nml_dir,ainfo,progs_data) @@ -379,6 +377,13 @@ SUBROUTINE init(nml_dir, crop_vars_data, crop_vars, & ! Associate the data and pointer types again after the extra allocation CALL prognostics_assoc(progs,progs_data) +! Initialise the metstats module. Potentially any area of the model can +! request that metstats calculate a diagnostic (i.e. sets l_metstats=T), so +! this needs to be done after science options are finalised and before the dump +! is read by init_ic(). +CALL metstats_allocate(land_pts) +CALL metstats_init(ainfo) + ! Initialise other prescribed data CALL init_prescribed_data(nml_dir) diff --git a/src/initialisation/standalone/init_output_mod.F90 b/src/initialisation/standalone/init_output_mod.F90 index a69129c6..f35234c0 100644 --- a/src/initialisation/standalone/init_output_mod.F90 +++ b/src/initialisation/standalone/init_output_mod.F90 @@ -347,7 +347,7 @@ SUBROUTINE check_output_vars( nvars, var, var_name, output_type, & l_water_resources, l_water_transfers, no_model, nr_gwater_model USE jules_rivers_mod, ONLY: l_rivers, l_riv_overbank, l_outflow_per_river, & - i_river_vn, rivers_camaflood, rivers_rfm, rivers_trip + i_river_vn, rivers_camaflood, rivers_rfm, rivers_trip, l_inland_outflow USE jules_deposition_mod, ONLY: l_deposition, l_deposition_flux @@ -431,6 +431,25 @@ SUBROUTINE check_output_vars( nvars, var, var_name, output_type, & 'outflow_per_river requested without a river number ancillary specified.' CALL log_fatal(RoutineName, jules_message) END IF + + IF ( ANY( var(:) == 'inland_outflow_rp' ) ) THEN + ! The inland basin flow is used for water conservation purposes + ! and as such alters the calculation of river flow. To avoid + ! super-saturation, inflow (surface & sub-surface runoff) is sent + ! to the ocean via the closest large river favouring those with + ! larger climatological outflows. This diagnostic when coupled + ! is passed to the soil moisture. When uncoupled, ensure its + ! affect on river flow calculations is known via a warning. + IF (.NOT. l_inland_outflow) THEN + CALL log_warn( RoutineName, & + "Adding the inland_outflow_rp diagnostic " // & + "will alter the flow going into inland basin flow " // & + "points, changing the calculation of river flow and " // & + "its associated diagnostics." ) + END IF + + l_inland_outflow = .TRUE. + END IF END IF !----------------------------------------------------------------------------- diff --git a/src/initialisation/standalone/init_soil_biogeochem_mod.F90 b/src/initialisation/standalone/init_soil_biogeochem_mod.F90 index ffb48ed8..adefcf09 100644 --- a/src/initialisation/standalone/init_soil_biogeochem_mod.F90 +++ b/src/initialisation/standalone/init_soil_biogeochem_mod.F90 @@ -39,7 +39,7 @@ SUBROUTINE init_soil_biogeochem(nml_dir) ! imported procedures check_jules_soil_biogeochem, & ! imported scalar variables - l_q10, soil_bgc_model, dim_ch4layer, l_ch4_tlayered, & + l_q10, soil_bgc_model, dim_ch4layer, l_ch4_tlayered, l_bgc_heat, & ! imported namelists jules_soil_biogeochem @@ -142,6 +142,13 @@ SUBROUTINE init_soil_biogeochem(nml_dir) END IF END SELECT +IF ( l_bgc_heat ) THEN + CALL log_info( RoutineName, "l_bgc_heat = T - Enabled biogeochemical heating") +ELSE + CALL log_info( RoutineName, "l_bgc_heat = F - Disabled biogeochemical heating") +END IF + + !Initialise soil layer dimension for methane production IF (l_ch4_tlayered) THEN dim_ch4layer = sm_levels diff --git a/src/initialisation/standalone/params/init_nvegparm.inc b/src/initialisation/standalone/params/init_nvegparm.inc index 38fc2e5b..d4fbca2a 100644 --- a/src/initialisation/standalone/params/init_nvegparm.inc +++ b/src/initialisation/standalone/params/init_nvegparm.inc @@ -17,7 +17,7 @@ USE jules_surface_types_mod, ONLY: nnvg, npft USE nvegparm_io, ONLY: jules_nvegparm, init_nvegparm_allocated -USE nvegparm, ONLY: check_jules_nvegparm +USE nvegparm, ONLY: print_nlist_jules_nvegparm, check_jules_nvegparm USE errormessagelength_mod, ONLY: errormessagelength @@ -79,7 +79,8 @@ IF ( ERROR /= 0 ) & !----------------------------------------------------------------------------- ! Copy values from fixed length arrays used in namelist into allocated arrays CALL init_nvegparm_allocated() -CALL check_jules_nvegparm(nnvg,npft) +CALL print_nlist_jules_nvegparm() +CALL check_jules_nvegparm(nnvg) RETURN diff --git a/src/initialisation/standalone/params/init_params.inc b/src/initialisation/standalone/params/init_params.inc index 168fa36f..5fd58dfa 100644 --- a/src/initialisation/standalone/params/init_params.inc +++ b/src/initialisation/standalone/params/init_params.inc @@ -6,10 +6,11 @@ ! *****************************COPYRIGHT************************************** -SUBROUTINE init_params(nml_dir,progs,land_pts,nsurft,nnpft,npft,nmasst) +SUBROUTINE init_params(nml_dir,progs,land_pts,nsurft,nnpft,npft,nmasst,ntype) !Module imports -USE jules_model_environment_mod, ONLY: lsm_id, jules, cable +USE jules_model_environment_mod, ONLY: lsm_id, jules, cable +USE c_z0h_z0m, ONLY: c_z0h_z0m_print, c_z0h_z0m_check !TYPE definitions USE prognostics, ONLY: progs_type @@ -32,7 +33,7 @@ IMPLICIT NONE ! This code is written to JULES coding standards v1. !----------------------------------------------------------------------------- ! Arguments -INTEGER, INTENT(IN) :: land_pts, nnpft, npft, nsurft, nmasst +INTEGER, INTENT(IN) :: land_pts, nnpft, npft, nsurft, nmasst, ntype CHARACTER(LEN=*), INTENT(IN) :: nml_dir ! The directory containing the ! namelists @@ -55,6 +56,10 @@ SELECT CASE(lsm_id) CASE (jules) CALL init_pftparm_jules(nml_dir,progs) CALL init_nvegparm_jules(nml_dir) + CALL c_irrigation_print() + CALL check_irrigation() + CALL c_z0h_z0m_print() + CALL c_z0h_z0m_check(ntype) CASE (cable) CALL init_vegin_cbl(nml_dir,progs) diff --git a/src/initialisation/standalone/params/init_params_mod.F90 b/src/initialisation/standalone/params/init_params_mod.F90 index 0d05e827..99d8a19a 100644 --- a/src/initialisation/standalone/params/init_params_mod.F90 +++ b/src/initialisation/standalone/params/init_params_mod.F90 @@ -14,6 +14,8 @@ MODULE init_params_mod USE init_red_mod, ONLY: init_red +USE c_irrigation_mod, ONLY: c_irrigation_print, check_irrigation + IMPLICIT NONE PRIVATE diff --git a/src/initialisation/standalone/params/init_pftparm.inc b/src/initialisation/standalone/params/init_pftparm.inc index 816c4cb1..8c39dfe6 100644 --- a/src/initialisation/standalone/params/init_pftparm.inc +++ b/src/initialisation/standalone/params/init_pftparm.inc @@ -16,9 +16,6 @@ USE io_constants, ONLY: namelist_unit USE string_utils_mod, ONLY: to_string -USE jules_soil_biogeochem_mod, ONLY: l_layeredC, soil_bgc_model, & - soil_model_4pool - USE jules_surface_types_mod, ONLY: npft, nnpft USE ancil_info, ONLY: land_pts @@ -26,61 +23,12 @@ USE ancil_info, ONLY: land_pts USE pftparm_io, ONLY: jules_pftparm, init_pftparm_allocated, & canht_ft_io, lai_io -USE pftparm, ONLY: & - fsmc_mod, psi_close, psi_open, & - a_wl, a_ws, aef, & - act_jmax, act_vcmax, albsnc_max, & - albsnc_min, albsnf_max, albsnf_maxl, & - albsnf_maxu, alpha, alpha_elec, & - alnir, alnirl, alniru, & - alpar, alparl, alparu, & - avg_ba, b_wl, c3, & - can_struct_a, catch0, ccleaf_max, & - ccleaf_min, ccwood_max, ccwood_min, & - ci_st, dcatch_dlai, deact_jmax, & - deact_vcmax, dfp_dcuo, dgl_dm, & - dgl_dt, dqcrit, ds_jmax, & - ds_vcmax, dust_veg_scj, dz0v_dh, & - emis_pft, eta_sl, f0, & - fd, fef_bc, fef_ch4, & - fef_co, fef_co2, fef_nox, & - fef_oc, fef_so2, fef_c2h4, & - fef_c2h6, fef_c3h8, fef_hcho, & - fef_mecho, fef_nh3, & - fef_dms, fire_mort, fl_o3_ct, & - fsmc_of, fsmc_p0, sug_g0, & - g1_stomata, g_leaf_0, glmin, & - gpp_st, sug_grec, gsoil_f, & - hw_sw, ief, infil_f, & - jv25_ratio, kext, kn, & - knl, kpar, lai_alb_lim, & - lma, mef, neff, & - nl0, nmass, nr, & - nr_nl, ns_nl, nsw, & - omega, omegal, omegau, & - omnir, omnirl, omniru, & - orient, q10_leaf, r_grow, & - rootd_ft, sigl, tef, & - tleaf_of, tlow, tupp, & - vint, vsl, sug_yg, & - z0v, sox_a, sox_p50, & - sox_rp_min - -USE c_z0h_z0m, ONLY: z0h_z0m, z0h_z0m_classic - -USE jules_vegetation_mod, ONLY: can_rad_mod, l_crop, l_trait_phys, & - l_use_pft_psi, l_bvoc_emis, l_inferno, & - l_o3_damage, l_trif_fire, photo_acclim_model, & - photo_act_model, photo_act_pft, & - photo_farquhar, photo_model, & - stomata_jacobs, stomata_medlyn, stomata_sox, & - stomata_model, l_spec_veg_z0, l_sugar, & - l_scale_resp_pm - -USE jules_radiation_mod, ONLY: l_spec_albedo, l_albedo_obs, l_snow_albedo +USE pftparm, ONLY: print_nlist_jules_pftparm, check_jules_pftparm USE errormessagelength_mod, ONLY: errormessagelength +USE jules_print_mgr, ONLY: jules_print + !TYPE definitions USE prognostics, ONLY: progs_type @@ -145,610 +93,32 @@ IF ( ERROR /= 0 ) & ! Process the namelist values !----------------------------------------------------------------------------- CALL init_pftparm_allocated() -progs%canht_pft(:,:) = SPREAD(canht_ft_io(1:npft), 1, land_pts) -progs%lai_pft(:,:) = SPREAD(lai_io(1:npft), 1, land_pts) - -!----------------------------------------------------------------------------- -! Check that all required variables were present in the namelist. -! The namelist variables were initialised to rmdi. -! Some configurations don't need all parameters but in some cases these are -! still tested below. -!----------------------------------------------------------------------------- -ERROR = 0 -IF ( ANY( orient(:) < 0 ) ) THEN ! orient was initialised to < 0 - ERROR = 1 - CALL log_error(routinename, "No value for orient") -END IF -IF ( ANY( fsmc_mod(:) < 0 ) ) THEN ! fsmc_mod was initialised to < 0 - ERROR = 1 - CALL log_error(routinename, "No value for fsmc_mod") -END IF -IF ( ANY( ABS( kext(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for kext") -END IF -IF ( ANY( ABS( kpar(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for kpar") -END IF -IF ( ANY( ABS( lai_alb_lim(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for lai_alb_lim") -END IF -IF ( ANY( ABS( can_struct_a(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for can_struct_a") -END IF -IF ( ANY( ABS( gsoil_f(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for gsoil_f") -END IF -IF ( ANY( c3(:) < 0 ) ) THEN ! c3 was initialised to < 0 - ERROR = 1 - CALL log_error(routinename, "No value for c3") -END IF -IF ( ANY( ABS( alpha(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for alpha") -END IF -IF ( ANY( ABS( fd(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for fd") -END IF -IF ( ANY( ABS( nr_nl(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for nr_nl") -END IF -IF ( ANY( ABS( ns_nl(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for ns_nl") -END IF -IF ( ANY( ABS( r_grow(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for r_grow") -END IF -! Note that tlow and tupp are always required, for some PFTs at least. -! If using the Farquhar model for C3 plants, we still need tlow and -! tupp for C4 plants. -IF ( ANY( ABS( tlow(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for tlow") -END IF -IF ( ANY( ABS( tupp(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for tupp") -END IF - -SELECT CASE ( photo_model ) -CASE ( photo_farquhar ) - !--------------------------------------------------------------------------- - ! First check parameters that are always required with this model. - !--------------------------------------------------------------------------- - ! Note that these parameter values are not used for C4 plants, but - ! here we're still checking that they have been provided. - IF ( ANY( ABS( alpha_elec(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error("init_pftparm", "No value for alpha_elec") - END IF - IF ( ANY( ABS( deact_jmax(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error("init_pftparm", "No value for deact_jmax") - END IF - IF ( ANY( ABS( deact_vcmax(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error("init_pftparm", "No value for deact_vcmax") - END IF - !--------------------------------------------------------------------------- - ! Check parameters that depend on any chosen acclimation model. - !--------------------------------------------------------------------------- - IF ( photo_acclim_model == 0 ) THEN - ! No acclimation. - IF ( ANY( ABS( ds_jmax(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error("init_pftparm", "No value for ds_jmax") - END IF - IF ( ANY( ABS( ds_vcmax(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error("init_pftparm", "No value for ds_vcmax") - END IF - IF ( ANY( ABS( jv25_ratio(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error("init_pftparm", "No value for jv25_ratio") - END IF - END IF ! photo_acclim_model == 0 - - IF ( photo_acclim_model == 0 .OR. & - (photo_acclim_model /= 0 .AND. photo_act_model == photo_act_pft) ) THEN - IF ( ANY( ABS( act_jmax(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error("init_pftparm", "No value for act_jmax") - END IF - IF ( ANY( ABS( act_vcmax(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error("init_pftparm", "No value for act_vcmax") - END IF - END IF ! photo_acclim_model - -END SELECT ! photo_model - -SELECT CASE ( stomata_model ) -CASE ( stomata_jacobs ) - IF ( ANY( ABS( dqcrit(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error("init_pftparm", "No value for dqcrit") - END IF - IF ( ANY( ABS( f0(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error("init_pftparm", "No value for f0") - END IF -CASE ( stomata_medlyn ) - IF ( ANY( ABS( g1_stomata(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error("init_pftparm", "No value for g1_stomata") - END IF -CASE ( stomata_sox ) - IF ( ANY( ABS( sox_p50(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for sox_p50") - END IF - IF ( ANY( ABS( sox_rp_min(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for sox_rp_min") - END IF - IF ( ANY( ABS( sox_a(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for sox_a") - END IF -END SELECT - -IF ( .NOT. l_spec_albedo .AND. can_rad_mod == 1 ) THEN - ! These don't need to be set -ELSE - IF ( ANY( ABS( alnir(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for alnir") - END IF - IF ( ANY( ABS( alpar(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for alpar") - END IF - IF ( ANY( ABS( omega(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for omega") - END IF - IF ( ANY( ABS( omnir(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for omnir") - END IF -END IF - -IF ( l_albedo_obs ) THEN - IF ( ANY( ABS( alnirl(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for alnirl") - END IF - IF ( ANY( ABS( alniru(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for alniru") - END IF - IF ( ANY( ABS( alparl(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for alparl") - END IF - IF ( ANY( ABS( alparu(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for alparu") - END IF - IF ( ANY( ABS( omegal(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for omegal") - END IF - IF ( ANY( ABS( omegau(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for omegau") - END IF - IF ( ANY( ABS( omnirl(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for omnirl") - END IF - IF ( ANY( ABS( omniru(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for omniru") - END IF -END IF - -IF ( .NOT. l_spec_albedo ) THEN - IF ( ANY( ABS( albsnf_max(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for albsnf_max") - END IF - IF ( l_albedo_obs ) THEN - IF ( ANY( ABS( albsnf_maxl(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for albsnf_maxl") - END IF - IF ( ANY( ABS( albsnf_maxu(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for albsnf_maxu") - END IF - END IF -END IF - -IF ( .NOT. l_snow_albedo ) THEN - IF ( ANY( ABS( albsnc_max(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for albsnc_max") - END IF - IF ( ANY( ABS( albsnc_min(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for albsnc_min") - END IF -END IF - -IF (l_trait_phys) THEN - IF ( ANY( ABS( lma(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for lma") - END IF - IF ( ANY( ABS( nmass(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for nmass") - END IF - IF ( ANY( ABS( vsl(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for vsl") - END IF - IF ( ANY( ABS( vint(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for vint") - END IF - IF ( ANY( ABS( nr(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for nr") - END IF - IF ( ANY( ABS( nsw(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for nsw") - END IF - IF ( ANY( ABS( hw_sw(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for hw_sw") - END IF -ELSE - IF ( ANY( ABS( neff(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for neff") - END IF - IF ( ANY( ABS( nl0(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for nl0") - END IF - IF ( ANY( ABS( sigl(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for sigl") - END IF -END IF !l_trait_phys - -IF ( ANY( ABS( kn(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for kn") -END IF -IF ( can_rad_mod == 6 .AND. ANY( ABS( knl(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for knl") -END IF -IF ( ANY( ABS( q10_leaf(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for q10_leaf") -END IF -IF ( ANY( ABS( a_wl(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for a_wl") -END IF -IF ( ANY( ABS( a_ws(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for a_ws") -END IF -IF ( ANY( ABS( b_wl(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for b_wl") -END IF -IF ( ANY( ABS( eta_sl(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for eta_sl") -END IF -IF ( ANY( ABS( g_leaf_0(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for g_leaf_0") -END IF -IF ( ANY( ABS( dgl_dm(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for dgl_dm") -END IF -IF ( ANY( ABS( fsmc_of(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for fsmc_of") -END IF -IF ( ANY( ABS( dgl_dt(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for dgl_dt") -END IF -IF ( ANY( ABS( tleaf_of(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for tleaf_of") -END IF -IF ( ANY( ABS( catch0(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for catch0") -END IF -IF ( ANY( ABS( dcatch_dlai(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for dcatch_dlai") -END IF -IF ( ANY( ABS( infil_f(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for infil_f") -END IF -IF ( ANY( ABS( glmin(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for glmin") -END IF -IF ( .NOT. l_spec_veg_z0) THEN - IF ( ANY( ABS( dz0v_dh(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for dz0v_dh") - END IF -ELSE - IF ( ANY( ABS( z0v(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error("init_pftparm", "No value for z0v") - END IF -END IF -IF ( ANY( ABS( rootd_ft(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for rootd_ft") -END IF - -IF ( l_use_pft_psi ) THEN - IF ( ANY( ABS( psi_close(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for psi_close") - END IF - IF ( ANY( ABS( psi_open(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for psi_open") - END IF -ELSE - IF ( ANY( ABS( fsmc_p0(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for fsmc_p0") - END IF -END IF !l_use_pft_psi - -IF ( l_bvoc_emis ) THEN - IF ( ANY( ABS( ci_st(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for ci_st") - END IF - IF ( ANY( ABS( gpp_st(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for gpp_st") - END IF - IF ( ANY( ABS( ief(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for ief") - END IF - IF ( ANY( ABS( tef(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for tef") - END IF - IF ( ANY( ABS( mef(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for mef") - END IF - IF ( ANY( ABS( aef(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for aef") - END IF -END IF - -IF ( l_inferno ) THEN - IF ( ANY( ABS( fef_co2(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for fef_co2") - END IF - IF ( ANY( ABS( fef_co(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for fef_co") - END IF - IF ( ANY( ABS( fef_ch4(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for fef_ch4") - END IF - IF ( ANY( ABS( fef_nox(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for fef_nox") - END IF - IF ( ANY( ABS( fef_so2(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for fef_so2") - END IF - IF ( ANY( ABS( fef_c2h4(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for fef_c2h4") - END IF - IF ( ANY( ABS( fef_c2h6(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for fef_c2h6") - END IF - IF ( ANY( ABS( fef_c3h8(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for fef_c3h8") - END IF - IF ( ANY( ABS( fef_hcho(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for fef_hcho") - END IF - IF ( ANY( ABS( fef_mecho(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for fef_mecho") - END IF - IF ( ANY( ABS( fef_nh3(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for fef_nh3") - END IF - IF ( ANY( ABS( fef_dms(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for fef_dms") - END IF - IF ( ANY( ABS( ccleaf_min(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for ccleaf_min") - END IF - IF ( ANY( ABS( ccleaf_max(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for ccleaf_max") - END IF - IF ( ANY( ABS( ccwood_min(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for ccwood_min") - END IF - IF ( ANY( ABS( ccwood_max(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for ccwood_max") - END IF - IF ( ANY( ABS( avg_ba(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for avg_ba") - END IF -END IF - -IF ( l_trif_fire ) THEN - IF ( ANY( ABS( fire_mort(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for fire_mort") - END IF -END IF - -IF ( l_o3_damage ) THEN - IF ( ANY( ABS( fl_o3_ct(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for fl_o3_ct") - END IF - IF ( ANY( ABS( dfp_dcuo(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for dfp_dcuo") - END IF -END IF - -IF ( l_sugar ) THEN - IF ( ANY( ABS( sug_g0(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for sug_g0") - END IF - IF ( ANY( ABS( sug_grec(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for sug_grec") - END IF - IF ( ANY( ABS( sug_yg(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for sug_yg") - END IF -END IF - -IF ( ANY( ABS( emis_pft(:) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for emis_pft") -END IF -IF ( ANY( ABS( z0h_z0m(1:npft) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for z0hm_pft") -END IF -IF ( ANY( ABS( z0h_z0m_classic(1:npft) - rmdi ) < EPSILON(1.0) ) ) THEN - ERROR = 1 - CALL log_error(routinename, "No value for z0hm_classic_pft") -END IF -IF ( ANY( ABS( progs%canht_pft(:,:) - rmdi ) < EPSILON(1.0) ) ) THEN +CALL print_nlist_jules_pftparm() + +! Print members of pftparm_io not copied to pftparm_mod. +CALL jules_print('pftparm', & + 'Contents of namelist jules_pftparm (standalone only)') +WRITE(iomessage,*)' canht_ft = ',canht_ft_io(1:npft) +CALL jules_print('pftparm',iomessage) +WRITE(iomessage,*)' lai = ',lai_io(1:npft) +CALL jules_print('pftparm',iomessage) +CALL jules_print('pftparm', & + '- - - - - - end of namelist - - - - - -') + +CALL check_jules_pftparm(npft,nnpft) +! Check values of pftparm_io not copied to pftparm_mod before spreading +IF ( ANY( ABS( canht_ft_io(1:npft) - rmdi ) < EPSILON(1.0) ) ) THEN ERROR = 1 CALL log_error(routinename, "No value for canht_ft") END IF -IF ( ANY( ABS( progs%lai_pft(:,:) - rmdi ) < EPSILON(1.0) ) ) THEN +IF ( ANY( ABS( lai_io(1:npft) - rmdi ) < EPSILON(1.0) ) ) THEN ERROR = 1 CALL log_error(routinename, "No value for lai") END IF -IF ( ERROR /= 0 ) & - CALL log_fatal(routinename, & - "Variable(s) missing from namelist - see earlier " // & - "error message(s)") - -!----------------------------------------------------------------------------- -! Check that glmin is >0. -! This ensures that wt_ext in subroutine soil_evap cannot become a NaN (which -! it would if gs=glmin and gsoil=0), or blow up, and might well be required -! elsewhere too. -!----------------------------------------------------------------------------- -IF ( ANY(glmin < 1.0e-10) ) & - CALL log_warn(routinename, & - "Increasing one or more values of glmin - very small " // & - "values can cause model to blow up or NaNs") - -WHERE ( glmin < 1.0e-10 ) - glmin = 1.0e-10 -END WHERE - -IF ( l_crop ) THEN - IF ( ANY( ABS( a_ws(nnpft+1: npft) - 1.0 ) > EPSILON(1.0) ) ) THEN - CALL log_fatal(routinename, "crop tiles should have a_ws=1.0") - END IF -END IF - -IF ( l_use_pft_psi ) THEN - IF ( ANY( psi_close(1: npft) > EPSILON(1.0) ) ) THEN - CALL log_fatal(routinename, "psi_close should be negative") - END IF - IF ( ANY( psi_open(1: npft) > EPSILON(1.0) ) ) THEN - CALL log_fatal(routinename, "psi_open should be negative") - END IF -END IF - -!----------------------------------------------------------------------------- -! fsmc_mod=1 should not be allowed with a layered 4-pool C model until this has -! been properly evaluated. (With fsmc_mod=1, subroutine root_frac does not -! return the exponential root profile that users might expect.) -!----------------------------------------------------------------------------- -IF ( l_layeredC .AND. ( soil_bgc_model == soil_model_4pool ) .AND. & - ANY( fsmc_mod(:) == 1 ) ) THEN - CALL log_error(routinename, & - "fsmc_mod=1 is not allowed with l_layeredC and 4-pool C model") -END IF - -!----------------------------------------------------------------------------- -! stomata_model = stomata_sox must be used with fsmc_mod = 1 -! Cannot be run with l_scale_resp_pm -! Must be run with can_rad_mod = 1 (implementation for can_rad_mod = 6 ongoing) -!----------------------------------------------------------------------------- -IF ( stomata_model == stomata_sox ) THEN ! SOX - IF ( l_scale_resp_pm ) THEN - CALL log_fatal(routinename, & - 'l_scale_resp_pm=T is incompatible with SOX (stomata_model=3)') - END IF - - IF ( .NOT. ANY ( fsmc_mod(:) == 1 ) ) THEN - CALL log_fatal(routinename, & - 'SOX (stomata_model=3) must be used with fsmc_mod = 1') - END IF - - IF ( .NOT. ( can_rad_mod == 1 ) ) THEN - CALL log_fatal(routinename, & - 'SOX (stomata_model=3) must be used with can_rad_mod = 1') - END IF - - IF ( .NOT. ( photo_model == 3 ) ) THEN - CALL log_fatal(routinename, & - 'SOX (stomata_model=3) uses the SOX derivation of Collatz (photo_model=3)') - END IF -END IF +! Spread over land_pts array +progs%canht_pft(:,:) = SPREAD(canht_ft_io(1:npft), 1, land_pts) +progs%lai_pft(:,:) = SPREAD(lai_io(1:npft), 1, land_pts) RETURN diff --git a/src/initialisation/um/read_jules_namelists_mod.F90 b/src/initialisation/um/read_jules_namelists_mod.F90 index 2615a375..5b0f9cc3 100644 --- a/src/initialisation/um/read_jules_namelists_mod.F90 +++ b/src/initialisation/um/read_jules_namelists_mod.F90 @@ -200,7 +200,7 @@ SUBROUTINE read_jules_nvegparm (unitnumber) ! read the JULES_NVEGPARM namelist USE nvegparm_io, ONLY: & - print_nlist_jules_nvegparm, read_nml_jules_nvegparm + read_nml_jules_nvegparm IMPLICIT NONE @@ -214,10 +214,6 @@ SUBROUTINE read_jules_nvegparm (unitnumber) CALL read_nml_jules_nvegparm(unitnumber) -IF (PrintStatus >= PrStatus_Oper .AND. mype == 0) THEN - CALL print_nlist_jules_nvegparm() -END IF - IF (lhook) CALL dr_hook(ModuleName//':'//RoutineName,zhook_out,zhook_handle) RETURN END SUBROUTINE read_jules_nvegparm @@ -261,7 +257,7 @@ SUBROUTINE read_jules_pftparm (unitnumber) ! Read the JULES_PFTPARM namelist USE pftparm_io, ONLY: & - print_nlist_jules_pftparm, read_nml_jules_pftparm + read_nml_jules_pftparm IMPLICIT NONE @@ -275,10 +271,6 @@ SUBROUTINE read_jules_pftparm (unitnumber) CALL read_nml_jules_pftparm(unitnumber) -IF (PrintStatus >= PrStatus_Oper .AND. mype == 0) THEN - CALL print_nlist_jules_pftparm() -END IF - IF (lhook) CALL dr_hook(ModuleName//':'//RoutineName,zhook_out,zhook_handle) RETURN END SUBROUTINE read_jules_pftparm diff --git a/src/initialisation/um/surf_couple_allocate_mod.F90 b/src/initialisation/um/surf_couple_allocate_mod.F90 index 2eeadfe3..56174ac5 100644 --- a/src/initialisation/um/surf_couple_allocate_mod.F90 +++ b/src/initialisation/um/surf_couple_allocate_mod.F90 @@ -49,11 +49,16 @@ SUBROUTINE surf_couple_allocate (land_field, ntiles, sm_levels, & USE jules_vegetation_mod, ONLY: l_triffid, l_phenol, can_rad_mod USE jules_soil_biogeochem_mod,ONLY: l_layeredc +USE metstats_mod, ONLY: metstats_allocate + USE pftparm_io, ONLY: init_pftparm_allocated +USE pftparm, ONLY: print_nlist_jules_pftparm, check_jules_pftparm USE nvegparm_io, ONLY: init_nvegparm_allocated +USE nvegparm, ONLY: print_nlist_jules_nvegparm, check_jules_nvegparm, & + z0_nvg -USE nvegparm, ONLY: z0_nvg, check_jules_nvegparm +USE c_z0h_z0m, ONLY: c_z0h_z0m_print, c_z0h_z0m_check USE trif_io, ONLY: & ! namelist variables: @@ -116,6 +121,9 @@ SUBROUTINE surf_couple_allocate (land_field, ntiles, sm_levels, & USE jules_print_mgr, ONLY: jules_print +USE umPrintMgr, ONLY: PrintStatus, PrStatus_Oper +USE UM_ParCore, ONLY: mype + USE missing_data_mod, ONLY: imdi !Pointer association functions @@ -250,6 +258,10 @@ SUBROUTINE surf_couple_allocate (land_field, ntiles, sm_levels, & END IF rivers_data%global_land_index(:) = imdi +! Metstats is not available in the UM, but call this to prevent an unallocated +! pointer. +CALL metstats_allocate(land_pts) + !Associate the JULES pointer types to the data types. !Doing this here reflects when the same is done in standalone JULES !in init.F90 @@ -278,9 +290,20 @@ SUBROUTINE surf_couple_allocate (land_field, ntiles, sm_levels, & ! jules_pftparm CALL init_pftparm_allocated() +IF (PrintStatus >= PrStatus_Oper .AND. mype == 0) THEN + CALL print_nlist_jules_pftparm() +END IF ! jules_nvegparm CALL init_nvegparm_allocated() +IF (PrintStatus >= PrStatus_Oper .AND. mype == 0) THEN + CALL print_nlist_jules_nvegparm() +END IF + +! ntype arrays (pft & nvg) +IF (PrintStatus >= PrStatus_Oper .AND. mype == 0) THEN + CALL c_z0h_z0m_print() +END IF ! jules_triffid ! Space only allocated if at least phenology is enabled @@ -404,8 +427,10 @@ SUBROUTINE surf_couple_allocate (land_field, ntiles, sm_levels, & z0_soil = z0_nvg(soil - npft) ! Now that the arrays have been allocated and filled we can check them -CALL check_jules_nvegparm(nnvg,npft) +CALL check_jules_pftparm(npft,nnpft) +CALL check_jules_nvegparm(nnvg) CALL check_jules_red_parms() +CALL c_z0h_z0m_check(ntype) CALL check_compatible_options() IF (lhook) CALL dr_hook(ModuleName//':'//RoutineName,zhook_out,zhook_handle) diff --git a/src/io/dump/get_dim_info_mod.F90 b/src/io/dump/get_dim_info_mod.F90 index a23e7b27..be189123 100644 --- a/src/io/dump/get_dim_info_mod.F90 +++ b/src/io/dump/get_dim_info_mod.F90 @@ -561,7 +561,7 @@ SUBROUTINE get_dim_info_rivers( l_reading, identifier, ndims, dim_sizes, & CASE ( 'rivers_lat_rp', 'rivers_lon_rp', 'rivers_x_coord_rp', & 'rivers_y_coord_rp', 'rivers_sto_rp', 'rfm_surfstore_rp', & 'rfm_substore_rp', 'rfm_flowin_rp', 'rfm_bflowin_rp', & - 'rivers_outflow_rp', 'outflow_per_river', & + 'rivers_outflow_rp', 'outflow_per_river', 'inland_outflow_rp', & 'flood_flow', 'flood_flow_prev', 'flood_storage', 'flood_storage_prev', & 'river_channel_flow', 'river_channel_storage', 'river_depth_prev', & 'river_flow_prev' & diff --git a/src/io/dump/read_dump_mod.F90 b/src/io/dump/read_dump_mod.F90 index fa78cbb2..fcfd4493 100644 --- a/src/io/dump/read_dump_mod.F90 +++ b/src/io/dump/read_dump_mod.F90 @@ -987,7 +987,7 @@ SUBROUTINE read_dump(file_name, identifiers) 'flood_storage_prev', 'rfm_bflowin_rp', 'rfm_flowin_rp', & 'rfm_substore_rp', 'rfm_surfstore_rp', 'river_channel_storage', & 'river_channel_flow', 'river_depth_prev', 'river_flow_prev', & - 'rivers_outflow_rp', 'rivers_sto_rp' ) + 'rivers_outflow_rp', 'rivers_sto_rp', 'inland_outflow_rp' ) ! nothing to do !------------------------------------------------------------------------- diff --git a/src/io/dump/read_dump_var_rivers_mod.F90 b/src/io/dump/read_dump_var_rivers_mod.F90 index aa53f957..2045b2b8 100644 --- a/src/io/dump/read_dump_var_rivers_mod.F90 +++ b/src/io/dump/read_dump_var_rivers_mod.F90 @@ -97,6 +97,9 @@ SUBROUTINE read_dump_var_rivers( identifier, FILE, var_id ) CASE ( 'rivers_sto_rp' ) CALL file_read_var(FILE, var_id, rivers%rivers_sto_rp) +CASE ( 'inland_outflow_rp' ) + CALL file_read_var(FILE, var_id, rivers%inland_outflow_rp) + CASE DEFAULT CALL log_fatal( RoutineName, & "Unexpected variable in dump - " // TRIM(identifier) ) diff --git a/src/io/dump/required_vars_for_rivers_mod.F90 b/src/io/dump/required_vars_for_rivers_mod.F90 index 47771afe..8bbbe4a4 100644 --- a/src/io/dump/required_vars_for_rivers_mod.F90 +++ b/src/io/dump/required_vars_for_rivers_mod.F90 @@ -16,7 +16,8 @@ SUBROUTINE required_vars_for_rivers( nvars, identifiers, & read_or_write_dump ) USE jules_rivers_mod, ONLY: l_outflow_per_river, i_river_vn, rivers_camaflood, & - rivers_rfm, rivers_trip, l_init_storage + rivers_rfm, rivers_trip, l_init_storage, & + l_inland_outflow USE logging_mod, ONLY: log_warn @@ -84,7 +85,16 @@ SUBROUTINE required_vars_for_rivers( nvars, identifiers, & CALL add_to_list( 'rivers_outflow_rp', nvars, identifiers ) ELSE CALL log_warn( RoutineName, & - "rivers_outflow_rp will be initialised to zero.") + "rivers_outflow_rp will be initialised to rmdi.") + END IF +END IF + +IF ( l_inland_outflow ) THEN + IF ( read_or_write_dump_local ) THEN + CALL add_to_list( 'inland_outflow_rp', nvars, identifiers ) + ELSE + CALL log_warn( RoutineName, & + "inland_outflow_rp will be initialised to rmdi.") END IF END IF diff --git a/src/io/dump/write_dump_mod.F90 b/src/io/dump/write_dump_mod.F90 index 2c5e6b40..55a56520 100644 --- a/src/io/dump/write_dump_mod.F90 +++ b/src/io/dump/write_dump_mod.F90 @@ -680,6 +680,7 @@ SUBROUTINE write_dump() 'rivers_x_coord_rp', 'rivers_y_coord_rp', & 'rfm_surfstore_rp', 'rfm_substore_rp', & 'rfm_flowin_rp', 'rfm_bflowin_rp', 'rivers_outflow_rp', & + 'inland_outflow_rp', & 'flood_flow', 'flood_flow_prev', 'flood_storage', & 'flood_storage_prev', 'river_channel_flow', 'river_channel_storage', & 'river_depth_prev', 'river_flow_prev' ) diff --git a/src/io/dump/write_dump_var_rivers_mod.F90 b/src/io/dump/write_dump_var_rivers_mod.F90 index cf86b15e..20475240 100644 --- a/src/io/dump/write_dump_var_rivers_mod.F90 +++ b/src/io/dump/write_dump_var_rivers_mod.F90 @@ -110,6 +110,9 @@ SUBROUTINE write_dump_var_rivers( identifier, FILE, var_id ) CASE ( 'rivers_y_coord_rp' ) CALL file_write_var(FILE, var_id, rivers%rivers_y_coord_rp) +CASE ( 'inland_outflow_rp' ) + CALL file_write_var(FILE, var_id, rivers%inland_outflow_rp) + CASE DEFAULT CALL log_fatal( RoutineName, & "Unrecognised variable for dump - " // TRIM(identifier) ) diff --git a/src/io/model_interface/extract_var.inc b/src/io/model_interface/extract_var.inc index 49d27599..83077bc9 100644 --- a/src/io/model_interface/extract_var.inc +++ b/src/io/model_interface/extract_var.inc @@ -2683,6 +2683,9 @@ CASE ( 'rfm_surfstore_rp' ) CASE ( 'rivers_outflow_rp' ) cube = cube_from_array(rivers%rivers_outflow_rp) +CASE ( 'inland_outflow_rp' ) + cube = cube_from_array(rivers%inland_outflow_rp) + CASE ( 'river_elevation' ) cube = cube_from_array(rivers%river_elevation) diff --git a/src/io/model_interface/model_interface_mod.F90 b/src/io/model_interface/model_interface_mod.F90 index b3c63407..b06b80a8 100644 --- a/src/io/model_interface/model_interface_mod.F90 +++ b/src/io/model_interface/model_interface_mod.F90 @@ -176,7 +176,7 @@ MODULE model_interface_mod ! Array holding the metadata for all model variables that we can use for input ! or output. The CABLE land surface model adds 10 prognostics for tiled ! soil/snow prognostics. -INTEGER, PARAMETER :: n_vars = 722 +INTEGER, PARAMETER :: n_vars = 723 TYPE(var_metadata) :: metadata(n_vars) ! Include the metadata DATA statement diff --git a/src/io/model_interface/populate_var.inc b/src/io/model_interface/populate_var.inc index 4dc4976c..5b1ca8af 100644 --- a/src/io/model_interface/populate_var.inc +++ b/src/io/model_interface/populate_var.inc @@ -2439,6 +2439,14 @@ CASE ( 'rivers_outflow_rp' ) rivers%rivers_outflow_rp(:) = const_val END IF +CASE ( 'inland_outflow_rp' ) + IF ( PRESENT(cube) ) THEN + cube_land = cube_create([ SIZE(cube%values) ]) + CALL cube_get_data(cube_land, rivers%inland_outflow_rp) + ELSE + rivers%inland_outflow_rp(:) = const_val + END IF + CASE ( 'rfm_surfstore_rp' ) IF ( PRESENT(cube) ) THEN cube_land = cube_create([ SIZE(cube%values) ]) diff --git a/src/io/model_interface/variable_metadata.inc b/src/io/model_interface/variable_metadata.inc index 0efd8ac3..8b7fa44c 100644 --- a/src/io/model_interface/variable_metadata.inc +++ b/src/io/model_interface/variable_metadata.inc @@ -9354,4 +9354,17 @@ DATA metadata(722) / var_metadata( & ! Units "kg s-1" & ) / +!----------------------------------------------------------------------------- +! Metadata for inland_outflow_rp +!----------------------------------------------------------------------------- +DATA metadata(723) / var_metadata( & +! String identifier + 'inland_outflow_rp', & +! Variable type + var_type_rp, & +! Long name + "Inland basin flow on river routing grid", & +! Units + "kg m-2 s-1" & + ) / #endif diff --git a/src/science/params/c_irrigation_mod.F90 b/src/science/params/c_irrigation_mod.F90 new file mode 100644 index 00000000..e659f14a --- /dev/null +++ b/src/science/params/c_irrigation_mod.F90 @@ -0,0 +1,151 @@ +! *****************************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******************************* +! +! Module with setting of +! irrigation switch + +! Code Description: +! Language: FORTRAN 90 +! This code is written to UMDP3 v8.2 programming standards. + +MODULE c_irrigation_mod + +USE um_types, ONLY: real_jlslsm + +IMPLICIT NONE + +INTEGER, ALLOCATABLE :: & + irrig_tile(:) ! Switch to indicate irrigation for each tile +! 0 - Not irrigated +! 1 - Irrigated + + +CHARACTER(LEN=*), PARAMETER, PRIVATE :: ModuleName='C_IRRIGATION_MOD' + +CONTAINS + +SUBROUTINE c_irrigation_alloc(ntype) + +!No USE statements other than Dr Hook +USE parkind1, ONLY: jprb, jpim +USE yomhook, ONLY: lhook, dr_hook +USE missing_data_mod, ONLY: imdi +USE jules_irrig_mod, ONLY: irrig_option, tile_based_irrigation + +IMPLICIT NONE + +!Arguments +INTEGER, INTENT(IN) :: ntype + +INTEGER(KIND=jpim), PARAMETER :: zhook_in = 0 +INTEGER(KIND=jpim), PARAMETER :: zhook_out = 1 +REAL(KIND=jprb) :: zhook_handle + +CHARACTER(LEN=*), PARAMETER :: RoutineName='C_IRRIGATION_ALLOC' + +!End of header + +IF (lhook) CALL dr_hook(ModuleName//':'//RoutineName,zhook_in,zhook_handle) + +ALLOCATE( irrig_tile(ntype) ) + +! Initialise irrig_tile to zero if irrig_option = tile_based_irrigation (2), +! else set to missing data. +! This clause can be removed when irrigation on non-veg tiles is added. +IF (irrig_option == tile_based_irrigation) THEN + irrig_tile(:) = 0 +ELSE + irrig_tile(:) = imdi +END IF + +IF (lhook) CALL dr_hook(ModuleName//':'//RoutineName,zhook_out,zhook_handle) +RETURN +END SUBROUTINE c_irrigation_alloc + +#if !defined(UM_JULES) && !defined(LFRIC) +SUBROUTINE check_irrigation() + +USE jules_surface_types_mod, ONLY: c3_irrig, c4_irrig, ntype, npft +USE logging_mod, ONLY: log_info, log_warn, log_error, log_fatal +USE missing_data_mod, ONLY: imdi +USE string_utils_mod, ONLY: to_string +USE jules_irrig_mod, ONLY: irrig_option + +IMPLICIT NONE + +!----------------------------------------------------------------------------- +! Description: +! Checks to irrig_tile variable +!----------------------------------------------------------------------------- + +! Work variables +INTEGER :: ERROR ! Error indicator +INTEGER :: i ! Loop counter. + +CHARACTER(LEN=*), PARAMETER :: routinename='CHECK_IRRIGATION' + +! ---------------------------------------------------------------------------- +! Check to ensure that the values are the allowed values i.e. either 1 or 0 +! and check to ensure that c3_irrig and c4_irrig tiles are the only ones to +! have irrig_tile == 1 +! ---------------------------------------------------------------------------- +ERROR = 0 +IF (ANY(irrig_tile(1:npft) /= imdi)) THEN + IF (ALL((irrig_tile(1:npft) == 0) .OR. (irrig_tile(1:npft) == 1))) THEN + CALL log_info(routinename, "irrig_pft has allowed values i.e. 1 and 0" // & + " Using irrig_tile values = " // & + TRIM(to_string(irrig_tile(:))) ) + ELSE + ERROR = 1 + CALL log_fatal(routinename, "Incorrect values entered for " // & + "irrig_pft, allowed values either 1 or 0 - " // & + " irrig_tile values = " // & + TRIM(to_string(irrig_tile(:))) ) + END IF + + DO i = 1, ntype + IF (irrig_tile(i) == 1 .AND. (i /= c3_irrig .AND. i /= c4_irrig)) THEN + ! Can only irrigate c3_irrig and c4_irrig tiles + ! Generate error if any other tile is selected + ERROR = 1 + CALL log_fatal(routinename, "Selected tiles cannot be irrigated, " // & + "can only select c3_irrig and c4_irrig") + ELSE IF (irrig_tile(i) == 1) THEN + CALL log_info(routinename, "Using tiles c3_irrig and/or c4_irrig") + END IF + END DO +ELSE + CALL log_info(routinename, "Irrigation is not being applied to surface " // & + "types, irrig_tile values set to imdi " // & + TRIM(to_string(irrig_tile(:))) ) + CALL log_info(routinename, "irrig_option set to " // & + TRIM(to_string(irrig_option)) ) +END IF + +RETURN +END SUBROUTINE check_irrigation + +SUBROUTINE c_irrigation_print() + +USE jules_print_mgr, ONLY: jules_print + +IMPLICIT NONE +CHARACTER(LEN=50000) :: lineBuffer +CHARACTER(LEN=*), PARAMETER :: RoutineName='C_IRRIGATION_PRINT' + +CALL jules_print(RoutineName, 'Contents of c_irrigation_mod') + +WRITE(lineBuffer,*)' irrig_tile = ', irrig_tile(:) +CALL jules_print(RoutineName,lineBuffer) + +CALL jules_print(RoutineName, & + '- - - - - - end of c_irrigation_mod - - - - - -') + +END SUBROUTINE c_irrigation_print +#endif + + +END MODULE c_irrigation_mod diff --git a/src/science/params/c_z0h_z0m_mod.F90 b/src/science/params/c_z0h_z0m_mod.F90 index 229b0f82..7362d91e 100644 --- a/src/science/params/c_z0h_z0m_mod.F90 +++ b/src/science/params/c_z0h_z0m_mod.F90 @@ -34,6 +34,8 @@ MODULE c_z0h_z0m SUBROUTINE c_z0h_z0m_alloc(ntype) +USE missing_data_mod, ONLY: rmdi + !No USE statements other than Dr Hook USE parkind1, ONLY: jprb, jpim USE yomhook, ONLY: lhook, dr_hook @@ -55,11 +57,61 @@ SUBROUTINE c_z0h_z0m_alloc(ntype) ALLOCATE( z0h_z0m(ntype)) ALLOCATE( z0h_z0m_classic(ntype)) -z0h_z0m(:) = 0.0 -z0h_z0m_classic(:) = 0.0 +z0h_z0m(:) = rmdi +z0h_z0m_classic(:) = rmdi IF (lhook) CALL dr_hook(ModuleName//':'//RoutineName,zhook_out,zhook_handle) RETURN END SUBROUTINE c_z0h_z0m_alloc +#if !defined(RIVERS_ONLY) +SUBROUTINE c_z0h_z0m_check(ntype) + +USE ereport_mod, ONLY: ereport +USE check_jules_nml_values_mod, ONLY: check_jules_nml_values + +IMPLICIT NONE + +!Arguments +INTEGER, INTENT(IN) :: ntype + +! Work variables +INTEGER :: errorstatus = 0 +CHARACTER(LEN=*), PARAMETER :: RoutineName='C_Z0H_Z0M_CHECK' + +IF ( SIZE( z0h_z0m(:) ) > 0 ) & + CALL check_jules_nml_values ( z0h_z0m(:), 'z0h_z0m', ntype, & + 0.0, HUGE(1.0), RoutineName, errorstatus ) +IF ( SIZE( z0h_z0m_classic(:) ) > 0 ) & + CALL check_jules_nml_values ( z0h_z0m_classic(:), & + 'z0h_z0m_classic', ntype, 0.0, HUGE(1.0), RoutineName, errorstatus ) + +IF ( errorstatus > 0 ) & + CALL ereport(RoutineName, errorstatus, & + ' Error(s) were found in c_z0h_z0m - see job.out for details') + +END SUBROUTINE c_z0h_z0m_check + + +SUBROUTINE c_z0h_z0m_print() + +USE jules_print_mgr, ONLY: jules_print + +IMPLICIT NONE +CHARACTER(LEN=50000) :: lineBuffer +CHARACTER(LEN=*), PARAMETER :: RoutineName='C_Z0H_Z0M_PRINT' + +CALL jules_print(RoutineName, 'Contents of c_z0h_z0m') + +WRITE(lineBuffer,*)' z0h_z0m_classic = ',z0h_z0m_classic(:) +CALL jules_print(RoutineName,lineBuffer) +WRITE(lineBuffer,*)' z0h_z0m = ',z0h_z0m(:) +CALL jules_print(RoutineName,lineBuffer) + +CALL jules_print(RoutineName, & + '- - - - - - end of c_z0h_z0m - - - - - -') + +END SUBROUTINE c_z0h_z0m_print +#endif + END MODULE c_z0h_z0m diff --git a/src/science/params/check_jules_nml_values_mod.F90 b/src/science/params/check_jules_nml_values_mod.F90 new file mode 100644 index 00000000..0f5f925d --- /dev/null +++ b/src/science/params/check_jules_nml_values_mod.F90 @@ -0,0 +1,79 @@ +! ***************************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***************************** +MODULE check_jules_nml_values_mod + +IMPLICIT NONE + +! Description: +! Routine for checking JULES namelist inputs +! +! Method: +! Checks the namelist value is in the correct range taking account of +! special cases. +! +! Code Owner: Please refer to the JULES file CodeOwners.txt +! +! Code description: +! Language: Fortran 2003. +! This code is written to UMDP3 standards. +! +INTERFACE check_jules_nml_values + MODULE PROCEDURE check_jules_nml_values_real +END INTERFACE check_jules_nml_values + +CONTAINS + +SUBROUTINE check_jules_nml_values_real ( var, var_name, var_size, min_value, & + max_value, RoutineName, errorstatus ) + +USE jules_print_mgr, ONLY: jules_print, jules_message +USE jules_surface_types_mod, ONLY: soil, npft +USE missing_data_mod, ONLY: rmdi +USE um_types, ONLY: real_jlslsm + +IMPLICIT NONE + +INTEGER :: var_size, errorstatus +REAL(KIND=real_jlslsm) :: var(var_size), min_value, max_value +CHARACTER(LEN=*) :: var_name, RoutineName +LOGICAL :: soil_chck(var_size) + +!----------------------------------------------------------------------------- +! The namelist variables should be initialised to rmdi and will still be +! rmdi if they are attached to science options when not required (UM/JULES). +! Specific checks to ensure that these required variables are not rmdi can be +! found in check_compatible_options. +!----------------------------------------------------------------------------- + +IF ( ANY( ABS( var(:) - rmdi ) > EPSILON(1.0) ) ) THEN + IF ( ANY( var(:) > max_value ) ) errorstatus = 2 + IF ( ANY( var(:) < min_value ) ) THEN + ! Need to account for albsnf_nvg(soil) = -1 for ancil + IF ( var_name == 'albsnf_nvg' ) THEN + soil_chck(:) = ( var(:) < min_value ) + SELECT CASE ( COUNT( soil_chck(:) ) ) + CASE ( 1 ) + IF ( .NOT. ABS ( var(soil-npft) + 1.0 ) < EPSILON(1.0) ) THEN + errorstatus = 3 + END IF + CASE DEFAULT + errorstatus = 3 + END SELECT + ELSE + errorstatus = 3 + END IF + END IF + IF ( errorstatus > 1 ) THEN + WRITE(jules_message,*) TRIM(var_name) // ' is out of range: ', var(:) + CALL jules_print(RoutineName, jules_message) + ! Reset to fail value after printing message + errorstatus = 1 + END IF +END IF + +END SUBROUTINE check_jules_nml_values_real + +END MODULE check_jules_nml_values_mod diff --git a/src/science/params/nvegparm_io_mod.F90 b/src/science/params/nvegparm_io_mod.F90 index ecb98b8f..48b89844 100644 --- a/src/science/params/nvegparm_io_mod.F90 +++ b/src/science/params/nvegparm_io_mod.F90 @@ -53,46 +53,6 @@ MODULE nvegparm_io CONTAINS -SUBROUTINE print_nlist_jules_nvegparm() -USE jules_print_mgr, ONLY: jules_print -IMPLICIT NONE -CHARACTER(LEN=50000) :: lineBuffer - -CALL jules_print('nvegparm_io', & - 'Contents of namelist jules_nvegparm') - -WRITE(lineBuffer,*)' albsnc_nvg_io = ',albsnc_nvg_io -CALL jules_print('nvegparm_io',lineBuffer) -WRITE(lineBuffer,*)' albsnf_nvg_io = ',albsnf_nvg_io -CALL jules_print('nvegparm_io',lineBuffer) -WRITE(lineBuffer,*)' albsnf_nvgl_io = ',albsnf_nvgl_io -CALL jules_print('nvegparm_io',lineBuffer) -WRITE(lineBuffer,*)' albsnf_nvgu_io = ',albsnf_nvgu_io -CALL jules_print('nvegparm_io',lineBuffer) -WRITE(lineBuffer,*)' catch_nvg_io = ',catch_nvg_io -CALL jules_print('nvegparm_io',lineBuffer) -WRITE(lineBuffer,*)' ch_nvg_io = ',ch_nvg_io -CALL jules_print('nvegparm_io',lineBuffer) -WRITE(lineBuffer,*)' emis_nvg_io = ',emis_nvg_io -CALL jules_print('nvegparm_io',lineBuffer) -WRITE(lineBuffer,*)' gs_nvg_io = ',gs_nvg_io -CALL jules_print('nvegparm_io',lineBuffer) -WRITE(lineBuffer,*)' infil_nvg_io = ',infil_nvg_io -CALL jules_print('nvegparm_io',lineBuffer) -WRITE(lineBuffer,*)' vf_nvg_io = ',vf_nvg_io -CALL jules_print('nvegparm_io',lineBuffer) -WRITE(lineBuffer,*)' z0_nvg_io = ',z0_nvg_io -CALL jules_print('nvegparm_io',lineBuffer) -WRITE(lineBuffer,*)' z0hm_classic_nvg_io = ',z0hm_classic_nvg_io -CALL jules_print('nvegparm_io',lineBuffer) -WRITE(lineBuffer,*)' z0hm_nvg_io = ',z0hm_nvg_io -CALL jules_print('nvegparm_io',lineBuffer) - -CALL jules_print('nvegparm_io', & - '- - - - - - end of namelist - - - - - -') - -END SUBROUTINE print_nlist_jules_nvegparm - #if defined(UM_JULES) SUBROUTINE read_nml_jules_nvegparm (unitnumber) diff --git a/src/science/params/nvegparm_mod.F90 b/src/science/params/nvegparm_mod.F90 index 33089f14..70aec309 100644 --- a/src/science/params/nvegparm_mod.F90 +++ b/src/science/params/nvegparm_mod.F90 @@ -104,17 +104,15 @@ SUBROUTINE nvegparm_alloc(nnvg) END SUBROUTINE nvegparm_alloc -SUBROUTINE check_jules_nvegparm(nnvg,npft) +SUBROUTINE check_jules_nvegparm(nnvg) USE ereport_mod, ONLY: ereport - -! May want to move this to remove dependency -USE c_z0h_z0m, ONLY: z0h_z0m, z0h_z0m_classic +USE check_jules_nml_values_mod, ONLY: check_jules_nml_values IMPLICIT NONE !Arguments -INTEGER, INTENT(IN) :: nnvg, npft +INTEGER, INTENT(IN) :: nnvg ! Work variables INTEGER :: errorstatus = 0 @@ -122,44 +120,38 @@ SUBROUTINE check_jules_nvegparm(nnvg,npft) ! In LFRic if options are not required they have a zero size. IF ( SIZE( albsnc_nvg(:) ) > 0 ) & - CALL check_jules_nml_values_real ( albsnc_nvg(:), 'albsnc_nvg', nnvg, & + CALL check_jules_nml_values ( albsnc_nvg(:), 'albsnc_nvg', nnvg, & 0.0, 1.0, RoutineName, errorstatus ) IF ( SIZE( albsnf_nvgu(:) ) > 0 ) & - CALL check_jules_nml_values_real ( albsnf_nvgu(:), 'albsnf_nvgu', nnvg, & + CALL check_jules_nml_values ( albsnf_nvgu(:), 'albsnf_nvgu', nnvg, & 0.0, 1.0, RoutineName, errorstatus ) IF ( SIZE( albsnf_nvg(:) ) > 0 ) & - CALL check_jules_nml_values_real ( albsnf_nvg(:), 'albsnf_nvg', nnvg, & + CALL check_jules_nml_values ( albsnf_nvg(:), 'albsnf_nvg', nnvg, & 0.0, 1.0, RoutineName, errorstatus ) IF ( SIZE( albsnf_nvgl(:) ) > 0 ) & - CALL check_jules_nml_values_real ( albsnf_nvgl(:), 'albsnf_nvgl', nnvg, & + CALL check_jules_nml_values ( albsnf_nvgl(:), 'albsnf_nvgl', nnvg, & 0.0, 1.0, RoutineName, errorstatus ) IF ( SIZE( catch_nvg(:) ) > 0 ) & - CALL check_jules_nml_values_real ( catch_nvg(:), 'catch_nvg', nnvg, & + CALL check_jules_nml_values ( catch_nvg(:), 'catch_nvg', nnvg, & 0.0, HUGE(1.0), RoutineName, errorstatus ) IF ( SIZE( emis_nvg(:) ) > 0 ) & - CALL check_jules_nml_values_real ( emis_nvg(:), 'emis_nvg', nnvg, & + CALL check_jules_nml_values ( emis_nvg(:), 'emis_nvg', nnvg, & 0.0, 1.0, RoutineName, errorstatus ) IF ( SIZE( gs_nvg(:) ) > 0 ) & - CALL check_jules_nml_values_real ( gs_nvg(:), 'gs_nvg', nnvg, & + CALL check_jules_nml_values ( gs_nvg(:), 'gs_nvg', nnvg, & 0.0, HUGE(1.0), RoutineName, errorstatus ) IF ( SIZE( infil_nvg(:) ) > 0 ) & - CALL check_jules_nml_values_real ( infil_nvg(:), 'infil_nvg', nnvg, & + CALL check_jules_nml_values ( infil_nvg(:), 'infil_nvg', nnvg, & 0.0, HUGE(1.0), RoutineName, errorstatus ) IF ( SIZE( z0_nvg(:) ) > 0 ) & - CALL check_jules_nml_values_real ( z0_nvg(:), 'z0_nvg', nnvg, & + CALL check_jules_nml_values ( z0_nvg(:), 'z0_nvg', nnvg, & 0.0, HUGE(1.0), RoutineName, errorstatus ) IF ( SIZE( ch_nvg(:) ) > 0 ) & - CALL check_jules_nml_values_real ( ch_nvg(:), 'ch_nvg', nnvg, & + CALL check_jules_nml_values ( ch_nvg(:), 'ch_nvg', nnvg, & 0.0, HUGE(1.0), RoutineName, errorstatus ) IF ( SIZE( vf_nvg(:) ) > 0 ) & - CALL check_jules_nml_values_real ( vf_nvg(:), 'vf_nvg', nnvg, & + CALL check_jules_nml_values ( vf_nvg(:), 'vf_nvg', nnvg, & 0.0, 1.0, RoutineName, errorstatus ) -IF ( SIZE( z0h_z0m(npft+1:) ) > 0 ) & - CALL check_jules_nml_values_real ( z0h_z0m(npft+1:), 'z0hm_nvg', nnvg, & - 0.0, HUGE(1.0), RoutineName, errorstatus ) -IF ( SIZE( z0h_z0m_classic(npft+1:) ) > 0 ) & - CALL check_jules_nml_values_real ( z0h_z0m_classic(npft+1:), & - 'z0hm_classic_nvg', nnvg, 0.0, HUGE(1.0), RoutineName, errorstatus ) IF ( errorstatus > 0 ) & CALL ereport(RoutineName, errorstatus, & @@ -167,54 +159,43 @@ SUBROUTINE check_jules_nvegparm(nnvg,npft) END SUBROUTINE check_jules_nvegparm +SUBROUTINE print_nlist_jules_nvegparm() -SUBROUTINE check_jules_nml_values_real ( var, var_name, var_size, min_value, & - max_value, RoutineName, errorstatus ) - -USE jules_print_mgr, ONLY: jules_print, jules_message -USE jules_surface_types_mod, ONLY: soil, npft -USE missing_data_mod, ONLY: rmdi +USE jules_print_mgr, ONLY: jules_print +USE jules_surface_types_mod, ONLY: ntype IMPLICIT NONE - -INTEGER :: var_size, errorstatus -REAL(KIND=real_jlslsm) :: var(var_size), min_value, max_value -CHARACTER(LEN=*) :: var_name, RoutineName -LOGICAL :: soil_chck(var_size) - -!----------------------------------------------------------------------------- -! The namelist variables should be initialised to rmdi and will still be -! rmdi if they are attached to science options when not required (UM/JULES). -! Specific checks to ensure that these required variables are not rmdi can be -! found in check_compatible_options. -!----------------------------------------------------------------------------- - -IF ( ANY( ABS( var(:) - rmdi ) > EPSILON(1.0) ) ) THEN - IF ( ANY( var(:) > max_value ) ) errorstatus = 2 - IF ( ANY( var(:) < min_value ) ) THEN - ! Need to account for albsnf_nvg(soil) = -1 for ancil - IF ( var_name == 'albsnf_nvg' ) THEN - soil_chck(:) = ( var(:) < min_value ) - SELECT CASE ( COUNT( soil_chck(:) ) ) - CASE ( 1 ) - IF ( .NOT. ABS ( var(soil-npft) + 1.0 ) < EPSILON(1.0) ) THEN - errorstatus = 3 - END IF - CASE DEFAULT - errorstatus = 3 - END SELECT - ELSE - errorstatus = 3 - END IF - END IF - IF ( errorstatus > 1 ) THEN - WRITE(jules_message,*) TRIM(var_name) // ' is out of range: ', var(:) - CALL jules_print(RoutineName, jules_message) - ! Reset to fail value after printing message - errorstatus = 1 - END IF -END IF - -END SUBROUTINE check_jules_nml_values_real +CHARACTER(LEN=50000) :: lineBuffer + +CALL jules_print('nvegparm', & + 'Contents of namelist jules_nvegparm') + +WRITE(lineBuffer,*)' albsnc_nvg = ',albsnc_nvg +CALL jules_print('nvegparm',lineBuffer) +WRITE(lineBuffer,*)' albsnf_nvg = ',albsnf_nvg +CALL jules_print('nvegparm',lineBuffer) +WRITE(lineBuffer,*)' albsnf_nvgl = ',albsnf_nvgl +CALL jules_print('nvegparm',lineBuffer) +WRITE(lineBuffer,*)' albsnf_nvgu = ',albsnf_nvgu +CALL jules_print('nvegparm',lineBuffer) +WRITE(lineBuffer,*)' catch_nvg = ',catch_nvg +CALL jules_print('nvegparm',lineBuffer) +WRITE(lineBuffer,*)' ch_nvg = ',ch_nvg +CALL jules_print('nvegparm',lineBuffer) +WRITE(lineBuffer,*)' emis_nvg = ',emis_nvg +CALL jules_print('nvegparm',lineBuffer) +WRITE(lineBuffer,*)' gs_nvg = ',gs_nvg +CALL jules_print('nvegparm',lineBuffer) +WRITE(lineBuffer,*)' infil_nvg = ',infil_nvg +CALL jules_print('nvegparm',lineBuffer) +WRITE(lineBuffer,*)' vf_nvg = ',vf_nvg +CALL jules_print('nvegparm',lineBuffer) +WRITE(lineBuffer,*)' z0_nvg = ',z0_nvg +CALL jules_print('nvegparm',lineBuffer) + +CALL jules_print('nvegparm', & + '- - - - - - end of namelist - - - - - -') + +END SUBROUTINE print_nlist_jules_nvegparm END MODULE nvegparm diff --git a/src/science/params/pftparm_io_mod.F90 b/src/science/params/pftparm_io_mod.F90 index 8de2ac1c..c2786e96 100644 --- a/src/science/params/pftparm_io_mod.F90 +++ b/src/science/params/pftparm_io_mod.F90 @@ -38,6 +38,7 @@ MODULE pftparm_io INTEGER :: & c3_io(npft_max) = imdi, & + irrig_pft_io(npft_max) = imdi, & orient_io(npft_max) = imdi REAL(KIND=real_jlslsm) :: & @@ -181,251 +182,25 @@ MODULE pftparm_io sug_g0_io, g1_stomata_io, g_leaf_0_io, & glmin_io, gpp_st_io, sug_grec_io, & gsoil_f_io, hw_sw_io, ief_io, & - infil_f_io, jv25_ratio_io, kext_io, & - kn_io, knl_io, kpar_io, & - lai_alb_lim_io, lma_io, mef_io, & - neff_io, nl0_io, nmass_io, & - nr_io, nr_nl_io, ns_nl_io, & - nsw_io, omega_io, omegal_io, & - omegau_io, omnir_io, omnirl_io, & - omniru_io, orient_io, q10_leaf_io, & - r_grow_io, rootd_ft_io, sigl_io, & - tef_io, tleaf_of_io, tlow_io, & - tupp_io, vint_io, vsl_io, & - sug_yg_io, z0hm_pft_io, z0hm_classic_pft_io, & - z0v_io, sox_a_io, sox_p50_io, & - sox_rp_min_io + infil_f_io, irrig_pft_io, jv25_ratio_io, & + kext_io, kn_io, knl_io, & + kpar_io, lai_alb_lim_io, lma_io, & + mef_io, neff_io, nl0_io, & + nmass_io, nr_io, nr_nl_io, & + ns_nl_io, nsw_io, omega_io, & + omegal_io, omegau_io, omnir_io, & + omnirl_io, omniru_io, orient_io, & + q10_leaf_io, r_grow_io, rootd_ft_io, & + sigl_io, tef_io, tleaf_of_io, & + tlow_io, tupp_io, vint_io, & + vsl_io, sug_yg_io, z0hm_pft_io, & + z0hm_classic_pft_io, z0v_io, sox_a_io, & + sox_p50_io, sox_rp_min_io CHARACTER(LEN=*), PARAMETER, PRIVATE :: ModuleName='PFTPARM_IO' CONTAINS -SUBROUTINE print_nlist_jules_pftparm() -USE jules_print_mgr, ONLY: jules_print -IMPLICIT NONE -CHARACTER(LEN=50000) :: lineBuffer - -CALL jules_print('pftparm_io', & - 'Contents of namelist jules_pftparm') - -#if !defined(UM_JULES) -WRITE(lineBuffer,*)' canht_ft_io = ',canht_ft_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' lai_io = ',lai_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' fsmc_mod_io = ',fsmc_mod_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' psi_close_io = ',psi_close_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' psi_open_io = ',psi_open_io -CALL jules_print('pftparm_io',lineBuffer) -#endif - - -WRITE(lineBuffer,*)' a_wl_io = ',a_wl_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' a_ws_io = ',a_ws_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' act_jmax_io = ',act_jmax_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' act_vcmax_io = ',act_vcmax_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' aef_io = ',aef_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' albsnc_max_io = ',albsnc_max_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' albsnc_min_io = ',albsnc_min_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' albsnf_max_io = ',albsnf_max_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' alpha_io = ',alpha_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' alpha_elec_io = ',alpha_elec_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' alnir_io = ',alnir_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' alpar_io = ',alpar_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' avg_ba_io = ',avg_ba_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' b_wl_io = ',b_wl_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' c3_io = ',c3_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' can_struct_a_io = ',can_struct_a_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' catch0_io = ',catch0_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' ccleaf_max_io = ',ccleaf_max_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' ccleaf_min_io = ',ccleaf_min_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' ccwood_max_io = ',ccwood_max_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' ccwood_min_io = ',ccwood_min_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' ci_st_io = ',ci_st_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' dcatch_dlai_io = ',dcatch_dlai_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' deact_vcmax_io = ',deact_jmax_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' deact_vcmax_io = ',deact_vcmax_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' dfp_dcuo_io = ',dfp_dcuo_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' dgl_dm_io = ',dgl_dm_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' dgl_dt_io = ',dgl_dt_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' dqcrit_io = ',dqcrit_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' ds_jmax_io = ',ds_jmax_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' ds_vcmax_io = ',ds_vcmax_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' dust_veg_scj_io = ',dust_veg_scj_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' dz0v_dh_io = ',dz0v_dh_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' emis_pft_io = ',emis_pft_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' eta_sl_io = ',eta_sl_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' f0_io = ',f0_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' fd_io = ',fd_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' fef_bc_io = ',fef_bc_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' fef_ch4_io = ',fef_ch4_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' fef_co_io = ',fef_co_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' fef_co2_io = ',fef_co2_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' fef_nox_io = ',fef_nox_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' fef_oc_io = ',fef_oc_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' fef_so2_io = ',fef_so2_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' fef_c2h4_io = ',fef_c2h4_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' fef_c2h6_io = ',fef_c2h6_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' fef_c3h8_io = ',fef_c3h8_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' fef_hcho_io = ',fef_hcho_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' fef_mecho_io = ',fef_mecho_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' fef_nh3_io = ',fef_nh3_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' fef_dms_io = ',fef_dms_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' fire_mort_io = ',fire_mort_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' fl_o3_ct_io = ',fl_o3_ct_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' fsmc_of_io = ',fsmc_of_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' fsmc_p0_io = ',fsmc_p0_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' sug_g0_io = ',sug_g0_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' g1_stomata_io = ',g1_stomata_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' g_leaf_0_io = ',g_leaf_0_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' glmin_io = ',glmin_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' gpp_st_io = ',gpp_st_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' sug_grec_io = ',sug_grec_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' gsoil_f_io = ',gsoil_f_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' hw_sw_io = ',hw_sw_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' ief_io = ',ief_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' infil_f_io = ',infil_f_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' jv25_ratio_io = ',jv25_ratio_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' kext_io = ',kext_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' kn_io = ',kn_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' knl_io = ',knl_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' kpar_io = ',kpar_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' lai_alb_lim_io = ',lai_alb_lim_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' lma_io = ',lma_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' mef_io = ',mef_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' neff_io = ',neff_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' nl0_io = ',nl0_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' nmass_io = ',nmass_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' nr_nl_io = ',nr_nl_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' ns_nl_io = ',ns_nl_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' nsw_io = ',nsw_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' nr_io = ',nr_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' omega_io = ',omega_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' omnir_io = ',omnir_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' orient_io = ',orient_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' q10_leaf_io = ',q10_leaf_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' r_grow_io = ',r_grow_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' rootd_ft_io = ',rootd_ft_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' sigl_io = ',sigl_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' tef_io = ',tef_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' tleaf_of_io = ',tleaf_of_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' tlow_io = ',tlow_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' tupp_io = ',tupp_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' vint_io = ',vint_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' vsl_io = ',vsl_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' sug_yg_io = ',sug_yg_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' z0hm_pft_io = ',z0hm_pft_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' z0v_io = ',z0v_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' sox_a_io = ',sox_a_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' sox_p50_io = ',sox_p50_io -CALL jules_print('pftparm_io',lineBuffer) -WRITE(lineBuffer,*)' sox_rp_min_io = ',sox_rp_min_io -CALL jules_print('pftparm_io',lineBuffer) - -CALL jules_print('pftparm_io', & - '- - - - - - end of namelist - - - - - -') - -END SUBROUTINE print_nlist_jules_pftparm - #if defined(UM_JULES) SUBROUTINE read_nml_jules_pftparm (unitnumber) @@ -455,12 +230,13 @@ SUBROUTINE read_nml_jules_pftparm (unitnumber) ! set number of each type of variable in my_namelist type INTEGER, PARAMETER :: no_of_types = 2 -INTEGER, PARAMETER :: n_int = 2 * npft_max +INTEGER, PARAMETER :: n_int = 3 * npft_max INTEGER, PARAMETER :: n_real = 108 * npft_max TYPE :: my_namelist SEQUENCE INTEGER :: c3_io(npft_max) + INTEGER :: irrig_pft_io(npft_max) INTEGER :: orient_io(npft_max) REAL(KIND=real_jlslsm) :: a_wl_io(npft_max) REAL(KIND=real_jlslsm) :: a_ws_io(npft_max) @@ -659,6 +435,7 @@ SUBROUTINE read_nml_jules_pftparm (unitnumber) my_nml % hw_sw_io = hw_sw_io my_nml % ief_io = ief_io my_nml % infil_f_io = infil_f_io + my_nml % irrig_pft_io = irrig_pft_io my_nml % jv25_ratio_io = jv25_ratio_io my_nml % kext_io = kext_io my_nml % kn_io = kn_io @@ -775,6 +552,7 @@ SUBROUTINE read_nml_jules_pftparm (unitnumber) hw_sw_io = my_nml % hw_sw_io ief_io = my_nml % ief_io infil_f_io = my_nml % infil_f_io + irrig_pft_io = my_nml % irrig_pft_io jv25_ratio_io = my_nml % jv25_ratio_io kext_io = my_nml % kext_io kn_io = my_nml % kn_io @@ -873,7 +651,8 @@ SUBROUTINE init_pftparm_allocated() sug_yg, z0v, sox_a, & sox_p50, sox_rp_min -USE c_z0h_z0m, ONLY: z0h_z0m, z0h_z0m_classic +USE c_irrigation_mod, ONLY: irrig_tile +USE c_z0h_z0m, ONLY: z0h_z0m, z0h_z0m_classic USE jules_surface_types_mod, ONLY: npft @@ -977,6 +756,7 @@ SUBROUTINE init_pftparm_allocated() glmin(:) = glmin_io(1:npft) gsoil_f(:) = gsoil_f_io(1:npft) infil_f(:) = infil_f_io(1:npft) +irrig_tile(1:npft) = irrig_pft_io(1:npft) rootd_ft(:) = rootd_ft_io(1:npft) z0v(:) = z0v_io(1:npft) z0h_z0m(1:npft) = z0hm_pft_io(1:npft) diff --git a/src/science/params/pftparm_mod.F90 b/src/science/params/pftparm_mod.F90 index 8b848c83..68978848 100644 --- a/src/science/params/pftparm_mod.F90 +++ b/src/science/params/pftparm_mod.F90 @@ -5,7 +5,7 @@ ! *****************************COPYRIGHT******************************* ! ! Module holds surface parameters for each Plant Functional Type (but -! not parameters that are only used by TRIFFID). +! not parameters that are only used by TRIFFID OR RED). @@ -377,6 +377,8 @@ MODULE pftparm SUBROUTINE pftparm_alloc(npft) +USE missing_data_mod, ONLY: imdi, rmdi + !No USE statements other than Dr Hook USE parkind1, ONLY: jprb, jpim USE yomhook, ONLY: lhook, dr_hook @@ -421,27 +423,27 @@ SUBROUTINE pftparm_alloc(npft) ALLOCATE( omniru(npft)) ALLOCATE( orient(npft)) -albsnc_max(:) = 0.0 -albsnc_min(:) = 0.0 -albsnf_max(:) = 0.0 -albsnf_maxl(:) = 0.0 -albsnf_maxu(:) = 0.0 -alnir(:) = 0.0 -alnirl(:) = 0.0 -alniru(:) = 0.0 -alpar(:) = 0.0 -alparl(:) = 0.0 -alparu(:) = 0.0 -kext(:) = 0.0 -kpar(:) = 0.0 -lai_alb_lim(:) = 0.0 -omega(:) = 0.0 -omegal(:) = 0.0 -omegau(:) = 0.0 -omnir(:) = 0.0 -omnirl(:) = 0.0 -omniru(:) = 0.0 -orient(:) = 0.0 +orient(:) = imdi +albsnc_max(:) = rmdi +albsnc_min(:) = rmdi +albsnf_max(:) = rmdi +albsnf_maxl(:) = rmdi +albsnf_maxu(:) = rmdi +alnir(:) = rmdi +alnirl(:) = rmdi +alniru(:) = rmdi +alpar(:) = rmdi +alparl(:) = rmdi +alparu(:) = rmdi +kext(:) = rmdi +kpar(:) = rmdi +lai_alb_lim(:) = rmdi +omega(:) = rmdi +omegal(:) = rmdi +omegau(:) = rmdi +omnir(:) = rmdi +omnirl(:) = rmdi +omniru(:) = rmdi ! Photosynthesis and respiration parameters ALLOCATE( act_jmax(npft)) @@ -469,30 +471,30 @@ SUBROUTINE pftparm_alloc(npft) ALLOCATE( tlow(npft)) ALLOCATE( tupp(npft)) -act_jmax(:) = 0.0 -act_vcmax(:) = 0.0 -alpha(:) = 0.0 -alpha_elec(:) = 0.0 -c3(:) = 0.0 -can_struct_a(:) = 0.0 -deact_jmax(:) = 0.0 -deact_vcmax(:) = 0.0 -dqcrit(:) = 0.0 -ds_jmax(:) = 0.0 -ds_vcmax(:) = 0.0 -f0(:) = 0.0 -fd(:) = 0.0 -g1_stomata(:) = 0.0 -jv25_ratio(:) = 0.0 -kn(:) = 0.0 -knl(:) = 0.0 -neff(:) = 0.0 -nl0(:) = 0.0 -nr_nl(:) = 0.0 -ns_nl(:) = 0.0 -r_grow(:) = 0.0 -tlow(:) = 0.0 -tupp(:) = 0.0 +c3(:) = imdi +act_jmax(:) = rmdi +act_vcmax(:) = rmdi +alpha(:) = rmdi +alpha_elec(:) = rmdi +can_struct_a(:) = rmdi +deact_jmax(:) = rmdi +deact_vcmax(:) = rmdi +dqcrit(:) = rmdi +ds_jmax(:) = rmdi +ds_vcmax(:) = rmdi +f0(:) = rmdi +fd(:) = rmdi +g1_stomata(:) = rmdi +jv25_ratio(:) = rmdi +kn(:) = rmdi +knl(:) = rmdi +neff(:) = rmdi +nl0(:) = rmdi +nr_nl(:) = rmdi +ns_nl(:) = rmdi +r_grow(:) = rmdi +tlow(:) = rmdi +tupp(:) = rmdi ! Traint physiology parameters ALLOCATE( hw_sw(npft)) @@ -504,14 +506,14 @@ SUBROUTINE pftparm_alloc(npft) ALLOCATE( vint(npft)) ALLOCATE( vsl(npft)) -hw_sw(:) = 0.0 -lma(:) = 0.0 -nmass(:) = 0.0 -nr(:) = 0.0 -nsw(:) = 0.0 -q10_leaf(:) = 0.0 -vint(:) = 0.0 -vsl(:) = 0.0 +hw_sw(:) = rmdi +lma(:) = rmdi +nmass(:) = rmdi +nr(:) = rmdi +nsw(:) = rmdi +q10_leaf(:) = rmdi +vint(:) = rmdi +vsl(:) = rmdi ! Allometric parameters ALLOCATE( a_wl(npft)) @@ -520,11 +522,11 @@ SUBROUTINE pftparm_alloc(npft) ALLOCATE( eta_sl(npft)) ALLOCATE( sigl(npft)) -a_wl(:) = 0.0 -a_ws(:) = 0.0 -b_wl(:) = 0.0 -eta_sl(:) = 0.0 -sigl(:) = 0.0 +a_wl(:) = rmdi +a_ws(:) = rmdi +b_wl(:) = rmdi +eta_sl(:) = rmdi +sigl(:) = rmdi ! Phenology parameters ALLOCATE( dgl_dm(npft)) @@ -533,11 +535,11 @@ SUBROUTINE pftparm_alloc(npft) ALLOCATE( g_leaf_0(npft)) ALLOCATE( tleaf_of(npft)) -dgl_dm(:) = 0.0 -dgl_dt(:) = 0.0 -fsmc_of(:) = 0.0 -g_leaf_0(:) = 0.0 -tleaf_of(:) = 0.0 +dgl_dm(:) = rmdi +dgl_dt(:) = rmdi +fsmc_of(:) = rmdi +g_leaf_0(:) = rmdi +tleaf_of(:) = rmdi ! Hydrological parameters ALLOCATE( catch0(npft)) @@ -555,27 +557,27 @@ SUBROUTINE pftparm_alloc(npft) ALLOCATE( rootd_ft(npft)) ALLOCATE( z0v(npft)) -catch0(:) = 0.0 -dcatch_dlai(:) = 0.0 -dust_veg_scj(:) = 0.0 -dz0v_dh(:) = 0.0 -emis_pft(:) = 0.0 -fsmc_mod(:) = 0.0 -fsmc_p0(:) = 0.0 -glmin(:) = 0.0 -gsoil_f(:) = 0.0 -infil_f(:) = 0.0 -psi_close(:) = 0.0 -psi_open(:) = 0.0 -rootd_ft(:) = 0.0 -z0v(:) = 0.0 +fsmc_mod(:) = imdi +catch0(:) = rmdi +dcatch_dlai(:) = rmdi +dust_veg_scj(:) = rmdi +dz0v_dh(:) = rmdi +emis_pft(:) = rmdi +fsmc_p0(:) = rmdi +glmin(:) = rmdi +gsoil_f(:) = rmdi +infil_f(:) = rmdi +psi_close(:) = rmdi +psi_open(:) = rmdi +rootd_ft(:) = rmdi +z0v(:) = rmdi ! Ozone damage parameters ALLOCATE( dfp_dcuo(npft)) ALLOCATE( fl_o3_ct(npft)) -dfp_dcuo(:) = 0.0 -fl_o3_ct(:) = 0.0 +dfp_dcuo(:) = rmdi +fl_o3_ct(:) = rmdi ! BVOC emission parameters ALLOCATE( aef(npft)) @@ -585,12 +587,12 @@ SUBROUTINE pftparm_alloc(npft) ALLOCATE( mef(npft)) ALLOCATE( tef(npft)) -aef(:) = 0.0 -ci_st(:) = 0.0 -gpp_st(:) = 0.0 -ief(:) = 0.0 -mef(:) = 0.0 -tef(:) = 0.0 +aef(:) = rmdi +ci_st(:) = rmdi +gpp_st(:) = rmdi +ief(:) = rmdi +mef(:) = rmdi +tef(:) = rmdi ! INFERNO combustion parameters ALLOCATE( avg_ba(npft)) @@ -600,12 +602,12 @@ SUBROUTINE pftparm_alloc(npft) ALLOCATE( ccwood_max(npft)) ALLOCATE( fire_mort(npft)) -avg_ba(:) = 0.0 -ccleaf_min(:) = 0.0 -ccleaf_max(:) = 0.0 -ccwood_min(:) = 0.0 -ccwood_max(:) = 0.0 -fire_mort(:) = 0.0 +avg_ba(:) = rmdi +ccleaf_min(:) = rmdi +ccleaf_max(:) = rmdi +ccwood_min(:) = rmdi +ccwood_max(:) = rmdi +fire_mort(:) = rmdi ! INFERNO emission parameters ALLOCATE( fef_bc(npft)) @@ -623,41 +625,904 @@ SUBROUTINE pftparm_alloc(npft) ALLOCATE( fef_nh3(npft)) ALLOCATE( fef_dms(npft)) -fef_bc(:) = 0.0 -fef_ch4(:) = 0.0 -fef_co(:) = 0.0 -fef_co2(:) = 0.0 -fef_nox(:) = 0.0 -fef_oc(:) = 0.0 -fef_so2(:) = 0.0 -fef_c2h4(:) = 0.0 -fef_c2h6(:) = 0.0 -fef_c3h8(:) = 0.0 -fef_mecho(:)= 0.0 -fef_hcho(:) = 0.0 -fef_nh3(:) = 0.0 -fef_dms(:) = 0.0 +fef_bc(:) = rmdi +fef_ch4(:) = rmdi +fef_co(:) = rmdi +fef_co2(:) = rmdi +fef_nox(:) = rmdi +fef_oc(:) = rmdi +fef_so2(:) = rmdi +fef_c2h4(:) = rmdi +fef_c2h6(:) = rmdi +fef_c3h8(:) = rmdi +fef_mecho(:)= rmdi +fef_hcho(:) = rmdi +fef_nh3(:) = rmdi +fef_dms(:) = rmdi ! SUGAR parameters ALLOCATE( sug_grec(npft)) ALLOCATE( sug_g0(npft)) ALLOCATE( sug_yg(npft)) -sug_grec(:) = 0.0 -sug_g0(:) = 0.0 -sug_yg(:) = 0.0 +sug_grec(:) = rmdi +sug_g0(:) = rmdi +sug_yg(:) = rmdi ! SOX parameters ALLOCATE( sox_a(npft)) ALLOCATE( sox_p50(npft)) ALLOCATE( sox_rp_min(npft)) -sox_a(:) = 0.0 -sox_p50(:) = 0.0 -sox_rp_min(:) = 0.0 +sox_a(:) = rmdi +sox_p50(:) = rmdi +sox_rp_min(:) = rmdi IF (lhook) CALL dr_hook(ModuleName//':'//RoutineName,zhook_out,zhook_handle) RETURN END SUBROUTINE pftparm_alloc + +SUBROUTINE print_nlist_jules_pftparm() + +USE jules_print_mgr, ONLY: jules_print + +IMPLICIT NONE + +CHARACTER(LEN=50000) :: lineBuffer + +CALL jules_print('pftparm', & + 'Contents of namelist jules_pftparm') + +#if !defined(UM_JULES) +WRITE(lineBuffer,*)' fsmc_mod = ',fsmc_mod +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' psi_close = ',psi_close +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' psi_open = ',psi_open +CALL jules_print('pftparm',lineBuffer) +#endif + + +WRITE(lineBuffer,*)' a_wl = ',a_wl +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' a_ws = ',a_ws +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' act_jmax = ',act_jmax +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' act_vcmax = ',act_vcmax +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' aef = ',aef +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' albsnc_max = ',albsnc_max +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' albsnc_min = ',albsnc_min +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' albsnf_max = ',albsnf_max +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' alpha = ',alpha +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' alpha_elec = ',alpha_elec +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' alnir = ',alnir +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' alpar = ',alpar +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' avg_ba = ',avg_ba +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' b_wl = ',b_wl +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' c3 = ',c3 +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' can_struct_a = ',can_struct_a +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' catch0 = ',catch0 +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' ccleaf_max = ',ccleaf_max +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' ccleaf_min = ',ccleaf_min +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' ccwood_max = ',ccwood_max +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' ccwood_min = ',ccwood_min +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' ci_st = ',ci_st +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' dcatch_dlai = ',dcatch_dlai +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' deact_vcmax = ',deact_jmax +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' deact_vcmax = ',deact_vcmax +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' dfp_dcuo = ',dfp_dcuo +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' dgl_dm = ',dgl_dm +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' dgl_dt = ',dgl_dt +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' dqcrit = ',dqcrit +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' ds_jmax = ',ds_jmax +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' ds_vcmax = ',ds_vcmax +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' dust_veg_scj = ',dust_veg_scj +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' dz0v_dh = ',dz0v_dh +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' emis_pft = ',emis_pft +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' eta_sl = ',eta_sl +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' f0 = ',f0 +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' fd = ',fd +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' fef_bc = ',fef_bc +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' fef_ch4 = ',fef_ch4 +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' fef_co = ',fef_co +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' fef_co2 = ',fef_co2 +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' fef_nox = ',fef_nox +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' fef_oc = ',fef_oc +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' fef_so2 = ',fef_so2 +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' fef_c2h4 = ',fef_c2h4 +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' fef_c2h6 = ',fef_c2h6 +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' fef_c3h8 = ',fef_c3h8 +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' fef_hcho = ',fef_hcho +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' fef_mecho = ',fef_mecho +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' fef_nh3 = ',fef_nh3 +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' fef_dms = ',fef_dms +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' fire_mort = ',fire_mort +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' fl_o3_ct = ',fl_o3_ct +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' fsmc_of = ',fsmc_of +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' fsmc_p0 = ',fsmc_p0 +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' sug_g0 = ',sug_g0 +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' g1_stomata = ',g1_stomata +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' g_leaf_0 = ',g_leaf_0 +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' glmin = ',glmin +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' gpp_st = ',gpp_st +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' sug_grec = ',sug_grec +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' gsoil_f = ',gsoil_f +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' hw_sw = ',hw_sw +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' ief = ',ief +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' infil_f = ',infil_f +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' jv25_ratio = ',jv25_ratio +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' kext = ',kext +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' kn = ',kn +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' knl = ',knl +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' kpar = ',kpar +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' lai_alb_lim = ',lai_alb_lim +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' lma = ',lma +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' mef = ',mef +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' neff = ',neff +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' nl0 = ',nl0 +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' nmass = ',nmass +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' nr_nl = ',nr_nl +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' ns_nl = ',ns_nl +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' nsw = ',nsw +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' nr = ',nr +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' omega = ',omega +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' omnir = ',omnir +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' orient = ',orient +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' q10_leaf = ',q10_leaf +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' r_grow = ',r_grow +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' rootd_ft = ',rootd_ft +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' sigl = ',sigl +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' tef = ',tef +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' tleaf_of = ',tleaf_of +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' tlow = ',tlow +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' tupp = ',tupp +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' vint = ',vint +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' vsl = ',vsl +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' sug_yg = ',sug_yg +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' z0v = ',z0v +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' sox_a = ',sox_a +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' sox_p50 = ',sox_p50 +CALL jules_print('pftparm',lineBuffer) +WRITE(lineBuffer,*)' sox_rp_min = ',sox_rp_min +CALL jules_print('pftparm',lineBuffer) + +CALL jules_print('pftparm', & + '- - - - - - end of namelist - - - - - -') + +END SUBROUTINE print_nlist_jules_pftparm + + +SUBROUTINE check_jules_pftparm(npft,nnpft) + +USE jules_soil_biogeochem_mod, ONLY: l_layeredC, soil_bgc_model, & + soil_model_4pool + +USE jules_vegetation_mod, ONLY: can_rad_mod, l_crop, l_trait_phys, & + l_use_pft_psi, l_bvoc_emis, l_inferno, & + l_o3_damage, l_trif_fire, photo_acclim_model, & + photo_act_model, photo_act_pft, & + photo_farquhar, photo_model, & + stomata_jacobs, stomata_medlyn, stomata_sox, & + stomata_model, l_spec_veg_z0, l_sugar, & + l_scale_resp_pm + +USE jules_radiation_mod, ONLY: l_spec_albedo, l_albedo_obs, l_snow_albedo + +USE missing_data_mod, ONLY: rmdi + +USE ereport_mod, ONLY: ereport +USE jules_print_mgr, ONLY: jules_print + +IMPLICIT NONE + +!Arguments +INTEGER, INTENT(IN) :: npft, nnpft + +! Work variables +INTEGER :: ERROR ! Error indicator + +CHARACTER(LEN=*), PARAMETER :: RoutineName='CHECK_JULES_PFTPARM' + +!----------------------------------------------------------------------------- +! Check that all required variables were present in the namelist. +! The namelist variables were initialised to rmdi. +! Some configurations don't need all parameters but in some cases these are +! still tested below. +!----------------------------------------------------------------------------- +ERROR = 0 +#if !defined(UM_JULES) +! Trigger ignored in the UM for now use ifdef, but may be better regarding LFRic +! and other triggered off option to check the value if any > rmdi and then +! check if they should have a value in check_available_options or based on +! science options. +IF ( ANY( fsmc_mod(:) < 0 ) ) THEN ! fsmc_mod was initialised to < 0 + ERROR = 1 + CALL jules_print(routinename, "No value for fsmc_mod") +END IF +#endif +IF ( ANY( orient(:) < 0 ) ) THEN ! orient was initialised to < 0 + ERROR = 1 + CALL jules_print(routinename, "No value for orient") +END IF +IF ( ANY( ABS( kext(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for kext") +END IF +IF ( ANY( ABS( kpar(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for kpar") +END IF +IF ( ANY( ABS( lai_alb_lim(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for lai_alb_lim") +END IF +IF ( ANY( ABS( can_struct_a(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for can_struct_a") +END IF +IF ( ANY( ABS( gsoil_f(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for gsoil_f") +END IF +IF ( ANY( c3(:) < 0 ) ) THEN ! c3 was initialised to < 0 + ERROR = 1 + CALL jules_print(routinename, "No value for c3") +END IF +IF ( ANY( ABS( alpha(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for alpha") +END IF +IF ( ANY( ABS( fd(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for fd") +END IF +IF ( ANY( ABS( nr_nl(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for nr_nl") +END IF +IF ( ANY( ABS( ns_nl(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for ns_nl") +END IF +IF ( ANY( ABS( r_grow(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for r_grow") +END IF +! Note that tlow and tupp are always required, for some PFTs at least. +! If using the Farquhar model for C3 plants, we still need tlow and +! tupp for C4 plants. +IF ( ANY( ABS( tlow(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for tlow") +END IF +IF ( ANY( ABS( tupp(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for tupp") +END IF + +SELECT CASE ( photo_model ) +CASE ( photo_farquhar ) + !--------------------------------------------------------------------------- + ! First check parameters that are always required with this model. + !--------------------------------------------------------------------------- + ! Note that these parameter values are not used for C4 plants, but + ! here we're still checking that they have been provided. + IF ( ANY( ABS( alpha_elec(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for alpha_elec") + END IF + IF ( ANY( ABS( deact_jmax(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for deact_jmax") + END IF + IF ( ANY( ABS( deact_vcmax(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for deact_vcmax") + END IF + !--------------------------------------------------------------------------- + ! Check parameters that depend on any chosen acclimation model. + !--------------------------------------------------------------------------- + IF ( photo_acclim_model == 0 ) THEN + ! No acclimation. + IF ( ANY( ABS( ds_jmax(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for ds_jmax") + END IF + IF ( ANY( ABS( ds_vcmax(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for ds_vcmax") + END IF + IF ( ANY( ABS( jv25_ratio(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for jv25_ratio") + END IF + END IF ! photo_acclim_model == 0 + + IF ( photo_acclim_model == 0 .OR. & + (photo_acclim_model /= 0 .AND. photo_act_model == photo_act_pft) ) THEN + IF ( ANY( ABS( act_jmax(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for act_jmax") + END IF + IF ( ANY( ABS( act_vcmax(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for act_vcmax") + END IF + END IF ! photo_acclim_model + +END SELECT ! photo_model + +SELECT CASE ( stomata_model ) +CASE ( stomata_jacobs ) + IF ( ANY( ABS( dqcrit(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for dqcrit") + END IF + IF ( ANY( ABS( f0(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for f0") + END IF +CASE ( stomata_medlyn ) + IF ( ANY( ABS( g1_stomata(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for g1_stomata") + END IF +CASE ( stomata_sox ) + IF ( ANY( ABS( sox_p50(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for sox_p50") + END IF + IF ( ANY( ABS( sox_rp_min(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for sox_rp_min") + END IF + IF ( ANY( ABS( sox_a(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for sox_a") + END IF +END SELECT + +IF ( .NOT. l_spec_albedo .AND. can_rad_mod == 1 ) THEN + ! These don't need to be set +ELSE + IF ( ANY( ABS( alnir(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for alnir") + END IF + IF ( ANY( ABS( alpar(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for alpar") + END IF + IF ( ANY( ABS( omega(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for omega") + END IF + IF ( ANY( ABS( omnir(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for omnir") + END IF +END IF + +IF ( l_albedo_obs ) THEN + IF ( ANY( ABS( alnirl(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for alnirl") + END IF + IF ( ANY( ABS( alniru(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for alniru") + END IF + IF ( ANY( ABS( alparl(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for alparl") + END IF + IF ( ANY( ABS( alparu(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for alparu") + END IF + IF ( ANY( ABS( omegal(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for omegal") + END IF + IF ( ANY( ABS( omegau(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for omegau") + END IF + IF ( ANY( ABS( omnirl(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for omnirl") + END IF + IF ( ANY( ABS( omniru(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for omniru") + END IF +END IF + +IF ( .NOT. l_spec_albedo ) THEN + IF ( ANY( ABS( albsnf_max(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for albsnf_max") + END IF + IF ( l_albedo_obs ) THEN + IF ( ANY( ABS( albsnf_maxl(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for albsnf_maxl") + END IF + IF ( ANY( ABS( albsnf_maxu(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for albsnf_maxu") + END IF + END IF +END IF + +IF ( .NOT. l_snow_albedo ) THEN + IF ( ANY( ABS( albsnc_max(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for albsnc_max") + END IF + IF ( ANY( ABS( albsnc_min(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for albsnc_min") + END IF +END IF + +IF (l_trait_phys) THEN + IF ( ANY( ABS( lma(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for lma") + END IF + IF ( ANY( ABS( nmass(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for nmass") + END IF + IF ( ANY( ABS( vsl(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for vsl") + END IF + IF ( ANY( ABS( vint(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for vint") + END IF + IF ( ANY( ABS( nr(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for nr") + END IF + IF ( ANY( ABS( nsw(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for nsw") + END IF + IF ( ANY( ABS( hw_sw(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for hw_sw") + END IF +ELSE + IF ( ANY( ABS( neff(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for neff") + END IF + IF ( ANY( ABS( nl0(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for nl0") + END IF + IF ( ANY( ABS( sigl(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for sigl") + END IF +END IF !l_trait_phys + +IF ( ANY( ABS( kn(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for kn") +END IF +IF ( can_rad_mod == 6 .AND. ANY( ABS( knl(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for knl") +END IF +IF ( ANY( ABS( q10_leaf(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for q10_leaf") +END IF +IF ( ANY( ABS( a_wl(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for a_wl") +END IF +IF ( ANY( ABS( a_ws(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for a_ws") +END IF +IF ( ANY( ABS( b_wl(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for b_wl") +END IF +IF ( ANY( ABS( eta_sl(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for eta_sl") +END IF +IF ( ANY( ABS( g_leaf_0(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for g_leaf_0") +END IF +IF ( ANY( ABS( dgl_dm(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for dgl_dm") +END IF +IF ( ANY( ABS( fsmc_of(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for fsmc_of") +END IF +IF ( ANY( ABS( dgl_dt(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for dgl_dt") +END IF +IF ( ANY( ABS( tleaf_of(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for tleaf_of") +END IF +IF ( ANY( ABS( catch0(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for catch0") +END IF +IF ( ANY( ABS( dcatch_dlai(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for dcatch_dlai") +END IF +IF ( ANY( ABS( infil_f(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for infil_f") +END IF +IF ( ANY( ABS( glmin(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for glmin") +END IF +IF ( .NOT. l_spec_veg_z0) THEN + IF ( ANY( ABS( dz0v_dh(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for dz0v_dh") + END IF +ELSE + IF ( ANY( ABS( z0v(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for z0v") + END IF +END IF +IF ( ANY( ABS( rootd_ft(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for rootd_ft") +END IF + +IF ( l_use_pft_psi ) THEN + IF ( ANY( ABS( psi_close(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for psi_close") + END IF + IF ( ANY( ABS( psi_open(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for psi_open") + END IF +ELSE + IF ( ANY( ABS( fsmc_p0(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for fsmc_p0") + END IF +END IF !l_use_pft_psi + +IF ( l_bvoc_emis ) THEN + IF ( ANY( ABS( ci_st(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for ci_st") + END IF + IF ( ANY( ABS( gpp_st(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for gpp_st") + END IF + IF ( ANY( ABS( ief(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for ief") + END IF + IF ( ANY( ABS( tef(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for tef") + END IF + IF ( ANY( ABS( mef(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for mef") + END IF + IF ( ANY( ABS( aef(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for aef") + END IF +END IF + +IF ( l_inferno ) THEN + IF ( ANY( ABS( fef_co2(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for fef_co2") + END IF + IF ( ANY( ABS( fef_co(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for fef_co") + END IF + IF ( ANY( ABS( fef_ch4(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for fef_ch4") + END IF + IF ( ANY( ABS( fef_nox(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for fef_nox") + END IF + IF ( ANY( ABS( fef_so2(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for fef_so2") + END IF + IF ( ANY( ABS( fef_c2h4(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for fef_c2h4") + END IF + IF ( ANY( ABS( fef_c2h6(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for fef_c2h6") + END IF + IF ( ANY( ABS( fef_c3h8(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for fef_c3h8") + END IF + IF ( ANY( ABS( fef_hcho(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for fef_hcho") + END IF + IF ( ANY( ABS( fef_mecho(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for fef_mecho") + END IF + IF ( ANY( ABS( fef_nh3(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for fef_nh3") + END IF + IF ( ANY( ABS( fef_dms(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for fef_dms") + END IF + IF ( ANY( ABS( ccleaf_min(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for ccleaf_min") + END IF + IF ( ANY( ABS( ccleaf_max(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for ccleaf_max") + END IF + IF ( ANY( ABS( ccwood_min(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for ccwood_min") + END IF + IF ( ANY( ABS( ccwood_max(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for ccwood_max") + END IF + IF ( ANY( ABS( avg_ba(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for avg_ba") + END IF +END IF + +IF ( l_trif_fire ) THEN + IF ( ANY( ABS( fire_mort(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for fire_mort") + END IF +END IF + +IF ( l_o3_damage ) THEN + IF ( ANY( ABS( fl_o3_ct(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for fl_o3_ct") + END IF + IF ( ANY( ABS( dfp_dcuo(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for dfp_dcuo") + END IF +END IF + +IF ( l_sugar ) THEN + IF ( ANY( ABS( sug_g0(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for sug_g0") + END IF + IF ( ANY( ABS( sug_grec(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for sug_grec") + END IF + IF ( ANY( ABS( sug_yg(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for sug_yg") + END IF +END IF + +IF ( ANY( ABS( emis_pft(:) - rmdi ) < EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL jules_print(routinename, "No value for emis_pft") +END IF + +IF ( ERROR /= 0 ) THEN + CALL ereport(routinename, ERROR, & + ": Variable(s) missing from namelist - see earlier " // & + "message(s)") +END IF + +!****************************************************************************** +! Do we want this in the UM & LFRic??? +!----------------------------------------------------------------------------- +! Check that glmin is >0. +! This ensures that wt_ext in subroutine soil_evap cannot become a NaN (which +! it would if gs=glmin and gsoil=0), or blow up, and might well be required +! elsewhere too. +!----------------------------------------------------------------------------- +ERROR = 0 +IF ( ANY(glmin < 1.0e-10) ) THEN + ERROR = -1 + CALL ereport(routinename, ERROR, & + "Increasing one or more values of glmin - very small " // & + "values can cause model to blow up or NaNs") + WHERE ( glmin < 1.0e-10 ) + glmin = 1.0e-10 + END WHERE +END IF + +IF ( l_crop ) THEN + IF ( ANY( ABS( a_ws(nnpft+1: npft) - 1.0 ) > EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL ereport(routinename, ERROR, "crop tiles should have a_ws=1.0") + END IF +END IF + +IF ( l_use_pft_psi ) THEN + IF ( ANY( psi_close(1: npft) > EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL ereport(routinename, ERROR, "psi_close should be negative") + END IF + IF ( ANY( psi_open(1: npft) > EPSILON(1.0) ) ) THEN + ERROR = 1 + CALL ereport(routinename, ERROR, "psi_open should be negative") + END IF +END IF + +!----------------------------------------------------------------------------- +! fsmc_mod=1 should not be allowed with a layered 4-pool C model until this has +! been properly evaluated. (With fsmc_mod=1, subroutine root_frac does not +! return the exponential root profile that users might expect.) +!----------------------------------------------------------------------------- +IF ( l_layeredC .AND. ( soil_bgc_model == soil_model_4pool ) .AND. & + ANY( fsmc_mod(:) == 1 ) ) THEN + ERROR = 1 + CALL ereport(routinename, ERROR, & + "fsmc_mod=1 is not allowed with l_layeredC and 4-pool C model") +END IF + +!----------------------------------------------------------------------------- +! stomata_model = stomata_sox must be used with fsmc_mod = 1 +! Cannot be run with l_scale_resp_pm +! Must be run with can_rad_mod = 1 (implementation for can_rad_mod = 6 ongoing) +!----------------------------------------------------------------------------- +IF ( stomata_model == stomata_sox ) THEN ! SOX + IF ( l_scale_resp_pm ) THEN + ERROR = 1 + CALL ereport(routinename, ERROR, & + 'l_scale_resp_pm=T is incompatible with SOX (stomata_model=3)') + END IF + + IF ( .NOT. ANY ( fsmc_mod(:) == 1 ) ) THEN + ERROR = 1 + CALL ereport(routinename, ERROR, & + 'SOX (stomata_model=3) must be used with fsmc_mod = 1') + END IF + + IF ( .NOT. ( can_rad_mod == 1 ) ) THEN + ERROR = 1 + CALL ereport(routinename, ERROR, & + 'SOX (stomata_model=3) must be used with can_rad_mod = 1') + END IF + + IF ( .NOT. ( photo_model == 3 ) ) THEN + ERROR = 1 + CALL ereport(routinename, ERROR, & + 'SOX (stomata_model=3) uses the SOX derivation of Collatz (photo_model=3)') + END IF +END IF + +END SUBROUTINE check_jules_pftparm + END MODULE pftparm diff --git a/src/science/river_routing/rivers_route_mod.F90 b/src/science/river_routing/rivers_route_mod.F90 index a7dc380d..9f94355b 100644 --- a/src/science/river_routing/rivers_route_mod.F90 +++ b/src/science/river_routing/rivers_route_mod.F90 @@ -113,7 +113,8 @@ SUBROUTINE rivers_route_rp(rivers) rivers%rflow_rp, baseflow, rivers%rivers_outflow_rp, & rivers%rivers_next_rp, rivers%rivers_seq_rp, & rivers%rivers_sto_rp,rivers%rivers_boxareas_rp, & - rivers%rivers_lat_rp, rivers%rivers_lon_rp ) + rivers%rivers_lat_rp, rivers%rivers_lon_rp, & + rivers%inland_outflow_rp, rivers%land_fraction_rp ) CASE DEFAULT WRITE(jules_message,*) 'ERROR: rivers_drive: ' // & 'do not recognise i_river_vn=', i_river_vn diff --git a/src/science/river_routing/rivers_route_trip_mod.F90 b/src/science/river_routing/rivers_route_trip_mod.F90 index 4ec3a65c..fb07095b 100644 --- a/src/science/river_routing/rivers_route_trip_mod.F90 +++ b/src/science/river_routing/rivers_route_trip_mod.F90 @@ -44,11 +44,13 @@ SUBROUTINE rivers_route_trip( sfc_runoff, sub_sfc_runoff, outflow, baseflow, & rivers_outflow_rp, rivers_next_rp, & rivers_seq_rp, rivers_sto_rp , & rivers_boxareas_rp, & - rivers_lat_rp, rivers_lon_rp ) + rivers_lat_rp, rivers_lon_rp, & + inland_outflow_rp, land_fraction_rp ) USE jules_rivers_mod, ONLY: & ! imported scalars with intent(in) - np_rivers,nstep_rivers,nseqmax,river_mouth,rivers_meander,rivers_speed + np_rivers,nstep_rivers,nseqmax,river_mouth,rivers_meander,rivers_speed, & + inland_drainage, l_inland_outflow USE rivers_utils, ONLY: & ! imported procedures @@ -57,6 +59,8 @@ SUBROUTINE rivers_route_trip( sfc_runoff, sub_sfc_runoff, outflow, baseflow, & USE timestep_mod, ONLY: & timestep +USE missing_data_mod, ONLY: imdi + USE um_types, ONLY: real_jlslsm IMPLICIT NONE @@ -80,8 +84,10 @@ SUBROUTINE rivers_route_trip( sfc_runoff, sub_sfc_runoff, outflow, baseflow, & ,baseflow(np_rivers) & ! rate of channel base flow leaving gridbox (kg m-2 s-1) ! At present this is set to zero. - ,rivers_outflow_rp(np_rivers) + ,rivers_outflow_rp(np_rivers) & ! River outflow into the ocean (kg s-1) + ,inland_outflow_rp(np_rivers) + ! Inland basin flow into the soil on river grid (kg m-2 s-1) ! Rivers Arrays INTEGER, INTENT(IN) :: rivers_next_rp(:) @@ -90,10 +96,13 @@ SUBROUTINE rivers_route_trip( sfc_runoff, sub_sfc_runoff, outflow, baseflow, & REAL, INTENT(IN) :: rivers_lat_rp(:) REAL, INTENT(IN) :: rivers_lon_rp(:) REAL, INTENT(IN OUT) :: rivers_sto_rp(:) +REAL, INTENT(IN) :: land_fraction_rp(:) INTEGER :: & ! local scalars (work/loop counters) - ip, iseq + ip, iseq & +! local arrays + ,coastal_mask_rp(np_rivers) REAL(KIND=real_jlslsm) :: & ! local scalars @@ -118,16 +127,46 @@ SUBROUTINE rivers_route_trip( sfc_runoff, sub_sfc_runoff, outflow, baseflow, & dt = REAL(nstep_rivers) * timestep -! Initialise inflow with total runoff generated over each gridbox. -! Convert runoff to kg s-1 flux -DO ip = 1, np_rivers - inflow(ip) = ( sfc_runoff(ip) + sub_sfc_runoff(ip) ) * & - rivers_boxareas_rp(ip) +coastal_mask_rp(:) = imdi +IF ( l_inland_outflow ) THEN + ! Set coastal mask; used to direct inland water flow either to soil moisture + ! or ocean for water conservation purposes. + WHERE ( ( 1.0 - land_fraction_rp(:) ) > EPSILON(1.0) ) + coastal_mask_rp(:) = 1 + ELSE WHERE + coastal_mask_rp(:) = 0 + END WHERE +END IF +DO ip = 1, np_rivers ! Initialise outflows. outflow(ip) = 0.0 baseflow(ip) = 0.0 rivers_outflow_rp(ip) = 0.0 + inland_outflow_rp(ip) = 0.0 + + ! Initialise inflow with total runoff generated over each gridbox. + ! Convert runoff to kg s-1 flux + inflow(ip) = ( sfc_runoff(ip) + sub_sfc_runoff(ip) ) * & + rivers_boxareas_rp(ip) + + IF ( l_inland_outflow ) THEN + ! Inland basin flow is passed to the soil moisture to conserve water in + ! coupled models. + ! To avoid the scenario where the soil becomes super-saturated, runs off + ! to the rivers only to be returned to the inland basin, then back to the + ! soil again creating a loop, we send the inflow to the ocean via the + ! closest large river favouring those with larger climatological outflows + ! (defined by river number ancillary). + ! Coastal inland water basins are treated in the same way as river mouths. + IF ( rivers_next_rp(ip) == inland_drainage .AND. & + coastal_mask_rp(ip) == 0 ) THEN + ! Non-coast inland basin send the inflow to the ocean + rivers_outflow_rp(ip) = inflow(ip) + inflow(ip) = 0.0 + END IF + END IF + END DO !----------------------------------------------------------------------------- @@ -188,13 +227,24 @@ SUBROUTINE rivers_route_trip( sfc_runoff, sub_sfc_runoff, outflow, baseflow, & ! End main TRIP algorithm routine !----------------------------------------------------------------------------- -! Catch all outflow going into the sea and save it in rivers_outflow_rp. +! Catch all outflow and either save it in rivers_outflow_rp (for outflow to +! the ocean) or inland_outflow_rp (for inland basin flow back to the soil). ! Also return flows in flux density units kg/m2/s. !----------------------------------------------------------------------------- DO ip = 1,np_rivers IF ( rivers_next_rp(ip) == river_mouth ) THEN rivers_outflow_rp(ip) = outflow(ip) + ELSE IF ( l_inland_outflow .AND. rivers_next_rp(ip) == inland_drainage ) THEN + SELECT CASE ( coastal_mask_rp(ip) ) + CASE ( 1 ) + ! Coastal inland basins, direct outflow to ocean (as for river mouth) + rivers_outflow_rp(ip) = outflow(ip) + CASE ( 0 ) + ! Non-coastal inland basins, direct flow in flux density units + ! kg/m2/s to soil moisture + inland_outflow_rp(ip) = outflow(ip) / rivers_boxareas_rp(ip) + END SELECT END IF ! Return flows in flux density units kg/m2/s diff --git a/src/science/soil/hydrol_jls_mod.F90 b/src/science/soil/hydrol_jls_mod.F90 index 25ce61d4..d86095c2 100644 --- a/src/science/soil/hydrol_jls_mod.F90 +++ b/src/science/soil/hydrol_jls_mod.F90 @@ -1126,7 +1126,7 @@ SUBROUTINE hydrol ( & sathh_soilt(:,m,:), smcl_soilt(:,m,:), snowdepth_surft, & surf_ht_flux_ld, smvcst_soilt(:,m,:), w_flux_soilt(:,m,:), & sthf_soilt(:,m,:), sthu_soilt(:,m,:), sthu_irr_soilt(:,m,:), & - t_soil_soilt(:,m,:), tsoil_deep_gb ) + t_soil_soilt(:,m,:), tsoil_deep_gb, dim_cs1, resp_s_soilt ) ELSE ! Surface and soil tiles map directly on to each other. DO m = 1, nsoilt @@ -1139,7 +1139,7 @@ SUBROUTINE hydrol ( & sathh_soilt(:,m,:), smcl_soilt(:,m,:), snowdepth_surft, & snow_soil_htf(:,n), smvcst_soilt(:,m,:), w_flux_soilt(:,m,:), & sthf_soilt(:,m,:), sthu_soilt(:,m,:), sthu_irr_soilt(:,m,:), & - t_soil_soilt(:,m,:), tsoil_deep_gb ) + t_soil_soilt(:,m,:), tsoil_deep_gb, dim_cs1, resp_s_soilt ) END DO END IF diff --git a/src/science/soil/soil_htc_jls_mod.F90 b/src/science/soil/soil_htc_jls_mod.F90 index 343bd941..475e1175 100644 --- a/src/science/soil/soil_htc_jls_mod.F90 +++ b/src/science/soil/soil_htc_jls_mod.F90 @@ -21,7 +21,8 @@ SUBROUTINE soil_htc ( npnts, nshyd, nsurft, soil_pts, timestep, soil_index, & non_lake_frac, hcap, hcon, & sathh, smcl, snowdepth, & surf_ht_flux, v_sat, w_flux, & - sthf, sthu, sthu_irr, tsoil, tsoil_deep_gb ) + sthf, sthu, sthu_irr, tsoil, tsoil_deep_gb, & + dim_cs1, resp_s_soilt ) !Use in relevant subroutines USE bedrock_mod, ONLY: bedrock @@ -34,6 +35,7 @@ SUBROUTINE soil_htc ( npnts, nshyd, nsurft, soil_pts, timestep, soil_index, & USE jules_snow_mod, ONLY: snow_hcon USE jules_soil_mod, ONLY: facur, gamma_t, mmax, tacur, l_bedrock, & ns_deep +USE jules_soil_biogeochem_mod, ONLY: heat_of_respiration, l_bgc_heat USE jules_surface_mod, ONLY: l_flake_model USE jules_surface_types_mod, ONLY: lake USE jules_irrig_mod, ONLY: l_irrig_dmd @@ -72,8 +74,10 @@ SUBROUTINE soil_htc ( npnts, nshyd, nsurft, soil_pts, timestep, soil_index, & ! Number of tile points. surft_index(npnts,nsurft), & ! Index of tile points. - nsnow(npnts,nsurft) - ! Number of snow layerss + nsnow(npnts,nsurft), & + ! Number of snow layers + dim_cs1 + ! Number of soil carbon pools REAL(KIND=real_jlslsm), INTENT(IN) :: & bexp(npnts,nshyd), & @@ -98,7 +102,10 @@ SUBROUTINE soil_htc ( npnts, nshyd, nsurft, soil_pts, timestep, soil_index, & ! Net downward surface heat flux (W/m2). v_sat(npnts,nshyd), & ! Volumetric soil moisture concentration at saturation (m3 H2O/m3 soil). - w_flux(npnts,0:nshyd) + w_flux(npnts,0:nshyd), & + ! The fluxes of water between layers (kg/m2/s). + resp_s_soilt(npnts,nshyd,dim_cs1) + ! Soil respiration in pools (kg C/m2/s) in each layer ! The fluxes of water between layers (kg/m2/s). !----------------------------------------------------------------------------- @@ -131,7 +138,7 @@ SUBROUTINE soil_htc ( npnts, nshyd, nsurft, soil_pts, timestep, soil_index, & ! Local scalar variables: !----------------------------------------------------------------------------- INTEGER :: & - i, j, jj, m, n, & + i, j, jj, m, n, p, & ! Loop counters. iter_pts ! Number of soil points which require iteration. @@ -371,12 +378,13 @@ SUBROUTINE soil_htc ( npnts, nshyd, nsurft, soil_pts, timestep, soil_index, & hflux_base(:) = 0.0 END IF -!$OMP PARALLEL DEFAULT(NONE) PRIVATE(j, i, n) & +!$OMP PARALLEL DEFAULT(NONE) PRIVATE(j, i, n, p) & !$OMP SHARED(soil_pts, nshyd, soil_index, h_flux, hc, tsl, dz, dhflux_dtsl1, & !$OMP dhflux_dtsl2, hflux_base, surf_ht_flux, sifact, hadv, & !$OMP w_flux, dhadv_dtsl0, dhadv_dtsl1, dhadv_dtsl2, v_sat, & !$OMP tiny_0, smcl, small_value, work1, smclsat, bexp, tmax, sathh, & -!$OMP dhsl0, timestep, dhsl) +!$OMP dhsl0, timestep, dhsl, resp_s_soilt, l_bgc_heat, dim_cs1, & +!$OMP heat_of_respiration) ! Blocking is needed as the nshyd dimension has a spatial ! dependence (n +/-1). Blocking enables parallelising over the @@ -478,6 +486,22 @@ SUBROUTINE soil_htc ( npnts, nshyd, nsurft, soil_pts, timestep, soil_index, & END DO ! j (points) !$OMP END DO +! Add in biogeochemical heating if enabled. +IF (l_bgc_heat) THEN +!$OMP DO SCHEDULE(STATIC) + DO j = 1, soil_pts + DO n = 1, nshyd +!DIR$ IVDEP + !CDIR NODEP + i = soil_index(j) + DO p = 1, dim_cs1 + dhsl(i, n) = dhsl(i, n) + timestep * heat_of_respiration * & + resp_s_soilt(i, n, p) + END DO ! p (carbon pools) + END DO ! n (layers) + END DO ! j (points) +END IF + !$OMP END PARALLEL !----------------------------------------------------------------------------- ! Iteration loop diff --git a/src/science/surface/jules_land_sf_explicit_jls.F90 b/src/science/surface/jules_land_sf_explicit_jls.F90 index f722d839..6cf33e11 100644 --- a/src/science/surface/jules_land_sf_explicit_jls.F90 +++ b/src/science/surface/jules_land_sf_explicit_jls.F90 @@ -69,7 +69,7 @@ SUBROUTINE jules_land_sf_explicit ( & chr1p5m,smc_soilt,hcons_soilt,gpp,npp,resp_p,g_leaf,gpp_pft,npp_pft, & resp_p_pft,resp_s_soilt,resp_s_tot_soilt,resp_l_pft,resp_r_pft, & resp_w_pft,n_leaf,n_root,n_stem,lai_bal,gc_surft,canhc_surft,wt_ext_surft, & - flake,surft_index,surft_pts,tile_frac,fsmc_pft,emis_soil, & + flake,surft_index,surft_pts,tile_frac,non_irrig_frac,fsmc_pft,emis_soil, & growth_sug_pft,growth_sug_gb,f_nsc_pft,lwp_c_pft,psi_root_zone_pft, & ! OUT required for classic aerosols cd_land,rib_surft,ch_surft_classic,cd_std_classic, & @@ -160,6 +160,7 @@ SUBROUTINE jules_land_sf_explicit ( & USE veg_param, ONLY: secs_per_360days USE veg3_field_mod, ONLY: veg_state_type USE water_constants_mod, ONLY: lc, rho_ice, tm +USE c_irrigation_mod, ONLY: irrig_tile USE jules_soil_biogeochem_mod, ONLY: & ! imported scalar parameters @@ -197,7 +198,7 @@ SUBROUTINE jules_land_sf_explicit ( & USE jules_vegetation_mod, ONLY: can_model, can_rad_mod, ilayers, l_triffid, & l_vegdrag_surft -USE jules_irrig_mod, ONLY: l_irrig_dmd +USE jules_irrig_mod, ONLY: l_irrig_dmd, irrig_option, tile_based_irrigation USE jules_sea_seaice_mod, ONLY: l_ctile, charnock, ip_ss_solid @@ -619,6 +620,8 @@ SUBROUTINE jules_land_sf_explicit ( & ,tile_frac(land_pts,nsurft) & ! OUT Tile fractions including ! snow cover in the ice tile. +,non_irrig_frac(land_pts) & + ! OUT Fraction of non-irrigated tiles. ,fsmc_pft(land_pts,npft) & ! OUT Moisture availability factor. ,gc_corr(land_pts,npft) & @@ -1187,6 +1190,21 @@ SUBROUTINE jules_land_sf_explicit ( & anthrop_heat_surft) END IF +! Set up non irrigated fraction +non_irrig_frac(:) = 1.0 +IF (irrig_option == tile_based_irrigation) THEN + DO n = 1,ntype + IF (irrig_tile(n) > 0) THEN +!$OMP PARALLEL DO SCHEDULE(STATIC) DEFAULT(NONE) PRIVATE(l) & +!$OMP SHARED(land_pts, non_irrig_frac, frac, n) + DO l = 1, land_pts + non_irrig_frac(l) = non_irrig_frac(l) - frac(l,n) + END DO +!$OMP END PARALLEL DO + END IF + END DO +END IF + !----------------------------------------------------------------------- ! Call physiology routine to calculate surface conductances and carbon ! fluxes. @@ -1196,7 +1214,8 @@ SUBROUTINE jules_land_sf_explicit ( & sm_levels,nsurft,n_wtrac_jls,surft_pts,surft_index, & dim_cs1, & co2_mmr,co2_3d,co2_dim_len, co2_dim_row,l_co2_interactive, & - can_model,cs_pool_soilt,veg_state,frac,canht_pft,photosynth_act_rad, & + can_model,cs_pool_soilt,veg_state,frac,non_irrig_frac, & + canht_pft,photosynth_act_rad, & lai_pft,pstar,qw_1,sthu_soilt,sthf_soilt,t_soil_soilt,tstar_surft, & smvccl_soilt,smvcst_soilt,smvcwt_soilt,vshr,z0_surft,z1_uv,o3, & canhc_surft,vfrac_surft,emis_surft,l_emis_surft_set,emis_soil,flake, & diff --git a/src/science/surface/jules_land_sf_implicit.jls.F90 b/src/science/surface/jules_land_sf_implicit.jls.F90 index effb1549..1ce46db5 100644 --- a/src/science/surface/jules_land_sf_implicit.jls.F90 +++ b/src/science/surface/jules_land_sf_implicit.jls.F90 @@ -32,7 +32,8 @@ MODULE jules_land_sf_implicit_mod SUBROUTINE jules_land_sf_implicit ( & ! IN values defining field dimensions and subset to be processed : land_pts,land_index,nsurft,surft_index,surft_pts,sm_levels, & - canhc_surft,canopy,flake,smc_soilt,tile_frac,wt_ext_surft,fland,flandg, & + canhc_surft,canopy,flake,smc_soilt,tile_frac, & + non_irrig_frac,wt_ext_surft,fland,flandg, & ! IN values defining water tracer field dimensions n_wtrac_jls, n_evap_srce, & ! IN everything not covered so far : @@ -161,6 +162,8 @@ SUBROUTINE jules_land_sf_implicit ( & ,tile_frac(land_pts,nsurft) & ! IN Tile fractions including ! snow cover in the ice tile. +,non_irrig_frac(land_pts) & + ! IN Fraction of non-irrigated tiles. ,wt_ext_surft(land_pts,sm_levels,nsurft) & ! IN Fraction of evapotranspiration ! extracted from each soil layer @@ -567,7 +570,8 @@ SUBROUTINE jules_land_sf_implicit ( & land_pts,nsurft, & land_index,surft_index,surft_pts,sm_levels,fland, & ashtf_prime_surft,canopy,dtrdz_charney_grid_1,flake,fracaero_t,fracaero_s, & - snow_surft,resfs,resft,rhokh_surft,tile_frac,smc_soilt,wt_ext_surft, & + snow_surft,resfs,resft,rhokh_surft,tile_frac,non_irrig_frac, & + smc_soilt,wt_ext_surft, & timestep,r_gamma,fqw_1,fqw_surft,ftl_1,ftl_surft,tstar_surft, & ecan,ecan_surft,elake_surft,esoil_soilt,esoil_surft,ei_surft,ext_soilt, & sf_diag, non_lake_frac, & diff --git a/src/science/surface/microbe_jls.F90 b/src/science/surface/microbe_jls.F90 index 023fc7ac..07a2d038 100644 --- a/src/science/surface/microbe_jls.F90 +++ b/src/science/surface/microbe_jls.F90 @@ -19,15 +19,15 @@ MODULE microbe_mod CONTAINS SUBROUTINE microbe (land_pts,dim_cs1,l_q10,cs, & - sthu,sthf,v_sat,v_wilt,tsoil,resp_s,veg_frac, & + sthu,sthf,v_sat,v_crit,v_wilt,tsoil,resp_s,veg_frac, & sf_diag,l_soil_point) USE jules_soil_biogeochem_mod, ONLY: & ! imported scalar parameters - soil_model_1pool, soil_model_4pool, & + soil_model_1pool, soil_model_4pool, fsthsat_cs_decomp_opt1, & ! imported scalar variables (IN) kaps, l_layeredC, l_soil_resp_lev2, q10 => q10_soil, soil_bgc_model, & - tau_resp, & + tau_resp, cs_decomp_soil_moist_func, & ! imported array variables (IN) kaps_4pool @@ -70,6 +70,9 @@ SUBROUTINE microbe (land_pts,dim_cs1,l_q10,cs, & ! IN Volumetric soil moisture ! ! concentration at saturation ! ! (m3 H2O/m3 soil). +,v_crit(land_pts,sm_levels) & + ! Volumetric soil moisture concentration above which plants are + ! not moisture limited (m3 H2O/m3 soil). ,v_wilt(land_pts,sm_levels) & ! IN Volumetric soil moisture ! ! concentration below which @@ -100,6 +103,9 @@ SUBROUTINE microbe (land_pts,dim_cs1,l_q10,cs, & ,sth_opt & ! WORK Fractional soil moisture at ! ! which respiration is maximum. +,sth_optl & + ! Fractional soil moisture at which respiration + ! is maximum, for cs_decomp_soil_moist_func=1 ,sth_wilt ! WORK Wilting soil moisture as a ! ! fraction of saturation. INTEGER :: & @@ -109,9 +115,12 @@ SUBROUTINE microbe (land_pts,dim_cs1,l_q10,cs, & ! Local parameters !----------------------------------------------------------------------- REAL(KIND=real_jlslsm) :: & - min_factor = 1.7 ! FACTOR to scale WILT to get RESP_MIN -! ! at 25 deg C and optimum soil -! ! moisture (/s). + min_factor = 1.7, & + ! FACTOR to scale WILT to get RESP_MIN + ! at 25 deg C and optimum soil moisture (/s). + fsth_dry = 0.0 + ! when cs_decomp_soil_moist_func = 1 this is the soil moisture decomposition + ! factor when the soil is completely dry (i.e. no soil respiration INTEGER(KIND=jpim), PARAMETER :: zhook_in = 0 INTEGER(KIND=jpim), PARAMETER :: zhook_out = 1 @@ -133,7 +142,7 @@ SUBROUTINE microbe (land_pts,dim_cs1,l_q10,cs, & !$OMP PARALLEL & !$OMP DEFAULT(SHARED) & -!$OMP PRIVATE(l,n,j,sth_wilt,sth_opt,sth_resp_min) +!$OMP PRIVATE(l,n,j,sth_wilt,sth_opt,sth_optl,sth_resp_min) DO j = 1,sm_levels !$OMP DO SCHEDULE(STATIC) @@ -167,15 +176,29 @@ SUBROUTINE microbe (land_pts,dim_cs1,l_q10,cs, & IF (l_soil_point(l)) THEN !Replaces previous test against sm_sat sth_wilt = v_wilt(l,j) / v_sat(l,j) sth_opt = 0.5 * (1 + sth_wilt) + sth_optl = MIN( v_crit(l,j) / v_sat(l,j), sth_opt ) sth_resp_min = sth_wilt * min_factor fsth(l,j) = 0.2 - IF (sth_soil(l,j) > sth_resp_min .AND. & - sth_soil(l,j) <= sth_opt) THEN - fsth(l,j) = 0.2 + (0.8 * ((sth_soil(l,j) - sth_resp_min) & - / (sth_opt - sth_resp_min))) - ELSE IF (sth_soil(l,j) > sth_opt) THEN - fsth(l,j) = 1 - (0.8 * (sth_soil(l,j) - sth_opt)) + IF ( cs_decomp_soil_moist_func == 1 ) THEN + ! new function and fsth is set to fsthsat_cs_decomp_opt1 when saturated + ! better for peat formation + IF (sth_soil(l,j) <= sth_optl) THEN + fsth(l,j) = ((1 - fsth_dry) / sth_optl) * sth_soil(l,j) + fsth_dry + ELSE IF (sth_soil(l,j) > sth_opt) THEN + fsth(l,j) = ((1 - fsthsat_cs_decomp_opt1) / (1 - sth_opt)) * & + (1 - sth_soil(l,j)) + fsthsat_cs_decomp_opt1 + ELSE + fsth(l,j) = 1.0 + END IF + ELSE ! original function - do not use for peat formation + IF (sth_soil(l,j) > sth_resp_min .AND. & + sth_soil(l,j) <= sth_opt) THEN + fsth(l,j) = 0.2 + (0.8 * ((sth_soil(l,j) - sth_resp_min) & + / (sth_opt - sth_resp_min))) + ELSE IF (sth_soil(l,j) > sth_opt) THEN + fsth(l,j) = 1 - (0.8 * (sth_soil(l,j) - sth_opt)) + END IF END IF END IF diff --git a/src/science/surface/physiol_jls_mod.F90 b/src/science/surface/physiol_jls_mod.F90 index 4f9c5123..00caf8cf 100644 --- a/src/science/surface/physiol_jls_mod.F90 +++ b/src/science/surface/physiol_jls_mod.F90 @@ -21,7 +21,8 @@ SUBROUTINE physiol ( & sm_levels,nsurft,n_wtrac_jls,surft_pts,surft_index, & dim_cs1, & co2_mmr,co2_3d,co2_dim_len, co2_dim_row,l_co2_interactive, & - can_model,cs_pool_soilt,veg_state,frac,canht_pft,photosynth_act_rad, & + can_model,cs_pool_soilt,veg_state,frac,non_irrig_frac, & + canht_pft,photosynth_act_rad, & lai_pft,pstar,qw_1,sthu_soilt,sthf_soilt,t_soil_soilt,tstar_surft, & smvccl_soilt,smvcst_soilt,smvcwt_soilt,vshr,z0_surft,z1_uv_ij,o3, & canhc_surft,vfrac_surft,emis_surft,l_emis_surft_set,emis_soil,flake, & @@ -85,6 +86,8 @@ SUBROUTINE physiol ( & USE ancil_info, ONLY: dim_cslayer, nsoilt, rad_nband +USE c_irrigation_mod, ONLY: irrig_tile + USE jules_soil_biogeochem_mod, ONLY: & ! imported scalar parameters soil_model_1pool, soil_model_4pool, & @@ -187,6 +190,8 @@ SUBROUTINE physiol ( & !Soil carbon (kg C/m2). frac(land_pts,ntype), & !Surface type fractions. + non_irrig_frac(land_pts), & + !Fraction of non-irrigated tiles. canht_pft(land_pts,npft), & !Canopy height (m). photosynth_act_rad(tdims%i_start:tdims%i_end,tdims%j_start:tdims%j_end), & @@ -514,9 +519,9 @@ SUBROUTINE physiol ( & ,vf_type(land_pts,ntype) & ! WORK VFRAC for surface types. ,wt_ext_type(land_pts,sm_levels,ntype) & -! ! WORK WT_EXT for surface types. +! ! WORK WT_EXT for surface types. ,wt_ext_soilt(land_pts,nsoilt,sm_levels) & - !Gridbox-mean wt_ext_soilt. NB This is only non-zero if l_aggregate=TRUE. + ! Gridbox-mean wt_ext_soilt ,fsoil(land_pts,npft) & ! WORK Fraction of ground below canopy ! ! contributing to evaporation. @@ -629,7 +634,6 @@ SUBROUTINE physiol ( & resp_l_pft(l,n) = 0.0 resp_r_pft(l,n) = 0.0 growth_sug_pft(l,n) = 0.0 - fsmc_pft(l,n) = 0.0 apar_diag_pft(l,n)= 0.0 isoprene_pft(l,n) = 0.0 terpene_pft(l,n) = 0.0 @@ -640,6 +644,11 @@ SUBROUTINE physiol ( & root_param(l,n) = 0.0 gc_corr(l,n) = 0.0 lwp_c_pft(l,n) = 0.0 + ! Where irrig_option = tile_based_irrigation and irrig_tile = 1 there is unrestricted soil + ! moisture availability and fsmc_pft = 1.0 + ! For tiles where irrig_tile = 0 and/or irrig_option = no_irrigation + ! or frac_based_irrigation then fsmc_pft is set by smc_ext. + fsmc_pft(l,n) = 1.0 END DO !$OMP END DO NOWAIT END DO @@ -1051,12 +1060,15 @@ SUBROUTINE physiol ( & END IF !$OMP END PARALLEL - CALL smc_ext (land_pts,sm_levels,surft_pts(n),surft_index(:,n), n, f_root, & - sthu_surft(:,m,:), & - v_open,smvcst_soilt(:,m,:), & - v_close, & - bexp_soilt(:,m,:), sathh_soilt(:,m,:), & - wt_ext_type(:,:,n),fsmc_pft(:,n),psi_root_zone_pft(:,n)) + ! Tile-based irrigated surface types do not extract water so routine is not called + IF ( irrig_tile(n) /= 1 ) THEN + CALL smc_ext (land_pts,sm_levels,surft_pts(n),surft_index(:,n), n, f_root, & + sthu_surft(:,m,:), & + v_open,smvcst_soilt(:,m,:), & + v_close, & + bexp_soilt(:,m,:), sathh_soilt(:,m,:), & + wt_ext_type(:,:,n),fsmc_pft(:,n),psi_root_zone_pft(:,n)) + END IF IF (l_irrig_dmd) THEN CALL smc_ext (land_pts,sm_levels,surft_pts(n),surft_index(:,n), n, f_root, & @@ -1215,7 +1227,7 @@ SUBROUTINE physiol ( & END IF CALL soil_evap (land_pts,sm_levels,surft_pts(n),surft_index(:,n), & - gsoil_under_canopy(:),lai_pft_soil_evap(:,n), & + irrig_tile(n),gsoil_under_canopy(:),lai_pft_soil_evap(:,n), & gs_type(:,n), wt_ext_type(:,:,n), & fsoil(:,n),gsoil_irr_under_canopy(:), & gs_irr_type(:,n),wt_ext_irr_type(:,:,n)) @@ -1297,13 +1309,15 @@ SUBROUTINE physiol ( & n = soil !$OMP PARALLEL DO IF (surft_pts(n) > 1) DEFAULT(NONE) PRIVATE(l, j) & !$OMP SHARED(gs_irr_type, gs_type, gsoil_soilt, gsoil_irr_soilt, & -!$OMP l_irrig_dmd, & +!$OMP l_irrig_dmd, irrig_tile, & !$OMP n, m, surft_index, surft_pts, wt_ext_type, & !$OMP wt_ext_irr_type) SCHEDULE(STATIC) DO j = 1,surft_pts(n) l = surft_index(j,n) gs_type(l,n) = gsoil_soilt(l,m) - wt_ext_type(l,1,n) = 1.0 + IF (irrig_tile(n) /= 1 ) THEN + wt_ext_type(l,1,n) = 1.0 + END IF IF (l_irrig_dmd) THEN gs_irr_type(l,n) = gsoil_irr_soilt(l,m) ! irrigation wt_ext_irr_type(l,1,n) = 1.0 ! irrigation @@ -1544,7 +1558,7 @@ SUBROUTINE physiol ( & DO m = 1, nsoilt CALL microbe (land_pts,dim_cs1,l_q10,cs_pool_soilt(:,m,:,:), & sthu_soilt(:,m,:),sthf_soilt(:,m,:),smvcst_soilt(:,m,:), & - smvcwt_soilt(:,m,:),t_soil_soilt(:,m,:), & + smvccl_soilt(:,m,:),smvcwt_soilt(:,m,:),t_soil_soilt(:,m,:), & resp_s_soilt(:,m,:,:),veg_frac,sf_diag,l_soil_point) END DO END SELECT @@ -1619,9 +1633,14 @@ SUBROUTINE physiol ( & !$OMP PARALLEL IF(l_do_omp) DEFAULT(NONE) PRIVATE(k, l) & !$OMP SHARED(canhc, canhc_surft, flake, frac, gs, gc_surft, lake, & !$OMP land_pts, sm_levels, vfrac, vfrac_surft, l_do_omp, & -!$OMP wt_ext_soilt, m, wt_ext_surft) +!$OMP wt_ext_soilt, m, wt_ext_surft, non_irrig_frac) !$OMP DO SCHEDULE(STATIC) DO l = 1,land_pts + IF (non_irrig_frac(l) > 0.0) THEN + DO k = 1,sm_levels + wt_ext_soilt(l,m,k) = wt_ext_soilt(l,m,k) / non_irrig_frac(l) + END DO + END IF IF ( lake > 0 ) THEN flake(l,1) = frac(l,lake) ELSE @@ -1715,6 +1734,16 @@ SUBROUTINE physiol ( & !$OMP END PARALLEL DO END DO !ntype + ! If using a shared soil, normalise wt_ext_soilt for non-irrigated surface + ! tile fractions + DO l = 1,land_pts + IF ((non_irrig_frac(l) > EPSILON(0.0)) .AND. (nsoilt == 1)) THEN + DO k = 1,sm_levels + wt_ext_soilt(l,1,k) = wt_ext_soilt(l,1,k) / non_irrig_frac(l) + END DO + END IF + END DO + IF (l_flake_model) THEN ! Normalise wt_ext_soilt, excluding the lake tile fraction. ! Not required if tiled soils are being used. @@ -1867,6 +1896,13 @@ SUBROUTINE physiol ( & !$OMP END PARALLEL DO END DO END DO + + DO l = 1,land_pts + IF ((non_irrig_frac(l) > EPSILON(0.0)) .AND. (nsoilt == 1)) THEN + smc_soilt(l,m) = smc_soilt(l,m) / non_irrig_frac(l) + END IF + END DO + ELSE DO k = 1,sm_levels DO m = 1, nsoilt diff --git a/src/science/surface/sf_evap_jls.F90 b/src/science/surface/sf_evap_jls.F90 index b5dfaeff..e7c06103 100644 --- a/src/science/surface/sf_evap_jls.F90 +++ b/src/science/surface/sf_evap_jls.F90 @@ -26,7 +26,8 @@ SUBROUTINE sf_evap ( & land_pts,nsurft, & land_index,surft_index,surft_pts,sm_levels,fland, & ashtf_prime_surft,canopy,dtrdz_1,flake,fracaero_t,fracaero_s,snow_surft,resfs,& - resft,rhokh_1,tile_frac,smc_soilt,wt_ext_surft,timestep,r_gamma, & + resft,rhokh_1,tile_frac,non_irrig_frac, & + smc_soilt,wt_ext_surft,timestep,r_gamma, & fqw_1,fqw_surft,ftl_1,ftl_surft,tstar_surft, & ecan,ecan_surft,elake_surft,esoil_soilt,esoil_surft,ei_surft,ext_soilt, & sf_diag, non_lake_frac, & @@ -48,7 +49,7 @@ SUBROUTINE sf_evap ( & USE jules_irrig_mod, ONLY: l_irrig_dmd -USE jules_surface_mod, ONLY: l_flake_model +USE jules_surface_mod, ONLY: l_aggregate, l_flake_model USE jules_surface_types_mod, ONLY: lake USE jules_science_fixes_mod, ONLY: l_fix_neg_snow @@ -107,6 +108,8 @@ SUBROUTINE sf_evap ( & ! ! IN Surface exchange coefficients. ,tile_frac(land_pts,nsurft) & ! ! IN Tile fractions. +,non_irrig_frac(land_pts) & + ! IN Fraction of non-irrigated tiles. ,smc_soilt(land_pts,nsoilt) & ! IN Available soil moisture (kg/m2). ,wt_ext_surft(land_pts,sm_levels,nsurft) & @@ -722,15 +725,27 @@ SUBROUTINE sf_evap ( & !$OMP END DO END IF !nsoilt END DO !nsurft - IF ((nsoilt == 1) .AND. (l_flake_model)) THEN - ! Normalise ext_soilt, excluding the lake tile fraction. + IF (nsoilt == 1) THEN + ! Normalise ext_soilt, excluding irrigated fraction. + IF (.NOT. l_aggregate) THEN !$OMP DO SCHEDULE(STATIC) - DO l = 1,land_pts - IF (non_lake_frac(l) > EPSILON(0.0)) THEN - ext_soilt(l,1,m) = ext_soilt(l,1,m) / non_lake_frac(l) - END IF - END DO + DO l = 1,land_pts + IF (non_irrig_frac(l) > EPSILON(0.0)) THEN + ext_soilt(l,1,m) = ext_soilt(l,1,m) / non_irrig_frac(l) + END IF + END DO +!$OMP END DO + END IF + IF (l_flake_model) THEN + ! Normalise ext_soilt, excluding the lake tile fraction. +!$OMP DO SCHEDULE(STATIC) + DO l = 1,land_pts + IF (non_lake_frac(l) > EPSILON(0.0)) THEN + ext_soilt(l,1,m) = ext_soilt(l,1,m) / non_lake_frac(l) + END IF + END DO !$OMP END DO + END IF END IF END DO !sm_levels diff --git a/src/science/surface/soil_evap_jls.F90 b/src/science/surface/soil_evap_jls.F90 index c1e3fa35..1d62399e 100644 --- a/src/science/surface/soil_evap_jls.F90 +++ b/src/science/surface/soil_evap_jls.F90 @@ -21,7 +21,7 @@ MODULE soil_evap_mod ! ********************************************************************* SUBROUTINE soil_evap (npnts,nshyd,surft_pts,surft_index, & - gsoil,lai,gs,wt_ext,fsoil & + irrig_tile,gsoil,lai,gs,wt_ext,fsoil & ,gsoil_irr,gs_irr,wt_ext_irr & ) @@ -38,9 +38,12 @@ SUBROUTINE soil_evap (npnts,nshyd,surft_pts,surft_index, & ,surft_pts & ! IN Number of points containing the ! ! given surface type. -,surft_index(npnts) ! IN Indices on the land grid of the +,surft_index(npnts) & + ! IN Indices on the land grid of the ! ! points containing the given ! ! surface type. +,irrig_tile + ! IN irrigation switch for surface tile REAL(KIND=real_jlslsm), INTENT(IN) :: & gsoil(npnts) & @@ -89,7 +92,7 @@ SUBROUTINE soil_evap (npnts,nshyd,surft_pts,surft_index, & !$OMP DEFAULT(NONE) & !$OMP PRIVATE(l,j,k) & !$OMP SHARED(npnts,fsoil,surft_pts,surft_index,lai,nshyd,wt_ext,gs,gsoil, & -!$OMP wt_ext_irr,gs_irr,gsoil_irr,l_irrig_dmd) +!$OMP wt_ext_irr,gs_irr,gsoil_irr,l_irrig_dmd,irrig_tile) ! Initialisations @@ -106,28 +109,52 @@ SUBROUTINE soil_evap (npnts,nshyd,surft_pts,surft_index, & END DO !$OMP END DO NOWAIT +! Adjustments to wt_ext from soil layers 2 to nshyd DO k = 2,nshyd + IF (irrig_tile /= 1) THEN !$OMP DO SCHEDULE(STATIC) - DO j = 1,surft_pts - l = surft_index(j) - wt_ext(l,k) = gs(l) * wt_ext(l,k) / (gs(l) + fsoil(l) * gsoil(l)) - IF (l_irrig_dmd) THEN + DO j = 1,surft_pts + l = surft_index(j) + wt_ext(l,k) = gs(l) * wt_ext(l,k) / (gs(l) + fsoil(l) * gsoil(l)) + END DO +!$OMP END DO NOWAIT + END IF + IF (l_irrig_dmd) THEN +!$OMP DO SCHEDULE(STATIC) + DO j = 1,surft_pts + l = surft_index(j) wt_ext_irr(l,k) = gs_irr(l) * wt_ext_irr(l,k) & / (gs_irr(l) + fsoil(l) * gsoil_irr(l)) - END IF - END DO + END DO !$OMP END DO NOWAIT + END IF END DO +! Adjustments to wt_ext from soil layer 1 +IF (irrig_tile /= 1) THEN +!$OMP DO SCHEDULE(STATIC) + !CDIR NODEP + DO j = 1,surft_pts + l = surft_index(j) + wt_ext(l,1) = (gs(l) * wt_ext(l,1) + fsoil(l) * gsoil(l)) & + / (gs(l) + fsoil(l) * gsoil(l)) + END DO +!$OMP END DO NOWAIT +END IF + !$OMP DO SCHEDULE(STATIC) !CDIR NODEP DO j = 1,surft_pts l = surft_index(j) - wt_ext(l,1) = (gs(l) * wt_ext(l,1) + fsoil(l) * gsoil(l)) & - / (gs(l) + fsoil(l) * gsoil(l)) gs(l) = gs(l) + fsoil(l) * gsoil(l) +END DO +!$OMP END DO NOWAIT - IF (l_irrig_dmd) THEN +IF (l_irrig_dmd) THEN +!$OMP DO SCHEDULE(STATIC) + !CDIR NODEP + DO j = 1,surft_pts + l = surft_index(j) wt_ext_irr(l,1) = (gs_irr(l) * wt_ext_irr(l,1) & + fsoil(l) * gsoil_irr(l)) & / (gs_irr(l) + fsoil(l) * gsoil_irr(l)) @@ -136,9 +163,9 @@ SUBROUTINE soil_evap (npnts,nshyd,surft_pts,surft_index, & ! relative to tile mean conductance (scaled by relative area later). ! Assume soil evaporation uses grid box mean soil moisture: gs_irr(l) = gs_irr(l) + fsoil(l) * gsoil_irr(l) - END IF -END DO + END DO !$OMP END DO NOWAIT +END IF !$OMP END PARALLEL IF (lhook) CALL dr_hook(ModuleName//':'//RoutineName,zhook_out,zhook_handle)