Skip to content

Commit

Permalink
Merge branch 'Hallberg-NOAA-rescale_mass' into dev/gfdl
Browse files Browse the repository at this point in the history
  • Loading branch information
adcroft committed Mar 23, 2020
2 parents 674739f + e09b987 commit 83a9be4
Show file tree
Hide file tree
Showing 27 changed files with 2,419 additions and 2,275 deletions.
1,082 changes: 526 additions & 556 deletions src/SIS2_ice_thm.F90

Large diffs are not rendered by default.

140 changes: 70 additions & 70 deletions src/SIS_continuity.F90

Large diffs are not rendered by default.

74 changes: 37 additions & 37 deletions src/SIS_ctrl_types.F90
Original file line number Diff line number Diff line change
Expand Up @@ -220,36 +220,35 @@ subroutine ice_diagnostics_init(IOF, OSS, FIA, G, US, IG, diag, Time, Cgrid)
'cell area', 'sphere')

FIA%id_sh = register_SIS_diag_field('ice_model', 'SH', diag%axesT1, Time, &
'sensible heat flux', 'W/m^2', missing_value=missing)
'sensible heat flux', 'W/m^2', conversion=US%QRZ_T_to_W_m2, missing_value=missing)
FIA%id_lh = register_SIS_diag_field('ice_model', 'LH', diag%axesT1, Time, &
'latent heat flux', 'W/m^2', missing_value=missing)
'latent heat flux', 'W/m^2', conversion=US%QRZ_T_to_W_m2, missing_value=missing)
FIA%id_sw = register_SIS_diag_field('ice_model', 'SW', diag%axesT1, Time, &
'shortwave heat flux', 'W/m^2', missing_value=missing)
'shortwave heat flux', 'W/m^2', conversion=US%QRZ_T_to_W_m2, missing_value=missing)
FIA%id_lw = register_SIS_diag_field('ice_model', 'LW', diag%axesT1, Time, &
'longwave heat flux over ice', 'W/m^2', missing_value=missing)
'longwave heat flux over ice', 'W/m^2', conversion=US%QRZ_T_to_W_m2, missing_value=missing)
FIA%id_snofl = register_SIS_diag_field('ice_model', 'SNOWFL', diag%axesT1, Time, &
'rate of snow fall', 'kg/(m^2*s)', missing_value=missing)
'rate of snow fall', 'kg/(m^2*s)', conversion=US%RZ_T_to_kg_m2s, missing_value=missing)
FIA%id_rain = register_SIS_diag_field('ice_model', 'RAIN', diag%axesT1, Time, &
'rate of rain fall', 'kg/(m^2*s)', missing_value=missing)
'rate of rain fall', 'kg/(m^2*s)', conversion=US%RZ_T_to_kg_m2s, missing_value=missing)
FIA%id_runoff = register_SIS_diag_field('ice_model', 'RUNOFF', diag%axesT1, Time, &
'liquid runoff', 'kg/(m^2*s)', missing_value=missing)

'liquid runoff', 'kg/(m^2*s)', conversion=US%RZ_T_to_kg_m2s, missing_value=missing)
FIA%id_calving = register_SIS_diag_field('ice_model', 'CALVING',diag%axesT1, Time, &
'frozen runoff', 'kg/(m^2*s)', missing_value=missing)
'frozen runoff', 'kg/(m^2*s)', conversion=US%RZ_T_to_kg_m2s, missing_value=missing)
FIA%id_runoff_hflx = register_SIS_diag_field('ice_model', 'RUNOFF_HFLX', diag%axesT1, Time, &
'liquid runoff sensible heat flux', 'W/m^2', missing_value=missing)
'liquid runoff sensible heat flux', 'W/m^2', conversion=US%QRZ_T_to_W_m2, missing_value=missing)
FIA%id_calving_hflx = register_SIS_diag_field('ice_model', 'CALVING_HFLX',diag%axesT1, Time, &
'frozen runoff sensible heat flux', 'W/m^2', missing_value=missing)
'frozen runoff sensible heat flux', 'W/m^2', conversion=US%QRZ_T_to_W_m2, missing_value=missing)
FIA%id_evap = register_SIS_diag_field('ice_model', 'EVAP',diag%axesT1, Time, &
'evaporation', 'kg/(m^2*s)', missing_value=missing)
'evaporation', 'kg/(m^2*s)', conversion=US%RZ_T_to_kg_m2s, missing_value=missing)
IOF%id_saltf = register_SIS_diag_field('ice_model', 'SALTF', diag%axesT1, Time, &
'ice to ocean salt flux', 'kg/(m^2*s)', missing_value=missing)
'ice to ocean salt flux', 'kg/(m^2*s)', conversion=US%RZ_T_to_kg_m2s, missing_value=missing)
FIA%id_tmelt = register_SIS_diag_field('ice_model', 'TMELT' , diag%axesT1, Time, &
'upper surface melting energy flux', 'W/m^2', missing_value=missing)
'upper surface melting energy flux', 'W/m^2', conversion=US%QRZ_T_to_W_m2, missing_value=missing)
FIA%id_bmelt = register_SIS_diag_field('ice_model', 'BMELT' , diag%axesT1, Time, &
'bottom surface melting energy flux', 'W/m^2', missing_value=missing)
'bottom surface melting energy flux', 'W/m^2', conversion=US%QRZ_T_to_W_m2, missing_value=missing)
FIA%id_bheat = register_SIS_diag_field('ice_model', 'BHEAT' , diag%axesT1, Time, &
'ocean to ice heat flux', 'W/m^2', missing_value=missing)
'ocean to ice heat flux', 'W/m^2', conversion=US%QRZ_T_to_W_m2, missing_value=missing)

