Skip to content

Commit

Permalink
allow generic tracers in NUOPC cap
Browse files Browse the repository at this point in the history
update build for generic_tracers

initialise fms

initialise gas exchange structures

spawn Ice_ocean_boundary%fluxes

register generic tracer coupler restarts

write generic tracer flux restarts to nuopc-configured additional_restart_dir

add function for getting CMEPS field name from FMS flux name

copy atmos_ocean_fluxes_calc.F90 and atmos_ocean_dep_fluxes_calc.F90 from FMScoupler (commit: eeadda8dc74f605e9cb3b03be8a43ab2ce698496)

update atmos_ocean_fluxes_calc.F90 (operate on 2D inputs, rather than 1D, add calculation for air_sea_deposition from atmos_ocean_dep_fluxes_calc.F90, multiply fluxes by ice_fraction input, rather than masking based on seawater input, use MOM over FMS modules where easy to do so, make tsurf input optional, as it is only used by a few implementations, use ind_runoff rather than ind_deposition in runoff flux calculation, rename gas_fields_ice to gas_fields_ocn)

move atmos_ocean_fluxes_calc routine into MOM_cap_gtracer_flux module

add param array into Ice_ocean_boundary%fluxes after spawning

add ability to override atm fields and IOB fluxes from data_table

pass optional atm_fields to mom_import as 2D BC type

do atm_fields override and flux calcs from mom_cap

allow diagnostics for tracer fluxes and related fields

spawn 2D coupler_type for atmos fields in InitializeAdvertise and set in ESMF internal state

manually override IOB%fluxes since FMS coupler_type routine doesnt set override flag

set u10 and psurf on atm_fields even when pcair cmeps field name is unknown to allow flux calculation with overridden pcair fields
  • Loading branch information
dougiesquire committed May 17, 2024
1 parent 17d014e commit 857fcda
Show file tree
Hide file tree
Showing 10 changed files with 1,205 additions and 20 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
build/*
bin/*
Debug/*
Release/*
CMakeUserPresets.json
**/make_patches.sh
.fortls
spack-*
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,6 @@
[submodule "WW3/WW3"]
path = WW3/WW3
url = https://github.com/ESCOMP/WW3
[submodule "MOM6/GFDL_generic_tracers"]
path = MOM6/GFDL_generic_tracers
url = https://github.com/ACCESS-NRI/GFDL-generic-tracers.git
58 changes: 51 additions & 7 deletions MOM6/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@ elseif(CMAKE_Fortran_COMPILER_ID MATCHES "Intel")
set(fortran_compile_flags -r8)
endif()

add_compile_definitions(
_USE_GENERIC_TRACER
_USE_MOM6_DIAG
)

### Targets

