LCOV - code coverage report
Current view: top level - cicecore/shared - ice_arrays_column.F90 (source / functions) Hit Total Coverage
Test: 231018-211459:8916b9ff2c:1:quick Lines: 14 15 93.33 %
Date: 2023-10-18 15:30:36 Functions: 1 1 100.00 %

          Line data    Source code
       1             : !=======================================================================
       2             : 
       3             : ! Grid-dependent arrays needed for column package
       4             : ! These were originally module variables in modules that became part of
       5             : ! the column package
       6             : 
       7             : ! author: Elizabeth C. Hunke, LANL
       8             : 
       9             :       module ice_arrays_column
      10             : 
      11             :       use ice_kinds_mod
      12             :       use ice_fileunits, only: nu_diag
      13             :       use ice_blocks, only: nx_block, ny_block
      14             :       use ice_domain_size, only: max_blocks, ncat, nilyr, nslyr, &
      15             :           nblyr, nfsd, nfreq
      16             :       use icepack_intfc, only: icepack_nspint_3bd
      17             :       use icepack_intfc, only: icepack_query_tracer_sizes, icepack_query_parameters, &
      18             :           icepack_query_tracer_flags, &   ! LCOV_EXCL_LINE
      19             :           icepack_warnings_flush, icepack_warnings_aborted, icepack_query_tracer_sizes
      20             : 
      21             :       implicit none
      22             :       private
      23             : 
      24             :       public :: alloc_arrays_column
      25             : 
      26             :       ! icepack_atmo.F90
      27             :       ! Cdn variables on the T-grid
      28             :       real (kind=dbl_kind), public, &
      29             :          dimension (:,:,:), allocatable :: &   ! LCOV_EXCL_LINE
      30             :          Cdn_atm     , & ! atm drag coefficient   ! LCOV_EXCL_LINE
      31             :          Cdn_ocn     , & ! ocn drag coefficient   ! LCOV_EXCL_LINE
      32             :                          ! form drag
      33             :          hfreebd,      & ! freeboard (m)
      34             :          hdraft,       & ! draft of ice + snow column (Stoessel1993)   ! LCOV_EXCL_LINE
      35             :          hridge,       & ! ridge height   ! LCOV_EXCL_LINE
      36             :          distrdg,      & ! distance between ridges   ! LCOV_EXCL_LINE
      37             :          hkeel,        & ! keel depth   ! LCOV_EXCL_LINE
      38             :          dkeel,        & ! distance between keels   ! LCOV_EXCL_LINE
      39             :          lfloe,        & ! floe length   ! LCOV_EXCL_LINE
      40             :          dfloe,        & ! distance between floes   ! LCOV_EXCL_LINE
      41             :          Cdn_atm_skin, & ! neutral skin drag coefficient   ! LCOV_EXCL_LINE
      42             :          Cdn_atm_floe, & ! neutral floe edge drag coefficient   ! LCOV_EXCL_LINE
      43             :          Cdn_atm_pond, & ! neutral pond edge drag coefficient   ! LCOV_EXCL_LINE
      44             :          Cdn_atm_rdg,  & ! neutral ridge drag coefficient   ! LCOV_EXCL_LINE
      45             :          Cdn_ocn_skin, & ! skin drag coefficient   ! LCOV_EXCL_LINE
      46             :          Cdn_ocn_floe, & ! floe edge drag coefficient   ! LCOV_EXCL_LINE
      47             :          Cdn_ocn_keel, & ! keel drag coefficient   ! LCOV_EXCL_LINE
      48             :          Cdn_atm_ratio   ! ratio drag atm / neutral drag atm
      49             : 
      50             : !-------------------------------------------------------------------
      51             : ! a note regarding hi_min and hin_max(0):
      52             : ! both represent a minimum ice thickness.  hin_max(0) is
      53             : ! intended to be used for particular numerical implementations
      54             : ! of category conversions in the ice thickness distribution.
      55             : ! hi_min is a more general purpose parameter, but is specifically
      56             : ! for maintaining stability in the thermodynamics.
      57             : ! hin_max(0) = 0.1 m for the delta function itd
      58             : ! hin_max(0) = 0.0 m for linear remapping
      59             : !
      60             : ! Also note that the upper limit on the thickest category
      61             : ! is only used for the linear remapping scheme
      62             : ! and it is not a true upper limit on the thickness
      63             : !-------------------------------------------------------------------
      64             : 
      65             :       ! icepack_itd.F90
      66             :       real (kind=dbl_kind), public, allocatable :: &
      67             :          hin_max(:) ! category limits (m)
      68             : 
      69             :       character (len=35), public, allocatable :: c_hi_range(:)
      70             : 
      71             :       ! icepack_snow.F90
      72             :       real (kind=dbl_kind), public, dimension (:,:,:), allocatable :: &
      73             :          meltsliq     ! snow melt mass (kg/m^2/step-->kg/m^2/day)
      74             : 
      75             :       real (kind=dbl_kind), public, dimension (:,:,:,:), allocatable :: &
      76             :          meltsliqn       ! snow melt mass in category n (kg/m^2)
      77             : 
      78             :       ! icepack_meltpond_lvl.F90
      79             :       real (kind=dbl_kind), public, dimension (:,:,:,:), allocatable :: &
      80             :          dhsn, &      ! depth difference for snow on sea ice and pond ice   ! LCOV_EXCL_LINE
      81             :          ffracn       ! fraction of fsurfn used to melt ipond
      82             : 
      83             :       ! icepack_shortwave.F90
      84             :       ! category albedos
      85             :       real (kind=dbl_kind), dimension (:,:,:,:), allocatable, public :: &
      86             :          alvdrn      , & ! visible direct albedo           (fraction)   ! LCOV_EXCL_LINE
      87             :          alidrn      , & ! near-ir direct albedo           (fraction)   ! LCOV_EXCL_LINE
      88             :          alvdfn      , & ! visible diffuse albedo          (fraction)   ! LCOV_EXCL_LINE
      89             :          alidfn          ! near-ir diffuse albedo          (fraction)
      90             : 
      91             :       ! albedo components for history
      92             :       real (kind=dbl_kind), dimension (:,:,:,:), allocatable, public :: &
      93             :          albicen, &   ! bare ice   ! LCOV_EXCL_LINE
      94             :          albsnon, &   ! snow   ! LCOV_EXCL_LINE
      95             :          albpndn, &   ! pond   ! LCOV_EXCL_LINE
      96             :          apeffn       ! effective pond area used for radiation calculation
      97             : 
      98             :       real (kind=dbl_kind), dimension (:,:,:,:), allocatable, public :: &
      99             :          snowfracn    ! Category snow fraction used in radiation
     100             : 
     101             :       ! shortwave components
     102             :       real (kind=dbl_kind), dimension (:,:,:,:,:), allocatable, public :: &
     103             :          Iswabsn         ! SW radiation absorbed in ice layers (W m-2)
     104             : 
     105             :       real (kind=dbl_kind), dimension (:,:,:,:,:), allocatable, public :: &
     106             :          Sswabsn         ! SW radiation absorbed in snow layers (W m-2)
     107             : 
     108             :       real (kind=dbl_kind), dimension (:,:,:,:), allocatable, public :: &
     109             :          fswsfcn     , & ! SW absorbed at ice/snow surface (W m-2)   ! LCOV_EXCL_LINE
     110             :          fswthrun    , & ! SW through ice to ocean            (W/m^2)   ! LCOV_EXCL_LINE
     111             :          fswthrun_vdr , & ! vis dir SW through ice to ocean            (W/m^2)   ! LCOV_EXCL_LINE
     112             :          fswthrun_vdf , & ! vis dif SW through ice to ocean            (W/m^2)   ! LCOV_EXCL_LINE
     113             :          fswthrun_idr , & ! nir dir SW through ice to ocean            (W/m^2)   ! LCOV_EXCL_LINE
     114             :          fswthrun_idf , & ! nir dif SW through ice to ocean            (W/m^2)   ! LCOV_EXCL_LINE
     115             :          fswintn         ! SW absorbed in ice interior, below surface (W m-2)
     116             : 
     117             :       real (kind=dbl_kind), dimension (:,:,:,:,:), allocatable, public :: &
     118             :          fswpenln        ! visible SW entering ice layers (W m-2)
     119             : 
     120             :       ! biogeochemistry components
     121             : 
     122             :       real (kind=dbl_kind), dimension (:), allocatable, public :: &
     123             :          bgrid            , &  ! biology nondimensional vertical grid points   ! LCOV_EXCL_LINE
     124             :          igrid            , &  ! biology vertical interface points   ! LCOV_EXCL_LINE
     125             :          cgrid            , &  ! CICE vertical coordinate   ! LCOV_EXCL_LINE
     126             :          icgrid           , &  ! interface grid for CICE (shortwave variable)   ! LCOV_EXCL_LINE
     127             :          swgrid                ! grid for ice tracers used in dEdd scheme
     128             : 
     129             :       real (kind=dbl_kind), dimension (:,:,:,:), allocatable, public :: &
     130             :          first_ice_real     ! .true. = c1, .false. = c0
     131             : 
     132             :       logical (kind=log_kind), dimension (:,:,:,:), allocatable, public :: &
     133             :          first_ice      ! distinguishes ice that disappears (e.g. melts)
     134             :                         ! and reappears (e.g. transport) in a grid cell
     135             :                         ! during a single time step from ice that was
     136             :                         ! there the entire time step (true until ice forms)
     137             : 
     138             :       real (kind=dbl_kind), dimension (:,:,:,:), allocatable, public :: &
     139             :          ocean_bio      ! contains all the ocean bgc tracer concentrations
     140             : 
     141             :       ! diagnostic fluxes
     142             :       real (kind=dbl_kind), dimension (:,:,:,:), allocatable, public :: &
     143             :          fbio_snoice, & ! fluxes from snow to ice   ! LCOV_EXCL_LINE
     144             :          fbio_atmice    ! fluxes from atm to ice
     145             : 
     146             :       real (kind=dbl_kind), dimension (:,:,:,:), allocatable, public :: &
     147             :          ocean_bio_all      ! fixed order, all values even for tracers false
     148             :                             ! N(1:icepack_max_algae) = 1:icepack_max_algae
     149             :                             ! Nit = icepack_max_algae + 1
     150             :                             ! DOC(1:icepack_max_doc) = icepack_max_algae + 2: icepack_max_algae + icepack_max_doc + 1
     151             :                             ! DIC(1:icepack_max_dic) = icepack_max_algae + icepack_max_doc + 2: icepack_max_algae + icepack_max_doc + 1 + icepack_max_dic
     152             :                             ! chl(1:icepack_max_algae) =  icepack_max_algae + icepack_max_doc + 2 + icepack_max_dic: &
     153             :                             !                     2*icepack_max_algae + icepack_max_doc + 1 + icepack_max_dic
     154             :                             ! Am =  2*icepack_max_algae + icepack_max_doc + 2 + icepack_max_dic
     155             :                             ! Sil=  2*icepack_max_algae + icepack_max_doc + 3 + icepack_max_dic
     156             :                             ! DMSPp=  2*icepack_max_algae + icepack_max_doc + 4 + icepack_max_dic
     157             :                             ! DMSPd=  2*icepack_max_algae + icepack_max_doc + 5 + icepack_max_dic
     158             :                             ! DMS  =  2*icepack_max_algae + icepack_max_doc + 6 + icepack_max_dic
     159             :                             ! PON  =  2*icepack_max_algae + icepack_max_doc + 7 + icepack_max_dic
     160             :                             ! DON(1:icepack_max_don)  =  2*icepack_max_algae + icepack_max_doc + 8 + icepack_max_dic:
     161             :                             !                    2*icepack_max_algae + icepack_max_doc + 7 + icepack_max_dic + icepack_max_don
     162             :                             ! Fed(1:icepack_max_fe) = 2*icepack_max_algae + icepack_max_doc + 8 + icepack_max_dic + icepack_max_don:
     163             :                             !                2*icepack_max_algae + icepack_max_doc + 7 + icepack_max_dic + icepack_max_don + icepack_max_fe
     164             :                             ! Fep(1:icepack_max_fe) = 2*icepack_max_algae + icepack_max_doc + 8 + icepack_max_dic + icepack_max_don + icepack_max_fe:
     165             :                             !                2*icepack_max_algae + icepack_max_doc + 7 + icepack_max_dic + icepack_max_don + 2*icepack_max_fe
     166             :                             ! zaero(1:icepack_max_aero) = 2*icepack_max_algae + icepack_max_doc + 8 + icepack_max_dic + icepack_max_don + 2*icepack_max_fe:
     167             :                             !                     2*icepack_max_algae + icepack_max_doc + 7 + icepack_max_dic + icepack_max_don + 2*icepack_max_fe
     168             :                             !                     + icepack_max_aero
     169             :                             ! humic ==  2*icepack_max_algae + icepack_max_doc + 8 + icepack_max_dic + icepack_max_don + 2*icepack_max_fe
     170             :                             !                     + icepack_max_aero
     171             : 
     172             :       integer (kind=int_kind), dimension(:,:,:,:), allocatable, public :: &
     173             :         algal_peak          ! vertical location of algal maximum, 0 if no maximum
     174             : 
     175             :       real (kind=dbl_kind), dimension (:,:,:,:,:), allocatable, public :: &
     176             :          Zoo        ! N losses accumulated in timestep (ie. zooplankton/bacteria)
     177             :                     ! mmol/m^3
     178             : 
     179             :       real (kind=dbl_kind), dimension (:,:,:,:), allocatable, public :: &
     180             :          dhbr_top     , & ! brine top change   ! LCOV_EXCL_LINE
     181             :          dhbr_bot         ! brine bottom change
     182             : 
     183             :       real (kind=dbl_kind), dimension (:,:,:), allocatable, public :: &
     184             :          grow_net       , & ! Specific growth rate (/s) per grid cell   ! LCOV_EXCL_LINE
     185             :          PP_net         , & ! Total production (mg C/m^2/s) per grid cell   ! LCOV_EXCL_LINE
     186             :          hbri               ! brine height, area-averaged for comparison with hi (m)
     187             : 
     188             :       real (kind=dbl_kind), dimension (:,:,:,:,:), allocatable, public :: &
     189             :          bphi           , & ! porosity of layers   ! LCOV_EXCL_LINE
     190             :          bTiz               ! layer temperatures interpolated on bio grid (C)
     191             : 
     192             :       real (kind=dbl_kind), dimension (:,:,:,:), allocatable, public :: &
     193             :          darcy_V            ! darcy velocity positive up (m/s)
     194             : 
     195             :       real (kind=dbl_kind), dimension (:,:,:), allocatable, public :: &
     196             :          chl_net     , & ! Total chla (mg chla/m^2) per grid cell   ! LCOV_EXCL_LINE
     197             :          NO_net          ! Total nitrate per grid cell
     198             : 
     199             :       real (kind=dbl_kind), dimension (:,:,:,:), allocatable, public :: &
     200             :          sice_rho     ! avg sea ice density  (kg/m^3)  ! ech: diagnostic only?
     201             : 
     202             :       real (kind=dbl_kind), dimension (:,:,:,:,:), allocatable, public :: &
     203             :          zfswin       ! Shortwave flux into layers interpolated on bio grid  (W/m^2)
     204             : 
     205             :       real (kind=dbl_kind), dimension (:,:,:,:,:), allocatable, public :: &
     206             :          iDi      , & ! igrid Diffusivity (m^2/s)   ! LCOV_EXCL_LINE
     207             :          iki          ! Ice permeability (m^2)
     208             : 
     209             :       real (kind=dbl_kind), dimension (:,:,:), allocatable, public :: &
     210             :          upNO     , & ! nitrate uptake rate (mmol/m^2/d) times aice   ! LCOV_EXCL_LINE
     211             :          upNH         ! ammonium uptake rate (mmol/m^2/d) times aice
     212             : 
     213             :       real (kind=dbl_kind), dimension(:,:,:,:,:), allocatable, public :: &
     214             :          trcrn_sw        ! bgc tracers active in the delta-Eddington shortwave
     215             :                          ! calculation on the shortwave grid (swgrid)
     216             : 
     217             :       real (kind=dbl_kind), dimension (:,:,:,:), allocatable, public :: &
     218             :          ice_bio_net  , &   ! depth integrated tracer (mmol/m^2)   ! LCOV_EXCL_LINE
     219             :          snow_bio_net       ! depth integrated snow tracer (mmol/m^2)
     220             : 
     221             :       logical (kind=log_kind), public :: &
     222             :          oceanmixed_ice, &  ! if true, use internal ocean mixed layer   ! LCOV_EXCL_LINE
     223             :          restore_bgc        !
     224             : 
     225             :       character(char_len), public :: &
     226             :          fe_data_type   ! 'default', 'clim'
     227             : 
     228             :       character(char_len_long), public :: &
     229             :          bgc_data_dir   ! directory for biogeochemistry data
     230             : 
     231             :       real (kind=dbl_kind), dimension(:), allocatable, public :: &
     232             :          R_C2N_DON      ! carbon to nitrogen mole ratio of DON pool
     233             : 
     234             :       real (kind=dbl_kind), dimension(:), allocatable, public :: &
     235             :          R_C2N     ,      & ! algal C to N (mole/mole)   ! LCOV_EXCL_LINE
     236             :          R_chl2N   ,      & ! 3 algal chlorophyll to N (mg/mmol)   ! LCOV_EXCL_LINE
     237             :          R_Si2N             ! silica to nitrogen mole ratio for algal groups
     238             : 
     239             :       ! floe size distribution
     240             :       real(kind=dbl_kind), dimension(:), allocatable, public ::  &
     241             :          floe_rad_l,    &  ! fsd size lower bound in m (radius)   ! LCOV_EXCL_LINE
     242             :          floe_rad_c,    &  ! fsd size bin centre in m (radius)   ! LCOV_EXCL_LINE
     243             :          floe_binwidth     ! fsd size bin width in m (radius)
     244             : 
     245             :       real (kind=dbl_kind), dimension (:,:,:), allocatable, public :: &
     246             :         wave_sig_ht        ! significant height of waves (m)
     247             : 
     248             :       real (kind=dbl_kind), dimension (:), allocatable, public :: &
     249             :          wavefreq,      &  ! wave frequencies   ! LCOV_EXCL_LINE
     250             :          dwavefreq         ! wave frequency bin widths
     251             : 
     252             :       real (kind=dbl_kind), dimension (:,:,:,:), allocatable, public :: &
     253             :          wave_spectrum, &  ! wave spectrum   ! LCOV_EXCL_LINE
     254             :          ! change in floe size distribution due to processes
     255             :          d_afsd_newi, d_afsd_latg, d_afsd_latm, d_afsd_wave, d_afsd_weld
     256             : 
     257             :       character (len=35), public, allocatable :: c_fsd_range(:)
     258             : 
     259             : !=======================================================================
     260             : 
     261             :       contains
     262             : 
     263             : !=======================================================================
     264             : 
     265          37 :       subroutine alloc_arrays_column
     266             :         ! Allocate column arrays
     267             :         use ice_exit, only: abort_ice
     268             :         integer (int_kind) :: max_nbtrcr, max_algae, max_aero, &
     269             :            nmodal1, nmodal2, max_don
     270             :         integer (int_kind) :: ierr, ntrcr
     271             : 
     272             :       character(len=*),parameter :: subname='(alloc_arrays_column)'
     273             : 
     274          37 :       call icepack_query_tracer_sizes(ntrcr_out=ntrcr)
     275             :       call icepack_query_tracer_sizes( max_nbtrcr_out=max_nbtrcr, &
     276             :          max_algae_out=max_algae, max_aero_out=max_aero, &   ! LCOV_EXCL_LINE
     277          37 :          nmodal1_out=nmodal1, nmodal2_out=nmodal2, max_don_out=max_don)
     278          37 :       call icepack_warnings_flush(nu_diag)
     279          37 :       if (icepack_warnings_aborted()) call abort_ice(error_message=subname, &
     280           0 :           file=__FILE__,line= __LINE__)
     281             : 
     282             :       allocate(                                       &
     283             :          Cdn_atm      (nx_block,ny_block,max_blocks), & ! atm drag coefficient   ! LCOV_EXCL_LINE
     284             :          Cdn_ocn      (nx_block,ny_block,max_blocks), & ! ocn drag coefficient   ! LCOV_EXCL_LINE
     285             :          hfreebd      (nx_block,ny_block,max_blocks), & ! freeboard (m)   ! LCOV_EXCL_LINE
     286             :          hdraft       (nx_block,ny_block,max_blocks), & ! draft of ice + snow column (Stoessel1993)   ! LCOV_EXCL_LINE
     287             :          hridge       (nx_block,ny_block,max_blocks), & ! ridge height   ! LCOV_EXCL_LINE
     288             :          distrdg      (nx_block,ny_block,max_blocks), & ! distance between ridges   ! LCOV_EXCL_LINE
     289             :          hkeel        (nx_block,ny_block,max_blocks), & ! keel depth   ! LCOV_EXCL_LINE
     290             :          dkeel        (nx_block,ny_block,max_blocks), & ! distance between keels   ! LCOV_EXCL_LINE
     291             :          lfloe        (nx_block,ny_block,max_blocks), & ! floe length   ! LCOV_EXCL_LINE
     292             :          dfloe        (nx_block,ny_block,max_blocks), & ! distance between floes   ! LCOV_EXCL_LINE
     293             :          Cdn_atm_skin (nx_block,ny_block,max_blocks), & ! neutral skin drag coefficient   ! LCOV_EXCL_LINE
     294             :          Cdn_atm_floe (nx_block,ny_block,max_blocks), & ! neutral floe edge drag coefficient   ! LCOV_EXCL_LINE
     295             :          Cdn_atm_pond (nx_block,ny_block,max_blocks), & ! neutral pond edge drag coefficient   ! LCOV_EXCL_LINE
     296             :          Cdn_atm_rdg  (nx_block,ny_block,max_blocks), & ! neutral ridge drag coefficient   ! LCOV_EXCL_LINE
     297             :          Cdn_ocn_skin (nx_block,ny_block,max_blocks), & ! skin drag coefficient   ! LCOV_EXCL_LINE
     298             :          Cdn_ocn_floe (nx_block,ny_block,max_blocks), & ! floe edge drag coefficient   ! LCOV_EXCL_LINE
     299             :          Cdn_ocn_keel (nx_block,ny_block,max_blocks), & ! keel drag coefficient   ! LCOV_EXCL_LINE
     300             :          Cdn_atm_ratio(nx_block,ny_block,max_blocks), & ! ratio drag atm / neutral drag atm   ! LCOV_EXCL_LINE
     301             :          grow_net     (nx_block,ny_block,max_blocks), & ! Specific growth rate (/s) per grid cell   ! LCOV_EXCL_LINE
     302             :          PP_net       (nx_block,ny_block,max_blocks), & ! Total production (mg C/m^2/s) per grid cell   ! LCOV_EXCL_LINE
     303             :          hbri         (nx_block,ny_block,max_blocks), & ! brine height, area-averaged for comparison with hi (m)   ! LCOV_EXCL_LINE
     304             :          chl_net      (nx_block,ny_block,max_blocks), & ! Total chla (mg chla/m^2) per grid cell   ! LCOV_EXCL_LINE
     305             :          NO_net       (nx_block,ny_block,max_blocks), & ! Total nitrate per grid cell   ! LCOV_EXCL_LINE
     306             :          upNO         (nx_block,ny_block,max_blocks), & ! nitrate uptake rate (mmol/m^2/d) times aice   ! LCOV_EXCL_LINE
     307             :          upNH         (nx_block,ny_block,max_blocks), & ! ammonium uptake rate (mmol/m^2/d) times aice   ! LCOV_EXCL_LINE
     308             :          meltsliq     (nx_block,ny_block,max_blocks), & ! snow melt mass (kg/m^2)   ! LCOV_EXCL_LINE
     309             :          meltsliqn    (nx_block,ny_block,ncat,max_blocks), & ! snow melt mass in category n (kg/m^2)   ! LCOV_EXCL_LINE
     310             :          dhsn         (nx_block,ny_block,ncat,max_blocks), & ! depth difference for snow on sea ice and pond ice   ! LCOV_EXCL_LINE
     311             :          ffracn       (nx_block,ny_block,ncat,max_blocks), & ! fraction of fsurfn used to melt ipond   ! LCOV_EXCL_LINE
     312             :          alvdrn       (nx_block,ny_block,ncat,max_blocks), & ! visible direct albedo           (fraction)   ! LCOV_EXCL_LINE
     313             :          alidrn       (nx_block,ny_block,ncat,max_blocks), & ! near-ir direct albedo           (fraction)   ! LCOV_EXCL_LINE
     314             :          alvdfn       (nx_block,ny_block,ncat,max_blocks), & ! visible diffuse albedo          (fraction)   ! LCOV_EXCL_LINE
     315             :          alidfn       (nx_block,ny_block,ncat,max_blocks), & ! near-ir diffuse albedo          (fraction)   ! LCOV_EXCL_LINE
     316             :          albicen      (nx_block,ny_block,ncat,max_blocks), & ! bare ice   ! LCOV_EXCL_LINE
     317             :          albsnon      (nx_block,ny_block,ncat,max_blocks), & ! snow   ! LCOV_EXCL_LINE
     318             :          albpndn      (nx_block,ny_block,ncat,max_blocks), & ! pond   ! LCOV_EXCL_LINE
     319             :          apeffn       (nx_block,ny_block,ncat,max_blocks), & ! effective pond area used for radiation calculation   ! LCOV_EXCL_LINE
     320             :          snowfracn    (nx_block,ny_block,ncat,max_blocks), & ! Category snow fraction used in radiation   ! LCOV_EXCL_LINE
     321             :          fswsfcn      (nx_block,ny_block,ncat,max_blocks), & ! SW absorbed at ice/snow surface (W m-2)   ! LCOV_EXCL_LINE
     322             :          fswthrun     (nx_block,ny_block,ncat,max_blocks), & ! SW through ice to ocean            (W/m^2)   ! LCOV_EXCL_LINE
     323             :          fswthrun_vdr  (nx_block,ny_block,ncat,max_blocks), & ! vis dir SW through ice to ocean            (W/m^2)   ! LCOV_EXCL_LINE
     324             :          fswthrun_vdf  (nx_block,ny_block,ncat,max_blocks), & ! vis dif SW through ice to ocean            (W/m^2)   ! LCOV_EXCL_LINE
     325             :          fswthrun_idr  (nx_block,ny_block,ncat,max_blocks), & ! nir dir SW through ice to ocean            (W/m^2)   ! LCOV_EXCL_LINE
     326             :          fswthrun_idf  (nx_block,ny_block,ncat,max_blocks), & ! nir dif SW through ice to ocean            (W/m^2)   ! LCOV_EXCL_LINE
     327             :          fswintn      (nx_block,ny_block,ncat,max_blocks), & ! SW absorbed in ice interior, below surface (W m-2)   ! LCOV_EXCL_LINE
     328             :          first_ice_real                                    &   ! LCOV_EXCL_LINE
     329             :                       (nx_block,ny_block,ncat,max_blocks), & ! .true. = c1, .false. = c0   ! LCOV_EXCL_LINE
     330             :          first_ice    (nx_block,ny_block,ncat,max_blocks), & ! distinguishes ice that disappears (melts) and reappears (transport)   ! LCOV_EXCL_LINE
     331             :          dhbr_top     (nx_block,ny_block,ncat,max_blocks), & ! brine top change   ! LCOV_EXCL_LINE
     332             :          dhbr_bot     (nx_block,ny_block,ncat,max_blocks), & ! brine bottom change   ! LCOV_EXCL_LINE
     333             :          darcy_V      (nx_block,ny_block,ncat,max_blocks), & ! darcy velocity positive up (m/s)   ! LCOV_EXCL_LINE
     334             :          sice_rho     (nx_block,ny_block,ncat,max_blocks), & ! avg sea ice density  (kg/m^3)  ! ech: diagnostic only?   ! LCOV_EXCL_LINE
     335             :          Iswabsn      (nx_block,ny_block,nilyr,ncat,max_blocks), & ! SW radiation absorbed in ice layers (W m-2)   ! LCOV_EXCL_LINE
     336             :          Sswabsn      (nx_block,ny_block,nslyr,ncat,max_blocks), & ! SW radiation absorbed in snow layers (W m-2)   ! LCOV_EXCL_LINE
     337             :          fswpenln     (nx_block,ny_block,nilyr+1,ncat,max_blocks), & ! visible SW entering ice layers (W m-2)   ! LCOV_EXCL_LINE
     338             :          Zoo          (nx_block,ny_block,nblyr+1,ncat,max_blocks), & ! N losses accumulated in timestep (ie. zooplankton/bacteria)   ! LCOV_EXCL_LINE
     339             :          zfswin       (nx_block,ny_block,nblyr+1,ncat,max_blocks), & ! Shortwave flux into layers interpolated on bio grid  (W/m^2)   ! LCOV_EXCL_LINE
     340             :          iDi          (nx_block,ny_block,nblyr+1,ncat,max_blocks), & ! igrid Diffusivity (m^2/s)   ! LCOV_EXCL_LINE
     341             :          iki          (nx_block,ny_block,nblyr+1,ncat,max_blocks), & ! Ice permeability (m^2)   ! LCOV_EXCL_LINE
     342             :          bphi         (nx_block,ny_block,nblyr+2,ncat,max_blocks), & ! porosity of layers   ! LCOV_EXCL_LINE
     343             :          bTiz         (nx_block,ny_block,nblyr+2,ncat,max_blocks), &    ! layer temperatures interpolated on bio grid (C)   ! LCOV_EXCL_LINE
     344          37 :          stat=ierr)
     345          37 :       if (ierr/=0) call abort_ice(subname//': Out of Memory1')
     346             : 
     347             :       allocate(                                       &
     348             :          ocean_bio    (nx_block,ny_block,max_nbtrcr,max_blocks), & ! contains all the ocean bgc tracer concentrations   ! LCOV_EXCL_LINE
     349             :          fbio_snoice  (nx_block,ny_block,max_nbtrcr,max_blocks), & ! fluxes from snow to ice   ! LCOV_EXCL_LINE
     350             :          fbio_atmice  (nx_block,ny_block,max_nbtrcr,max_blocks), & ! fluxes from atm to ice   ! LCOV_EXCL_LINE
     351             :          ocean_bio_all(nx_block,ny_block,max_nbtrcr,max_blocks), & ! fixed order, all values even for tracers false   ! LCOV_EXCL_LINE
     352             :          ice_bio_net  (nx_block,ny_block,max_nbtrcr,max_blocks), & ! depth integrated tracer (mmol/m^2)   ! LCOV_EXCL_LINE
     353             :          snow_bio_net (nx_block,ny_block,max_nbtrcr,max_blocks), & ! depth integrated snow tracer (mmol/m^2)   ! LCOV_EXCL_LINE
     354             :          algal_peak   (nx_block,ny_block,max_algae ,max_blocks), & ! vertical location of algal maximum, 0 if no maximum   ! LCOV_EXCL_LINE
     355          37 :          stat=ierr)
     356          37 :       if (ierr/=0) call abort_ice(subname//': Out of Memory2')
     357             : 
     358             :       allocate(                                       &
     359             :          hin_max(0:ncat)            , & ! category limits (m)   ! LCOV_EXCL_LINE
     360             :          c_hi_range(ncat)           , & !   ! LCOV_EXCL_LINE
     361             :          bgrid(nblyr+2)             , & ! biology nondimensional vertical grid points   ! LCOV_EXCL_LINE
     362             :          igrid(nblyr+1)             , &  ! biology vertical interface points   ! LCOV_EXCL_LINE
     363             :          cgrid(nilyr+1)             , &  ! CICE vertical coordinate   ! LCOV_EXCL_LINE
     364             :          icgrid(nilyr+1)            , &  ! interface grid for CICE (shortwave variable)   ! LCOV_EXCL_LINE
     365             :          swgrid(nilyr+1)            , &  ! grid for ice tracers used in dEdd scheme   ! LCOV_EXCL_LINE
     366          37 :          stat=ierr)
     367          37 :       if (ierr/=0) call abort_ice(subname//' Out of Memory3')
     368             : 
     369             :       ! floe size distribution
     370             :       allocate(                                                   &
     371             :          floe_rad_l     (nfsd)      , & ! fsd size lower bound in m (radius)   ! LCOV_EXCL_LINE
     372             :          floe_rad_c     (nfsd)      , & ! fsd size bin centre in m (radius)   ! LCOV_EXCL_LINE
     373             :          floe_binwidth  (nfsd)      , & ! fsd size bin width in m (radius)   ! LCOV_EXCL_LINE
     374             :          c_fsd_range    (nfsd)      , & ! fsd floe_rad bounds (m)   ! LCOV_EXCL_LINE
     375             :          wavefreq       (nfreq)     , & ! wave frequency   ! LCOV_EXCL_LINE
     376             :          dwavefreq      (nfreq)     , & ! wave frequency bin widths   ! LCOV_EXCL_LINE
     377             :          wave_sig_ht    (nx_block,ny_block,          max_blocks), & !   ! LCOV_EXCL_LINE
     378             :          wave_spectrum  (nx_block,ny_block,nfreq,    max_blocks), & !   ! LCOV_EXCL_LINE
     379             :          d_afsd_newi    (nx_block,ny_block,nfsd,     max_blocks), & !   ! LCOV_EXCL_LINE
     380             :          d_afsd_latg    (nx_block,ny_block,nfsd,     max_blocks), & !   ! LCOV_EXCL_LINE
     381             :          d_afsd_latm    (nx_block,ny_block,nfsd,     max_blocks), & !   ! LCOV_EXCL_LINE
     382             :          d_afsd_wave    (nx_block,ny_block,nfsd,     max_blocks), & !   ! LCOV_EXCL_LINE
     383             :          d_afsd_weld    (nx_block,ny_block,nfsd,     max_blocks), & !   ! LCOV_EXCL_LINE
     384          37 :          stat=ierr)
     385          37 :       if (ierr/=0) call abort_ice(subname//' Out of Memory5')
     386             : 
     387          37 :       end subroutine alloc_arrays_column
     388             : 
     389             : !=======================================================================
     390             : 
     391             :       end module ice_arrays_column
     392             : 
     393             : !=======================================================================

Generated by: LCOV version 1.14-6-g40580cd