New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 12576 for NEMO/branches/UKMO/NEMO_4.0.1_icesheet_and_river_coupling/src/OCE/ICB/icbclv.F90 – NEMO

Ignore:
Timestamp:
2020-03-20T12:39:37+01:00 (4 years ago)
Author:
dancopsey
Message:

Merge in iceberg calving stuff from dev_r5518_coupling_GSI7_GSI8_landice from the start of the branch to revision 6023.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/NEMO_4.0.1_icesheet_and_river_coupling/src/OCE/ICB/icbclv.F90

    r11715 r12576  
    2626   USE icb_oce        ! iceberg parameters  
    2727 
     28   USE sbc_oce        ! for icesheet freshwater input variables  
     29   USE in_out_manager  
     30   USE iom  
     31 
    2832   IMPLICIT NONE 
    2933   PRIVATE 
     
    4953      ! 
    5054      REAL(wp)      ::   zcalving_used, zdist, zfact 
     55      REAL(wp)      ::   zgreenland_calving_sum, zantarctica_calving_sum  
    5156      INTEGER       ::   jn, ji, jj                    ! loop counters 
    5257      INTEGER       ::   imx                           ! temporary integer for max berg class 
     
    6368      ! Heat in units of W/m2, and mask (just in case) 
    6469      berg_grid%calving_hflx(:,:) = src_calving_hflx(:,:) * tmask_i(:,:) * tmask(:,:,1) 
     70 
     71      IF( lk_oasis) THEN 
     72        ! nn_coupled_iceshelf_fluxes uninitialised unless lk_oasis=true 
     73        IF( nn_coupled_iceshelf_fluxes .gt. 0 ) THEN 
     74          ll_write = ((MOD( kt, sn_cfctl%ptimincr ) == 0) .OR. ( kt == nitend )) .AND. lwp 
     75          ! Adjust total calving rates so that sum of iceberg calving and iceshelf melting in the northern 
     76          ! and southern hemispheres equals rate of increase of mass of greenland and antarctic ice sheets 
     77          ! to preserve total freshwater conservation in coupled models without an active ice sheet model. 
     78 
     79           zgreenland_calving_sum = SUM( berg_grid%calving(:,:) * greenland_icesheet_mask(:,:) ) 
     80           IF( lk_mpp ) CALL mpp_sum( zgreenland_calving_sum ) 
     81           WHERE( greenland_icesheet_mask(:,:) == 1.0 )                                                                                 & 
     82          &    berg_grid%calving(:,:) = berg_grid%calving(:,:) * greenland_icesheet_mass_rate_of_change * rn_greenland_calving_fraction & 
     83          &                                     / ( zgreenland_calving_sum + 1.0e-10_wp ) 
     84 
     85           ! check 
     86           IF(ll_write) WRITE(numout, *) 'Greenland iceberg calving climatology (kg/s) : ',zgreenland_calving_sum 
     87           zgreenland_calving_sum = SUM( berg_grid%calving(:,:) * greenland_icesheet_mask(:,:) ) 
     88           IF( lk_mpp ) CALL mpp_sum( zgreenland_calving_sum ) 
     89           IF(ll_write) WRITE(numout, *) 'Greenland iceberg calving adjusted value (kg/s) : ',zgreenland_calving_sum 
     90 
     91           zantarctica_calving_sum = SUM( berg_grid%calving(:,:) * antarctica_icesheet_mask(:,:) ) 
     92           IF( lk_mpp ) CALL mpp_sum( zantarctica_calving_sum ) 
     93           WHERE( antarctica_icesheet_mask(:,:) == 1.0 )                                                                              & 
     94           berg_grid%calving(:,:) = berg_grid%calving(:,:) * antarctica_icesheet_mass_rate_of_change * rn_antarctica_calving_fraction & 
     95          &                           / ( zantarctica_calving_sum + 1.0e-10_wp ) 
     96 
     97           ! check 
     98           IF(ll_write) WRITE(numout, *) 'Antarctica iceberg calving climatology (kg/s) : ',zantarctica_calving_sum 
     99           zantarctica_calving_sum = SUM( berg_grid%calving(:,:) * antarctica_icesheet_mask(:,:) ) 
     100           IF( lk_mpp ) CALL mpp_sum( zantarctica_calving_sum ) 
     101           IF(ll_write) WRITE(numout, *) 'Antarctica iceberg calving adjusted value (kg/s) : ',zantarctica_calving_sum 
     102 
     103        ENDIF 
     104      ENDIF 
     105    
     106      CALL iom_put( 'berg_calve', berg_grid%calving(:,:) ) 
     107 
    65108 
    66109      IF( ll_first_call .AND. .NOT. l_restarted_bergs ) THEN      ! This is a hack to simplify initialization 
Note: See TracChangeset for help on using the changeset viewer.