- Timestamp:
- 2011-10-06T11:26:33+02:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/UKMO_MERCATOR_obc_bdy_merge/NEMOGCM/NEMO/OPA_SRC/SOL/solmat.F90
r2797 r2888 27 27 USE phycst ! physical constants 28 28 USE obc_oce ! ocean open boundary conditions 29 USE bdy_oce ! unstructured open boundary conditions 29 30 USE lbclnk ! lateral boudary conditions 30 31 USE lib_mpp ! distributed memory computing … … 80 81 ENDIF 81 82 82 #if defined key_dynspg_flt 83 #if defined key_dynspg_flt && ! defined key_bdy 83 84 # if ! defined key_obc 84 85 … … 98 99 END DO 99 100 END DO 100 101 101 # else 102 103 ! defined gcdmat in the case of open boundaries 102 IF ( Agrif_Root() ) THEN 103 DO jj = 2, jpjm1 ! matrix of free surface elliptic system with open boundaries 104 DO ji = 2, jpim1 105 zcoef = z2dt * z2dt * grav * bmask(ji,jj) 106 ! ! south coefficient 107 IF( lp_obc_south .AND. ( jj == njs0p1 ) ) THEN 108 zcoefs = -zcoef * hv(ji,jj-1) * e1v(ji,jj-1)/e2v(ji,jj-1)*(1.-vsmsk(ji,1)) 109 ELSE 110 zcoefs = -zcoef * hv(ji,jj-1) * e1v(ji,jj-1)/e2v(ji,jj-1) 111 END IF 112 gcp(ji,jj,1) = zcoefs 113 ! 114 ! ! west coefficient 115 IF( lp_obc_west .AND. ( ji == niw0p1 ) ) THEN 116 zcoefw = -zcoef * hu(ji-1,jj) * e2u(ji-1,jj)/e1u(ji-1,jj)*(1.-uwmsk(jj,1)) 117 ELSE 118 zcoefw = -zcoef * hu(ji-1,jj) * e2u(ji-1,jj)/e1u(ji-1,jj) 119 END IF 120 gcp(ji,jj,2) = zcoefw 121 ! 122 ! ! east coefficient 123 IF( lp_obc_east .AND. ( ji == nie0 ) ) THEN 124 zcoefe = -zcoef * hu(ji,jj) * e2u(ji,jj)/e1u(ji,jj)*(1.-uemsk(jj,1)) 125 ELSE 126 zcoefe = -zcoef * hu(ji,jj) * e2u(ji,jj)/e1u(ji,jj) 127 END IF 128 gcp(ji,jj,3) = zcoefe 129 ! 130 ! ! north coefficient 131 IF( lp_obc_north .AND. ( jj == njn0 ) ) THEN 132 zcoefn = -zcoef * hv(ji,jj) * e1v(ji,jj)/e2v(ji,jj)*(1.-vnmsk(ji,1)) 133 ELSE 134 zcoefn = -zcoef * hv(ji,jj) * e1v(ji,jj)/e2v(ji,jj) 135 END IF 136 gcp(ji,jj,4) = zcoefn 137 ! 138 ! ! diagonal coefficient 139 gcdmat(ji,jj) = e1t(ji,jj)*e2t(ji,jj)*bmask(ji,jj) & 140 & - zcoefs -zcoefw -zcoefe -zcoefn 141 END DO 142 END DO 143 ELSE 144 DO jj = 2, jpjm1 ! matrix of free surface elliptic system 145 DO ji = 2, jpim1 146 zcoef = z2dt * z2dt * grav * bmask(ji,jj) 147 zcoefs = -zcoef * hv(ji ,jj-1) * e1v(ji ,jj-1) / e2v(ji ,jj-1) ! south coefficient 148 zcoefw = -zcoef * hu(ji-1,jj ) * e2u(ji-1,jj ) / e1u(ji-1,jj ) ! west coefficient 149 zcoefe = -zcoef * hu(ji ,jj ) * e2u(ji ,jj ) / e1u(ji ,jj ) ! east coefficient 150 zcoefn = -zcoef * hv(ji ,jj ) * e1v(ji ,jj ) / e2v(ji ,jj ) ! north coefficient 151 gcp(ji,jj,1) = zcoefs 152 gcp(ji,jj,2) = zcoefw 153 gcp(ji,jj,3) = zcoefe 154 gcp(ji,jj,4) = zcoefn 155 gcdmat(ji,jj) = e1t(ji,jj) * e2t(ji,jj) * bmask(ji,jj) & ! diagonal coefficient 156 & - zcoefs -zcoefw -zcoefe -zcoefn 157 END DO 158 END DO 159 ENDIF 160 # endif 161 162 # elif defined key_dynspg_flt && defined key_bdy 163 164 ! defined gcdmat in the case of unstructured open boundaries 104 165 DO jj = 2, jpjm1 105 166 DO ji = 2, jpim1 … … 108 169 ! south coefficient 109 170 zcoefs = -zcoef * hv(ji,jj-1) * e1v(ji,jj-1)/e2v(ji,jj-1) 110 zcoefs = zcoefs * obcvmask(ji,jj-1)171 zcoefs = zcoefs * bdyvmask(ji,jj-1) 111 172 gcp(ji,jj,1) = zcoefs 112 173 113 174 ! west coefficient 114 175 zcoefw = -zcoef * hu(ji-1,jj) * e2u(ji-1,jj)/e1u(ji-1,jj) 115 zcoefw = zcoefw * obcumask(ji-1,jj)176 zcoefw = zcoefw * bdyumask(ji-1,jj) 116 177 gcp(ji,jj,2) = zcoefw 117 178 118 179 ! east coefficient 119 180 zcoefe = -zcoef * hu(ji,jj) * e2u(ji,jj)/e1u(ji,jj) 120 zcoefe = zcoefe * obcumask(ji,jj)181 zcoefe = zcoefe * bdyumask(ji,jj) 121 182 gcp(ji,jj,3) = zcoefe 122 183 123 184 ! north coefficient 124 185 zcoefn = -zcoef * hv(ji,jj) * e1v(ji,jj)/e2v(ji,jj) 125 zcoefn = zcoefn * obcvmask(ji,jj)186 zcoefn = zcoefn * bdyvmask(ji,jj) 126 187 gcp(ji,jj,4) = zcoefn 127 188 … … 132 193 END DO 133 194 134 #endif135 195 #endif 136 196
Note: See TracChangeset
for help on using the changeset viewer.