Changeset 4747 for branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM
- Timestamp:
- 2014-08-15T16:32:52+02:00 (10 years ago)
- Location:
- branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/CONFIG/ISOMIP/EXP00/namelist_cfg
r4666 r4747 24 24 &namrun ! parameters of the run 25 25 !----------------------------------------------------------------------- 26 nn_no = 1 ! job number (no more used...)26 nn_no = 1 ! job number (no more used...) 27 27 cn_exp = "ISOMIP" ! experience name 28 nn_it000 = 1 ! first time step28 nn_it000 = 1 ! first time step 29 29 nn_itend = 490560 ! last time step (std 5475) 30 30 nn_date0 = 010101 ! date at nit_0000 (format yyyymmdd) used if ln_rstart=F or (ln_rstart=T and nn_rstctl=0 or 1) 31 31 nn_leapy = 0 ! Leap year calendar (1) or not (0) 32 ln_rstart = .false. ! start from rest (F) or from a restart file (T)32 ln_rstart = .false. ! start from rest (F) or from a restart file (T) 33 33 nn_euler = 1 ! = 0 : start with forward time step if ln_rstart=.true. 34 34 nn_rstctl = 0 ! restart control => activated only if ln_rstart = T … … 82 82 ln_zps = .true. ! z-coordinate - partial steps (T/F) 83 83 ln_sco = .false. ! s- or hybrid z-s-coordinate (T/F) 84 ln_isfcav = .true. ! ice shelf cavity 84 85 / 85 86 !----------------------------------------------------------------------- … … 165 166 !! namtra_qsr penetrative solar radiation 166 167 !! namsbc_rnf river runoffs 168 !! namsbc_isf ice shelf melting/freezing 167 169 !! namsbc_apr Atmospheric Pressure 168 170 !! namsbc_ssr sea surface restoring term (for T and/or S) … … 184 186 ! =2 embedded sea-ice (full salt and mass exchanges and pressure) 185 187 ln_rnf = .false. ! runoffs (T => fill namsbc_rnf) 186 nn_isf = 1 ! 0 = no isf / 1 = presence of ISF 188 nn_isf = 1 ! ice shelf melting/freezing (/=0 => fill namsbc_isf) 189 ! 0 = no isf / 1 = presence of ISF 187 190 ! 2 = bg03 parametrisation / 3 = rnf file for isf 188 191 ! 4 = ISF are prescribed 192 ! options 1 and 4 need ln_isfcav = .true. (domzgr) 189 193 ln_ssr = .false. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) 190 194 nn_fwb = 1 ! FreshWater Budget: =0 unchecked -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/CONFIG/SHARED/namelist_ref
r4666 r4747 82 82 ln_zps = .true. ! z-coordinate - partial steps (T/F) 83 83 ln_sco = .false. ! s- or hybrid z-s-coordinate (T/F) 84 ln_isfcav = .false. ! ice shelf cavity 84 85 / 85 86 !----------------------------------------------------------------------- … … 208 209 !! namtra_qsr penetrative solar radiation 209 210 !! namsbc_rnf river runoffs 211 !! namsbc_isf ice shelf melting/freezing 210 212 !! namsbc_apr Atmospheric Pressure 211 213 !! namsbc_ssr sea surface restoring term (for T and/or S) … … 232 234 ! =2 embedded sea-ice (full salt and mass exchanges and pressure) 233 235 ln_dm2dc = .false. ! daily mean to diurnal cycle on short wave 234 ln_rnf = .true. ! runoffs (T => fill namsbc_rnf) 235 nn_isf = 1 ! 0=no isf 1 = presence of ISF 236 ln_rnf = .true. ! runoffs (T => fill namsbc_rnf) 237 nn_isf = 0 ! ice shelf melting/freezing (/=0 => fill namsbc_isf) 238 ! 0 =no isf 1 = presence of ISF 236 239 ! 2 = bg03 parametrisation 3 = rnf file for isf 237 240 ! 4 = ISF fwf specified 241 ! option 1 and 4 need ln_isfcav = .true. (domzgr) 238 242 ln_ssr = .true. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) 239 243 nn_fwb = 2 ! FreshWater Budget: =0 unchecked … … 640 644 rn_bfeb2 = 2.5e-3 ! bottom turbulent kinetic energy background (m2/s2) 641 645 rn_bfrz0 = 3.e-3 ! bottom roughness [m] if ln_loglayer=T 642 ln_loglayer = .false. ! logarithmic formulation (non linear case)643 646 ln_bfr2d = .false. ! horizontal variation of the bottom friction coef (read a 2D mask file ) 644 647 rn_bfrien = 50. ! local multiplying factor of bfr (ln_bfr2d=T) 648 rn_tfri1 = 4.e-4 ! top drag coefficient (linear case) 649 rn_tfri2 = 2.5e-3 ! top drag coefficient (non linear case). Minimum coeft if ln_loglayer=T 650 rn_tfri2_max = 1.e-1 ! max. top drag coefficient (non linear case and ln_loglayer=T) 651 rn_tfeb2 = 0.0 ! top turbulent kinetic energy background (m2/s2) 652 rn_tfrz0 = 3.e-3 ! top roughness [m] if ln_loglayer=T 653 ln_tfr2d = .false. ! horizontal variation of the top friction coef (read a 2D mask file ) 654 rn_tfrien = 50. ! local multiplying factor of tfr (ln_tfr2d=T) 655 645 656 ln_bfrimp = .true. ! implicit bottom friction (requires ln_zdfexp = .false. if true) 657 ln_loglayer = .false. ! logarithmic formulation (non linear case) 646 658 / 647 659 !----------------------------------------------------------------------- -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90
r4666 r4747 193 193 CALL iom_put( "sss2" , z2d(:,:) * z2d(:,:) ) ! square of sea surface salinity 194 194 END IF 195 ! multiply by umask to prevent not numerical value error in the ioserver sometimes 195 196 IF( lk_vvl .AND. (.NOT. ln_dynadv_vec) ) THEN 196 CALL iom_put( "uoce" , u n(:,:,:) * fse3u_n(:,:,:) ) ! i-transport197 CALL iom_put( "voce" , v n(:,:,:) * fse3v_n(:,:,:) ) ! j-transport197 CALL iom_put( "uoce" , umask(:,:,:) * un(:,:,:) * fse3u_n(:,:,:) ) ! i-transport 198 CALL iom_put( "voce" , vmask(:,:,:) * vn(:,:,:) * fse3v_n(:,:,:) ) ! j-transport 198 199 ELSE 199 CALL iom_put( "uoce" , u n) ! i-current200 CALL iom_put( "voce" , v n) ! j-current200 CALL iom_put( "uoce" , umask(:,:,:) * un(:,:,:) ) ! i-current 201 CALL iom_put( "voce" , vmask(:,:,:) * vn(:,:,:) ) ! j-current 201 202 DO jj = 1, jpj 202 203 DO ji = 1, jpi -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/DOM/dom_oce.F90
r4726 r4747 175 175 LOGICAL, PUBLIC :: ln_zps !: z-coordinate - partial step 176 176 LOGICAL, PUBLIC :: ln_sco !: s-coordinate or hybrid z-s coordinate 177 LOGICAL, PUBLIC :: ln_isf 177 LOGICAL, PUBLIC :: ln_isfcav !: presence of ISF 178 178 179 179 !! All coordinates -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90
r4726 r4747 849 849 CALL iom_get( numror, jpdom_autoglo, 'fse3t_b', fse3t_b(:,:,:) ) 850 850 CALL iom_get( numror, jpdom_autoglo, 'fse3t_n', fse3t_n(:,:,:) ) 851 ! needed to restart if land processor not computed 852 WHERE ( tmask(:,:,:) == 0.0_wp ) 853 fse3t_n(:,:,:) = e3t_0(:,:,:) 854 fse3t_b(:,:,:) = e3t_0(:,:,:) 855 END WHERE 851 856 IF( neuler == 0 ) THEN 852 857 fse3t_b(:,:,:) = fse3t_n(:,:,:) -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90
r4726 r4747 102 102 INTEGER :: ios 103 103 ! 104 NAMELIST/namzgr/ ln_zco, ln_zps, ln_sco 105 NAMELIST/namsbc/ nn_fsbc , ln_ana , ln_flx , ln_blk_clio, ln_blk_core, ln_cpl, & 106 & ln_blk_mfs, ln_apr_dyn, nn_ice , ln_dm2dc, ln_rnf, ln_ssr, nn_fwb, ln_cdgw, nn_isf 104 NAMELIST/namzgr/ ln_zco, ln_zps, ln_sco, ln_isfcav 107 105 !!---------------------------------------------------------------------- 108 106 ! … … 123 121 WRITE(numout,*) '~~~~~~~' 124 122 WRITE(numout,*) ' Namelist namzgr : set vertical coordinate' 125 WRITE(numout,*) ' z-coordinate - full steps ln_zco = ', ln_zco 126 WRITE(numout,*) ' z-coordinate - partial steps ln_zps = ', ln_zps 127 WRITE(numout,*) ' s- or hybrid z-s-coordinate ln_sco = ', ln_sco 123 WRITE(numout,*) ' z-coordinate - full steps ln_zco = ', ln_zco 124 WRITE(numout,*) ' z-coordinate - partial steps ln_zps = ', ln_zps 125 WRITE(numout,*) ' s- or hybrid z-s-coordinate ln_sco = ', ln_sco 126 WRITE(numout,*) ' ice shelf cavities ln_isfcav = ', ln_isfcav 128 127 ENDIF 129 128 … … 533 532 risfdep(:,:)=0._wp 534 533 misfdep(:,:)=1 535 IF ( nn_isf == 1 .OR. nn_isf == 4) THEN534 IF ( ln_isfcav ) THEN 536 535 CALL iom_open ( 'isf_draft_meter.nc', inum ) 537 536 CALL iom_get ( inum, jpdom_data, 'isf_draft', risfdep ) … … 577 576 ! 578 577 IF ( .not. ln_sco ) THEN !== set a minimum depth ==! 578 ! patch to avoid case bathy = ice shelf draft and bathy between 0 and zhmin 579 WHERE (bathy == risfdep) 580 bathy = 0.0_wp ; risfdep = 0.0_wp 581 END WHERE 582 ! end patch 579 583 IF( rn_hmin < 0._wp ) THEN ; ik = - INT( rn_hmin ) ! from a nb of level 580 584 ELSE ; ik = MINLOC( gdepw_1d, mask = gdepw_1d > rn_hmin, dim = 1 ) ! from a depth … … 956 960 INTEGER :: ik, it ! temporary integers 957 961 INTEGER :: id, jd, nprocd 958 INTEGER :: icompt, ibtest ! (ISF)962 INTEGER :: icompt, ibtest, ibtestim1, ibtestip1, ibtestjm1, ibtestjp1 ! (ISF) 959 963 LOGICAL :: ll_print ! Allow control print for debugging 960 964 REAL(wp) :: ze3tp , ze3wp ! Last ocean level thickness at T- and W-points … … 963 967 REAL(wp) :: zdiff ! temporary scalar 964 968 REAL(wp) :: zrefdep ! temporary scalar 965 REAL(wp) :: eps=0.99 ! small offset to avoid large pool in case bathy slightly greater than risfdep966 REAL(wp), POINTER, DIMENSION(:,:) :: z bathy, zmask ! 3D workspace (ISH)969 REAL(wp) :: zbathydiff, zrisfdepdiff 970 REAL(wp), POINTER, DIMENSION(:,:) :: zrisfdep, zbathy, zmask ! 3D workspace (ISH) 967 971 INTEGER , POINTER, DIMENSION(:,:) :: zmbathy, zmisfdep ! 3D workspace (ISH) 968 972 REAL(wp), POINTER, DIMENSION(:,:,:) :: zprt … … 972 976 ! 973 977 CALL wrk_alloc( jpi, jpj, jpk, zprt ) 974 CALL wrk_alloc( jpi, jpj, zbathy, zmask )978 CALL wrk_alloc( jpi, jpj, zbathy, zmask, zrisfdep) 975 979 CALL wrk_alloc( jpi, jpj, zmbathy, zmisfdep) 976 980 ! … … 988 992 ENDIF 989 993 990 991 994 ! bathymetry in level (from bathy_meter) 992 995 ! =================== … … 1006 1009 END DO 1007 1010 ! (ISF) compute misfdep 1008 WHERE( risfdep(:,:) == 0._wp ) ; misfdep(:,:) = 1 ! no ice shelf: set misfdep to 11009 ELSEWHERE ;misfdep(:,:) = 2 ! iceshelf : initialize misfdep to second level1011 WHERE( risfdep(:,:) == 0._wp .AND. bathy(:,:) .NE. 0) ; misfdep(:,:) = 1 ! open water : set misfdep to 1 1012 ELSEWHERE ; misfdep(:,:) = 2 ! iceshelf : initialize misfdep to second level 1010 1013 END WHERE 1011 1014 … … 1018 1021 WHERE( 0._wp < risfdep(:,:) .AND. risfdep(:,:) >= zdepth ) misfdep(:,:) = jk+1 1019 1022 END DO 1020 WHERE (risfdep <= e3t_1d(1) .AND. risfdep .GT. 0._wp) 1021 risfdep = 0. 1022 misfdep= 1 1023 WHERE (risfdep(:,:) <= e3t_1d(1) .AND. risfdep(:,:) .GT. 0._wp) 1024 risfdep(:,:) = 0. ; misfdep(:,:) = 1 1023 1025 END WHERE 1024 1026 … … 1026 1028 icompt = 0 1027 1029 ! run the bathy check 10 times to be sure all the modif in the bathy or iceshelf draft are compatible together 1028 DO jl = 1, 10 1030 DO jl = 1, 10 1031 WHERE (bathy(:,:) .EQ. risfdep(:,:) ) 1032 misfdep(:,:) = 0 ; risfdep(:,:) = 0._wp 1033 mbathy (:,:) = 0 ; bathy (:,:) = 0._wp 1034 END WHERE 1035 WHERE (mbathy(:,:) <= 0) 1036 misfdep(:,:) = 0; risfdep(:,:) = 0._wp 1037 mbathy (:,:) = 0; bathy (:,:) = 0._wp 1038 ENDWHERE 1029 1039 IF( lk_mpp ) THEN 1030 1040 zbathy(:,:) = FLOAT( misfdep(:,:) ) … … 1041 1051 misfdep(jpi,:) = misfdep( 2 ,:) 1042 1052 ENDIF 1043 1053 1044 1054 IF( nperio == 1 .OR. nperio == 4 .OR. nperio == 6 ) THEN 1045 1055 mbathy( 1 ,:) = mbathy(jpim1,:) ! local domain is cyclic east-west 1046 1056 mbathy(jpi,:) = mbathy( 2 ,:) 1047 1057 ENDIF 1048 1049 WHERE (mbathy == 0) 1050 risfdep = 0._wp 1051 misfdep= 0 1052 bathy = 0._wp 1053 ENDWHERE 1054 1055 WHERE (bathy(:,:) < risfdep(:,:)+eps) 1056 misfdep(:,:) = 0 1057 risfdep(:,:) = 0._wp 1058 mbathy(:,:) = 0 1059 bathy(:,:) = 0._wp 1060 END WHERE 1061 ! Case where bathy and risfdep compatible but not the level variable mbathy/misfdep because of partial cell condition 1058 1059 ! split last cell if possible (only where water column is 2 cell or less) 1060 DO jk = jpkm1, 1, -1 1061 zmax = gdepw_1d(jk) + MIN( e3zps_min, e3t_1d(jk)*e3zps_rat ) 1062 WHERE( gdepw_1d(jk) < bathy(:,:) .AND. bathy(:,:) <= zmax .AND. misfdep + 1 >= mbathy) 1063 mbathy(:,:) = jk 1064 bathy(:,:) = zmax 1065 END WHERE 1066 END DO 1067 1068 ! split top cell if possible (only where water column is 2 cell or less) 1069 DO jk = 2, jpkm1 1070 zmax = gdepw_1d(jk+1) - MIN( e3zps_min, e3t_1d(jk)*e3zps_rat ) 1071 WHERE( gdepw_1d(jk+1) > risfdep(:,:) .AND. risfdep(:,:) >= zmax .AND. misfdep + 1 >= mbathy) 1072 misfdep(:,:) = jk 1073 risfdep(:,:) = zmax 1074 END WHERE 1075 END DO 1076 1077 1078 ! Case where bathy and risfdep compatible but not the level variable mbathy/misfdep because of partial cell condition 1062 1079 DO jj = 1, jpj 1063 1080 DO ji = 1, jpi 1064 IF (bathy(ji,jj) .GT. risfdep(ji,jj) .AND. mbathy(ji,jj) .LT. misfdep(ji,jj)) THEN 1065 bathy(ji,jj) = gdepw_1d(mbathy(ji,jj)+1) + MIN( e3zps_min, e3t_1d(mbathy(ji,jj)+1)*e3zps_rat ) 1066 mbathy(ji,jj)= mbathy(ji,jj) + 1 1081 ! find the minimum change option: 1082 ! test bathy 1083 IF (risfdep(ji,jj) .GT. 1) THEN 1084 zbathydiff =ABS(bathy(ji,jj) - (gdepw_1d(mbathy (ji,jj)+1) + MIN( e3zps_min, e3t_1d(mbathy (ji,jj)+1)*e3zps_rat ))) 1085 zrisfdepdiff=ABS(risfdep(ji,jj) - (gdepw_1d(misfdep(ji,jj) ) - MIN( e3zps_min, e3t_1d(misfdep(ji,jj)-1)*e3zps_rat ))) 1086 1087 IF (bathy(ji,jj) .GT. risfdep(ji,jj) .AND. mbathy(ji,jj) .LT. misfdep(ji,jj)) THEN 1088 IF (zbathydiff .LE. zrisfdepdiff) THEN 1089 bathy(ji,jj) = gdepw_1d(mbathy(ji,jj)) + MIN( e3zps_min, e3t_1d(mbathy(ji,jj)+1)*e3zps_rat ) 1090 mbathy(ji,jj)= mbathy(ji,jj) + 1 1091 ELSE 1092 risfdep(ji,jj) = gdepw_1d(misfdep(ji,jj)) - MIN( e3zps_min, e3t_1d(misfdep(ji,jj)-1)*e3zps_rat ) 1093 misfdep(ji,jj) = misfdep(ji,jj) - 1 1094 END IF 1095 END IF 1067 1096 END IF 1068 1097 END DO 1069 1098 END DO 1070 1071 1072 ! At least 2 levels for water thickness at T, U, and V point.1073 zmisfdep(:,:)=misfdep(:,:)1074 zmbathy (:,:)=mbathy (:,:)1075 1099 1076 DO jj = 2, jpjm1 1077 DO ji = 2, jpim1 1078 ! T point 1079 IF( zmisfdep(ji,jj) == zmbathy(ji,jj) .AND. zmbathy(ji,jj) .GT. 1) THEN 1080 mbathy(ji,jj) = zmbathy(ji,jj) + 1 1081 bathy(ji,jj)=gdepw_1d(mbathy(ji,jj)) + MIN( e3zps_min, e3t_1d(mbathy(ji,jj))*e3zps_rat ) 1100 ! At least 2 levels for water thickness at T, U, and V point. 1101 DO jj = 1, jpj 1102 DO ji = 1, jpi 1103 ! find the minimum change option: 1104 ! test bathy 1105 IF( misfdep(ji,jj) == mbathy(ji,jj) .AND. mbathy(ji,jj) .GT. 1) THEN 1106 zbathydiff =ABS(bathy(ji,jj) - (gdepw_1d(mbathy (ji,jj)+1) + MIN( e3zps_min,e3t_1d(mbathy (ji,jj)+1)*e3zps_rat ))) 1107 zrisfdepdiff=ABS(risfdep(ji,jj) - (gdepw_1d(misfdep(ji,jj) ) - MIN( e3zps_min,e3t_1d(misfdep(ji,jj)-1)*e3zps_rat ))) 1108 IF (zbathydiff .LE. zrisfdepdiff) THEN 1109 mbathy(ji,jj) = mbathy(ji,jj) + 1 1110 bathy(ji,jj) = gdepw_1d(mbathy (ji,jj)) + MIN( e3zps_min, e3t_1d(mbathy(ji,jj) +1)*e3zps_rat ) 1111 ELSE 1112 misfdep(ji,jj)= misfdep(ji,jj) - 1 1113 risfdep(ji,jj) = gdepw_1d(misfdep(ji,jj)+1) - MIN( e3zps_min, e3t_1d(misfdep(ji,jj))*e3zps_rat ) 1114 END IF 1082 1115 ENDIF 1083 ! V point 1084 IF( zmisfdep(ji,jj+1) == zmbathy(ji,jj) .AND. zmbathy(ji,jj) .GT. 1) THEN 1085 mbathy(ji,jj) = zmbathy(ji,jj) + 1 1086 bathy(ji,jj)=gdepw_1d(mbathy(ji,jj)) + MIN( e3zps_min, e3t_1d(mbathy(ji,jj))*e3zps_rat ) 1116 END DO 1117 END DO 1118 1119 ! point V mbathy(ji,jj) EQ misfdep(ji,jj+1) 1120 DO jj = 1, jpjm1 1121 DO ji = 1, jpim1 1122 IF( misfdep(ji,jj+1) == mbathy(ji,jj) .AND. mbathy(ji,jj) .GT. 1) THEN 1123 zbathydiff =ABS(bathy(ji,jj ) - (gdepw_1d(mbathy (ji,jj)+1) + MIN( e3zps_min, e3t_1d(mbathy (ji,jj )+1)*e3zps_rat ))) 1124 zrisfdepdiff=ABS(risfdep(ji,jj+1) - (gdepw_1d(misfdep(ji,jj+1)) - MIN( e3zps_min, e3t_1d(misfdep(ji,jj+1)-1)*e3zps_rat ))) 1125 IF (zbathydiff .LE. zrisfdepdiff) THEN 1126 mbathy(ji,jj) = mbathy(ji,jj) + 1 1127 bathy(ji,jj) = gdepw_1d(mbathy (ji,jj )) + MIN( e3zps_min, e3t_1d(mbathy(ji,jj )+1)*e3zps_rat ) 1128 ELSE 1129 misfdep(ji,jj+1) = misfdep(ji,jj+1) - 1 1130 risfdep (ji,jj+1) = gdepw_1d(misfdep(ji,jj+1)+1) - MIN( e3zps_min, e3t_1d(misfdep(ji,jj+1))*e3zps_rat ) 1131 END IF 1087 1132 ENDIF 1088 ! V point -1 1089 IF( zmisfdep(ji,jj-1) == zmbathy(ji,jj) .AND. zmbathy(ji,jj) .GT. 1) THEN 1090 mbathy(ji,jj) = zmbathy(ji,jj) + 1 1091 bathy(ji,jj)=gdepw_1d(mbathy(ji,jj)) + MIN( e3zps_min, e3t_1d(mbathy(ji,jj))*e3zps_rat ) 1133 END DO 1134 END DO 1135 1136 IF( lk_mpp ) THEN 1137 zbathy(:,:) = FLOAT( misfdep(:,:) ) 1138 CALL lbc_lnk( zbathy, 'T', 1. ) 1139 misfdep(:,:) = INT( zbathy(:,:) ) 1140 CALL lbc_lnk( risfdep, 'T', 1. ) 1141 CALL lbc_lnk( bathy, 'T', 1. ) 1142 zbathy(:,:) = FLOAT( mbathy(:,:) ) 1143 CALL lbc_lnk( zbathy, 'T', 1. ) 1144 mbathy(:,:) = INT( zbathy(:,:) ) 1145 ENDIF 1146 ! point V misdep(ji,jj) EQ mbathy(ji,jj+1) 1147 DO jj = 1, jpjm1 1148 DO ji = 1, jpim1 1149 IF( misfdep(ji,jj) == mbathy(ji,jj+1) .AND. mbathy(ji,jj) .GT. 1) THEN 1150 zbathydiff =ABS( bathy(ji,jj+1) - (gdepw_1d(mbathy (ji,jj+1)+1) + MIN( e3zps_min, e3t_1d(mbathy (ji,jj+1)+1)*e3zps_rat ))) 1151 zrisfdepdiff=ABS(risfdep(ji,jj ) - (gdepw_1d(misfdep(ji,jj ) ) - MIN( e3zps_min, e3t_1d(misfdep(ji,jj )-1)*e3zps_rat ))) 1152 IF (zbathydiff .LE. zrisfdepdiff) THEN 1153 mbathy (ji,jj+1) = mbathy(ji,jj+1) + 1 1154 bathy (ji,jj+1) = gdepw_1d(mbathy (ji,jj+1) ) + MIN( e3zps_min, e3t_1d(mbathy (ji,jj+1)+1)*e3zps_rat ) 1155 ELSE 1156 misfdep(ji,jj) = misfdep(ji,jj) - 1 1157 risfdep(ji,jj) = gdepw_1d(misfdep(ji,jj )+1) - MIN( e3zps_min, e3t_1d(misfdep(ji,jj ) )*e3zps_rat ) 1158 END IF 1092 1159 ENDIF 1093 ! U point 1094 IF( zmisfdep(ji+1,jj) == zmbathy(ji,jj) .AND. zmbathy(ji,jj) .GT. 1) THEN 1095 mbathy(ji,jj) = zmbathy(ji,jj) + 1 1096 bathy(ji,jj)=gdepw_1d(mbathy(ji,jj)) + MIN( e3zps_min, e3t_1d(mbathy(ji,jj))*e3zps_rat ) 1097 ENDIF 1098 ! U point -1 1099 IF( zmisfdep(ji-1,jj) == zmbathy(ji,jj) .AND. zmbathy(ji,jj) .GT. 1) THEN 1100 mbathy(ji,jj) = zmbathy(ji,jj) + 1 1101 bathy(ji,jj)=gdepw_1d(mbathy(ji,jj)) + MIN( e3zps_min, e3t_1d(mbathy(ji,jj))*e3zps_rat ) 1102 ENDIF 1103 END DO 1104 END DO 1160 END DO 1161 END DO 1162 1163 1105 1164 IF( lk_mpp ) THEN 1106 1165 zbathy(:,:) = FLOAT( misfdep(:,:) ) … … 1113 1172 mbathy(:,:) = INT( zbathy(:,:) ) 1114 1173 ENDIF 1115 1116 ! if single ocean point put as land 1117 zmask=1 1118 WHERE (mbathy .EQ. 0) zmask=0 1119 DO jj = 2, jpjm1 1120 DO ji = 2, jpim1 1121 ibtest = zmask(ji-1,jj) + zmask(ji+1,jj) + zmask(ji,jj-1) + zmask(ji,jj+1) 1122 IF (ibtest .LE. 1) THEN 1123 bathy(ji,jj)=0._wp 1124 mbathy(ji,jj)=0 1125 risfdep(ji,jj)=0._wp 1126 misfdep(ji,jj)=0 1127 END IF 1128 END DO 1129 END DO 1174 1175 ! point U mbathy(ji,jj) EQ misfdep(ji,jj+1) 1176 DO jj = 1, jpjm1 1177 DO ji = 1, jpim1 1178 IF( misfdep(ji+1,jj) == mbathy(ji,jj) .AND. mbathy(ji,jj) .GT. 1) THEN 1179 zbathydiff =ABS( bathy(ji ,jj) - (gdepw_1d(mbathy (ji,jj)+1) + MIN( e3zps_min, e3t_1d(mbathy (ji ,jj)+1)*e3zps_rat ))) 1180 zrisfdepdiff=ABS(risfdep(ji+1,jj) - (gdepw_1d(misfdep(ji+1,jj)) - MIN( e3zps_min, e3t_1d(misfdep(ji+1,jj)-1)*e3zps_rat ))) 1181 IF (zbathydiff .LE. zrisfdepdiff) THEN 1182 mbathy(ji,jj) = mbathy(ji,jj) + 1 1183 bathy(ji,jj) = gdepw_1d(mbathy (ji,jj)) + MIN( e3zps_min, e3t_1d(mbathy(ji,jj) +1)*e3zps_rat ) 1184 ELSE 1185 misfdep(ji+1,jj)= misfdep(ji+1,jj) - 1 1186 risfdep(ji+1,jj) = gdepw_1d(misfdep(ji+1,jj)+1) - MIN( e3zps_min, e3t_1d(misfdep(ji+1,jj))*e3zps_rat ) 1187 END IF 1188 ENDIF 1189 ENDDO 1190 ENDDO 1191 1130 1192 IF( lk_mpp ) THEN 1131 1193 zbathy(:,:) = FLOAT( misfdep(:,:) ) … … 1137 1199 CALL lbc_lnk( zbathy, 'T', 1. ) 1138 1200 mbathy(:,:) = INT( zbathy(:,:) ) 1139 END IF 1140 1141 ! if single point on isf coast line 1201 ENDIF 1202 1203 ! point U misfdep(ji,jj) EQ bathy(ji,jj+1) 1204 DO jj = 1, jpjm1 1205 DO ji = 1, jpim1 1206 IF( misfdep(ji,jj) == mbathy(ji+1,jj) .AND. mbathy(ji,jj) .GT. 1) THEN 1207 zbathydiff =ABS( bathy(ji+1,jj) - (gdepw_1d(mbathy (ji+1,jj)+1) + MIN( e3zps_min, e3t_1d(mbathy (ji+1,jj)+1)*e3zps_rat ))) 1208 zrisfdepdiff=ABS(risfdep(ji ,jj) - (gdepw_1d(misfdep(ji ,jj) ) - MIN( e3zps_min, e3t_1d(misfdep(ji ,jj)-1)*e3zps_rat ))) 1209 IF (zbathydiff .LE. zrisfdepdiff) THEN 1210 mbathy(ji+1,jj) = mbathy (ji+1,jj) + 1 1211 bathy (ji+1,jj) = gdepw_1d(mbathy (ji+1,jj) ) + MIN( e3zps_min, e3t_1d(mbathy (ji+1,jj) +1)*e3zps_rat ) 1212 ELSE 1213 misfdep(ji,jj) = misfdep(ji ,jj) - 1 1214 risfdep(ji,jj) = gdepw_1d(misfdep(ji ,jj)+1) - MIN( e3zps_min, e3t_1d(misfdep(ji ,jj) )*e3zps_rat ) 1215 END IF 1216 ENDIF 1217 ENDDO 1218 ENDDO 1219 1220 IF( lk_mpp ) THEN 1221 zbathy(:,:) = FLOAT( misfdep(:,:) ) 1222 CALL lbc_lnk( zbathy, 'T', 1. ) 1223 misfdep(:,:) = INT( zbathy(:,:) ) 1224 CALL lbc_lnk( risfdep, 'T', 1. ) 1225 CALL lbc_lnk( bathy, 'T', 1. ) 1226 zbathy(:,:) = FLOAT( mbathy(:,:) ) 1227 CALL lbc_lnk( zbathy, 'T', 1. ) 1228 mbathy(:,:) = INT( zbathy(:,:) ) 1229 ENDIF 1230 END DO 1231 ! end dig bathy/ice shelf to be compatible 1232 ! now fill single point in "coastline" of ice shelf, bathy, hole, and test again one cell tickness 1233 DO jl = 1,20 1234 1235 ! remove single point "bay" on isf coast line in the ice shelf draft' 1142 1236 DO jk = 1, jpk 1143 1237 WHERE (misfdep==0) misfdep=jpk … … 1155 1249 END DO 1156 1250 END DO 1157 WHERE (misfdep==jpk) 1158 misfdep=0 ; risfdep=0._wp ; mbathy=0 ; bathy=0._wp 1159 END WHERE 1160 1161 IF( lk_mpp ) THEN 1162 zbathy(:,:) = FLOAT( misfdep(:,:) ) 1163 CALL lbc_lnk( zbathy, 'T', 1. ) 1164 misfdep(:,:) = INT( zbathy(:,:) ) 1165 CALL lbc_lnk( risfdep, 'T', 1. ) 1166 CALL lbc_lnk( bathy, 'T', 1. ) 1167 zbathy(:,:) = FLOAT( mbathy(:,:) ) 1168 CALL lbc_lnk( zbathy, 'T', 1. ) 1169 mbathy(:,:) = INT( zbathy(:,:) ) 1170 ENDIF 1171 END DO 1172 1173 ! fill hole in ice shelf 1174 WHERE (misfdep==0) misfdep=jpk 1175 zmisfdep(:,:)=misfdep(:,:) 1176 zmbathy (:,:)=mbathy (:,:) 1251 END DO 1252 WHERE (misfdep==jpk) 1253 misfdep=0 ; risfdep=0. ; mbathy=0 ; bathy=0. 1254 END WHERE 1255 IF( lk_mpp ) THEN 1256 zbathy(:,:) = FLOAT( misfdep(:,:) ) 1257 CALL lbc_lnk( zbathy, 'T', 1. ) 1258 misfdep(:,:) = INT( zbathy(:,:) ) 1259 CALL lbc_lnk( risfdep, 'T', 1. ) 1260 CALL lbc_lnk( bathy, 'T', 1. ) 1261 zbathy(:,:) = FLOAT( mbathy(:,:) ) 1262 CALL lbc_lnk( zbathy, 'T', 1. ) 1263 mbathy(:,:) = INT( zbathy(:,:) ) 1264 ENDIF 1265 1266 ! remove single point "bay" on bathy coast line beneath an ice shelf' 1267 DO jk = jpk,1,-1 1268 zmask=0 1269 WHERE (mbathy .GE. jk ) zmask=1 1270 DO jj = 2, jpjm1 1271 DO ji = 2, jpim1 1272 IF (mbathy(ji,jj) .EQ. jk .AND. misfdep(ji,jj) .GE. 2) THEN 1273 ibtest = zmask(ji-1,jj) + zmask(ji+1,jj) + zmask(ji,jj-1) + zmask(ji,jj+1) 1274 IF (ibtest .LE. 1) THEN 1275 bathy(ji,jj)=gdepw_1d(jk) ; mbathy(ji,jj)=jk-1 1276 IF (misfdep(ji,jj) .GT. mbathy(ji,jj)) mbathy(ji,jj) = 0 1277 END IF 1278 END IF 1279 END DO 1280 END DO 1281 END DO 1282 WHERE (mbathy==0) 1283 misfdep=0 ; risfdep=0. ; mbathy=0 ; bathy=0. 1284 END WHERE 1285 IF( lk_mpp ) THEN 1286 zbathy(:,:) = FLOAT( misfdep(:,:) ) 1287 CALL lbc_lnk( zbathy, 'T', 1. ) 1288 misfdep(:,:) = INT( zbathy(:,:) ) 1289 CALL lbc_lnk( risfdep, 'T', 1. ) 1290 CALL lbc_lnk( bathy, 'T', 1. ) 1291 zbathy(:,:) = FLOAT( mbathy(:,:) ) 1292 CALL lbc_lnk( zbathy, 'T', 1. ) 1293 mbathy(:,:) = INT( zbathy(:,:) ) 1294 ENDIF 1295 1296 ! fill hole in ice shelf 1297 zmisfdep = misfdep 1298 zrisfdep = risfdep 1299 WHERE (zmisfdep .LE. 1) zmisfdep=jpk 1177 1300 DO jj = 2, jpjm1 1178 1301 DO ji = 2, jpim1 1179 ibtest=MIN(zmisfdep(ji-1,jj), zmisfdep(ji+1,jj), zmisfdep(ji,jj-1), zmisfdep(ji,jj+1)) 1180 IF( ibtest > zmisfdep(ji,jj)) THEN 1302 ibtestim1 = zmisfdep(ji-1,jj ) ; ibtestip1 = zmisfdep(ji+1,jj ) 1303 ibtestjm1 = zmisfdep(ji ,jj-1) ; ibtestjp1 = zmisfdep(ji ,jj+1) 1304 IF( zmisfdep(ji,jj) .GE. mbathy(ji-1,jj ) ) ibtestim1 = jpk!MAX(0, mbathy(ji-1,jj ) - 1) 1305 IF( zmisfdep(ji,jj) .GE. mbathy(ji+1,jj ) ) ibtestip1 = jpk!MAX(0, mbathy(ji+1,jj ) - 1) 1306 IF( zmisfdep(ji,jj) .GE. mbathy(ji ,jj-1) ) ibtestjm1 = jpk!MAX(0, mbathy(ji ,jj-1) - 1) 1307 IF( zmisfdep(ji,jj) .GE. mbathy(ji ,jj+1) ) ibtestjp1 = jpk!MAX(0, mbathy(ji ,jj+1) - 1) 1308 ibtest=MIN(ibtestim1, ibtestip1, ibtestjm1, ibtestjp1) 1309 IF( ibtest == jpk .AND. misfdep(ji,jj) .GE. 2) THEN 1310 mbathy(ji,jj) = 0 ; bathy(ji,jj) = 0.0_wp ; misfdep(ji,jj) = 0 ; risfdep(ji,jj) = 0.0_wp 1311 END IF 1312 IF( zmisfdep(ji,jj) < ibtest .AND. misfdep(ji,jj) .GE. 2) THEN 1181 1313 misfdep(ji,jj) = ibtest 1182 risfdep(ji,jj) 1314 risfdep(ji,jj) = gdepw_1d(ibtest) 1183 1315 ENDIF 1184 1316 ENDDO 1185 1317 ENDDO 1186 WHERE (misfdep==jpk) 1187 misfdep=0 ; risfdep=0. ; mbathy=0 ; bathy=0 1188 END WHERE 1318 1189 1319 IF( lk_mpp ) THEN 1190 1320 zbathy(:,:) = FLOAT( misfdep(:,:) ) … … 1197 1327 mbathy(:,:) = INT( zbathy(:,:) ) 1198 1328 ENDIF 1199 1200 ! fill hole in bathymetry 1201 zmisfdep(:,:)=misfdep(:,:) 1329 ! 1330 !! fill hole in bathymetry 1202 1331 zmbathy (:,:)=mbathy (:,:) 1203 1332 DO jj = 2, jpjm1 1204 1333 DO ji = 2, jpim1 1205 ibtest = MAX( zmbathy(ji-1,jj), zmbathy(ji+1,jj), & 1206 & zmbathy(ji,jj-1), zmbathy(ji,jj+1) ) 1207 IF( ibtest < zmbathy(ji,jj) ) THEN 1334 ibtestim1 = zmbathy(ji-1,jj ) ; ibtestip1 = zmbathy(ji+1,jj ) 1335 ibtestjm1 = zmbathy(ji ,jj-1) ; ibtestjp1 = zmbathy(ji ,jj+1) 1336 IF( zmbathy(ji,jj) .LT. misfdep(ji-1,jj ) ) ibtestim1 = 0!MIN(jpk-1, misfdep(ji-1,jj ) + 1) 1337 IF( zmbathy(ji,jj) .LT. misfdep(ji+1,jj ) ) ibtestip1 = 0 1338 IF( zmbathy(ji,jj) .LT. misfdep(ji ,jj-1) ) ibtestjm1 = 0 1339 IF( zmbathy(ji,jj) .LT. misfdep(ji ,jj+1) ) ibtestjp1 = 0 1340 ibtest=MAX(ibtestim1, ibtestip1, ibtestjm1, ibtestjp1) 1341 IF( ibtest == 0 ) THEN 1342 mbathy(ji,jj) = 0 ; bathy(ji,jj) = 0.0_wp ; misfdep(ji,jj) = 0 ; risfdep(ji,jj) = 0.0_wp ; 1343 END IF 1344 IF( ibtest < zmbathy(ji,jj) .AND. misfdep(ji,jj) .GE. 2) THEN 1208 1345 mbathy(ji,jj) = ibtest 1209 1346 bathy(ji,jj) = gdepw_1d(ibtest+1) … … 1221 1358 mbathy(:,:) = INT( zbathy(:,:) ) 1222 1359 ENDIF 1223 ! remove 1 cell pool of water stuck between ice shelf and bathymetry (need a 3D flood filling tools to do this properly) 1224 DO jk = 1, jpk 1225 WHERE (misfdep==0) misfdep=jpk 1226 zmisfdep(:,:)=misfdep(:,:) 1227 zmbathy (:,:)=mbathy (:,:) 1228 DO jj = 2, jpjm1 1229 DO ji = 2, jpim1 1230 IF ( jk .GE. zmisfdep(ji,jj) .AND. jk .LE. zmbathy(ji,jj) ) THEN 1231 IF ( (jk > zmbathy(ji,jj+1) .OR. jk < zmisfdep(ji,jj+1)) .AND. & 1232 & (jk > zmbathy(ji,jj-1) .OR. jk < zmisfdep(ji,jj-1)) .AND. & 1233 & (jk > zmbathy(ji+1,jj) .OR. jk < zmisfdep(ji+1,jj)) .AND. & 1234 & (jk > zmbathy(ji-1,jj) .OR. jk < zmisfdep(ji-1,jj)) ) THEN 1235 mbathy(ji,jj) = 0 ; misfdep(ji,jj) = jpk ; risfdep(ji,jj) = 0._wp ; bathy(ji,jj) = 0._wp 1236 ENDIF 1237 ENDIF 1238 ENDDO 1239 ENDDO 1240 WHERE (misfdep==jpk) misfdep=0 1241 IF( lk_mpp ) THEN 1242 zbathy(:,:) = FLOAT( misfdep(:,:) ) 1243 CALL lbc_lnk( zbathy, 'T', 1. ) 1244 misfdep(:,:) = INT( zbathy(:,:) ) 1245 CALL lbc_lnk( risfdep, 'T', 1. ) 1246 CALL lbc_lnk( bathy, 'T', 1. ) 1247 zbathy(:,:) = FLOAT( mbathy(:,:) ) 1248 CALL lbc_lnk( zbathy, 'T', 1. ) 1249 mbathy(:,:) = INT( zbathy(:,:) ) 1250 ENDIF 1251 END DO 1360 ! if not compatible after all check (ie U point water column less than 2 cells), mask U 1361 DO jj = 1, jpjm1 1362 DO ji = 1, jpim1 1363 IF (mbathy(ji,jj) == misfdep(ji+1,jj) .AND. mbathy(ji,jj) .GE. 1 .AND. mbathy(ji+1,jj) .GE. 1) THEN 1364 mbathy(ji,jj) = mbathy(ji,jj) - 1 ; bathy(ji,jj) = gdepw_1d(mbathy(ji,jj)+1) ; 1365 END IF 1366 END DO 1367 END DO 1368 IF( lk_mpp ) THEN 1369 zbathy(:,:) = FLOAT( misfdep(:,:) ) 1370 CALL lbc_lnk( zbathy, 'T', 1. ) 1371 misfdep(:,:) = INT( zbathy(:,:) ) 1372 CALL lbc_lnk( risfdep, 'T', 1. ) 1373 CALL lbc_lnk( bathy, 'T', 1. ) 1374 zbathy(:,:) = FLOAT( mbathy(:,:) ) 1375 CALL lbc_lnk( zbathy, 'T', 1. ) 1376 mbathy(:,:) = INT( zbathy(:,:) ) 1377 ENDIF 1378 ! if not compatible after all check (ie U point water column less than 2 cells), mask U 1379 DO jj = 1, jpjm1 1380 DO ji = 1, jpim1 1381 IF (misfdep(ji,jj) == mbathy(ji+1,jj) .AND. mbathy(ji,jj) .GE. 1 .AND. mbathy(ji+1,jj) .GE. 1) THEN 1382 mbathy(ji+1,jj) = mbathy(ji+1,jj) - 1; bathy(ji+1,jj) = gdepw_1d(mbathy(ji+1,jj)+1) ; 1383 END IF 1384 END DO 1385 END DO 1386 IF( lk_mpp ) THEN 1387 zbathy(:,:) = FLOAT( misfdep(:,:) ) 1388 CALL lbc_lnk( zbathy, 'T', 1. ) 1389 misfdep(:,:) = INT( zbathy(:,:) ) 1390 CALL lbc_lnk( risfdep, 'T', 1. ) 1391 CALL lbc_lnk( bathy, 'T', 1. ) 1392 zbathy(:,:) = FLOAT( mbathy(:,:) ) 1393 CALL lbc_lnk( zbathy, 'T', 1. ) 1394 mbathy(:,:) = INT( zbathy(:,:) ) 1395 ENDIF 1396 ! if not compatible after all check (ie V point water column less than 2 cells), mask V 1397 DO jj = 1, jpjm1 1398 DO ji = 1, jpi 1399 IF (mbathy(ji,jj) == misfdep(ji,jj+1) .AND. mbathy(ji,jj) .GE. 1 .AND. mbathy(ji,jj+1) .GE. 1) THEN 1400 mbathy(ji,jj) = mbathy(ji,jj) - 1 ; bathy(ji,jj) = gdepw_1d(mbathy(ji,jj)+1) ; 1401 END IF 1402 END DO 1403 END DO 1404 IF( lk_mpp ) THEN 1405 zbathy(:,:) = FLOAT( misfdep(:,:) ) 1406 CALL lbc_lnk( zbathy, 'T', 1. ) 1407 misfdep(:,:) = INT( zbathy(:,:) ) 1408 CALL lbc_lnk( risfdep, 'T', 1. ) 1409 CALL lbc_lnk( bathy, 'T', 1. ) 1410 zbathy(:,:) = FLOAT( mbathy(:,:) ) 1411 CALL lbc_lnk( zbathy, 'T', 1. ) 1412 mbathy(:,:) = INT( zbathy(:,:) ) 1413 ENDIF 1414 ! if not compatible after all check (ie V point water column less than 2 cells), mask V 1415 DO jj = 1, jpjm1 1416 DO ji = 1, jpi 1417 IF (misfdep(ji,jj) == mbathy(ji,jj+1) .AND. mbathy(ji,jj) .GE. 1 .AND. mbathy(ji,jj+1) .GE. 1) THEN 1418 mbathy(ji,jj+1) = mbathy(ji,jj+1) - 1 ; bathy(ji,jj+1) = gdepw_1d(mbathy(ji,jj+1)+1) ; 1419 END IF 1420 END DO 1421 END DO 1422 IF( lk_mpp ) THEN 1423 zbathy(:,:) = FLOAT( misfdep(:,:) ) 1424 CALL lbc_lnk( zbathy, 'T', 1. ) 1425 misfdep(:,:) = INT( zbathy(:,:) ) 1426 CALL lbc_lnk( risfdep, 'T', 1. ) 1427 CALL lbc_lnk( bathy, 'T', 1. ) 1428 zbathy(:,:) = FLOAT( mbathy(:,:) ) 1429 CALL lbc_lnk( zbathy, 'T', 1. ) 1430 mbathy(:,:) = INT( zbathy(:,:) ) 1431 ENDIF 1432 ! if not compatible after all check, mask T 1433 DO jj = 1, jpj 1434 DO ji = 1, jpi 1435 IF (mbathy(ji,jj) <= misfdep(ji,jj)) THEN 1436 misfdep(ji,jj) = 0 ; risfdep(ji,jj) = 0._wp ; mbathy(ji,jj) = 0 ; bathy(ji,jj) = 0._wp ; 1437 END IF 1438 END DO 1439 END DO 1440 1441 WHERE (mbathy(:,:) == 1) 1442 mbathy = 0; bathy = 0.0_wp ; misfdep = 0 ; risfdep = 0.0_wp 1443 END WHERE 1252 1444 END DO 1253 1254 WHERE (mbathy(:,:) < misfdep(:,:)) 1255 misfdep(:,:) = 0 1256 risfdep(:,:) = 0._wp 1257 mbathy(:,:) = 0 1258 bathy(:,:) = 0._wp 1445 ! end check compatibility ice shelf/bathy 1446 ! remove very shallow ice shelf (less than ~ 10m if 75L) 1447 WHERE (misfdep(:,:) <= 5) 1448 misfdep = 1; risfdep = 0.0_wp; 1259 1449 END WHERE 1260 1261 1450 1262 1451 IF( icompt == 0 ) THEN … … 1338 1527 ik = misfdep(ji,jj) 1339 1528 IF( ik > 1 ) THEN ! ice shelf point only 1340 1341 1529 IF( risfdep(ji,jj) < gdepw_1d(ik) ) risfdep(ji,jj)= gdepw_1d(ik) 1530 gdepw_0(ji,jj,ik) = risfdep(ji,jj) 1342 1531 !gm Bug? check the gdepw_0 1343 1344 1345 1346 1347 1348 1349 1350 1351 1532 ! ... on ik 1533 gdept_0(ji,jj,ik) = gdepw_1d(ik+1) - ( gdepw_1d(ik+1) - gdepw_0(ji,jj,ik) ) & 1534 & * ( gdepw_1d(ik+1) - gdept_1d(ik) ) & 1535 & / ( gdepw_1d(ik+1) - gdepw_1d(ik) ) 1536 e3t_0 (ji,jj,ik ) = gdepw_1d(ik+1) - gdepw_0(ji,jj,ik) 1537 e3w_0 (ji,jj,ik+1) = gdept_1d(ik+1) - gdept_0(ji,jj,ik) 1538 1539 IF( ik + 1 == mbathy(ji,jj) ) THEN ! ice shelf point only (2 cell water column) 1540 e3w_0 (ji,jj,ik+1) = gdept_0(ji,jj,ik+1) - gdept_0(ji,jj,ik) 1352 1541 ENDIF 1353 1354 1355 1542 ! ... on ik / ik-1 1543 e3w_0 (ji,jj,ik ) = 2._wp * (gdept_0(ji,jj,ik) - gdepw_0(ji,jj,ik)) 1544 e3t_0 (ji,jj,ik-1) = gdepw_0(ji,jj,ik) - gdepw_1d(ik-1) 1356 1545 ! The next line isn't required and doesn't affect results - included for consistency with bathymetry code 1357 1546 gdept_0(ji,jj,ik-1) = gdept_1d(ik-1) 1358 1547 ENDIF 1359 1548 END DO -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90
r4726 r4747 137 137 READ ( numnam_cfg, namdyn_hpg, IOSTAT = ios, ERR = 902 ) 138 138 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdyn_hpg in configuration namelist', lwp ) 139 WRITE ( numond, namdyn_hpg )139 IF(lwm) WRITE ( numond, namdyn_hpg ) 140 140 ! 141 141 IF(lwp) THEN ! Control print … … 397 397 ! iniitialised to 0. zhpi zhpi 398 398 zhpi(:,:,:)=0._wp ; zhpj(:,:,:)=0._wp 399 400 ! assume density of water displaced by the ice shelf is at T=-1.9 and S=34.4 (rude) 399 400 !================================================================================== 401 !=====Compute iceload and contribution of the half first wet layer ================= 402 !=================================================================================== 403 404 ! assume water displaced by the ice shelf is at T=-1.9 and S=34.4 (rude) 401 405 ztstop(:,:,1)=-1.9_wp ; ztstop(:,:,2)=34.4_wp 406 407 ! compute density of the water displaced by the ice shelf 402 408 zrhd = rhd ! save rhd 403 409 DO jk = 1, jpk … … 434 440 END DO 435 441 IF (ikt .GE. 2) ziceload(ji,jj) = ziceload(ji,jj) + (2._wp * znad + zrhdtop_isf(ji,jj) + rhd(ji,jj,ikt-1)) & 436 & * ( fsdepw(ji,jj,ikt) - gdept_1d(ikt-1) )442 & * ( risfdep(ji,jj) - gdept_1d(ikt-1) ) 437 443 END DO 438 444 END DO … … 464 470 END DO 465 471 END DO 466 ! 472 !================================================================================== 473 !===== Compute partial cell contribution for the top cell ========================= 474 !================================================================================== 467 475 DO jj = 2, jpjm1 468 476 DO ji = fs_2, fs_jpim1 ! vector opt. 469 477 iku = miku(ji,jj) ; 470 478 zpshpi(ji,jj)=0.0_wp ; zpshpj(ji,jj)=0.0_wp 471 ze3wu = fse3w(ji+1,jj,iku+1)-fse3w(ji,jj,iku+1)479 ze3wu = (gdepw_0(ji+1,jj,iku+1) - gdept_0(ji+1,jj,iku)) - (gdepw_0(ji,jj,iku+1) - gdept_0(ji,jj,iku)) 472 480 ! u direction 473 481 IF ( iku .GT. 1 ) THEN … … 478 486 ! corrective term ( = 0 if z coordinate ) 479 487 zuap = -zcoef0 * ( arui(ji,jj) + 2._wp * znad ) * gzui(ji,jj) / e1u(ji,jj) 480 ! zhpi will be added in interior loop and zuapint will be removed in the interior loop488 ! zhpi will be added in interior loop 481 489 ua(ji,jj,iku) = ua(ji,jj,iku) + zuap 482 490 ! in case of 2 cell water column, need to save the pressure gradient to compute the bottom pressure 483 491 IF (mbku(ji,jj) == iku + 1) zpshpi(ji,jj) = zhpi(ji,jj,iku) 484 492 485 ! zhpi will be added in interior loop and zuapint will be removed in the interior loop 486 ! case iku + 1 (remove the zphi term added in the interior loop) 487 zhpiint = zcoef0 / e1u(ji,jj) & 493 ! case iku + 1 (remove the zphi term added in the interior loop and compute the one corrected for zps) 494 zhpiint = zcoef0 / e1u(ji,jj) & 488 495 & * ( fse3w(ji+1,jj ,iku+1) * ( (rhd(ji+1,jj,iku+1) + znad) & 489 496 & + (rhd(ji+1,jj,iku ) + znad) ) * tmask(ji+1,jj,iku) & … … 492 499 zhpi(ji,jj,iku+1) = zcoef0 / e1u(ji,jj) * ge3rui(ji,jj) - zhpiint 493 500 END IF 501 494 502 ! v direction 495 503 ikv = mikv(ji,jj) 496 ze3wv = fse3w(ji,jj+1,ikv+1)-fse3w(ji,jj,ikv+1)504 ze3wv = (gdepw_0(ji,jj+1,ikv+1) - gdept_0(ji,jj+1,ikv)) - (gdepw_0(ji,jj,ikv+1) - gdept_0(ji,jj,ikv)) 497 505 IF ( ikv .GT. 1 ) THEN 498 506 ! case ikv … … 502 510 ! corrective term ( = 0 if z coordinate ) 503 511 zvap = -zcoef0 * ( arvi(ji,jj) + 2._wp * znad ) * gzvi(ji,jj) / e2v(ji,jj) 504 ! zhpi will be added in interior loop and zvapint will be removed in the interior loop512 ! zhpi will be added in interior loop 505 513 va(ji,jj,ikv) = va(ji,jj,ikv) + zvap 506 514 ! in case of 2 cell water column, need to save the pressure gradient to compute the bottom pressure 507 515 IF (mbkv(ji,jj) == ikv + 1) zpshpj(ji,jj) = zhpj(ji,jj,ikv) 508 ! zhpi will be added in interior loop and zvapint will be removed in the interior loop509 ! case ikv + 1 (remove the zphj term added in the interior loop )510 zhpjint = zcoef0 / e2v(ji,jj) &516 517 ! case ikv + 1 (remove the zphj term added in the interior loop and compute the one corrected for zps) 518 zhpjint = zcoef0 / e2v(ji,jj) & 511 519 & * ( fse3w(ji ,jj+1,ikv+1) * ( (rhd(ji,jj+1,ikv+1) + znad) & 512 & + (rhd(ji,jj+1,ikv ) + znad) ) * tmask(ji,jj+1,ikv) &520 & + (rhd(ji,jj+1,ikv ) + znad) ) * tmask(ji,jj+1,ikv) & 513 521 & - fse3w(ji ,jj ,ikv+1) * ( (rhd(ji,jj ,ikv+1) + znad) & 514 522 & + (rhd(ji,jj ,ikv ) + znad) ) * tmask(ji,jj ,ikv) ) … … 518 526 END DO 519 527 520 ! interior value (2=<jk=<jpkm1) 528 !================================================================================== 529 !===== Compute interior value ===================================================== 530 !================================================================================== 531 521 532 DO jj = 2, jpjm1 522 533 DO ji = fs_2, fs_jpim1 ! vector opt. … … 524 535 DO jk = 2, jpkm1 525 536 ! hydrostatic pressure gradient along s-surfaces 526 ! s-coordinate pressure gradient correction537 ! zhpi is masked for the first wet cell (contribution already done in the upper bloc) 527 538 zhpi(ji,jj,jk) = zhpi(ji,jj,jk) + zhpi(ji,jj,jk-1) & 528 539 & + zcoef0 / e1u(ji,jj) & … … 531 542 & - fse3w(ji ,jj ,jk) * ( (rhd(ji ,jj,jk ) + znad) & 532 543 & + (rhd(ji ,jj,jk-1) + znad) ) * tmask(ji ,jj,jk-1) ) 533 !corrective term, we mask this term for the first wet level beneath the ice shelf (contribution done in the upper bloc) 534 zuap = - zcoef0 * ( rhd (ji+1,jj ,jk) + rhd (ji,jj,jk) + 2._wp * znad ) & 544 ! s-coordinate pressure gradient correction 545 ! corrective term, we mask this term for the first wet level beneath the ice shelf (contribution done in the upper bloc) 546 zuap = - zcoef0 * ( rhd (ji+1,jj ,jk) + rhd (ji,jj,jk) + 2._wp * znad ) & 535 547 & * ( fsde3w(ji+1,jj ,jk) - fsde3w(ji,jj,jk) ) / e1u(ji,jj) * umask(ji,jj,jk-1) 536 548 ua(ji,jj,jk) = ua(ji,jj,jk) + ( zhpi(ji,jj,jk) + zuap) * umask(ji,jj,jk) 537 549 550 ! hydrostatic pressure gradient along s-surfaces 551 ! zhpi is masked for the first wet cell (contribution already done in the upper bloc) 538 552 zhpj(ji,jj,jk) = zhpj(ji,jj,jk) + zhpj(ji,jj,jk-1) & 539 553 & + zcoef0 / e2v(ji,jj) & … … 542 556 & - fse3w(ji ,jj ,jk) * ( (rhd(ji,jj ,jk ) + znad) & 543 557 & + (rhd(ji,jj ,jk-1) + znad) ) * tmask(ji,jj ,jk-1) ) 544 !corrective term, we mask this term for the first wet level beneath the ice shelf (contribution done in the upper bloc) 545 zvap = - zcoef0 * ( rhd (ji ,jj+1,jk) + rhd (ji,jj,jk) + 2._wp * znad ) & 558 ! s-coordinate pressure gradient correction 559 ! corrective term, we mask this term for the first wet level beneath the ice shelf (contribution done in the upper bloc) 560 zvap = - zcoef0 * ( rhd (ji ,jj+1,jk) + rhd (ji,jj,jk) + 2._wp * znad ) & 546 561 & * ( fsde3w(ji ,jj+1,jk) - fsde3w(ji,jj,jk) ) / e2v(ji,jj) * vmask(ji,jj,jk-1) 547 562 ! add to the general momentum trend … … 550 565 END DO 551 566 END DO 552 553 ! partial steps correction at the last level (use gru & grv computed in zpshde.F90) 567 568 !================================================================================== 569 !===== Compute bottom cell contribution (partial cell) ============================ 570 !================================================================================== 571 554 572 # if defined key_vectopt_loop 555 573 jj = 1 … … 589 607 # endif 590 608 END DO 591 592 609 610 ! set back to original density value into the ice shelf cell (maybe useless because it is masked) 593 611 rhd = zrhd 594 612 ! -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/IOM/restart.F90
r4666 r4747 220 220 ENDIF 221 221 ! 222 IF( lk_vvl ) THEN ! need it for (ISF)223 CALL iom_get( numror, jpdom_autoglo, 'fse3t_b', fse3t_b(:,:,:) )224 CALL iom_get( numror, jpdom_autoglo, 'fse3t ', fse3t (:,:,:) )225 CALL iom_get( numror, jpdom_autoglo, 'fse3w ', fse3w (:,:,:) )226 CALL iom_get( numror, jpdom_autoglo, 'fsdepw ', fsdepw (:,:,:) )227 END IF228 222 CALL iom_get( numror, jpdom_autoglo, 'un' , un ) ! now fields 229 223 CALL iom_get( numror, jpdom_autoglo, 'vn' , vn ) -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/LBC/mppini_2.h90
r4647 r4747 67 67 imask ! temporary global workspace 68 68 REAL(wp), DIMENSION(jpiglo,jpjglo) :: & 69 zdta ! temporary data workspace69 zdta, zdtaisf ! temporary data workspace 70 70 REAL(wp) :: zidom , zjdom ! temporary scalars 71 71 72 72 ! read namelist for ln_zco 73 NAMELIST/namzgr/ ln_zco, ln_zps, ln_sco 73 NAMELIST/namzgr/ ln_zco, ln_zps, ln_sco, ln_isfcav 74 74 75 75 !!---------------------------------------------------------------------- … … 109 109 ENDIF 110 110 CALL iom_close (inum) 111 112 ! used to compute the land processor in case of not masked bathy file. 113 zdtaisf(:,:) = 0.0_wp 114 IF ( ln_isfcav ) THEN 115 CALL iom_open ( 'bathy_meter.nc', inum ) ! Meter bathy in case of partial steps 116 CALL iom_get ( inum, jpdom_unknown, 'isf_draft' , zdtaisf, kstart=(/jpizoom,jpjzoom/), kcount=(/jpiglo,jpjglo/) ) 117 END IF 118 CALL iom_close (inum) 111 119 112 120 ! land/sea mask over the global/zoom domain 113 121 114 122 imask(:,:)=1 115 WHERE ( zdta(:,:) <= 0. ) imask = 0123 WHERE ( zdta(:,:) - zdtaisf(:,:) <= 0. ) imask = 0 116 124 117 125 ! 1. Dimension arrays for subdomains -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/TRA/zpshde.F90
r4724 r4747 130 130 ikv = mbkv(ji,jj) ; ikvm1 = MAX( ikv - 1 , 1 ) ! if level first is a p-step, ik.m1=1 131 131 ! (ISF) case partial step top and bottom in adjacent cell in vertical 132 ze3wu = (fsdept(ji+1,jj,iku) - fsdepw(ji+1,jj,iku)) - (fsdept(ji,jj,iku) - fsdepw(ji,jj,iku)) 133 ze3wv = (fsdept(ji,jj+1,ikv) - fsdepw(ji,jj+1,ikv)) - (fsdept(ji,jj,ikv) - fsdepw(ji,jj,ikv)) 132 ! cannot used e3w because if 2 cell water column, we have ps at top and bottom 133 ! in this case e3w(i,j) - e3w(i,j+1) is not the distance between Tj~ and Tj 134 ! the only common depth between cells (i,j) and (i,j+1) is gdepw_0 135 ze3wu = (gdept_0(ji+1,jj,iku) - gdepw_0(ji+1,jj,iku)) - (gdept_0(ji,jj,iku) - gdepw_0(ji,jj,iku)) 136 ze3wv = (gdept_0(ji,jj+1,ikv) - gdepw_0(ji,jj+1,ikv)) - (gdept_0(ji,jj,ikv) - gdepw_0(ji,jj,ikv)) 134 137 ! 135 138 ! i- direction … … 189 192 iku = mbku(ji,jj) 190 193 ikv = mbkv(ji,jj) 191 ze3wu = ( fsdept(ji+1,jj,iku) - fsdepw(ji+1,jj,iku)) - (fsdept(ji,jj,iku) - fsdepw(ji,jj,iku))192 ze3wv = ( fsdept(ji,jj+1,ikv) - fsdepw(ji,jj+1,ikv)) - (fsdept(ji,jj,ikv) - fsdepw(ji,jj,ikv))193 194 IF( ze3wu >= 0._wp ) THEN ; zhi(ji,jj) = fsdept(ji ,jj,iku)! i-direction: case 1195 ELSE ; zhi(ji,jj) = fsdept(ji +1,jj,iku)! - - case 2196 ENDIF 197 IF( ze3wv >= 0._wp ) THEN ; zhj(ji,jj) = fsdept(ji,jj ,ikv)! j-direction: case 1198 ELSE ; zhj(ji,jj) = fsdept(ji,jj +1,ikv)! - - case 2194 ze3wu = (gdept_0(ji+1,jj,iku) - gdepw_0(ji+1,jj,iku)) - (gdept_0(ji,jj,iku) - gdepw_0(ji,jj,iku)) 195 ze3wv = (gdept_0(ji,jj+1,ikv) - gdepw_0(ji,jj+1,ikv)) - (gdept_0(ji,jj,ikv) - gdepw_0(ji,jj,ikv)) 196 197 IF( ze3wu >= 0._wp ) THEN ; zhi(ji,jj) = fsdept(ji+1,jj,iku) - ze3wu ! i-direction: case 1 198 ELSE ; zhi(ji,jj) = fsdept(ji ,jj,iku) + ze3wu ! - - case 2 199 ENDIF 200 IF( ze3wv >= 0._wp ) THEN ; zhj(ji,jj) = fsdept(ji,jj+1,ikv) - ze3wv ! j-direction: case 1 201 ELSE ; zhj(ji,jj) = fsdept(ji,jj ,ikv) + ze3wv ! - - case 2 199 202 ENDIF 200 203 # if ! defined key_vectopt_loop … … 218 221 iku = mbku(ji,jj) ; ikum1 = MAX( iku - 1 , 1 ) ! last and before last ocean level at u- & v-points 219 222 ikv = mbkv(ji,jj) ; ikvm1 = MAX( ikv - 1 , 1 ) ! last and before last ocean level at u- & v-points 220 ze3wu = ( fsdept(ji+1,jj,iku) - fsdepw(ji+1,jj,iku)) - (fsdept(ji,jj,iku) - fsdepw(ji,jj,iku))221 ze3wv = ( fsdept(ji,jj+1,ikv) - fsdepw(ji,jj+1,ikv)) - (fsdept(ji,jj,ikv) - fsdepw(ji,jj,ikv))223 ze3wu = (gdept_0(ji+1,jj,iku) - gdepw_0(ji+1,jj,iku)) - (gdept_0(ji,jj,iku) - gdepw_0(ji,jj,iku)) 224 ze3wv = (gdept_0(ji,jj+1,ikv) - gdepw_0(ji,jj+1,ikv)) - (gdept_0(ji,jj,ikv) - gdepw_0(ji,jj,ikv)) 222 225 IF( ze3wu >= 0._wp ) THEN 223 226 pgru(ji,jj) = umask(ji,jj,iku) * ( zri(ji ,jj) - prd(ji,jj,iku) ) ! i: 1 224 pmru(ji,jj) = umask(ji,jj,iku) * ( zri(ji ,jj) + prd(ji,jj,iku) ) ! i: 227 pmru(ji,jj) = umask(ji,jj,iku) * ( zri(ji ,jj) + prd(ji,jj,iku) ) ! i: 1 225 228 pge3ru(ji,jj) = umask(ji,jj,iku) & 226 229 * ( (fse3w(ji+1,jj,iku) - ze3wu )* ( zri(ji ,jj ) + prd(ji+1,jj,ikum1) + 2._wp) & … … 267 270 iku = miku(ji,jj) ; ikup1 = miku(ji,jj) + 1 268 271 ikv = mikv(ji,jj) ; ikvp1 = mikv(ji,jj) + 1 269 ze3wu = fse3w(ji+1,jj ,iku+1) - fse3w(ji,jj,iku+1)270 ze3wv = fse3w(ji ,jj+1,ikv+1) - fse3w(ji,jj,ikv+1)271 272 ! 273 ! (ISF) case partial step top and bottom in adjacent cell in vertical 274 ! cannot used e3w because if 2 cell water column, we have ps at top and bottom 275 ! in this case e3w(i,j) - e3w(i,j+1) is not the distance between Tj~ and Tj 276 ! the only common depth between cells (i,j) and (i,j+1) is gdepw_0 277 ze3wu = (gdepw_0(ji+1,jj,iku+1) - gdept_0(ji+1,jj,iku)) - (gdepw_0(ji,jj,iku+1) - gdept_0(ji,jj,iku)) 278 ze3wv = (gdepw_0(ji,jj+1,ikv+1) - gdept_0(ji,jj+1,ikv)) - (gdepw_0(ji,jj,ikv+1) - gdept_0(ji,jj,ikv)) 272 279 ! i- direction 273 280 IF( ze3wu >= 0._wp ) THEN ! case 1 … … 322 329 iku = miku(ji,jj) 323 330 ikv = mikv(ji,jj) 324 ze3wu = fse3w(ji+1,jj ,iku+1) - fse3w(ji,jj,iku+1)325 ze3wv = fse3w(ji ,jj+1,ikv+1) - fse3w(ji,jj,ikv+1)326 327 IF( ze3wu >= 0._wp ) THEN ; zhi(ji,jj) = fsdept(ji ,jj,iku)! i-direction: case 1328 ELSE ; zhi(ji,jj) = fsdept(ji +1,jj,iku)! - - case 2329 ENDIF 330 IF( ze3wv >= 0._wp ) THEN ; zhj(ji,jj) = fsdept(ji,jj ,ikv)! j-direction: case 1331 ELSE ; zhj(ji,jj) = fsdept(ji,jj +1,ikv)! - - case 2331 ze3wu = (gdepw_0(ji+1,jj,iku+1) - gdept_0(ji+1,jj,iku)) - (gdepw_0(ji,jj,iku+1) - gdept_0(ji,jj,iku)) 332 ze3wv = (gdepw_0(ji,jj+1,ikv+1) - gdept_0(ji,jj+1,ikv)) - (gdepw_0(ji,jj,ikv+1) - gdept_0(ji,jj,ikv)) 333 334 IF( ze3wu >= 0._wp ) THEN ; zhi(ji,jj) = fsdept(ji+1,jj,iku) + ze3wu ! i-direction: case 1 335 ELSE ; zhi(ji,jj) = fsdept(ji ,jj,iku) - ze3wu ! - - case 2 336 ENDIF 337 IF( ze3wv >= 0._wp ) THEN ; zhj(ji,jj) = fsdept(ji,jj+1,ikv) + ze3wv ! j-direction: case 1 338 ELSE ; zhj(ji,jj) = fsdept(ji,jj ,ikv) - ze3wv ! - - case 2 332 339 ENDIF 333 340 # if ! defined key_vectopt_loop … … 351 358 iku = miku(ji,jj) ; ikup1 = miku(ji,jj) + 1 352 359 ikv = mikv(ji,jj) ; ikvp1 = mikv(ji,jj) + 1 353 ze3wu = fse3w(ji+1,jj ,iku+1) - fse3w(ji,jj,iku+1)354 ze3wv = fse3w(ji ,jj+1,ikv+1) - fse3w(ji,jj,ikv+1)360 ze3wu = (gdepw_0(ji+1,jj,iku+1) - gdept_0(ji+1,jj,iku)) - (gdepw_0(ji,jj,iku+1) - gdept_0(ji,jj,iku)) 361 ze3wv = (gdepw_0(ji,jj+1,ikv+1) - gdept_0(ji,jj+1,ikv)) - (gdepw_0(ji,jj,ikv+1) - gdept_0(ji,jj,ikv)) 355 362 IF( ze3wu >= 0._wp ) THEN 356 363 sgru (ji,jj) = umask(ji,jj,iku) * ( zri(ji,jj) - prd(ji,jj,iku) ) ! i: 1 -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfbfr.F90
r4724 r4747 167 167 bfrva(ji,jj) = - 0.5_wp * ( zbfrt(ji,jj) + zbfrt(ji ,jj+1) ) * zecv 168 168 ! 169 ! in case of 2 cell water column, we assume each cell feels the top and bottom friction 170 IF ( miku(ji,jj) + 2 .LE. mbku(ji,jj) ) THEN 171 bfrua(ji,jj) = - 0.5_wp * ( ( zbfrt(ji,jj) + zbfrt(ji+1,jj ) ) & 172 & + ( ztfrt(ji,jj) + ztfrt(ji+1,jj ) ) ) & 173 & * zecu * (1._wp - umask(ji,jj,1)) 174 END IF 175 IF ( mikv(ji,jj) + 2 .LE. mbkv(ji,jj) ) THEN 176 bfrva(ji,jj) = - 0.5_wp * ( ( zbfrt(ji,jj) + zbfrt(ji ,jj+1) ) & 177 & + ( ztfrt(ji,jj) + ztfrt(ji ,jj+1) ) ) & 178 & * zecv 179 END IF 169 180 ! (ISF) ======================================================================== 170 181 ikbu = miku(ji,jj) ! ocean bottom level at u- and v-points … … 182 193 tfrva(ji,jj) = - 0.5_wp * ( ztfrt(ji,jj) + ztfrt(ji ,jj+1) ) * zecv * (1._wp - vmask(ji,jj,1)) 183 194 ! (ISF) END ==================================================================== 184 195 ! in case of 2 cell water column, we assume each cell feels the top and bottom friction 196 IF ( miku(ji,jj) + 2 .LE. mbku(ji,jj) ) THEN 197 tfrua(ji,jj) = - 0.5_wp * ( ( ztfrt(ji,jj) + ztfrt(ji+1,jj ) ) & 198 & + ( zbfrt(ji,jj) + zbfrt(ji+1,jj ) ) ) & 199 & * zecu * (1._wp - umask(ji,jj,1)) 200 END IF 201 IF ( mikv(ji,jj) + 2 .LE. mbkv(ji,jj) ) THEN 202 tfrva(ji,jj) = - 0.5_wp * ( ( ztfrt(ji,jj) + ztfrt(ji ,jj+1) ) & 203 & + ( zbfrt(ji,jj) + zbfrt(ji ,jj+1) ) ) & 204 & * zecv * (1._wp - vmask(ji,jj,1)) 205 END IF 185 206 END DO 186 207 END DO
Note: See TracChangeset
for help on using the changeset viewer.