14 subroutine gloopb(grid_fld, g3d_fld, sfc_fld,
15 & flx_fld, aoi_fld, nst_fld,
16 & lats_nodes_r, global_lats_r, lonsperlar,
17 & tstep, phour, sfalb, xlon,
18 & swh, swhc, hlw, hlwc,
20 & hprime, slag, sdec, cdec,
21 & ozplin, jindx1, jindx2, ddy,
22 & h2oplin, jindx1_h, jindx2_h, ddy_h,
23 & phy_f3d, phy_f2d, phy_fctd, nctp,
24 & xlat, nblck, kdt, restart_step,
92 use namelist_physics_def
94 use module_ras
, only: ras_init
95 use physcons, grav => con_g , rerth => con_rerth, rk => con_rocp
96 use ozne_def
, only : latsozp,levozp,
97 & pl_coeff,pl_pres,timeoz
98 use h2o_def
, only : latsh2o, levh2o
99 &, h2o_coeff, h2o_pres, timeh2o
101 use gfs_physics_sfc_flx_mod
102 use gfs_physics_nst_var_mod
103 use gfs_physics_aoi_var_mod
104 use gfs_physics_gridgr_mod
, ONLY: grid_var_data
105 use gfs_physics_g3d_mod
, ONLY: g3d_var_data
118 & phys_run_savein, phys_run_readin,
119 & phys_run_saveout, phys_run_readout
121 use mpi_def
, only: mpi_r_io_r, mpi_comm_all
122 use wam_f107_kp_mod
, ONLY: read_wam_f107_kp_txt,
123 & f107, kp, f107_kp_size
124 use idea_composition
, only: prlog,pr_idea,amgm,amgms,prsilvl
125 &, nlev_co2,k43,nlevc_h2o,k71,gg
126 use efield
, only: efield_init
132 TYPE(grid_var_data) :: grid_fld
133 TYPE(sfc_var_data) :: sfc_fld
134 TYPE(flx_var_data) :: flx_fld
135 TYPE(nst_var_data) :: nst_fld
136 TYPE(g3d_var_data) :: g3d_fld
137 TYPE(aoi_var_data) :: aoi_fld
140 integer nblck, kdt, nbdsw, nbdlw, nctp
143 real(kind=kind_phys) tstep, phour,slag, sdec, cdec
144 real(kind=kind_phys) plyr(levs)
145 real(kind=kind_phys),
dimension(ngptc) :: dpshc, pgr
146 real(kind=kind_phys),
dimension(ngptc,levs) :: prsl, prslk
147 &, phil, gu, gv, gt, adu, adv, adt
148 real(kind=kind_phys),
dimension(ngptc,levs+1) :: prsi, prsik
151 real (kind=kind_rad),
dimension(ngptc,levs,ntrac) :: gr, adr
153 real (kind=kind_rad),
dimension(lonr,lats_node_r) :: xlon, xlat
156 real (kind=kind_rad),
dimension(ngptc,levs,nblck,lats_node_r) ::
157 & swh, swhc, hlw, hlwc
159 real (kind=kind_rad) hprime(nmtvr,lonr,lats_node_r)
162 real (kind=kind_rad) hlwd(ngptc,levs,6)
166 real (kind=kind_phys) phy_f3d(ngptc,levs,ntot3d,nblck,lats_node_r)
167 &, phy_f2d(lonr,lats_node_r,ntot2d)
168 &, phy_fctd(lonr,lats_node_r,nctp)
170 real (kind=kind_phys) dtp,dtf,solhr,clstp
172 integer lats_nodes_r(nodes)
173 integer,
dimension(latr) :: global_lats_r, lonsperlar
175 integer i,j,k,kk,n,l,lan,lat,ii,lonrbm,jj
176 &, lon_dim,lons_lat,nsphys
186 real(kind=kind_phys),
parameter :: pt01=0.01, pt00001=1.0e-5
188 &, cons_0=0.0, cons_24=24.0
189 &, cons_99=99.0, cons_1p0d9=1.0e9
194 integer,
dimension(lats_node_r) :: jindx1, jindx2
195 &, jindx1_h, jindx2_h
196 real(kind=kind_phys) ozplin(latsozp,levozp,pl_coeff,timeoz)
198 &, ddy_h(lats_node_r)
199 &, ozplout(levozp,lats_node_r,pl_coeff)
200 &, h2oplin(latsh2o,levh2o,h2o_coeff,timeh2o)
201 &, h2oplout(levh2o,lats_node_r,h2o_coeff)
202 &, tmp(lonr,lats_node_r)
204 real(kind=kind_phys),
allocatable :: acv(:,:),acvb(:,:),acvt(:,:)
205 &, fscav(:), fswtr(:)
206 save acv,acvb,acvt,fscav,fswtr
212 integer,
parameter :: maxran=3000, maxsub=10, maxrs=maxran/maxsub
213 type(random_stat) :: stat(lats_node_r)
215 real (kind=kind_phys),
allocatable,
save :: rannum_tank(:,:,:)
216 real (kind=kind_phys),
allocatable :: rannum(:), wrkn(:)
217 integer,
allocatable :: indxr(:)
219 integer iseed, nrc, seed0, kss, ksr, iseedl, latseed
220 &, nf0,nf1,ind,nt,indod,indev
221 real(kind=kind_evod) fd2, wrk(1), facsw
225 save first, seed0, facsw
227 integer nlons_v(ngptc)
229 real(kind=kind_phys),
dimension(ngptc) :: sinlat_v,coslat_v,rqtk
231 real(kind=kind_phys),
dimension(ngptc,lsoil) :: smc_v,stc_v,slc_v
232 real(kind=kind_phys),
dimension(ngptc,levs) :: vvel,dtdt,dqdt_v,
235 real(kind=kind_phys) hprime_v(ngptc,nmtvr)
236 &, phy_f2dv(ngptc,ntot2d)
237 &, rannum_v(ngptc,nrcm)
238 &, ozplout_v(ngptc,levozp,pl_coeff)
239 &, h2oplout_v(ngptc,levh2o,h2o_coeff)
240 &, phy_fctdv(ngptc,nctp)
242 real(kind=kind_phys) trcg(latr,ntrac,2),trcj(lats_node_r,ntrac,2)
243 &, trcp(lonr,ntrac,2)
245 real(kind=kind_phys),
allocatable,
save :: sumtrc(:,:), adjtrc(:)
250 real (kind=kind_phys),
dimension(ngptc,levs) :: gu0,gv0,gt0
251 real (kind=kind_phys),
dimension(ngptc,levs) :: qphys_v
252 real (kind=kind_phys),
dimension(ngptc,levs,ntrac) :: gr0
253 real (kind=kind_phys) :: sppt_wts, qphys
254 real (kind=kind_phys),
dimension(ngptc) :: cplrain0,cplsnow0
258 real(kind=kind_phys) dt3dt_v(ngptc,levs,6), du3dt_v(ngptc,levs,4)
259 &, dv3dt_v(ngptc,levs,4)
260 &, dq3dt_v(ngptc,levs,5+pl_coeff)
261 real(kind=kind_phys) upd_mfv(ngptc,levs), dwn_mfv(ngptc,levs)
262 &, det_mfv(ngptc,levs)
265 real(kind=kind_phys),
dimension(ngptc) :: nirbmdi, nirdfdi,
266 & visbmdi, visdfdi, nirbmui, nirdfui,
268 &, aoi_du, aoi_dv, aoi_dt, aoi_dq
269 &, aoi_dlw, aoi_dsw, aoi_dnirbm
270 &, aoi_dnirdf, aoi_dvisbm, aoi_dvisdf
271 &, aoi_rain, aoi_nlw, aoi_nsw
272 &, aoi_nnirbm, aoi_nnirdf, aoi_nvisbm
273 &, aoi_nvisdf, aoi_snow
275 &, aoi_dusfci, aoi_dvsfci, aoi_dtsfci
276 &, aoi_dqsfci, aoi_dlwsfci, aoi_dswsfci
277 &, aoi_dnirbmi, aoi_dnirdfi, aoi_dvisbmi
278 &, aoi_dvisdfi, aoi_nlwsfci, aoi_nswsfci
279 &, aoi_nnirbmi, aoi_nnirdfi, aoi_nvisbmi
280 &, aoi_nvisdfi, aoi_t2mi, aoi_q2mi
281 &, aoi_u10mi, aoi_v10mi, aoi_tseai
283 &, aoi_slimskin,aoi_ulwsfcin,aoi_dusfcin
284 &, aoi_dvsfcin, aoi_dqsfcin, aoi_dtsfcin
286 &, nst_xt, nst_xs, nst_xu, nst_xv, nst_xz
287 &, nst_zm, nst_xtts, nst_xzts, nst_d_conv
288 &, nst_ifd, nst_dt_cool, nst_qrain
290 &, nst_tref, nst_z_c, nst_c_0, nst_c_d
293 real(kind=kind_phys) work1, tem
294 integer njeff,lon,iblk,item, nn, nnr, nnrcm, dbgu
297 real(kind=kind_phys) pmod(levs),gg1(levs),philco2(levs),
298 & qtrac(levs,ntrac),prsilvl1(levs+1)
299 real(kind=kind_phys),
allocatable :: prpa(:)
300 integer info,pelat1,pelatall,lanlat1
301 real(kind=8) :: gb_ini_time=0, btime, timef
328 allocate (acv(lonr,lats_node_r))
329 allocate (acvb(lonr,lats_node_r))
330 allocate (acvt(lonr,lats_node_r))
331 allocate (fscav(ntrac-ncld+2), fswtr(ntrac-ncld+2))
333 allocate (sumtrc(ntrac,3), adjtrc(ntrac))
339 if (fhswr > 3.0) facsw = 1.0 / 3600.0
341 if (imfdeepcnv <= 0 .or. cal_pre)
then 342 if (random_clds)
then 344 seed0 = idate(1) + idate(2) + idate(3) + idate(4)
346 call random_setseed(seed0)
347 call random_number(wrk)
348 seed0 = seed0 + nint(wrk(1)*thousnd)
349 if (me == 0) print *,
' seed0=',seed0,
' idate=',idate,
352 if (.not.
allocated(rannum_tank))
353 &
allocate (rannum_tank(lonr,maxran,lats_node_r))
355 allocate (rannum(lonr*maxrs))
356 lonrbm = lonr / maxsub
357 if (me == 0)
write(0,*)
' maxran=',maxran,
' maxrs=',maxrs,
358 &
'maxsub=',maxsub,
' lonrbm=',lonrbm,
359 &
' lats_node_r=',lats_node_r
362 iseedl = global_lats_r(ipt_lats_node_r-1+j) + seed0
363 call random_setseed(iseedl, stat(j))
364 call random_number(rannum, stat(j))
374 if (ii > lonr) ii = ii - lonr
375 rannum_tank(i,nrc+kk*maxrs,j) = rannum(ii+nn)
380 if (
allocated(rannum))
deallocate (rannum)
387 &
write(0,*)
' USING Ferrier-MICROPHYSICS' 389 &
write(0,*)
' USING ZHAO-MICROPHYSICS' 391 if (fhour == 0.0)
then 395 phy_f2d(i,j,num_p2d) = 0.0
400 if (ras)
call ras_init(levs, me)
406 IF(.NOT.
ASSOCIATED(f107))
ALLOCATE(f107(f107_kp_size))
407 IF(.NOT.
ASSOCIATED(kp))
ALLOCATE(kp(f107_kp_size))
408 call read_wam_f107_kp_txt
413 findlat1pe:
do lan=1,lats_node_r
414 lat = global_lats_r(ipt_lats_node_r-1+lan)
418 print *,
'pelat1=',pelat1
422 call mpi_reduce(pelat1,pelatall,1,mpi_integer,mpi_max,0,
425 print *,
'pelatall=',pelatall
428 call mpi_bcast(pelat1,1,mpi_integer,0,mpi_comm_all,info)
429 print *,
'pelat1=',pelat1,
'lanlat1=',lanlat1,
430 &
'gen_coord_hybrid=',gen_coord_hybrid,
431 &
'thermodyn_id=',thermodyn_id
434 if(me == pelat1)
then 436 plyr(k) = grid_fld%p(1,lanlat1,k)
438 print *,
' plyr in gloopb ',(plyr(k),k=1,levs)
440 call mpi_bcast(plyr,levs,mpi_r_io_r,pelat1,mpi_comm_all,info)
441 call idea_composition_init(levs,plyr)
443 call idea_solar_init(levs)
444 call idea_tracer_init(levs)
446 print *,
'in gloopb,nlevc_h2o=',nlevc_h2o,
'k71=',k71,
447 &
'levs=',levs,levs-k71+1
448 allocate(prpa(nlevc_h2o))
449 prpa(1:nlevc_h2o) = 100.*pr_idea(k71:levs)
450 call h2ocin(prpa,nlevc_h2o,me,mpi_r_io_r,mpi_comm_all)
458 if(.not. restart_step)
then 459 if(me == pelat1)
then 463 qtrac(k,n) = grid_fld%tracers(n)%flds(1,lanlat1,k)
467 call getphilvl(levs,ntrac, grid_fld%ps(1,lanlat1),
468 & grid_fld%t(1,lanlat1,1:levs),qtrac,
469 & grid_fld%dp(1,lanlat1,1:levs),gen_coord_hybrid,
470 & thermodyn_id,philco2,prsilvl1)
473 prsilvl1 = prsilvl1*1000.
476 call gravco2(levs,philco2,sfc_fld%oro(1,lanlat1),gg1)
478 call mpi_bcast(gg1,levs,mpi_r_io_r,pelat1,mpi_comm_all,info)
480 call mpi_bcast(prsilvl1,levs+1,mpi_r_io_r,pelat1,
485 if(.not.
allocated(prsilvl))
then 486 allocate(prsilvl(levs+1), gg(levs))
488 prsilvl(k) = prsilvl1(k)
492 prsilvl(levs+1) = prsilvl1(levs+1)
496 call co2cin(prlog(k43),pmod(k43),amgms(k43),gg(k43),
497 & nlev_co2,me,mpi_r_io_r,mpi_comm_all)
499 call ideaca_init(prsilvl,levs+1)
506 gb_ini_time = gb_ini_time + (timef() - btime)
512 nsphys = max(int(tstep/dtphys),1)
516 nsphys = max(int((tstep+tstep)/dtphys+0.9999),1)
517 dtp = (tstep+tstep)/nsphys
522 if (kdt == kdt_start .and. me == 0)
523 &
write(0,*)
' in gloopb nsphys=',nsphys
524 &,
' dtp=',dtp,
' tstep=',tstep,
' dtf=',dtf
527 solhr = mod(phour+idate(1),cons_24)
531 if(lscca .and. lsswr)
then 532 clstp = 1100 + min(fhswr*facsw,fhour,cons_99)
534 clstp = 0100 + min(fhswr*facsw,fhour,cons_99)
543 if (imfdeepcnv <= 0 .or. cal_pre)
then 546 if (random_clds)
then 547 iseed = mod(100.0*sqrt(fhour*3600),cons_1p0d9) + 1 + seed0
552 allocate(wrkn(nnrcm), indxr(nnrcm))
553 call random_setseed(iseed)
554 call random_number(wrkn)
556 indxr(nrc) = max(1, min(nint(wrkn(nrc)*maxran)+1,maxran))
559 if (
allocated(wrkn))
deallocate (wrkn)
564 if (.not.use_nuopc)
then 566 call ozinterpol(me,lats_node_r,lats_node_r,idate,fhour,
567 & jindx1,jindx2,ozplin,ozplout,ddy)
570 call h2ointerpol(me,lats_node_r,lats_node_r,idate,fhour,
571 & jindx1_h,jindx2_h,h2oplin,h2oplout,ddy_h)
578 lat = global_lats_r(ipt_lats_node_r-1+lan)
579 lon_dim = lon_dims_r(lan)
580 lons_lat = lonsperlar(lat)
634 do lon=1,lons_lat,ngptc
636 njeff = min(ngptc,lons_lat-lon+1)
637 iblk = (lon-1)/ngptc + 1
655 gu(i,k) = grid_fld%u(item,lan,k)
656 gv(i,k) = grid_fld%v(item,lan,k)
657 gt(i,k) = grid_fld%t(item,lan,k)
658 prsl(i,k) = grid_fld%p(item,lan,k)
659 vvel(i,k) = grid_fld%dpdt(item,lan,k)
669 prsik(i,levs+1) = 0.0
674 prsi(i,k) = prsi(i,k+1) + grid_fld%dp(item,lan,k)
683 gr(i,k,n)= grid_fld%tracers(n)%flds(lon+i-1,lan,k)
690 dpshc(i) = 0.3 * prsi(i,1)
692 nlons_v(i) = lons_lat
693 sinlat_v(i) = sinlat_r(lat)
694 coslat_v(i) = coslat_r(lat)
711 if ( .not.use_nuopc)
then 716 ozplout_v(i,k,j) = ozplout(k,lan,j)
725 h2oplout_v(i,k,j) = h2oplout(k,lan,j)
734 smc_v(i,k) = sfc_fld%smc(k,item,lan)
735 stc_v(i,k) = sfc_fld%stc(k,item,lan)
736 slc_v(i,k) = sfc_fld%slc(k,item,lan)
741 hprime_v(i,k) = hprime(k,lon+i-1,lan)
747 phy_f2dv(i,j) = phy_f2d(lon+i-1,lan,j)
754 phy_fctdv(i,j) = phy_fctd(lon+i-1,lan,j)
763 dt3dt_v(i,j,k) = dt3dt(i,j,k,iblk,lan)
770 du3dt_v(i,j,k) = du3dt(i,j,k,iblk,lan)
771 dv3dt_v(i,j,k) = dv3dt(i,j,k,iblk,lan)
778 dq3dt_v(i,j,k) = dq3dt(i,j,k,iblk,lan)
783 if (ldiag3d .or. lgocart)
then 809 call idea_phys(njeff,ngptc,levs,prsi,prsl,
810 & gu,gv,gt,gr,ntrac,dtp,lat,
811 & solhr,slag,sdec,cdec,sinlat_v,coslat_v,
812 & xlon(lon,lan),xlat(lon,lan),
813 & sfc_fld%oro(lon,lan),flx_fld%coszen(lon,lan),
814 & swh(1,1,iblk,lan),hlw(1,1,iblk,lan),hlwd,
815 & thermodyn_id,sfcpress_id,gen_coord_hybrid,
816 & me,mpi_r_io_r,mpi_comm_all)
859 trcp(lon+i-1,n,1) = trcp(lon+i-1,n,1)
860 & + gr(i,k,n) * (prsi(i,k) - prsi(i,k+1))
872 nirbmdi(i) = aoi_fld%nirbmdi(item,lan)
873 nirdfdi(i) = aoi_fld%nirdfdi(item,lan)
874 visbmdi(i) = aoi_fld%visbmdi(item,lan)
875 visdfdi(i) = aoi_fld%visdfdi(item,lan)
876 nirbmui(i) = aoi_fld%nirbmui(item,lan)
877 nirdfui(i) = aoi_fld%nirdfui(item,lan)
878 visbmui(i) = aoi_fld%visbmui(item,lan)
879 visdfui(i) = aoi_fld%visdfui(item,lan)
881 aoi_du(i) = aoi_fld%dusfc(item,lan)
882 aoi_dv(i) = aoi_fld%dvsfc(item,lan)
883 aoi_dt(i) = aoi_fld%dtsfc(item,lan)
884 aoi_dq(i) = aoi_fld%dqsfc(item,lan)
885 aoi_dlw(i) = aoi_fld%dlwsfc(item,lan)
886 aoi_dsw(i) = aoi_fld%dswsfc(item,lan)
887 aoi_dnirbm(i) = aoi_fld%dnirbm(item,lan)
888 aoi_dnirdf(i) = aoi_fld%dnirdf(item,lan)
889 aoi_dvisbm(i) = aoi_fld%dvisbm(item,lan)
890 aoi_dvisdf(i) = aoi_fld%dvisdf(item,lan)
891 aoi_rain(i) = aoi_fld%rain(item,lan)
892 aoi_snow(i) = aoi_fld%snow(item,lan)
893 aoi_nlw(i) = aoi_fld%nlwsfc(item,lan)
894 aoi_nsw(i) = aoi_fld%nswsfc(item,lan)
895 aoi_nnirbm(i) = aoi_fld%nnirbm(item,lan)
896 aoi_nnirdf(i) = aoi_fld%nnirdf(item,lan)
897 aoi_nvisbm(i) = aoi_fld%nvisbm(item,lan)
898 aoi_nvisdf(i) = aoi_fld%nvisdf(item,lan)
900 aoi_slimskin(i) = aoi_fld%slimskin(item,lan)
901 aoi_dusfcin(i) = aoi_fld%dusfcin(item,lan)
902 aoi_dvsfcin(i) = aoi_fld%dvsfcin(item,lan)
903 aoi_dtsfcin(i) = aoi_fld%dtsfcin(item,lan)
904 aoi_dqsfcin(i) = aoi_fld%dqsfcin(item,lan)
905 aoi_ulwsfcin(i) = aoi_fld%ulwsfcin(item,lan)
909 if (nstf_name(1) > 0)
then 912 nst_xt(i) = nst_fld%xt(item,lan)
913 nst_xs(i) = nst_fld%xs(item,lan)
914 nst_xu(i) = nst_fld%xu(item,lan)
915 nst_xv(i) = nst_fld%xv(item,lan)
916 nst_xz(i) = nst_fld%xz(item,lan)
917 nst_zm(i) = nst_fld%zm(item,lan)
918 nst_xtts(i) = nst_fld%xtts(item,lan)
919 nst_xzts(i) = nst_fld%xzts(item,lan)
920 nst_d_conv(i) = nst_fld%d_conv(item,lan)
921 nst_ifd(i) = nst_fld%ifd(item,lan)
922 nst_dt_cool(i) = nst_fld%dt_cool(item,lan)
923 nst_qrain(i) = nst_fld%qrain(item,lan)
924 nst_tref(i) = nst_fld%tref(item,lan)
925 nst_z_c(i) = nst_fld%z_c(item,lan)
926 nst_c_0(i) = nst_fld%c_0(item,lan)
927 nst_c_d(i) = nst_fld%c_d(item,lan)
928 nst_w_0(i) = nst_fld%w_0(item,lan)
929 nst_w_d(i) = nst_fld%w_d(item,lan)
947 gr0(i,k,n) = gr(i,k,n)
952 cplrain0(i) = aoi_rain(i)
953 cplsnow0(i) = aoi_snow(i)
954 totprcp0(i) = flx_fld%totprcp(lon-1+i,lan)
955 cnvprcp0(i) = flx_fld%cnvprcp(lon-1+i,lan)
961 call rad_tend%setphys(
962 & swh(1:ngptc,1:levs,iblk,lan),
963 & sfalb(lon:lonbnd,lan),
964 & flx_fld%coszen(lon:lonbnd,lan),
965 & hlw(1:ngptc,1:levs,iblk,lan),
966 & flx_fld%tsflw(lon:lonbnd,lan),
967 & flx_fld%sfcemis(lon:lonbnd,lan),
968 & rqtk(1:njeff), hlwd(1:ngptc,1:levs,1:6),
969 & dtdt(1:ngptc,1:levs),
970 & swhc(1:ngptc,1:levs,iblk,lan),
971 & hlwc(1:ngptc,1:levs,iblk,lan)
977 if (imfdeepcnv <= 0 .or. cal_pre)
then 978 if (random_clds)
then 982 rannum_v(i,j) = rannum_tank(lon+i-1,indxr(nnr+j),lan)
1007 call dyn_parm%setphys(
1008 & xlon(lon:lonbnd,lan), xlat(lon:lonbnd,lan),
1009 & sinlat_v, coslat_v, solhr, ngptc, njeff, kdt,
1010 & lssav, lat, dtp, dtf, clstp, nn, nlons_v, fhour,
1011 & slag, sdec, cdec )
1012 call state_fldin%setphys( prsi, prsl, prslk, gt, gr,
1013 & vvel, pgr, gu, gv, prsik, phii, phil, adjtrc)
1015 call state_fldout%setphys(adt, adr, adu, adv)
1018 & flx_fld%srunoff (lon:lonbnd,lan),
1019 & flx_fld%evbsa (lon:lonbnd,lan),
1020 & flx_fld%evcwa (lon:lonbnd,lan),
1021 & flx_fld%snohfa (lon:lonbnd,lan),
1022 & flx_fld%transa (lon:lonbnd,lan),
1023 & flx_fld%sbsnoa (lon:lonbnd,lan),
1024 & flx_fld%snowca (lon:lonbnd,lan),
1025 & flx_fld%soilm (lon:lonbnd,lan),
1026 & flx_fld%tmpmin (lon:lonbnd,lan),
1027 & flx_fld%tmpmax (lon:lonbnd,lan),
1029 & flx_fld%dusfc (lon:lonbnd,lan),
1030 & flx_fld%dvsfc (lon:lonbnd,lan),
1031 & flx_fld%dtsfc (lon:lonbnd,lan),
1032 & flx_fld%dqsfc (lon:lonbnd,lan),
1033 & flx_fld%totprcp(lon:lonbnd,lan),
1034 & flx_fld%gflux (lon:lonbnd,lan),
1035 & flx_fld%dlwsfc (lon:lonbnd,lan),
1036 & flx_fld%ulwsfc (lon:lonbnd,lan),
1037 & flx_fld%suntim (lon:lonbnd,lan),
1038 & flx_fld%runoff (lon:lonbnd,lan),
1039 & flx_fld%ep (lon:lonbnd,lan),
1040 & flx_fld%cldwrk (lon:lonbnd,lan),
1041 & flx_fld%dugwd (lon:lonbnd,lan),
1042 & flx_fld%dvgwd (lon:lonbnd,lan),
1043 & flx_fld%psmean (lon:lonbnd,lan),
1044 & flx_fld%cnvprcp(lon:lonbnd,lan),
1045 & flx_fld%spfhmin(lon:lonbnd,lan),
1046 & flx_fld%spfhmax(lon:lonbnd,lan),
1047 & flx_fld%rain (lon:lonbnd,lan),
1048 & flx_fld%rainc (lon:lonbnd,lan),
1050 & dt3dt_v, dq3dt_v, du3dt_v, dv3dt_v, dqdt_v,
1052 & flx_fld%u10m (lon:lonbnd,lan),
1053 & flx_fld%v10m (lon:lonbnd,lan),
1054 & flx_fld%zlvl (lon:lonbnd,lan),
1055 & flx_fld%psurf (lon:lonbnd,lan),
1056 & flx_fld%hpbl (lon:lonbnd,lan),
1057 & flx_fld%pwat (lon:lonbnd,lan),
1058 & flx_fld%t1 (lon:lonbnd,lan),
1059 & flx_fld%q1 (lon:lonbnd,lan),
1060 & flx_fld%u1 (lon:lonbnd,lan),
1061 & flx_fld%v1 (lon:lonbnd,lan),
1062 & flx_fld%chh(lon:lonbnd,lan),
1063 & flx_fld%cmm (lon:lonbnd,lan),
1064 & flx_fld%dlwsfci (lon:lonbnd,lan),
1065 & flx_fld%ulwsfci (lon:lonbnd,lan),
1066 & flx_fld%dswsfci (lon:lonbnd,lan),
1067 & flx_fld%uswsfci (lon:lonbnd,lan),
1068 & flx_fld%dusfci (lon:lonbnd,lan),
1069 & flx_fld%dvsfci (lon:lonbnd,lan),
1070 & flx_fld%dtsfci (lon:lonbnd,lan),
1071 & flx_fld%dqsfci (lon:lonbnd,lan),
1072 & flx_fld%gfluxi (lon:lonbnd,lan),
1073 & flx_fld%epi (lon:lonbnd,lan),
1074 & flx_fld%smcwlt2 (lon:lonbnd,lan),
1075 & flx_fld%smcref2 (lon:lonbnd,lan),
1076 & flx_fld%wet1 (lon:lonbnd,lan),
1077 & flx_fld%sr (lon:lonbnd,lan)
1079 call intrfc_fld%setphys(
1080 & flx_fld%sfcdsw (lon:lonbnd,lan),
1081 & flx_fld%sfcnsw (lon:lonbnd,lan),
1082 & flx_fld%sfcdlw (lon:lonbnd,lan),
1083 & nirbmui, nirdfui, visbmui, visdfui,
1084 & nirbmdi, nirdfdi, visbmdi, visdfdi,
1085 & aoi_du, aoi_dv, aoi_dt, aoi_dq, aoi_dlw, aoi_dsw,
1086 & aoi_dnirbm, aoi_dnirdf, aoi_dvisbm, aoi_dvisdf,
1087 & aoi_rain, aoi_nlw, aoi_nsw, aoi_nnirbm, aoi_nnirdf,
1088 & aoi_nvisbm, aoi_nvisdf,
1089 & aoi_slimskin, aoi_ulwsfcin, aoi_dusfcin,
1090 & aoi_dvsfcin, aoi_dtsfcin, aoi_dqsfcin, aoi_snow,
1091 & nst_xt, nst_xs, nst_xu, nst_xv, nst_xz, nst_zm,
1092 & nst_xtts, nst_xzts, nst_d_conv,
1093 & nst_ifd, nst_dt_cool, nst_qrain,
1094 & aoi_dusfci, aoi_dvsfci, aoi_dtsfci,
1095 & aoi_dqsfci, aoi_dlwsfci, aoi_dswsfci,
1096 & aoi_dnirbmi, aoi_dnirdfi, aoi_dvisbmi,
1097 & aoi_dvisdfi, aoi_nlwsfci, aoi_nswsfci,
1098 & aoi_nnirbmi, aoi_nnirdfi, aoi_nvisbmi, aoi_nvisdfi,
1099 & aoi_t2mi, aoi_q2mi, aoi_u10mi, aoi_v10mi,
1100 & aoi_tseai, aoi_psurfi,
1104 & grid_fld%sppt_wts(lon:lonbnd,lan,:),
1112 & cplrain0,cplsnow0,
1114 & totprcp0,cnvprcp0,
1116 & do_sppt, do_shum, do_skeb, do_vc
1135 call sfc_prop%setphys(
1137 & sfc_fld%slope (lon:lonbnd,lan),
1138 & sfc_fld%shdmin (lon:lonbnd,lan),
1139 & sfc_fld%shdmax (lon:lonbnd,lan),
1140 & sfc_fld%snoalb (lon:lonbnd,lan),
1141 & sfc_fld%tg3 (lon:lonbnd,lan),
1142 & sfc_fld%slmsk (lon:lonbnd,lan),
1143 & sfc_fld%vfrac (lon:lonbnd,lan),
1144 & sfc_fld%vtype (lon:lonbnd,lan),
1145 & sfc_fld%stype (lon:lonbnd,lan),
1146 & sfc_fld%uustar (lon:lonbnd,lan),
1147 & sfc_fld%oro (lon:lonbnd,lan),
1148 & sfc_fld%oro_uf (lon:lonbnd,lan),
1149 & sfc_fld%hice (lon:lonbnd,lan),
1150 & sfc_fld%fice (lon:lonbnd,lan),
1151 & sfc_fld%tisfc (lon:lonbnd,lan),
1152 & sfc_fld%tsea (lon:lonbnd,lan),
1153 & sfc_fld%snwdph (lon:lonbnd,lan),
1154 & sfc_fld%weasd (lon:lonbnd,lan),
1155 & sfc_fld%sncovr (lon:lonbnd,lan),
1156 & sfc_fld%zorl (lon:lonbnd,lan),
1157 & sfc_fld%canopy (lon:lonbnd,lan),
1158 & sfc_fld%ffmm (lon:lonbnd,lan),
1159 & sfc_fld%ffhh (lon:lonbnd,lan),
1160 & sfc_fld%f10m (lon:lonbnd,lan),
1161 & sfc_fld%t2m (lon:lonbnd,lan),
1162 & sfc_fld%q2m (lon:lonbnd,lan)
1166 call cld_prop%setphys(flgmin,sfc_fld%cv(lon:lonbnd,lan),
1167 & sfc_fld%cvt(lon:lonbnd,lan),
1168 & sfc_fld%cvb(lon:lonbnd,lan),
1183 & psautco, prautco, evpco,
1185 & acv(lon:lonbnd,lan),
1186 & acvb(lon:lonbnd,lan),
1187 & acvt(lon:lonbnd,lan),
1194 & phy_f3d(1:ngptc,1:levs,1:ntot3d,iblk,lan),
1197 & sfc_fld%tprcp(lon:lonbnd,lan),
1198 & sfc_fld%srflag(lon:lonbnd,lan),
1218 print *,
'NUOPC WRAPPER : Calling nuopc_phys_run...' 1223 call nuopc_phys_run(state_fldin, state_fldout, sfc_prop,
1224 & diags, intrfc_fld, cld_prop, rad_tend,
1225 & mdl_parm, tbddata, dyn_parm )
1240 & ( njeff,ngptc,levs,lsoil,lsm,ntrac,ncld,ntoz,ntcw,ntke, &
1241 & ntiw,ntlnc,ntinc, &
1242 & nmtvr,nrcm,levozp,lonr,latr,jcap, &
1243 & num_p3d,num_p2d,npdf3d,ncnvcld3d, &
1244 & kdt,lat,me,pl_coeff,nlons_v,ncw,flgmin,crtrh,cdmbgwd, &
1245 & ccwf,dlqf,ctei_rm,clstp,cgwf,prslrd0,ral_ts,dtp,dtf,fhour,&
1246 & solhr,slag,sdec,cdec,sinlat_v,coslat_v,pgr,gu,gv, &
1247 & gt,gr,vvel,prsi,prsl,prslk,prsik,phii,phil, &
1248 & rannum_v,ozplout_v,pl_pres,dpshc,fscav,fswtr, &
1249 & hprime_v, xlon(lon,lan),xlat(lon,lan), &
1250 & h2o_phys, levh2o, h2oplout_v, h2o_pres, h2o_coeff, &
1252 & sfc_fld%slope (lon,lan), sfc_fld%shdmin(lon,lan), &
1253 & sfc_fld%shdmax(lon,lan), sfc_fld%snoalb(lon,lan), &
1254 & sfc_fld%tg3 (lon,lan), sfc_fld%slmsk (lon,lan), &
1255 & sfc_fld%vfrac (lon,lan), sfc_fld%vtype (lon,lan), &
1256 & sfc_fld%stype (lon,lan), sfc_fld%uustar(lon,lan), &
1257 & sfc_fld%oro (lon,lan), sfc_fld%oro_uf(lon,lan), &
1258 & flx_fld%coszen(lon,lan), &
1259 & flx_fld%sfcdsw(lon,lan), flx_fld%sfcnsw(lon,lan), &
1261 & nirbmdi, nirdfdi, visbmdi, visdfdi, &
1262 & nirbmui, nirdfui, visbmui, visdfui, &
1263 & aoi_slimskin, aoi_ulwsfcin, &
1264 & aoi_dusfcin, aoi_dvsfcin, aoi_dtsfcin, aoi_dqsfcin, &
1266 & flx_fld%sfcdlw(lon,lan), flx_fld%tsflw (lon,lan), &
1267 & flx_fld%sfcemis(lon,lan), sfalb(lon,lan), &
1268 & swh(1,1,iblk,lan),swhc(1,1,iblk,lan), &
1269 & hlw(1,1,iblk,lan),hlwc(1,1,iblk,lan), hlwd, lsidea,
1270 & ras,pre_rad,ldiag3d,lgocart,lssav,cplflx, &
1271 & bkgd_vdif_m,bkgd_vdif_h,bkgd_vdif_s,psautco,prautco,evpco,&
1272 & wminco,pdfcld,shcnvcw,sup,redrag,hybedmf,dspheat, &
1273 & flipv,old_monin,cnvgwd,shal_cnv, &
1274 & imfshalcnv,imfdeepcnv,cal_pre,aero_in, &
1275 & mom4ice,mstrat,trans_trac,nstf_name,moist_adj, &
1276 & thermodyn_id,sfcpress_id,gen_coord_hybrid,levr,adjtrc,nn, &
1277 & cscnv,nctp,do_shoc,shocaftcnv,ntot3d,ntot2d, &
1279 & sfc_fld%hice (lon,lan), sfc_fld%fice (lon,lan), &
1280 & sfc_fld%tisfc (lon,lan), sfc_fld%tsea (lon,lan), &
1281 & sfc_fld%tprcp (lon,lan), sfc_fld%cv (lon,lan), &
1282 & sfc_fld%cvb (lon,lan), sfc_fld%cvt (lon,lan), &
1283 & sfc_fld%srflag(lon,lan), sfc_fld%snwdph(lon,lan), &
1284 & sfc_fld%weasd(lon,lan), sfc_fld%sncovr(lon,lan), &
1285 & sfc_fld%zorl (lon,lan), sfc_fld%canopy(lon,lan), &
1286 & sfc_fld%ffmm (lon,lan), sfc_fld%ffhh (lon,lan), &
1287 & sfc_fld%f10m (lon,lan), flx_fld%srunoff(lon,lan), &
1288 & flx_fld%evbsa (lon,lan), flx_fld%evcwa (lon,lan), &
1289 & flx_fld%snohfa(lon,lan), flx_fld%transa(lon,lan), &
1290 & flx_fld%sbsnoa(lon,lan), flx_fld%snowca(lon,lan), &
1291 & flx_fld%soilm (lon,lan), flx_fld%tmpmin(lon,lan), &
1292 & flx_fld%tmpmax(lon,lan), flx_fld%dusfc (lon,lan), &
1293 & flx_fld%dvsfc (lon,lan), flx_fld%dtsfc (lon,lan), &
1294 & flx_fld%dqsfc (lon,lan), flx_fld%totprcp(lon,lan), &
1295 & flx_fld%gflux (lon,lan), flx_fld%dlwsfc(lon,lan), &
1296 & flx_fld%ulwsfc(lon,lan), flx_fld%suntim(lon,lan), &
1297 & flx_fld%runoff(lon,lan), flx_fld%ep (lon,lan), &
1298 & flx_fld%cldwrk(lon,lan), flx_fld%dugwd (lon,lan), &
1299 & flx_fld%dvgwd (lon,lan), flx_fld%psmean(lon,lan), &
1300 & flx_fld%cnvprcp(lon,lan), flx_fld%spfhmin(lon,lan), &
1301 & flx_fld%spfhmax(lon,lan), &
1302 & flx_fld%rain(lon,lan), flx_fld%rainc(lon,lan), &
1304 & dt3dt_v, dq3dt_v, du3dt_v, dv3dt_v, dqdt_v,cnvqc_v, &
1305 & acv(lon,lan), acvb(lon,lan), acvt(lon,lan), &
1306 & slc_v, smc_v, stc_v, upd_mfv, dwn_mfv, det_mfv, &
1307 & phy_f3d(1,1,1,iblk,lan), phy_f2dv, &
1308 & aoi_du, aoi_dv, aoi_dt, aoi_dq, aoi_dlw, aoi_dsw, &
1309 & aoi_dnirbm, aoi_dnirdf, aoi_dvisbm, aoi_dvisdf, aoi_rain, &
1310 & aoi_nlw, aoi_nsw, aoi_nnirbm, aoi_nnirdf, &
1311 & aoi_nvisbm, aoi_nvisdf, aoi_snow, &
1313 & nst_xt, nst_xs, nst_xu, nst_xv, nst_xz, &
1314 & nst_zm, nst_xtts, nst_xzts, nst_d_conv, nst_ifd, &
1315 & nst_dt_cool, nst_qrain, &
1316 & nst_tref, nst_z_c, nst_c_0, nst_c_d, nst_w_0, nst_w_d, &
1320 & adt, adr, adu, adv, &
1321 & sfc_fld%t2m (lon,lan), sfc_fld%q2m (lon,lan), &
1322 & flx_fld%u10m (lon,lan), flx_fld%v10m (lon,lan), &
1323 & flx_fld%zlvl (lon,lan), flx_fld%psurf (lon,lan), &
1324 & flx_fld%hpbl (lon,lan), flx_fld%pwat (lon,lan), &
1325 & flx_fld%t1 (lon,lan), flx_fld%q1 (lon,lan), &
1326 & flx_fld%u1 (lon,lan), flx_fld%v1 (lon,lan), &
1327 & flx_fld%chh (lon,lan), flx_fld%cmm (lon,lan), &
1328 & flx_fld%dlwsfci(lon,lan), flx_fld%ulwsfci(lon,lan), &
1329 & flx_fld%dswsfci(lon,lan), flx_fld%uswsfci(lon,lan), &
1330 & flx_fld%dusfci(lon,lan), flx_fld%dvsfci(lon,lan), &
1331 & flx_fld%dtsfci(lon,lan), flx_fld%dqsfci(lon,lan), &
1332 & flx_fld%gfluxi(lon,lan), flx_fld%epi (lon,lan), &
1333 & flx_fld%smcwlt2(lon,lan), flx_fld%smcref2(lon,lan), &
1334 & flx_fld%wet1(lon,lan), flx_fld%sr(lon,lan), &
1338 & aoi_dusfci, aoi_dvsfci, aoi_dtsfci, aoi_dqsfci, &
1339 & aoi_dlwsfci, aoi_dswsfci, aoi_dnirbmi, aoi_dnirdfi, &
1340 & aoi_dvisbmi, aoi_dvisdfi, aoi_nlwsfci, aoi_nswsfci, &
1341 & aoi_nnirbmi, aoi_nnirdfi, aoi_nvisbmi, aoi_nvisdfi, &
1342 & aoi_t2mi, aoi_q2mi, aoi_u10mi, aoi_v10mi, &
1343 & aoi_tseai, aoi_psurfi &
1348 if (nn < nsphys)
then 1359 gr(i,k,n) = adr(i,k,n)
1368 trcp(lon+i-1,n,2) = trcp(lon+i-1,n,2)
1369 & + adr(i,k,n) * (prsi(i,k) - prsi(i,k+1))
1374 if (gg_tracers)
then 1377 grid_fld%rqtk(item,lan) = rqtk(i) / pgr(i)
1390 call nuopc_sppt_phys( state_fldout, diags, intrfc_fld, rad_tend,
1391 & mdl_parm, tbddata, dyn_parm )
1398 sppt_wts = grid_fld%sppt_wts(lon+i-1,lan,k)
1401 adu(i,k) = gu0(i,k) + (adu(i,k)-gu0(i,k))*sppt_wts
1402 adv(i,k) = gv0(i,k) + (adv(i,k)-gv0(i,k))*sppt_wts
1403 qphys = gr0(i,k,1) + (adr(i,k,1)-gr0(i,k,1))*sppt_wts
1405 if (qphys > 0.0)
then 1406 tem = gt0(i,k) + dtdt(i,k)
1407 adt(i,k) = tem + (adt(i,k)-tem)*sppt_wts
1415 sppt_wts = grid_fld%sppt_wts(item,lan,3)
1416 flx_fld%totprcp(item,lan) = totprcp0(i) + sppt_wts
1417 & * (flx_fld%totprcp(item,lan)-totprcp0(i))
1418 flx_fld%cnvprcp(item,lan) = cnvprcp0(i) + sppt_wts
1419 & * (flx_fld%cnvprcp(item,lan)-cnvprcp0(i))
1420 sfc_fld%tprcp(item,lan) = sfc_fld%tprcp(item,lan)
1422 aoi_rain(i) = cplrain0(i) + sppt_wts
1423 & * (aoi_rain(i)-cplrain0(i))
1424 aoi_snow(i) = cplsnow0(i) + sppt_wts
1425 & * (aoi_snow(i)-cplsnow0(i))
1426 nst_qrain(i) = nst_qrain(i)*sppt_wts
1435 adr(i,k,1) = adr(i,k,1)
1436 & * (1.0 + grid_fld%shum_wts(lon+i-1,lan,k))
1446 adu(i,k) = adu(i,k) + grid_fld%skebu_wts(item,lan,k)
1447 adv(i,k) = adv(i,k) + grid_fld%skebv_wts(item,lan,k)
1456 adu(i,k) = adu(i,k) + grid_fld%vcu_wts(item,lan,k)
1457 adv(i,k) = adv(i,k) + grid_fld%vcv_wts(item,lan,k)
1484 sfc_fld%smc(k,item,lan) = smc_v(i,k)
1485 sfc_fld%stc(k,item,lan) = stc_v(i,k)
1486 sfc_fld%slc(k,item,lan) = slc_v(i,k)
1494 dt3dt(i,j,k,iblk,lan) = dt3dt_v(i,j,k)
1501 du3dt(i,j,k,iblk,lan) = du3dt_v(i,j,k)
1502 dv3dt(i,j,k,iblk,lan) = dv3dt_v(i,j,k)
1509 dq3dt(i,j,k,iblk,lan) = dq3dt_v(i,j,k)
1515 upd_mf(i,j,iblk,lan) = upd_mf(i,j,iblk,lan)+upd_mfv(i,j)
1516 dwn_mf(i,j,iblk,lan) = dwn_mf(i,j,iblk,lan)+dwn_mfv(i,j)
1517 det_mf(i,j,iblk,lan) = det_mf(i,j,iblk,lan)+det_mfv(i,j)
1529 g3d_fld%dqdt(item,lan,k) = dqdt_v(i,k)
1530 g3d_fld%cnv_mfc(item,lan,k) = (upd_mfv(i,k)
1531 & + dwn_mfv(i,k)) * tem
1532 g3d_fld%cnv_mfd(item,lan,k) = det_mfv(i,k) * tem
1533 g3d_fld%cnv_qc(item,lan,k) = cnvqc_v(i,k)
1543 aoi_fld%dusfc(item,lan) = aoi_du(i)
1544 aoi_fld%dvsfc(item,lan) = aoi_dv(i)
1545 aoi_fld%dtsfc(item,lan) = aoi_dt(i)
1546 aoi_fld%dqsfc(item,lan) = aoi_dq(i)
1547 aoi_fld%dlwsfc(item,lan) = aoi_dlw(i)
1548 aoi_fld%dswsfc(item,lan) = aoi_dsw(i)
1549 aoi_fld%dnirbm(item,lan) = aoi_dnirbm(i)
1550 aoi_fld%dnirdf(item,lan) = aoi_dnirdf(i)
1551 aoi_fld%dvisbm(item,lan) = aoi_dvisbm(i)
1552 aoi_fld%dvisdf(item,lan) = aoi_dvisdf(i)
1553 aoi_fld%rain(item,lan) = aoi_rain(i)
1554 aoi_fld%snow(item,lan) = aoi_snow(i)
1555 aoi_fld%nlwsfc(item,lan) = aoi_nlw(i)
1556 aoi_fld%nswsfc(item,lan) = aoi_nsw(i)
1557 aoi_fld%nnirbm(item,lan) = aoi_nnirbm(i)
1558 aoi_fld%nnirdf(item,lan) = aoi_nnirdf(i)
1559 aoi_fld%nvisbm(item,lan) = aoi_nvisbm(i)
1560 aoi_fld%nvisdf(item,lan) = aoi_nvisdf(i)
1562 aoi_fld%dusfci(item,lan) = aoi_dusfci(i)
1563 aoi_fld%dvsfci(item,lan) = aoi_dvsfci(i)
1564 aoi_fld%dtsfci(item,lan) = aoi_dtsfci(i)
1565 aoi_fld%dqsfci(item,lan) = aoi_dqsfci(i)
1566 aoi_fld%dlwsfci(item,lan) = aoi_dlwsfci(i)
1567 aoi_fld%dswsfci(item,lan) = aoi_dswsfci(i)
1568 aoi_fld%dnirbmi(item,lan) = aoi_dnirbmi(i)
1569 aoi_fld%dnirdfi(item,lan) = aoi_dnirdfi(i)
1570 aoi_fld%dvisbmi(item,lan) = aoi_dvisbmi(i)
1571 aoi_fld%dvisdfi(item,lan) = aoi_dvisdfi(i)
1573 aoi_fld%nlwsfci(item,lan) = aoi_nlwsfci(i)
1574 aoi_fld%nswsfci(item,lan) = aoi_nswsfci(i)
1575 aoi_fld%nnirbmi(item,lan) = aoi_nnirbmi(i)
1576 aoi_fld%nnirdfi(item,lan) = aoi_nnirdfi(i)
1577 aoi_fld%nvisbmi(item,lan) = aoi_nvisbmi(i)
1578 aoi_fld%nvisdfi(item,lan) = aoi_nvisdfi(i)
1580 aoi_fld%t2mi(item,lan) = aoi_t2mi(i)
1581 aoi_fld%q2mi(item,lan) = aoi_q2mi(i)
1582 aoi_fld%u10mi(item,lan) = aoi_u10mi(i)
1583 aoi_fld%v10mi(item,lan) = aoi_v10mi(i)
1584 aoi_fld%tseai(item,lan) = aoi_tseai(i)
1585 aoi_fld%psurfi(item,lan) = aoi_psurfi(i)
1587 aoi_fld%tboti(item,lan) = adt(i,1)
1588 aoi_fld%qboti(item,lan) = adr(i,1,1)
1589 aoi_fld%uboti(item,lan) = adu(i,1)
1590 aoi_fld%vboti(item,lan) = adv(i,1)
1591 aoi_fld%pboti(item,lan) = prsl(i,1)
1592 aoi_fld%zboti(item,lan) = phil(i,1)/grav
1594 aoi_fld%oro(item,lan) = sfc_fld%oro(item,lan)
1595 aoi_fld%slimsk(item,lan) = sfc_fld%slmsk(item,lan)
1598 if (nstf_name(1) > 0)
then 1601 nst_fld%xt(item,lan) = nst_xt(i)
1602 nst_fld%xs(item,lan) = nst_xs(i)
1603 nst_fld%xu(item,lan) = nst_xu(i)
1604 nst_fld%xv(item,lan) = nst_xv(i)
1605 nst_fld%xz(item,lan) = nst_xz(i)
1606 nst_fld%zm(item,lan) = nst_zm(i)
1607 nst_fld%xtts(item,lan) = nst_xtts(i)
1608 nst_fld%xzts(item,lan) = nst_xzts(i)
1609 nst_fld%d_conv(item,lan) = nst_d_conv(i)
1610 nst_fld%ifd(item,lan) = nst_ifd(i)
1611 nst_fld%dt_cool(item,lan) = nst_dt_cool(i)
1612 nst_fld%qrain(item,lan) = nst_qrain(i)
1614 nst_fld%tref(item,lan) = nst_tref(i)
1615 nst_fld%z_c(item,lan) = nst_z_c(i)
1616 nst_fld%c_0(item,lan) = nst_c_0(i)
1617 nst_fld%c_d(item,lan) = nst_c_d(i)
1618 nst_fld%w_0(item,lan) = nst_w_0(i)
1619 nst_fld%w_d(item,lan) = nst_w_d(i)
1623 do j=1,num_p2d+nshoc_2d
1625 phy_f2d(lon+i-1,lan,j) = phy_f2dv(i,j)
1632 phy_fctd(lon+i-1,lan,j) = phy_fctdv(i,j)
1640 grid_fld%u(item,lan,k) = adu(i,k)
1641 grid_fld%v(item,lan,k) = adv(i,k)
1642 grid_fld%t(item,lan,k) = adt(i,k)
1649 grid_fld%tracers(n)%flds(lon+i-1,lan,k) = adr(i,k,n)
1665 tem = 0.5 / lonsperlar(lat)
1672 trcj(lan,n,1) = trcj(lan,n,1) + trcp(j,n,1)
1673 trcj(lan,n,2) = trcj(lan,n,2) + trcp(j,n,2)
1675 trcj(lan,n,1) = trcj(lan,n,1) * tem
1676 trcj(lan,n,2) = trcj(lan,n,2) * tem
1683 call excht(lats_nodes_r, global_lats_r, trcj, trcg)
1692 sumtrc(n,1) = sumtrc(n,1)
1693 & + wgt_r(min(lat,latr-lat+1))*trcg(lat,n,1)
1694 sumtrc(n,2) = sumtrc(n,2)
1695 & + wgt_r(min(lat,latr-lat+1))*trcg(lat,n,2)
1703 if (abs(sumtrc(n,1)) > 1.0e-12 .and. kdt > kdt_start+1)
then 1706 tem = (sumtrc(n,3)-sumtrc(n,1)) / sumtrc(n,1)
1707 if (abs(tem) < 0.1)
then 1715 sumtrc(n,3) = sumtrc(n,2)
1722 if (
allocated(indxr))
deallocate (indxr)
DDT for fields typically only used for diagnostic output.
DDT for basic inputs of radiation and physics parameters.
DDT for radiation tendencies.
DDT for basic outputs from radiation and physics.
subroutine gbphys
Parameter descriptions include intent, name, description, and size.
DDT for data that changes frequently (e.g. inner loops)
DDT for data used for coupling (e.g. land and ocean)
DDT for data that has not been pigeonholed and is left to be determined.
DDT for non-changing model parameters - set once in initialize.
DDT for cloud data and parameters. Used by grrad and gbphys with different intent.
subroutine gloopb(grid_fld, g3d_fld, sfc_fld,
the interface between the dynamic core and the physics packages