<p><b>duda</b> 2010-05-04 17:21:47 -0600 (Tue, 04 May 2010)</p><p>BRANCH COMMIT<br>
<br>
Store the reference pressure p0 from calls to CAM_INIDAT_TO_MPAS <br>
and CAM_RESTART_TO_MPAS for later use in MPAS_TO_CAM and CAM_TO_MPAS <br>
rather than using a hard-wired value 100000 Pa.<br>
<br>
M module_mpas_cam_interface.F<br>
</p><hr noshade><pre><font color="gray">Modified: branches/mpas_cam_coupling/src/driver_cam_interface/module_mpas_cam_interface.F
===================================================================
--- branches/mpas_cam_coupling/src/driver_cam_interface/module_mpas_cam_interface.F        2010-05-04 22:56:30 UTC (rev 245)
+++ branches/mpas_cam_coupling/src/driver_cam_interface/module_mpas_cam_interface.F        2010-05-04 23:21:47 UTC (rev 246)
@@ -10,7 +10,7 @@
type (dm_info), pointer :: dminfo
type (domain_type), pointer :: domain
- real (kind=RKIND) :: dt, dt_physics
+ real (kind=RKIND) :: dt, dt_physics, p0
integer :: itimestep
@@ -175,7 +175,6 @@
real (kind=RKIND), dimension(Numcols,Plev,Pcnst), intent(in) :: Tracer
integer :: iCell, iEdge, iScalar, k, i
- real (kind=RKIND) :: p0
real (kind=RKIND), dimension(Plev+1) :: znu, znw, znwc, znwv
real (kind=RKIND), dimension(Plev+1) :: znuc, znuv, bn, divh, dpn
type (block_type), pointer :: block
@@ -669,7 +668,7 @@
Psd(iCell) = block % time_levs(2) % state % surface_pressure % array(iCell)
Phis(iCell) = block % time_levs(2) % state % geopotential % array(1,iCell)
do k=1,block % mesh % nVertLevels
- T(iCell,k) = theta(k,iCell) * (0.5*(pressure(k,iCell)+pressure(k+1,iCell)) / 100000.0) ** (rgas/cp)
+ T(iCell,k) = theta(k,iCell) * (0.5*(pressure(k,iCell)+pressure(k+1,iCell)) / p0) ** (rgas/cp)
Omega(iCell,k) = 0.5*(ww(k,iCell) + ww(k+1,iCell))
!
! NOTE: Eventually, we need to ensure that the moisture variables we return to CAM
@@ -730,6 +729,7 @@
write(0,*) 'Called CAM_TO_MPAS'
block => domain % blocklist
+
nEdgesOnCell => block % mesh % nEdgesOnCell % array
edgesOnCell => block % mesh % edgesOnCell % array
east => block % mesh % east % array
@@ -798,7 +798,7 @@
do iCell=1,block % mesh % nCellsSolve
do k=1,block % mesh % nVertLevels
- theta_tend(k,iCell) = T_tend(iCell,k) * (100000.0 / (0.5*(pressure(k,iCell)+pressure(k+1,iCell)))) ** (rgas/cp)
+ theta_tend(k,iCell) = T_tend(iCell,k) * (p0 / (0.5*(pressure(k,iCell)+pressure(k+1,iCell)))) ** (rgas/cp)
!
! NOTE: Once we begin to use more than just qv in MPAS, we need to make sure to
</font>
</pre>