<p><b>laura@ucar.edu</b> 2013-03-01 10:44:06 -0700 (Fri, 01 Mar 2013)</p><p>Modified the calculation of the variable cleff (subgrid mountain scale) so that it depends on the actual maximum distance between cell centers.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/atmos_physics/src/core_atmos_physics/physics_wrf/module_bl_gwdo.F
===================================================================
--- branches/atmos_physics/src/core_atmos_physics/physics_wrf/module_bl_gwdo.F        2013-03-01 17:40:39 UTC (rev 2532)
+++ branches/atmos_physics/src/core_atmos_physics/physics_wrf/module_bl_gwdo.F        2013-03-01 17:44:06 UTC (rev 2533)
@@ -16,7 +16,6 @@
                   znu,znw,mut,p_top, &amp;
                   cp,g,rd,rv,ep1,pi, &amp;
                   dt,dx,kpbl2d,itimestep, &amp;
-                  areaCell, &amp;
                   ids,ide, jds,jde, kds,kde, &amp;
                   ims,ime, jms,jme, kms,kme, &amp;
                   its,ite, jts,jte, kts,kte)
@@ -67,7 +66,14 @@
                                      its,ite, jts,jte, kts,kte
   integer, intent(in ) :: itimestep
 !
+!MPAS specific (Laura D. Fowler 2013-02-12):
+#if defined(non_hydrostatic_core)
+  real, intent(in ) :: dt,cp,g,rd,rv,ep1,pi
+  real, intent(in), dimension(ims:ime,jms:jme):: dx
+#else
   real, intent(in ) :: dt,dx,cp,g,rd,rv,ep1,pi
+#endif
+!MPAS  specific end.
 !
   real, dimension( ims:ime, kms:kme, jms:jme ) , &amp;
             intent(in ) :: qv3d, &amp;
@@ -111,11 +117,6 @@
                                                                           znw
 !
   real, optional, intent(in ) :: p_top
-
-!MPAS specific (Laura D. Fowler):
- real,intent(in),dimension(ims:ime,jms:jme),optional:: areaCell
-!MPAS specific end.
-
 !
 !local
 !
@@ -170,9 +171,14 @@
               ,var=var2d(ims,j),oc1=oc12d(ims,j) &amp;
               ,oa4=oa4,ol4=ol4 &amp;
               ,g=g,cp=cp,rd=rd,rv=rv,fv=ep1,pi=pi &amp;
+!MPAS specific (Laura D. Fowler 2013-02-12): 
+#if defined(non_hydrostatic_core)
+              ,dxmeter=dx(ims,j),deltim=dt &amp;
+#else
               ,dxmeter=dx,deltim=dt &amp;
+#endif
+!MPAS specific end. 
               ,kpbl=kpbl2d(ims,j),kdt=itimestep,lat=j &amp;
-              ,areaCell=areaCell(ims,j) &amp;
               ,ids=ids,ide=ide, jds=jds,jde=jde, kds=kds,kde=kde &amp;
               ,ims=ims,ime=ime, jms=jms,jme=jme, kms=kms,kme=kme &amp;
               ,its=its,ite=ite, jts=jts,jte=jte, kts=kts,kte=kte )
@@ -191,7 +197,6 @@
                     prsi,del,prsl,prslk,zl,rcl, &amp;
                     var,oc1,oa4,ol4,dusfc,dvsfc, &amp;
                     g,cp,rd,rv,fv,pi,dxmeter,deltim,kpbl,kdt,lat, &amp;
-                    areaCell, &amp;
                     ids,ide, jds,jde, kds,kde, &amp;
                     ims,ime, jms,jme, kms,kme, &amp;
                     its,ite, jts,jte, kts,kte)
@@ -244,7 +249,15 @@
                             ims,ime, jms,jme, kms,kme, &amp;
                             its,ite, jts,jte, kts,kte
 !
+!MPAS specific (Laura D. Fowler 2013-02-12):
+#if defined(non_hydrostatic_core)
+   real :: g,rd,rv,fv,cp,pi,deltim,rcl
+   real, dimension(ims:ime):: dxmeter
+#else
    real :: g,rd,rv,fv,cp,pi,dxmeter,deltim,rcl
