!-------------------------------------- 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 vspng_lam * #include "model_macros_f.h"*
subroutine vspng_lam ( F_champ, DIST_DIM, pni, pnj ) 42 #include "impnone.cdk"
* integer DIST_DIM,pni,pnj real F_champ(DIST_SHAPE,*) * *author Claude Girard Sept 2002 * *revision * v3_02 - Lee V. - initial version (from MC2 topspng2+smth2d) * *object * This routine iterates around a 9 points horizontal filter ** *implicit #include "glb_ld.cdk"
#include "glb_pil.cdk"
#include "vspng.cdk"
* integer i,j,k,iter,i0,in,j0,jn real*8 c1,c2,c3,one,two,four parameter(one=1.d0,two=2.d0,four=4.d0) real wk(l_ni,l_nj,G_nk) *--------------------------------------------------------------------- * i0=1 in=l_niu j0=1 jn=l_njv if (l_south) j0=2 if (l_north) jn=l_njv-1 if (l_west) i0=2 if (l_east) in=l_niu-1 do iter = 1, Vspng_niter * call rpn_comm_xch_halo (F_champ,LDIST_DIM,pni,pnj, $ G_nk,G_halox,G_haloy,G_periodx,G_periody,l_ni,0) * do k=1,Vspng_nk c1= (one-two*Vspng_nu(k))*Vspng_nu(k) c2= Vspng_nu(k)**two c3= four*(Vspng_nu(k)-one)*Vspng_nu(k) do j=j0,jn do i=i0,in wk(i,j,k)= c1*(F_champ(i ,j+1,k)+F_champ(i+1,j ,k) + $ F_champ(i ,j-1,k)+F_champ(i-1,j ,k))+ $ c2*(F_champ(i-1,j+1,k)+F_champ(i+1,j+1,k) + $ F_champ(i-1,j-1,k)+F_champ(i+1,j-1,k))+ $ c3* F_champ(i ,j ,k) end do end do do j=1+pil_s, l_nj-pil_n do i=1+pil_w, l_ni-pil_e F_champ(i,j,k)= F_champ(i,j,k) + wk(i,j,k) end do end do end do * end do * *---------------------------------------------------------------------- return end