Handling of icebergs (ICB)


!-----------------------------------------------------------------------
&namberg       !   iceberg parameters
!-----------------------------------------------------------------------
      ln_icebergs              = .false.
      ln_bergdia               = .true.               ! Calculate budgets
      nn_verbose_level         = 1                    ! Turn on more verbose output if level > 0
      nn_verbose_write         = 15                   ! Timesteps between verbose messages
      nn_sample_rate           = 1                    ! Timesteps between sampling for trajectory storage
                                                      ! Initial mass required for an iceberg of each class
      rn_initial_mass          = 8.8e7, 4.1e8, 3.3e9, 1.8e10, 3.8e10, 7.5e10, 1.2e11, 2.2e11, 3.9e11, 7.4e11
                                                      ! Proportion of calving mass to apportion to each class
      rn_distribution          = 0.24, 0.12, 0.15, 0.18, 0.12, 0.07, 0.03, 0.03, 0.03, 0.02
                                                      ! Ratio between effective and real iceberg mass (non-dim)
                                                      ! i.e. number of icebergs represented at a point
      rn_mass_scaling          = 2000, 200, 50, 20, 10, 5, 2, 1, 1, 1
                                                      ! thickness of newly calved bergs (m)
      rn_initial_thickness     = 40., 67., 133., 175., 250., 250., 250., 250., 250., 250.
      rn_rho_bergs             = 850.                 ! Density of icebergs
      rn_LoW_ratio             = 1.5                  ! Initial ratio L/W for newly calved icebergs
      ln_operator_splitting    = .true.               ! Use first order operator splitting for thermodynamics
      rn_bits_erosion_fraction = 0.                   ! Fraction of erosion melt flux to divert to bergy bits
      rn_sicn_shift            = 0.                   ! Shift of sea-ice concn in erosion flux (0<sicn_shift<1)
      ln_passive_mode          = .false.              ! iceberg - ocean decoupling
      nn_test_icebergs         =  10                  ! Create test icebergs of this class (-1 = no)
                                                      ! Put a test iceberg at each gridpoint in box (lon1,lon2,lat1,lat2)
      rn_test_box              = 108.0,  116.0, -66.0, -58.0
      rn_speed_limit           = 0.                   ! CFL speed limit for a berg

!              ! file name ! frequency (hours) !   variable   ! time interp.   !  clim   ! 'yearly'/ ! weights  ! rotation ! land/sea mask !
!              !           !  (if <0  months)  !     name     !   (logical)    !  (T/F ) ! 'monthly' ! filename ! pairing  ! filename      !
      sn_icb =  'calving' ,       -1           , 'calvingmask',  .true.        , .true.  , 'yearly'  , ''       , ''       , ''

      cn_dir = './'
/

Icebergs are modelled as lagrangian particles in NEMO [Marsh et al., 2015]. Their physical behaviour is controlled by equations as described in Martin and Adcroft [2010] ). (Note that the authors kindly provided a copy of their code to act as a basis for implementation in NEMO). Icebergs are initially spawned into one of ten classes which have specific mass and thickness as described in the namberg namelist: rn_initial_mass and rn_initial_thickness. Each class has an associated scaling (rn_mass_scaling), which is an integer representing how many icebergs of this class are being described as one lagrangian point (this reduces the numerical problem of tracking every single iceberg). They are enabled by setting ln_icebergs = true.

Two initialisation schemes are possible.

nn_test_icebergs $ >$ 0
In this scheme, the value of nn_test_icebergs represents the class of iceberg to generate (so between 1 and 10), and nn_test_icebergs provides a lon/lat box in the domain at each grid point of which an iceberg is generated at the beginning of the run. (Note that this happens each time the timestep equals nn_nit000.) nn_test_icebergs is defined by four numbers in nn_test_box representing the corners of the geographical box: lonmin,lonmax,latmin,latmax
nn_test_icebergs = -1
In this scheme the model reads a calving file supplied in the sn_icb parameter. This should be a file with a field on the configuration grid (typically ORCA) representing ice accumulation rate at each model point. These should be ocean points adjacent to land where icebergs are known to calve. Most points in this input grid are going to have value zero. When the model runs, ice is accumulated at each grid point which has a non-zero source term. At each time step, a test is performed to see if there is enough ice mass to calve an iceberg of each class in order (1 to 10). Note that this is the initial mass multiplied by the number each particle represents ($ i.e.$ the scaling). If there is enough ice, a new iceberg is spawned and the total available ice reduced accordingly.

Icebergs are influenced by wind, waves and currents, bottom melt and erosion. The latter act to disintegrate the iceberg. This is either all melted freshwater, or (if rn_bits_erosion_fraction $ >$ 0) into melt and additionally small ice bits which are assumed to propagate with their larger parent and thus delay fluxing into the ocean. Melt water (and other variables on the configuration grid) are written into the main NEMO model output files.

Extensive diagnostics can be produced. Separate output files are maintained for human-readable iceberg information. A separate file is produced for each processor (independent of ln_ctl). The amount of information is controlled by two integer parameters:

nn_verbose_level
takes a value between one and four and represents an increasing number of points in the code at which variables are written, and an increasing level of obscurity.
nn_verbose_write
is the number of timesteps between writes

Iceberg trajectories can also be written out and this is enabled by setting nn_sample_rate $ >$ 0. A non-zero value represents how many timesteps between writes of information into the output file. These output files are in NETCDF format. When key_ mpp_mpi is defined, each output file contains only those icebergs in the corresponding processor. Trajectory points are written out in the order of their parent iceberg in the model's "linked list" of icebergs. So care is needed to recreate data for individual icebergs, since its trajectory data may be spread across multiple files.

Gurvan Madec and the NEMO Team
NEMO European Consortium2017-02-17