subroutine bcond(idx) include 'comblk.h' c c This version of BCOND provides periodic boundary conditions in c the N-S direction (i.e., the "y" direction). The scheme consists c of folding two rows from the north (south) to the south (north) c such that values and their first *and* second difference gradients c of all prognostic quantities are the same at both ends of the c domain. See the sketch below. c c Note that this scheme does not require folding of wubot, wvbot c and other derived quantities which are folded in some older c periodic bconds. Those older versions carried two rows from north c to south and only one row from south to north which, at first c glance would seem to be sufficient, but prove to be inadequate. c c Jerry Miller and David Smith c Center for Coastal Physical Oceanography c Old Dominion University c Norfolk, VA 23508 c January 6, 1995 c c--------------------------------------------------------------- c each line below represents a line (im elements long) c in the model with the computationl cell of: c c U - E c C-grid with T and S | c known at E (eta) V c points c c * * * represents interior calculation lines c - - - represents "boundary lines" c # represents grid cells set by closed BC's c no-slip (dum mask) c c i= 1 2 im c c # # - - - - - - - - - - # jm <---- (info from line 4) c c # # * * * * * * * * * * # jmm1 <---- (info from line 3) c c # # * * * * * * * * * * # jm-2 c c # # * * * * * * * * * * # jm-3 c c # # * * * * * * * * * * # jm-5 c c . c . c . c c # # * * * * * * * * * * # 4 c c # # * * * * * * * * * * # 3 c c # # * * * * * * * * * * # 2 <---- (info from line jm-2) c c # # - - - - - - - - - - # 1 <---- (info from line jm-3) c c c--------------------------------------------------------------- c c data pi/3.1415927/,gee/9.807/ go to (10,20,30,40,50,60), idx c 10 continue c----------------------------------------------------------------------- c external elev. b.c.'s c----------------------------------------------------------------------- do 110 i=1,im elf(i,jm)=elf(i,4) elf(i,jmm1)=elf(i,3) elf(i,2)=elf(i,jm-2) elf(i,1)=elf(i,jm-3) 110 continue ccc apply the mask do 115 j=1,jm do 115 i=1,im elf(i,j)=elf(i,j)*fsm(i,j) 115 continue return c 20 continue c----------------------------------------------------------------------- c external vel b.c.'s c----------------------------------------------------------------------- do 124 i=1,im vaf(i,jm)=vaf(i,4) vaf(i,jmm1)=vaf(i,3) vaf(i,2)=vaf(i,jm-2) vaf(i,1)=vaf(i,jm-3) uaf(i,jm)=uaf(i,4) uaf(i,jmm1)=uaf(i,3) uaf(i,2)=uaf(i,jm-2) uaf(i,1)=uaf(i,jm-3) 124 continue ccc apply the mask do 135 j=1,jm do 135 i=1,im uaf(i,j)=uaf(i,j)*dum(i,j) vaf(i,j)=vaf(i,j)*dvm(i,j) 135 continue return c 30 continue c----------------------------------------------------------------------- c internal vel b.c.'s c----------------------------------------------------------------------- do 158 k=1,kb do 150 i=1,im vf(i,jm,k)=vf(i,4,k) vf(i,jmm1,k)=vf(i,3,k) vf(i,2,k)=vf(i,jm-2,k) vf(i,1,k)=vf(i,jm-3,k) uf(i,jm,k)=uf(i,4,k) uf(i,jmm1,k)=uf(i,3,k) uf(i,2,k)=uf(i,jm-2,k) uf(i,1,k)=uf(i,jm-3,k) 150 continue 158 continue ccc apply the mask ************************* do 160 k=1,kbm1 do 160 j=1,jm do 160 i=1,im uf(i,j,k)=uf(i,j,k)*dum(i,j) vf(i,j,k)=vf(i,j,k)*dvm(i,j) 160 continue return c 40 continue c----------------------------------------------------------------------- c temp & sal b.c.'s c----------------------------------------------------------------------- do 230 k=1,kb do 230 i=1,im vf(i,jm,k)=vf(i,4,k) vf(i,jmm1,k)=vf(i,3,k) vf(i,2,k)=vf(i,jm-2,k) vf(i,1,k)=vf(i,jm-3,k) uf(i,jm,k)=uf(i,4,k) uf(i,jmm1,k)=uf(i,3,k) uf(i,2,k)=uf(i,jm-2,k) uf(i,1,k)=uf(i,jm-3,k) 230 continue ccc apply the masks do 240 k=1,kbm1 do 240 i=1,im do 240 j=1,jm uf(i,j,k)=uf(i,j,k)*fsm(i,j) vf(i,j,k)=vf(i,j,k)*fsm(i,j) 240 continue return c c 50 continue c---------------vertical vel. b. c.'s -------------------------------- do 247 k=1,kb do 247 i=1,im w(i,jm,k)=w(i,4,k) w(i,jmm1,k)=w(i,3,k) w(i,2,k)=w(i,jm-2,k) w(i,1,k)=w(i,jm-3,k) 247 continue do 250 k=1,kbm1 do 250 j=1,jm do 250 i=1,im w(i,j,k)=w(i,j,k)*fsm(i,j) 250 continue return c 60 continue c---------------- q2 and q2l b.c.'s ----------------------------------- do 330 k=1,kb do 330 i=1,im vf(i,jm,k)=vf(i,4,k) vf(i,jmm1,k)=vf(i,3,k) vf(i,2,k)=vf(i,jm-2,k) vf(i,1,k)=vf(i,jm-3,k) uf(i,jm,k)=uf(i,4,k) uf(i,jmm1,k)=uf(i,3,k) uf(i,2,k)=uf(i,jm-2,k) uf(i,1,k)=uf(i,jm-3,k) 330 continue do 300 k=1,kb do 300 j=1,jm do 300 i=1,im uf(i,j,k)=uf(i,j,k)*fsm(i,j) vf(i,j,k)=vf(i,j,k)*fsm(i,j) 300 continue return end