<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 => block % next
END DO
@@ -60,13 +65,7 @@
REAL(KIND=RKIND):: tm
- REAL(KIND=RKIND),DIMENSION(:,:),POINTER:: &
- uReconstructX, &!
- uReconstructY, &!
- 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 => vars % uReconstructX % array
- uReconstructY => vars % uReconstructY % array
- uReconstructZ => 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) &
- 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),&
-! 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:: &
- 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 => vars % cutop % array
- cubot => vars % cubot % array
- pratec => vars % pratec % array
- raincv => 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 "WRF" 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), &
+ rqccuten_phy(i,k,j),rqrcuten_phy(i,k,j), &
+ 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.) &
+ 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) &
+ + 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) &
+ + rqvcuten_phy(i,k,j)
+
+ !cloud water:
+ rqten_phy(i,k,j,index_qc) = rqten_phy(i,k,j,index_qc) &
+ + rqccuten_phy(i,k,j)
+
+ !rain:
+ rqten_phy(i,k,j,index_qr) = rqten_phy(i,k,j,index_qr) &
+ + rqrcuten_phy(i,k,j)
+
+ !cloud ice:
+ rqten_phy(i,k,j,index_qi) = rqten_phy(i,k,j,index_qi) &
+ + rqicuten_phy(i,k,j)
+
+ !snow:
+ rqten_phy(i,k,j,index_qs) = rqten_phy(i,k,j,index_qs) &
+ + 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>