<p><b>laura@ucar.edu</b> 2010-06-14 10:32:46 -0600 (Mon, 14 Jun 2010)</p><p>Updated physics driver<br>
</p><hr noshade><pre><font color="gray">Modified: branches/atmos_physics/src/core_hyd_phys/module_physics_driver.F
===================================================================
--- branches/atmos_physics/src/core_hyd_phys/module_physics_driver.F        2010-06-14 16:31:18 UTC (rev 351)
+++ branches/atmos_physics/src/core_hyd_phys/module_physics_driver.F        2010-06-14 16:32:46 UTC (rev 352)
@@ -37,9 +37,14 @@
  DO WHILE(associated(block))
 
     !physics prep step:
-    CALL physics_prep(block%mesh,block%time_levs(2)%state)
+    CALL physics_prep(block%mesh,block%time_levs(1)%state)
 
-    CALL convection_driver(itimestep,block%mesh,block%time_levs(2)%state)
+    !convection:
+    CALL convection_driver(itimestep,block%mesh,block%time_levs(1)%state)
+
+    !add all physics tendencies:
+    CALL physics_add_tendencies
+
     block =&gt; block % next
  END DO         
 
@@ -60,13 +65,7 @@
 
  REAL(KIND=RKIND):: tm
 
- REAL(KIND=RKIND),DIMENSION(:,:),POINTER::   &amp;
-    uReconstructX,    &amp;!
-    uReconstructY,    &amp;!
-    uReconstructZ      !
-
 !==============================================================================
- write(6,*)
  write(6,*) '--- enter SUBROUTINE PHYSICS_PREP:'
 
  nCells      = grid%nCells
@@ -98,10 +97,6 @@
  write(6,*) '    JTS= ',jts,' JTF=',jtf
  write(6,*) '    KTS= ',kts,' KTF=',ktf
 
- uReconstructX =&gt; vars % uReconstructX % array
- uReconstructY =&gt; vars % uReconstructY % array
- uReconstructZ =&gt; vars % uReconstructZ % array
-
  DO j = jts,jtf
  
  DO k = kts,kte
@@ -112,8 +107,8 @@
  
  DO k = kts,ktf
  DO i = its,itf
-    u_phy(i,k,j)  = 0.0   !needs to be calculated using uReconstructX,...
-    v_phy(i,k,j)  = 0.0   !needs to be calculated using uReconstructX,...
+    u_phy(i,k,j)  = vars%uReconstructZonal%array(k,i)
+    v_phy(i,k,j)  = vars%uReconstructMeridional%array(k,i)
     
     dz_phy(i,k,j) = (vars%geopotential%array(k+1,i)    &amp;
                   -  vars%geopotential%array(k,i)) / g
@@ -132,15 +127,6 @@
  ENDDO
  ENDDO
 
-!DO j = jts,jtf
-!DO i = its,itf
-!DO k = ktf,kts,-1
-!   write(6,201) j,i,k,p_phy(i,k,j),pi_phy(i,k,j),dz_phy(i,k,j),th_phy(i,k,j),&amp;
-!                t_phy(i,k,j),qv_phy(i,k,j),al_phy(i,k,j),rho_phy(i,k,j)
-!ENDDO
-!write(6,*)
-!ENDDO
-!ENDDO
  write(6,*) '--- end SUBROUTINE PHYSICS_PREP:'
 
 !FORMAT:
@@ -165,16 +151,14 @@
 
 !LOCAL VARIABLES AND ARRAYS:
 !---------------------------
+ LOGICAL:: log_convection
  LOGICAL:: adapt_step_flag_pass
- INTEGER:: nCells,nCellsSolve,nLevels
+ INTEGER:: iCell,nCells,nCellsSolve,nLevels
  INTEGER:: i,itf,k,ktf,j,jtf
  INTEGER:: icount
  REAL(KIND=RKIND):: dx
  REAL(KIND=RKIND):: cudt_pass,curr_secs_pass
 
- REAL(KIND=RKIND),DIMENSION(:),POINTER:: &amp;
-    cutop,cubot,pratec,raincv
-
 !==============================================================================
  write(6,*)
  write(6,*) '--- enter SUBROUTINE CONVECTION_DRIVER: dt_phys=',dt_cu
@@ -231,12 +215,24 @@
  write(6,*) 'adapt_step_flag_pass=', adapt_step_flag_pass
  write(6,*) 'dx                  =', dx
  
-!INITIALIZATION OF POINTER ARRAYS:
- cutop    =&gt; vars % cutop  % array
- cubot    =&gt; vars % cubot  % array
- pratec   =&gt; vars % pratec % array
- raincv   =&gt; vars % raincv % array
+!INITIALIZATION OF TIME-STEP PRECIPITATION VARIABLES ON THE GEODESIC GRID:
+ DO iCell = 1, nCellsSolve
+    vars%raincv%array(iCell) = 0.
+    vars%pratec%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
+    nca_phy(i,j)   = vars%nca%array(i)
+    cubot_phy(i,j) = vars%cubot%array(i)
+    cutop_phy(i,j) = vars%cutop%array(i)
+    DO k = 1, nLevels
+       w0avg_phy(i,k,j) = vars%w0avg%array(k,i)
+    ENDDO
+ ENDDO
+ ENDDO
+
 !CALL TO KAIN-FRITSCH-ETA CONVECTION SCHEME:
  write(6,*)
  write(6,*) '--- begin subroutine KF_ETA_CPS:'
