NOAA-GFDL maintain a number of modules for modelling tracers implemented via the GFDL “generic_tracer” API. These modules are “generic” in the sense that they can be used by multiple GFDL ocean models (including MOM6). They include a number of BGC models (BLING, COBALT, ERGOM, TOPAZ, miniBLING) and other useful tracers (e.g. CFC, SF6). The modules can be found here.
The MOM NUOPC cap currently doesn’t allow for generic_tracers to be used. This (I presume) is because coupling of generic tracer surface fluxes is handled via FMS coupler_types which are designed for use with the FMScoupler. These coupler types carry the fields required to calculate the additional fluxes, along with information about how the fluxes should be calculated. In FMScoupler, the additional tracer surface fluxes are calculated by the coupler and passed to the ocean model.
I’ve been exploring making modifications to the NUOPC cap to allow generic_tracers. This is because I’m in the process of porting our BGC model (WOMBAT) from MOM5 to MOM6 and the generic_tracer framework is attractive for two reasons:
Compatibility with MOM5 and MOM6
There’re already a number of BGC modules implemented to use/compare
The approach I’m taking is a bit of a hack:
Initialise the FMS coupler types when generic_tracers are being used. There are three of these: one for ocean fields, one for atmospheric fields and one for the fluxes. The ocean fields are set by MOM at initialisation.
Retrieve the required atmospheric fields from the coupler and pack them into the atmospheric fields coupler type. Which fields are retrieved depends on the tracer fluxes required by the generic_tracer module being used.
Calculate the tracer fluxes from the atmospheric and ocean fields coupler types using the same routines used in FMScoupler (I had to modify these slightly).
My changes can be seen in this PR. The code changes are pretty much limited to the NUOPC cap and are implemented via patch files, so hopefully it’s clear enough what’s been changed. A more detailed description of the changes can be found here. Note that currently things are only set up to couple atmospheric co2 concentration for co2 flux calculations, but it’s easy to add other fields/fluxes. I’ve done some initial testing of the changes with a configuration using the BLING generic tracer.
Finally, to my reason for opening this issue: Is there interest in including these changes in NCAR/MOM6? Even if not, any feedback on the implementation would be very much appreciated.
NOAA-GFDL maintain a number of modules for modelling tracers implemented via the GFDL “generic_tracer” API. These modules are “generic” in the sense that they can be used by multiple GFDL ocean models (including MOM6). They include a number of BGC models (BLING, COBALT, ERGOM, TOPAZ, miniBLING) and other useful tracers (e.g. CFC, SF6). The modules can be found here.
The MOM NUOPC cap currently doesn’t allow for generic_tracers to be used. This (I presume) is because coupling of generic tracer surface fluxes is handled via FMS coupler_types which are designed for use with the FMScoupler. These coupler types carry the fields required to calculate the additional fluxes, along with information about how the fluxes should be calculated. In FMScoupler, the additional tracer surface fluxes are calculated by the coupler and passed to the ocean model.
I’ve been exploring making modifications to the NUOPC cap to allow generic_tracers. This is because I’m in the process of porting our BGC model (WOMBAT) from MOM5 to MOM6 and the generic_tracer framework is attractive for two reasons:
The approach I’m taking is a bit of a hack:
My changes can be seen in this PR. The code changes are pretty much limited to the NUOPC cap and are implemented via patch files, so hopefully it’s clear enough what’s been changed. A more detailed description of the changes can be found here. Note that currently things are only set up to couple atmospheric co2 concentration for co2 flux calculations, but it’s easy to add other fields/fluxes. I’ve done some initial testing of the changes with a configuration using the BLING generic tracer.
Finally, to my reason for opening this issue: Is there interest in including these changes in NCAR/MOM6? Even if not, any feedback on the implementation would be very much appreciated.