From 6e49a91fd1d7e5f9cb49f6124272c621c5e3b285 Mon Sep 17 00:00:00 2001 From: Robert Hallberg Date: Thu, 25 Feb 2021 08:42:29 -0500 Subject: [PATCH] +New config_src directory structure Created the new config_src directory tree structure, as agreed upon at https://github.com/NOAA-GFDL/MOM6/discussions/1286, to eventually accomodate the selection of different infrastructures. No .F90 files are changed but there are small changes to ac/configure.ac to accomodate the new structure while also allowing for the old target to use the old structure. All answers are bitwise identical, and all MOM6-examples and TC tests are passing. --- .testing/Makefile | 3 ++- ac/configure.ac | 11 +++++++---- .../FMS_cap}/MOM_surface_forcing_gfdl.F90 | 0 .../FMS_cap}/ocean_model_MOM.F90 | 0 .../ice_solo_driver/atmos_ocean_fluxes.F90 | 0 .../ice_solo_driver/ice_shelf_driver.F90 | 0 .../mct_cap}/mom_ocean_model_mct.F90 | 0 .../mct_cap}/mom_surface_forcing_mct.F90 | 0 .../mct_cap}/ocn_cap_methods.F90 | 0 .../{mct_driver => drivers/mct_cap}/ocn_comp_mct.F90 | 0 .../mct_cap}/ocn_cpl_indices.F90 | 0 .../{nuopc_driver => drivers/nuopc_cap}/mom_cap.F90 | 0 .../nuopc_cap}/mom_cap_methods.F90 | 0 .../nuopc_cap}/mom_cap_time.F90 | 0 .../nuopc_cap}/mom_ocean_model_nuopc.F90 | 0 .../nuopc_cap}/mom_surface_forcing_nuopc.F90 | 0 .../nuopc_cap}/ocn_comp_NUOPC.F90 | 0 .../nuopc_cap}/time_utils.F90 | 0 .../solo_driver/MESO_surface_forcing.F90 | 0 config_src/{ => drivers}/solo_driver/MOM_driver.F90 | 0 .../{ => drivers}/solo_driver/MOM_surface_forcing.F90 | 0 .../{ => drivers}/solo_driver/atmos_ocean_fluxes.F90 | 0 .../solo_driver/user_surface_forcing.F90 | 0 .../{ => drivers}/unit_drivers/MOM_sum_driver.F90 | 0 .../infra/FMS1}/MOM_coms_infra.F90 | 0 .../infra/FMS1}/MOM_constants.F90 | 0 .../infra/FMS1}/MOM_couplertype_infra.F90 | 0 .../infra/FMS1}/MOM_cpu_clock_infra.F90 | 0 .../infra/FMS1}/MOM_data_override_infra.F90 | 0 .../infra/FMS1}/MOM_diag_manager_infra.F90 | 0 .../infra/FMS1}/MOM_domain_infra.F90 | 0 .../infra/FMS1}/MOM_ensemble_manager_infra.F90 | 0 .../infra/FMS1}/MOM_error_infra.F90 | 0 .../infra/FMS1}/MOM_interp_infra.F90 | 0 .../infra/FMS1}/MOM_io_infra.F90 | 0 .../infra/FMS1}/MOM_time_manager.F90 | 0 .../dynamic_nonsymmetric}/MOM_memory.h | 0 .../{ => memory}/dynamic_symmetric/MOM_memory.h | 0 38 files changed, 9 insertions(+), 5 deletions(-) rename config_src/{coupled_driver => drivers/FMS_cap}/MOM_surface_forcing_gfdl.F90 (100%) rename config_src/{coupled_driver => drivers/FMS_cap}/ocean_model_MOM.F90 (100%) rename config_src/{ => drivers}/ice_solo_driver/atmos_ocean_fluxes.F90 (100%) rename config_src/{ => drivers}/ice_solo_driver/ice_shelf_driver.F90 (100%) rename config_src/{mct_driver => drivers/mct_cap}/mom_ocean_model_mct.F90 (100%) rename config_src/{mct_driver => drivers/mct_cap}/mom_surface_forcing_mct.F90 (100%) rename config_src/{mct_driver => drivers/mct_cap}/ocn_cap_methods.F90 (100%) rename config_src/{mct_driver => drivers/mct_cap}/ocn_comp_mct.F90 (100%) rename config_src/{mct_driver => drivers/mct_cap}/ocn_cpl_indices.F90 (100%) rename config_src/{nuopc_driver => drivers/nuopc_cap}/mom_cap.F90 (100%) rename config_src/{nuopc_driver => drivers/nuopc_cap}/mom_cap_methods.F90 (100%) rename config_src/{nuopc_driver => drivers/nuopc_cap}/mom_cap_time.F90 (100%) rename config_src/{nuopc_driver => drivers/nuopc_cap}/mom_ocean_model_nuopc.F90 (100%) rename config_src/{nuopc_driver => drivers/nuopc_cap}/mom_surface_forcing_nuopc.F90 (100%) rename config_src/{nuopc_driver => drivers/nuopc_cap}/ocn_comp_NUOPC.F90 (100%) rename config_src/{nuopc_driver => drivers/nuopc_cap}/time_utils.F90 (100%) rename config_src/{ => drivers}/solo_driver/MESO_surface_forcing.F90 (100%) rename config_src/{ => drivers}/solo_driver/MOM_driver.F90 (100%) rename config_src/{ => drivers}/solo_driver/MOM_surface_forcing.F90 (100%) rename config_src/{ => drivers}/solo_driver/atmos_ocean_fluxes.F90 (100%) rename config_src/{ => drivers}/solo_driver/user_surface_forcing.F90 (100%) rename config_src/{ => drivers}/unit_drivers/MOM_sum_driver.F90 (100%) rename {src/framework => config_src/infra/FMS1}/MOM_coms_infra.F90 (100%) rename {src/framework => config_src/infra/FMS1}/MOM_constants.F90 (100%) rename {src/framework => config_src/infra/FMS1}/MOM_couplertype_infra.F90 (100%) rename {src/framework => config_src/infra/FMS1}/MOM_cpu_clock_infra.F90 (100%) rename {src/framework => config_src/infra/FMS1}/MOM_data_override_infra.F90 (100%) rename {src/framework => config_src/infra/FMS1}/MOM_diag_manager_infra.F90 (100%) rename {src/framework => config_src/infra/FMS1}/MOM_domain_infra.F90 (100%) rename {src/framework => config_src/infra/FMS1}/MOM_ensemble_manager_infra.F90 (100%) rename {src/framework => config_src/infra/FMS1}/MOM_error_infra.F90 (100%) rename {src/framework => config_src/infra/FMS1}/MOM_interp_infra.F90 (100%) rename {src/framework => config_src/infra/FMS1}/MOM_io_infra.F90 (100%) rename {src/framework => config_src/infra/FMS1}/MOM_time_manager.F90 (100%) rename config_src/{dynamic => memory/dynamic_nonsymmetric}/MOM_memory.h (100%) rename config_src/{ => memory}/dynamic_symmetric/MOM_memory.h (100%) diff --git a/.testing/Makefile b/.testing/Makefile index 2806d54130..dfe6959b16 100644 --- a/.testing/Makefile +++ b/.testing/Makefile @@ -154,7 +154,8 @@ SOURCE = \ $(foreach ext,F90 inc c h,$(wildcard $(1)/*/*.$(ext) $(1)/*/*/*.$(ext))) MOM_SOURCE = $(call SOURCE,../src) \ - $(wildcard ../config_src/solo_driver/*.F90) \ + $(wildcard ../config_src/infra/FMS1/*.F90) \ + $(wildcard ../config_src/drivers/solo_driver/*.F90) \ $(wildcard ../config_src/ext*/*/*.F90) TARGET_SOURCE = $(call SOURCE,build/target_codebase/src) \ $(wildcard build/target_codebase/config_src/solo_driver/*.F90) \ diff --git a/ac/configure.ac b/ac/configure.ac index 487230beb8..135fb44025 100644 --- a/ac/configure.ac +++ b/ac/configure.ac @@ -42,18 +42,20 @@ srcdir=$srcdir/.. # Default to symmetric grid # NOTE: --enable is more properly used to add a feature, rather than to select # a compile-time mode, so this is not exactly being used as intended. -MEM_LAYOUT=${srcdir}/config_src/dynamic_symmetric +MEM_LAYOUT=${srcdir}/config_src/memory/dynamic_symmetric +AC_CHECK_FILE($MEM_LAYOUT, [MEM_LAYOUT=$MEM_LAYOUT], [MEM_LAYOUT=${srcdir}/config_src/dynamic_symmetric]) AC_ARG_ENABLE([asymmetric], AS_HELP_STRING([--enable-asymmetric], [Use the asymmetric grid])) AS_IF([test "$enable_asymmetric" = yes], - [MEM_LAYOUT=${srcdir}/config_src/dynamic]) + [MEM_LAYOUT=${srcdir}/config_src/memory/dynamic_nonsymmetric]) # Default to solo_driver -DRIVER_DIR=${srcdir}/config_src/solo_driver +DRIVER_DIR=${srcdir}/config_src/drivers/solo_driver +AC_CHECK_FILE($DRIVER_DIR, [DRIVER_DIR=$DRIVER_DIR], [DRIVER_DIR=${srcdir}/config_src/solo_driver]) AC_ARG_WITH([driver], AS_HELP_STRING([--with-driver=coupled_driver|solo_driver], [Select directory for driver source code])) AS_IF([test "x$with_driver" != "x"], - [DRIVER_DIR=${srcdir}/config_src/${with_driver}]) + [DRIVER_DIR=${srcdir}/config_src/drivers/${with_driver}]) # TODO: Rather than point to a pre-configured header file, autoconf could be # used to configure a header based on a template. @@ -216,6 +218,7 @@ AS_IF([test -z "$MKMF"], [ AC_CONFIG_COMMANDS([path_names], [list_paths -l \ ${srcdir}/src \ + ${srcdir}/config_src/infra/FMS1 \ ${srcdir}/config_src/ext* \ ${DRIVER_DIR} \ ${MEM_LAYOUT} diff --git a/config_src/coupled_driver/MOM_surface_forcing_gfdl.F90 b/config_src/drivers/FMS_cap/MOM_surface_forcing_gfdl.F90 similarity index 100% rename from config_src/coupled_driver/MOM_surface_forcing_gfdl.F90 rename to config_src/drivers/FMS_cap/MOM_surface_forcing_gfdl.F90 diff --git a/config_src/coupled_driver/ocean_model_MOM.F90 b/config_src/drivers/FMS_cap/ocean_model_MOM.F90 similarity index 100% rename from config_src/coupled_driver/ocean_model_MOM.F90 rename to config_src/drivers/FMS_cap/ocean_model_MOM.F90 diff --git a/config_src/ice_solo_driver/atmos_ocean_fluxes.F90 b/config_src/drivers/ice_solo_driver/atmos_ocean_fluxes.F90 similarity index 100% rename from config_src/ice_solo_driver/atmos_ocean_fluxes.F90 rename to config_src/drivers/ice_solo_driver/atmos_ocean_fluxes.F90 diff --git a/config_src/ice_solo_driver/ice_shelf_driver.F90 b/config_src/drivers/ice_solo_driver/ice_shelf_driver.F90 similarity index 100% rename from config_src/ice_solo_driver/ice_shelf_driver.F90 rename to config_src/drivers/ice_solo_driver/ice_shelf_driver.F90 diff --git a/config_src/mct_driver/mom_ocean_model_mct.F90 b/config_src/drivers/mct_cap/mom_ocean_model_mct.F90 similarity index 100% rename from config_src/mct_driver/mom_ocean_model_mct.F90 rename to config_src/drivers/mct_cap/mom_ocean_model_mct.F90 diff --git a/config_src/mct_driver/mom_surface_forcing_mct.F90 b/config_src/drivers/mct_cap/mom_surface_forcing_mct.F90 similarity index 100% rename from config_src/mct_driver/mom_surface_forcing_mct.F90 rename to config_src/drivers/mct_cap/mom_surface_forcing_mct.F90 diff --git a/config_src/mct_driver/ocn_cap_methods.F90 b/config_src/drivers/mct_cap/ocn_cap_methods.F90 similarity index 100% rename from config_src/mct_driver/ocn_cap_methods.F90 rename to config_src/drivers/mct_cap/ocn_cap_methods.F90 diff --git a/config_src/mct_driver/ocn_comp_mct.F90 b/config_src/drivers/mct_cap/ocn_comp_mct.F90 similarity index 100% rename from config_src/mct_driver/ocn_comp_mct.F90 rename to config_src/drivers/mct_cap/ocn_comp_mct.F90 diff --git a/config_src/mct_driver/ocn_cpl_indices.F90 b/config_src/drivers/mct_cap/ocn_cpl_indices.F90 similarity index 100% rename from config_src/mct_driver/ocn_cpl_indices.F90 rename to config_src/drivers/mct_cap/ocn_cpl_indices.F90 diff --git a/config_src/nuopc_driver/mom_cap.F90 b/config_src/drivers/nuopc_cap/mom_cap.F90 similarity index 100% rename from config_src/nuopc_driver/mom_cap.F90 rename to config_src/drivers/nuopc_cap/mom_cap.F90 diff --git a/config_src/nuopc_driver/mom_cap_methods.F90 b/config_src/drivers/nuopc_cap/mom_cap_methods.F90 similarity index 100% rename from config_src/nuopc_driver/mom_cap_methods.F90 rename to config_src/drivers/nuopc_cap/mom_cap_methods.F90 diff --git a/config_src/nuopc_driver/mom_cap_time.F90 b/config_src/drivers/nuopc_cap/mom_cap_time.F90 similarity index 100% rename from config_src/nuopc_driver/mom_cap_time.F90 rename to config_src/drivers/nuopc_cap/mom_cap_time.F90 diff --git a/config_src/nuopc_driver/mom_ocean_model_nuopc.F90 b/config_src/drivers/nuopc_cap/mom_ocean_model_nuopc.F90 similarity index 100% rename from config_src/nuopc_driver/mom_ocean_model_nuopc.F90 rename to config_src/drivers/nuopc_cap/mom_ocean_model_nuopc.F90 diff --git a/config_src/nuopc_driver/mom_surface_forcing_nuopc.F90 b/config_src/drivers/nuopc_cap/mom_surface_forcing_nuopc.F90 similarity index 100% rename from config_src/nuopc_driver/mom_surface_forcing_nuopc.F90 rename to config_src/drivers/nuopc_cap/mom_surface_forcing_nuopc.F90 diff --git a/config_src/nuopc_driver/ocn_comp_NUOPC.F90 b/config_src/drivers/nuopc_cap/ocn_comp_NUOPC.F90 similarity index 100% rename from config_src/nuopc_driver/ocn_comp_NUOPC.F90 rename to config_src/drivers/nuopc_cap/ocn_comp_NUOPC.F90 diff --git a/config_src/nuopc_driver/time_utils.F90 b/config_src/drivers/nuopc_cap/time_utils.F90 similarity index 100% rename from config_src/nuopc_driver/time_utils.F90 rename to config_src/drivers/nuopc_cap/time_utils.F90 diff --git a/config_src/solo_driver/MESO_surface_forcing.F90 b/config_src/drivers/solo_driver/MESO_surface_forcing.F90 similarity index 100% rename from config_src/solo_driver/MESO_surface_forcing.F90 rename to config_src/drivers/solo_driver/MESO_surface_forcing.F90 diff --git a/config_src/solo_driver/MOM_driver.F90 b/config_src/drivers/solo_driver/MOM_driver.F90 similarity index 100% rename from config_src/solo_driver/MOM_driver.F90 rename to config_src/drivers/solo_driver/MOM_driver.F90 diff --git a/config_src/solo_driver/MOM_surface_forcing.F90 b/config_src/drivers/solo_driver/MOM_surface_forcing.F90 similarity index 100% rename from config_src/solo_driver/MOM_surface_forcing.F90 rename to config_src/drivers/solo_driver/MOM_surface_forcing.F90 diff --git a/config_src/solo_driver/atmos_ocean_fluxes.F90 b/config_src/drivers/solo_driver/atmos_ocean_fluxes.F90 similarity index 100% rename from config_src/solo_driver/atmos_ocean_fluxes.F90 rename to config_src/drivers/solo_driver/atmos_ocean_fluxes.F90 diff --git a/config_src/solo_driver/user_surface_forcing.F90 b/config_src/drivers/solo_driver/user_surface_forcing.F90 similarity index 100% rename from config_src/solo_driver/user_surface_forcing.F90 rename to config_src/drivers/solo_driver/user_surface_forcing.F90 diff --git a/config_src/unit_drivers/MOM_sum_driver.F90 b/config_src/drivers/unit_drivers/MOM_sum_driver.F90 similarity index 100% rename from config_src/unit_drivers/MOM_sum_driver.F90 rename to config_src/drivers/unit_drivers/MOM_sum_driver.F90 diff --git a/src/framework/MOM_coms_infra.F90 b/config_src/infra/FMS1/MOM_coms_infra.F90 similarity index 100% rename from src/framework/MOM_coms_infra.F90 rename to config_src/infra/FMS1/MOM_coms_infra.F90 diff --git a/src/framework/MOM_constants.F90 b/config_src/infra/FMS1/MOM_constants.F90 similarity index 100% rename from src/framework/MOM_constants.F90 rename to config_src/infra/FMS1/MOM_constants.F90 diff --git a/src/framework/MOM_couplertype_infra.F90 b/config_src/infra/FMS1/MOM_couplertype_infra.F90 similarity index 100% rename from src/framework/MOM_couplertype_infra.F90 rename to config_src/infra/FMS1/MOM_couplertype_infra.F90 diff --git a/src/framework/MOM_cpu_clock_infra.F90 b/config_src/infra/FMS1/MOM_cpu_clock_infra.F90 similarity index 100% rename from src/framework/MOM_cpu_clock_infra.F90 rename to config_src/infra/FMS1/MOM_cpu_clock_infra.F90 diff --git a/src/framework/MOM_data_override_infra.F90 b/config_src/infra/FMS1/MOM_data_override_infra.F90 similarity index 100% rename from src/framework/MOM_data_override_infra.F90 rename to config_src/infra/FMS1/MOM_data_override_infra.F90 diff --git a/src/framework/MOM_diag_manager_infra.F90 b/config_src/infra/FMS1/MOM_diag_manager_infra.F90 similarity index 100% rename from src/framework/MOM_diag_manager_infra.F90 rename to config_src/infra/FMS1/MOM_diag_manager_infra.F90 diff --git a/src/framework/MOM_domain_infra.F90 b/config_src/infra/FMS1/MOM_domain_infra.F90 similarity index 100% rename from src/framework/MOM_domain_infra.F90 rename to config_src/infra/FMS1/MOM_domain_infra.F90 diff --git a/src/framework/MOM_ensemble_manager_infra.F90 b/config_src/infra/FMS1/MOM_ensemble_manager_infra.F90 similarity index 100% rename from src/framework/MOM_ensemble_manager_infra.F90 rename to config_src/infra/FMS1/MOM_ensemble_manager_infra.F90 diff --git a/src/framework/MOM_error_infra.F90 b/config_src/infra/FMS1/MOM_error_infra.F90 similarity index 100% rename from src/framework/MOM_error_infra.F90 rename to config_src/infra/FMS1/MOM_error_infra.F90 diff --git a/src/framework/MOM_interp_infra.F90 b/config_src/infra/FMS1/MOM_interp_infra.F90 similarity index 100% rename from src/framework/MOM_interp_infra.F90 rename to config_src/infra/FMS1/MOM_interp_infra.F90 diff --git a/src/framework/MOM_io_infra.F90 b/config_src/infra/FMS1/MOM_io_infra.F90 similarity index 100% rename from src/framework/MOM_io_infra.F90 rename to config_src/infra/FMS1/MOM_io_infra.F90 diff --git a/src/framework/MOM_time_manager.F90 b/config_src/infra/FMS1/MOM_time_manager.F90 similarity index 100% rename from src/framework/MOM_time_manager.F90 rename to config_src/infra/FMS1/MOM_time_manager.F90 diff --git a/config_src/dynamic/MOM_memory.h b/config_src/memory/dynamic_nonsymmetric/MOM_memory.h similarity index 100% rename from config_src/dynamic/MOM_memory.h rename to config_src/memory/dynamic_nonsymmetric/MOM_memory.h diff --git a/config_src/dynamic_symmetric/MOM_memory.h b/config_src/memory/dynamic_symmetric/MOM_memory.h similarity index 100% rename from config_src/dynamic_symmetric/MOM_memory.h rename to config_src/memory/dynamic_symmetric/MOM_memory.h