<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, &
cp,g,rd,rv,ep1,pi, &
dt,dx,kpbl2d,itimestep, &
- areaCell, &
ids,ide, jds,jde, kds,kde, &
ims,ime, jms,jme, kms,kme, &
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 ) , &
intent(in ) :: qv3d, &
@@ -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) &
,oa4=oa4,ol4=ol4 &
,g=g,cp=cp,rd=rd,rv=rv,fv=ep1,pi=pi &
+!MPAS specific (Laura D. Fowler 2013-02-12):
+#if defined(non_hydrostatic_core)
+ ,dxmeter=dx(ims,j),deltim=dt &
+#else
,dxmeter=dx,deltim=dt &
+#endif
+!MPAS specific end.
,kpbl=kpbl2d(ims,j),kdt=itimestep,lat=j &
- ,areaCell=areaCell(ims,j) &
,ids=ids,ide=ide, jds=jds,jde=jde, kds=kds,kde=kde &
,ims=ims,ime=ime, jms=jms,jme=jme, kms=kms,kme=kme &
,its=its,ite=ite, jts=jts,jte=jte, kts=kts,kte=kte )
@@ -191,7 +197,6 @@
prsi,del,prsl,prslk,zl,rcl, &
var,oc1,oa4,ol4,dusfc,dvsfc, &
g,cp,rd,rv,fv,pi,dxmeter,deltim,kpbl,kdt,lat, &
- areaCell, &
ids,ide, jds,jde, kds,kde, &
ims,ime, jms,jme, kms,kme, &
its,ite, jts,jte, kts,kte)
@@ -244,7 +249,15 @@
ims,ime, jms,jme, kms,kme, &
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), &
dtaux2d(ims:ime,kms:kme),dtauy2d(ims:ime,kms:kme), &
u1(ims:ime,kms:kme),v1(ims:ime,kms:kme), &
@@ -257,13 +270,6 @@
integer :: kpbl(ims:ime)
real :: var(ims:ime),oc1(ims:ime), &
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, &
klcap,kp1,ikount,kk
!
+!MPAS specific (Laura D. Fowler 2013-02-12):
+#if defined(non_hydrostatic_core)
+ real :: rcs,rclcs,csg,fdir,cs,rcsks, &
+ wdir,ti,rdz,temp,tem2,dw2,shr2,bvf2,rdelks, &
+ wtkbj,coefm,tem,gfobnv,hd,fro,rim,temc,tem1,efact, &
+ temv,dtaux,dtauy
+ real, dimension(its:ite):: cleff
+#else
real :: rcs,rclcs,csg,fdir,cleff,cs,rcsks, &
wdir,ti,rdz,temp,tem2,dw2,shr2,bvf2,rdelks, &
wtkbj,coefm,tem,gfobnv,hd,fro,rim,temc,tem1,efact, &
temv,dtaux,dtauy
+#endif        
!
logical :: ldrag(its:ite),icrilv(its:ite), &
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 > 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) &
</font>
</pre>