Changeset 12576 for NEMO/branches/UKMO/NEMO_4.0.1_icesheet_and_river_coupling/src/OCE/SBC/sbcisf.F90
- Timestamp:
- 2020-03-20T12:39:37+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/NEMO_4.0.1_icesheet_and_river_coupling/src/OCE/SBC/sbcisf.F90
r11715 r12576 92 92 INTEGER :: ji, jj, jk ! loop index 93 93 INTEGER :: ikt, ikb ! local integers 94 REAL(wp) :: zgreenland_fwfisf_sum, zantarctica_fwfisf_sum 94 95 REAL(wp), DIMENSION(jpi,jpj) :: zt_frz, zdep ! freezing temperature (zt_frz) at depth (zdep) 95 96 REAL(wp), DIMENSION(:,:) , ALLOCATABLE :: zqhcisf2d … … 127 128 fwfisf(:,:) = - sf_rnfisf(1)%fnow(:,:,1) ! fresh water flux from the isf (fwfisf <0 mean melting) 128 129 ENDIF 130 131 IF( lk_oasis) THEN 132 ! nn_coupled_iceshelf_fluxes uninitialised unless lk_oasis=true 133 IF( nn_coupled_iceshelf_fluxes .gt. 0 ) THEN 134 135 ! Adjust total iceshelf melt rates so that sum of iceberg calving and iceshelf melting in the northern 136 ! and southern hemispheres equals rate of increase of mass of greenland and antarctic ice sheets 137 ! to preserve total freshwater conservation in coupled models without an active ice sheet model. 138 139 ! All related global sums must be done bit reproducibly 140 zgreenland_fwfisf_sum = glob_sum( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * greenland_icesheet_mask(:,:) ) 141 142 ! use ABS function because we need to preserve the sign of fwfisf 143 WHERE( greenland_icesheet_mask(:,:) == 1.0 ) & 144 & fwfisf(:,:) = fwfisf(:,:) * ABS( greenland_icesheet_mass_rate_of_change * (1.0-rn_greenland_calving_fraction) & 145 & / ( zgreenland_fwfisf_sum + 1.0e-10_wp ) ) 146 147 ! check 148 IF(lwp .AND. ll_wrtstp) WRITE(numout, *) 'Greenland iceshelf melting climatology (kg/s) : ',zgreenland_fwfisf_sum 149 150 zgreenland_fwfisf_sum = glob_sum( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * greenland_icesheet_mask(:,:) ) 151 152 IF(lwp .AND. ll_wrtstp) WRITE(numout, *) 'Greenland iceshelf melting adjusted value (kg/s) : ',zgreenland_fwfisf_sum 153 154 zantarctica_fwfisf_sum = glob_sum( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * antarctica_icesheet_mask(:,:) ) 155 156 ! use ABS function because we need to preserve the sign of fwfisf 157 WHERE( antarctica_icesheet_mask(:,:) == 1.0 ) & 158 & fwfisf(:,:) = fwfisf(:,:) * ABS( antarctica_icesheet_mass_rate_of_change * (1.0-rn_antarctica_calving_fraction) & 159 & / ( zantarctica_fwfisf_sum + 1.0e-10_wp ) ) 160 161 ! check 162 IF(lwp .AND. ll_wrtstp) WRITE(numout, *) 'Antarctica iceshelf melting climatology (kg/s) : ',zantarctica_fwfisf_sum 163 164 zantarctica_fwfisf_sum = glob_sum( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * antarctica_icesheet_mask(:,:) ) 165 166 IF(lwp .AND. ll_wrtstp) WRITE(numout, *) 'Antarctica iceshelf melting adjusted value (kg/s) : ',zantarctica_fwfisf_sum 167 168 ENDIF 169 ENDIF 170 129 171 qisf(:,:) = fwfisf(:,:) * rLfusisf ! heat flux 130 172 stbl(:,:) = soce … … 137 179 fwfisf(:,:) = -sf_fwfisf(1)%fnow(:,:,1) ! fwf 138 180 ENDIF 181 182 IF( lk_oasis) THEN 183 ! nn_coupled_iceshelf_fluxes uninitialised unless lk_oasis=true 184 IF( nn_coupled_iceshelf_fluxes .gt. 0 ) THEN 185 186 ! Adjust total iceshelf melt rates so that sum of iceberg calving and iceshelf melting in the northern 187 ! and southern hemispheres equals rate of increase of mass of greenland and antarctic ice sheets 188 ! to preserve total freshwater conservation in coupled models without an active ice sheet model. 189 190 ! All related global sums must be done bit reproducibly 191 zgreenland_fwfisf_sum = glob_sum( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * greenland_icesheet_mask(:,:) ) 192 193 ! use ABS function because we need to preserve the sign of fwfisf 194 WHERE( greenland_icesheet_mask(:,:) == 1.0 ) & 195 & fwfisf(:,:) = fwfisf(:,:) * ABS( greenland_icesheet_mass_rate_of_change * (1.0-rn_greenland_calving_fraction) & 196 & / ( zgreenland_fwfisf_sum + 1.0e-10_wp ) ) 197 198 ! check 199 IF(lwp .AND. ll_wrtstp) WRITE(numout, *) 'Greenland iceshelf melting climatology (kg/s) : ',zgreenland_fwfisf_sum 200 201 zgreenland_fwfisf_sum = glob_sum( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * greenland_icesheet_mask(:,:) ) 202 203 IF(lwp .AND. ll_wrtstp) WRITE(numout, *) 'Greenland iceshelf melting adjusted value (kg/s) : ',zgreenland_fwfisf_sum 204 205 zantarctica_fwfisf_sum = glob_sum( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * antarctica_icesheet_mask(:,:) ) 206 207 ! use ABS function because we need to preserve the sign of fwfisf 208 WHERE( antarctica_icesheet_mask(:,:) == 1.0 ) & 209 & fwfisf(:,:) = fwfisf(:,:) * ABS( antarctica_icesheet_mass_rate_of_change * (1.0-rn_antarctica_calving_fraction) & 210 & / ( zantarctica_fwfisf_sum + 1.0e-10_wp ) ) 211 212 ! check 213 IF(lwp .AND. ll_wrtstp) WRITE(numout, *) 'Antarctica iceshelf melting climatology (kg/s) : ',zantarctica_fwfisf_sum 214 215 zantarctica_fwfisf_sum = glob_sum( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * antarctica_icesheet_mask(:,:) ) 216 217 IF(lwp .AND. ll_wrtstp) WRITE(numout, *) 'Antarctica iceshelf melting adjusted value (kg/s) : ',zantarctica_fwfisf_sum 218 219 ENDIF 220 ENDIF 221 139 222 qisf(:,:) = fwfisf(:,:) * rLfusisf ! heat flux 140 223 stbl(:,:) = soce
Note: See TracChangeset
for help on using the changeset viewer.