diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 00c6e6edb..be30d1208 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -34,4 +34,5 @@ | thomasmelvin | Thomas Melvin | Met Office | 2026-01-15 | | tinyendian | Wolfgang Hayek | Earth Sciences New Zealand | 2026-02-02 | | DanStoneMO | Daniel Stone | Met Office | 2026-02-26 | -| ericaneininger | Erica Neininger | Met Office | 2026-03-02 | \ No newline at end of file +| ericaneininger | Erica Neininger | Met Office | 2026-03-02 | +| mo-lucy-gordon | Lucy Gordon | Met Office | 2026-03-11 | diff --git a/applications/lfricinputs/fortitude.toml b/applications/lfricinputs/fortitude.toml new file mode 100644 index 000000000..399f4feb4 --- /dev/null +++ b/applications/lfricinputs/fortitude.toml @@ -0,0 +1,11 @@ +############################################################################## +# (c) Crown copyright Met Office. All rights reserved. +# The file LICENCE, distributed with this code, contains details of the terms +# under which the code may be used. +############################################################################## + +[check] +file-extensions= ["f90", "F90", "X90", "x90", "pf"] #check these file types +select = ["S101", "PORT011"] +output-format = "grouped" #group results by file + diff --git a/interfaces/coupled_interface/fortitude.toml b/interfaces/coupled_interface/fortitude.toml new file mode 100644 index 000000000..d07084eca --- /dev/null +++ b/interfaces/coupled_interface/fortitude.toml @@ -0,0 +1,18 @@ +############################################################################## +# (c) Crown copyright Met Office. All rights reserved. +# The file LICENCE, distributed with this code, contains details of the terms +# under which the code may be used. +############################################################################## + +[check] + +file-extensions= ["f90", "F90", "X90", "x90", "pf"] #check these file types + +select = ["S101", "PORT011"] + +output-format = "grouped" #group results by file + +[check.per-file-ignores] + +"process_send_fields_2d_mod.X90" = ["S101"] +"set_r_ocean_fraction_mod.F90" = ["S101"] diff --git a/interfaces/jedi_lfric_interface/fortitude.toml b/interfaces/jedi_lfric_interface/fortitude.toml new file mode 100644 index 000000000..f8d609bba --- /dev/null +++ b/interfaces/jedi_lfric_interface/fortitude.toml @@ -0,0 +1,18 @@ +############################################################################## +# (c) Crown copyright Met Office. All rights reserved. +# The file LICENCE, distributed with this code, contains details of the terms +# under which the code may be used. +############################################################################## + +[check] + +file-extensions= ["f90", "F90", "X90", "x90", "pf"] #check these file types + +select = ["S101", "PORT011"] + +output-format = "grouped" #group results by file + +[check.per-file-ignores] + +"jedi_lfric_linear_modeldb_driver_mod.f90" = ["S101"] +"atlas_field_interface_mod.F90" = ["S101"] diff --git a/interfaces/jules_interface/fortitude.toml b/interfaces/jules_interface/fortitude.toml new file mode 100644 index 000000000..1dd4c9b7e --- /dev/null +++ b/interfaces/jules_interface/fortitude.toml @@ -0,0 +1,20 @@ +############################################################################## +# (c) Crown copyright Met Office. All rights reserved. +# The file LICENCE, distributed with this code, contains details of the terms +# under which the code may be used. +############################################################################## + +[check] + +file-extensions= ["f90", "F90", "X90", "x90", "pf"] #check these file types + +select = ["S101", "PORT011"] + +output-format = "grouped" #group results by file + +[check.per-file-ignores] + +"update_ancils_alg_mod.x90" = ["S101"] +"jules_exp_kernel_mod.F90" = ["S101"] +"jules_extra_kernel_mod.F90" = ["S101"] +"jules_imp_kernel_mod.F90" = ["S101"] diff --git a/interfaces/jules_interface/source/algorithm/jules_exp_alg_mod.x90 b/interfaces/jules_interface/source/algorithm/jules_exp_alg_mod.x90 index ee0bb5f8d..971658188 100644 --- a/interfaces/jules_interface/source/algorithm/jules_exp_alg_mod.x90 +++ b/interfaces/jules_interface/source/algorithm/jules_exp_alg_mod.x90 @@ -229,7 +229,7 @@ contains integer(tik) :: id if ( LPROF ) call start_timing( id, 'jules.explicit' ) - + call log_event( 'slow_physics: Running explicit JULES layer', LOG_LEVEL_DEBUG ) ! Cannot pass null pointers to invoke calls. Therefore non-pointer variables diff --git a/interfaces/physics_schemes_interface/fortitude.toml b/interfaces/physics_schemes_interface/fortitude.toml new file mode 100644 index 000000000..4848b9899 --- /dev/null +++ b/interfaces/physics_schemes_interface/fortitude.toml @@ -0,0 +1,13 @@ +############################################################################## +# (c) Crown copyright Met Office. All rights reserved. +# The file LICENCE, distributed with this code, contains details of the terms +# under which the code may be used. +############################################################################## + +[check] + +file-extensions= ["f90", "F90", "X90", "x90", "pf"] #check these file types + +select = ["PORT011"] + +output-format = "grouped" #group results by file diff --git a/interfaces/socrates_interface/fortitude.toml b/interfaces/socrates_interface/fortitude.toml new file mode 100644 index 000000000..55535500c --- /dev/null +++ b/interfaces/socrates_interface/fortitude.toml @@ -0,0 +1,19 @@ +############################################################################## +# (c) Crown copyright Met Office. All rights reserved. +# The file LICENCE, distributed with this code, contains details of the terms +# under which the code may be used. +############################################################################## + +[check] + +file-extensions= ["f90", "F90", "X90", "x90", "pf"] #check these file types + +select = ["S101", "PORT011"] + +output-format = "grouped" #group results by file + +[check.per-file-ignores] + +"init_radiation_fields_alg_mod.x90" = ["S101"] +"rad_cloud_alg_mod.x90" = ["S101"] +"lw_kernel_mod.F90" = ["S101"] diff --git a/rose-stem/app/check_fortitude_linter/file/fortitude.toml b/rose-stem/app/check_fortitude_linter/file/fortitude.toml new file mode 100644 index 000000000..3988f89c6 --- /dev/null +++ b/rose-stem/app/check_fortitude_linter/file/fortitude.toml @@ -0,0 +1,29 @@ +############################################################################## +# (c) Crown copyright Met Office. All rights reserved. +# The file LICENCE, distributed with this code, contains details of the terms +# under which the code may be used. +############################################################################## + +[check] + +file-extensions= ["f90", "F90", "X90", "x90", "pf"] #check these file types + +select = ["S101", "PORT011"] + +output-format = "grouped" #group results by file + + +# "./interfaces/coupled_interface/source/algorithm/process_send_fields_2d_mod.X90" = ["S101"] + +# "./interfaces/socrates_interface*" = ["S101"] +# "../coupled_interface/*" = ["S101"] + + +# "./interfaces/coupled_interface/* = ["S101"] + + +# "../socrates_interface/*" = ["S101"] +# "physics_schemes_interface/*" = ["S101"] +# "jules_interface/*" = ["S101"] +# "jedi_lfric_interface/*" = ["S101"] + diff --git a/rose-stem/app/check_fortitude_linter/rose-app.conf b/rose-stem/app/check_fortitude_linter/rose-app.conf new file mode 100644 index 000000000..456659c78 --- /dev/null +++ b/rose-stem/app/check_fortitude_linter/rose-app.conf @@ -0,0 +1,2 @@ +[command] +default=$CYLC_WORKFLOW_RUN_DIR/bin/fortitude_launcher.py $SOURCE_ROOT/lfric_apps diff --git a/rose-stem/app/extract_source/bin/extract_source.sh b/rose-stem/app/extract_source/bin/extract_source.sh index b1297f8f2..9bab6dd06 100755 --- a/rose-stem/app/extract_source/bin/extract_source.sh +++ b/rose-stem/app/extract_source/bin/extract_source.sh @@ -7,4 +7,5 @@ cp $SOURCE_ROOT/lfric_apps/dependencies.yaml $CYLC_WORKFLOW_RUN_DIR cp $SOURCE_ROOT/SimSys_Scripts/github_scripts/suite_report_git.py $CYLC_WORKFLOW_RUN_DIR/bin cp $SOURCE_ROOT/SimSys_Scripts/github_scripts/suite_data.py $CYLC_WORKFLOW_RUN_DIR/bin cp $SOURCE_ROOT/SimSys_Scripts/github_scripts/git_bdiff.py $CYLC_WORKFLOW_RUN_DIR/bin +cp $SOURCE_ROOT/SimSys_Scripts/fortitude_linter/fortitude_launcher.py $CYLC_WORKFLOW_RUN_DIR/bin cp $SOURCE_DIRECTORY/SimSys_Scripts/github_scripts/get_git_sources.py $CYLC_WORKFLOW_RUN_DIR/bin diff --git a/rose-stem/site/meto/groups.cylc b/rose-stem/site/meto/groups.cylc index fa3a62574..2e3efc1cf 100644 --- a/rose-stem/site/meto/groups.cylc +++ b/rose-stem/site/meto/groups.cylc @@ -9,6 +9,7 @@ "scripts": [ "config_dump_checker", "style_checker", + "fortitude_linter", "extract_checker", "site_validator", "validate_rose_meta", diff --git a/rose-stem/templates/graph/populate_graph_scripts.cylc b/rose-stem/templates/graph/populate_graph_scripts.cylc index 41c90a45c..1f70d9baf 100644 --- a/rose-stem/templates/graph/populate_graph_scripts.cylc +++ b/rose-stem/templates/graph/populate_graph_scripts.cylc @@ -51,6 +51,7 @@ {# All other scripts have the same simple graph. These are: #} {# * config_dump_checker #} {# * style_checker #} + {# * fortitude_linter #} {# * site_validator #} {# * rose-stem_lint_checker #} {# * validate_rose_meta #} diff --git a/rose-stem/templates/runtime/generate_runtime_scripts.cylc b/rose-stem/templates/runtime/generate_runtime_scripts.cylc index bd602ad7c..a1ce6f61a 100644 --- a/rose-stem/templates/runtime/generate_runtime_scripts.cylc +++ b/rose-stem/templates/runtime/generate_runtime_scripts.cylc @@ -43,6 +43,11 @@ inherit={{inherit.str|upper}} script="rose task-run --app-key=check_style" +{% elif "fortitude_linter" in task %} + + inherit={{inherit.str|upper}} + script="rose task-run --app-key=check_fortitude_linter" + {% elif "extract_checker" in task %} inherit={{inherit.str|upper}}