Presentation is loading. Please wait.

Presentation is loading. Please wait.

Current modification gridinfo.f90Add new subroutine: getgridinfo_reg --- calculate the pressure in each sigma level and the virture temperature gridio.f90Add.

Similar presentations


Presentation on theme: "Current modification gridinfo.f90Add new subroutine: getgridinfo_reg --- calculate the pressure in each sigma level and the virture temperature gridio.f90Add."— Presentation transcript:

1

2 Current modification gridinfo.f90Add new subroutine: getgridinfo_reg --- calculate the pressure in each sigma level and the virture temperature gridio.f90Add new subroutine: readgriddata_reg (read in regional guess fields of ‘C’ grid), writegriddata_reg (output in ‘A ‘ grid) statevec.f90read_ensemble: Call readgriddata  call readgriddata_reg ‘anal’ array rearrangement; write_ensemble: Call writegriddata  call writegriddata_reg enkf_main.f90Call getgridinfo  call getgridinfo_reg

3 Pressure calculation pt_ll=0.01*ptop q_integral=1.0 do k = 1, nlevsin deltasigma=eta1(k)-eta1(k+1) q_integral(:) = q_integral(:)+deltasigma*qg(:,k,1) enddo psfc_this_dry=0.01*psfc psfc(:)=(psfc_this_dry(:)-pt_ll)*q_integral(:)+pt_ll do k = 1, nlevsin psig(:,k)=eta1(k)*(psfc(:)-pt_ll) + pt_ll pslg(:,k)=aeta1(k)*(psfc(:)-pt_ll)+pt_ll enddo pslg = pslg*100.0

4 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

5 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 ! Tb (obs) (K) real(fp_diag) :: omgbc ! Tb_(obs) - Tb_(simulated w/ bc) (K) real(fp_diag) :: omgnbc ! Tb_(obs) - Tb_(simulated_w/o bc) (K) real(fp_diag) :: errinv ! inverse error (K**(-1)) real(fp_diag) :: qcmark ! quality control mark real(fp_diag) :: emiss ! surface emissivity real(fp_diag) :: tlap ! temperature lapse rate real(fp_diag) :: pres ! pressure (mb) at max in weighting fn. real(fp_diag) :: bifix ! fixed angle dependent bias real(fp_diag) :: bilap ! lapse rate bias correction term real(fp_diag) :: bilap2 ! square lapse rate bias correction term real(fp_diag) :: bicons ! constant bias correction term real(fp_diag) :: biang ! scan angle bias correction term real(fp_diag) :: biclw ! CLW bias correction term

6 datestring = " " ! mandatory ! corrlength (length for horizontal localization in km) corrlengthnh = 2800 corrlengthtr = 2800 corrlengthsh = 2800 ! min and max inflation. covinflatemin = 1.0 covinflatemax = 1.e30 ! 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

7 ! 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.9e31 ! 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 EnSRF w/o perturbed obs. ! if false, use perturbed obs EnKF. deterministic =.true.

8 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 1st 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.


Download ppt "Current modification gridinfo.f90Add new subroutine: getgridinfo_reg --- calculate the pressure in each sigma level and the virture temperature gridio.f90Add."

Similar presentations


Ads by Google