<p><b>laura@ucar.edu</b> 2010-06-14 10:33:07 -0600 (Mon, 14 Jun 2010)</p><p>Updated microphysics driver<br>
</p><hr noshade><pre><font color="gray">Modified: branches/atmos_physics/src/core_hyd_phys/module_microphysics_driver.F
===================================================================
--- branches/atmos_physics/src/core_hyd_phys/module_microphysics_driver.F        2010-06-14 16:32:46 UTC (rev 352)
+++ branches/atmos_physics/src/core_hyd_phys/module_microphysics_driver.F        2010-06-14 16:33:07 UTC (rev 353)
@@ -15,35 +15,25 @@
  CONTAINS
 
 !==============================================================================
- SUBROUTINE microphysics_driver(grid,vars,itimestep)
+ SUBROUTINE microphysics_driver(tend,vars,grid,itimestep,config_ntimesteps)
 !==============================================================================
 
 !INPUT ARGUMENTS:
 !----------------
  TYPE(grid_meta),INTENT(in) :: grid
- INTEGER,INTENT(in):: itimestep
+ INTEGER,INTENT(in):: itimestep,config_ntimesteps
     
 !INOUT ARGUMENTS:
 !----------------
- TYPE(grid_state),INTENT(inout):: vars
+ TYPE(grid_state),INTENT(inout):: tend,vars
 
 !LOCAL VARIABLES AND ARRAYS:
 !---------------------------
+ LOGICAL:: log_microphysics
  INTEGER:: nCells,nCellsSolve,nLevels
  INTEGER:: itf,jtf,ktf
- INTEGER:: i,icount,istep,j,k,kk
+ INTEGER:: i,iCell,icount,istep,j,k,kk
 
- REAL(KIND=RKIND),DIMENSION(:,:),ALLOCATABLE:: &amp;
-   rainnc,&amp;            !
-   snownc,&amp;            !
-   graupelnc,&amp;         !
-   sr                  !
-
- REAL(KIND=RKIND),DIMENSION(:,:),ALLOCATABLE:: &amp;
-   rainncv,&amp;           !
-   snowncv,&amp;           !
-   graupelncv          !
-
 !==============================================================================
  write(6,*)
  write(6,*) '--- enter subroutine MICROPHYSICS_DRIVER: itimestep=', itimestep
@@ -82,17 +72,34 @@
  write(6,*) '    KTS= ',kts,' KTE=',kte
  write(6,*)
  
-!ALLOCATE LOCAL ARRAYS:
- ALLOCATE(rainnc(ims:ime,jms:jme)     )
- ALLOCATE(rainncv(ims:ime,jms:jme)    )
- ALLOCATE(snownc(ims:ime,jms:jme)     )
- ALLOCATE(snowncv(ims:ime,jms:jme)    )
- ALLOCATE(graupelnc(ims:ime,jms:jme)  )
- ALLOCATE(graupelncv(ims:ime,jms:jme) )
- ALLOCATE(sr(ims:ime,jms:jme)         )
+!SAVES THE INITIAL POTENTIAL TEMPERATURE FOR CALCULATION OF THE POTENTIAL
+!TEMPERATURE TENDENCY NEEDED IN THE DYNMICAL CORE:
+ DO k = 1, nLevels
+ DO iCell = 1, nCellsSolve
+    vars%h_diabatic%array(k,i) = vars%theta%array(k,i)
+ ENDDO
+ ENDDO
 
-!CALCULATES PHYSICS VARIABLES:
+!INITIALIZATION OF TIME-STEP PRECIPITATION VARIABLES ON THE GEODESIC GRID:
+ DO iCell = 1, nCellsSolve
+    vars%rainncv%array(iCell)    = 0.
+    vars%snowncv%array(iCell)    = 0.
+    vars%graupelncv%array(iCell) = 0.
+    vars%sr%array(iCell)         = 0.
+ ENDDO 
+
+!COPY PHYSICS VARIABLES FROM THE GEODESIC GRID TO THE &quot;WRF&quot; GRID:
  DO j = jts, jtf
