⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 enkf_ini.f90

📁 CLM集合卡曼滤波数据同化算法
💻 F90
字号:
     	subroutine enkf_ini( )!  -------------------------------------------------------------------------- ! | This procedure is used for the initilization of ensemble state variables |! | and ensemble derived time-varying parameters. this procedure also        |! | allocates space for remote sensing data. The model error and observation |! | operator error are read into matrice W and Q which are defined in        | ! | enkfpar_module.note that the ensemble is needed to be the realizations   | ! | of a certain distribution representing uncertainty in initial conditions | ! |                                                                          |! |                                                                          |! |                                                                          |! | source file: enkf_ini.f90                                                |! | author : Qin Jun, 5/29/2004                                              |!  --------------------------------------------------------------------------	  use clmtv_module	  use enkftv_module	  use enkfpar_module          use clmpar_module          use enkfobs_module 	  implicit none	  integer :: ii, jj, kk, mm, nn          integer :: i , j , k , m , n          integer :: a,b          lun_obs = 6666           open(unit=lun_obs,file='bj_2004_sat',form='formatted') !          open(unit=7777,file='model_error.txt',form='formatted')!          open(unit=8888,file='observation_error.txt',form='formatted')!          open(unit=9999,file='correlation.txt',form='formatted')!         read(7777,*)((W(a,b),b=1,32),a=1,32)!          read(8888,*)Q            Q=10.0!  -----------------------------------------------------------------! | the Rhoc matrix and the sigman vector are initialized in the    | ! | following.                                                      | ! |                                                                 | !  -----------------------------------------------------------------                            do i = 1,10               Sigman(i) = 0.01           end do           Rhoc(:,:) = 0.0E+0           do i = 1, 10              do j = 1, 10                 Rhoc(i,j) = exp(-1*Betat*ABS(z(i)-z(j)))                    end do           end dowrite(*,*)((Rhoc(a,b),b=1,10),a=1,10) ! -----------------------------------------------------------------          !         allocate(sat_obs(1:4,1:kpt))	  call enkftv_allocate (lpt, kpt, maxsnl, msl, Ne)	  do kk = 1, Ne! ---------------------------------------------------! ** firstly, manipulate one-dimensional variables **! ---------------------------------------------------             en_iyear(kk) = iyear                en_jday (kk) = jday             en_mcsec(kk) = mcsec                do ii = 1, kpt! ----------------------------------------------------! ** secondly, deal with two-dimensional variables  **  ! ----------------------------------------------------                en_snl   (ii, kk) = snl  (ii)                                                     		en_fveg  (ii, kk) = fveg (ii)                                      		en_green (ii, kk) = green(ii)                                                  		en_fsno  (ii, kk) = fsno (ii)                                                       		en_sigf  (ii, kk) = sigf (ii)                                                       		en_tlsun (ii, kk) = tlsun(ii)                                                        		en_tlsha (ii, kk) = tlsha(ii)                                                       		en_ldew  (ii, kk) = ldew (ii)                                                       		en_sag   (ii, kk) = sag  (ii)                                                        		en_scv   (ii, kk) = scv  (ii)                                                       		en_snowdp(ii, kk) = snowdp(ii)                                                      		en_etrc  (ii, kk) = etrc (ii)                                                       		en_tg    (ii, kk) = tg   (ii)                                                      		en_lai   (ii, kk) = lai  (ii)                                                      		en_sai   (ii, kk) = sai  (ii)                                                      		en_xerr  (ii, kk) = xerr (ii)                                                     		en_zerr  (ii, kk) = zerr (ii)                                                      		en_thermk(ii, kk) = thermk(ii)                                                     		en_extkb (ii, kk) = extkb(ii)                                                      		en_extkd (ii, kk) = extkd(ii)                                  		en_cosz  (ii, kk) = cosz (ii)       ! -----------------------------------------------------! ** secondly, cope with three-dimensional variables **! -----------------------------------------------------                do jj = maxsnl+1, msl			   en_dz  (jj, ii, kk)  =  dz   (jj, ii)                                                      			   en_z   (jj, ii, kk)  =  z    (jj, ii)                                                           			   en_tss (jj, ii, kk)  =  tss  (jj, ii)                                                      			   en_wliq(jj, ii, kk)  =  wliq (jj, ii)                                                    			   en_wice(jj, ii, kk)  =  wice (jj, ii)   		end do		do jj = maxsnl+0, msl			   en_zi(jj, ii, kk)  =  zi   (jj, ii)   		end do		do jj = 1, msl			   en_rootr(jj, ii, kk)  =  rootr(jj, ii) 		end do!  ------------------------------------------------------!  **  thirdly, manipulate four-dimensional varialbes  **!  ------------------------------------------------------                do mm =1, 2	       	   do nn= 1, 2		      en_albg  (mm, nn, ii, kk)  =  albg (mm, nn, ii)                                                 		      en_albv  (mm, nn, ii, kk)  =  albv (mm, nn, ii)                                                              		      en_alb   (mm, nn, ii, kk)  =  alb  (mm, nn, ii)                                                         		      en_ssun  (mm, nn, ii, kk)  =  ssun (mm, nn, ii)                                                        		      en_ssha  (mm, nn, ii, kk)  =  ssha (mm, nn, ii)                                                        		      en_tranc (mm, nn, ii, kk)  =  tranc(mm, nn, ii) 		    end do		end do	 end do        end do! ######################################################################! # the following code used to generate initial ensemble temperature! # profile! #! ######################################################################      end subroutine enkf_ini

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -