c********************************************************************** c subroutine sbdirini - initializes grid/wind direction relationships c********************************************************************** subroutine sbdirini( i wind_dir, prev_dir o ) c +++ purpose +++ 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 wind_dir real prev_dir c c +++ ARGUMENT DEFINITIONS +++ c wind_dir - direction of the wind in degrees from north c prev_dir - previously computed direction of the wind c c +++ PARAMETER +++ real*4 pid180 parameter(pid180 = 3.14159/180.) c c + + + GLOBAL COMMON BLOCKS + + + *$noreference include 'p1werm.inc' include 'm1geo.inc' include 'm1subr.inc' include 's1sgeo.inc' include 'w1wind.inc' c c + + + LOCAL COMMON BLOCKS + + + include 'erosion/m2geo.inc' include 'erosion/e3grid.inc' include 'erosion/s2sgeo.inc' C *$reference c c + + + LOCAL VARIABLES + + + integer icsr, i, j, ke real*4 sfd1(mnsub), sfd10(mnsub), sfd84(mnsub), sfd200(mnsub) real*4 xa c c + + + LOCAL VARIABLE DEFINITIONS + + + c icsr = index of current subregion c c + + + SUBROUTINES CALLED + + + C sbsfdi c c + + + END SPECIFICATION + + + c c check and do not calculate if done on last entry if( wind_dir.eq.prev_dir ) return prev_dir = wind_dir do 5 icsr = 1, nsubr c calc. ridge spacing parallel the wind xa = abs(sin(pid180*abs(wind_dir - asargo(icsr)))) xa = max(0.25, xa) sxprg(icsr) = asxrgs(icsr)/xa 5 continue c c calc wind angle relative to the field Y-axis (+, - 45 deg. range) awa = wind_dir - amasim if (awa .lt. 0.0 ) awa = awa + 360.0 if (awa .gt. 360.0) awa = awa - 360.0 sin_awa = sin(awa*pid180) cos_awa = cos(awa*pid180) tan_awa = tan(awa*pid180) c c find wind quadrant relative to sim region & select sweep sequence c If (awa .ge. 0.0 .and. awa .lt. 90.0) then i1 = imax - 1 i2 = 1 i3 = -1 i4 = jmax - 1 i5 = 1 i6 = -1 ke = 1 c elseif (awa .ge. 90.0 .and. awa .lt. 180.0) then i1 = imax - 1 i2 = 1 i3 = -1 i4 = 1 i5 = jmax - 1 i6 = 1 ke = 1 c elseif (awa .ge. 180.0 .and. awa .lt. 270.0) 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 (wind_dir .ge. 337.5 .or. wind_dir .lt. 22.5) then kbr = 1 elseif (wind_dir .lt. 67.5) then kbr = 2 elseif (wind_dir.lt. 112.5) then kbr = 3 elseif (wind_dir .lt. 157.5) then kbr = 4 elseif (wind_dir .lt. 202.5) then kbr = 5 elseif (wind_dir.lt. 247.5) then kbr = 6 elseif (wind_dir .lt. 292.5) then kbr = 7 else kbr = 8 endif c return end c++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++