@@ -265,13 +261,121 @@
                 )
 
  write(6,*) '--- end subroutine KF_ETA_CPS:'
+ DO j = jts, jtf
+ DO i = its, itf
+    log_convection = .false.
+    IF(cutop_phy(i,j) .GT. kts) THEN
+       write(6,203) itimestep,j,i,cubot_phy(i,j),cutop_phy(i,j)
+       log_convection = .true.
+       IF(log_convection) THEN
+          DO k = kts,ktf
+             write(6,201) j,i,k,rthcuten_phy(i,k,j),rqvcuten_phy(i,k,j), &amp;
+                          rqccuten_phy(i,k,j),rqrcuten_phy(i,k,j),       &amp;
+                          rqicuten_phy(i,k,j),rqscuten_phy(i,k,j)
+          ENDDO
+!         write(6,204) itimestep,j,i,raincv_phy(i,j),pratec_phy(i,j)
+       ENDIF
+    ENDIF
+ ENDDO
+ ENDDO
 
+!BACK TO DYNAMICAL CORE:
+ DO j = jts, jtf
+ DO k = kts, ktf
+ DO i = its, itf
+    vars%rthcuten%array(k,i) = rthcuten_phy(i,k,j)
+    vars%rqvcuten%array(k,i) = rqvcuten_phy(i,k,j)
+    vars%rqccuten%array(k,i) = rqccuten_phy(i,k,j)
+    vars%rqrcuten%array(k,i) = rqrcuten_phy(i,k,j)
+    vars%rqicuten%array(k,i) = rqicuten_phy(i,k,j)
+    vars%rqscuten%array(k,i) = rqscuten_phy(i,k,j)
+ ENDDO
+ ENDDO
+ ENDDO
+
+!DIAGNOSTICS:
+ DO i = its,itf
+ DO j = jts,jtf
+    vars%cubot%array(i)  = cubot_phy(i,j)
+    vars%cutop%array(i)  = cutop_phy(i,j)
+    vars%nca%array(i)    = nca_phy(i,j)
+    vars%pratec%array(i) = pratec_phy(i,j)
+    vars%raincv%array(i) = raincv_phy(i,j)
+    IF(vars%raincv%array(i) .GT. 0.) &amp;
+       write(6,204) itimestep,j,i,vars%raincv%array(i),raincv_phy(i,j)
+    DO k = kts, ktf
+       vars%w0avg%array(k,i) = w0avg_phy(i,k,j)
+    ENDDO
+ ENDDO
+    vars%rainc%array(i) = vars%rainc%array(i) + vars%raincv%array(i)     
+ ENDDO
+
+ write(6,*) '--- end SUBROUTINE CONVECTION_DRIVER:'
+
 !FORMAT:
  201 FORMAT(i3,1x,i6,1x,i3,10(1x,e15.8))
  202 FORMAT(2i6,10(1x,e15.8))
+ 203 FORMAT('CONVECTION BEGINS:',3i6,2(1x,f6.1))
+ 204 FORMAT('CONVECTIVE PRECIP:',3i6,2(1x,e15.8))
 
  END SUBROUTINE convection_driver
 
 !==============================================================================
+ SUBROUTINE physics_add_tendencies
+!==============================================================================
+
+!LOCAL VARIABLES:
+!----------------
+ INTEGER:: i,k,j
+ INTEGER:: itf,ktf,jtf
+!==============================================================================
+
+!INITIALIZATION:
+ itf = ite
+ jtf = jte
+ ktf = kte-1
+
+!POTENTIAL TEMPERATURE:
+ DO j = jts,jte
+ DO k = kts,kte
+ DO i = its,ite
+    rthten_phy(i,k,j) = rthten_phy(i,k,j)                   &amp;
+                      + rthcuten_phy(i,k,j)
+ ENDDO
+ ENDDO
+ ENDDO
+
+!MIXING RATIOS:
+ DO j = jts,jtf
+ DO k = kts,ktf
+ DO i = its,itf 
+    !water vapor:
+    rqten_phy(i,k,j,index_qv) = rqten_phy(i,k,j,index_qv)   &amp;
+                              + rqvcuten_phy(i,k,j)
+
+    !cloud water:
+    rqten_phy(i,k,j,index_qc) = rqten_phy(i,k,j,index_qc)   &amp;
+                              + rqccuten_phy(i,k,j)
+
+    !rain:
+    rqten_phy(i,k,j,index_qr) = rqten_phy(i,k,j,index_qr)   &amp;
+                              + rqrcuten_phy(i,k,j)
+
+    !cloud ice:
+    rqten_phy(i,k,j,index_qi) = rqten_phy(i,k,j,index_qi)   &amp;
+                              + rqicuten_phy(i,k,j)
+
+    !snow:
+    rqten_phy(i,k,j,index_qs) = rqten_phy(i,k,j,index_qs)   &amp;
+                              + rqscuten_phy(i,k,j)
+ ENDDO
+ ENDDO
+ ENDDO
+
+!NUMBER CONCENTRATIONS (none for now):
+
+ END SUBROUTINE physics_add_tendencies
+
+!==============================================================================
  END MODULE module_physics_driver
 !==============================================================================

</font>
</pre>