Break out module_dm external subroutines into separate files (#2069)
commitd810865d1f633b85e1077438f420e84170417bfd
authorAnthony Islas <128631809+islas@users.noreply.github.com>
Thu, 26 Sep 2024 22:21:17 +0000 (26 15:21 -0700)
committerGitHub <noreply@github.com>
Thu, 26 Sep 2024 22:21:17 +0000 (26 15:21 -0700)
treed3433c0a7cd9f25d5fd3b757897bbdde8fcbacc3
parented585bda6457604d1867d29be8b4e9abaf649313
Break out module_dm external subroutines into separate files (#2069)

TYPE: enhancement

KEYWORDS: intel, compilation, llvm, memory

SOURCE: internal

DESCRIPTION OF CHANGES:
Problem:
The Intel oneAPI compilers (and others like nvhpc) struggle with some of
the larger (15k+ lines of code) files within WRF. This causes intense
memory usage that is not often available to the average user not in a
resource-rich environment. This often limits compilation to single
threaded if even possible or to a dedicated environment with enough
memory if available. If neither of those is available to a user, they
will be unable to use these configurations entirely.

Solution:
This PR focuses on the `module_dm` sections of code to reduce its
individual file size to manageable levels. This and its helper
subroutines are instead broken out into many smaller files.

TESTS CONDUCTED:
Attached to this PR are plots of the respective effects of theses
changes. Changes were tested with intel and gcc compilers, but only
intel memory usage is shown as it exacerbates the memory usage issue.
14 files changed:
dyn_em/interp_domain_em.F
external/RSL_LITE/feedback_domain_em_part1.F [new file with mode: 0644]
external/RSL_LITE/feedback_domain_em_part2.F [new file with mode: 0644]
external/RSL_LITE/force_domain_em_part2.F [new file with mode: 0644]
external/RSL_LITE/interp_domain_em_part1.F [new file with mode: 0644]
external/RSL_LITE/interp_domain_em_part2.F [new file with mode: 0644]
external/RSL_LITE/interp_domain_em_part3.F [new file with mode: 0644]
external/RSL_LITE/interp_domain_em_small.F [new file with mode: 0644]
external/RSL_LITE/makefile
external/RSL_LITE/module_dm.F
frame/CMakeLists.txt
frame/Makefile
main/depend.common
share/mediation_interp_domain.F