<p><b>laura@ucar.edu</b> 2010-06-14 10:41:02 -0600 (Mon, 14 Jun 2010)</p><p>module_physics_todynamics.F is the interface between physics and dynamics. Physics tendencies are added to the dynamics tendencies in the Runge-Kutta loop<br>
</p><hr noshade><pre><font color="gray">Added: branches/atmos_physics/src/core_hyd_phys/module_physics_todynamics.F
===================================================================
--- branches/atmos_physics/src/core_hyd_phys/module_physics_todynamics.F         (rev 0)
+++ branches/atmos_physics/src/core_hyd_phys/module_physics_todynamics.F        2010-06-14 16:41:02 UTC (rev 354)
@@ -0,0 +1,124 @@
+!==============================================================================
+ MODULE module_physics_todynamics
+ USE grid_types
+ USE module_physics_vars
+
+ IMPLICIT NONE
+ PRIVATE
+ PUBLIC:: physics_addtend
+
+ CONTAINS
+
+!==============================================================================
+ SUBROUTINE physics_init_tendencies
+!==============================================================================
+
+ INTEGER:: n
+
+!==============================================================================
+
+!POTENTIAL TEMPERATURE:
+ CALL zero_tend(rthten_phy)
+
+!MIXING RATIOS AND NUMBER CONCENTRATIONS:
+ DO n = 1, num_scalars
+ CALL zero_tend(rqten_phy(:,:,:,n))
+ ENDDO
+
+ END SUBROUTINE physics_init_tendencies
+
+!==============================================================================
+ SUBROUTINE physics_addtend(tend,vars,grid)
+!==============================================================================
+
+!INPUT VARIABLES:
+!----------------
+ TYPE(grid_meta),INTENT(in):: grid
+ TYPE(grid_state),INTENT(in):: vars
+
+!INOUT VARIABLES:
+!----------------
+ TYPE(grid_state),INTENT(inout):: tend
+
+!LOCAL VARIABLES:
+!----------------
+ INTEGER:: iCell,nCellsSolve,nVertLevels
+ INTEGER:: i,itf,iscalar,j,jtf,k,ktf
+ REAL(KIND=RKIND),DIMENSION(:,:),POINTER:: h,h_diabatic
+ REAL(KIND=RKIND),DIMENSION(:,:),POINTER:: rthcuten,rqvcuten,rqccuten, &
+ rqrcuten,rqicuten,rqscuten
+
+ REAL(KIND=RKIND),DIMENSION(:,:),POINTER :: tend_theta
+ REAL(KIND=RKIND),DIMENSION(:,:,:),POINTER:: tend_scalars
+
+!==============================================================================
+ write(6,*)
+ write(6,*) '--- enter subroutine PHYSICS_ADD_TEND:'
+
+ nCellsSolve = grid%nCellsSolve
+ nVertLevels = grid%nVertLevels
+
+ h => vars % h % array
+ h_diabatic => vars % h_diabatic % array
+ rthcuten => vars % rthcuten % array
+ rqvcuten => vars % rqvcuten % array
+ rqccuten => vars % rqccuten % array
+ rqrcuten => vars % rqrcuten % array
+ rqicuten => vars % rqicuten % array
+ rqscuten => vars % rqscuten % array
+
+ tend_theta => tend % theta % array
+ tend_scalars => tend % scalars % array
+
+!INITIALIZATION:
+ itf = ite
+ jtf = jte
+ ktf = kte-1
+
+ tend_theta(:,:) = 0.0
+ tend_scalars(:,:,:) = 0.0
+
+!ADD COUPLED POTENTIAL TEMPERATURE TENDENCY DUE TO CLOUD MICROPHYSICS ON
+!THE GEODESIC GRID:
+ DO k = 1, nVertLevels
+ DO iCell = 1, nCellsSolve
+ tend_theta(k,i)=tend_theta(k,i)+h_diabatic(k,i)*h(k,i)
+ ENDDO
+ ENDDO
+
+!ADD COUPLED TENDENCIES DUE TO CONVECTION ON THE GEODESIC GRID:
+ DO k = 1, nVertLevels
+ DO iCell = 1, nCellsSolve
+ tend_theta(k,i)=tend_theta(k,i)+rthcuten(k,i)*h(k,i)
+ tend_scalars(index_qv,k,i)=tend_scalars(index_qv,k,i)+rqvcuten(k,i)*h(k,i)
+ tend_scalars(index_qc,k,i)=tend_scalars(index_qc,k,i)+rqccuten(k,i)*h(k,i)
+ tend_scalars(index_qr,k,i)=tend_scalars(index_qr,k,i)+rqrcuten(k,i)*h(k,i)
+ tend_scalars(index_qi,k,i)=tend_scalars(index_qi,k,i)+rqicuten(k,i)*h(k,i)
+ tend_scalars(index_qs,k,i)=tend_scalars(index_qs,k,i)+rqscuten(k,i)*h(k,i)
+ ENDDO
+ ENDDO
+
+!FORMATS:
+ 201 format(i3,1x,i6,i3,8(1x,e15.8))
+
+ END SUBROUTINE physics_addtend
+
+!==============================================================================
+ SUBROUTINE zero_tend(tendency)
+!==============================================================================
+ REAL(KIND=RKIND),INTENT(out),DIMENSION(ims:ime,kms:kme,jms:jme):: tendency
+ INTEGER:: i,k,j
+
+ DO j = jms,jme
+ DO k = kms,kme
+ DO i = ims,ime
+ tendency(i,k,j) = 0.
+ ENDDO
+ ENDDO
+ ENDDO
+
+ END SUBROUTINE zero_tend
+
+!==============================================================================
+ END MODULE module_physics_todynamics
+!==============================================================================
</font>
</pre>