- Timestamp:
- 2016-05-03T14:28:12+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r6501_GO6_package_trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcisf.F90
r6503 r6507 133 133 CALL fld_read ( kt, nn_fsbc, sf_rnfisf ) 134 134 fwfisf(:,:) = - sf_rnfisf(1)%fnow(:,:,1) ! fwf flux from the isf (fwfisf <0 mean melting) 135 136 IF( lk_oasis) THEN 137 ! ln_coupled_iceshelf_fluxes uninitialised unless lk_oasis=true 138 IF( ln_coupled_iceshelf_fluxes ) THEN 139 140 ! Adjust total iceshelf melt rates so that sum of iceberg calving and iceshelf melting in the northern 141 ! and southern hemispheres equals rate of increase of mass of greenland and antarctic ice sheets 142 ! to preserve total freshwater conservation in coupled models without an active ice sheet model. 143 144 zgreenland_fwfisf_sum = SUM( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * greenland_icesheet_mask(:,:) ) 145 IF( lk_mpp ) CALL mpp_sum( zgreenland_fwfisf_sum ) 146 ! use ABS function because we need to preserve the sign of fwfisf 147 WHERE( greenland_icesheet_mask(:,:) == 1.0 ) & 148 & fwfisf(:,:) = fwfisf(:,:) * ABS( greenland_icesheet_mass_rate_of_change * (1.0-rn_greenland_calving_fraction) & 149 & / ( zgreenland_fwfisf_sum + 1.0e-10_wp ) ) 150 151 ! check 152 IF(lwp) WRITE(numout, *) 'Greenland iceshelf melting climatology (kg/s) : ',zgreenland_fwfisf_sum 153 zgreenland_fwfisf_sum = SUM( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * greenland_icesheet_mask(:,:) ) 154 IF( lk_mpp ) CALL mpp_sum( zgreenland_fwfisf_sum ) 155 IF(lwp) WRITE(numout, *) 'Greenland iceshelf melting adjusted value (kg/s) : ',zgreenland_fwfisf_sum 156 157 zantarctica_fwfisf_sum = SUM( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * antarctica_icesheet_mask(:,:) ) 158 IF( lk_mpp ) CALL mpp_sum( zantarctica_fwfisf_sum ) 159 ! use ABS function because we need to preserve the sign of fwfisf 160 WHERE( antarctica_icesheet_mask(:,:) == 1.0 ) & 161 & fwfisf(:,:) = fwfisf(:,:) * ABS( antarctica_icesheet_mass_rate_of_change * (1.0-rn_antarctica_calving_fraction) & 162 & / ( zantarctica_fwfisf_sum + 1.0e-10_wp ) ) 163 164 ! check 165 IF(lwp) WRITE(numout, *) 'Antarctica iceshelf melting climatology (kg/s) : ',zantarctica_fwfisf_sum 166 zantarctica_fwfisf_sum = SUM( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * antarctica_icesheet_mask(:,:) ) 167 IF( lk_mpp ) CALL mpp_sum( zantarctica_fwfisf_sum ) 168 IF(lwp) WRITE(numout, *) 'Antarctica iceshelf melting adjusted value (kg/s) : ',zantarctica_fwfisf_sum 169 170 ENDIF 171 ENDIF 172 135 173 qisf(:,:) = fwfisf(:,:) * rlfusisf ! heat flux 136 174 stbl(:,:) = soce … … 139 177 CALL fld_read ( kt, nn_fsbc, sf_fwfisf ) 140 178 fwfisf(:,:) = - sf_fwfisf(1)%fnow(:,:,1) ! fwf flux from the isf (fwfisf <0 mean melting) 179 180 IF( lk_oasis) THEN 181 ! ln_coupled_iceshelf_fluxes uninitialised unless lk_oasis=true 182 IF( ln_coupled_iceshelf_fluxes ) THEN 183 184 ! Adjust total iceshelf melt rates so that sum of iceberg calving and iceshelf melting in the northern 185 ! and southern hemispheres equals rate of increase of mass of greenland and antarctic ice sheets 186 ! to preserve total freshwater conservation in coupled models without an active ice sheet model. 187 188 zgreenland_fwfisf_sum = SUM( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * greenland_icesheet_mask(:,:) ) 189 IF( lk_mpp ) CALL mpp_sum( zgreenland_fwfisf_sum ) 190 ! use ABS function because we need to preserve the sign of fwfisf 191 WHERE( greenland_icesheet_mask(:,:) == 1.0 ) & 192 & fwfisf(:,:) = fwfisf(:,:) * ABS( greenland_icesheet_mass_rate_of_change * (1.0-rn_greenland_calving_fraction) & 193 & / ( zgreenland_fwfisf_sum + 1.0e-10_wp ) ) 194 195 ! check 196 IF(lwp) WRITE(numout, *) 'Greenland iceshelf melting climatology (kg/s) : ',zgreenland_fwfisf_sum 197 zgreenland_fwfisf_sum = SUM( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * greenland_icesheet_mask(:,:) ) 198 IF( lk_mpp ) CALL mpp_sum( zgreenland_fwfisf_sum ) 199 IF(lwp) WRITE(numout, *) 'Greenland iceshelf melting adjusted value (kg/s) : ',zgreenland_fwfisf_sum 200 201 zantarctica_fwfisf_sum = SUM( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * antarctica_icesheet_mask(:,:) ) 202 IF( lk_mpp ) CALL mpp_sum( zantarctica_fwfisf_sum ) 203 ! use ABS function because we need to preserve the sign of fwfisf 204 WHERE( antarctica_icesheet_mask(:,:) == 1.0 ) & 205 & fwfisf(:,:) = fwfisf(:,:) * ABS( antarctica_icesheet_mass_rate_of_change * (1.0-rn_antarctica_calving_fraction) & 206 & / ( zantarctica_fwfisf_sum + 1.0e-10_wp ) ) 207 208 ! check 209 IF(lwp) WRITE(numout, *) 'Antarctica iceshelf melting climatology (kg/s) : ',zantarctica_fwfisf_sum 210 zantarctica_fwfisf_sum = SUM( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * antarctica_icesheet_mask(:,:) ) 211 IF( lk_mpp ) CALL mpp_sum( zantarctica_fwfisf_sum ) 212 IF(lwp) WRITE(numout, *) 'Antarctica iceshelf melting adjusted value (kg/s) : ',zantarctica_fwfisf_sum 213 214 ENDIF 215 ENDIF 216 141 217 qisf(:,:) = fwfisf(:,:) * rlfusisf ! heat flux 142 218 stbl(:,:) = soce … … 155 231 CALL eos_fzp( stbl(:,:), zt_frz(:,:), zdep(:,:) ) 156 232 233 ! if apply only on the trend and not as a volume flux (rdivisf = 0), fwfisf have to be set to 0 now 234 fwfisf(:,:) = rdivisf * fwfisf(:,:) 235 157 236 risf_tsc(:,:,jp_tem) = qisf(:,:) * r1_rau0_rcp - fwfisf(:,:) * zt_frz(:,:) * r1_rau0 ! 158 237 risf_tsc(:,:,jp_sal) = 0.0_wp
Note: See TracChangeset
for help on using the changeset viewer.