From 41527dd33221e10952f9de0fdc30dcc22d4926c0 Mon Sep 17 00:00:00 2001 From: Ufuk Turuncoglu Date: Thu, 7 Nov 2024 22:59:45 -0600 Subject: [PATCH] skip land component for first time step --- physics/SFC_Models/Land/Noahmp/noahmpdrv.F90 | 6 ++++-- physics/SFC_Models/Land/Noahmp/noahmpdrv.meta | 7 +++++++ physics/SFC_Models/Land/sfc_land.F90 | 7 ++++--- physics/SFC_Models/Land/sfc_land.meta | 7 +++++++ 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/physics/SFC_Models/Land/Noahmp/noahmpdrv.F90 b/physics/SFC_Models/Land/Noahmp/noahmpdrv.F90 index 1313e9ff3..56b2706b8 100644 --- a/physics/SFC_Models/Land/Noahmp/noahmpdrv.F90 +++ b/physics/SFC_Models/Land/Noahmp/noahmpdrv.F90 @@ -127,7 +127,8 @@ end subroutine noahmpdrv_init subroutine noahmpdrv_run & !................................... ! --- inputs: - ( im, km, lsnowl, itime, ps, u1, v1, t1, q1, soiltyp,soilcol,& + ( im, km, lsnowl, itime, flag_init, ps, u1, v1, t1, q1, & + soiltyp,soilcol, & vegtype, sigmaf, dlwflx, dswsfc, snet, delt, tg3, cm, ch, & prsl1, prslk1, prslki, prsik1, zf,pblh, dry, wind, slopetyp,& shdmin, shdmax, snoalb, sfalb, flag_iter,con_g, & @@ -233,6 +234,7 @@ subroutine noahmpdrv_run & integer , intent(in) :: km ! vertical soil layer dimension integer , intent(in) :: lsnowl ! lower bound for snow level arrays integer , intent(in) :: itime ! NOT USED + logical , intent(in) :: flag_init ! flag signaling first time step real(kind=kind_phys), dimension(:) , intent(in) :: ps ! surface pressure [Pa] real(kind=kind_phys), dimension(:) , intent(in) :: u1 ! u-component of wind [m/s] real(kind=kind_phys), dimension(:) , intent(in) :: v1 ! u-component of wind [m/s] @@ -693,7 +695,7 @@ subroutine noahmpdrv_run & ! ! --- Just return if external land component is activated for two-way interaction ! - if (cpllnd .and. cpllnd2atm) return + if (cpllnd .and. cpllnd2atm .and. (.not. flag_init)) return do i = 1, im diff --git a/physics/SFC_Models/Land/Noahmp/noahmpdrv.meta b/physics/SFC_Models/Land/Noahmp/noahmpdrv.meta index 753550016..75bd4d7e1 100644 --- a/physics/SFC_Models/Land/Noahmp/noahmpdrv.meta +++ b/physics/SFC_Models/Land/Noahmp/noahmpdrv.meta @@ -129,6 +129,13 @@ dimensions = () type = integer intent = in +[flag_init] + standard_name = flag_for_first_timestep + long_name = flag signaling first time step for time integration loop + units = flag + dimensions = () + type = logical + intent = in [ps] standard_name = surface_air_pressure long_name = surface pressure diff --git a/physics/SFC_Models/Land/sfc_land.F90 b/physics/SFC_Models/Land/sfc_land.F90 index a85e8b787..36bdcdc09 100644 --- a/physics/SFC_Models/Land/sfc_land.F90 +++ b/physics/SFC_Models/Land/sfc_land.F90 @@ -28,8 +28,8 @@ module sfc_land !! \section general General Algorithm !! \section detailed Detailed Algorithm !! @{ - subroutine sfc_land_run(im, cpllnd, cpllnd2atm, flag_iter, dry, & - sncovr1_lnd, qsurf_lnd, evap_lnd, hflx_lnd, & + subroutine sfc_land_run(im, flag_init, cpllnd, cpllnd2atm, & + flag_iter, dry, sncovr1_lnd, qsurf_lnd, evap_lnd, hflx_lnd, & ep_lnd, t2mmp_lnd, q2mp_lnd, gflux_lnd, & runoff_lnd, drain_lnd, cmm_lnd, chh_lnd, zvfun_lnd, & sncovr1, qsurf, evap, hflx, ep, t2mmp, q2mp, & @@ -40,6 +40,7 @@ subroutine sfc_land_run(im, cpllnd, cpllnd2atm, flag_iter, dry, & ! Inputs integer , intent(in) :: im + logical , intent(in) :: flag_init logical , intent(in) :: cpllnd logical , intent(in) :: cpllnd2atm logical , intent(in) :: flag_iter(:) @@ -83,7 +84,7 @@ subroutine sfc_land_run(im, cpllnd, cpllnd2atm, flag_iter, dry, & errflg = 0 ! Check coupling from component land to atmosphere - if (.not. cpllnd2atm) return + if (flag_init .or. (.not. cpllnd2atm)) return ! Fill variables do i = 1, im diff --git a/physics/SFC_Models/Land/sfc_land.meta b/physics/SFC_Models/Land/sfc_land.meta index 15790145e..84c4ccdce 100644 --- a/physics/SFC_Models/Land/sfc_land.meta +++ b/physics/SFC_Models/Land/sfc_land.meta @@ -14,6 +14,13 @@ dimensions = () type = integer intent = in +[flag_init] + standard_name = flag_for_first_timestep + long_name = flag signaling first time step for time integration loop + units = flag + dimensions = () + type = logical + intent = in [cpllnd] standard_name = flag_for_land_coupling long_name = flag controlling cpllnd collection (default off)