if (coupler_type_initialized(IOF%tr_flux_ocn_top)) &
call coupler_type_set_diags(IOF%tr_flux_ocn_top, 'ice_model', diag%axesT1%handles, Time)
Expand All @@ -260,50 +259,51 @@ subroutine ice_diagnostics_init(IOF, OSS, FIA, G, US, IG, diag, Time, Cgrid)

FIA%id_sw_dn = register_SIS_diag_field('ice_model', 'SWDN', diag%axesT1, Time, &
'Downward shortwave heat flux at the bottom of the atmosphere', &
'W/m^2', missing_value=missing)
'W/m^2', conversion=US%QRZ_T_to_W_m2, missing_value=missing)
FIA%id_albedo = register_SIS_diag_field('ice_model', 'ALB', diag%axesT1, Time, &
'Shortwave flux weighted surface albedo, or 1 if no SW', '0-1', &
missing_value=missing)
FIA%id_sw_vis = register_SIS_diag_field('ice_model', 'SW_VIS', diag%axesT1, Time, &
'visible shortwave heat flux', 'W/m^2', missing_value=missing)
'visible shortwave heat flux', 'W/m^2', conversion=US%QRZ_T_to_W_m2, missing_value=missing)
FIA%id_sw_dir = register_SIS_diag_field('ice_model', 'SW_DIR', diag%axesT1, Time, &
'direct shortwave heat flux', 'W/m^2', missing_value=missing)
'direct shortwave heat flux', 'W/m^2', conversion=US%QRZ_T_to_W_m2, missing_value=missing)
FIA%id_sw_dif = register_SIS_diag_field('ice_model', 'SW_DIF', diag%axesT1, Time, &
'diffuse shortwave heat flux', 'W/m^2', missing_value=missing)
'diffuse shortwave heat flux', 'W/m^2', conversion=US%QRZ_T_to_W_m2, missing_value=missing)
FIA%id_sw_vis_dir = register_SIS_diag_field('ice_model', 'SW_VIS_DIR', diag%axesT1, Time, &
'visible direct shortwave heat flux', 'W/m^2', missing_value=missing)
'visible direct shortwave heat flux', 'W/m^2', conversion=US%QRZ_T_to_W_m2, missing_value=missing)
FIA%id_sw_vis_dif = register_SIS_diag_field('ice_model', 'SW_VIS_DIF', diag%axesT1, Time, &
'visible diffuse shortwave heat flux', 'W/m^2', missing_value=missing)
'visible diffuse shortwave heat flux', 'W/m^2', conversion=US%QRZ_T_to_W_m2, missing_value=missing)
FIA%id_sw_nir_dir = register_SIS_diag_field('ice_model', 'SW_NIR_DIR', diag%axesT1, Time, &
'near IR direct shortwave heat flux', 'W/m^2', missing_value=missing)
'near IR direct shortwave heat flux', 'W/m^2', conversion=US%QRZ_T_to_W_m2, missing_value=missing)
FIA%id_sw_nir_dif = register_SIS_diag_field('ice_model', 'SW_NIR_DIF', diag%axesT1, Time, &
'near IR diffuse shortwave heat flux', 'W/m^2', missing_value=missing)
'near IR diffuse shortwave heat flux', 'W/m^2', conversion=US%QRZ_T_to_W_m2, missing_value=missing)

