From dfc70fd9f2a42b5fe86a8424927f3dc478daa062 Mon Sep 17 00:00:00 2001 From: Andrew Roberts Date: Wed, 8 Nov 2023 21:01:29 -0700 Subject: [PATCH 1/4] Remove ssh filtering from ocean coupled fields --- components/mpas-ocean/bld/build-namelist | 1 - .../mpas-ocean/bld/build-namelist-section | 1 - .../namelist_defaults_mpaso.xml | 1 - .../namelist_definition_mpaso.xml | 8 ---- components/mpas-ocean/driver/ocn_comp_mct.F | 45 +++++++------------ components/mpas-ocean/src/Registry.xml | 4 -- 6 files changed, 16 insertions(+), 44 deletions(-) diff --git a/components/mpas-ocean/bld/build-namelist b/components/mpas-ocean/bld/build-namelist index bfc4a0050b25..0b8d3c782fa7 100755 --- a/components/mpas-ocean/bld/build-namelist +++ b/components/mpas-ocean/bld/build-namelist @@ -698,7 +698,6 @@ add_default($nl, 'config_flux_attenuation_coefficient_runoff'); # Namelist group: coupling # ############################ -add_default($nl, 'config_ssh_grad_relax_timescale'); if (($OCN_ICEBERG eq 'true') && ($OCN_FORCING eq 'active_atm')) { add_default($nl, 'config_remove_AIS_coupler_runoff', 'val'=>".true."); } else { diff --git a/components/mpas-ocean/bld/build-namelist-section b/components/mpas-ocean/bld/build-namelist-section index 7918ce14141b..28030392442d 100644 --- a/components/mpas-ocean/bld/build-namelist-section +++ b/components/mpas-ocean/bld/build-namelist-section @@ -227,7 +227,6 @@ add_default($nl, 'config_flux_attenuation_coefficient_runoff'); # Namelist group: coupling # ############################ -add_default($nl, 'config_ssh_grad_relax_timescale'); add_default($nl, 'config_remove_AIS_coupler_runoff'); ###################################### diff --git a/components/mpas-ocean/bld/namelist_files/namelist_defaults_mpaso.xml b/components/mpas-ocean/bld/namelist_files/namelist_defaults_mpaso.xml index b88f80a61ae2..eff1910d5072 100644 --- a/components/mpas-ocean/bld/namelist_files/namelist_defaults_mpaso.xml +++ b/components/mpas-ocean/bld/namelist_files/namelist_defaults_mpaso.xml @@ -289,7 +289,6 @@ 10.0 -0.0 .false. diff --git a/components/mpas-ocean/bld/namelist_files/namelist_definition_mpaso.xml b/components/mpas-ocean/bld/namelist_files/namelist_definition_mpaso.xml index 2d5f1ba0bff0..5b5c64602eb2 100644 --- a/components/mpas-ocean/bld/namelist_files/namelist_definition_mpaso.xml +++ b/components/mpas-ocean/bld/namelist_files/namelist_definition_mpaso.xml @@ -1175,14 +1175,6 @@ Default: Defined in namelist_defaults.xml - -Timescale for relaxation of the ssh gradient for coupling. A value of 0.0 (default) removes any relaxation and gives instantaneous response. - -Valid values: Any positive real number. -Default: Defined in namelist_defaults.xml - - If true, solid and liquid runoff from the Antarctic Ice Sheet (below 60S latitude) coming from the coupled is zeroed in the coupler import routines. To be used with data iceberg fluxes coming from the sea ice model. diff --git a/components/mpas-ocean/driver/ocn_comp_mct.F b/components/mpas-ocean/driver/ocn_comp_mct.F index a1dbbb6b50ca..e169625a6074 100644 --- a/components/mpas-ocean/driver/ocn_comp_mct.F +++ b/components/mpas-ocean/driver/ocn_comp_mct.F @@ -209,7 +209,7 @@ subroutine ocn_init_mct( EClock, cdata_o, x2o_o, o2x_o, NLFilename )!{{{ ! Added for coupling interval initialization integer, pointer :: index_avgZonalSSHGradient, index_avgMeridionalSSHGradient - real (kind=RKIND), dimension(:), pointer :: filteredSSHGradientZonal, filteredSSHGradientMeridional + real (kind=RKIND), dimension(:), pointer :: SSHGradientZonal, SSHGradientMeridional real (kind=RKIND), dimension(:,:), pointer :: avgSSHGradient interface @@ -752,10 +752,10 @@ end subroutine xml_stream_get_attributes call mpas_pool_get_dimension(forcingPool, 'index_avgSSHGradientZonal', index_avgZonalSSHGradient) call mpas_pool_get_dimension(forcingPool, 'index_avgSSHGradientMeridional', index_avgMeridionalSSHGradient) call mpas_pool_get_array(forcingPool, 'avgSSHGradient', avgSSHGradient) - call mpas_pool_get_array(forcingPool, 'filteredSSHGradientZonal', filteredSSHGradientZonal) - call mpas_pool_get_array(forcingPool, 'filteredSSHGradientMeridional', filteredSSHGradientMeridional) - filteredSSHGradientZonal = avgSSHGradient(index_avgZonalSSHGradient, :) - filteredSSHGradientMeridional = avgSSHGradient(index_avgMeridionalSSHGradient, :) + call mpas_pool_get_array(forcingPool, 'SSHGradientZonal', SSHGradientZonal) + call mpas_pool_get_array(forcingPool, 'SSHGradientMeridional', SSHGradientMeridional) + SSHGradientZonal = avgSSHGradient(index_avgZonalSSHGradient, :) + SSHGradientMeridional = avgSSHGradient(index_avgMeridionalSSHGradient, :) block_ptr => block_ptr % next end do endif @@ -889,9 +889,8 @@ subroutine ocn_run_mct( EClock, cdata_o, x2o_o, o2x_o)!{{{ ! Added for coupling interval initialization integer, pointer :: index_avgZonalSSHGradient, index_avgMeridionalSSHGradient - real (kind=RKIND), dimension(:), pointer :: filteredSSHGradientZonal, filteredSSHGradientMeridional + real (kind=RKIND), dimension(:), pointer :: SSHGradientZonal, SSHGradientMeridional real (kind=RKIND), dimension(:,:), pointer :: avgSSHGradient - real (kind=RKIND), pointer :: config_ssh_grad_relax_timescale real (kind=RKIND) :: timeFilterFactor iam = domain % dminfo % my_proc_id @@ -1104,29 +1103,17 @@ subroutine ocn_run_mct( EClock, cdata_o, x2o_o, o2x_o)!{{{ if (debugOn) call mpas_log_write('Completed timestep '//trim(timeStamp)) end do - ! update coupled variables that get calculated on coupling intervals - ! NOTE: could be moved to subroutine - ! time filter ssh gradient + ! update coupled variables that are calculated on coupling intervals block_ptr => domain_ptr % blocklist do while(associated(block_ptr)) call mpas_pool_get_subpool(block_ptr % structs, 'forcing', forcingPool) call mpas_pool_get_dimension(forcingPool, 'index_avgSSHGradientZonal', index_avgZonalSSHGradient) call mpas_pool_get_dimension(forcingPool, 'index_avgSSHGradientMeridional', index_avgMeridionalSSHGradient) call mpas_pool_get_array(forcingPool, 'avgSSHGradient', avgSSHGradient) - call mpas_pool_get_array(forcingPool, 'filteredSSHGradientZonal', filteredSSHGradientZonal) - call mpas_pool_get_array(forcingPool, 'filteredSSHGradientMeridional', filteredSSHGradientMeridional) - call mpas_pool_get_config(domain % configs, 'config_ssh_grad_relax_timescale', & - config_ssh_grad_relax_timescale) - if (config_ssh_grad_relax_timescale < real(ocn_cpl_dt,RKIND)) then - filteredSSHGradientZonal = avgSSHGradient(index_avgZonalSSHGradient, :) - filteredSSHGradientMeridional = avgSSHGradient(index_avgMeridionalSSHGradient, :) - else - timeFilterFactor = real(ocn_cpl_dt,RKIND) / config_ssh_grad_relax_timescale - filteredSSHGradientZonal = filteredSSHGradientZonal * (1.0_RKIND - timeFilterFactor) + & - avgSSHGradient(index_avgZonalSSHGradient, :) * timeFilterFactor - filteredSSHGradientMeridional = filteredSSHGradientMeridional * (1.0_RKIND - timeFilterFactor) + & - avgSSHGradient(index_avgMeridionalSSHGradient, :) * timeFilterFactor - endif + call mpas_pool_get_array(forcingPool, 'SSHGradientZonal', SSHGradientZonal) + call mpas_pool_get_array(forcingPool, 'SSHGradientMeridional', SSHGradientMeridional) + SSHGradientZonal = avgSSHGradient(index_avgZonalSSHGradient, :) + SSHGradientMeridional = avgSSHGradient(index_avgMeridionalSSHGradient, :) block_ptr => block_ptr % next end do @@ -2561,7 +2548,7 @@ subroutine ocn_export_mct(o2x_o, errorCode) !{{{ integer, dimension(:), pointer :: landIceMask real (kind=RKIND), dimension(:), pointer :: seaIceEnergy, accumulatedFrazilIceMass, frazilSurfacePressure, & - filteredSSHGradientZonal, filteredSSHGradientMeridional, & + SSHGradientZonal, SSHGradientMeridional, & avgTotalFreshWaterTemperatureFlux, & avgCO2_gas_flux, DMSFlux, surfaceUpwardCO2Flux, & avgOceanSurfaceDIC, & @@ -2632,8 +2619,8 @@ subroutine ocn_export_mct(o2x_o, errorCode) !{{{ call mpas_pool_get_array(forcingPool, 'landIceMask', landIceMask) call mpas_pool_get_array(forcingPool, 'avgTracersSurfaceValue', avgTracersSurfaceValue) call mpas_pool_get_array(forcingPool, 'avgSurfaceVelocity', avgSurfaceVelocity) - call mpas_pool_get_array(forcingPool, 'filteredSSHGradientZonal', filteredSSHGradientZonal) - call mpas_pool_get_array(forcingPool, 'filteredSSHGradientMeridional', filteredSSHGradientMeridional) + call mpas_pool_get_array(forcingPool, 'SSHGradientZonal', SSHGradientZonal) + call mpas_pool_get_array(forcingPool, 'SSHGradientMeridional', SSHGradientMeridional) call mpas_pool_get_array(forcingPool, 'avgTotalFreshWaterTemperatureFlux', avgTotalFreshWaterTemperatureFlux) if ( frazilIceActive ) then call mpas_pool_get_array(forcingPool, 'seaIceEnergy', seaIceEnergy) @@ -2687,8 +2674,8 @@ subroutine ocn_export_mct(o2x_o, errorCode) !{{{ o2x_o % rAttr(index_o2x_So_v, n) = avgSurfaceVelocity(index_avgMeridionalSurfaceVelocity, i) o2x_o % rAttr(index_o2x_So_ssh, n) = ssh(i) - o2x_o % rAttr(index_o2x_So_dhdx, n) = filteredSSHGradientZonal(i) - o2x_o % rAttr(index_o2x_So_dhdy, n) = filteredSSHGradientMeridional(i) + o2x_o % rAttr(index_o2x_So_dhdx, n) = SSHGradientZonal(i) + o2x_o % rAttr(index_o2x_So_dhdy, n) = SSHGradientMeridional(i) o2x_o % rAttr(index_o2x_Faoo_h2otemp, n) = avgTotalFreshWaterTemperatureFlux(i) * rho_sw * cp_sw diff --git a/components/mpas-ocean/src/Registry.xml b/components/mpas-ocean/src/Registry.xml index 460199a11d01..69064d23ad36 100644 --- a/components/mpas-ocean/src/Registry.xml +++ b/components/mpas-ocean/src/Registry.xml @@ -755,10 +755,6 @@ /> - Date: Sun, 12 Nov 2023 13:28:16 -0600 Subject: [PATCH 2/4] Remove filteredSSH references from the registry --- components/mpas-ocean/src/Registry.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/components/mpas-ocean/src/Registry.xml b/components/mpas-ocean/src/Registry.xml index 69064d23ad36..b58ea2cfb1b0 100644 --- a/components/mpas-ocean/src/Registry.xml +++ b/components/mpas-ocean/src/Registry.xml @@ -1923,8 +1923,8 @@ - - + + @@ -3663,12 +3663,12 @@ description="Time averaged meridional gradient of SSH" /> - - Date: Sun, 12 Nov 2023 22:47:33 -0600 Subject: [PATCH 3/4] Replace SSHGradientZonal/Meridional references with avgSSHGradientZonal/Meridional --- components/mpas-ocean/driver/ocn_comp_mct.F | 36 +++++++++------------ components/mpas-ocean/src/Registry.xml | 12 ++----- 2 files changed, 18 insertions(+), 30 deletions(-) diff --git a/components/mpas-ocean/driver/ocn_comp_mct.F b/components/mpas-ocean/driver/ocn_comp_mct.F index e169625a6074..1876ed00177c 100644 --- a/components/mpas-ocean/driver/ocn_comp_mct.F +++ b/components/mpas-ocean/driver/ocn_comp_mct.F @@ -207,9 +207,9 @@ subroutine ocn_init_mct( EClock, cdata_o, x2o_o, o2x_o, NLFilename )!{{{ logical, pointer :: config_use_surface_salinity_monthly_restoring character (len=StrKIND), pointer :: config_land_ice_flux_mode - ! Added for coupling interval initialization + ! ssh coupling interval initialization integer, pointer :: index_avgZonalSSHGradient, index_avgMeridionalSSHGradient - real (kind=RKIND), dimension(:), pointer :: SSHGradientZonal, SSHGradientMeridional + real (kind=RKIND), dimension(:), pointer :: avgSSHGradientZonal, avgSSHGradientMeridional real (kind=RKIND), dimension(:,:), pointer :: avgSSHGradient interface @@ -752,10 +752,10 @@ end subroutine xml_stream_get_attributes call mpas_pool_get_dimension(forcingPool, 'index_avgSSHGradientZonal', index_avgZonalSSHGradient) call mpas_pool_get_dimension(forcingPool, 'index_avgSSHGradientMeridional', index_avgMeridionalSSHGradient) call mpas_pool_get_array(forcingPool, 'avgSSHGradient', avgSSHGradient) - call mpas_pool_get_array(forcingPool, 'SSHGradientZonal', SSHGradientZonal) - call mpas_pool_get_array(forcingPool, 'SSHGradientMeridional', SSHGradientMeridional) - SSHGradientZonal = avgSSHGradient(index_avgZonalSSHGradient, :) - SSHGradientMeridional = avgSSHGradient(index_avgMeridionalSSHGradient, :) + call mpas_pool_get_array(forcingPool, 'avgSSHGradientZonal', avgSSHGradientZonal) + call mpas_pool_get_array(forcingPool, 'avgSSHGradientMeridional', avgSSHGradientMeridional) + avgSSHGradientZonal = avgSSHGradient(index_avgZonalSSHGradient, :) + avgSSHGradientMeridional = avgSSHGradient(index_avgMeridionalSSHGradient, :) block_ptr => block_ptr % next end do endif @@ -889,7 +889,7 @@ subroutine ocn_run_mct( EClock, cdata_o, x2o_o, o2x_o)!{{{ ! Added for coupling interval initialization integer, pointer :: index_avgZonalSSHGradient, index_avgMeridionalSSHGradient - real (kind=RKIND), dimension(:), pointer :: SSHGradientZonal, SSHGradientMeridional + real (kind=RKIND), dimension(:), pointer :: avgSSHGradientZonal, avgSSHGradientMeridional real (kind=RKIND), dimension(:,:), pointer :: avgSSHGradient real (kind=RKIND) :: timeFilterFactor @@ -1110,10 +1110,10 @@ subroutine ocn_run_mct( EClock, cdata_o, x2o_o, o2x_o)!{{{ call mpas_pool_get_dimension(forcingPool, 'index_avgSSHGradientZonal', index_avgZonalSSHGradient) call mpas_pool_get_dimension(forcingPool, 'index_avgSSHGradientMeridional', index_avgMeridionalSSHGradient) call mpas_pool_get_array(forcingPool, 'avgSSHGradient', avgSSHGradient) - call mpas_pool_get_array(forcingPool, 'SSHGradientZonal', SSHGradientZonal) - call mpas_pool_get_array(forcingPool, 'SSHGradientMeridional', SSHGradientMeridional) - SSHGradientZonal = avgSSHGradient(index_avgZonalSSHGradient, :) - SSHGradientMeridional = avgSSHGradient(index_avgMeridionalSSHGradient, :) + call mpas_pool_get_array(forcingPool, 'avgSSHGradientZonal', avgSSHGradientZonal) + call mpas_pool_get_array(forcingPool, 'avgSSHGradientMeridional', avgSSHGradientMeridional) + avgSSHGradientZonal = avgSSHGradient(index_avgZonalSSHGradient, :) + avgSSHGradientMeridional = avgSSHGradient(index_avgMeridionalSSHGradient, :) block_ptr => block_ptr % next end do @@ -2548,7 +2548,7 @@ subroutine ocn_export_mct(o2x_o, errorCode) !{{{ integer, dimension(:), pointer :: landIceMask real (kind=RKIND), dimension(:), pointer :: seaIceEnergy, accumulatedFrazilIceMass, frazilSurfacePressure, & - SSHGradientZonal, SSHGradientMeridional, & + avgSSHGradientZonal, avgSSHGradientMeridional, & avgTotalFreshWaterTemperatureFlux, & avgCO2_gas_flux, DMSFlux, surfaceUpwardCO2Flux, & avgOceanSurfaceDIC, & @@ -2619,8 +2619,8 @@ subroutine ocn_export_mct(o2x_o, errorCode) !{{{ call mpas_pool_get_array(forcingPool, 'landIceMask', landIceMask) call mpas_pool_get_array(forcingPool, 'avgTracersSurfaceValue', avgTracersSurfaceValue) call mpas_pool_get_array(forcingPool, 'avgSurfaceVelocity', avgSurfaceVelocity) - call mpas_pool_get_array(forcingPool, 'SSHGradientZonal', SSHGradientZonal) - call mpas_pool_get_array(forcingPool, 'SSHGradientMeridional', SSHGradientMeridional) + call mpas_pool_get_array(forcingPool, 'avgSSHGradientZonal', avgSSHGradientZonal) + call mpas_pool_get_array(forcingPool, 'avgSSHGradientMeridional', avgSSHGradientMeridional) call mpas_pool_get_array(forcingPool, 'avgTotalFreshWaterTemperatureFlux', avgTotalFreshWaterTemperatureFlux) if ( frazilIceActive ) then call mpas_pool_get_array(forcingPool, 'seaIceEnergy', seaIceEnergy) @@ -2674,15 +2674,11 @@ subroutine ocn_export_mct(o2x_o, errorCode) !{{{ o2x_o % rAttr(index_o2x_So_v, n) = avgSurfaceVelocity(index_avgMeridionalSurfaceVelocity, i) o2x_o % rAttr(index_o2x_So_ssh, n) = ssh(i) - o2x_o % rAttr(index_o2x_So_dhdx, n) = SSHGradientZonal(i) - o2x_o % rAttr(index_o2x_So_dhdy, n) = SSHGradientMeridional(i) + o2x_o % rAttr(index_o2x_So_dhdx, n) = avgSSHGradientZonal(i) + o2x_o % rAttr(index_o2x_So_dhdy, n) = avgSSHGradientMeridional(i) o2x_o % rAttr(index_o2x_Faoo_h2otemp, n) = avgTotalFreshWaterTemperatureFlux(i) * rho_sw * cp_sw - if (ocn_rof_two_way) then - o2x_o % rAttr(index_o2x_So_ssh, n) = ssh(i) - end if - if ( frazilIceActive ) then ! negative when frazil ice can be melted keepFrazil = .true. diff --git a/components/mpas-ocean/src/Registry.xml b/components/mpas-ocean/src/Registry.xml index b58ea2cfb1b0..4a8f1035dcf9 100644 --- a/components/mpas-ocean/src/Registry.xml +++ b/components/mpas-ocean/src/Registry.xml @@ -1923,8 +1923,8 @@ - - + + @@ -3663,14 +3663,6 @@ description="Time averaged meridional gradient of SSH" /> - - From fbef231f1ac2673abb2e9a713f64a6d2cf4ee0a8 Mon Sep 17 00:00:00 2001 From: Andrew Roberts Date: Mon, 13 Nov 2023 18:41:16 -0600 Subject: [PATCH 4/4] Updates and improvements to the removal of coupled filtered SSH gradient --- components/mpas-ocean/driver/ocn_comp_mct.F | 27 +++++++-------------- components/mpas-ocean/src/Registry.xml | 3 +-- 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/components/mpas-ocean/driver/ocn_comp_mct.F b/components/mpas-ocean/driver/ocn_comp_mct.F index 1876ed00177c..e7c995df990c 100644 --- a/components/mpas-ocean/driver/ocn_comp_mct.F +++ b/components/mpas-ocean/driver/ocn_comp_mct.F @@ -209,7 +209,6 @@ subroutine ocn_init_mct( EClock, cdata_o, x2o_o, o2x_o, NLFilename )!{{{ ! ssh coupling interval initialization integer, pointer :: index_avgZonalSSHGradient, index_avgMeridionalSSHGradient - real (kind=RKIND), dimension(:), pointer :: avgSSHGradientZonal, avgSSHGradientMeridional real (kind=RKIND), dimension(:,:), pointer :: avgSSHGradient interface @@ -752,10 +751,6 @@ end subroutine xml_stream_get_attributes call mpas_pool_get_dimension(forcingPool, 'index_avgSSHGradientZonal', index_avgZonalSSHGradient) call mpas_pool_get_dimension(forcingPool, 'index_avgSSHGradientMeridional', index_avgMeridionalSSHGradient) call mpas_pool_get_array(forcingPool, 'avgSSHGradient', avgSSHGradient) - call mpas_pool_get_array(forcingPool, 'avgSSHGradientZonal', avgSSHGradientZonal) - call mpas_pool_get_array(forcingPool, 'avgSSHGradientMeridional', avgSSHGradientMeridional) - avgSSHGradientZonal = avgSSHGradient(index_avgZonalSSHGradient, :) - avgSSHGradientMeridional = avgSSHGradient(index_avgMeridionalSSHGradient, :) block_ptr => block_ptr % next end do endif @@ -889,9 +884,7 @@ subroutine ocn_run_mct( EClock, cdata_o, x2o_o, o2x_o)!{{{ ! Added for coupling interval initialization integer, pointer :: index_avgZonalSSHGradient, index_avgMeridionalSSHGradient - real (kind=RKIND), dimension(:), pointer :: avgSSHGradientZonal, avgSSHGradientMeridional real (kind=RKIND), dimension(:,:), pointer :: avgSSHGradient - real (kind=RKIND) :: timeFilterFactor iam = domain % dminfo % my_proc_id @@ -1110,10 +1103,6 @@ subroutine ocn_run_mct( EClock, cdata_o, x2o_o, o2x_o)!{{{ call mpas_pool_get_dimension(forcingPool, 'index_avgSSHGradientZonal', index_avgZonalSSHGradient) call mpas_pool_get_dimension(forcingPool, 'index_avgSSHGradientMeridional', index_avgMeridionalSSHGradient) call mpas_pool_get_array(forcingPool, 'avgSSHGradient', avgSSHGradient) - call mpas_pool_get_array(forcingPool, 'avgSSHGradientZonal', avgSSHGradientZonal) - call mpas_pool_get_array(forcingPool, 'avgSSHGradientMeridional', avgSSHGradientMeridional) - avgSSHGradientZonal = avgSSHGradient(index_avgZonalSSHGradient, :) - avgSSHGradientMeridional = avgSSHGradient(index_avgMeridionalSSHGradient, :) block_ptr => block_ptr % next end do @@ -2532,7 +2521,8 @@ subroutine ocn_export_mct(o2x_o, errorCode) !{{{ integer :: i, n integer, pointer :: nCellsSolve, index_temperatureSurfaceValue, index_salinitySurfaceValue, & - index_avgZonalSurfaceVelocity, index_avgMeridionalSurfaceVelocity + index_avgZonalSurfaceVelocity, index_avgMeridionalSurfaceVelocity, & + index_avgZonalSSHGradient, index_avgMeridionalSSHGradient type (block_type), pointer :: block_ptr @@ -2548,7 +2538,6 @@ subroutine ocn_export_mct(o2x_o, errorCode) !{{{ integer, dimension(:), pointer :: landIceMask real (kind=RKIND), dimension(:), pointer :: seaIceEnergy, accumulatedFrazilIceMass, frazilSurfacePressure, & - avgSSHGradientZonal, avgSSHGradientMeridional, & avgTotalFreshWaterTemperatureFlux, & avgCO2_gas_flux, DMSFlux, surfaceUpwardCO2Flux, & avgOceanSurfaceDIC, & @@ -2565,7 +2554,7 @@ subroutine ocn_export_mct(o2x_o, errorCode) !{{{ ssh real (kind=RKIND), dimension(:,:), pointer :: avgTracersSurfaceValue, avgSurfaceVelocity, & - avgOceanSurfacePhytoC, & + avgSSHGradient, avgOceanSurfacePhytoC, & avgOceanSurfaceDOC, layerThickness real (kind=RKIND) :: surfaceFreezingTemp @@ -2612,6 +2601,8 @@ subroutine ocn_export_mct(o2x_o, errorCode) !{{{ call mpas_pool_get_dimension(forcingPool, 'index_avgSalinitySurfaceValue', index_salinitySurfaceValue) call mpas_pool_get_dimension(forcingPool, 'index_avgSurfaceVelocityZonal', index_avgZonalSurfaceVelocity) call mpas_pool_get_dimension(forcingPool, 'index_avgSurfaceVelocityMeridional', index_avgMeridionalSurfaceVelocity) + call mpas_pool_get_dimension(forcingPool, 'index_avgSSHGradientZonal', index_avgZonalSSHGradient) + call mpas_pool_get_dimension(forcingPool, 'index_avgSSHGradientMeridional', index_avgMeridionalSSHGradient) call mpas_pool_get_array(statePool, 'ssh', ssh, 1) call mpas_pool_get_array(statePool, 'layerThickness', layerThickness, 1) @@ -2619,9 +2610,9 @@ subroutine ocn_export_mct(o2x_o, errorCode) !{{{ call mpas_pool_get_array(forcingPool, 'landIceMask', landIceMask) call mpas_pool_get_array(forcingPool, 'avgTracersSurfaceValue', avgTracersSurfaceValue) call mpas_pool_get_array(forcingPool, 'avgSurfaceVelocity', avgSurfaceVelocity) - call mpas_pool_get_array(forcingPool, 'avgSSHGradientZonal', avgSSHGradientZonal) - call mpas_pool_get_array(forcingPool, 'avgSSHGradientMeridional', avgSSHGradientMeridional) + call mpas_pool_get_array(forcingPool, 'avgSSHGradient', avgSSHGradient) call mpas_pool_get_array(forcingPool, 'avgTotalFreshWaterTemperatureFlux', avgTotalFreshWaterTemperatureFlux) + if ( frazilIceActive ) then call mpas_pool_get_array(forcingPool, 'seaIceEnergy', seaIceEnergy) call mpas_pool_get_array(forcingPool, 'frazilSurfacePressure', frazilSurfacePressure) @@ -2674,8 +2665,8 @@ subroutine ocn_export_mct(o2x_o, errorCode) !{{{ o2x_o % rAttr(index_o2x_So_v, n) = avgSurfaceVelocity(index_avgMeridionalSurfaceVelocity, i) o2x_o % rAttr(index_o2x_So_ssh, n) = ssh(i) - o2x_o % rAttr(index_o2x_So_dhdx, n) = avgSSHGradientZonal(i) - o2x_o % rAttr(index_o2x_So_dhdy, n) = avgSSHGradientMeridional(i) + o2x_o % rAttr(index_o2x_So_dhdx, n) = avgSSHGradient(index_avgZonalSSHGradient, i) + o2x_o % rAttr(index_o2x_So_dhdy, n) = avgSSHGradient(index_avgMeridionalSSHGradient, i) o2x_o % rAttr(index_o2x_Faoo_h2otemp, n) = avgTotalFreshWaterTemperatureFlux(i) * rho_sw * cp_sw diff --git a/components/mpas-ocean/src/Registry.xml b/components/mpas-ocean/src/Registry.xml index 4a8f1035dcf9..d0f3e5d5c425 100644 --- a/components/mpas-ocean/src/Registry.xml +++ b/components/mpas-ocean/src/Registry.xml @@ -1923,8 +1923,7 @@ - - +