<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, &
circulation, divergence, vorticity, ke, pv_edge, geopotential, theta, ww, &
- 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 => s % pv_edge % array
geopotential => s % geopotential % array
theta => s % theta % array
+ theta_phys_tend => s % theta_phys_tend % array
+ u_phys_tend => s % u_phys_tend % array
weightsOnEdge => grid % weightsOnEdge % array
cellsOnEdge => 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 => s_old % scalars % array
scalar_new => s_new % scalars % array
+ scalar_phys_tend => s_old % scalars_phys_tend % array
deriv_two => grid % deriv_two % array
uhAvg => grid % uhAvg % array
dvEdge => 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 => s_old % scalars % array
scalar_new => s_new % scalars % array
+ scalar_phys_tend => s_old % scalars_phys_tend % array
deriv_two => grid % deriv_two % array
uhAvg => grid % uhAvg % array
dvEdge => 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>