c********************************************************************** c subroutine sbinit c********************************************************************** subroutine sbinit c +++ purpose +++ c Input subregion values of variables from other submodels c to the grid points of the erosion submodel which erosion changes c Initialize output grid array c Calc. soil fraction of 4 dia. from asd, & rr shelter angles c Calc. wind angle on the sim. region c Calc. sweep sequence for update of grid cells c calc. ridge spacing parallel the wind c c +++ ARGUMENT DECLARATIONS +++ real pid180 c c +++ ARGUMENT DEFINITIONS +++ c do them later c c +++ PARAMETER +++ parameter(pid180 = 3.14159/180.) c c + + + GLOBAL COMMON BLOCKS + + + *$noreference include 'p1werm.inc' include 'm1geo.inc' include 'm1subr.inc' c tmp include 'p1const.inc' include 's1phys.inc' include 's1agg.inc' include 's1dbh.inc' include 's1surf.inc' include 's1sgeo.inc' include 'w1wind.inc' c c + + + LOCAL COMMON BLOCKS + + + include 'erosion/m2geo.inc' include 'erosion/e2grid.inc' include 'erosion/e3grid.inc' include 'erosion/s2agg.inc' include 'erosion/s2surf.inc' include 'erosion/s2sgeo.inc' include 'erosion/e2erod.inc' C *$reference c c + + + LOCAL VARIABLES + + + integer icsr, i, j, ke real sfd1(mnsub), sfd10(mnsub), sfd84(mnsub), sfd200(mnsub) real xa c c + + + LOCAL VARIABLE DEFINITIONS + + + c icsr = index of current subregion c c + + + SUBROUTINES CALLED + + + C sbsfdi c c + + + END SPECIFICATION + + + c c calculate fraction less than diameter from asd c determine current subregion do 5 icsr = 1, nsubr call sbsfdi i (aslagm(1,icsr),as0ags(1,icsr), aslagn(1,icsr), i aslagx(1,icsr), 0.01, o sfd1(icsr)) call sbsfdi i (aslagm(1,icsr), as0ags(1,icsr), aslagn(1,icsr), i aslagx(1,icsr), 0.1, o sfd10(icsr)) call sbsfdi i (aslagm(1,icsr), as0ags(1,icsr), aslagn(1,icsr), i aslagx(1,icsr), 0.84, o sfd84(icsr)) call sbsfdi i (aslagm(1,icsr), as0ags(1,icsr), aslagn(1,icsr), i aslagx(1,icsr), 2.0, o sfd200(icsr)) c c calc. rigde spacing parallel the wind xa = abs(sin(pid180*abs(awadir - asargo(icsr)))) xa = max(0.25, xa) sxprg(icsr) = asxrgs(icsr)/xa 5 continue c do 20 j = 0, jmax do 10 i = 0, imax c determine subregion (at present only 1 subregion) c input variables to grid cells icsr = csr(i,j) sf1 (i,j) = sfd1(icsr) sf10 (i,j) = sfd10(icsr) sf84 (i,j) = sfd84(icsr) sf200(i,j) = sfd200(icsr) c szcr(i,j) = aszcr (icsr) sfcr(i,j) = asfcr (icsr) smlos(i,j) = asmlos (icsr) sflos(i,j) = asflos (icsr) c szrgh(i,j) = aszrgh (icsr) slrr(i,j) = aslrr (icsr) sarrc(i,j) = 2.3 * sqrt (aslrr (icsr)) sarrc(i,j) = max(sarrc(i,j), 2.0) c c initialize output array- now in sbigrd c egt(i,j) = 0 c egtss(i,j) = 0 c egt10(i,j) = 0 c 10 continue 20 continue c c calc wind angle relative to the field Y-axis (+, - 45 deg. range) awa = awadir - amasim if (awa .lt. 0 ) awa = awa + 360 if (awa .gt. 360) awa = awa - 360 c c find wind quadrant relative to sim region & select sweep sequence c If (awa .ge. 0 .and. awa .lt. 90) then i1 = imax - 1 i2 = 1 i3 = -1 i4 = jmax - 1 i5 = 1 i6 = -1 ke = 1 c elseif (awa .ge. 90 .and. awa .lt. 180) then i1 = imax - 1 i2 = 1 i3 = -1 i4 = 1 i5 = jmax - 1 i6 = 1 ke = 1 c elseif (awa .ge. 180 .and. awa .lt. 270) then i1 = 1 i2 = imax - 1 i3 = 1 i4 = 1 i5 = jmax - 1 i6 = 1 ke = 1 c else i1 = 1 i2 = imax - 1 i3 = 1 i4 = jmax - 1 i5 = 1 i6 = -1 ke = 1 endif c c determine barrier influence direction index (kbr) c if (awadir .ge. 337.5 .or. awadir .lt. 22.5) then kbr = 1 elseif (awadir .lt. 67.5) then kbr = 2 elseif (awadir.lt. 112.5) then kbr = 3 elseif (awadir .lt. 157.5) then kbr = 4 elseif (awadir .lt. 202.5) then kbr = 5 elseif (awadir.lt. 247.5) then kbr = 6 elseif (awadir .lt. 292.5) then kbr = 7 else kbr = 8 endif c return end c++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++