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 7f9fb21b1ea6..4069eb144cff 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 431348b105d5..01456cd6583a 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..e7c995df990c 100644 --- a/components/mpas-ocean/driver/ocn_comp_mct.F +++ b/components/mpas-ocean/driver/ocn_comp_mct.F @@ -207,9 +207,8 @@ 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 :: filteredSSHGradientZonal, filteredSSHGradientMeridional 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, 'filteredSSHGradientZonal', filteredSSHGradientZonal) - call mpas_pool_get_array(forcingPool, 'filteredSSHGradientMeridional', filteredSSHGradientMeridional) - filteredSSHGradientZonal = avgSSHGradient(index_avgZonalSSHGradient, :) - filteredSSHGradientMeridional = avgSSHGradient(index_avgMeridionalSSHGradient, :) block_ptr => block_ptr % next end do endif @@ -889,10 +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 :: filteredSSHGradientZonal, filteredSSHGradientMeridional 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 +1096,13 @@ 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 block_ptr => block_ptr % next end do @@ -2545,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 @@ -2561,7 +2538,6 @@ subroutine ocn_export_mct(o2x_o, errorCode) !{{{ integer, dimension(:), pointer :: landIceMask real (kind=RKIND), dimension(:), pointer :: seaIceEnergy, accumulatedFrazilIceMass, frazilSurfacePressure, & - filteredSSHGradientZonal, filteredSSHGradientMeridional, & avgTotalFreshWaterTemperatureFlux, & avgCO2_gas_flux, DMSFlux, surfaceUpwardCO2Flux, & avgOceanSurfaceDIC, & @@ -2578,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 @@ -2625,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) @@ -2632,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, 'filteredSSHGradientZonal', filteredSSHGradientZonal) - call mpas_pool_get_array(forcingPool, 'filteredSSHGradientMeridional', filteredSSHGradientMeridional) + 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) @@ -2687,15 +2665,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) = filteredSSHGradientZonal(i) - o2x_o % rAttr(index_o2x_So_dhdy, n) = filteredSSHGradientMeridional(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 - 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 d41063e9cbab..f382455cf678 100644 --- a/components/mpas-ocean/src/Registry.xml +++ b/components/mpas-ocean/src/Registry.xml @@ -755,10 +755,6 @@ /> - - - + @@ -3679,14 +3674,6 @@ description="Time averaged meridional gradient of SSH" /> - -