## MOM6 library
Expand Down Expand Up @@ -133,7 +138,6 @@ target_sources(OM3_mom6 PRIVATE
MOM6/src/framework/MOM_array_transform.F90
MOM6/src/framework/MOM_checksums.F90
MOM6/src/framework/MOM_coms.F90
MOM6/src/framework/MOM_coupler_types.F90
MOM6/src/framework/MOM_cpu_clock.F90
MOM6/src/framework/MOM_data_override.F90
MOM6/src/framework/MOM_diag_mediator.F90
Expand Down Expand Up @@ -238,7 +242,6 @@ target_sources(OM3_mom6 PRIVATE
MOM6/src/tracer/ideal_age_example.F90
MOM6/src/tracer/ISOMIP_tracer.F90
MOM6/src/tracer/MOM_CFC_cap.F90
MOM6/src/tracer/MOM_generic_tracer.F90
MOM6/src/tracer/MOM_hor_bnd_diffusion.F90
MOM6/src/tracer/MOM_neutral_diffusion.F90
MOM6/src/tracer/MOM_OCMIP2_CFC.F90
Expand Down Expand Up @@ -298,9 +301,46 @@ target_sources(OM3_mom6 PRIVATE

MOM6/config_src/external/drifters/MOM_particles.F90
MOM6/config_src/external/drifters/MOM_particles_types.F90
MOM6/config_src/external/GFDL_ocean_BGC/FMS_coupler_util.F90
MOM6/config_src/external/GFDL_ocean_BGC/generic_tracer.F90
MOM6/config_src/external/GFDL_ocean_BGC/generic_tracer_utils.F90

GFDL_generic_tracers/generic_tracers/FMS_coupler_util.F90
GFDL_generic_tracers/generic_tracers/generic_tracer.F90
GFDL_generic_tracers/generic_tracers/generic_tracer_utils.F90
GFDL_generic_tracers/generic_tracers/FMS_ocmip2_co2calc.F90
GFDL_generic_tracers/generic_tracers/generic_abiotic.F90
GFDL_generic_tracers/generic_tracers/generic_age.F90
GFDL_generic_tracers/generic_tracers/generic_argon.F90
GFDL_generic_tracers/generic_tracers/generic_BLING.F90
GFDL_generic_tracers/generic_tracers/generic_blres.F90
GFDL_generic_tracers/generic_tracers/generic_CFC.F90
GFDL_generic_tracers/generic_tracers/generic_COBALT.F90
GFDL_generic_tracers/generic_tracers/generic_ERGOM.F90
GFDL_generic_tracers/generic_tracers/generic_miniBLING.F90
GFDL_generic_tracers/generic_tracers/generic_SF6.F90
GFDL_generic_tracers/generic_tracers/generic_TOPAZ.F90

GFDL_generic_tracers/mocsy/src/mocsy_buffesm.F90
GFDL_generic_tracers/mocsy/src/mocsy_constants.F90
GFDL_generic_tracers/mocsy/src/mocsy_depth2press.F90
GFDL_generic_tracers/mocsy/src/mocsy_derivauto.F90
GFDL_generic_tracers/mocsy/src/mocsy_derivnum.F90
GFDL_generic_tracers/mocsy/src/mocsy_DNAD.F90
GFDL_generic_tracers/mocsy/src/mocsy_errors.F90
GFDL_generic_tracers/mocsy/src/mocsy_f2pCO2.F90
GFDL_generic_tracers/mocsy/src/mocsy_gasx.F90
GFDL_generic_tracers/mocsy/src/mocsy_p2fCO2.F90
GFDL_generic_tracers/mocsy/src/mocsy_p80.F90
GFDL_generic_tracers/mocsy/src/mocsy_phsolvers.F90
GFDL_generic_tracers/mocsy/src/mocsy_rho.F90
GFDL_generic_tracers/mocsy/src/mocsy_rhoinsitu.F90
GFDL_generic_tracers/mocsy/src/mocsy_singledouble.F90
GFDL_generic_tracers/mocsy/src/mocsy_sw_adtg.F90
GFDL_generic_tracers/mocsy/src/mocsy_sw_ptmp.F90
GFDL_generic_tracers/mocsy/src/mocsy_sw_temp.F90
GFDL_generic_tracers/mocsy/src/mocsy_tis.F90
GFDL_generic_tracers/mocsy/src/mocsy_tpot.F90
GFDL_generic_tracers/mocsy/src/mocsy_vars.F90
GFDL_generic_tracers/mocsy/src/mocsy_varsolver.F90

MOM6/config_src/external/ODA_hooks/kdtree.f90
MOM6/config_src/external/ODA_hooks/ocean_da_core.F90
MOM6/config_src/external/ODA_hooks/ocean_da_types.F90
Expand All @@ -311,7 +351,6 @@ target_sources(OM3_mom6 PRIVATE

MOM6/config_src/infra/FMS2/MOM_coms_infra.F90
MOM6/config_src/infra/FMS2/MOM_constants.F90
MOM6/config_src/infra/FMS2/MOM_couplertype_infra.F90
MOM6/config_src/infra/FMS2/MOM_cpu_clock_infra.F90
MOM6/config_src/infra/FMS2/MOM_data_override_infra.F90
MOM6/config_src/infra/FMS2/MOM_diag_manager_infra.F90
Expand All @@ -322,14 +361,19 @@ target_sources(OM3_mom6 PRIVATE
MOM6/config_src/infra/FMS2/MOM_io_infra.F90
MOM6/config_src/infra/FMS2/MOM_time_manager.F90

MOM6/config_src/drivers/nuopc_cap/mom_cap_methods.F90
MOM6/config_src/drivers/nuopc_cap/mom_cap_time.F90
MOM6/config_src/drivers/nuopc_cap/mom_surface_forcing_nuopc.F90
MOM6/config_src/drivers/nuopc_cap/ocn_comp_NUOPC.F90
MOM6/config_src/drivers/nuopc_cap/time_utils.F90

extra_sources/mom_cap_gtracer_flux.F90
)
add_patched_source(OM3_mom6 MOM6/config_src/drivers/nuopc_cap/mom_cap.F90)
add_patched_source(OM3_mom6 MOM6/config_src/drivers/nuopc_cap/mom_cap_methods.F90)
add_patched_source(OM3_mom6 MOM6/config_src/drivers/nuopc_cap/mom_ocean_model_nuopc.F90)
add_patched_source(OM3_mom6 MOM6/config_src/infra/FMS2/MOM_couplertype_infra.F90)
add_patched_source(OM3_mom6 MOM6/src/framework/MOM_coupler_types.F90)
add_patched_source(OM3_mom6 MOM6/src/tracer/MOM_generic_tracer.F90)

### Install and Export

Expand Down
1 change: 1 addition & 0 deletions MOM6/GFDL_generic_tracers
Submodule GFDL_generic_tracers added at 778750
Loading

0 comments on commit 857fcda

Please sign in to comment.