Current modification gridinfo f 90 Add new subroutine
Current modification gridinfo. f 90 Add new subroutine: getgridinfo_reg --- calculate the pressure in each sigma level and the virture temperature gridio. f 90 Add new subroutine: readgriddata_reg (read in regional guess fields of ‘C’ grid), writegriddata_reg (output in ‘A ‘ grid) statevec. f 90 read_ensemble: Call readgriddata call readgriddata_reg ‘anal’ array rearrangement; write_ensemble: Call writegriddata call writegriddata_reg enkf_main. f 90 Call getgridinfo call getgridinfo_reg
Pressure calculation pt_ll=0. 01*ptop q_integral=1. 0 do k = 1, nlevsin deltasigma=eta 1(k)-eta 1(k+1) q_integral(: ) = q_integral(: )+deltasigma*qg(: , k, 1) enddo psfc_this_dry=0. 01*psfc(: )=(psfc_this_dry(: )-pt_ll)*q_integral(: )+pt_ll do k = 1, nlevsin psig(: , k)=eta 1(k)*(psfc(: )-pt_ll) + pt_ll pslg(: , k)=aeta 1(k)*(psfc(: )-pt_ll)+pt_ll enddo pslg = pslg*100. 0
Virtual temperature q(: , k) = qg(: , k, 1)/(1. +qg(: , k, 1)) ! Q = water vapor specific humidity ! q_bk = water vapor mixing ratio rd_over_cp=287. 04/1004. 67 ! calculated the temperature from the potention temperature do k = 1, nlevsin temp(: , k) = tempg(: , k)*(pslg(: , k)/1000)**rd_over_cp enddo ! get the virture tempature do k = 1, nlevsin tempg(: , k) = temp(: , k)*(1+0. 61*q(: , k)) enddo
Satellite data diagnose files • IPCHAN_RESERVE = 8 (global) • IPCHAN_RESERVE = 7 (regional) diagbufchan(1, i)=tb_obs(i) ! observed brightness temperature (K) diagbufchan(2, i)=tbc(i) ! observed - simulated Tb with bias corrrection (K) diagbufchan(3, i)=tbcnob(i) ! observed - simulated Tb with no bias correction (K) errinv = sqrt(varinv(i)) diagbufchan(4, i)=errinv ! inverse observation error useflag=one if (iuse_rad(ich(i))/=1) useflag=-one diagbufchan(5, i)= id_qc(i)*useflag! quality control mark or event indicator diagbufchan(6, i)=emissivity(i) ! surface emissivity diagbufchan(7, i)=tlapchn(i) ! stability index do j=1, npred+1 diagbufchan(7+j, i)=predterms(j, i) ! Tb bias correction terms (K) end do real(fp_diag) : : tbobs real(fp_diag) : : omgbc real(fp_diag) : : omgnbc real(fp_diag) : : errinv real(fp_diag) : : qcmark real(fp_diag) : : emiss real(fp_diag) : : tlap real(fp_diag) : : pres real(fp_diag) : : bifix real(fp_diag) : : bilap 2 real(fp_diag) : : bicons real(fp_diag) : : biang real(fp_diag) : : biclw ! Tb (obs) (K) ! Tb_(obs) - Tb_(simulated w/ bc) (K) ! Tb_(obs) - Tb_(simulated_w/o bc) (K) ! inverse error (K**(-1)) ! quality control mark ! surface emissivity ! temperature lapse rate ! pressure (mb) at max in weighting fn. ! fixed angle dependent bias ! lapse rate bias correction term ! square lapse rate bias correction term ! constant bias correction term ! scan angle bias correction term ! CLW bias correction term
datestring = " " ! mandatory ! corrlength (length for horizontal localization in km) corrlengthnh = 2800 corrlengthtr = 2800 corrlengthsh = 2800 ! min and max inflation. covinflatemin = 1. 0 covinflatemax = 1. e 30 ! lnsigcutoff (length for vertical localization in ln(p)) lnsigcutoffnh = 2. lnsigcutofftr = 2. lnsigcutoffsh = 2. lnsigcutoffsatnh = -999. ! value for satellite radiances lnsigcutoffsattr = -999. ! value for satellite radiances lnsigcutoffsatsh = -999. ! value for satellite radiances ! lnsigcovinfcutoff (length for vertical taper in inflation in ln(sigma)) lnsigcovinfcutoff = 6. ! ob time localization obtimelnh = 2800. *1000. /(30. *3600. ) ! hours to move 2800 km at 30 ms-1. obtimeltr = obtimelnh obtimelsh = obtimelnh ! path to data directory (include trailing slash) datapath = " " ! Mandatory
! path to data directory for previous analysis (include trailing slash) datapathprev = " " ! mandatory if analpertwt > 0 ! tolerance for background check. ! obs are not used if they are more than sqrt(S+R) from mean, ! where S is ensemble variance and R is observation error variance. sprd_tol = 9. 9 e 31 ! definition of tropics and mid-latitudes (for inflation). latbound = 25. ! this is where the tropics start delat = 10. ! width of transition zone. ! adaptive posterior inflation parameter. analpertwt = 0. 0 ! no inflation (1 means inflate all the way back to prior spread) ! fixed covariance inflation in NH, SH, tropics covinflatenh = 0. covinflatetr = 0. covinflatesh = 0. ! if ob prior posterior variance divided by prior variance ! less than this value, ob is skipped during serial processing. paoverpb_thresh = 1. 0 ! don't skip any obs ! partition state vector and obs randomly across processors ! (if. false. , use an algorithm based on Graham's rule) random_partition =. true. ! set to to 0 for the order they are read in, 1 for random order, or 2 for ! order of predicted posterior variance reduction (based on prior) iassim_order = 0 ! use height instead of virtual temp as analysis variable. use_height =. false. ! use 'pseudo-rh' analysis variable, as in GSI. pseudo_rh =. false. ! if deterministic is true, use En. SRF w/o perturbed obs. ! if false, use perturbed obs En. KF. deterministic =. true.
sortinc =. true. ! these are all mandatory. ! number of npts on grid npts = 0 ! total number of levels nlevs = 0 ! number of ensemble members nanals = 0 ! number of "tracers" in model state vector. ntrac = 3 ! nvars can be 5 (if neither ozone or cloud condensate updated), ! 6 (if ozone updated, but cloud condensate not updated) or ! 7 (if both ozone and cloud condensate updated). ! nvar = 1 is zonal wind, nvar = 2 is meridional wind ! nvar = 3 is thermodynamic variable, nvar = 4 is ! interface pressure (with 1 st level assumed to be surface, ! and top level assumed to be constant). nvars = 5 ! factor to multiply sat radiance errors. saterrfact = 1. ! number of times to iterate state/bias correction update. ! (only relevant when satellite radiances assimilated, i. e. nobs_sat>0) numiter = 1 ! use letkf instead of serial enkf for update. use_letkf=. false.
- Slides: 8