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

Total Albedo

simondriscoll

Simon Driscoll
Member
I would like to calculate/output a few diagnostics, one of which is total albedo. The documentation states that "total albedo is an area-weighted average of the ice and snow albedos, where the fractional snow-covered area is..." 2.7. Thermodynamics — Icepack documentation

Can I confirm that this means (where aice = ice fraction i.e. total fractional ice coverage of a grid cell)

total albedo = (snowfrac * albsno) + ((aice-snowfrac)*albice) + (apeff_ai*albpnd)

or 'in English':

total albedo = (snow_fraction * snow albedo) + ((ice fraction-snow_fraction) *ice albedo) + (effective pond area 'fraction' * pond albedo)

I.e. snow can sit on the ice, therefore ice area is only the area of bare ice which I assume is calculated by (aice-snow_fraction)

This reasoning is from:

(Icepack Documentation "Radiatively, the surface of an ice category is divided into fractions of snow, pond and bare ice. In these melt pond schemes, the actual pond area and depth are maintained throughout the simulation according to the physical processes acting on it. However, snow on the sea ice and pond ice may shield the pond and ice below from solar radiation. ... Effective pond area and pond depth for each thickness category are passed to the radiation scheme for calculating albedo. ... The snow-and-ice albedo, albsni, and diagnostic albedos albice, albsno, and albpnd are merged over categories but not scaled (divided) by the total ice area. (This is a change from CICE v4.1 for albsni.) The latter three history variables represent completely bare or completely snow- or melt-pond-covered ice; that is, they do not take into account the snow or melt pond fraction.")

etc.

Furthermore, the documentation states that "Table Biogeochemical History variables lists the biogeochemical tracer history flags along with a short description and the variable or variables saved. Not listed are flags appended with _ai, i.e. f_fbio_ai. These fields are identical to their counterpart. i.e. f_fbio, except they are averaged by ice area."

Does this imply that apeff_ai (which I do not think is a biogeochemical variable, but nonetheless has an "_ai" appended) needs to be multiplied by the ice area then divided by the grid cell area so that all three (I think) then are fractional areas of a grid cell (apeff_ai being the fractional area of ponds relative to the ice area I think?)?
 

dbailey

CSEG and Liaisons
Staff member
I'm trying to unpack this message. I believe for the radiation, the fractions of snow, bare ice, and pond should always add up to 1. The radiation code is agnostic to the total ice fraction (aice) in a cell. The _ai variables is always confusing. Internally in the model we have category variables like apeffn where the n indicates subgridscale thickness category. So, apeff is:

apeff = sum(apeffn(n)*aicen(n)) / sum(aicen(n)), n=1,ncat

So, it is a weighted average value of the effective pond area. Now, apeff_ai is just:

apeff_ai = apeff * aice

So, this removes the weighted average and is only the merged effective pond area where there is ice.

Dave
 

simondriscoll

Simon Driscoll
Member
Hi David,

thanks for your speedy reply and help!

So you mean that

total albedo = (snowfrac*albsno)+((aice-snowfrac)*albice)+(apeff*albpnd) = (snowfrac*albsno)+((aice-snowfrac)*albice)+((apeff_ai/aice)*albpnd)

if I understand you correctly? (I hope!)
 

dbailey

CSEG and Liaisons
Staff member
Let's simplify a bit and stick with visible direct. So,

alvdr = albsno*snowfrac + apeff*albpnd + (1-apeff-albsno)*albice

Ice area does not come into this.
 

simondriscoll

Simon Driscoll
Member
Hi David, thank you, very much!

Given the model outputs aice already, and apeff_ai = apeff*aice (apeff = apeff_ai/aice), and to output apeff_ai one simply needs to add

use icedrv_flux, only: apeff_ai
...
write(nu_diag_out+n-1,900) 'effective pond area = ',apeff_ai(n)!

in the icedrv_diagnostics.F90 file (a longer process needs be done to output apeff), so outputting apeff_ai this becomes

alvdr = albsno*snowfrac + (apeff_ai/aice)*albpnd + (1-(apeff/aice)-albsno)*albice

i.e. equivalent to alvdr = albsno*snowfrac + apeff*albpnd + (1-apeff-albsno)*albice, please correct me if wrong. Otherwise thank you very much for your help! :)
 

dbailey

CSEG and Liaisons
Staff member
This is correct, except the second apeff in your equation should be apeff_ai. I thought we provided apeff as a history variable, but perhaps this is not on by default.
 

simondriscoll

Simon Driscoll
Member
Dear David,

apologies for my two typos. I believe I mean (and you took my typo for):

alvdr = albsno*snowfrac + (apeff_ai/aice)*albpnd + (1-(apeff_ai/aice)-snowfrac)*albice

(not alvdr = albsno*snowfrac + (apeff_ai/aice)*albpnd + (1-(apeff_ai/aice)-albsno)*albice

i.e. albsno-->snowfrac)

Apologies for this correction/question! I should have been more attentive when writing it.

Thanks.
 
Top