Changeset 6697
- Timestamp:
- 2016-06-13T17:08:32+02:00 (8 years ago)
- Location:
- branches/UKMO/dev_r5518_GO6_package_MEDUSA_temporary/NEMOGCM/NEMO/OPA_SRC/SBC
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_GO6_package_MEDUSA_temporary/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90
r6498 r6697 49 49 USE limthd_dh ! for CALL lim_thd_snwblow 50 50 #endif 51 USE lib_fortran, ONLY: glob_sum 51 52 52 53 IMPLICIT NONE … … 1273 1274 zepsilon = rn_iceshelf_fluxes_tolerance 1274 1275 1276 1277 ! See if we need zmask_sum... 1278 IF ( srcv(jpr_grnm)%laction .OR. srcv(jpr_antm)%laction ) THEN 1279 zmask_sum = glob_sum( tmask(:,:,1) ) 1280 ENDIF 1281 1275 1282 IF( srcv(jpr_grnm)%laction ) THEN 1276 1283 greenland_icesheet_mass_array(:,:) = frcv(jpr_grnm)%z3(:,:,1) 1277 1284 ! take average over ocean points of input array to avoid cumulative error over time 1278 zgreenland_icesheet_mass_in = SUM( greenland_icesheet_mass_array(:,:) * tmask(:,:,1) ) 1279 IF(lk_mpp) CALL mpp_sum( zgreenland_icesheet_mass_in )1280 z mask_sum = SUM(tmask(:,:,1) )1281 IF(lk_mpp) CALL mpp_sum( zmask_sum ) 1285 1286 ! The following must be bit reproducible over different PE decompositions 1287 zgreenland_icesheet_mass_in = glob_sum( greenland_icesheet_mass_array(:,:) * tmask(:,:,1) ) 1288 1282 1289 zgreenland_icesheet_mass_in = zgreenland_icesheet_mass_in / zmask_sum 1283 1290 greenland_icesheet_timelapsed = greenland_icesheet_timelapsed + rdt … … 1304 1311 antarctica_icesheet_mass_array(:,:) = frcv(jpr_antm)%z3(:,:,1) 1305 1312 ! take average over ocean points of input array to avoid cumulative error from rounding errors over time 1306 zantarctica_icesheet_mass_in = SUM( antarctica_icesheet_mass_array(:,:) * tmask(:,:,1) ) 1307 IF(lk_mpp) CALL mpp_sum( zantarctica_icesheet_mass_in ) 1308 zmask_sum = SUM( tmask(:,:,1) ) 1309 IF(lk_mpp) CALL mpp_sum( zmask_sum ) 1313 ! The following must be bit reproducible over different PE decompositions 1314 zantarctica_icesheet_mass_in = glob_sum( antarctica_icesheet_mass_array(:,:) * tmask(:,:,1) ) 1315 1310 1316 zantarctica_icesheet_mass_in = zantarctica_icesheet_mass_in / zmask_sum 1311 1317 antarctica_icesheet_timelapsed = antarctica_icesheet_timelapsed + rdt -
branches/UKMO/dev_r5518_GO6_package_MEDUSA_temporary/NEMOGCM/NEMO/OPA_SRC/SBC/sbcisf.F90
r6498 r6697 26 26 USE zdfbfr 27 27 USE fldread ! read input field at current time step 28 USE lib_fortran, ONLY: glob_sum 28 29 29 30 IMPLICIT NONE … … 257 258 ! and southern hemispheres equals rate of increase of mass of greenland and antarctic ice sheets 258 259 ! to preserve total freshwater conservation in coupled models without an active ice sheet model. 259 260 zgreenland_fwfisf_sum = SUM( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * greenland_icesheet_mask(:,:) ) 261 IF( lk_mpp ) CALL mpp_sum( zgreenland_fwfisf_sum ) 260 261 ! All related global sums must be done bit reproducibly 262 zgreenland_fwfisf_sum = glob_sum( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * greenland_icesheet_mask(:,:) ) 263 262 264 ! use ABS function because we need to preserve the sign of fwfisf 263 265 WHERE( greenland_icesheet_mask(:,:) == 1.0 ) & … … 267 269 ! check 268 270 IF(lwp) WRITE(numout, *) 'Greenland iceshelf melting climatology (kg/s) : ',zgreenland_fwfisf_sum 269 zgreenland_fwfisf_sum = SUM( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * greenland_icesheet_mask(:,:) ) 270 IF( lk_mpp ) CALL mpp_sum( zgreenland_fwfisf_sum ) 271 272 zgreenland_fwfisf_sum = glob_sum( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * greenland_icesheet_mask(:,:) ) 273 271 274 IF(lwp) WRITE(numout, *) 'Greenland iceshelf melting adjusted value (kg/s) : ',zgreenland_fwfisf_sum 272 275 273 zantarctica_fwfisf_sum = SUM( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * antarctica_icesheet_mask(:,:) )274 IF( lk_mpp ) CALL mpp_sum( zantarctica_fwfisf_sum ) 276 zantarctica_fwfisf_sum = glob_sum( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * antarctica_icesheet_mask(:,:) ) 277 275 278 ! use ABS function because we need to preserve the sign of fwfisf 276 279 WHERE( antarctica_icesheet_mask(:,:) == 1.0 ) & … … 280 283 ! check 281 284 IF(lwp) WRITE(numout, *) 'Antarctica iceshelf melting climatology (kg/s) : ',zantarctica_fwfisf_sum 282 zantarctica_fwfisf_sum = SUM( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * antarctica_icesheet_mask(:,:) ) 283 IF( lk_mpp ) CALL mpp_sum( zantarctica_fwfisf_sum ) 285 286 zantarctica_fwfisf_sum = glob_sum( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * antarctica_icesheet_mask(:,:) ) 287 284 288 IF(lwp) WRITE(numout, *) 'Antarctica iceshelf melting adjusted value (kg/s) : ',zantarctica_fwfisf_sum 285 289 … … 304 308 ! to preserve total freshwater conservation in coupled models without an active ice sheet model. 305 309 306 zgreenland_fwfisf_sum = SUM( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * greenland_icesheet_mask(:,:) ) 307 IF( lk_mpp ) CALL mpp_sum( zgreenland_fwfisf_sum ) 310 ! All related global sums must be done bit reproducibly 311 zgreenland_fwfisf_sum = glob_sum( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * greenland_icesheet_mask(:,:) ) 312 308 313 ! use ABS function because we need to preserve the sign of fwfisf 309 314 WHERE( greenland_icesheet_mask(:,:) == 1.0 ) & … … 313 318 ! check 314 319 IF(lwp) WRITE(numout, *) 'Greenland iceshelf melting climatology (kg/s) : ',zgreenland_fwfisf_sum 315 zgreenland_fwfisf_sum = SUM( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * greenland_icesheet_mask(:,:) ) 316 IF( lk_mpp ) CALL mpp_sum( zgreenland_fwfisf_sum ) 320 321 zgreenland_fwfisf_sum = glob_sum( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * greenland_icesheet_mask(:,:) ) 322 317 323 IF(lwp) WRITE(numout, *) 'Greenland iceshelf melting adjusted value (kg/s) : ',zgreenland_fwfisf_sum 318 324 319 zantarctica_fwfisf_sum = SUM( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * antarctica_icesheet_mask(:,:) )320 IF( lk_mpp ) CALL mpp_sum( zantarctica_fwfisf_sum ) 325 zantarctica_fwfisf_sum = glob_sum( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * antarctica_icesheet_mask(:,:) ) 326 321 327 ! use ABS function because we need to preserve the sign of fwfisf 322 328 WHERE( antarctica_icesheet_mask(:,:) == 1.0 ) & … … 326 332 ! check 327 333 IF(lwp) WRITE(numout, *) 'Antarctica iceshelf melting climatology (kg/s) : ',zantarctica_fwfisf_sum 328 zantarctica_fwfisf_sum = SUM( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * antarctica_icesheet_mask(:,:) ) 329 IF( lk_mpp ) CALL mpp_sum( zantarctica_fwfisf_sum ) 334 335 zantarctica_fwfisf_sum = glob_sum( fwfisf(:,:) * e1t(:,:) * e2t(:,:) * antarctica_icesheet_mask(:,:) ) 336 330 337 IF(lwp) WRITE(numout, *) 'Antarctica iceshelf melting adjusted value (kg/s) : ',zantarctica_fwfisf_sum 331 338
Note: See TracChangeset
for help on using the changeset viewer.