Changing the albedo in CSIM4 Julie Schramm CCSM Software Engineering Group
What is in the albedo parameterization? Surfaces: dry snow, melting snow, bare ice, open ocean Properties –two spectral intervals: VIS, NIR –Direct and diffuse –Melt ponds are crudely approximated using (T s ) for the bare ice albedo Dependencies –Snow thickness, ice thickness, surface temperature Calculated at each ocean grid point, for each thickness category, then area-weighted
What’s not in the parameterization? Zenith angle dependence (direct = diffuse) Variations due to surface topography Snow age Explicit melt ponds
Control Run Albedo SurfaceVISNIRBB Dry Snow Wet Snow 0.88 min 0.55 min 0.72 min Bare Ice Melting Ice 0.71 min 0.29 min 0.51 min Open water NA 0.06
Source code residence $CSMROOT/models/ice/csim4/src/source Source code is in module ice_albedo.F –185 lines Contains subroutine albedos Modified source code should be put in a separate directory called src.ice in $SCRIPTS/$CASE/ Albedo parameterization described in Scientific Guide available at: User’s Guide also available here
real (kind=dbl_kind), parameter :: & albocn = 0.06 ! Ocean albedo. &, albicev = 0.78 ! Visible ice albedo for h > ahmax &, albicei = 0.36 ! Near-ir ice albedo for h > ahmax &, albsnowv = 0.98 ! Cold snow albedo, visible &, albsnowi = 0.70 ! Cold snow albedo, near IR. Simplest way to modify the albedo: Base albedos
Other albedo parameters real (kind=dbl_kind), parameter :: & snowpatch = 0.02 ! Parameter for fractional snow area Fractional area covered with snow : fs = hs/(hs + snowpatch) Represents that for relatively thin snow cover, there will be some areas of bare ice Value of 0.02 provides best match with SHEBA data
Other albedo parameters real (kind=dbl_kind), parameter :: & ahmax = 0.5! Thickness above which ice albedo is constant (m)
Temperature dependence parameters &, dT_mlt = 1! change in temp to give dalb_mlt albedo change (>0) &, dalb_mlt = ! albedo change per dT_mlt change in temp for ice &, dalb_mltv = ! albedo vis change per dT_mlt change in temp for snow &, dalb_mlti = ! albedo nir change per dT_mlt change in temp for snow
Beyond Basics Putting modifications into the do loop in ice_albedo.F Global grid is decomposed into local subdomains Subdomains are dimensioned imt_local x jmt_local The physical portion of a subdomain is dimensioned (ilo:ihi, jlo:jhi) When adding arrays to this loop, check the dimensions! do j=jlo,jhi do i=ilo,ihi. enddo imt_global jmt_global ilo:ihi jlo:jhi imt_local jmt_local ilo:ihi jlo:jhi
Troubleshooting The model won’t compile. For example, in ice.log file “ice_albedo.F”, (S) Entity fsnow has undefined type. –Verify that any arrays you’ve added to ice_albedo.F are accessible via one of the use statements. I changed some parameters in ice_albedo.F, but the answers aren’t changing… –Be sure to delete all files in /ptmp/$LOGNAME/$CASE/ice/obj and recompile. I’m getting funny lines in the albedo field… –Make sure that any arrays you add to the do loop are indexed as (ilo:ihi, jlo:jhi) or (imt_local, jmt_local), not (imt_global, jmt_global).