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 : !=======================================================================
|