| 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 |
|
|
| 78 |
|
! we are in an "active" cell |
| 79 |
|
|
| 80 |
IF (Gi.eq.1.AND..NOT.STREAMICE_EW_periodic) THEN |
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 |
|
|
| 97 |
ELSEIF (Gi.eq.Nx.AND..NOT.STREAMICE_EW_periodic) THEN |
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 |
|
|
| 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) * |