From 8284bf75f03a81af0e943c370477e4a0ef06b584 Mon Sep 17 00:00:00 2001 From: Laurie Carson Date: Wed, 13 Dec 2017 13:16:04 -0700 Subject: [PATCH] Physics Separator Merge Step1 (#22) From Chris Harrop, https://github.com/christopherwharrop/gmtb-gfsphysics branch: harrop_gfs merged with master, bit-for-bit match with baseline. * Enclose contents of sfc_nst.f in a module. Replace sfc_nst with sfc_nst_run. Add empty sfc_nst_init and sfc_nst_finalize. Add parseable table of sfc_nst argument descriptions. Split nstf_name argument into: nstf_name1, nstf_name4, nstf_name5. Modify call to sfc_nst in GFS_physics_driver.F90 to call sfc_nst_run. --- GFS_layer/GFS_physics_driver.F90 | 84 +++--- physics/docs/img/NSST.png | Bin 0 -> 88778 bytes physics/docs/library.bib | 18 ++ physics/sfc_nst.f | 422 ++++++++++++++++++++++++++++--- 4 files changed, 439 insertions(+), 85 deletions(-) create mode 100644 physics/docs/img/NSST.png diff --git a/GFS_layer/GFS_physics_driver.F90 b/GFS_layer/GFS_physics_driver.F90 index 9b92e4764..2b14a7cd1 100644 --- a/GFS_layer/GFS_physics_driver.F90 +++ b/GFS_layer/GFS_physics_driver.F90 @@ -9,7 +9,9 @@ module module_physics_driver use ozne_def, only: levozp, oz_coeff, oz_pres use h2o_def, only: levh2o, h2o_coeff, h2o_pres use gfs_fv3_needs, only: get_prs_fv3, get_phi_fv3 - use module_nst_water_prop, only: get_dtzm_2d + use sfc_nst, only: sfc_nst_run + use sfc_nst_pre, only: sfc_nst_pre_run + use sfc_nst_post, only: sfc_nst_post_run use GFS_typedefs, only: GFS_statein_type, GFS_stateout_type, & GFS_sfcprop_type, GFS_coupling_type, & GFS_control_type, GFS_grid_type, & @@ -885,59 +887,41 @@ subroutine GFS_physics_driver & if (Model%nstf_name(1) > 0) then - do i = 1, im - if ( islmsk(i) == 0 ) then - tem = (Sfcprop%oro(i)-Sfcprop%oro_uf(i)) * rlapse - tseal(i) = Sfcprop%tsfc(i) + tem - tsurf(i) = tsurf(i) + tem - endif - enddo - - call sfc_nst (im, Model%lsoil, Statein%pgr, Statein%ugrs, & - Statein%vgrs, Statein%tgrs, Statein%qgrs, & - Sfcprop%tref, cd, cdq, Statein%prsl(1,1), work3, & - islmsk, Grid%xlon, Grid%sinlat, stress, & - Radtend%semis, gabsbdlw, adjsfcnsw, Sfcprop%tprcp, & - dtf, kdt, Model%solhr, xcosz, & - Tbd%phy_f2d(1,Model%num_p2d), flag_iter, & - flag_guess, Model%nstf_name, lprnt, ipr, & + call sfc_nst_pre_run(im, islmsk, Sfcprop%oro, Sfcprop%oro_uf, & + Sfcprop%tsfc, & ! --- Input/output - tseal, tsurf, Sfcprop%xt, Sfcprop%xs, Sfcprop%xu, & - Sfcprop%xv, Sfcprop%xz, Sfcprop%zm, Sfcprop%xtts, & - Sfcprop%xzts, Sfcprop%dt_cool, Sfcprop%z_c, & - Sfcprop%c_0, Sfcprop%c_d, Sfcprop%w_0, Sfcprop%w_d,& - Sfcprop%d_conv, Sfcprop%ifd, Sfcprop%qrain, & + tsurf, & ! --- outputs: - qss, gflx, Diag%cmm, Diag%chh, evap, hflx, ep1d) - -! if (lprnt) print *,' tseaz2=',tseal(ipr),' tref=',tref(ipr), -! & ' dt_cool=',dt_cool(ipr),' dt_warm=',2.0*xt(ipr)/xz(ipr), -! & ' kdt=',kdt - - do i = 1, im - if ( islmsk(i) == 0 ) then - tsurf(i) = tsurf(i) - (Sfcprop%oro(i)-Sfcprop%oro_uf(i)) * rlapse - endif - enddo + tseal) + + call sfc_nst_run (im, Model%lsoil, Statein%pgr, Statein%ugrs(:,1), & + Statein%vgrs(:,1), Statein%tgrs(:,1), & + Statein%qgrs(:,1,1), Sfcprop%tref, cd, cdq, & + Statein%prsl(:,1), work3, islmsk, Grid%xlon, & + Grid%sinlat, stress, Radtend%semis, gabsbdlw, & + adjsfcnsw, Sfcprop%tprcp, dtf, kdt, Model%solhr, & + xcosz, Tbd%phy_f2d(:,Model%num_p2d), flag_iter, & + flag_guess, Model%nstf_name(1), Model%nstf_name(4),& + Model%nstf_name(5), lprnt, ipr, & +! --- Input/output + tseal, tsurf, Sfcprop%xt, Sfcprop%xs, Sfcprop%xu, & + Sfcprop%xv, Sfcprop%xz, Sfcprop%zm, Sfcprop%xtts, & + Sfcprop%xzts, Sfcprop%dt_cool, Sfcprop%z_c, & + Sfcprop%c_0, Sfcprop%c_d, Sfcprop%w_0, Sfcprop%w_d,& + Sfcprop%d_conv, Sfcprop%ifd, Sfcprop%qrain, & +! --- outputs: + qss, gflx, Diag%cmm, Diag%chh, evap, hflx, ep1d) -! --- ... run nsst model ... --- - if (Model%nstf_name(1) > 1) then - zsea1 = 0.001*real(Model%nstf_name(4)) - zsea2 = 0.001*real(Model%nstf_name(5)) - call get_dtzm_2d (Sfcprop%xt, Sfcprop%xz, Sfcprop%dt_cool, & - Sfcprop%z_c, Sfcprop%slmsk, zsea1, zsea2, & - im, 1, dtzm) - do i = 1, im - if ( islmsk(i) == 0 ) then - Sfcprop%tsfc(i) = max(271.2,Sfcprop%tref(i) + dtzm(i)) - & - (Sfcprop%oro(i)-Sfcprop%oro_uf(i))*rlapse - endif - enddo - endif - -! if (lprnt) print *,' tseaz2=',tsea(ipr),' tref=',tref(ipr), & -! & ' dt_cool=',dt_cool(ipr),' dt_warm=',dt_warm(ipr),' kdt=',kdt + call sfc_nst_post_run(im, islmsk, Sfcprop%oro, Sfcprop%oro_uf, & + Model%nstf_name(1), Model%nstf_name(4), & + Model%nstf_name(5), Sfcprop%xt, Sfcprop%xz, & + Sfcprop%dt_cool, Sfcprop%z_c, Sfcprop%slmsk, & + Sfcprop%tref, Grid%xlon, & +! --- Input/output + tsurf, & +! --- outputs: + dtzm, Sfcprop%tsfc) else diff --git a/physics/docs/img/NSST.png b/physics/docs/img/NSST.png new file mode 100644 index 0000000000000000000000000000000000000000..60c62eaaff16971df3ed06369ab9130263680de0 GIT binary patch literal 88778 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%0D<06haOKL`+{iYrAVf3orsxju56Pu zBuznN(``&iLG}ev+&iD}h)jZPT{DVHBe!)kM#jX}r$6>~Cyrgr+XUI)aXw}|Om@>o z^5Gbg+lQlX|5meGLq~7gu^wun9@+Nk`+~?0LE|5OLF3<^LI|~Rmpq{75P2&Ky=}s& z^n2h=Z2pd;dW&?N%!YO3BMG$1-q^}LWVhC#mXx9R{m3o{ms_4fu*yf*auTJ&TVHCT=s@FMga z`Pyv=9n`976sHX%(o_gO)sa4Z9Xh*RE+%@zZp!0O&>QO81jXw>4yJ+LY{hJ8m4k%r zuokGT`Yf#I-bT*4!@i9e4t+WY-iIrX8TyZ6rQ_0nVw17tvLruxi`YBwk*#mGI*KeKyFIAEGCb3c#CyP~?w|Vo zuc2p%KKlrvxi29UKY=;t5q)3r&qStRE`qFcxR;#U-1pTp`VaCyu`mUUhIMTF)z682ypD?79;5u|344~1$P>Eza_S$POX;uvNW~A1 z+pA-6_Val(KKwXx?*pkg<5-$*y9#B@DU=^KW$zWLNDKK*%h>jti^Big8O)|_Bwl%r z8-?nr>*+L+#PJCm#a>k5UPKsc<6kc!-qrC zD=bpq>v=Iw%HQks=Hu~zUuzDEc}(Koxnh=C-g_~S*G;=U^&^_fK4h}&|DL?XtZx6z z*7Xx>{+i}2c3=FntNW5twS%7HtGUw+liA+QR1d29(WqN5w36f5wDTvgalP(Zsua&1 z8#UwDVR4v(?GO#3VuDSh)X>{i5Zjj}D#g0B-r{ogVMRpe(o)1!6VnnhISFew8)lrdLT%&OE zW3uNS^XbQmr3-syde(ToSQr&FU(Z3(Xzr)S=>gZbOfOw|V!QCd$#W_s&U(L7FZrrp zu-{NJx{_g{_vFaEQ{FsF`;$J$ea#`iMccmF13Pem8oIi!f%|3)HttS2_51t&|8s$N zR`Q4H%54zS3<9QDrC8Ouew%@p%xGzAf2`Pd&il!K?}@2rTqO1yw#ck-;oY&jX8EF- zU5U?BuL#-CNV^{Qt4**b!7!!3LzgF z8X9kV@W0cpEtlp1ql}r2M`PX$s1xrxOjhY4J`dg`M?TY!NC7jW%*6WYan8CgI?b5ppco=-Q#WT?!E zxTRPO`_I0=t@yC)yr-QE3=FCzt`Q|Ei6yC4$wjF^iowXh&|KHhP}k5j#K_Rfz|zXt pSlhtB%D_NB;CTd!hTQy=%(P0}8sd24p8z#5c)I$ztaD0e0sxJ?;C=uA literal 0 HcmV?d00001 diff --git a/physics/docs/library.bib b/physics/docs/library.bib index 991b7d21b..113ad6dd6 100644 --- a/physics/docs/library.bib +++ b/physics/docs/library.bib @@ -59,6 +59,24 @@ @article{king_and_harshvardhan_1986 Volume = {43}, Year = {1986}} +@url{Li_2015, + Author = {Xu Li}, + Title = {The development of the NSST within the NCEP GFS/CFS}, + Url = {http://cpo.noaa.gov/sites/cpo/MAPP/workshops/rtf_technical_ws/presentations/21_Xu_Li.pdf}} + +@url{Li_Derber_2009, + Author = {Xu Li and John Derber}, + Title = {Near Sea Surface Temperatures (NSST) Analysis in NCEP GFS}, + Url = {https://www.jcsda.noaa.gov/documents/meetings/wkshp2008/4/JCSDA_2008_Li.pdf}} + +@article{Fairall_all_1996, + Author = {C. W. Fairall and E. F. Bradley and J. S. Godfrey and G. A. Wick and J. B. Edson and G. S. Young}, + Journal = {J. Geophys. Res.}, + Pages = {1295-1308}, + Title = {Cool-skin and warm-layer effects on sea surface temperature}, + Volume = {101(C1)}, + Year = {1996}} + @url{key_2002, Address = {Madison, Wisconsin}, Author = {J.R. Key}, diff --git a/physics/sfc_nst.f b/physics/sfc_nst.f index f36df0285..526de4263 100644 --- a/physics/sfc_nst.f +++ b/physics/sfc_nst.f @@ -1,33 +1,143 @@ !> \file sfc_nst.f !! This file contains the GFS NSST model. + module sfc_nst + + contains + !> \defgroup GFS_NSST GFS Near Sea Surface Temperature !! @{ -!! \brief Brief description of the parameterization -!! \section diagram Calling Hierarchy Diagram -!! \section intraphysics Intraphysics Communication +!! \brief Near Sea Surface Temperature (NSST) is a temperature profile just below the sea surface. The GFS NSST scheme is used to forecast the NSST for two main purposes: supply SSTs to the atmospheric model for the calculation of air-sea heat and moisture fluxes and providing a sub-layer temperature profile forecast for use as a first guess in the Gridpoint Statistical Interpolator (GSI) data assimilation code. +!! +!! The GFS NSST scheme was initially developed at NCEP by Xu Li in 2007, and subsequently received contributions by S. Moorthi, Y.-T. Hu and J. Derber, leading to operational implementation in the GFS in 2017 (Li 2015 \cite Li_2015, and Li and Derber 2009 \cite Li_Derber_2009). The GFS NSST scheme predicts the vertical profile of sea temperature between the surface and a reference level (zr), which is on the order of 5 m. Only two physical process are considered in this scheme: diurnal thermocline layer warming and thermal skin layer (also known as sub-layer) cooling. All other process that could influence NSST are ignored in this simple scheme. +!! +!!This profile is a composed by subdividing the near-surface layer in three parts +!! +!!T(z) = Tr + T’w (z) + T’c (z), +!! +!!where +!!Ts = T(z=0) is the SST +!!T’c (z) is the temperature profile in the skin layer (0 < z <= zc) +!!T’w (z) is the temperature profile in the warm layer (0 < z <= zr) +!!Tr is the reference temperature +!!zc is the depth of the skin layer +!! +!!Prediction for the skin layer is made using the Thermal Skin-layer Model (TSM), while prediction for the thermocline is based on the Diurnal Thermocline Model (DTM), both with an origin on Fairall et al. (1996) \cite Fairall_all_1996. Atmospheric inputs include short- and long-wave radiation, surface pressure, surface layer winds, temperature and specific humidity, and rainfall. +!! +!! \htmlonly +!! \endhtmlonly +!! @image html NSST.png "Figure 1: NSST profile." +!! +!! \section intraphysics Intraphysics Communication +!! +!! This space is reserved for a description of how this scheme uses information from other scheme types and/or how information calculated in this scheme is used in other scheme types. -!> \brief Brief description of the subroutine +!> \brief This subroutine is empty since there are no procedures that need to be done to initialize the GFS NSST code. +!! +!! This subroutine is empty since there are no procedures that need to be done to initialize the GFS NSST code. !! -!! \section arg_table_NSST_run Arguments -!! | local var name | longname | description | units | rank | type | kind | intent | optional | -!! |----------------|-------------------------------------------------------|------------------------------------|---------|------|---------|-----------|--------|----------| -!! | im | horizontal_loop_extent | horizontal loop extent, start at 1 | index | 0 | integer | | in | F | +!! \section arg_table_sfc_nst_init Argument Table !! -!! \section general General Algorithm -!! \section detailed Detailed Algorithm -!! @{ - subroutine sfc_nst & + subroutine sfc_nst_init + + end + +!> \brief This subroutine is empty since there are no procedures that need to be done to finalize the GFS NSST code. +!! +!! This subroutine is empty since there are no procedures that need to be done to finalize the GFS NSST code. +!! +!! \section arg_table_sfc_nst_finalize Argument Table +!! + subroutine sfc_nst_finalize + + end + +!> \brief This subroutine calls the Thermal Skin-layer and Diurnal Thermocline models to update the NSST profile. +!! +!! This subroutine calls the Thermal Skin-layer and Diurnal Thermocline models to update the NSST profile. +!! +!!\section arg_table_sfc_nst_run Argument Table +!!| local var name | longname | description | units | rank | type | kind | intent | optional | +!!|----------------|------------------------------------------------------------------------------|----------------------------------------------- |---------------|------|---------|-----------|--------|----------| +!!| im | horizontal_loop_extent | horizontal loop extent, start at 1 | index | 0 | integer | | in | F | +!!| km | soil_vertical_dimension | vertical layer dimension | index | 0 | integer | | in | F | +!!| ps | surface_air_pressure | surface pressure | Pa | 1 | real | kind_phys | in | F | +!!| u1 | x_wind_at_lowest_model_layer | x component of surface layer wind | m s-1 | 1 | real | kind_phys | in | F | +!!| v1 | y_wind_at_lowest_model_layer | y component of surface layer wind | m s-1 | 1 | real | kind_phys | in | F | +!!| t1 | air_temperature_at_lowest_model_layer | surface layer mean temperature | K | 1 | real | kind_phys | in | F | +!!| q1 | specific_humidity_at_lowest_model_layer | surface layer mean specific humidity | kg kg-1 | 1 | real | kind_phys | in | F | +!!| tref | sea_surface_foundation_temperature | reference/foundation temperature | K | 1 | real | kind_phys | in | F | +!!| cm | surface_drag_coefficient_for_momentum_in_air | surface exchange coeff for momentum | none | 1 | real | kind_phys | in | F | +!!| ch | surface_drag_coefficient_for_heat_and_moisture_in_air | surface exchange coeff heat & moisture | none | 1 | real | kind_phys | in | F | +!!| prsl1 | air_pressure_at_lowest_model_layer | surface layer mean pressure | Pa | 1 | real | kind_phys | in | F | +!!| prslki | ratio_of_exner_function_between_midlayer_and_interface_at_lowest_model_layer | Exner function at 1st layer | ratio | 1 | real | kind_phys | in | F | +!!| islimsk | sea_land_ice_mask | landmask: sea/land/ice=0/1/2 | flag | 1 | integer | | in | F | +!!| xlon | longitude | longitude | radians | 1 | real | kind_phys | in | F | +!!| sinlat | sine_of_latitude | sin of latitude | none | 1 | real | kind_phys | in | F | +!!| stress | surface_wind_stress | wind stress | m2 s-2 | 1 | real | kind_phys | in | F | +!!| sfcemis | surface_longwave_emissivity | surface longwave emissivity | frac | 1 | real | kind_phys | in | F | +!!| dlwflx | surface_downwelling_longwave_flux | total sky surface downward longwave flux | W m-2 | 1 | real | kind_phys | in | F | +!!| sfcnsw | surface_net_downward_shortwave_flux | total sky sfc netsw flx into ocean | W m-2 | 1 | real | kind_phys | in | F | +!!| rain | precipitation_amount_in_one_dynamics_time_step | rainfall rate | kg m-2 s-1 | 1 | real | kind_phys | in | F | +!!| timestep | time_step_for_dynamics | timestep interval | s | 0 | real | kind_phys | in | F | +!!| kdt | index_of_time_step | time step counter | count | 0 | integer | | in | F | +!!| solhr | forecast_hour | fcst hour at the end of prev time step | none | 0 | real | kind_phys | in | F | +!!| xcosz | instantaneous_cosine_of_zenith_angle | cosine of solar zenith angle | none | 1 | real | kind_phys | in | F | +!!| ddvel | surface_wind_enhancement_due_to_convection | wind enhancement due to convection | m s-1 | 1 | real | kind_phys | in | F | +!!| flag_iter | flag_for_iteration | flag for iteration | flag | 1 | logical | | in | F | +!!| flag_guess | flag_for_guess_run | flag for guess run | flag | 1 | logical | | in | F | +!!| nstf_name1 | flag_for_nsstm_run | NSSTM flag: off/uncoupled/coupled=0/1/2 | flag | 1 | integer | | in | F | +!!| nstf_name4 | vertical_temperature_average_range_lower_bound | zsea1 | mm | 1 | integer | | in | F | +!!| nstf_name5 | vertical_temperature_average_range_upper_bound | zsea2 | mm | 1 | integer | | in | F | +!!| lprnt | flag_print | flag for printing diagnostics to output | flag | 0 | logical | | in | F | +!!| ipr | horizontal_index_of_printed_column | horizontal index of printed column | index | 0 | integer | | in | F | +!!| tskin | surface_skin_temperature | ocean surface skin temperature | K | 1 | real | kind_phys | inout | F | +!!| tsurf | surface_skin_temperature_after_iteration | ocean surface skin temperature for guess run | K | 1 | real | kind_phys | inout | F | +!!| xt | diurnal thermocline layer_heat_content | heat content in diurnal thermocline layer | K m | 1 | real | kind_phys | inout | F | +!!| xs | sea_water_salinity | salinity content in diurnal thermocline layer | ppt m | 1 | real | kind_phys | inout | F | +!!| xu | diurnal_thermocline_layer_x_current | u-current content in diurnal thermocline layer | m2 s-1 | 1 | real | kind_phys | inout | F | +!!| xv | diurnal_thermocline_layer_y_current | v-current content in diurnal thermocline layer | m2 s-1 | 1 | real | kind_phys | inout | F | +!!| xz | diurnal_thermocline_layer_thickness | diurnal thermocline layer thickness | m | 1 | real | kind_phys | inout | F | +!!| zm | ocean_mixed_layer_thickness | mixed layer thickness | m | 1 | real | kind_phys | inout | F | +!!| xtts | sensitivity_of_dtl_heat_content_to_surface_temperature | d(xt)/d(ts) | m | 1 | real | kind_phys | inout | F | +!!| xzts | sensitivity_of_dtl_thickness_to_surface_temperature | d(xz)/d(ts) | m K-1 | 1 | real | kind_phys | inout | F | +!!| dt_cool | sub-layer_cooling_amount | sub-layer cooling amount | K | 1 | real | kind_phys | inout | F | +!!| z_c | sub-layer_cooling_thickness | sub-layer cooling thickness | m | 1 | real | kind_phys | inout | F | +!!| c_0 | coefficient_c_0 | coefficient1 to calculate d(tz)/d(ts) | none | 1 | real | kind_phys | inout | F | +!!| c_d | coefficient_c_d | coefficient2 to calculate d(tz)/d(ts) | none | 1 | real | kind_phys | inout | F | +!!| w_0 | coefficient_w_0 | coefficient3 to calculate d(tz)/d(ts) | none | 1 | real | kind_phys | inout | F | +!!| w_d | coefficient_w_d | coefficient4 to calculate d(tz)/d(ts) | none | 1 | real | kind_phys | inout | F | +!!| d_conv | free_convection_layer_thickness | thickness of free convection layer | m | 1 | real | kind_phys | inout | F | +!!| ifd | index_of_dtlm_start | index to start dtlm run or not | index | 1 | real | kind_phys | inout | F | +!!| qrain | sensible_heat_flux_due_to_rainfall | sensible heat flux due to rainfall | W | 1 | real | kind_phys | inout | F | +!!| qsurf | surface_specific_humidity | surface air saturation specific humidity | kg kg-1 | 1 | real | kind_phys | out | F | +!!| gflux | upward_heat_flux_in_soil | soil heat flux | W m-2 | 1 | real | kind_phys | out | F | +!!| cmm | surface_drag_wind_speed_for_momentum_in_air | surf mom exch coef time mean surf wind | m s-1 | 1 | real | kind_phys | out | F | +!!| chh | surface_drag_mass_flux_for_heat_and_moisture_in_air | surf h&m exch coef time surf wind & density | kg m-2 s-1 | 1 | real | kind_phys | out | F | +!!| evap | kinematic_surface_upward_latent_heat_flux | kinematic from latent heat flux | kg kg-1 m s-1 | 1 | real | kind_phys | out | F | +!!| hflx | kinematic_surface_upward_sensible_heat_flux | kinematic sensible heat flux | K m s-1 | 1 | real | kind_phys | out | F | +!!| ep | surface_upward_potential_latent_heat_flux | potential evaporation | W m-2 | 1 | real | kind_phys | out | F | +!! +!! \section NSST_general_algorithm General Algorithm +!! +!! This is the main subroutine for the NSST scheme, and it calls the DTM and TSM. +!! +!! \section NSST_detailed_algorithm +!! +!! Under construction +!! +!! @{ + subroutine sfc_nst_run & & ( im, km, ps, u1, v1, t1, q1, tref, cm, ch, & & prsl1, prslki, islimsk, xlon, sinlat, stress, & & sfcemis, dlwflx, sfcnsw, rain, timestep, kdt, solhr,xcosz, & - & ddvel, flag_iter, flag_guess, nstf_name, & - & lprnt, ipr, & ! inputs from here and above + & ddvel, flag_iter, flag_guess, nstf_name1, nstf_name4, & + & nstf_name5, lprnt, ipr, & ! inputs from here and above & tskin, tsurf, xt, xs, xu, xv, xz, zm, xtts, xzts, dt_cool, & & z_c, c_0, c_d, w_0, w_d, d_conv, ifd, qrain, & ! in/outs from here and above & qsurf, gflux, cmm, chh, evap, hflx, ep & ! outputs & ) -! + ! ===================================================================== ! ! description: ! ! ! @@ -39,8 +149,8 @@ subroutine sfc_nst & ! ( im, km, ps, u1, v1, t1, q1, tref, cm, ch, ! ! prsl1, prslki, islimsk, xlon, sinlat, stress, ! ! sfcemis, dlwflx, sfcnsw, rain, timestep, kdt,solhr,xcosz, ! -! ddvel, flag_iter, flag_guess, nstf_name, ! -! lprnt, ipr, ! +! ddvel, flag_iter, flag_guess, nstf_name1, nstf_name4, ! +! nstf_name5, lprnt, ipr, ! ! input/outputs: ! ! tskin, tsurf, xt, xs, xu, xv, xz, zm, xtts, xzts, dt_cool, ! ! z_c, c_0, c_d, w_0, w_d, d_conv, ifd, qrain, ! @@ -98,20 +208,16 @@ subroutine sfc_nst & ! flag_iter- logical, execution or not im ! ! when iter = 1, flag_iter = .true. for all grids im ! ! when iter = 2, flag_iter = .true. when wind < 2 im ! -! for both land and ocean (when nstf_name(1) > 0) im ! +! for both land and ocean (when nstf_name1 > 0) im ! ! flag_guess-logical, .true.= guess step to get CD et al im ! ! when iter = 1, flag_guess = .true. when wind < 2 im ! ! when iter = 2, flag_guess = .false. for all grids im ! -! nstf_name -integer array, NSST related flag parameters 1 ! -! nstf_name(1) : 0 = NSSTM off 1 ! -! 1 = NSSTM on but uncoupled 1 ! -! 2 = NSSTM on and coupled 1 ! -! nstf_name(2) : 1 = NSSTM spin up on 1 ! -! 0 = NSSTM spin up off 1 ! -! nstf_name(3) : 1 = NSST analysis on 1 ! -! 0 = NSSTM analysis off 1 ! -! nstf_name(4) : zsea1 in mm 1 ! -! nstf_name(5) : zsea2 in mm 1 ! +! nstf_name - integers , NSST related flag parameters 1 ! +! nstf_name1 : 0 = NSSTM off 1 ! +! 1 = NSSTM on but uncoupled 1 ! +! 2 = NSSTM on and coupled 1 ! +! nstf_name4 : zsea1 in mm 1 ! +! nstf_name5 : zsea2 in mm 1 ! ! lprnt - logical, control flag for check print out 1 ! ! ipr - integer, grid index for check print out 1 ! ! ! @@ -178,7 +284,8 @@ subroutine sfc_nst & ! --- inputs: - integer, intent(in) :: im, km, kdt, ipr,nstf_name(5) + integer, intent(in) :: im, km, kdt, ipr, nstf_name1, nstf_name4, & + & nstf_name5 real (kind=kind_phys), dimension(im), intent(in) :: ps, u1, v1, & & t1, q1, tref, cm, ch, prsl1, prslki, xlon,xcosz, & & sinlat, stress, sfcemis, dlwflx, sfcnsw, rain, ddvel @@ -307,8 +414,9 @@ subroutine sfc_nst & ! run nst model: dtm + slm ! - zsea1 = 0.001*real(nstf_name(4)) - zsea2 = 0.001*real(nstf_name(5)) + zsea1 = 0.001*real(nstf_name4) + zsea2 = 0.001*real(nstf_name5) + do i = 1, im if ( flag(i) ) then tsea = tsurf(i) @@ -546,16 +654,16 @@ subroutine sfc_nst & ! update tskin when coupled and not guess run ! (all other NSST variables have been updated in this case) ! - if ( nstf_name(1) > 1 ) then + if ( nstf_name1 > 1 ) then tskin(i) = tsurf(i) - endif ! if ( nstf_name(1) > 1 then + endif ! if ( nstf_name1 > 1 then endif ! if(flag_guess(i)) then endif ! if((islimsk(i).eq. 0.) ) then enddo ! if (lprnt .and. i == ipr) print *,' beg xz8=',xz(i) - if ( nstf_name(1) > 1 ) then + if ( nstf_name1 > 1 ) then ! --- ... latent and sensible heat flux over open water with updated tskin ! for the grids of open water and the iteration is on do i = 1, im @@ -567,7 +675,7 @@ subroutine sfc_nst & hflx(i) = rch(i) * (tskin(i) - theta1(i)) endif enddo - endif ! if ( nstf_name(1) > 1 ) then + endif ! if ( nstf_name1 > 1 ) then ! do i=1,im @@ -583,3 +691,247 @@ subroutine sfc_nst & return end !> @} +!! @} + end module + + + + module sfc_nst_pre + + contains + +!> \defgroup GFS_NSST_PRE GFS Near Sea Surface Temperature Pre +!! @{ +!! \brief Brief description of the parameterization +!! +!! Blah blah blah description of parameterization +!! +!! \section diagram Calling Hierarchy Diagram +!! +!! Blah blah blah diagram +!! +!! \section intraphysics Intraphysics Communication +!! +!! The NSST scheme is one of the three schemes used to represent the +!! surface in the GFS physics suite. The other two are the Noah land +!! surface model and the sice simplified ice model. +!! +!> \brief Brief description of the subroutine +!! +!! Blah blah description of subroutine +!! +!! \section arg_table_sfc_nst_init Argument Table +!! + subroutine sfc_nst_pre_init + + end + +!> \brief Brief description of the subroutine +!! +!! Blah blah description of subroutine +!! +!! \section arg_table_sfc_nst_finalize Argument Table +!! + subroutine sfc_nst_pre_finalize + + end + +!> \brief Brief description of the subroutine +!! +!! Blah blah description of subroutine +!! +!!\section arg_table_sfc_nst_pre_run Argument Table +!!| local var name | longname | description | units | rank | type | kind | intent | optional | +!!|----------------|------------------------------------------------------------------------------|----------------------------------------------- |---------------|------|---------|-----------|--------|----------| +!!| im | horizontal_loop_extent | horizontal loop extent, start at 1 | index | 0 | integer | | in | F | +!!| islimsk | sea_land_ice_mask | landmask: sea/land/ice=0/1/2 | flag | 1 | integer | | in | F | +!!| oro | orography | orography | | 1 | real | kind_phys | in | F | +!!| oro_uf | orography_unfiltered | unfiltered orographyo | | 1 | real | kind_phys | in | F | +!!| tsfc | surface_skin_temperature | ocean surface skin temperature | K | 1 | real | kind_phys | in | F | +!!| tsurf | surface_skin_temperature_after_iteration | ocean surface skin temperature for guess run | K | 1 | real | kind_phys | inout | F | +!!| tskin | surface_skin_temperature | ocean surface skin temperature | K | 1 | real | kind_phys | out | F | +!! +!! \section NSST_general_algorithm General Algorithm +!! +!! Blah blah general algorithm +!! +!! \section NSST_detailed_algorithm Detailed Algorithm +!! @{ + subroutine sfc_nst_pre_run & + & ( im, islimsk, oro, oro_uf, tsfc, tsurf, tskin ) + + use machine , only : kind_phys + use physcons, only: rlapse + + implicit none + +! --- inputs: + integer, intent(in) :: im + integer, dimension(im), intent(in) :: islimsk + real (kind=kind_phys), dimension(im), intent(in) :: oro, oro_uf + real (kind=kind_phys), dimension(im), intent(in) :: tsfc + +! --- input/outputs: + real (kind=kind_phys), dimension(im), intent(inout) :: tsurf + +! --- outputs: + real (kind=kind_phys), dimension(im), intent(out) :: tskin + +! --- locals + integer :: i + real(kind=kind_phys) :: tem + + do i = 1, im + if ( islimsk(i) == 0 ) then + tem = (oro(i)-oro_uf(i)) * rlapse + tskin(i) = tsfc(i) + tem + tsurf(i) = tsurf(i) + tem + endif + enddo + + return + end + +!> @} +!! @} + end module + + + + + module sfc_nst_post + + contains + +!> \defgroup GFS_NSST_POST GFS Near Sea Surface Temperature Post +!! @{ +!! \brief Brief description of the parameterization +!! +!! Blah blah blah description of parameterization +!! +!! \section diagram Calling Hierarchy Diagram +!! +!! Blah blah blah diagram +!! +!! \section intraphysics Intraphysics Communication +!! +!! Blah blah blah intraphysics communication + +!> \brief Brief description of the subroutine +!! +!! Blah blah description of subroutine +!! +!! \section arg_table_sfc_nst_init Argument Table +!! + subroutine sfc_nst_post_init + + end + +!> \brief Brief description of the subroutine +!! +!! Blah blah description of subroutine +!! +!! \section arg_table_sfc_nst_finalize Argument Table +!! + subroutine sfc_nst_post_finalize + + end + +!> \brief Brief description of the subroutine +!! +!! Blah blah description of subroutine +!! +!!\section arg_table_sfc_nst_post_run Argument Table +!!| local var name | longname | description | units | rank | type | kind | intent | optional | +!!|----------------|------------------------------------------------------------------------------|----------------------------------------------- |---------------|------|---------|-----------|--------|----------| +!!| im | horizontal_loop_extent | horizontal loop extent, start at 1 | index | 0 | integer | | in | F | +!!| islimsk | sea_land_ice_mask | landmask: sea/land/ice=0/1/2 | flag | 1 | integer | | in | F | +!!| oro | orography | orography | | 1 | real | kind_phys | in | F | +!!| oro_uf | orography_unfiltered | unfiltered orographyo | | 1 | real | kind_phys | in | F | +!!| nstf_name1 | flag_for_nsstm_run | NSSTM flag: off/uncoupled/coupled=0/1/2 | flag | 1 | integer | | in | F | +!!| nstf_name4 | vertical_temperature_average_range_lower_bound | zsea1 | mm | 1 | integer | | in | F | +!!| nstf_name5 | vertical_temperature_average_range_upper_bound | zsea2 | mm | 1 | integer | | in | F | +!!| xt | diurnal thermocline layer_heat_content | heat content in diurnal thermocline layer | K m | 1 | real | kind_phys | in | F | +!!| xz | diurnal_thermocline_layer_thickness | diurnal thermocline layer thickness | m | 1 | real | kind_phys | in | F | +!!| dt_cool | sub-layer_cooling_amount | sub-layer cooling amount | K | 1 | real | kind_phys | in | F | +!!| z_c | sub-layer_cooling_thickness | sub-layer cooling thickness | m | 1 | real | kind_phys | in | F | +!!| rslimsk | sea_land_ice_mask_real | landmask: sea/land/ice=0/1/2 | flag | 1 | real | kind_phys | in | F | +!!| tref | sea_surface_foundation_temperature | reference/foundation temperature | K | 1 | real | kind_phys | in | F | +!!| xlon | longitude | longitude | radians | 1 | real | kind_phys | in | F | +!!| tsurf | surface_skin_temperature_after_iteration | ocean surface skin temperature for guess run | K | 1 | real | kind_phys | inout | F | +!!| dtzm | mean_change_over_depth_in_sea_water_temperature | mean of dT(z) (zsea1 to zsea2) | K | 1 | real | kind_phys | out | F | +!!| tsfc | surface_skin_temperature | ocean surface skin temperature | K | 1 | real | kind_phys | out | F | +!! +!! \section NSST_general_algorithm General Algorithm +!! +!! Blah blah general algorithm +!! +!! \section NSST_detailed_algorithm Detailed Algorithm +!! @{ + subroutine sfc_nst_post_run & + & ( im, islimsk, oro, oro_uf, nstf_name1, nstf_name4, & + & nstf_name5, xt, xz, dt_cool, z_c, rslimsk, tref, xlon, & + & tsurf, dtzm, tsfc & + & ) + + use machine , only : kind_phys + use physcons, only: rlapse + use module_nst_water_prop, only: get_dtzm_2d + + implicit none + +! --- inputs: + integer, intent(in) :: im + integer, dimension(im), intent(in) :: islimsk + real (kind=kind_phys), dimension(im), intent(in) :: oro, oro_uf + integer, intent(in) :: nstf_name1, nstf_name4, nstf_name5 + real (kind=kind_phys), dimension(im), intent(in) :: xt, xz, & + & dt_cool, z_c, rslimsk, tref, xlon + +! --- input/outputs: + real (kind=kind_phys), dimension(im), intent(inout) :: tsurf + +! --- outputs: + real (kind=kind_phys), dimension(size(xlon,1)), intent(out) :: & + & dtzm + real (kind=kind_phys), dimension(im), intent(out) :: tsfc + +! --- locals + integer :: i + real(kind=kind_phys) :: zsea1, zsea2 + +! if (lprnt) print *,' tseaz2=',tseal(ipr),' tref=',tref(ipr), +! & ' dt_cool=',dt_cool(ipr),' dt_warm=',2.0*xt(ipr)/xz(ipr), +! & ' kdt=',kdt + + do i = 1, im + if ( islimsk(i) == 0 ) then + tsurf(i) = tsurf(i) - (oro(i)-oro_uf(i)) * rlapse + endif + enddo + +! --- ... run nsst model ... --- + + if (nstf_name1 > 1) then + zsea1 = 0.001*real(nstf_name4) + zsea2 = 0.001*real(nstf_name5) + call get_dtzm_2d (xt, xz, dt_cool, & + & z_c, rslimsk, zsea1, zsea2, & + & im, 1, dtzm) + do i = 1, im + if ( islimsk(i) == 0 ) then + tsfc(i) = max(271.2,tref(i) + dtzm(i)) - & + & (oro(i)-oro_uf(i))*rlapse + endif + enddo + endif + +! if (lprnt) print *,' tseaz2=',tsea(ipr),' tref=',tref(ipr), & +! & ' dt_cool=',dt_cool(ipr),' dt_warm=',dt_warm(ipr),' kdt=',kdt + + return + end + +!> @} +!! @} + end module