if (allocated(FIA%flux_sh0)) then
FIA%id_evap0 = register_SIS_diag_field('ice_model', 'EVAP_T0',diag%axesTc0, Time, &
'evaporation at 0 degC', 'kg/(m^2*s)', missing_value=missing)
'evaporation at 0 degC', 'kg/(m^2*s)', conversion=US%RZ_T_to_kg_m2s, missing_value=missing)
FIA%id_lw0 = register_SIS_diag_field('ice_model', 'LW_T0',diag%axesTc0, Time, &
'net downward longwave heat flux over ice at 0 degC', 'W/m^2', missing_value=missing)
'net downward longwave heat flux over ice at 0 degC', &
'W/m^2', conversion=US%QRZ_T_to_W_m2, missing_value=missing)
FIA%id_sh0 = register_SIS_diag_field('ice_model', 'SH_T0', diag%axesTc0, Time, &
'sensible heat flux at 0 degC', 'W/m^2', missing_value=missing)
FIA%id_devdt = register_SIS_diag_field('ice_model', 'dEVAP_dT',diag%axesTc0, Time, &
'sensible heat flux at 0 degC', 'W/m^2', conversion=US%QRZ_T_to_W_m2, missing_value=missing)
FIA%id_devdt = register_SIS_diag_field('ice_model', 'dEVAP_dT', diag%axesTc0, Time, &
'partial derivative of evaporation with ice skin temperature', &
'kg/(m^2*s*K)', missing_value=missing)
FIA%id_dlwdt = register_SIS_diag_field('ice_model', 'dLW_dT',diag%axesTc0, Time, &
'partial derivative of net downward longwave heat flux with ice skin temperature', &
'W/(m^2*K)', missing_value=missing)
'W/(m^2*K)', conversion=US%QRZ_T_to_W_m2, missing_value=missing)
FIA%id_dshdt = register_SIS_diag_field('ice_model', 'dSH_dT', diag%axesTc0, Time, &
'partial derivative of sensible heat flux with ice skin temperature', &
'W/(m^2*K)', missing_value=missing)
'W/(m^2*K)', conversion=US%QRZ_T_to_W_m2, missing_value=missing)
FIA%id_tsfc_cat =register_SIS_diag_field('ice_model', 'TS_CAT', diag%axesTc0, Time, &
'surface temperature by category', 'C', missing_value=missing)
endif
FIA%id_evap_cat = register_SIS_diag_field('ice_model', 'EVAP_CAT',diag%axesTc0, Time, &
'evaporation by category', 'kg/(m^2*s)', missing_value=missing)
FIA%id_evap_cat = register_SIS_diag_field('ice_model', 'EVAP_CAT', diag%axesTc0, Time, &
'evaporation by category', 'kg/(m^2*s)', conversion=US%RZ_T_to_kg_m2s, missing_value=missing)
FIA%id_lw_cat = register_SIS_diag_field('ice_model', 'LW_CAT',diag%axesTc0, Time, &
'longwave heat flux by category', 'W/m^2', missing_value=missing)
'longwave heat flux by category', 'W/m^2', conversion=US%QRZ_T_to_W_m2, missing_value=missing)
FIA%id_sh_cat = register_SIS_diag_field('ice_model', 'SH_CAT', diag%axesTc0, Time, &
'sensible heat flux by category', 'W/m^2', missing_value=missing)
'sensible heat flux by category', 'W/m^2', conversion=US%QRZ_T_to_W_m2, missing_value=missing)


FIA%id_tsfc = register_SIS_diag_field('ice_model', 'TS', diag%axesT1, Time, &
Expand All @@ -313,14 +313,14 @@ subroutine ice_diagnostics_init(IOF, OSS, FIA, G, US, IG, diag, Time, Cgrid)

! diagnostics for quantities produced outside the ice model
FIA%id_slp = register_SIS_diag_field('ice_model', 'SLP', diag%axesT1, Time, &
'sea level pressure', 'Pa', missing_value=missing)
'sea level pressure', 'Pa', conversion=US%RZ_T_to_kg_m2s*US%L_T_to_m_s, missing_value=missing)
! diagnostics for quantities produced outside the ice model
OSS%id_sst = register_SIS_diag_field('ice_model', 'SST', diag%axesT1, Time, &
'sea surface temperature', 'deg-C', missing_value=missing)
OSS%id_sss = register_SIS_diag_field('ice_model', 'SSS', diag%axesT1, Time, &
'sea surface salinity', 'psu', missing_value=missing)
OSS%id_ssh = register_SIS_diag_field('ice_model', 'SSH', diag%axesT1, Time, &
'sea surface height', 'm', missing_value=missing)
'sea surface height', 'm', conversion=US%Z_to_m, missing_value=missing)

if (Cgrid_dyn) then
OSS%id_uo = register_SIS_diag_field('ice_model', 'UO', diag%axesCu1, Time, &
Expand All @@ -339,7 +339,7 @@ subroutine ice_diagnostics_init(IOF, OSS, FIA, G, US, IG, diag, Time, Cgrid)
endif

OSS%id_frazil = register_SIS_diag_field('ice_model', 'FRAZIL', diag%axesT1, Time, &
'energy flux of frazil formation', 'W/m^2', missing_value=missing)
'energy flux of frazil formation', 'W/m^2', conversion=US%QRZ_T_to_W_m2, missing_value=missing)

if (coupler_type_initialized(OSS%tr_fields)) &
call coupler_type_set_diags(OSS%tr_fields, 'ice_model', diag%axesT1%handles, Time)
Expand Down
2 changes: 1 addition & 1 deletion src/SIS_diag_mediator.F90
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ subroutine defineAxes(diag_cs, handles, axes)
axes%id = i2s(handles, n) ! Identifying string
axes%rank = n
axes%handles(:) = handles(:)
axes%diag_cs => diag_cs ! A [circular] link back to the SIS_diag_ctrl structure
axes%diag_cs => diag_cs ! A (circular) link back to the SIS_diag_ctrl structure
end subroutine defineAxes

!> Set up the current grid for the diag mediator
Expand Down
Loading

0 comments on commit 83a9be4

Please sign in to comment.