Changeset 11939
- Timestamp:
- 2019-11-20T17:32:11+01:00 (5 years ago)
- Location:
- branches/UKMO/dev_r5518_GO6_package_FOAMv14_sit/NEMOGCM
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_GO6_package_FOAMv14_sit/NEMOGCM/CONFIG/SHARED/namelist_ref
r11559 r11939 1298 1298 ln_asmdin = .false. ! Logical switch for Direct Initialization (DI) 1299 1299 ln_asmiau = .false. ! Logical switch for Incremental Analysis Updating (IAU) 1300 ln_seaiceinc = .false. ! Logical switch for applying sea ice increments 1300 ln_seaiceinc = .false. ! Logical switch for applying sea ice concentration increments 1301 ln_sitinc = .false. ! Logical switch for applying sea ice thickness increments 1301 1302 ln_phytobal = .false. ! Logical switch for phytoplankton multivariate balancing 1302 1303 ln_slchltotinc = .false. ! Logical switch for applying slchltot increments -
branches/UKMO/dev_r5518_GO6_package_FOAMv14_sit/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90
r10302 r11939 21 21 !! dyn_asm_inc : Apply the dynamic (u and v) increments 22 22 !! ssh_asm_inc : Apply the SSH increment 23 !! seaice_asm_inc : Apply the seaice increment 23 !! seaice_asm_inc : Apply the sea ice concentration increment 24 !! sit_asm_inc : Apply the sea ice thickness increment 24 25 !!---------------------------------------------------------------------- 25 26 USE wrk_nemo ! Memory Allocation … … 41 42 #if defined key_cice && defined key_asminc 42 43 USE sbc_ice, ONLY : & ! CICE Ice model variables 43 & ndaice_da, n fresh_da, nfsalt_da44 & ndaice_da, ndsit_da, nfresh_da, nfsalt_da 44 45 #endif 45 46 USE sbc_oce ! Surface boundary condition variables. … … 54 55 PUBLIC dyn_asm_inc !: Apply the dynamic (u and v) increments 55 56 PUBLIC ssh_asm_inc !: Apply the SSH increment 56 PUBLIC seaice_asm_inc !: Apply the seaice increment 57 PUBLIC seaice_asm_inc !: Apply the seaice concentration increment 58 PUBLIC sit_asm_inc !: Apply the seaice thickness increment 57 59 PUBLIC bgc_asm_inc !: Apply the biogeochemistry increments 58 60 … … 68 70 LOGICAL, PUBLIC :: ln_dyninc = .FALSE. !: No dynamics (u and v) assimilation increments 69 71 LOGICAL, PUBLIC :: ln_sshinc = .FALSE. !: No sea surface height assimilation increment 70 LOGICAL, PUBLIC :: ln_seaiceinc !: No sea ice concentration increment 72 LOGICAL, PUBLIC :: ln_seaiceinc = .FALSE. !: No sea ice concentration increment 73 LOGICAL, PUBLIC :: ln_sitinc = .FALSE. !: No sea ice thickness increment 71 74 LOGICAL, PUBLIC :: lk_bgcinc = .FALSE. !: No biogeochemistry increments 72 75 LOGICAL, PUBLIC :: ln_salfix = .FALSE. !: Apply minimum salinity check … … 94 97 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: ssh_bkg, ssh_bkginc ! Background sea surface height and its increment 95 98 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: seaice_bkginc ! Increment to the background sea ice conc 99 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: sit_bkginc ! Increment to the background sea ice thickness 96 100 97 101 !! * Substitutions … … 147 151 & nitbkg, nitdin, nitiaustr, nitiaufin, niaufn, & 148 152 & ln_salfix, salfixmin, nn_divdmp, & 149 & ln_seaiceinc, ln_ temnofreeze,&153 & ln_seaiceinc, ln_sitinc, ln_temnofreeze, & 150 154 & mld_choice_bgc, rn_maxchlinc 151 155 !!---------------------------------------------------------------------- … … 155 159 !----------------------------------------------------------------------- 156 160 ln_seaiceinc = .FALSE. 161 ln_sitinc = .FALSE. 157 162 ln_temnofreeze = .FALSE. 158 163 … … 178 183 WRITE(numout,*) ' Logical switch for applying SSH increments ln_sshinc = ', ln_sshinc 179 184 WRITE(numout,*) ' Logical switch for Direct Initialization (DI) ln_asmdin = ', ln_asmdin 180 WRITE(numout,*) ' Logical switch for applying sea ice increments ln_seaiceinc = ', ln_seaiceinc 185 WRITE(numout,*) ' Logical switch for applying SIC increments ln_seaiceinc = ', ln_seaiceinc 186 WRITE(numout,*) ' Logical switch for applying SIT increments ln_sitinc = ', ln_sitinc 181 187 WRITE(numout,*) ' Logical switch for phytoplankton balancing ln_phytobal = ', ln_phytobal 182 188 WRITE(numout,*) ' Logical switch for applying slchltot increments ln_slchltotinc = ', ln_slchltotinc … … 264 270 IF ( ( ( .NOT. ln_asmdin ).AND.( .NOT. ln_asmiau ) ) & 265 271 & .AND.( ( ln_trainc ).OR.( ln_dyninc ).OR.( ln_sshinc ).OR.( ln_seaiceinc ).OR. & 266 & ( l k_bgcinc ) )) &272 & ( ln_sitinc ).OR.( lk_bgcinc ) )) & 267 273 & CALL ctl_stop( ' One or more of ln_trainc, ln_dyninc, ln_sshinc, ln_seaiceinc,', & 268 & ' ln_ (bgc-variable)inc is set to .true.', &274 & ' ln_sitinc and ln_(bgc-variable)inc is set to .true.', & 269 275 & ' but ln_asmdin and ln_asmiau are both set to .false. :', & 270 276 & ' Inconsistent options') … … 275 281 276 282 IF ( ( .NOT. ln_trainc ).AND.( .NOT. ln_dyninc ).AND.( .NOT. ln_sshinc ).AND.( .NOT. ln_seaiceinc ) & 277 & .AND.( .NOT. l k_bgcinc ) ) &283 & .AND.( .NOT. ln_sitinc ).AND.( .NOT. lk_bgcinc ) ) & 278 284 & CALL ctl_warn( ' ln_trainc, ln_dyninc, ln_sshinc, ln_seaiceinc,', & 279 & ' ln_ (bgc-variable)inc are set to .false. :', &285 & ' ln_sitinc and ln_(bgc-variable)inc are set to .false. :', & 280 286 & ' The assimilation increments are not applied') 281 287 … … 383 389 ALLOCATE( ssh_bkginc(jpi,jpj) ) 384 390 ALLOCATE( seaice_bkginc(jpi,jpj)) 391 ALLOCATE( sit_bkginc(jpi,jpj) ) 385 392 #if defined key_asminc 386 393 ALLOCATE( ssh_iau(jpi,jpj) ) … … 392 399 ssh_bkginc(:,:) = 0.0 393 400 seaice_bkginc(:,:) = 0.0 401 sit_bkginc(:,:) = 0.0 394 402 #if defined key_asminc 395 403 ssh_iau(:,:) = 0.0 396 404 #endif 397 405 IF ( ( ln_trainc ).OR.( ln_dyninc ).OR.( ln_sshinc ).OR.( ln_seaiceinc ) & 398 & .OR.( l k_bgcinc ) ) THEN406 & .OR.( ln_sitinc ).OR.( lk_bgcinc ) ) THEN 399 407 400 408 !-------------------------------------------------------------------- … … 459 467 ! to allow for differences in masks 460 468 WHERE( ABS( ssh_bkginc(:,:) ) > 1.0e+10 ) ssh_bkginc(:,:) = 0.0 469 ENDIF 470 471 IF ( ln_sitinc ) THEN 472 CALL iom_get( inum, jpdom_autoglo, 'bckinsit', sit_bkginc, 1 ) 473 ! Apply the masks 474 sit_bkginc(:,:) = sit_bkginc(:,:) * tmask(:,:,1) 475 ! Set missing increments to 0.0 rather than 1e+20 476 ! to allow for differences in masks 477 WHERE( ABS( sit_bkginc(:,:) ) > 1.0e+10 ) sit_bkginc(:,:) = 0.0 461 478 ENDIF 462 479 … … 827 844 ! Perhaps the following call should be in step 828 845 IF ( ln_seaiceinc ) CALL seaice_asm_inc ( kt ) ! apply sea ice concentration increment 846 IF ( ln_sitinc ) CALL sit_asm_inc ( kt ) ! apply sea ice thickness increment 829 847 ! 830 848 END SUBROUTINE tra_asm_inc … … 988 1006 END SUBROUTINE ssh_asm_inc 989 1007 1008 SUBROUTINE sit_asm_inc( kt, kindic ) 1009 !!---------------------------------------------------------------------- 1010 !! *** ROUTINE sit_asm_inc *** 1011 !! 1012 !! ** Purpose : Apply the sea ice thickness assimilation increment. 1013 !! 1014 !! ** Method : Direct initialization or Incremental Analysis Updating. 1015 !! 1016 !! ** Action : 1017 !! 1018 !!---------------------------------------------------------------------- 1019 IMPLICIT NONE 1020 ! 1021 INTEGER, INTENT(in) :: kt ! Current time step 1022 INTEGER, INTENT(in), OPTIONAL :: kindic ! flag for disabling the deallocation 1023 ! 1024 INTEGER :: it 1025 REAL(wp) :: zincwgt ! IAU weight for current time step 1026 ! #if defined key_lim2 1027 ! REAL(wp), DIMENSION(jpi,jpj) :: zofrld, zohicif, zseaicendg, zhicifinc ! LIM 1028 ! REAL(wp) :: zhicifmin = 0.5_wp ! ice minimum depth in metres 1029 ! !!THICKNESS INCS NOT SET UP FOR LIM 1030 ! #endif 1031 !!---------------------------------------------------------------------- 1032 1033 IF ( ln_asmiau ) THEN 1034 1035 !-------------------------------------------------------------------- 1036 ! Incremental Analysis Updating 1037 !-------------------------------------------------------------------- 1038 1039 IF ( ( kt >= nitiaustr_r ).AND.( kt <= nitiaufin_r ) ) THEN 1040 1041 it = kt - nit000 + 1 1042 zincwgt = wgtiau(it) ! IAU weight for the current time step 1043 ! note this is not a tendency so should not be divided by rdt (as with the tracer and other increments) 1044 ! EF: Actually CICE is expecting a tendency so is divided by rdt below 1045 1046 IF(lwp) THEN 1047 WRITE(numout,*) 1048 WRITE(numout,*) 'sit_asm_inc : sea ice thick IAU at time step = ', & 1049 & kt,' with IAU weight = ', wgtiau(it) 1050 WRITE(numout,*) '~~~~~~~~~~~~' 1051 ENDIF 1052 1053 ! Sea-ice : LIM-3 case (to add) 1054 1055 ! #if defined key_lim2 1056 ! ! Sea-ice : LIM-2 case (to add if needed) 1057 ! zofrld (:,:) = frld(:,:) 1058 ! zohicif(:,:) = hicif(:,:) 1059 ! ! 1060 ! frld = MIN( MAX( frld (:,:) - seaice_bkginc(:,:) * zincwgt, 0.0_wp), 1.0_wp) 1061 ! pfrld = MIN( MAX( pfrld(:,:) - seaice_bkginc(:,:) * zincwgt, 0.0_wp), 1.0_wp) 1062 ! fr_i(:,:) = 1.0_wp - frld(:,:) ! adjust ice fraction 1063 ! ! 1064 ! zseaicendg(:,:) = zofrld(:,:) - frld(:,:) ! find out actual sea ice nudge applied 1065 ! ! 1066 ! ! Nudge sea ice depth to bring it up to a required minimum depth 1067 ! WHERE( zseaicendg(:,:) > 0.0_wp .AND. hicif(:,:) < zhicifmin ) 1068 ! zhicifinc(:,:) = (zhicifmin - hicif(:,:)) * zincwgt 1069 ! ELSEWHERE 1070 ! zhicifinc(:,:) = 0.0_wp 1071 ! END WHERE 1072 ! ! 1073 ! ! nudge ice depth 1074 ! hicif (:,:) = hicif (:,:) + zhicifinc(:,:) 1075 ! phicif(:,:) = phicif(:,:) + zhicifinc(:,:) 1076 ! ! 1077 ! ! seaice salinity balancing (to add) 1078 ! #endif 1079 1080 #if defined key_cice && defined key_asminc 1081 ! Sea-ice thickness : CICE case. Pass ice thickness increment tendency into CICE 1082 ndsit_da(:,:) = sit_bkginc(:,:) * zincwgt / rdt 1083 #endif 1084 1085 IF ( kt == nitiaufin_r ) THEN 1086 DEALLOCATE( sit_bkginc ) 1087 ENDIF 1088 1089 ELSE 1090 1091 #if defined key_cice && defined key_asminc 1092 ! Sea-ice thickness : CICE case. Zero ice increment tendency into CICE 1093 ndsit_da(:,:) = 0.0_wp 1094 #endif 1095 1096 ENDIF 1097 1098 ELSEIF ( ln_asmdin ) THEN 1099 1100 !-------------------------------------------------------------------- 1101 ! Direct Initialization 1102 !-------------------------------------------------------------------- 1103 1104 IF ( kt == nitdin_r ) THEN 1105 1106 neuler = 0 ! Force Euler forward step 1107 1108 ! Sea-ice : LIM-3 case (to add) 1109 1110 ! #if defined key_lim2 1111 ! ! Sea-ice : LIM-2 case (add if needed) 1112 ! zofrld(:,:)=frld(:,:) 1113 ! zohicif(:,:)=hicif(:,:) 1114 ! ! 1115 ! ! Initialize the now fields the background + increment 1116 ! frld (:,:) = MIN( MAX( frld(:,:) - seaice_bkginc(:,:), 0.0_wp), 1.0_wp) 1117 ! pfrld(:,:) = frld(:,:) 1118 ! fr_i (:,:) = 1.0_wp - frld(:,:) ! adjust ice fraction 1119 ! zseaicendg(:,:) = zofrld(:,:) - frld(:,:) ! find out actual sea ice nudge applied 1120 ! ! 1121 ! ! Nudge sea ice depth to bring it up to a required minimum depth 1122 ! WHERE( zseaicendg(:,:) > 0.0_wp .AND. hicif(:,:) < zhicifmin ) 1123 ! zhicifinc(:,:) = (zhicifmin - hicif(:,:)) * zincwgt 1124 ! ELSEWHERE 1125 ! zhicifinc(:,:) = 0.0_wp 1126 ! END WHERE 1127 ! ! 1128 ! ! nudge ice depth 1129 ! hicif (:,:) = hicif (:,:) + zhicifinc(:,:) 1130 ! phicif(:,:) = phicif(:,:) 1131 ! ! 1132 ! ! seaice salinity balancing (to add) 1133 ! #endif 1134 1135 #if defined key_cice && defined key_asminc 1136 ! Sea-ice thickness : CICE case. Pass ice thickness increment tendency into CICE 1137 ndsit_da(:,:) = sit_bkginc(:,:) / rdt 1138 #endif 1139 IF ( .NOT. PRESENT(kindic) ) THEN 1140 DEALLOCATE( sit_bkginc ) 1141 END IF 1142 1143 ELSE 1144 1145 #if defined key_cice && defined key_asminc 1146 ! Sea-ice thicnkness : CICE case. Zero ice thickness increment tendency into CICE 1147 ndsit_da(:,:) = 0.0_wp 1148 #endif 1149 1150 ENDIF 1151 1152 !#if defined defined key_lim2 || defined key_cice 1153 ! 1154 ! IF (ln_seaicebal ) THEN 1155 ! !! balancing salinity increments 1156 ! !! simple case from limflx.F90 (doesn't include a mass flux) 1157 ! !! assumption is that as ice concentration is reduced or increased 1158 ! !! the snow and ice depths remain constant 1159 ! !! note that snow is being created where ice concentration is being increased 1160 ! !! - could be more sophisticated and 1161 ! !! not do this (but would need to alter h_snow) 1162 ! 1163 ! usave(:,:,:)=sb(:,:,:) ! use array as a temporary store 1164 ! 1165 ! DO jj = 1, jpj 1166 ! DO ji = 1, jpi 1167 ! ! calculate change in ice and snow mass per unit area 1168 ! ! positive values imply adding salt to the ocean (results from ice formation) 1169 ! ! fwf : ice formation and melting 1170 ! 1171 ! zfons = ( -nfresh_da(ji,jj)*soce + nfsalt_da(ji,jj) )*rdt 1172 ! 1173 ! ! change salinity down to mixed layer depth 1174 ! mld=hmld_kara(ji,jj) 1175 ! 1176 ! ! prevent small mld 1177 ! ! less than 10m can cause salinity instability 1178 ! IF (mld < 10) mld=10 1179 ! 1180 ! ! set to bottom of a level 1181 ! DO jk = jpk-1, 2, -1 1182 ! IF ((mld > gdepw(ji,jj,jk)) .and. (mld < gdepw(ji,jj,jk+1))) THEN 1183 ! mld=gdepw(ji,jj,jk+1) 1184 ! jkmax=jk 1185 ! ENDIF 1186 ! ENDDO 1187 ! 1188 ! ! avoid applying salinity balancing in shallow water or on land 1189 ! ! 1190 ! 1191 ! ! dsal_ocn (psu kg m^-2) / (kg m^-3 * m) 1192 ! 1193 ! dsal_ocn=0.0_wp 1194 ! sal_thresh=5.0_wp ! minimum salinity threshold for salinity balancing 1195 ! 1196 ! if (tmask(ji,jj,1) > 0 .AND. tmask(ji,jj,jkmax) > 0 ) & 1197 ! dsal_ocn = zfons / (rhop(ji,jj,1) * mld) 1198 ! 1199 ! ! put increments in for levels in the mixed layer 1200 ! ! but prevent salinity below a threshold value 1201 ! 1202 ! DO jk = 1, jkmax 1203 ! 1204 ! IF (dsal_ocn > 0.0_wp .or. sb(ji,jj,jk)+dsal_ocn > sal_thresh) THEN 1205 ! sb(ji,jj,jk) = sb(ji,jj,jk) + dsal_ocn 1206 ! sn(ji,jj,jk) = sn(ji,jj,jk) + dsal_ocn 1207 ! ENDIF 1208 ! 1209 ! ENDDO 1210 ! 1211 ! ! ! salt exchanges at the ice/ocean interface 1212 ! ! zpmess = zfons / rdt_ice ! rdt_ice is ice timestep 1213 ! ! 1214 ! !! Adjust fsalt. A +ve fsalt means adding salt to ocean 1215 ! !! fsalt(ji,jj) = fsalt(ji,jj) + zpmess ! adjust fsalt 1216 ! !! 1217 ! !! emps(ji,jj) = emps(ji,jj) + zpmess ! or adjust emps (see icestp1d) 1218 ! !! ! E-P (kg m-2 s-2) 1219 ! ! emp(ji,jj) = emp(ji,jj) + zpmess ! E-P (kg m-2 s-2) 1220 ! ENDDO !ji 1221 ! ENDDO !jj! 1222 ! 1223 ! ENDIF !ln_seaicebal 1224 ! 1225 !#endif 1226 1227 1228 END SUBROUTINE sit_asm_inc 990 1229 991 1230 SUBROUTINE seaice_asm_inc( kt, kindic ) … … 993 1232 !! *** ROUTINE seaice_asm_inc *** 994 1233 !! 995 !! ** Purpose : Apply the sea ice assimilation increment.1234 !! ** Purpose : Apply the sea ice concentration assimilation increment. 996 1235 !! 997 1236 !! ** Method : Direct initialization or Incremental Analysis Updating. -
branches/UKMO/dev_r5518_GO6_package_FOAMv14_sit/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_ice.F90
r10302 r11939 105 105 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: tsfc_ice !: sea-ice surface skin temperature (on categories) 106 106 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: kn_ice !: sea-ice surface layer thermal conductivity (on cats) 107 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: thick_iu !: ice thickness at NEMO U point 108 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: thick_iv !: ice thickness at NEMO V point 109 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: thick_su !: snow depth at NEMO U point 110 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: thick_sv !: snow depth at NEMO V point 107 111 108 112 ! variables used in the coupled interface … … 116 120 #if defined key_asminc 117 121 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ndaice_da !: NEMO fresh water flux to ocean due to data assim 122 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ndsit_da !: NEMO ice thickness change due to data assim 118 123 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: nfresh_da !: NEMO salt flux to ocean due to data assim 119 124 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: nfsalt_da !: NEMO ice concentration change/second from data assim … … 171 176 wndj_ice(jpi,jpj) , nfrzmlt(jpi,jpj) , ss_iou(jpi,jpj) , & 172 177 ss_iov(jpi,jpj) , fr_iu(jpi,jpj) , fr_iv(jpi,jpj) , & 178 thick_iu(jpi,jpj) , thick_iv(jpi,jpj) , & 179 thick_su(jpi,jpj) , thick_sv(jpi,jpj) , & 180 ht_i(jpi,jpj,ncat) , ht_s(jpi,jpj,ncat) , & 173 181 a_i(jpi,jpj,ncat) , topmelt(jpi,jpj,ncat) , botmelt(jpi,jpj,ncat) , & 174 182 #if defined key_asminc 175 183 ndaice_da(jpi,jpj) , nfresh_da(jpi,jpj) , nfsalt_da(jpi,jpj) , & 184 ndsit_da(jpi,jpj) , & 176 185 #endif 177 186 sstfrz(jpi,jpj) , STAT= ierr(1) ) -
branches/UKMO/dev_r5518_GO6_package_FOAMv14_sit/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90
r8046 r11939 121 121 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sprecip !: solid precipitation [Kg/m2/s] 122 122 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fr_i !: ice fraction = 1 - lead fraction (between 0 to 1) 123 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: thick_i !: ice thickness [m] 124 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: thick_s !: snow depth [m] 125 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: vol_i !: ice volume [m3] 123 126 #if defined key_cpl_carbon_cycle 124 127 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: atm_co2 !: atmospheric pCO2 [ppm] … … 196 199 ! 197 200 ALLOCATE( tprecip(jpi,jpj) , sprecip(jpi,jpj) , fr_i(jpi,jpj) , & 201 & thick_i(jpi,jpj) , thick_s(jpi,jpj) , vol_i(jpi,jpj) , & 198 202 #if defined key_cpl_carbon_cycle 199 203 & atm_co2(jpi,jpj) , & -
branches/UKMO/dev_r5518_GO6_package_FOAMv14_sit/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90
r10302 r11939 57 57 flatn_f,fsurfn_f,fcondtopn_f, & 58 58 #ifdef key_asminc 59 daice_da, fresh_da,fsalt_da,&59 daice_da,dhi_da,fresh_da,fsalt_da, & 60 60 #endif 61 61 uatm,vatm,wind,fsw,flw,Tair,potT,Qa,rhoa,zlvl, & … … 250 250 CALL lbc_lnk ( fr_iu , 'U', 1. ) 251 251 CALL lbc_lnk ( fr_iv , 'V', 1. ) 252 253 ! Snow and ice thickness 254 ! vice, vsno is volume per unit area of grid cell = thickness 255 CALL cice2nemo(vice,thick_i,'T', 1. ) 256 CALL cice2nemo(vsno,thick_s,'T', 1. ) 257 258 IF ( (ksbc == jp_flx) .OR. (ksbc == jp_purecpl) ) THEN 259 DO jl = 1,ncat 260 CALL cice2nemo(vsnon(:,:,jl,:),ht_s(:,:,jl),'T', 1. ) 261 CALL cice2nemo(vicen(:,:,jl,:),ht_i(:,:,jl),'T', 1. ) 262 ENDDO 263 ENDIF 264 265 ! T point to U point 266 ! T point to V point 267 268 ! Sea ice thickness 269 thick_iu(:,:)=0.0 270 thick_iv(:,:)=0.0 271 DO jj=1,jpjm1 272 DO ji=1,jpim1 273 thick_iu(ji,jj)=0.5*(thick_i(ji,jj)+thick_i(ji+1,jj))*umask(ji,jj,1) 274 thick_iv(ji,jj)=0.5*(thick_i(ji,jj)+thick_i(ji,jj+1))*vmask(ji,jj,1) 275 ENDDO 276 ENDDO 277 278 CALL lbc_lnk ( thick_iu , 'U', 1. ) 279 CALL lbc_lnk ( thick_iv , 'V', 1. ) 280 281 ! Snow depth 282 thick_su(:,:)=0.0 283 thick_sv(:,:)=0.0 284 DO jj=1,jpjm1 285 DO ji=1,jpim1 286 thick_su(ji,jj)=0.5*(thick_s(ji,jj)+thick_s(ji+1,jj))*umask(ji,jj,1) 287 thick_sv(ji,jj)=0.5*(thick_s(ji,jj)+thick_s(ji,jj+1))*vmask(ji,jj,1) 288 ENDDO 289 ENDDO 290 291 CALL lbc_lnk ( thick_su , 'U', 1. ) 292 CALL lbc_lnk ( thick_sv , 'V', 1. ) 252 293 253 294 ! ! embedded sea ice … … 311 352 nfsalt_da(:,:) = 0.0 312 353 ndaice_da(:,:) = 0.0 354 ndsit_da(:,:) = 0.0 313 355 #endif 314 356 ! … … 469 511 ztmp(:,:)=ndaice_da(:,:)*tmask(:,:,1) 470 512 Call nemo2cice(ztmp,daice_da,'T', 1. ) 513 !Ice thickness change (from assimilation) 514 ztmp(:,:)=ndsit_da(:,:)*tmask(:,:,1) 515 Call nemo2cice(ztmp,dhi_da,'T', 1. ) 471 516 #endif 472 517
Note: See TracChangeset
for help on using the changeset viewer.