Has anyone run ACCESS-OM2 or MOM6 with salt restoring fluxes from a file, not calculated adaptively online? For context we want to use salt fluxes saved from control experiments and apply these same salt fluxes in meltwater experiments. We want to do this for both MOM5 and MOM6.
Hi Adele,
I have done that with ACCESS-OM2-1deg for the FAFMIP runs (https://doi.org/10.1175/JCLI-D-19-1016.1). I basically saved 6-hourly the āsfc_salt_flux_restoreā term, and modified it to be a āsalt_sfc_correction.ncā file so to be applied back into MOM5. I have the scripts I used back in the day but will need to refresh my head around the details.
That would be awesome if you can dig up details of how it was done @fabiobdias, we were struggling even to find the input option to read in salt fluxes from a file.
Also, does anyone know what temporal frequency is needed? Would it be really terrible if we just use the monthly salt flux output we have and apply every timestep itās applied? It should still end up with the same net restoring flux right? But the exact details of where its applied when would be slightly different.
And, does anyone know how to do it in MOM6? @angus-g ?
In MOM6 it depends a little bit on what driver youāre using. With FMS for MOM6-SIS2 coupling, you can turn on RESTORE_SALINITY
. Then thereās ADJUST_NET_SRESTORE_TO_ZERO
if you want 0 net, ADJUST_NET_SRESTORE_BY_SCALING
if you donāt want to move the zero contour.
The actual forcing is controlled by FLUXCONST_SALT
giving a piston velocity, and the data is loaded from the variable SALT_RESTORE_VARIABLE
in SALT_RESTORE_FILE
. I think this uses the FMS time interpolation so you can give it whatever temporal frequency you want, and repeat years if time is specified as a modulo variableā¦
Similar to what I think @fabiobdias is describing for MOM5, all MOM6 drivers support applying adjustments to the surface salt flux via the data_table
:
- set
ALLOW_FLUX_ADJUSTMENTS = True
- specify the file from which the flux adjustments should be read in the
data_table
(in kg salt m-2 s-1). Something like:# gridname | fieldname_code | fieldname_file | file_name. | ongrid | factor # ---------------------------------------------------------------------------------------------- "OCN" , "sflx_adj" , "<variable_name_in_file>" , "<path/to/file.nc>" , "none" , 1.0
The flux adjustment will get added to the salinity restoring fluxes if RESTORE_SALINITY = True
, so I think youād want to set RESTORE_SALINITY = False
. Similar to what @angus-g mentions for SALT_RESTORE_FILE
, the data_table
uses the FMS time interpolation so you can give it whatever temporal frequency you want, and repeat years if time is specified as a modulo variable.
Itās probably worth looking at the salt_flux_added
diagnostic to make sure things are behaving as expected.
Iāve tested different temporal frequency @adele-morrison. In the end, to be able to keep the model stable for the period design by the FAFMIP protocol (80 years), I needed to use 6-hourly fluxes. But in my case I wanted to deactivate the SSS restoring. Not sure youāll need such high frequency in your case. I remember that I tried daily and monthly before going to finer temporal scale and it didnāt work (e.g. global metrics show clearly large drifts - global temp, salt temp, AMOC).
Similar to what @dougiesquire said, in MOM5 we applied a surface flux adjustment. Roughly these are the steps:
1 - create salt_sfc_correction.nc file:
a) extract sfc_salt_flux_restore from the output file (I used NCO - happy to share the bash script that do this and the steps below)
b) convert salt flux to equivalent freshwater flux (FWF = salt_flux*1000/SSS); the surface correction is applied in freshwater flux (basically pme = pme + pme_correct in ocean_core/ocean_sbc.f90; where pme_correct is the āpmeā field it reads from the salt_sfc_correction.nc file, more on this below)
c) rename variable name to āpmeā; thereās also a couple attributes to adjust like:
> standard_name = āwater_flux_into_sea_waterā
> long_name = āWater Flux into Sea Waterā
> units = ākg m-2 s-1ā
and a few others - I remember that @Aidan helped on this (just to make it as MOM5 wants - the bash script I mentioned has all the details).
2 - Now we turn on the flux_correction on the input.nml (section ocean_sbc_nml), and it will look for the āsalt_sfc_correction.ncā file in the input directory:
- do_flux_correction = .true.
- salt_correction_scale = 1.0
For the perturbation experiment I had, e.g. FAF-WATER (freshwater anomalies from CMIP5 MMM), we just sum the sfc_salt_flux_restore converted to FWF with the FAFMIP PME anomalies (so these will be combined in the variable āpmeā in the āsalt_sfc_correction.ncā). In my case I also deactivate the salt restoring.
Awesome, thanks everyone, I think this should give us a great starting point to give it a go from. Will let you know when we run into problems!