[Dart-dev] DART/branches Revision: 10917

dart at ucar.edu dart at ucar.edu
Wed Jan 18 15:23:53 MST 2017


mizzi at ucar.edu
2017-01-18 15:23:53 -0700 (Wed, 18 Jan 2017)
215
Tim again:  adding anything that might possibly be useful.
There are still some things in backup directories or directories with
revision numbers in them, but this looks like the likely candidates
to Nancy and me.




Added: DART/branches/mizzi/models/wrf_chem/dart_clamping/post_dart_clamping.f90
===================================================================
--- DART/branches/mizzi/models/wrf_chem/dart_clamping/post_dart_clamping.f90	                        (rev 0)
+++ DART/branches/mizzi/models/wrf_chem/dart_clamping/post_dart_clamping.f90	2017-01-18 22:23:53 UTC (rev 10917)
@@ -0,0 +1,465 @@
+!
+! code to post-dart clamping of chemistry fields
+! need:
+!   wrfinput           :: get the land-ocean mask
+!   wrfinput_d01_xxxx  :: the ensemble members (assumes dart_to_wrf has already been called)
+!
+! ifort -C post_dart_clamping.f90 -o post_dart_clamping.exe -lgfortran -lnetcdff -lnetcdf
+!
+         program main
+            implicit none
+            integer,parameter                        :: nx=100
+            integer,parameter                        :: ny=40
+            integer,parameter                        :: nz=33
+            integer,parameter                        :: num_mem=20
+            integer                                  :: i,j,k,imem,icnt,jcnt
+            real                                     :: co_thresh,fac1,fac2,co_min
+            real,dimension(nz)                       :: co_mean_ocn_prf,prs_mean_ocn_prf          
+            real,dimension(nz)                       :: co_mean_lnd_prf,prs_mean_lnd_prf          
+            real,dimension(nx,ny)                    :: xland          
+            real,dimension(nx,ny,nz)                 :: co_mean,prs_mean
+            real,dimension(nx,ny,nz)                 :: p_prt,p_bas
+            real,dimension(nx,ny,nz,num_mem)         :: co_prior,co_post,prs_prior,prs_post
+            real,dimension(nx,ny,num_mem)            :: psfc_prior,psfc_post
+            character(len=80)                        :: imem_char,file,file_in
+!
+! CO threshold (ppmv)
+            fac1=0.6
+!
+! Assign ocean min values (ppmv)
+!            min_ocn(1:nz)= .050
+!
+! Assign land min values (ppmv)
+!            min_lan(1:nz)=.100
+!
+! get wrf land mask
+            call get_WRFINPUT_land_mask(xland,nx,ny)
+!
+! read prior data
+            do imem=1,num_mem
+               write(imem_char,'(i4)') imem
+               if(imem.lt.1000) write(imem_char,'(a1,i3)') '0',imem
+               if(imem.lt.100) write(imem_char,'(a2,i2)') '00',imem 
+               if(imem.lt.10) write(imem_char,'(a3,i1)') '000',imem
+               file='pr_wrfinput_d01_'//trim(imem_char)
+               file_in=trim(file)
+!               print *,'mem ',imem,file_in
+               call get_DART_diag_data(file_in,'co',co_prior(1,1,1,imem),nx,ny,nz,1)
+!                print *, imem,co_prior(1,1,1,imem),co_prior(nx,ny,nz,imem)
+               call get_DART_diag_data(file_in,'P',p_prt,nx,ny,nz,1)
+               call get_DART_diag_data(file_in,'PB',p_bas,nx,ny,nz,1)
+               call get_DART_diag_data(file_in,'PSFC',psfc_prior(1,1,imem),nx,ny,1,1)
+               prs_prior(:,:,:,imem)=p_bas(:,:,:)+p_prt(:,:,:)
+            enddo
+!
+! read post data
+            do imem=1,num_mem
+               write(imem_char,'(i4)') imem
+               if(imem.lt.1000) write(imem_char,'(a1,i3)') '0',imem
+               if(imem.lt.100) write(imem_char,'(a2,i2)') '00',imem
+               if(imem.lt.10) write(imem_char,'(a3,i1)') '000',imem
+               file='po_wrfinput_d01_'//trim(imem_char)
+               file_in=trim(file)
+               call get_DART_diag_data(file_in,'co',co_post(1,1,1,imem),nx,ny,nz,1)
+!                print *, imem,co_post(1,1,1,imem),co_post(nx,ny,nz,imem)
+               call get_DART_diag_data(file_in,'P',p_prt,nx,ny,nz,1)
+               call get_DART_diag_data(file_in,'PB',p_bas,nx,ny,nz,1)
+               call get_DART_diag_data(file_in,'PSFC',psfc_post(1,1,imem),nx,ny,1,1)
+               prs_post(:,:,:,imem)=p_bas(:,:,:)+p_prt(:,:,:)
+            enddo
+!            print *, ' '
+!            print *, co_post(89,1,1,1),co_post(90,1,1,1),co_post(91,1,1,1)
+!            print *, co_post(89,2,1,1),co_post(90,2,1,1),co_post(91,2,1,1)
+!            print *, co_post(89,3,1,1),co_post(90,3,1,1),co_post(91,3,1,1)
+!
+! calculate the prior ensemble mean
+            co_mean(:,:,:)=0.
+            prs_mean(:,:,:)=0.
+            do i=1,nx
+               do j=1,ny
+                  do k=1,nz
+                     do imem=1,num_mem
+                        co_mean(i,j,k)=co_mean(i,j,k)+co_post(i,j,k,imem)/real(num_mem)
+                        prs_mean(i,j,k)=prs_mean(i,j,k)+prs_post(i,j,k,imem)/real(num_mem)
+                     enddo
+                  enddo
+               enddo
+            enddo
+!
+! calculate the prior ensemble mean profile over land and ocean
+            co_mean_ocn_prf(:)=0.
+            prs_mean_ocn_prf(:)=0.
+            co_mean_lnd_prf(:)=0.
+            prs_mean_lnd_prf(:)=0.
+            do k=1,nz
+               icnt=0
+               jcnt=0


More information about the Dart-dev mailing list