1 #include "../../../ESMFVersionDefine.h" 71 USE gfs_physics_internal_state_mod
, ONLY: gfs_physics_internal_state
76 USE mpi_def
, ONLY: mc_comp, mc_io, mpi_comm_all_dup, mpi_comm_all
77 USE resol_def
, ONLY: g_dpdt, lotgr, g_p, g_dp, nrcm, g_q, &
78 g_gz, g_u, g_v, g_ps, g_t, ntoz, &
79 ntcw, lonr, latr, ncld, num_p3d, num_p2d,npdf3d,&
80 ncnvcld3d,lsoil,nmtvr,levr,nlunit, ntrac, nxpt, &
81 jcap, levs, nypt, jintmx, ngrids_sfcc, &
83 ngrids_sfcc2d,ngrids_sfcc3d, &
86 ngrids_flx, levp1, lonrx, nfxr, ngrids_gg, &
87 levm1, ivssfc, thermodyn_id, sfcpress_id, &
88 ivssfc_restart, latrd, latr2, ivsupa, levh, &
89 lgocart, scatter_lats, scatter_lons, &
90 nr_nst, nf_nst, ngrids_nst, ivsnst, &
91 nshoc_3d, nshoc_2d, ntke, ntot3d, ntot2d, &
92 ntiw, ntlnc, ntinc, nto, nto2
94 use mod_state
, ONLY: buff_mult_piecea2d,buff_mult_piecea3d, &
95 buff_mult_piecef,buff_mult_pieceg, &
97 use coordinate_def
, ONLY: ak5,bk5,ck5
98 use vert_def
, only: sl,si
100 USE ozne_def
, ONLY: levozc, latsozp, blatc, timeozc, timeoz, &
101 kozpl, levozp, pl_time, pl_lat, pl_pres, &
102 kozc, dphiozc, latsozc, pl_coeff
103 use h2o_def
, only: levh2o, latsh2o, h2o_lat, h2o_pres, h2o_time, &
104 h2o_coeff, kh2opltc, timeh2o
105 USE namelist_physics_def, &
106 only: ras, cscnv, jo3, ldiag3d, ngptc, ens_nam, &
107 reduced_grid, grid_aldata, nstf_name, &
108 isol, ico2, ialb,iems, isot,ivegsrc,iaer, &
109 iovr_sw,iovr_lw,ictm, isubc_sw,isubc_lw, &
110 use_nuopc,crick_proof, ccnorm, norad_precip, &
111 hybrid, gen_coord_hybrid, climate, &
112 a2oi_out, cplflx, stochphys, do_shoc, &
114 flipv, pre_rad, lsm, imfshalcnv,imfdeepcnv, &
115 ncw, crtrh, cdmbgwd, ccwf, dlqf, ctei_rm, cgwf, &
116 prslrd0, ral_ts,old_monin, cnvgwd, shal_cnv, &
117 cal_pre, mom4ice, mstrat, trans_trac, moist_adj,&
118 lsidea, pdfcld, shcnvcw, redrag, hybedmf, &
119 dspheat, shoc_cld, shocaftcnv,nemsio_in, &
120 h2o_phys, mg_dcs, mg_qcvar, mg_ts_auto_ice
122 USE module_ras
, ONLY: nrcmax, fix_ncld_hr
123 use cs_conv
, only: nctp
124 use physcons
, only: max_lon, max_lat, min_lon, min_lat, dxmin, dxmax, dxinv
126 USE gg_def
, ONLY: sinlat_r, coslat_r, wgtcs_r, rcs2_r, wgt_r, &
128 USE layout1
, ONLY: nodes_comp, lats_node_r_max, lats_node_r, &
129 nodes, lon_dims_ext, lon_dims_r,idrt, &
130 ipt_lats_node_r, me, comp_task
131 USE date_def
, ONLY: idate, fhour
134 USE gfs_physics_sfc_flx_set_mod, &
135 only: sfcvar_aldata, flxvar_aldata, flx_init, sfc_init
136 USE d3d_def
, ONLY: d3d_init, d3d_zero
137 use machine
, ONLY : kind_io4
138 USE sfcio_module
, ONLY: sfcio_axdbta
140 USE gfs_physics_gridgr_mod
, ONLY: gridvar_aldata
141 USE gfs_physics_g3d_mod
, ONLY: g3d_aldata
142 USE gfs_physics_g2d_mod
, ONLY: g2d_aldata
143 use gfs_phy_tracer_config
, ONLY: gfs_phy_tracer, tracer_config_init
144 use gfs_physics_nst_var_mod
, ONLY: nstvar_aldata, nst_init
145 use module_radsw_parameters
, only: nbdsw
146 use module_radlw_parameters
, only: nbdlw
147 use cldwat2m_micro
, only: ini_micro
148 use aer_cloud
, only: aer_cloud_init
149 use gfs_physics_aoi_var_mod
150 use module_cplfields
, only: nimportfields
166 integer,
parameter :: iunit=101
167 type(gfs_physics_internal_state),
pointer,
intent(inout) :: gis_phy
168 integer,
intent(out) :: rc
172 integer :: i, j, k, l, n, ilat, locl, ikey,&
173 nrank_all,nblck,latrhf,iret
174 integer :: num_parthds
175 logical :: file_exists=.false.
177 real (kind=kind_io4) blatc4
178 real (kind=kind_io4),
allocatable,
dimension(:) :: pl_lat4, pl_pres4, &
179 pl_time4, h2o_lat4, h2o_pres4, h2o_time4
181 real (kind=kind_phys),
allocatable :: si_loc(:)
183 real (kind=kind_phys),
parameter :: typical_pgr=95.0
186 integer,
parameter :: iflip = 1
188 real (kind=8) :: phys_ini_time=0, btime, timef
197 nodes = gis_phy%nodes
200 call compns_physics(gis_phy%deltim, gis_phy%iret, gis_phy%ntrac, &
201 gis_phy%nxpt, gis_phy%nypt, gis_phy%jintmx,&
202 gis_phy%jcap, gis_phy%levs, gis_phy%levr, &
203 gis_phy%lonr, gis_phy%latr, &
204 gis_phy%ntoz, gis_phy%ntcw, gis_phy%ncld, &
205 gis_phy%ntiw, gis_phy%ntlnc, gis_phy%ntinc, &
206 gis_phy%nto, gis_phy%nto2, &
207 gis_phy%ntke, gis_phy%lsoil, gis_phy%nmtvr,&
208 gis_phy%num_p3d, gis_phy%num_p2d, &
209 gis_phy%npdf3d, gis_phy%ncnvcld3d, &
210 gis_phy%nshoc_3d, gis_phy%nshoc_2d, &
211 gis_phy%ntot3d, gis_phy%ntot2d, &
212 gis_phy%thermodyn_id, gis_phy%sfcpress_id, &
213 gis_phy%nam_gfs_phy%nlunit, me, &
214 gis_phy%nam_gfs_phy%gfs_phy_namelist)
221 CALL set_soilveg(me,isot,ivegsrc,gis_phy%nam_gfs_phy%nlunit)
232 call tracer_config_init( gis_phy%ntrac, gis_phy%ntoz, &
233 gis_phy%ntcw, gis_phy%ncld, &
234 gis_phy%ntiw, gis_phy%ntlnc, &
235 gis_phy%ntinc, gis_phy%ntke, &
236 gis_phy%nto, gis_phy%nto2, me )
238 gis_phy%lgocart = gfs_phy_tracer%doing_GOCART
239 lgocart = gis_phy%lgocart
241 write(0,*)
'LU_TRC, ntrac =',gfs_phy_tracer%ntrac, gis_phy%ntrac
242 write(0,*)
'LU_TRC, ntrac_met =',gfs_phy_tracer%ntrac_met
243 write(0,*)
'LU_TRC, ntrac_chem=',gfs_phy_tracer%ntrac_chem
244 write(0,*)
'LU_TRC, lgocart =',gis_phy%lgocart,lgocart
245 do n = 1, gfs_phy_tracer%ntrac
246 write(0,*)
'LU_TRC, tracer_vname=',gfs_phy_tracer%vname(n)
251 nlunit = gis_phy%nam_gfs_phy%nlunit
252 ntrac = gis_phy%ntrac
255 jintmx = gis_phy%jintmx
265 ntlnc = gis_phy%ntlnc
266 ntinc = gis_phy%ntinc
270 lsoil = gis_phy%lsoil
271 nmtvr = gis_phy%nmtvr
272 num_p3d = gis_phy%num_p3d
273 num_p2d = gis_phy%num_p2d
274 npdf3d = gis_phy%npdf3d
275 ncnvcld3d = gis_phy%ncnvcld3d
276 nshoc_3d = gis_phy%nshoc_3d
277 nshoc_2d = gis_phy%nshoc_2d
278 ntot3d = gis_phy%ntot3d
279 ntot2d = gis_phy%ntot2d
280 thermodyn_id = gis_phy%thermodyn_id
281 sfcpress_id = gis_phy%sfcpress_id
282 if (gis_phy%nam_gfs_phy%Total_Member <= 1)
then 285 write(ens_nam,
'("_",I2.2)') gis_phy%nam_gfs_phy%Member_Id
290 ivssfc_restart = 200509
291 if (ivssfc > ivssfc_restart) ivssfc_restart = ivssfc
294 allocate(gis_phy%zsoil(lsoil))
296 gis_phy%zsoil = (/-0.1,-2.0/)
297 elseif(lsoil == 4)
then 298 gis_phy%zsoil = (/-0.1,-0.4,-1.0,-2.0/)
302 if (levs > 99) ivsupa = 200509
305 latrd = latr + 2*jintmx
309 lonrx = lonr + 1 + 2*nxpt + 1
311 ngrids_sfcc = 32+lsoil*3
314 ngrids_sfcc3d = lsoil*3
316 gis_phy%climate = climate
328 ngrids_gg = 2+levs*(4+ntrac)
332 if (nstf_name(1) > 0)
then 336 ngrids_nst = nr_nst + nf_nst
347 allocate ( lon_dims_r(latr), stat = ierr )
348 allocate ( lon_dims_ext(latrd), stat = ierr )
350 allocate(colrad_r(latr), stat = ierr)
351 allocate(wgt_r(latr2), stat = ierr)
352 allocate(wgtcs_r(latr2), stat = ierr)
353 allocate(rcs2_r(latr2), stat = ierr)
354 allocate(sinlat_r(latr), stat = ierr)
355 allocate(coslat_r(latr), stat = ierr)
357 allocate ( gis_phy%lats_nodes_r(nodes), stat = ierr )
358 allocate ( gis_phy%lats_nodes_ext(nodes), stat = ierr )
359 allocate ( gis_phy%global_lats_r(latr), stat = ierr )
360 allocate ( gis_phy%global_lats_ext(latr), stat = ierr )
361 allocate ( gis_phy%lonsperlar(latr), stat = ierr)
362 allocate ( gis_phy%lats_nodes_r_fix(nodes), stat = ierr )
365 if (me == 0)
write(0,*)
' in gfs_physics_initialize reduced_grid=',reduced_grid
367 if( reduced_grid )
then 368 if (me == 0) print *,
' run with reduced gaussian grid ' 369 inquire (file=
"lonsperlar.dat", exist=file_exists)
370 if ( .not. file_exists )
then 372 print *,
' Requested lonsperlar.dat data file does not exist' 373 print *,
' *** Stopped in subroutine GFS_Init !!' 377 open (iunit,file=
'lonsperlar.dat',status=
'old',form=
'formatted', &
378 action=
'read',iostat=iret)
380 write(0,*)
' iret while reading lonsperlar.dat ',iret
384 read (iunit,*,iostat=iret) latrhf,(gis_phy%lonsperlar(i),i=1,latrhf)
385 if (latrhf+latrhf /= latr)
then 386 write(0,*)
' latrhf=',latrhf,
' not equal to latr/2=',latr/2
390 gis_phy%lonsperlar(latr-i+1) = gis_phy%lonsperlar(i)
396 if (me == 0) print *,
' run with full gaussian grid ' 398 gis_phy%lonsperlar(j) = lonr
412 lotgr = g_dpdt+ levs - 1
422 gis_phy%g_dpdt = g_dpdt
424 gis_phy%lotgr = lotgr
428 if (fix_ncld_hr)
then 429 nrcm = min(nrcmax, levs-1) * (gis_phy%deltim/1200) + 0.10001
431 nrcm = min(nrcmax, levs-1)
440 read (kozc,end=101) latsozc, levozc, timeozc, blatc4
441 101
if (levozc < 10 .or. levozc > 100)
then 455 read (kozpl) pl_coeff, latsozp, levozp, timeoz
456 allocate (pl_lat(latsozp), pl_pres(levozp),pl_time(timeoz+1), stat = ierr)
457 allocate (pl_lat4(latsozp), pl_pres4(levozp),pl_time4(timeoz+1), stat = ierr)
459 read (kozpl) pl_coeff, latsozp, levozp, timeoz, pl_lat4, pl_pres4, &
461 pl_pres(:) = pl_pres4(:)
462 pl_lat(:) = pl_lat4(:)
463 pl_time(:) = pl_time4(:)
466 if (
allocated(pl_lat4))
deallocate(pl_lat4)
467 if (
allocated(pl_pres4))
deallocate(pl_pres4)
468 if (
allocated(pl_time4))
deallocate(pl_time4)
470 dphiozc = -(blatc+blatc)/(latsozc-1)
484 print *,
' latsozp=',latsozp,
' levozp=',levozp,
' timeoz=',timeoz
485 print *,
' latsozc=',latsozc,
' levozc=',levozc,
' timeozc=', &
486 timeozc,
'dphiozc=',dphiozc
494 pl_pres(:) = log(100.0*pl_pres(:))
496 allocate(gis_phy%OZPLIN(latsozp,levozp,pl_coeff,timeoz), stat = ierr)
504 read (kh2opltc) h2o_coeff, latsh2o, levh2o, timeh2o
505 allocate (h2o_lat(latsh2o), h2o_pres(levh2o), h2o_time(timeh2o+1))
506 allocate (h2o_lat4(latsh2o), h2o_pres4(levh2o), h2o_time4(timeh2o+1))
508 read (kh2opltc) h2o_coeff, latsh2o, levh2o, timeh2o, h2o_lat4, &
510 h2o_pres(:) = h2o_pres4(:)
511 h2o_lat(:) = h2o_lat4(:)
512 h2o_time(:) = h2o_time4(:)
514 print *,
' h2o_coeff=',h2o_coeff
515 print *,
' latsh2o=',latsh2o,
' levh2o=',levh2o,
' timeh2o=',timeh2o
516 print *,
' h2o_lat=',h2o_lat
517 print *,
' h2o_pres=',h2o_pres
518 print *,
' h2o_time=',h2o_time
520 h2o_pres(:) = log(100.0*h2o_pres(:))
522 allocate(gis_phy%H2OPLIN(latsh2o,levh2o,h2o_coeff,timeh2o))
523 deallocate (h2o_lat4, h2o_pres4, h2o_time4)
525 latsh2o = 1 ; levh2o = 1 ; timeh2o = 1 ; h2o_coeff = 1
526 allocate (h2o_lat(latsh2o), h2o_pres(levh2o), h2o_time(timeh2o+1))
527 allocate(gis_phy%H2OPLIN(latsh2o,levh2o,h2o_coeff,timeh2o))
533 dxmax = log(1.0/(max_lon*max_lat))
534 dxmin = log(1.0/(min_lon*min_lat))
535 dxinv = 1.0 / (dxmax-dxmin)
536 if (me == 0)
write(0,*)
' dxmax=',dxmax,
' dxmin=',dxmin,
' dxinv=',dxinv
578 comp_task = me < nodes_comp
586 print*,
'number of threads is ',num_parthds()
594 print*,
'number of mpi procs is ',nodes
598 gis_phy%cons0 = 0.0d0
599 gis_phy%cons0p5 = 0.5d0
600 gis_phy%cons1200 = 1200.d0
601 gis_phy%cons3600 = 3600.d0
606 if(gis_phy%iret.ne.0)
then 607 if(me == 0) print *,
' incompatible physics namelist -', &
608 ' aborted in gfs_phy_initilize ',gis_phy%iret
616 gis_phy%lats_nodes_ext = 0
619 call getcon_physics(gis_phy%n3,gis_phy%n4, &
620 gis_phy%lats_nodes_r,gis_phy%global_lats_r, &
621 gis_phy%lonsperlar, &
622 gis_phy%lats_nodes_ext,gis_phy%global_lats_ext,&
623 gis_phy%colat1,gis_phy%idrt)
629 gis_phy%lats_node_r_max = lats_node_r_max
630 gis_phy%lats_nodes_r_fix(:) = gis_phy%lats_node_r_max
633 allocate(scatter_lats(latr))
634 allocate(scatter_lons(latr))
635 scatter_lats(1:latr) = gis_phy%global_lats_r(1:latr)
636 scatter_lons(1:latr) = gis_phy%lonsperlar(1:latr)
642 call sfcvar_aldata(lonr, lats_node_r_max, lsoil, gis_phy%sfc_fld, ierr)
643 call sfc_init(gis_phy%sfc_fld, ierr)
644 call flxvar_aldata(lonr, lats_node_r_max, gis_phy%flx_fld, ierr)
647 IF (me == 0)
write(*,*)
' in "GFS_Initialize_ESMFMod,lonr,lats_node_r,& 648 nr_nst,nf_nst : ',lonr,lats_node_r,nr_nst,nf_nst, &
649 'lats_node_r_max=',lats_node_r_max
657 if (nstf_name(1) > 0)
then 658 call nstvar_aldata(lonr,lats_node_r_max,gis_phy%nst_fld,ierr)
659 call nst_init(gis_phy%nst_fld, ierr)
663 if (a2oi_out .or. cplflx)
then 664 call aoivar_aldata(lonr,lats_node_r_max,gis_phy%aoi_fld,ierr)
668 gis_phy%grid_aldata = grid_aldata
669 if ( gis_phy%grid_aldata )
then 670 if( me == 0) print *,
'LU_PHY: grid_fld allocated ; copy is used' &
671 ,
' gis_phy%ntrac=',gis_phy%ntrac
672 call gridvar_aldata (lonr, lats_node_r_max, levs, &
673 gis_phy%ntrac, gis_phy%grid_fld, ierr)
675 allocate (gis_phy%grid_fld%rqtk(lonr,lats_node_r_max))
676 if( me == 0) print *,
'LU_PHY: grid_fld not allocated ; pointer is used' 683 ALLOCATE (gis_phy%XLON(lonr,lats_node_r), stat = ierr)
684 ALLOCATE (gis_phy%XLAT(lonr,lats_node_r), stat = ierr)
685 ALLOCATE (gis_phy%COSZDG(lonr,lats_node_r), stat = ierr)
686 ALLOCATE (gis_phy%SFALB(lonr,lats_node_r), stat = ierr)
687 ALLOCATE (gis_phy%HPRIME(nmtvr,lonr,lats_node_r), stat = ierr)
688 ALLOCATE (gis_phy%FLUXR(nfxr,lonr,lats_node_r), stat = ierr)
690 ALLOCATE (gis_phy%importData(lonr,lats_node_r,nimportfields),stat = ierr)
691 gis_phy%importData = -99999.0
693 nblck = lonr/ngptc + 1
694 gis_phy%NBLCK = nblck
696 ALLOCATE (gis_phy%SWH(ngptc,levs,nblck,lats_node_r), stat = ierr)
697 ALLOCATE (gis_phy%HLW(ngptc,levs,nblck,lats_node_r), stat = ierr)
699 ALLOCATE (gis_phy%SWHC(ngptc,levs,nblck,lats_node_r), stat = ierr)
700 ALLOCATE (gis_phy%HLWC(ngptc,levs,nblck,lats_node_r), stat = ierr)
708 ALLOCATE (gis_phy%JINDX1(lats_node_r), stat = ierr)
709 ALLOCATE (gis_phy%JINDX2(lats_node_r), stat = ierr)
710 ALLOCATE (gis_phy%DDY(lats_node_r), stat = ierr)
712 ALLOCATE (gis_phy%JINDX1_h(lats_node_r),gis_phy%JINDX2_h(lats_node_r))
713 ALLOCATE (gis_phy%DDY_h(lats_node_r))
715 ALLOCATE (gis_phy%JINDX1_h(1),gis_phy%JINDX2_h(1),gis_phy%DDY_h(1))
718 allocate (gis_phy%phy_f3d(ngptc,levs,ntot3d,nblck,lats_node_r), stat = ierr)
719 allocate (gis_phy%phy_f2d(lonr,lats_node_r,ntot2d), stat = ierr)
721 gis_phy%num_ctp = nctp
725 allocate (gis_phy%phy_fctd(lonr,lats_node_r,gis_phy%num_ctp), stat = ierr)
727 allocate (gis_phy%fhour_idate(1,5), stat = ierr )
735 call d3d_init(ngptc,nblck,lonr,lats_node_r_max,levs,pl_coeff)
740 call g3d_aldata (lonr, lats_node_r_max, levs, &
741 gis_phy%g3d_fld, ierr)
743 call g2d_aldata (lonr, lats_node_r_max, gfs_phy_tracer, &
744 gis_phy%g2d_fld, ierr)
747 if ( gis_phy%g2d_fld%du%nfld > 0 ) &
748 ngrids_aer = ngrids_aer+gis_phy%g2d_fld%du%nfld
750 if ( gis_phy%g2d_fld%su%nfld > 0 ) &
751 ngrids_aer = ngrids_aer+gis_phy%g2d_fld%su%nfld
753 if ( gis_phy%g2d_fld%oc%nfld > 0 ) &
754 ngrids_aer = ngrids_aer+gis_phy%g2d_fld%oc%nfld
756 if ( gis_phy%g2d_fld%bc%nfld > 0 ) &
757 ngrids_aer = ngrids_aer+gis_phy%g2d_fld%bc%nfld
759 if ( gis_phy%g2d_fld%ss%nfld > 0 ) &
760 ngrids_aer = ngrids_aer+gis_phy%g2d_fld%ss%nfld
762 if ( gis_phy%g2d_fld%met%nfld > 0 ) &
763 ngrids_aer = ngrids_aer+gis_phy%g2d_fld%met%nfld
768 if (ntot3d > 0) gis_phy%phy_f3d = 0.0
769 if (ntot2d > 0) gis_phy%phy_f2d = 0.0
770 if (cscnv) gis_phy%phy_fctd = 0.0
773 allocate(buff_mult_piecea2d(lonr,lats_node_r_max,ngrids_sfcc2d+1))
774 allocate(buff_mult_piecea3d(lonr,lats_node_r_max,ngrids_sfcc3d+1))
775 allocate(buff_mult_piecef(lonr,lats_node_r_max,ngrids_flx+1))
776 allocate(buff_mult_pieceg(lonr,lats_node_r_max,ngrids_aer+1))
777 if (nstf_name(1) > 0)
then 778 allocate(buff_mult_piecenst(lonr,lats_node_r_max,ngrids_nst+1))
785 buff_mult_piecea2d(1:lonr,1:lats_node_r_max,1:ngrids_sfcc2d+1) = 0.
786 buff_mult_piecea3d(1:lonr,1:lats_node_r_max,1:ngrids_sfcc3d+1) = 0.
787 buff_mult_piecef(1:lonr,1:lats_node_r_max,1:ngrids_flx+1) = 0.
788 buff_mult_pieceg(1:lonr,1:lats_node_r_max,1:ngrids_aer+1) = 0.
789 if (nstf_name(1) > 0)
then 790 buff_mult_piecenst(1:lonr,1:lats_node_r_max,1:ngrids_nst+1) = 0.
797 call fix_fields(gis_phy%LONSPERLAR, gis_phy%GLOBAL_LATS_R, &
798 gis_phy%XLON, gis_phy%XLAT, gis_phy%sfc_fld, &
799 gis_phy%nst_fld, gis_phy%HPRIME, gis_phy%JINDX1, &
800 gis_phy%JINDX2, gis_phy%DDY, gis_phy%OZPLIN, &
801 gis_phy%JINDX1_h, gis_phy%JINDX2_h, gis_phy%DDY_h, &
803 gis_phy%nam_gfs_phy%sfc_ini, &
804 gis_phy%nam_gfs_phy%grd_ini, &
805 gis_phy%nam_gfs_phy%nst_ini, &
806 nblck, gis_phy%phy_f3d, gis_phy%phy_f2d )
812 gis_phy%lats_node_r = lats_node_r
813 gis_phy%ipt_lats_node_r = ipt_lats_node_r
840 allocate (si_loc(levr+1))
841 if ( hybrid .and. (.not.gen_coord_hybrid) )
then 854 si_loc(levr+1-k) = ak5(levp1-levr+k)/typical_pgr &
855 & + bk5(levp1-levr+k)
859 si_loc(k) = float(levr+1-k) / float(levr)
862 if (me == 0)
write(0,*)
' si_loc=',si_loc(1:levr+1)
882 si_loc(levr+1) = si(levp1)
893 if ( .not. use_nuopc )
then 896 & ( si_loc,levr,ictm,isol,ico2,iaer,ialb,iems,ntcw, &
897 & num_p3d,npdf3d,ntoz,iovr_sw,iovr_lw,isubc_sw,isubc_lw, &
898 & crick_proof,ccnorm,norad_precip,idate,iflip,me )
902 call ini_micro(mg_dcs,mg_qcvar,mg_ts_auto_ice)
903 call aer_cloud_init()
911 gis_phy%zhour = gis_phy%phour
914 write(0,*)
' in physics initialize phour=',gis_phy%phour, &
915 ' fhour=',fhour,
' zhour=',gis_phy%zhour
919 call flx_init(gis_phy%flx_fld, ierr)
922 if (a2oi_out .or. cplflx)
then 923 call aoivar_init(gis_phy%aoi_fld, ierr)
932 call ozoneini(gis_phy%mdl_parm, gis_phy%JINDX1,gis_phy%JINDX2,gis_phy%OZPLIN,gis_phy%DDY)
933 call h2oini(gis_phy%mdl_parm, gis_phy%JINDX1_h,gis_phy%JINDX2_h,&
934 gis_phy%H2OPLIN,gis_phy%DDY_h, h2o_pres(1:levh2o))
936 associate(mdl_parm => gis_phy%mdl_parm)
939 mdl_parm, ntcw, ncld, ntoz, ntrac, levs, me, lsoil, ntiw,ntlnc,ntinc, &
940 lsm, nmtvr, nrcm, levozp, levh2o, lonr, latr, jcap, num_p3d, num_p2d, &
941 npdf3d, ncnvcld3d, pl_coeff, ncw, crtrh, cdmbgwd, ccwf, dlqf,ctei_rm, &
942 cgwf, prslrd0, ral_ts, ras, pre_rad, ldiag3d, lgocart,cplflx,flipv, &
943 old_monin,cnvgwd, shal_cnv, imfshalcnv,imfdeepcnv, cal_pre, mom4ice, &
944 mstrat,trans_trac,nstf_name,moist_adj,thermodyn_id,sfcpress_id, &
945 gen_coord_hybrid, levr, lsidea, pdfcld, shcnvcw, redrag, &
946 hybedmf, dspheat, dxmax, dxmin, dxinv, h2o_phys, h2o_coeff,&
947 cscnv, gis_phy%num_ctp, ntke, do_shoc, shocaftcnv, ntot3d, ntot2d, &
948 si_loc, ictm, isol, ico2, iaer, ialb, iems, isot, ivegsrc,&
949 iovr_sw,iovr_lw,isubc_sw,isubc_lw, shoc_cld, &
950 crick_proof,ccnorm,norad_precip,idate,iflip,nlunit, gis_phy%lats_node_r)
952 call mdl_parm%print(
"In gfs_physics_initialize")
959 gis_phy% start_step = .true.
963 if (
allocated(si_loc))
deallocate (si_loc)
964 phys_ini_time = phys_ini_time + (timef() - btime)
965 write(0,*)
' phys_ini_time=',phys_ini_time*1.0e-3,
' me=',me
subroutine, public nuopc_phys_init(mdl, ntcw, ncld, ntoz, NTRAC, levs, me, lsoil, ntiw, ntlnc, ntinc, lsm, nmtvr, nrcm, levozp, levh2o, lonr, latr, jcap, num_p3d, num_p2d, npdf3d, ncnvcld3d, pl_coeff, ncw, crtrh, cdmbgwd, ccwf, dlqf, ctei_rm, cgwf, prslrd0, ral_ts, ras, pre_rad, ldiag3d, lgocart, lssav_cpl, flipv, old_monin, cnvgwd, shal_cnv, imfshalcnv, imfdeepcnv, cal_pre, mom4ice, mstrat, trans_trac, nstf_name, moist_adj, thermodyn_id, sfcpress_id, gen_coord_hybrid, levr, lsidea, pdfcld, shcnvcw, redrag, hybedmf, dspheat, dxmaxin, dxminin, dxinvin, h2o_phys, h2o_coeff,
— initialization module of the gridded component of gfs physics.
subroutine rad_initialize
subroutine, public phys_init_savein(levr, ntcw, ncld, ntoz, NTRAC, levs, me, lsoil, lsm, nmtvr, nrcm, levozp, lonr, latr, jcap, num_p3d, num_p2d, npdf3d, ncnvcld3d, pl_coeff, ncw, nstf_name, thermodyn_id, sfcpress_id, crtrh, cdmbgwd, ccwf, dlqf, ctei_rm, cgwf, prslrd0, ral_ts, ras, pre_rad, ldiag3d, lgocart, lssav_cpl, flipv, old_monin, cnvgwd, shal_cnv, imfshalcnv, imfdeepcnv, cal_pre, mom4ice, mstrat, trans_trac, moist_adj, gen_coord_hybrid, lsidea, pdfcld, shcnvcw, redrag, hybedmf, dspheat, dxmax, dxmin, dxinv,
subroutine, public phys_init_readin(levr, ntcw, ncld, ntoz, NTRAC, levs, me, lsoil, lsm, nmtvr, nrcm, levozp, lonr, latr, jcap, num_p3d, num_p2d, npdf3d, ncnvcld3d, pl_coeff, ncw, nstf_name, thermodyn_id, sfcpress_id, crtrh, cdmbgwd, ccwf, dlqf, ctei_rm, cgwf, prslrd0, ral_ts, ras, pre_rad, ldiag3d, lgocart, lssav_cpl, flipv, old_monin, cnvgwd, shal_cnv, imfshalcnv, imfdeepcnv, cal_pre, mom4ice, mstrat, trans_trac, moist_adj, gen_coord_hybrid, lsidea, pdfcld, shcnvcw, redrag, hybedmf, dspheat, dxmaxin, dxminin, dxinvin,
Reads inputs that are used for nuopc_phys_init from init_savein.dat.
subroutine, public h2oini(this, jindx1_h, jindx2_h, h2oplin, ddy_h, h2o_pres)
subroutine, public ozoneini(this, jindx1, jindx2, ozplin, ddy)
Writes inputs that are used for nuopc_phys_init to init_savein.dat.
DDT for non-changing model parameters - set once in initialize.
subroutine gfs_physics_initialize(gis_phy, rc)
the interface between the dynamic core and the physics packages
subroutine set_soilveg(me, isot, ivet, nlunit)