!-------------------------------------- LICENCE BEGIN ------------------------------------
!Environment Canada - Atmospheric Science and Technology License/Disclaimer,
! version 3; Last Modified: May 7, 2008.
!This is free but copyrighted software; you can use/redistribute/modify it under the terms
!of the Environment Canada - Atmospheric Science and Technology License/Disclaimer
!version 3 or (at your option) any later version that should be found at:
!http://collaboration.cmc.ec.gc.ca/science/rpn.comm/license.html
!
!This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
!without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
!See the above mentioned License/Disclaimer for more details.
!You should have received a copy of the License/Disclaimer along with this software;
!if not, you can write to: EC-RPN COMM Group, 2121 TransCanada, suite 500, Dorval (Quebec),
!CANADA, H9P 1J3; or send e-mail to service.rpn@ec.gc.ca
!-------------------------------------- LICENCE END --------------------------------------
***s/r nest_blen -
*
#include "model_macros_f.h"
*
subroutine nest_blen () 2,15
implicit none
*
*author
* Michel Desgagne - Spring 2006
*
*revision
* v3_30 - Lee V. - initial version
* v3_31 - Chardon L. - Allow offline mode to blend over whole domain
*
*object
*
*arguments
* none
*
*implicits
#include "glb_ld.cdk"
#include "vt1.cdk"
#include "nest.cdk"
#include "tr3d.cdk"
#include "schm.cdk"
#include "hblen.cdk"
#include "lun.cdk"
#include "vtopo.cdk"
*
integer vmmlod,vmmget,vmmuld
external vmmlod,vmmget,vmmuld
*
integer err,key(26),i,j,k,nvar
integer key1(Tr3d_ntr),key1_,key2(Tr3d_ntr),key2_, n
real tr,tr1
pointer (patr, tr(LDIST_SHAPE,*)),(patr1,tr1(LDIST_SHAPE,*))
*----------------------------------------------------------------------
*
if (.not.Hblen_wfct_S .eq. "CONST") then
if ( (north+south+west+east.lt.1) .or.
$ ((Hblen_x.le.0).and.(Hblen_y.le.0)) ) return
endif
*
if (Lun_debug_L) write(Lun_out,1001)
key(1 )=VMM_KEY(nest_u)
key(2 )=VMM_KEY(nest_v)
key(3 )=VMM_KEY(nest_t)
key(4 )=VMM_KEY(nest_psd)
key(5 )=VMM_KEY(nest_pip)
key(6 )=VMM_KEY(nest_fip)
key(7 )=VMM_KEY(nest_td)
key(8 )=VMM_KEY(nest_fi)
key(9 )=VMM_KEY(nest_q)
key(10)=VMM_KEY(nest_s)
key(11)=VMM_KEY(nest_tp)
key(12)=VMM_KEY(ut1)
key(13)=VMM_KEY(vt1)
key(14)=VMM_KEY(tt1)
key(15)=VMM_KEY(psdt1)
key(16)=VMM_KEY(pipt1)
key(17)=VMM_KEY(fipt1)
key(18)=VMM_KEY(tdt1)
key(19)=VMM_KEY(fit1)
key(20)=VMM_KEY(qt1)
key(21)=VMM_KEY(st1)
key(22)=VMM_KEY(tpt1)
nvar = 22
*
if (.not.Schm_hydro_L) then
key(23)=VMM_KEY(nest_w)
key(24)=VMM_KEY(nest_mu)
key(25)=VMM_KEY(wt1)
key(26)=VMM_KEY(mut1)
nvar = 26
endif
*
err = vmmlod(key,nvar)
err = VMM_GET_VAR(nest_u)
err = VMM_GET_VAR(nest_v)
err = VMM_GET_VAR(nest_t)
err = VMM_GET_VAR(nest_psd)
err = VMM_GET_VAR(nest_pip)
err = VMM_GET_VAR(nest_fip)
err = VMM_GET_VAR(nest_td)
err = VMM_GET_VAR(nest_fi)
err = VMM_GET_VAR(nest_q)
err = VMM_GET_VAR(nest_s)
err = VMM_GET_VAR(nest_tp)
err = VMM_GET_VAR(ut1)
err = VMM_GET_VAR(vt1)
err = VMM_GET_VAR(tt1)
err = VMM_GET_VAR(psdt1)
err = VMM_GET_VAR(pipt1)
err = VMM_GET_VAR(fipt1)
err = VMM_GET_VAR(tdt1)
err = VMM_GET_VAR(fit1)
err = VMM_GET_VAR(qt1)
err = VMM_GET_VAR(st1)
err = VMM_GET_VAR(tpt1)
if (.not.Schm_hydro_L) then
err = VMM_GET_VAR(nest_w)
err = VMM_GET_VAR(nest_mu)
err = VMM_GET_VAR(wt1)
err = VMM_GET_VAR(mut1)
endif
*
* Update the nesting values in the blending zone before blending
* if the orography is growing
if (Vtopo_L) then
call vtopo_bnd_update
(nest_q,nest_fi,nest_t,nest_pip,
$ nest_s,LDIST_DIM,G_nk,Hblen_x,Hblen_y)
endif
*
* Set up blending zones
call nesajr
(ut1 ,nest_u ,LDIST_DIM,G_nk ,1,0,Hblen_x,Hblen_y)
call nesajr
(vt1 ,nest_v ,LDIST_DIM,G_nk ,0,1,Hblen_x,Hblen_y)
call nesajr
(tdt1 ,nest_td ,LDIST_DIM,G_nk ,0,0,Hblen_x,Hblen_y)
call nesajr
(psdt1,nest_psd,LDIST_DIM,G_nk ,0,0,Hblen_x,Hblen_y)
call nesajr
(tt1 ,nest_t ,LDIST_DIM,G_nk ,0,0,Hblen_x,Hblen_y)
call nesajr
(tpt1 ,nest_tp ,LDIST_DIM,G_nk ,0,0,Hblen_x,Hblen_y)
call nesajr
(fit1 ,nest_fi ,LDIST_DIM,G_nk ,0,0,Hblen_x,Hblen_y)
call nesajr
(fipt1,nest_fip,LDIST_DIM,G_nk ,0,0,Hblen_x,Hblen_y)
call nesajr
(qt1 ,nest_q ,LDIST_DIM,G_nk ,0,0,Hblen_x,Hblen_y)
call nesajr
(pipt1,nest_pip,LDIST_DIM,G_nk ,0,0,Hblen_x,Hblen_y)
call nesajr
(st1 ,nest_s ,LDIST_DIM, 1 ,0,0,Hblen_x,Hblen_y)
*
if (.not. Schm_hydro_L) then
call nesajr
(wt1 ,nest_w ,LDIST_DIM,G_nk,0,0,Hblen_x,Hblen_y)
call nesajr
(mut1 ,nest_mu ,LDIST_DIM,G_nk,0,0,Hblen_x,Hblen_y)
endif
err = vmmuld(key,nvar)
*
key2_ = VMM_KEY (nest_tr)
key1_ = VMM_KEY (trt1)
do n=1,Tr3d_ntr
key2(n) = key2_ + n
key1(n) = key1_ + n
end do
if (Tr3d_ntr.gt.0) then
err = vmmlod(key2,Tr3d_ntr)
err = vmmlod(key1,Tr3d_ntr)
do n=1,Tr3d_ntr
err = vmmget(key2(n),patr,tr)
err = vmmget(key1(n),patr1,tr1)
call nesajr
(tr1, tr, LDIST_DIM,G_nk,0,0,Hblen_x,Hblen_y)
enddo
err = vmmuld(key1,Tr3d_ntr)
err = vmmuld(key2,Tr3d_ntr)
endif
*
*
1001 format(/,'BLENDING TO PILOT AREA(S/R NEST_BLEN):',/,60('='))
*----------------------------------------------------------------------
return
end