<p><b>duda</b> 2010-07-16 17:31:17 -0600 (Fri, 16 Jul 2010)</p><p>BRANCH COMMIT<br>
<br>
Begin using physics tendencies from CAM in time integration module.<br>
<br>
M    module_time_integration.F<br>
</p><hr noshade><pre><font color="gray">Modified: branches/mpas_cam_coupling/src/core_hyd_atmos/module_time_integration.F
===================================================================
--- branches/mpas_cam_coupling/src/core_hyd_atmos/module_time_integration.F        2010-07-16 22:29:29 UTC (rev 380)
+++ branches/mpas_cam_coupling/src/core_hyd_atmos/module_time_integration.F        2010-07-16 23:31:17 UTC (rev 381)
@@ -544,7 +544,7 @@
       real (kind=RKIND), dimension(:), pointer :: h_s, fVertex, fEdge, dvEdge, dcEdge, areaCell, areaTriangle, p_s
       real (kind=RKIND), dimension(:,:), pointer :: vh, weightsOnEdge, kiteAreasOnVertex, h_edge, h, u, v, tend_h, tend_u, &amp;
                                                     circulation, divergence, vorticity, ke, pv_edge, geopotential, theta, ww, &amp;
-                                                    h_diabatic, tend_theta
+                                                    h_diabatic, tend_theta, theta_phys_tend, u_phys_tend
       real (kind=RKIND), dimension(:,:,:), pointer :: deriv_two
       integer, dimension(:,:), pointer :: cellsOnEdge, cellsOnVertex, verticesOnEdge, edgesOnCell, edgesOnEdge, edgesOnVertex
       integer, dimension(:), pointer :: nEdgesOnCell, nEdgesOnEdge
@@ -569,6 +569,8 @@
       pv_edge      =&gt; s % pv_edge % array
       geopotential =&gt; s % geopotential % array
       theta        =&gt; s % theta % array
+      theta_phys_tend =&gt; s % theta_phys_tend % array
+      u_phys_tend     =&gt; s % u_phys_tend % array
 
       weightsOnEdge     =&gt; grid % weightsOnEdge % array
       cellsOnEdge       =&gt; grid % cellsOnEdge % array  
@@ -822,7 +824,16 @@
 
       end if
 
+      !
+      ! Add u tendency from physics
+      !
+      do iEdge=1,grid % nEdges
+         do k=1,grid % nVertLevels
+            tend_u(k,iEdge) = tend_u(k,iEdge) + u_phys_tend(k,iEdge)
+         end do
+      end do
 
+
 !----------- rhs for theta
 
       tend_theta(:,:) = 0.
@@ -1013,6 +1024,15 @@
 
       end if
 
+      !
+      ! Add theta tendency from physics
+      !
+      do iCell=1,grid % nCells
+         do k=1,grid % nVertLevels
+            tend_theta(k,iCell) = tend_theta(k,iCell) + theta_phys_tend(k,iCell)
+         end do
+      end do
+
    end subroutine compute_dyn_tend
 
 !---------------------------------------------------------------------------------------------------------
@@ -1293,7 +1313,7 @@
       integer :: i, iCell, iEdge, k, iScalar, cell1, cell2
       real (kind=RKIND) :: flux, scalar_edge, d2fdx2_cell1, d2fdx2_cell2
 
-      real (kind=RKIND), dimension(:,:,:), pointer :: scalar_old, scalar_new, scalar_tend
+      real (kind=RKIND), dimension(:,:,:), pointer :: scalar_old, scalar_new, scalar_tend, scalar_phys_tend
       real (kind=RKIND), dimension(:,:,:), pointer :: deriv_two
       real (kind=RKIND), dimension(:,:), pointer :: uhAvg, h_old, h_new, wwAvg
       real (kind=RKIND), dimension(:), pointer :: dvEdge, dcEdge, areaCell
@@ -1311,6 +1331,7 @@
 
       scalar_old  =&gt; s_old % scalars % array
       scalar_new  =&gt; s_new % scalars % array
+      scalar_phys_tend =&gt; s_old % scalars_phys_tend % array
       deriv_two   =&gt; grid % deriv_two % array
       uhAvg       =&gt; grid % uhAvg % array
       dvEdge      =&gt; grid % dvEdge % array
@@ -1457,6 +1478,17 @@
          end do
       end do
 
+      !
+      ! Add scalar tendencies from physics
+      !
+      do iCell=1,grid%nCells
+         do k=1,grid%nVertLevels
+            do iScalar=1,num_scalars
+               scalar_new(iScalar,k,iCell) = scalar_new(iScalar,k,iCell) + dt * scalar_phys_tend(iScalar,k,iCell) / h_new(k,iCell)
+            end do
+         end do
+      end do
+
    end subroutine advance_scalars
 
 
@@ -1484,7 +1516,7 @@
       real (kind=RKIND) :: flux, scalar_edge, d2fdx2_cell1, d2fdx2_cell2
       real (kind=RKIND) :: fdir, flux_upwind, h_flux_upwind, s_upwind
 
-      real (kind=RKIND), dimension(:,:,:), pointer :: scalar_old, scalar_new, scalar_tend
+      real (kind=RKIND), dimension(:,:,:), pointer :: scalar_old, scalar_new, scalar_tend, scalar_phys_tend
       real (kind=RKIND), dimension(:,:,:), pointer :: deriv_two
       real (kind=RKIND), dimension(:,:), pointer :: uhAvg, h_old, h_new, wwAvg
       real (kind=RKIND), dimension(:), pointer :: dvEdge, dcEdge, areaCell
@@ -1503,6 +1535,7 @@
 
       scalar_old  =&gt; s_old % scalars % array
       scalar_new  =&gt; s_new % scalars % array
+      scalar_phys_tend =&gt; s_old % scalars_phys_tend % array
       deriv_two   =&gt; grid % deriv_two % array
       uhAvg       =&gt; grid % uhAvg % array
       dvEdge      =&gt; grid % dvEdge % array
@@ -1788,6 +1821,17 @@
          end do
       end do
 
+      !
+      ! Add scalar tendencies from physics
+      !
+      do iCell=1,grid%nCells
+         do k=1,grid%nVertLevels
+            do iScalar=1,num_scalars
+               scalar_new(iScalar,k,iCell) = scalar_new(iScalar,k,iCell) + dt * scalar_phys_tend(iScalar,k,iCell) / h_new(k,iCell)
+            end do
+         end do
+      end do
+
    end subroutine advance_scalars_mono
 
 

</font>
</pre>