Scheduled Downtime
On Tuesday 24 October 2023 @ 5pm MT the forums will be in read only mode in preparation for the downtime. On Wednesday 25 October 2023 @ 5am MT, this website will be down for maintenance and expected to return online later in the morning.
Normal Operations
The forums are back online with normal operations. If you notice any issues or errors related to the forums, please reach out to help@ucar.edu

Problems with the output of floe-size distribution (FSD) variables

bward-mcgill

Benjamin Ward
New Member
Hello CICE Community,

I am a MSc student in the Atmospheric and Oceanic Sciences at Mcgill University in Montreal. I'm working on wave-ice interaction, precisely I'm trying to couple CICE to an ocean wave model called Wavewatch III (WW3). Recently, I have tried to run a 'spin up' simulation of 10 years of CICE starting from no ice (i.e. ice_ic ='none') to provide the initial conditions for my coupled simulation. While doing that, I encountered two problems with the floe-size distribution:

1) Problem with an emerging FSD without waves.

As mentionned, I tried to run a 10 year simulation starting from ice_ic = 'none'. Since I was running an uncoupled simulation (i.e. no waves) the following options were used :
wave_spec_type='none', wave_spec_file='unknown_wave_spec_type'. As for the other configuration I set nfsd = 12 and tr_fsd=.true. Even if there is no waves, the FSD should still be able to evolve (there is still new ice, lateral growth/melt and welding). However, with that configuration the floes are not growing : after 10 years of simulation my floes only have a mean floe diameter of approx. 2.5m. That means that all the new ice is going is the smallest bin categorie and there was no effective transfer from the smallest bin categorie to the others.

This is fixed by starting with the same initial conditions, but with waves (i.e. wave_spec_type='random', wave_spec_file='path_spec_file'). Where path_spec_file represent the path to a wave spectrum file (e.g. ww3.1997-01-01-00000_efreq.nc) generated by WW3 at each timestep. With that, the mean floe diameter grow between 200m to 1 km in less than 24 hours.

Therefore, I think that something might need to be changed in the subroutine fsd_add_new_ice where there is a couple of if (wave_spec) statements. The case where the code deals with wave_spec == false results in unrealistic evolution of the FSD when it is emerging from no ice condition. The following plot represent the ice the mean floe diameter of the wave and no wave cases after 24 hours of simulation :

1664222165022.png

1664222193658.png

PS: A similar problem arise when I start with ice_ic = 'internal' without waves. During the first summer all the ice is melting (since it just start with an ice cover of 1 m everywhere) and it can't grow back again.

2) Problem with the output of FSD variables (afsd, dafsd_weld, dafsd_latg, etc.).

As I was trying to understand what was going on with the first problem I also realised that something was wrong about the output of the FSD variables.

- The units of the variable afsd (areal floe-size distribution) seem wrong. To my understanding, the units should be 1 (unitless) (i.e. when you sum all the afsd over the all the fsd categories at one point (sum(afsd(:,j,i))), you should get the concentration at that point (aice(j,i)). However, right now the units are m^-1. You need to multiply by the bin width to fall back on the concentration (i.e. sum(bin_width(:)*afsd(:,j,i)) = aice(j,i)).

- The variable afsd is not outputed at the right time step. For example, the following histogram represent afsd at each timestep at a particular point in the Arctic ocean. At t = 3600 the ice is not formed yet (aice = 0). At t = 7200s some ice is formed (aice = 0.028), but the sum of afsd over all fsd categories is still 0 (as well as the double sum of afsdn over all ice thickness categorie and all the fsd categories. At t=10800 the concentration has increased ( aice = 0.054), however the some of afsd (or afsdn) gives the value of the concentration at the previous timestep.


1664221523845.png
(NOTE : here afsd is multiplied by the bin width)

- Something also seems wrong with the units of the dafsd variables (dafsd_weld, dafsd_latg, dafsd_newi, etc). Again, to my understanding, the sum of all the dafsd variables in each bin (sum) should be equal to the variation of afsd between two time step (dafsd) in that bin. Here's a table of all the raw dafsd variables, the sum and the variation of the afsd for the two first timestep at a specific point in the Arctic Ocean. As you can see, the sum is never equal to dafsd.

1664221350083.png

I hope that I managed to be clear, feel free to ask for clarification.

If anyone have encountered simular issues please let me know.

Cheers,

Benjamin Ward
 

dbailey

CSEG and Liaisons
Staff member
Thanks Benjamin for this careful analysis. Many of us have not really looked at the FSD in CICE. I will mention to Lettie Roach.
 

lettier

Lettie Roach
New Member
Hi Ben,

As stated in the manual, it isn't recommended to use the FSD without any waves, as the waves have such a big impact on the FSD. The code runs with the FSD and without waves, but the FSD might look strange in this case.

Regarding the tendency terms-

As you know, for implementation in CICE, the continuous function for the joint floe size and thickness distribution f(r,h)dr dh is replaced with a product of two discrete variables, aicen(1:ncat) and afsdn(1:ncat, 1:nfsd).

afsdn(n,k) is the fraction of ice belonging to thickness category n with lateral floe size belonging to floe size class k, and it's unitless. (For the history output, I divided it by dr, so it has units 1/m in the history output.)

The floe size distribution f(r)dr is obtained by integrating over all thicknesses, f(r) = \int f(r,h) dh, or afsd(k) = SUM_n (aicen(:)*afsdn(:,k)). (Again, afsd(k) in the code is unitless, but for the history output, I divided it by dr, so it has units 1/m in the history output.)

For each of the 5 floe-size-modifying processes, I compute d_afsdn(n,k) - the change in afsdn resulting from that process. The sum of these should equal to the total change in afsdn(n,k) for each timestep. (I printed this out and checked that this the case in Icepack)

However, for the history output, I only save d_afsd(k). Saving d_afsdn(n,k) results in very large history output files, since they are 4-dimensional.

For example, d_afsd_latg(k) = SUM_n (aicen2(:)*afsdn2(k,:) - aicen1(:)*afsdn1(k,:) ), where 2 = after lateral growth and 1 = before lateral growth.

The FSD afsd is also affected by aicen, so the changes in afsd from the 5 floe-size-modifying processes alone do not add up to the total change in afsd. That is also affected by other dynamics and thermodynamics. I will put in a PR to clarify this in the documentation.

If you wanted, it should be straightforward to add the dafsdn tendency terms back in to the history output. Just follow what is done for afsdn.

Best,
Lettie
 

dbailey

CSEG and Liaisons
Staff member
Hi there.

Just an update. I am about to commit an Icepack driver fix for the FSD output. Not sure if this is in the CICE driver yet. More later.
 
Top