| 74 |
Gj = (myYGlobalLo-1)+(bj-1)*sNy+j |
Gj = (myYGlobalLo-1)+(bj-1)*sNy+j |
| 75 |
|
|
| 76 |
IF (STREAMICE_hmask(i,j,bi,bj).eq.1.0) THEN |
IF (STREAMICE_hmask(i,j,bi,bj).eq.1.0) THEN |
| 77 |
IF (Gi .eq. 1) THEN |
|
| 78 |
|
! we are in an "active" cell |
| 79 |
|
|
| 80 |
|
IF (Gi.eq.1.AND..NOT.STREAMICE_EW_periodic) THEN |
| 81 |
|
|
| 82 |
|
! western boundary - only one sided possible |
| 83 |
|
|
| 84 |
IF (STREAMICE_hmask(i+1,j,bi,bj).eq.1.0) THEN |
IF (STREAMICE_hmask(i+1,j,bi,bj).eq.1.0) THEN |
| 85 |
|
|
| 86 |
|
! cell to east is active |
| 87 |
|
|
| 88 |
sx = (surf_el_streamice(i+1,j,bi,bj)- |
sx = (surf_el_streamice(i+1,j,bi,bj)- |
| 89 |
& surf_el_streamice(i,j,bi,bj))/dxC(i+1,j,bi,bj) |
& surf_el_streamice(i,j,bi,bj))/dxC(i+1,j,bi,bj) |
| 90 |
ELSE |
ELSE |
| 91 |
|
|
| 92 |
|
! cell to east is empty |
| 93 |
|
|
| 94 |
sx = 0. _d 0 |
sx = 0. _d 0 |
| 95 |
ENDIF |
ENDIF |
| 96 |
ELSEIF (Gi .eq. Nx) THEN |
|
| 97 |
|
ELSEIF (Gi.eq.Nx.AND..NOT.STREAMICE_EW_periodic) THEN |
| 98 |
|
|
| 99 |
|
! eastern boundary - only one sided possible |
| 100 |
|
|
| 101 |
IF (STREAMICE_hmask(i-1,j,bi,bj).eq.1.0) THEN |
IF (STREAMICE_hmask(i-1,j,bi,bj).eq.1.0) THEN |
| 102 |
|
|
| 103 |
|
! cell to west is active |
| 104 |
|
|
| 105 |
sx = (surf_el_streamice(i,j,bi,bj)- |
sx = (surf_el_streamice(i,j,bi,bj)- |
| 106 |
& surf_el_streamice(i-1,j,bi,bj))/dxC(i,j,bi,bj) |
& surf_el_streamice(i-1,j,bi,bj))/dxC(i,j,bi,bj) |
| 107 |
ELSE |
ELSE |
| 108 |
|
|
| 109 |
|
! cell to west is inactive |
| 110 |
|
|
| 111 |
sx = 0. _d 0 |
sx = 0. _d 0 |
| 112 |
ENDIF |
ENDIF |
| 113 |
|
|
| 114 |
ELSE |
ELSE |
| 115 |
|
|
| 116 |
|
! interior (west-east) cell |
| 117 |
|
|
| 118 |
IF (STREAMICE_hmask(i+1,j,bi,bj).eq.1.0) THEN |
IF (STREAMICE_hmask(i+1,j,bi,bj).eq.1.0) THEN |
| 119 |
|
|
| 120 |
|
! cell to east is active |
| 121 |
|
|
| 122 |
diffx = diffx + dxC(i+1,j,bi,bj) |
diffx = diffx + dxC(i+1,j,bi,bj) |
| 123 |
sx = surf_el_streamice(i+1,j,bi,bj) |
sx = surf_el_streamice(i+1,j,bi,bj) |
| 124 |
ELSE |
ELSE |
| 125 |
sx = surf_el_streamice(i,j,bi,bj) |
sx = surf_el_streamice(i,j,bi,bj) |
| 126 |
ENDIF |
ENDIF |
| 127 |
IF (STREAMICE_hmask(i-1,j,bi,bj).eq.1.0) THEN |
IF (STREAMICE_hmask(i-1,j,bi,bj).eq.1.0) THEN |
| 128 |
|
|
| 129 |
|
! cell to west is active |
| 130 |
|
|
| 131 |
diffx = diffx + dxC(i,j,bi,bj) |
diffx = diffx + dxC(i,j,bi,bj) |
| 132 |
sx = sx - surf_el_streamice(i-1,j,bi,bj) |
sx = sx - surf_el_streamice(i-1,j,bi,bj) |
| 133 |
ELSE |
ELSE |
| 138 |
ELSE |
ELSE |
| 139 |
sx = 0. _d 0 |
sx = 0. _d 0 |
| 140 |
ENDIF |
ENDIF |
| 141 |
|
|
| 142 |
ENDIF |
ENDIF |
| 143 |
|
|
| 144 |
|
|
| 145 |
|
|
| 146 |
IF (Gj .eq. 1) THEN |
IF (Gj.eq.1.AND..NOT.STREAMICE_NS_periodic) THEN |
| 147 |
IF (STREAMICE_hmask(i,j+1,bi,bj).eq.1.0) THEN |
IF (STREAMICE_hmask(i,j+1,bi,bj).eq.1.0) THEN |
| 148 |
sy = (surf_el_streamice(i,j+1,bi,bj)- |
sy = (surf_el_streamice(i,j+1,bi,bj)- |
| 149 |
& surf_el_streamice(i,j,bi,bj))/dyC(i,j+1,bi,bj) |
& surf_el_streamice(i,j,bi,bj))/dyC(i,j+1,bi,bj) |
| 150 |
ELSE |
ELSE |
| 151 |
sy = 0. _d 0 |
sy = 0. _d 0 |
| 152 |
ENDIF |
ENDIF |
| 153 |
ELSEIF (Gj .eq. Ny) THEN |
ELSEIF (Gj.eq.Ny.AND..NOT.STREAMICE_NS_periodic) THEN |
| 154 |
IF (STREAMICE_hmask(i,j-1,bi,bj).eq.1.0) THEN |
IF (STREAMICE_hmask(i,j-1,bi,bj).eq.1.0) THEN |
| 155 |
sy = (surf_el_streamice(i,j,bi,bj)- |
sy = (surf_el_streamice(i,j,bi,bj)- |
| 156 |
& surf_el_streamice(i,j-1,bi,bj))/dyC(i,j,bi,bj) |
& surf_el_streamice(i,j-1,bi,bj))/dyC(i,j,bi,bj) |
| 182 |
DO l=0,1 |
DO l=0,1 |
| 183 |
IF (STREAMICE_umask(i+k,j+l,bi,bj).eq.1.0) THEN |
IF (STREAMICE_umask(i+k,j+l,bi,bj).eq.1.0) THEN |
| 184 |
taudx_SI(i+k,j+l,bi,bj) = taudx_SI(i+k,j+l,bi,bj) - |
taudx_SI(i+k,j+l,bi,bj) = taudx_SI(i+k,j+l,bi,bj) - |
| 185 |
& 0.25 * streamice_density * gravity * sx * |
& 0.25 * streamice_density * gravity * |
| 186 |
|
& (streamice_bg_surf_slope_x+sx) * |
| 187 |
& H_streamice(i,j,bi,bj) * rA(i,j,bi,bj) |
& H_streamice(i,j,bi,bj) * rA(i,j,bi,bj) |
| 188 |
|
! & (streamice_bg_surf_slope_x) * |
| 189 |
|
! & 1000. * rA(i,j,bi,bj) |
| 190 |
taudy_SI(i+k,j+l,bi,bj) = taudy_SI(i+k,j+l,bi,bj) - |
taudy_SI(i+k,j+l,bi,bj) = taudy_SI(i+k,j+l,bi,bj) - |
| 191 |
& 0.25 * streamice_density * gravity * sy * |
& 0.25 * streamice_density * gravity * |
| 192 |
|
& (streamice_bg_surf_slope_y+sy) * |
| 193 |
& H_streamice(i,j,bi,bj) * rA(i,j,bi,bj) |
& H_streamice(i,j,bi,bj) * rA(i,j,bi,bj) |
| 194 |
|
|
| 195 |
ENDIF |
ENDIF |
| 197 |
ENDDO |
ENDDO |
| 198 |
|
|
| 199 |
IF (float_frac_streamice(i,j,bi,bj) .eq. 1.0) then |
IF (float_frac_streamice(i,j,bi,bj) .eq. 1.0) then |
| 200 |
|
#ifdef USE_ALT_RLOW |
| 201 |
|
neu_val = .5 * gravity * |
| 202 |
|
& (streamice_density * H_streamice (i,j,bi,bj) ** 2 - |
| 203 |
|
& streamice_density_ocean_avg * R_low_si(i,j,bi,bj) ** 2) |
| 204 |
|
#else |
| 205 |
neu_val = .5 * gravity * |
neu_val = .5 * gravity * |
| 206 |
& (streamice_density * H_streamice (i,j,bi,bj) ** 2 - |
& (streamice_density * H_streamice (i,j,bi,bj) ** 2 - |
| 207 |
& streamice_density_ocean_avg * R_low(i,j,bi,bj) ** 2) |
& streamice_density_ocean_avg * R_low(i,j,bi,bj) ** 2 |
| 208 |
|
#endif |
| 209 |
ELSE |
ELSE |
| 210 |
neu_val = .5 * gravity * |
neu_val = .5 * gravity * |
| 211 |
& (1-streamice_density/streamice_density_ocean_avg) * |
& (1-streamice_density/streamice_density_ocean_avg) * |