+#endif
+!MPAS specific end.
+
    real :: dudt(ims:ime,kms:kme),dvdt(ims:ime,kms:kme), &amp;
                             dtaux2d(ims:ime,kms:kme),dtauy2d(ims:ime,kms:kme), &amp;
                             u1(ims:ime,kms:kme),v1(ims:ime,kms:kme), &amp;
@@ -257,13 +270,6 @@
    integer :: kpbl(ims:ime)
    real :: var(ims:ime),oc1(ims:ime), &amp;
                             dusfc(ims:ime),dvsfc(ims:ime)
-
-!MPAS specific (Laura D. Fowler): We take into accound the actual size of individual
-!grid-boxes:
-   real,intent(in),dimension(ims:ime),optional:: areaCell
-   real,dimension(its:ite):: cleff_area
-!MPAS specific end.
-
 ! critical richardson number for wave breaking : ! larger drag with larger value
 !
    real,parameter :: ric = 0.25
@@ -287,10 +293,19 @@
    integer :: i,k,lcap,lcapp1,nwd,idir,kpblmin,kpblmax, &amp;
                             klcap,kp1,ikount,kk
 !
+!MPAS specific (Laura D. Fowler 2013-02-12):
+#if defined(non_hydrostatic_core)
+   real :: rcs,rclcs,csg,fdir,cs,rcsks, &amp;
+                            wdir,ti,rdz,temp,tem2,dw2,shr2,bvf2,rdelks, &amp;
+                            wtkbj,coefm,tem,gfobnv,hd,fro,rim,temc,tem1,efact, &amp;
+                            temv,dtaux,dtauy
+   real, dimension(its:ite):: cleff
+#else
    real :: rcs,rclcs,csg,fdir,cleff,cs,rcsks, &amp;
                             wdir,ti,rdz,temp,tem2,dw2,shr2,bvf2,rdelks, &amp;
                             wtkbj,coefm,tem,gfobnv,hd,fro,rim,temc,tem1,efact, &amp;
                             temv,dtaux,dtauy
+#endif        
 !
    logical :: ldrag(its:ite),icrilv(its:ite), &amp;
                             flag(its:ite),kloop1(its:ite)
@@ -334,7 +349,15 @@
 !!!!!!! cleff (subgrid mountain scale ) is highly tunable parameter
 !!!!!!! the bigger (smaller) value produce weaker (stronger) wave drag
 !
+!MPAS specific (Laura D. Fowler 2013-02-13):
+#if defined(non_hydrostatic_core)
+   do i = its, ite
+      cleff(i) = max(dxmeter(i),50.e3)
+   enddo
+#else
    cleff = max(dxmeter,50.e3)
+#endif
+!MPAS specific end.
 !
 ! initialize!!
 !
@@ -368,15 +391,6 @@
    do i = its,ite
      zlowtop(i) = 2. * var(i)
    enddo
-
-!MPAS specific (Laura D. Fowler)::
-   if(present(areaCell)) then
-      do i = its,ite
-         cleff_area(i) = max(sqrt(areaCell(i)),50.e3)
-      enddo
-   endif
-!MPAS specific end.
-
 !
 !--- determine new reference level &gt; 2*var
 !
@@ -586,11 +600,12 @@
        efact = (oa(i) + 2.) ** (ce*fr(i)/frc)
        efact = min( max(efact,efmin), efmax )
        coefm = (1. + ol(i)) ** (oa(i)+1.)
-       if(present(areaCell)) then
-          xlinv(i) = coefm / cleff_area(i)
-       else
-          xlinv(i) = coefm / cleff
-       endif
+!MPAS specific (Laura D. Fowler 2013-02-12):
+#if defined (non_hydrostatic_core)
+       xlinv(i) = coefm / cleff(i)
+#else
+       xlinv(i) = coefm / cleff
+#endif
        tem = fr(i) * fr(i) * oc1(i)
        gfobnv = gmax * tem / ((tem + cg)*bnv(i))
        taub(i) = xlinv(i) * roll(i) * ulow(i) * ulow(i) &amp;

</font>
</pre>