- Timestamp:
- 2015-06-22T16:40:58+02:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/restart_datestamp/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90
r5420 r5462 8 8 !! 3.3 ! 2011-10 (M. Leclair) totally rewrote domvvl: 9 9 !! vvl option includes z_star and z_tilde coordinates 10 !! 3.6 ! 2014-11 (P. Mathiot) add ice shelf capability 10 11 !!---------------------------------------------------------------------- 11 12 !! 'key_vvl' variable volume … … 125 126 INTEGER :: ji,jj,jk 126 127 INTEGER :: ii0, ii1, ij0, ij1 128 REAL(wp):: zcoef 127 129 !!---------------------------------------------------------------------- 128 130 IF( nn_timing == 1 ) CALL timing_start('dom_vvl_init') … … 164 166 ! t- and w- points depth 165 167 ! ---------------------- 168 ! set the isf depth as it is in the initial step 166 169 fsdept_n(:,:,1) = 0.5_wp * fse3w_n(:,:,1) 167 170 fsdepw_n(:,:,1) = 0.0_wp … … 169 172 fsdept_b(:,:,1) = 0.5_wp * fse3w_b(:,:,1) 170 173 fsdepw_b(:,:,1) = 0.0_wp 171 DO jj = 1,jpj 172 DO ji = 1,jpi 173 DO jk = 2,mikt(ji,jj)-1 174 fsdept_n(ji,jj,jk) = gdept_0(ji,jj,jk) 175 fsdepw_n(ji,jj,jk) = gdepw_0(ji,jj,jk) 176 fsde3w_n(ji,jj,jk) = gdept_0(ji,jj,jk) - sshn(ji,jj) 177 fsdept_b(ji,jj,jk) = gdept_0(ji,jj,jk) 178 fsdepw_b(ji,jj,jk) = gdepw_0(ji,jj,jk) 179 END DO 180 IF (mikt(ji,jj) .GT. 1) THEN 181 jk = mikt(ji,jj) 182 fsdept_n(ji,jj,jk) = gdepw_0(ji,jj,jk) + 0.5_wp * fse3w_n(ji,jj,jk) 183 fsdepw_n(ji,jj,jk) = gdepw_0(ji,jj,jk) 184 fsde3w_n(ji,jj,jk) = fsdept_n(ji,jj,jk ) - sshn (ji,jj) 185 fsdept_b(ji,jj,jk) = gdepw_0(ji,jj,jk) + 0.5_wp * fse3w_b(ji,jj,jk) 186 fsdepw_b(ji,jj,jk) = gdepw_0(ji,jj,jk) 187 END IF 188 DO jk = mikt(ji,jj)+1, jpk 189 fsdept_n(ji,jj,jk) = fsdept_n(ji,jj,jk-1) + fse3w_n(ji,jj,jk) 174 175 DO jk = 2, jpk 176 DO jj = 1,jpj 177 DO ji = 1,jpi 178 ! zcoef = (tmask(ji,jj,jk) - wmask(ji,jj,jk)) ! 0 everywhere tmask = wmask, ie everywhere expect at jk = mikt 179 ! 1 everywhere from mbkt to mikt + 1 or 1 (if no isf) 180 ! 0.5 where jk = mikt 181 zcoef = (tmask(ji,jj,jk) - wmask(ji,jj,jk)) 190 182 fsdepw_n(ji,jj,jk) = fsdepw_n(ji,jj,jk-1) + fse3t_n(ji,jj,jk-1) 191 fsde3w_n(ji,jj,jk) = fsdept_n(ji,jj,jk ) - sshn (ji,jj) 192 fsdept_b(ji,jj,jk) = fsdept_b(ji,jj,jk-1) + fse3w_b(ji,jj,jk) 183 fsdept_n(ji,jj,jk) = zcoef * ( fsdepw_n(ji,jj,jk ) + 0.5 * fse3w_n(ji,jj,jk)) & 184 & + (1-zcoef) * ( fsdept_n(ji,jj,jk-1) + fse3w_n(ji,jj,jk)) 185 fsde3w_n(ji,jj,jk) = fsdept_n(ji,jj,jk) - sshn(ji,jj) 193 186 fsdepw_b(ji,jj,jk) = fsdepw_b(ji,jj,jk-1) + fse3t_b(ji,jj,jk-1) 187 fsdept_b(ji,jj,jk) = zcoef * ( fsdepw_b(ji,jj,jk ) + 0.5 * fse3w_b(ji,jj,jk)) & 188 & + (1-zcoef) * ( fsdept_b(ji,jj,jk-1) + fse3w_b(ji,jj,jk)) 194 189 END DO 195 190 END DO … … 589 584 !! * Local declarations 590 585 INTEGER :: ji,jj,jk ! dummy loop indices 586 REAL(wp) :: zcoef 591 587 !!---------------------------------------------------------------------- 592 588 … … 635 631 ! t- and w- points depth 636 632 ! ---------------------- 633 ! set the isf depth as it is in the initial step 637 634 fsdept_n(:,:,1) = 0.5_wp * fse3w_n(:,:,1) 638 635 fsdepw_n(:,:,1) = 0.0_wp 639 636 fsde3w_n(:,:,1) = fsdept_n(:,:,1) - sshn(:,:) 640 DO jj = 1,jpj 641 DO ji = 1,jpi 642 DO jk = 2,mikt(ji,jj)-1 643 fsdept_n(ji,jj,jk) = gdept_0(ji,jj,jk) 644 fsdepw_n(ji,jj,jk) = gdepw_0(ji,jj,jk) 645 fsde3w_n(ji,jj,jk) = gdept_0(ji,jj,jk) - sshn(ji,jj) 646 END DO 647 IF (mikt(ji,jj) .GT. 1) THEN 648 jk = mikt(ji,jj) 649 fsdept_n(ji,jj,jk) = gdepw_0(ji,jj,jk) + 0.5_wp * fse3w_n(ji,jj,jk) 650 fsdepw_n(ji,jj,jk) = gdepw_0(ji,jj,jk) 651 fsde3w_n(ji,jj,jk) = fsdept_n(ji,jj,jk ) - sshn (ji,jj) 652 END IF 653 DO jk = mikt(ji,jj)+1, jpk 654 fsdept_n(ji,jj,jk) = fsdept_n(ji,jj,jk-1) + fse3w_n(ji,jj,jk) 637 638 DO jk = 2, jpk 639 DO jj = 1,jpj 640 DO ji = 1,jpi 641 ! zcoef = (tmask(ji,jj,jk) - wmask(ji,jj,jk)) ! 0 everywhere tmask = wmask, ie everywhere expect at jk = mikt 642 ! 1 for jk = mikt 643 zcoef = (tmask(ji,jj,jk) - wmask(ji,jj,jk)) 655 644 fsdepw_n(ji,jj,jk) = fsdepw_n(ji,jj,jk-1) + fse3t_n(ji,jj,jk-1) 656 fsde3w_n(ji,jj,jk) = fsdept_n(ji,jj,jk ) - sshn (ji,jj) 645 fsdept_n(ji,jj,jk) = zcoef * ( fsdepw_n(ji,jj,jk ) + 0.5 * fse3w_n(ji,jj,jk)) & 646 & + (1-zcoef) * ( fsdept_n(ji,jj,jk-1) + fse3w_n(ji,jj,jk)) 647 fsde3w_n(ji,jj,jk) = fsdept_n(ji,jj,jk) - sshn(ji,jj) 657 648 END DO 658 649 END DO 659 650 END DO 651 660 652 ! Local depth and Inverse of the local depth of the water column at u- and v- points 661 653 ! ---------------------------------------------------------------------------------- … … 1047 1039 INTEGER :: ji, jj, jk ! dummy loop indices 1048 1040 INTEGER :: ij0, ij1, ii0, ii1 ! dummy loop indices 1041 INTEGER :: isrow ! index for ORCA1 starting row 1049 1042 !! acc 1050 1043 !! Hmm with the time splitting these "fixes" seem to do more harm than good. Temporarily disabled for … … 1130 1123 IF( cp_cfg == "orca" .AND. jp_cfg == 1 ) THEN ! ORCA R1 configuration 1131 1124 ! ! ===================== 1132 ! 1133 ii0 = 281 ; ii1 = 282 ! Gibraltar Strait (e2u was modified) 1134 ij0 = 200 ; ij1 = 200 1125 ! This dirty section will be suppressed by simplification process: all this will come back in input files 1126 ! Currently these hard-wired indices relate to the original (pre-v3.6) configuration 1127 ! which had a grid-size of 362x292. 1128 ! This grid has been extended southwards for use with the under ice-shelf options (isf) introduced in v3.6. 1129 ! The original domain can still be used optionally if the isf code is not activated. 1130 ! An adjustment (isrow) is made to the hard-wired indices if the extended domain (362x332) is being used. 1131 ! 1132 IF ( jpjglo == 292 ) THEN ; isrow = 0 ! Using pre-v3.6 files or adjusted start row from isf-extended grid 1133 ELSEIF( jpjglo == 332 ) THEN ; isrow = 40 ! Using full isfextended domain. 1134 ENDIF 1135 ! 1136 ii0 = 282 ; ii1 = 283 ! Gibraltar Strait (e2u was modified) 1137 ij0 = 201 + isrow ; ij1 = 201 + isrow 1135 1138 DO jk = 1, jpkm1 1136 1139 DO jj = mj0(ij0), mj1(ij1) … … 1152 1155 END DO 1153 1156 ! 1154 ii0 = 314 ; ii1 = 315 ! Bhosporus Strait (e2u was modified)1155 ij0 = 208 ; ij1 = 2081157 ii0 = 314 ; ii1 = 315 ! Bhosporus Strait (e2u was modified) 1158 ij0 = 208 + isrow ; ij1 = 208 + isrow 1156 1159 DO jk = 1, jpkm1 1157 1160 DO jj = mj0(ij0), mj1(ij1) … … 1173 1176 END DO 1174 1177 ! 1175 ii0 = 44 ; ii1 = 44 ! Lombok Strait (e1v was modified)1176 ij0 = 124 ; ij1 = 1251178 ii0 = 44 ; ii1 = 44 ! Lombok Strait (e1v was modified) 1179 ij0 = 124 + isrow ; ij1 = 125 + isrow 1177 1180 DO jk = 1, jpkm1 1178 1181 DO jj = mj0(ij0), mj1(ij1) … … 1189 1192 END DO 1190 1193 ! 1191 ii0 = 48 ; ii1 = 48 ! Sumba Strait (e1v was modified) [closed from bathy_11 on]1192 ij0 = 124 ; ij1 = 1251194 ii0 = 48 ; ii1 = 48 ! Sumba Strait (e1v was modified) [closed from bathy_11 on] 1195 ij0 = 124 + isrow ; ij1 = 125 + isrow 1193 1196 DO jk = 1, jpkm1 1194 1197 DO jj = mj0(ij0), mj1(ij1) … … 1205 1208 END DO 1206 1209 ! 1207 ii0 = 53 ; ii1 = 53 ! Ombai Strait (e1v was modified)1208 ij0 = 124 ; ij1 = 1251210 ii0 = 53 ; ii1 = 53 ! Ombai Strait (e1v was modified) 1211 ij0 = 124 + isrow ; ij1 = 125 + isrow 1209 1212 DO jk = 1, jpkm1 1210 1213 DO jj = mj0(ij0), mj1(ij1) … … 1221 1224 END DO 1222 1225 ! 1223 ii0 = 56 ; ii1 = 56 ! Timor Passage (e1v was modified)1224 ij0 = 124 ; ij1 = 1251226 ii0 = 56 ; ii1 = 56 ! Timor Passage (e1v was modified) 1227 ij0 = 124 + isrow ; ij1 = 125 + isrow 1225 1228 DO jk = 1, jpkm1 1226 1229 DO jj = mj0(ij0), mj1(ij1) … … 1237 1240 END DO 1238 1241 ! 1239 ii0 = 55 ; ii1 = 55 ! West Halmahera Strait (e1v was modified)1240 ij0 = 141 ; ij1 = 1421242 ii0 = 55 ; ii1 = 55 ! West Halmahera Strait (e1v was modified) 1243 ij0 = 141 + isrow ; ij1 = 142 + isrow 1241 1244 DO jk = 1, jpkm1 1242 1245 DO jj = mj0(ij0), mj1(ij1) … … 1253 1256 END DO 1254 1257 ! 1255 ii0 = 58 ; ii1 = 58 ! East Halmahera Strait (e1v was modified)1256 ij0 = 141 ; ij1 = 1421258 ii0 = 58 ; ii1 = 58 ! East Halmahera Strait (e1v was modified) 1259 ij0 = 141 + isrow ; ij1 = 142 + isrow 1257 1260 DO jk = 1, jpkm1 1258 1261 DO jj = mj0(ij0), mj1(ij1)
Note: See TracChangeset
for help on using the changeset viewer.