+ DO i = its, itf
+    rainnc_phy(i,j)    = vars%rainnc%array(i)
+    snownc_phy(i,j)    = vars%snownc%array(i)
+    graupelnc_phy(i,j) = vars%graupelnc%array(i)
+    IF(vars%rainnc%array(i) .GT. 0.) &amp;
+       write(6,204) itimestep,j,i,vars%rainncv%array(i),vars%rainnc%array(i)    
+ ENDDO
+ ENDDO
+
+ DO j = jts, jtf
  DO k = kts, ktf
  DO i = its, itf
     dz_phy(i,k,j) = (vars%geopotential%array(k+1,i)    &amp;
@@ -122,7 +129,8 @@
     write(6,*) '--- istep=',istep
     CALL mp_gt_driver(qv_phy ,qc_phy,qr_phy,qi_phy,qs_phy,qg_phy,qni_phy,     &amp;
                       qnr_phy,th_phy,pi_phy,p_phy ,dz_phy,dt_microp,itimestep,&amp;
-                      rainnc,rainncv,snownc,snowncv,graupelnc,graupelncv,sr,  &amp;
+                      rainnc_phy,rainncv_phy,snownc_phy,snowncv_phy,          &amp;
+                      graupelnc_phy,graupelncv_phy,sr_phy,                    &amp;
 !                     refl_10cm,grid_clock,grid_alarms,                       &amp;
                       ids,ide,jds,jde,kds,kde, &amp; ! domain dimensions
                       ims,ime,jms,jme,kms,kme, &amp; ! memory dimensions
@@ -130,6 +138,23 @@
     istep = istep + 1
  ENDDO
 
+ write(6,*) '--- end subroutine MP_GT_DRIVER:'
+!DO j = jts, jtf
+!DO i = its, itf
+!   log_microphysics = .false.
+!   IF(rainncv_phy(i,j) .GT. 0.) THEN
+!      write(6,203) itimestep,j,i,rainnc_phy(i,j),rainncv_phy(i,j)
+!      log_microphysics = .true.
+!      IF(log_microphysics) THEN
+!         DO k = kts,ktf
+!            write(6,201) j,i,k,qv_phy(i,k,j),qc_phy(i,k,j),qr_phy(i,k,j), &amp;
+!                         qi_phy(i,k,j),qs_phy(i,k,j),qg_phy(i,k,j)
+!         ENDDO
+!      ENDIF
+!   ENDIF
+!ENDDO
+!ENDDO
+
 !BACK TO DYNAMICAL CORE:
  DO j = jts, jtf
  DO k = kts, ktf
@@ -147,19 +172,62 @@
  ENDDO
  ENDDO
  
-!DEALLOCATE LOCAL ARRAYS:
- DEALLOCATE(rainnc     )
- DEALLOCATE(rainncv    )
- DEALLOCATE(snownc     )
- DEALLOCATE(snowncv    )
- DEALLOCATE(graupelnc  )
- DEALLOCATE(graupelncv )
- DEALLOCATE(sr         )
+!CALCULATES THE POTENTIAL TEMPERATURE TENDENCY:
+ DO k = 1, nLevels
+ DO iCell = 1, nCellsSolve
+    vars%h_diabatic%array(k,i) = &amp;
+        (vars%theta%array(k,i) - vars%h_diabatic%array(k,i)) / dt_dyn
+ ENDDO
+ ENDDO
 
+!DIAGNOSTICS FOR PRECIPITATION:
+ DO j = jts,jtf
+ DO i = its,itf
+
+    !Time-step precipitation:
+    vars%rainncv%array(i)    = rainncv_phy(i,j)
+    vars%snowncv%array(i)    = snowncv_phy(i,j)
+    vars%graupelncv%array(i) = graupelncv_phy(i,j)
+    vars%sr%array(i)         = sr_phy(i,j)
+
+    !Accumulated precipitation:
+    vars%rainnc%array(i) = rainnc_phy(i,j)
+    vars%snownc%array(i) = snownc_phy(i,j)
+    vars%graupelnc%array(i) = graupelnc_phy(i,j)
+
+!   IF(vars%rainncv%array(i) .GT. 0.) &amp;
+!      write(6,204) itimestep,j,i,vars%rainncv%array(i),rainncv_phy(i,j)
+ ENDDO
+ ENDDO
+
+ IF(itimestep == config_ntimesteps) THEN
+    write(6,*) 'itimestep=', itimestep
+    write(6,*) 'config_ntimesteps=', config_ntimesteps
+    DO iCell = 1, nCellsSolve
+       IF(vars%rainncv%array(iCell) .GT. 0.) THEN
+          write(6,204) config_ntimesteps,itimestep,iCell, &amp;
+             vars%rainncv%array(iCell)   ,vars%rainnc%array(iCell),    &amp;
+             vars%snowncv%array(iCell)   ,vars%snownc%array(iCell),    &amp;
+             vars%graupelncv%array(iCell),vars%graupelnc%array(iCell)
+          DO k = 1, nLevels
+             write(6,201) itimestep,iCell,k,vars%theta%array(k,iCell), &amp;
+                   vars%scalars%array(index_qv,k,iCell), &amp;
+                   vars%scalars%array(index_qc,k,iCell), &amp;
+                   vars%scalars%array(index_qr,k,iCell), &amp;
+                   vars%scalars%array(index_qi,k,iCell), &amp;
+                   vars%scalars%array(index_qs,k,iCell), &amp;
+                   vars%scalars%array(index_qg,k,iCell)
+          ENDDO
+       ENDIF
+    ENDDO
+ ENDIF
+
+ write(6,*) '--- end SUBROUTINE MICROPHYSICS_DRIVER:'
+
 !FORMATS:
- 201 format(i3,10(1x,e15.8))
- 202 format(i3,1x,i6,1x,i3,10(1x,e15.8))
- 203 format(i6,1x,i3,10(1x,e15.8))
+ 201 FORMAT(i3,1x,i6,1x,i3,10(1x,e15.8))
+ 203 FORMAT('MICROPHYSICS BEGINS:',3i6,2(1x,f6.1))
+ 204 FORMAT('MICROPHYSICS PRECIP:',3i6,8(1x,e15.8))
 
  END SUBROUTINE microphysics_driver
 

</font>
</pre>