diff --git a/plasim/src/icemod.f90 b/plasim/src/icemod.f90 index 0210aee9..dd8add33 100644 --- a/plasim/src/icemod.f90 +++ b/plasim/src/icemod.f90 @@ -51,7 +51,7 @@ module icemod integer :: ngui = 0 ! switch for gui integer :: naout = 0 ! no additional output fields ! - real :: taunc = 0. ! time scale for newtonian cooling + real :: taunc = 0. ! time scale for newtonian cooling (in earth days) real :: xmind = 0.1 ! minimal ice thickness (m) real :: xmaxd = 9.0 ! maximal ice thickness (m; neg. = no limit) real :: thicec = 0.5 ! threshold to obtain make mask from comp. @@ -68,6 +68,7 @@ module icemod real :: xdt = 0. ! timestep (sec.) real :: cicemin = 0.5 ! minimum compactness to be ice real :: solar_day = 86400.0 ! length of day [sec] + real :: earth_solar_day = 86400.0 ! length of day [sec] ! ! global arrays ! @@ -321,7 +322,7 @@ subroutine iceini(kstep,krestart,koutput,kdpy,kgui,pts,psst,pmld & ! set time step ! xdt = solar_day / real(ntspd) - taunc = solar_day * taunc + taunc = earth_solar_day * taunc ! Physical constant expressed in EARTH days if (nrestart == 0) then ! read start file diff --git a/plasim/src/landmod.f90 b/plasim/src/landmod.f90 index 67ffda47..e90f2fc7 100644 --- a/plasim/src/landmod.f90 +++ b/plasim/src/landmod.f90 @@ -3,13 +3,11 @@ module landmod ! ! version identifier (date) ! - character(len=80) :: version = '22.02.2005 by Larry' + character(len=80) :: lversion = '22.02.2005 by Larry' ! ! parameters ! parameter(NLSOIL=5) - parameter(WSMAX_EARTH = 0.5) ! Initial value vor Earth - parameter(WSMAX_MARS = 0.0) ! Initial value for Mars ! ! namelist parameters ! @@ -24,6 +22,22 @@ module landmod real :: albsmaxf = 0.4 ! max. albedo for snow (with forest) real :: albgmin = 0.6 ! min. albedo for glaciers real :: albgmax = 0.8 ! max. albedo for glaciers + + ! lambda < 0.75 microns + real :: albsmin1 = 0.4 ! min. albedo for snow + real :: albsmax1 = 0.8 ! max. albedo for snow + real :: albsminf1 = 0.3 ! min. albedo for snow (with forest) + real :: albsmaxf1 = 0.4 ! max. albedo for snow (with forest) + real :: albgmin1 = 0.6 ! min. albedo for glaciers + real :: albgmax1 = 0.8 ! max. albedo for glaciers + ! lambda > 0.75 microns + real :: albsmin2 = 0.4 ! min. albedo for snow + real :: albsmax2 = 0.8 ! max. albedo for snow + real :: albsminf2 = 0.3 ! min. albedo for snow (with forest) + real :: albsmaxf2 = 0.4 ! max. albedo for snow (with forest) + real :: albgmin2 = 0.6 ! min. albedo for glaciers + real :: albgmax2 = 0.8 ! max. albedo for glaciers + real :: dz0land = 2.0 ! roughness length land real :: drhsland = 0.25 ! wetness factor land real :: drhsfull = 0.4 ! threshold above which drhs=1 [frac. of wsmax] @@ -31,7 +45,7 @@ module landmod real :: dztop = 0.20 ! thickness of the uppermost soil layer (m) real :: dsmax = 5.00 ! maximum snow depth (m-h20; -1 = no limit) - real :: wsmax = WSMAX_EARTH ! max field capacity of soil water (m) + real :: wsmax = 0.5 ! max field capacity of soil water (m) real :: dwatcini = 0 ! water content of soil (m) ! SIMBA - fixed parameters @@ -88,6 +102,11 @@ module landmod real :: dz0clim(NHOR) = 2.0 ! climatological z0 (total) real :: dz0climo(NHOR) = 0.0 ! climatological z0 (from topograhpy only) real :: dalbclim(NHOR) = 2.0 ! climatological background albedo + + real :: dalbcl1(NHOR,0:13) = 0.22 ! climatological background albedo (<.75 um) + real :: dalbcl2(NHOR,0:13) = 0.22 ! climatological background albedo (>.75 um) + real :: dalbclim1(NHOR) = 2.0 ! climatological background albedo (<.75 um) + real :: dalbclim2(NHOR) = 2.0 ! climatological background albedo (>.75 um) ! end module landmod @@ -122,15 +141,15 @@ function ncountsea(plsm) subroutine landini use landmod + use radmod ! ! initialize land surface ! namelist/landmod_nl/nlandt,nlandw,albland,dz0land,drhsland & - & ,albsmin,albsmax,albsminf,albsmaxf & - & ,albgmin,albgmax & + & ,dsnowalbmn,dsnowalbmx,dglacalbmn,dsnowalb & & ,dsmax,wsmax,drhsfull,dzglac,dztop,dsoilz & & ,rlue,co2conv,tau_veg,tau_soil & - & ,rnbiocats & + & ,rnbiocats,soilcap & & ,newsurf,rinifor,nwatcini,dwatcini ! dtclsoil(:) = tmelt @@ -139,14 +158,15 @@ subroutine landini dtcl(:,:) = tmelt dtclim(:) = tmelt - if (mars == 1) then - wsmax = WSMAX_MARS + wsmax=p_wsmax +! if (mars == 1) then +! wsmax = WSMAX_MARS ! nlandt = 0 ! nlandw = 0 ! dtclsoil(:) = tmelt_CO2 ! dsoilt(:,:) = tmelt_CO2 ! dsnowt(:) = tmelt_CO2 - endif +! endif if (mypid == NROOT) then open(12,file=landmod_namelist) @@ -159,6 +179,20 @@ subroutine landini write(nud,'("***********************************************")') write(nud,landmod_nl) close(12) + + albsmax1 = dsnowalbmx(1) + albgmax1 = dsnowalbmx(1) + albsmax2 = dsnowalbmx(2) + albgmax2 = dsnowalbmx(2) + albsmaxf1 = 0.5*albsmax1 + albsmaxf2 = 0.5*albsmax2 + albsmin1 = dsnowalbmn(1) + albsmin2 = dsnowalbmn(2) + albgmin1 = dglacalbmn(1) + albgmin2 = dglacalbmn(2) + albsminf1 = 0.75*albsmaxf1 + albsminf2 = 0.75*albsmaxf2 + endif if (wsmax < 0.0) wsmax = 0.0 ! Catch user error @@ -174,6 +208,22 @@ subroutine landini call mpbcr(albsmaxf) call mpbcr(albgmin) call mpbcr(albgmax) + + + call mpbcr(albsmin1) + call mpbcr(albsmax1) + call mpbcr(albsminf1) + call mpbcr(albsmaxf1) + call mpbcr(albgmin1) + call mpbcr(albgmax1) + + call mpbcr(albsmin2) + call mpbcr(albsmax2) + call mpbcr(albsminf2) + call mpbcr(albsmaxf2) + call mpbcr(albgmin2) + call mpbcr(albgmax2) + call mpbcr(dz0land) call mpbcr(drhsland) call mpbcr(drhsfull) @@ -190,10 +240,19 @@ subroutine landini call mpbcr(rnbiocats) call mpbcrn(dsoilz,NLSOIL) + call mpbcrn(dsnowalbmn,2) + call mpbcrn(dsnowalbmx,2) + call mpbcrn(dglacalbmn,2) + call mpbcrn(dsnowalb,2) + call mpbcrn(dgroundalb,2) + + ! scale taus from years to seconds - tau_veg = tau_veg * n_days_per_year * solar_day - tau_soil = tau_soil * n_days_per_year * solar_day +! tau_veg = tau_veg * n_days_per_year * solar_day +! tau_soil = tau_soil * n_days_per_year * solar_day + tau_veg = tau_veg * 86400 * 365 ! expressed in EARTH years + tau_soil = tau_soil * 86400 * 365 if (tau_veg < 1.0 .or. tau_soil < 1.0) then write(nud,*)' *** error: tau_veg = ',tau_veg,' tau_soil = ',tau_soil @@ -213,6 +272,8 @@ subroutine landini dz0clim(:) = dz0land dwmax(:) = wsmax dalbcl(:,:) = albland + dalbcl1(:,:) = dgroundalb(1) + dalbcl2(:,:) = dgroundalb(2) ! !* read surface parameters ! @@ -228,6 +289,8 @@ subroutine landini call mpsurfgp('dtcl',dtcl,NHOR,14) call mpsurfgp('dwcl',dwcl,NHOR,14) call mpsurfgp('dalbcl',dalbcl,NHOR,14) + call mpsurfgp('dalbcl1',dalbcl1,NHOR,14) + call mpsurfgp('dalbcl2',dalbcl2,NHOR,14) ! make sure, that dwmax is positive @@ -289,11 +352,25 @@ subroutine landini zalbmin=dforest(jhor)*albsminf+(1.-dforest(jhor))*albsmin zdalb=(zalbmax-zalbmin)*(dts(jhor)-263.16)/(tmelt-263.16) zalbsnow=MAX(zalbmin,MIN(zalbmax,zalbmax-zdalb)) + zalbmax1=dforest(jhor)*albsmaxf1+(1.-dforest(jhor))*albsmax1 + zalbmin1=dforest(jhor)*albsminf1+(1.-dforest(jhor))*albsmin1 + zdalb1=(zalbmax1-zalbmin1)*(dts(jhor)-263.16)/(tmelt-263.16) + zalbsnow1=MAX(zalbmin1,MIN(zalbmax1,zalbmax1-zdalb1)) + zalbmax2=dforest(jhor)*albsmaxf2+(1.-dforest(jhor))*albsmax2 + zalbmin2=dforest(jhor)*albsminf2+(1.-dforest(jhor))*albsmin2 + zdalb2=(zalbmax2-zalbmin2)*(dts(jhor)-263.16)/(tmelt-263.16) + zalbsnow2=MAX(zalbmin2,MIN(zalbmax2,zalbmax2-zdalb2)) dalb(jhor)=dalbclim(jhor) & & +(zalbsnow-dalbclim(jhor))*dsnow(jhor)/(dsnow(jhor)+0.01) + dsalb(1,jhor) = dalbclim1(jhor) & + & +(zalbsnow1-dalbclim1(jhor))*dsnow(jhor)/(dsnow(jhor)+0.01) + dsalb(2,jhor) = dalbclim2(jhor) & + & +(zalbsnow2-dalbclim2(jhor))*dsnow(jhor)/(dsnow(jhor)+0.01) drhs(jhor)=1. else dalb(jhor)=dalbclim(jhor) + dsalb(1,jhor)=dalbclim1(jhor) + dsalb(2,jhor)=dalbclim2(jhor) if (dwmax(jhor) > 0.0) & drhs(jhor)=AMIN1(1.,dwatc(jhor)/(drhsfull*dwmax(jhor))) endif @@ -315,7 +392,11 @@ subroutine landini dsnowz(jhor)=AMAX1(dsmax,0.) dsnow(jhor)=dsnowz(jhor) zdalb=(albgmax-albgmin)*(dts(jhor)-263.16)/(tmelt-263.16) + zdalb1=(albgmax1-albgmin1)*(dts(jhor)-263.16)/(tmelt-263.16) + zdalb2=(albgmax2-albgmin2)*(dts(jhor)-263.16)/(tmelt-263.16) dalb(jhor)=MAX(albgmin,MIN(albgmax,albgmax-zdalb)) + dsalb(1,jhor)=MAX(albgmin1,MIN(albgmax1,albgmax1-zdalb1)) + dsalb(2,jhor)=MAX(albgmin2,MIN(albgmax2,albgmax2-zdalb2)) drhs(jhor)=1.0 end if @@ -348,6 +429,8 @@ subroutine landini call mpgetgp('dz0clim' ,dz0clim ,NHOR, 1) call mpgetgp('dz0climo',dz0climo,NHOR, 1) call mpgetgp('dalbcl' ,dalbcl ,NHOR, 14) + call mpgetgp('dalbcl1' ,dalbcl1 ,NHOR, 14) + call mpgetgp('dalbcl2' ,dalbcl2 ,NHOR, 14) n_sea_points = ncountsea(dls) @@ -362,6 +445,8 @@ subroutine landini dwmax(:) = wsmax dz0clim(:) = dz0land dalbcl(:,:) = albland + dalbcl1(:,:) = dgroundalb(1) + dalbcl2(:,:) = dgroundalb(2) dwcl(:,:) = wsmax * drhsfull * drhsland endif @@ -412,11 +497,25 @@ subroutine landstep zalbmin=dforest(jhor)*albsminf+(1.-dforest(jhor))*albsmin zdalb=(zalbmax-zalbmin)*(dts(jhor)-263.16)/(tmelt-263.16) zalbsnow=MAX(zalbmin,MIN(zalbmax,zalbmax-zdalb)) + zalbmax1=dforest(jhor)*albsmaxf1+(1.-dforest(jhor))*albsmax1 + zalbmin1=dforest(jhor)*albsminf1+(1.-dforest(jhor))*albsmin1 + zdalb1=(zalbmax1-zalbmin1)*(dts(jhor)-263.16)/(tmelt-263.16) + zalbsnow1=MAX(zalbmin1,MIN(zalbmax1,zalbmax1-zdalb1)) + zalbmax2=dforest(jhor)*albsmaxf2+(1.-dforest(jhor))*albsmax2 + zalbmin2=dforest(jhor)*albsminf2+(1.-dforest(jhor))*albsmin2 + zdalb2=(zalbmax2-zalbmin2)*(dts(jhor)-263.16)/(tmelt-263.16) + zalbsnow2=MAX(zalbmin2,MIN(zalbmax2,zalbmax2-zdalb2)) dalb(jhor)=dalbclim(jhor) & & +(zalbsnow-dalbclim(jhor))*dsnow(jhor)/(dsnow(jhor)+0.01) + dsalb(1,jhor) = dalbclim1(jhor) & + & +(zalbsnow1-dalbclim1(jhor))*dsnow(jhor)/(dsnow(jhor)+0.01) + dsalb(2,jhor) = dalbclim2(jhor) & + & +(zalbsnow2-dalbclim2(jhor))*dsnow(jhor)/(dsnow(jhor)+0.01) drhs(jhor)=1. else dalb(jhor)=dalbclim(jhor) + dsalb(1,jhor)=dalbclim1(jhor) + dsalb(2,jhor)=dalbclim2(jhor) if (dwmax(jhor) > 0.0) & drhs(jhor)=AMIN1(1., dwatc(jhor)/(drhsfull *dwmax(jhor))) endif @@ -454,6 +553,10 @@ subroutine landstep where(dglac(:) > 0.5 .and. dls(:) > 0.0) dalb(:)=MAX(albgmin,MIN(albgmax & & ,albgmax-(albgmax-albgmin)*(dts(:)-263.16)/(tmelt-263.16))) + dsalb(1,:)=MAX(albgmin1,MIN(albgmax1 & + & ,albgmax1-(albgmax1-albgmin1)*(dts(:)-263.16)/(tmelt-263.16))) + dsalb(2,:)=MAX(albgmin2,MIN(albgmax2 & + & ,albgmax2-(albgmax2-albgmin2)*(dts(:)-263.16)/(tmelt-263.16))) drhs(:)=1.0 end where @@ -488,6 +591,8 @@ subroutine landstop call mpputgp('dz0clim' ,dz0clim ,NHOR, 1) call mpputgp('dz0climo',dz0climo,NHOR, 1) call mpputgp('dalbcl' ,dalbcl ,NHOR,14) + call mpputgp('dalbcl1' ,dalbcl1 ,NHOR,14) + call mpputgp('dalbcl2' ,dalbcl2 ,NHOR,14) return end subroutine landstop @@ -1354,6 +1459,8 @@ subroutine getalb call momint(nperpetual,nstep+1,jm1,jm2,zgw2) zgw1 = 1.0 - zgw2 dalbclim(:)=zgw1*dalbcl(:,jm1)+zgw2*dalbcl(:,jm2) + dalbclim1(:)=zgw1*dalbcl1(:,jm1)+zgw2*dalbcl1(:,jm2) + dalbclim2(:)=zgw1*dalbcl2(:,jm1)+zgw2*dalbcl2(:,jm2) return end subroutine getalb diff --git a/plasim/src/make_plasim b/plasim/src/make_plasim index 3f0c17a4..61f847f1 100644 --- a/plasim/src/make_plasim +++ b/plasim/src/make_plasim @@ -31,7 +31,7 @@ LANDMOD=landmod OCEAN=lsgmod OCEANCOUP=cpl -OBJ=${MPIMOD}.o ${FFTMOD}.o ${GUIMOD}.o ${RAINMOD}.o ${VEGMOD}.o ${PLAMOD}.o resmod.o plasim.o plasimmod.o calmod.o gaussmod.o legmod.o outmod.o miscmod.o fluxmod.o radmod.o surfmod.o ${LANDMOD}.o seamod.o icemod.o oceanmod.o restartmod.o tracermod.o tpcore.o trc_routines.o ${PUMAX}.o ${OCEAN}.o ${OCEANCOUP}.o +OBJ=${MPIMOD}.o ${FFTMOD}.o ${GUIMOD}.o ${RAINMOD}.o ${VEGMOD}.o ${PLAMOD}.o resmod.o plasim.o plasimmod.o calmod.o gaussmod.o legmod.o outmod.o miscmod.o fluxmod.o radmod.o surfmod.o ${LANDMOD}.o seamod.o icemod.o oceanmod.o restartmod.o specblock.o tracermod.o tpcore.o trc_routines.o ${PUMAX}.o ${OCEAN}.o ${OCEANCOUP}.o plasim.x: $(OBJ) $(MOST_F90) -o plasim.x $(MOST_F90_OPTS) $(OBJ) ${GUILIB} @@ -52,12 +52,13 @@ legmod.o: legmod.f90 plasimmod.o outmod.o: outmod.f90 plasimmod.o miscmod.o: miscmod.f90 plasimmod.o fluxmod.o: fluxmod.f90 plasimmod.o -radmod.o: radmod.f90 plasimmod.o +radmod.o: radmod.f90 plasimmod.o specblock.o surfmod.o: surfmod.f90 plasimmod.o seamod.o: seamod.f90 plasimmod.o icemod.o: icemod.f90 plasimmod.o oceanmod.o: oceanmod.f90 plasimmod.o restartmod.o: restartmod.f90 +specblock.o: specblock.f90 tracermod.o: tracermod.f90 plasimmod.o tpcore.o: tpcore.f90 trc_routines.o: trc_routines.f90 diff --git a/plasim/src/oceanmod.f90 b/plasim/src/oceanmod.f90 index 6287217d..3b7ad242 100644 --- a/plasim/src/oceanmod.f90 +++ b/plasim/src/oceanmod.f90 @@ -22,7 +22,6 @@ module oceanmod parameter(CPS=4180.) ! Specific heat of sea water (J/kg*K) parameter(CLFI = 3.28E5) ! Heat of fusion of ice (J/kg) parameter(TFREEZE=271.25) ! Freezing point (K) - parameter(PLARAD=6.371E6) ! Earth radius (m) parameter(PI = 3.14159265359D0) ! PI ! ! namelist parameter @@ -65,6 +64,7 @@ module oceanmod ! real :: dtmix ! time step (s) real :: solar_day = 86400.0 ! 24 * 60 * 60 (for Earth) + real :: earth_solar_day = 86400.0 ! 24 * 60 * 60 (for Earth) ! real :: dlam ! delta longitude real :: dphi(NLAT) ! delta latitude @@ -246,7 +246,7 @@ subroutine oceanini(kstep,krestart,koutput,kdpy,kgui,psst,pmld & ! ! compute taunc in s ! - taunc = solar_day * taunc + taunc = earth_solar_day * taunc ! expressed in EARTH days ! if (nrestart == 0) then ! new start (read start file) call mpsurfgp('yls',yls,NHOR,1) @@ -1295,6 +1295,8 @@ subroutine vdiffo(psst) subroutine hdiffo(psst) use oceanmod + use pumamod, only: plarad + parameter(nsub=100) ! real(kind=8) :: psst(NHOR,NLEV_OCE) diff --git a/plasim/src/outmod.f90 b/plasim/src/outmod.f90 index 6b95e11a..97027b0f 100644 --- a/plasim/src/outmod.f90 +++ b/plasim/src/outmod.f90 @@ -27,6 +27,10 @@ subroutine outini zsig(:) = 0.0 ! initialize zsig(1:NLEV) = sigmah(:) ! vertical coordinate table zsig(NLEV+1) = n_days_per_year + zsig(NLEV+2) = plarad + zsig(NLEV+3) = ga + zsig(NLEV+4) = gascon + zsig(NLEV+5) = alr open (40,file=plasim_output,form='unformatted') write (40) ihead(:) diff --git a/plasim/src/p_earth.f90 b/plasim/src/p_earth.f90 index cd5b1323..92feae4b 100644 --- a/plasim/src/p_earth.f90 +++ b/plasim/src/p_earth.f90 @@ -11,14 +11,14 @@ subroutine planet_ini namelist /planet_nl/ nfixorb, eccen, mvelp, obliq & , rotspd, sidereal_day, solar_day & - , sidereal_year, tropical_year & +! , sidereal_year, tropical_year & , akap, alr, gascon, ra1, ra2, ra4 & - , pnu, ga, plarad & + , pnu, ga, plarad, psurf & , gsol0 & - , yplanet + , yplanet,p_wsmax,tl_substellar,ltidally_locked yplanet = "Earth" ! Planet name -nplanet = 3 ! 3rd. stone from the sun +! nplanet = 3 ! 3rd. stone from the sun ! ********* ! Astronomy @@ -26,12 +26,15 @@ subroutine planet_ini eccen = 0.016715 ! Eccentricity (AMIP-II value) mvelp = 102.7 ! Longitude of perihelion +nfixorb = 0 ! use Berger orbits obliq = 23.441 ! Obliquity [deg] (AMIP-II) rotspd = 1.0 ! Rotation speed (factor) sidereal_day = 86164.0916 ! 23h 56m 04s solar_day = 86400.0 ! 24h 00m 00s -sidereal_year = 31558149.0 ! 365d 06h 09m 09s -tropical_year = 31556956.0 ! 365d 05h 49m 16s +!sidereal_year = 31558149.0 ! 365d 06h 09m 09s +!tropical_year = 31556956.0 ! 365d 05h 49m 16s +ltidally_locked = .false. +tl_substellar = 180.0 ! ********** ! Atmosphere @@ -40,15 +43,26 @@ subroutine planet_ini akap = 0.286 ! Kappa (Poisson constant R/Cp) alr = 0.0065 ! Lapse rate gascon = 287.0 ! Gas constant +psurf = 101100.0 ! Mean surface pressure [Pa] ra1 = 610.78 ! Parameter for Magnus-Teten-Formula ra2 = 17.2693882 ! for saturation vapor pressure ra4 = 35.86 ! over liquid water +tgr = 288.0 ! mean ground temperature + +! ******** +! Calendar +! ******** + +n_days_per_month = 30 ! +n_days_per_year = 360 ! set to 365 for real calendar ! ******** ! Numerics ! ******** -pnu = 0.1 ! Time filter constant +ndivdamp = 0 ! Initial start divergence damping +pnu = 0.1 ! Time filter constant +oroscale = 1.0 ! Scale orography ! ******* ! Physics @@ -62,6 +76,13 @@ subroutine planet_ini ! ********* gsol0 = 1365.0 ! Solar constant +no3 = 1 ! switch for ozone (0=no,1=yes,2=datafile) + +! ********* +! Land +! ********* + +p_wsmax = 0.5 ! Maximum field capacity (m) ! ******** ! Namelist @@ -88,17 +109,17 @@ subroutine planet_ini subroutine print_planet use radmod -p_mass = 5.9736 ! [10^24 kg] -p_volume = 108.321 ! [10^10 km3] -p_radius_eq = 6378.0 ! Equatorial radius -p_radius_po = 6356.0 ! Polar radius -p_ellipticity = 0.0034 ! Ellipticity -p_density = 5520.0 ! [kg/m3] -p_albedo = 0.385 ! Bond albedo -p_blackt = 247.3 ! Black body temperature -p_perihelion = 147.1 ! Perihelion [10^6 km] -p_aphelion = 152.1 ! Aphelion [10^6 km] -p_sidorbit = sidereal_year / sidereal_day ! Sidereal orbit period +!p_mass = 5.9736 ! [10^24 kg] +!p_volume = 108.321 ! [10^10 km3] +!p_radius_eq = 6378.0 ! Equatorial radius +!p_radius_po = 6356.0 ! Polar radius +!p_ellipticity = 0.0034 ! Ellipticity +!p_density = 5520.0 ! [kg/m3] +!p_albedo = 0.385 ! Bond albedo +!p_blackt = 247.3 ! Black body temperature +!p_perihelion = 147.1 ! Perihelion [10^6 km] +!p_aphelion = 152.1 ! Aphelion [10^6 km] +!p_sidorbit = sidereal_year / sidereal_day ! Sidereal orbit period write(nud,4000) write(nud,1000) @@ -106,21 +127,24 @@ subroutine print_planet write(nud,1000) write(nud,2000) 'Parameter','Units','Value' write(nud,1000) -write(nud,3000) 'Mass' ,'[10^24 kg]' ,p_mass -write(nud,3000) 'Volume' ,'[10^10 km3]' ,p_volume -write(nud,3000) 'Equatorial radius','[km]' ,p_radius_eq -write(nud,3000) 'Polar radius' ,'[km]' ,p_radius_po +!write(nud,3000) 'Mass' ,'[10^24 kg]' ,p_mass +!write(nud,3000) 'Volume' ,'[10^10 km3]' ,p_volume +!write(nud,3000) 'Equatorial radius','[km]' ,p_radius_eq +!write(nud,3000) 'Polar radius' ,'[km]' ,p_radius_po write(nud,3000) 'Mean radius' ,'[km]' ,plarad/1000.0 -write(nud,3000) 'Ellipticity' ,' ' ,p_ellipticity -write(nud,3000) 'Mean density' ,'[kg/m3]' ,p_density +!write(nud,3000) 'Ellipticity' ,' ' ,p_ellipticity +!write(nud,3000) 'Mean density' ,'[kg/m3]' ,p_density write(nud,3000) 'Surface gravity' ,'[m/s2]' ,ga -write(nud,3000) 'Bond albedo' ,' ' ,p_albedo +!write(nud,3000) 'Bond albedo' ,' ' ,p_albedo write(nud,3000) 'Solar irradiance' ,'[W/m2]' ,gsol0 -write(nud,3000) 'Black-body temperature','[K]' ,p_blackt -write(nud,3000) 'Sidereal orbit period' ,'[days]' ,p_sidorbit +!write(nud,3000) 'Black-body temperature','[K]' ,p_blackt +!write(nud,3000) 'Sidereal orbit period' ,'[days]' ,p_sidorbit write(nud,3000) 'Sidereal rotation period','[h]' ,sidereal_day/3600.0 -write(nud,3000) 'Perihelion' ,'[10^6 km]' ,p_perihelion -write(nud,3000) 'Aphelion' ,'[10^6 km]' ,p_aphelion +!write(nud,3000) 'Perihelion' ,'[10^6 km]' ,p_perihelion +!write(nud,3000) 'Aphelion' ,'[10^6 km]' ,p_aphelion +write(nud,3000) 'Mean surface pressure' ,'[Pa]' ,psurf +write(nud,1000) +write(nud,4000) if (nfixorb /= 0) then write(nud,3010) 'Using fixed orbit' ,' ' diff --git a/plasim/src/p_exo.f90 b/plasim/src/p_exo.f90 index b63d0313..7d698eee 100644 --- a/plasim/src/p_exo.f90 +++ b/plasim/src/p_exo.f90 @@ -11,61 +11,79 @@ subroutine planet_ini namelist /planet_nl/ nfixorb, eccen, mvelp, obliq & , rotspd, sidereal_day, solar_day & - , sidereal_year, tropical_year & - , akap, alr, alv, als, gascon, ra1, ra2, ra4, tmelt & - , pnu, ga, plarad & + , akap, alr, gascon, ra1, ra2, ra4 & + , pnu, ga, plarad, psurf & , gsol0 & - , yplanet + , yplanet,p_wsmax,tl_substellar,ltidally_locked +! , sidereal_year, tropical_year & yplanet = "Exo" ! Planet name -nplanet = 1 +!nplanet = 1 ! ********* ! Astronomy ! ********* -eccen = 0.016715 ! Eccentricity (AMIP-II value) +eccen = 0.016715 ! Eccentricity (AMIP-II value) (GM) mvelp = 102.7 ! Longitude of perihelion -obliq = 23.441 ! Obliquity [deg] (AMIP-II) -rotspd = 1.0 ! Rotation speed (factor) -sidereal_day = 86164.0916 ! 23h 56m 04s -solar_day = 86400.0 ! 24h 00m 00s -sidereal_year = 31558149.0 ! 365d 06h 09m 09s -tropical_year = 31556956.0 ! 365d 05h 49m 16s +nfixorb = 1 ! Don't use Berger orbits +obliq = 23.441 ! Obliquity [deg] (AMIP-II) (GM) +rotspd = 1.0 ! Rotation speed (factor) (JJ useful?) +sidereal_day = 86164.0916 ! 23h 56m 04sa (GM) +solar_day = 86400.0 ! 24h 00m 00s (should be derived JJ) +!sidereal_year = 31558149.0 ! 365d 06h 09m 09s (GM) +!tropical_year = 31556956.0 ! 365d 05h 49m 16s +ltidally_locked = .false. +tl_substellar = 180.0 ! ********** ! Atmosphere ! ********** -akap = 0.286 ! Kappa (Poisson constant R/Cp) +akap = 0.286 ! Kappa (Poisson constant R/Cp) alr = 0.0065 ! Lapse rate -als = 2.8345E6 ! Latent heat of sublimation -alv = 2.5008E6 ! Latent heat of vaporization gascon = 287.0 ! Gas constant +psurf = 101100.0 ! Mean surface pressure [Pa] (GM) ra1 = 610.78 ! Parameter for Magnus-Teten-Formula ra2 = 17.2693882 ! for saturation vapor pressure ra4 = 35.86 ! over liquid water -tmelt = 273.16 ! Melting point (H2O) +tgr = 288.0 ! mean ground temperature + +! ******** +! Calendar +! ******** + +n_days_per_month = 30 ! +n_days_per_year = 360 ! if set to 365 uses real Earth calendar ! ******** ! Numerics ! ******** -pnu = 0.1 ! Time filter constant +ndivdamp = 0 ! Initial start divergence damping +pnu = 0.1 ! Time filter constant +oroscale = 1.0 ! Scale orography ! ******* ! Physics ! ******* -ga = 9.80665 ! Gravity (mean on NN) -plarad = 6371220.0 ! Radius +ga = 9.80665 ! Gravity (mean on NN) (GM) +plarad = 6371220.0 ! Radius (GM) ! ********* ! Radiation ! ********* -gsol0 = 1365.0 ! Solar constant +gsol0 = 1365.0 ! Solar constant (GM) +no3 = 1 ! switch for ozone (0=no,1=yes,2=datafile) + +! ********* +! Land +! ********* + +p_wsmax = 0.5 ! Maximum field capacity (m) ! ******** ! Namelist @@ -92,17 +110,7 @@ subroutine planet_ini subroutine print_planet use radmod -p_mass = 5.9736 ! [10^24 kg] -p_volume = 108.321 ! [10^10 km3] -p_radius_eq = 6378.0 ! Equatorial radius -p_radius_po = 6356.0 ! Polar radius -p_ellipticity = 0.0034 ! Ellipticity -p_density = 5520.0 ! [kg/m3] -p_albedo = 0.385 ! Bond albedo -p_blackt = 247.3 ! Black body temperature -p_perihelion = 147.1 ! Perihelion [10^6 km] -p_aphelion = 152.1 ! Aphelion [10^6 km] -p_sidorbit = sidereal_year / sidereal_day ! Sidereal orbit period +!p_sidorbit = sidereal_year / sidereal_day ! Sidereal orbit period write(nud,4000) write(nud,1000) @@ -110,21 +118,14 @@ subroutine print_planet write(nud,1000) write(nud,2000) 'Parameter','Units','Value' write(nud,1000) -write(nud,3000) 'Mass' ,'[10^24 kg]' ,p_mass -write(nud,3000) 'Volume' ,'[10^10 km3]' ,p_volume -write(nud,3000) 'Equatorial radius','[km]' ,p_radius_eq -write(nud,3000) 'Polar radius' ,'[km]' ,p_radius_po write(nud,3000) 'Mean radius' ,'[km]' ,plarad/1000.0 -write(nud,3000) 'Ellipticity' ,' ' ,p_ellipticity -write(nud,3000) 'Mean density' ,'[kg/m3]' ,p_density write(nud,3000) 'Surface gravity' ,'[m/s2]' ,ga -write(nud,3000) 'Bond albedo' ,' ' ,p_albedo write(nud,3000) 'Solar irradiance' ,'[W/m2]' ,gsol0 -write(nud,3000) 'Black-body temperature','[K]' ,p_blackt -write(nud,3000) 'Sidereal orbit period' ,'[days]' ,p_sidorbit +!write(nud,3000) 'Sidereal orbit period' ,'[days]' ,p_sidorbit write(nud,3000) 'Sidereal rotation period','[h]' ,sidereal_day/3600.0 -write(nud,3000) 'Perihelion' ,'[10^6 km]' ,p_perihelion -write(nud,3000) 'Aphelion' ,'[10^6 km]' ,p_aphelion +write(nud,3000) 'Mean surface pressure' ,'[Pa]' ,psurf +write(nud,1000) +write(nud,4000) if (nfixorb /= 0) then write(nud,3010) 'Using fixed orbit' ,' ' diff --git a/plasim/src/p_mars.f90 b/plasim/src/p_mars.f90 index 83f4f8bf..8f274500 100644 --- a/plasim/src/p_mars.f90 +++ b/plasim/src/p_mars.f90 @@ -11,15 +11,14 @@ subroutine planet_ini namelist /planet_nl/ nfixorb, eccen, mvelp, obliq & , rotspd, sidereal_day, solar_day & - , sidereal_year, tropical_year & +! , sidereal_year, tropical_year & , akap, alr, gascon, ra1, ra2, ra4 & - , pnu, ga, plarad & + , pnu, ga, plarad, psurf & , gsol0 & - , yplanet + , yplanet,p_wsmax,tl_substellar,ltidally_locked yplanet = "Mars" ! Planet name -nplanet = 4 ! Planet index -mars = 1 ! Switch +!nplanet = 4 ! Planet index ! ********* ! Astronomy @@ -32,9 +31,10 @@ subroutine planet_ini rotspd = 1.0 ! Rotation speed (factor) sidereal_day = 88642.663 ! 24h 37m 22s solar_day = 88775.24409 ! 24h 39m 35s -sidereal_year = 59355072.0 ! 687d (Earth days) -tropical_year = 59355048.3 ! 686d (Earth days) - +!sidereal_year = 59355072.0 ! 687d (Earth days) +!tropical_year = 59355048.3 ! 686d (Earth days) +ltidally_locked = .false. +tl_substellar = 180.0 ! ********** ! Atmosphere @@ -76,7 +76,13 @@ subroutine planet_ini ! ********* gsol0 = 595.0 ! Solar constant -no3 = 0.0 ! No ozone +no3 = 0 ! No ozone + +! ********* +! Land +! ********* + +p_wsmax = 0. ! Maximum field capacity (m) ! ******** ! Namelist @@ -103,20 +109,20 @@ subroutine planet_ini subroutine print_planet use radmod -p_mass = 0.6419 ! [10^24 kg] -p_volume = 16.318 ! [10^10 km3] -p_radius_eq = 3393.0 ! Equatorial radius -p_radius_po = 3373.0 ! Polar radius -p_radius_me = 3390.0 ! Mean radius -p_ellipticity = 0.0065 ! Ellipticity -p_density = 3933.0 ! [kg/m3] -p_albedo = 0.16 ! Bond albedo -p_blackt = 216.6 ! Black body temperature -p_sidrot = 24.6229 ! Sidereal rotation period -p_inclination = 23.98 ! Equatorial inclination -p_perihelion = 206.6 ! Perihelion [10^6 km] -p_aphelion = 249.2 ! Aphelion [10^6 km] -p_sidorbit = sidereal_year / sidereal_day ! Sidereal orbit period +!p_mass = 0.6419 ! [10^24 kg] +!p_volume = 16.318 ! [10^10 km3] +!p_radius_eq = 3393.0 ! Equatorial radius +!p_radius_po = 3373.0 ! Polar radius +!p_radius_me = 3390.0 ! Mean radius +!p_ellipticity = 0.0065 ! Ellipticity +!p_density = 3933.0 ! [kg/m3] +!p_albedo = 0.16 ! Bond albedo +!p_blackt = 216.6 ! Black body temperature +!p_sidrot = 24.6229 ! Sidereal rotation period +!p_inclination = 23.98 ! Equatorial inclination +!p_perihelion = 206.6 ! Perihelion [10^6 km] +!p_aphelion = 249.2 ! Aphelion [10^6 km] +!p_sidorbit = sidereal_year / sidereal_day ! Sidereal orbit period write(nud,4000) write(nud,1000) @@ -124,34 +130,45 @@ subroutine print_planet write(nud,1000) write(nud,2000) 'Parameter','Units','Value' write(nud,1000) -write(nud,3000) 'Mass' ,'[10^24 kg]' ,p_mass -write(nud,3000) 'Volume' ,'[10^10 km3]' ,p_volume -write(nud,3000) 'Equatorial radius','[km]' ,p_radius_eq -write(nud,3000) 'Polar radius' ,'[km]' ,p_radius_po -write(nud,3000) 'Mean radius' ,'[km]' ,p_radius_me -write(nud,3000) 'Ellipticity' ,' ' ,p_ellipticity -write(nud,3000) 'Mean density' ,'[kg/m3]' ,p_density +!write(nud,3000) 'Mass' ,'[10^24 kg]' ,p_mass +!write(nud,3000) 'Volume' ,'[10^10 km3]' ,p_volume +!write(nud,3000) 'Equatorial radius','[km]' ,p_radius_eq +!write(nud,3000) 'Polar radius' ,'[km]' ,p_radius_po +write(nud,3000) 'Mean radius' ,'[km]' ,plarad/1000.0 +!write(nud,3000) 'Ellipticity' ,' ' ,p_ellipticity +!write(nud,3000) 'Mean density' ,'[kg/m3]' ,p_density write(nud,3000) 'Surface gravity' ,'[m/s2]' ,ga -write(nud,3000) 'Bond albedo' ,' ' ,p_albedo +!write(nud,3000) 'Bond albedo' ,' ' ,p_albedo write(nud,3000) 'Solar irradiance' ,'[W/m2]' ,gsol0 -write(nud,3000) 'Black-body temperature','[K]' ,p_blackt -write(nud,3000) 'Sidereal orbit period' ,'[days]' ,p_sidorbit -write(nud,3000) 'Sidereal rotation period','[hrs]',p_sidrot -write(nud,3000) 'Equatorial inclination' ,'[deg]',p_inclination -write(nud,3000) 'Perihelion' ,'[10^6 km]' ,p_perihelion -write(nud,3000) 'Aphelion' ,'[10^6 km]' ,p_aphelion -write(nud,3000) 'Orbit eccentricity' ,' ' ,eccen -write(nud,3000) 'Gas constant' ,' ' ,gascon -write(nud,3000) 'Mean surface pressure' ,'[Pa]' ,psurf +!write(nud,3000) 'Black-body temperature','[K]' ,p_blackt +!write(nud,3000) 'Sidereal orbit period' ,'[days]' ,p_sidorbit +write(nud,3000) 'Sidereal rotation period','[h]' ,sidereal_day/3600.0 +!write(nud,3000) 'Perihelion' ,'[10^6 km]' ,p_perihelion +!write(nud,3000) 'Aphelion' ,'[10^6 km]' ,p_aphelion +write(nud,3000) 'Mean surface pressure' ,'[Pa]' ,psurf write(nud,1000) write(nud,4000) +if (nfixorb /= 0) then + write(nud,3010) 'Using fixed orbit' ,' ' + write(nud,3000) 'Longitude of perihelion' ,'[deg]' ,mvelp + write(nud,3000) 'Equatorial inclination' ,'[deg]' ,obliq + write(nud,3000) 'Orbit eccentricity' ,' ' ,eccen +else + write(nud,3010) 'Using Berger orbit' ,'nfixorb=0' +endif + +write(nud,3000) 'Rotation factor' ,' ' ,rotspd +write(nud,3000) 'Gas constant' ,' ' ,gascon +write(nud,1000) +write(nud,4000) return 1000 format(50('*')) 1100 format('* ',a24,1x,a21,' *') 2000 format('* ',a24,1x,a11,a10,' *') 3000 format('* ',a24,1x,a11,f10.4,' *') + 3010 format('* ',a24,1x,a11,10x ,' *') 4000 format(/) end diff --git a/plasim/src/plasim.f90 b/plasim/src/plasim.f90 index d5e9e947..f9a8bf0a 100644 --- a/plasim/src/plasim.f90 +++ b/plasim/src/plasim.f90 @@ -285,8 +285,8 @@ subroutine prolog call mpbcr(ww ) call mpbcr(solar_day) call mpbcr(sidereal_day) - call mpbcr(tropical_year) - call mpbcr(sidereal_year) +! call mpbcr(tropical_year) +! call mpbcr(sidereal_year) call mpbcr(rotspd) call mpbcr(eccen) call mpbcr(obliq) @@ -414,6 +414,28 @@ subroutine prolog call surfini + if (mypid==NROOT) then + write(nud,*) "==========Finalized Albedos==========" + write(nud,*) "-----For lambda < 0.75 microns------ " + write(nud,*) "Ground:",dgroundalb(1) + write(nud,*) "Ocean:",doceanalb(1) + write(nud,*) "Snow:",dsnowalb(1) + write(nud,*) "Snow max:",dsnowalbmx(1) + write(nud,*) "Snow min:",dsnowalbmn(1) + write(nud,*) "Sea ice max:",dicealbmx(1) + write(nud,*) "Sea ice min:",dicealbmn(1) + write(nud,*) "Glacier min:",dglacalbmn(1) + write(nud,*) "-----For lambda > 0.75 microns------ " + write(nud,*) "Ground:",dgroundalb(2) + write(nud,*) "Ocean:;",doceanalb(2) + write(nud,*) "Snow:",dsnowalb(2) + write(nud,*) "Snow max:",dsnowalbmx(2) + write(nud,*) "Snow min:",dsnowalbmn(2) + write(nud,*) "Sea ice max:",dicealbmx(2) + write(nud,*) "Sea ice min:",dicealbmn(2) + write(nud,*) "Glacier min:",dglacalbmn(2) + endif + ! !* reset psurf according to orography ! @@ -664,6 +686,8 @@ subroutine epilog call mpputgp('dls' ,dls ,NHOR,1) call mpputgp('drhs' ,drhs ,NHOR,1) call mpputgp('dalb' ,dalb ,NHOR,1) + call mpputgp('dsalb1',dsalb(1,:),NHOR,1) + call mpputgp('dsalb2',dsalb(2,:),NHOR,1) call mpputgp('dz0' ,dz0 ,NHOR,1) call mpputgp('dicec' ,dicec ,NHOR,1) call mpputgp('diced' ,diced ,NHOR,1) @@ -839,6 +863,8 @@ subroutine read_atmos_restart call mpgetgp('dls' ,dls ,NHOR, 1) call mpgetgp('drhs' ,drhs ,NHOR, 1) call mpgetgp('dalb' ,dalb ,NHOR, 1) + call mpgetgp('dsalb1' ,dsalb(1,:),NHOR,1) + call mpgetgp('dsalb2' ,dsalb(2,:),NHOR,1) call mpgetgp('dz0' ,dz0 ,NHOR, 1) call mpgetgp('dicec' ,dicec ,NHOR, 1) call mpgetgp('diced' ,diced ,NHOR, 1) @@ -975,25 +1001,24 @@ subroutine readnl , syncstr , synctime & , dtep , dtns , dtrop , dttrp & , tdissd , tdissz , tdisst , tdissq , tgr & - , psurf & , restim , t0 , tfrc & , sigh , nenergy , nener3d , nsponge , dampsp ! ! preset namelist parameter according to model set up ! - if (NLEV==10) then - tfrc(1) = 20.0 * solar_day - tfrc(2) = 100.0 * solar_day - tfrc(3:NLEV) = 0.0 * solar_day + if (NLEV>=10) then + tfrc(1) = 20.0 * earth_solar_day ! expressed in EARTH days + tfrc(2) = 100.0 * earth_solar_day + tfrc(3:NLEV) = 0.0 * earth_solar_day endif ! if(NTRU==42) then nhdiff=16 ndel(:)=4 - tdissq(:)=0.1 * solar_day - tdisst(:)=0.76 * solar_day - tdissz(:)=0.3 * solar_day - tdissd(:)=0.06 * solar_day + tdissq(:)=0.1 * earth_solar_day + tdisst(:)=0.76 * earth_solar_day + tdissz(:)=0.3 * earth_solar_day + tdissd(:)=0.06 * earth_solar_day endif ! @@ -1120,7 +1145,10 @@ subroutine readnl ! set sponge layer time scale if(dampsp > 0.) then - if(dampsp < (solar_day/ntspd)) dampsp=dampsp*solar_day + if(dampsp < (solar_day/ntspd)) then + dampsp=dampsp*earth_solar_day + write(nud,*) 'dampsp: assuming [days] - converting to [sec]' + endif dampsp=solar_day/(TWOPI*dampsp) endif @@ -1145,7 +1173,7 @@ subroutine dayseccheck(pf,yn) if (zmax < (solar_day / ntspd) .and. zmax > 0.0) then write(nud,*) 'old maxval(',trim(yn),') = ',zmax write(nud,*) 'assuming [days] - converting to [sec]' - pf(:) = pf(:) * solar_day + pf(:) = pf(:) * earth_solar_day write(nud,*) 'new maxval(',trim(yn),') = ',maxval(pf(:)) endif return @@ -1209,13 +1237,13 @@ subroutine initpm call dayseccheck(tdissq,"tdissq") where (restim > 0.0) - damp = solar_day / (TWOPI * restim) + damp = sidereal_day / (TWOPI * restim) ! this is a dynamic param, should be based on sidereal day not solar elsewhere damp = 0.0 endwhere where (tfrc > 0.0) - tfrc = solar_day / (TWOPI * tfrc) + tfrc = sidereal_day / (TWOPI * tfrc) elsewhere tfrc = 0.0 endwhere @@ -1225,22 +1253,22 @@ subroutine initpm do jlev=1,NLEV jdel = ndel(jlev) if (tdissd(jlev) > 0.0) then - tdissd(jlev) = solar_day/(TWOPI*tdissd(jlev)) + tdissd(jlev) = sidereal_day/(TWOPI*tdissd(jlev)) else tdissd(jlev)=0. endif if (tdissz(jlev) > 0.0) then - tdissz(jlev) = solar_day/(TWOPI*tdissz(jlev)) + tdissz(jlev) = sidereal_day/(TWOPI*tdissz(jlev)) else tdissz(jlev)=0. endif if (tdisst(jlev) > 0.0) then - tdisst(jlev) = solar_day/(TWOPI*tdisst(jlev)) + tdisst(jlev) = sidereal_day/(TWOPI*tdisst(jlev)) else tdisst(jlev) = 0. endif if (tdissq(jlev) > 0.0) then - tdissq(jlev) = solar_day/(TWOPI*tdissq(jlev)) + tdissq(jlev) = sidereal_day/(TWOPI*tdissq(jlev)) else tdissq(jlev)=0. endif diff --git a/plasim/src/plasimmod.f90 b/plasim/src/plasimmod.f90 index a2a29ed6..589eb968 100644 --- a/plasim/src/plasimmod.f90 +++ b/plasim/src/plasimmod.f90 @@ -116,7 +116,7 @@ module pumamod parameter(TWOPI = PI + PI) ! 2 Pi parameter(RV = 461.51) ! Gas constant for water vapour parameter(ACPV = 1870.) ! Specific heat for water vapour - parameter(TMELT_CO2 = 148.0) ! Melting point (CO2) - for Mars +! parameter(TMELT_CO2 = 148.0) ! Melting point (CO2) - for Mars ! *************** ! * Date & Time * @@ -148,7 +148,6 @@ module pumamod ! ************************** integer :: kick = 1 ! add noise for kick > 0 - integer :: mars = 0 ! global switch for planet mars integer :: noutput = 1 ! master switch for output: 0=no output integer :: nafter = 0 ! write data interval: 0 = once per day integer :: naqua = 0 ! 1: switch to aqua planet mode @@ -312,6 +311,19 @@ module pumamod ! * Radiation * ! ************* +! Exoplasim + real :: dsalb(2,NHOR) ! spectral weighted albedo + real :: dsnowalb(2) = 0.6 ! spectral weighted snow albedo + real :: dgroundalb(2) = 0.2 ! spectral weighted ground albedo + real :: doceanalb(2) = 0.069 ! spectral weighted ocean albedo + real :: dsnowalbmx(2) = 0.8 + real :: dsnowalbmn(2) = 0.4 + real :: dicealbmx(2) = 0.7 + real :: dicealbmn(2) = 0.5 + real :: dglacalbmn(2) = 0.6 + +! + real :: dalb(NHOR) ! albedo real :: dswfl(NHOR,NLEP) ! net solar radiation real :: dlwfl(NHOR,NLEP) ! net thermal radiation @@ -517,8 +529,9 @@ module pumamod real :: pnu = 0.0 ! Time filter real :: sidereal_day = 0.0 ! Length of sidereal day [sec] real :: solar_day = 0.0 ! Length of solar day [sec] - real :: sidereal_year = 0.0 ! Length of sidereal year [sec] - real :: tropical_year = 0.0 ! Length of tropical year [sec] + real :: earth_solar_day = 86400.0 ! Length of solar day [sec] +! real :: sidereal_year = 0.0 ! Length of sidereal year [sec] +! real :: tropical_year = 0.0 ! Length of tropical year [sec] real :: ww = 0.0 ! Omega used for scaling real :: oroscale = 1.0 ! Orography scaling real :: ra1 = 0.0 ! @@ -535,6 +548,11 @@ module pumamod real :: obliq = 0.0 ! Obliquity of Orbit real :: mvelp = 0.0 ! Longitude of moving vernal equinox + real :: p_wsmax = 0.0 ! Planet max field capacity of soil water (m) (0.5 Earth, 0. Mars) + + real :: tl_substellar = 180.0 ! Position of substellar point in degrees (0-360) + logical :: ltidally_locked = .false. ! tidally locked planet or not (used in radmod) + ! ****************************************** ! * GUI (Graphical User Interface for X11) * ! ****************************************** diff --git a/plasim/src/radmod.f90 b/plasim/src/radmod.f90 index 791eaeef..e89a61f3 100644 --- a/plasim/src/radmod.f90 +++ b/plasim/src/radmod.f90 @@ -20,6 +20,21 @@ module radmod ! !* 2.2) namelist parameters (see *sub* radini) ! +! Exoplasim changes + real :: starbbtemp = 5772.0 ! Star's blackbody surface temperature (K) + logical :: lstarfile = .false. + integer :: nstarfile = 0 ! integer version of the logical + character(len=80) :: starfile = " " !Name of input stellar spectrum file + character(len=80) :: starfilehr = " " !Name of hi-res version of input spectrum + real :: minwavel = 316.036116751 ! Minimum wavelength to use when computing spectra [nm] + integer :: nstartemp = 0 ! Switch for using the star's bb temp to determine sw (0/1) + integer :: nsimplealbedo = 1 ! Compute broadband albedo and use it for both bands + + real :: zsolars(2) = 0.0 ! Container for storing solar constants + real :: zsolar1 = 0.517 ! spectral partitioning 1 (wl < 0.75mue) + real :: zsolar2 = 0.483 ! spectral partitioning 2 (wl > 0.75mue) + real :: rcoeff = 1.0 ! Rayleigh scattering coefficient for cross section dependence + real :: gsol0 = 1367.0 ! solar constant (set in planet module) real :: solclat = 1.0 ! cos of lat of insolation if ncstsol=1 @@ -51,6 +66,8 @@ module radmod integer :: iyrbp = -50 ! Year before present (1950 AD) ! default = 2000 AD + real :: tswr1mod(NLEV) ! modulation of tswr1 + real :: rcl1(3)=(/0.15,0.30,0.60/) ! cloud albedos spectral range 1 real :: rcl2(3)=(/0.15,0.30,0.60/) ! cloud albedos spectral range 2 real :: acl2(3)=(/0.05,0.10,0.20/) ! cloud absorptivities spectral range 2 @@ -112,7 +129,428 @@ end module radmod ! ! radiation subroutines ! +! =================== +! SUBROUTINE SOLARINI +! =================== +! This is from ExoPlaSim (https://github.com/alphaparrot/ExoPlaSim) +! by Adiv Paradise + + subroutine solarini + use radmod + use specblock + +! parameter(planckh = 6.62607004e-34) +! parameter(boltzk = 1.38064852e-23 ) +! parameter(cc = 299792458.0 ) + parameter(const = 0.0143877735383) !hc/k + !parameter(chig0 = 11.234333860319996) !spectrum-weighted optical depth coefficient for 5772K + + real*8 :: wv1(1024) !Wavelengths in meters up to 0.75 microns + real*8 :: wv2(1024) !Wavelength in meters starting at 0.75 microns + real*8 :: wvm1(1024) !Wavelengths in microns up to 0.75 microns + real*8 :: wvm2(1024) !Wavelength in microns starting at 0.75 microns + real*8 :: bb1(1024) !Planck function for x<0.75 microns + real*8 :: bb2(1024) !Planck function for x>0.75 microns + real*8 :: bbg1(1024) !Planck function for x<0.75 microns + real*8 :: bbg2(1024) !Planck function for x>0.75 microns + real*8 :: bb3(965) !Planck function for albedo wavelengths + real*8 :: kdata(2048,2) + real*8 :: kdata2(965,2) + + real dl1,dl2,hinge,const1,const2,z1,z2,znet,wmin,lwmin,w1,w2,f1,f2,x + integer k,nw,j + + if (mypid == NROOT) then + + constg = const/5772.0 !G star + + !wmin = const/(starbbtemp*36.841361) !Wavelength where exponential term is <=1.0e-16 + wmin = minwavel*1e-9 ! Set minimum wavelength to 316 nm; we don't include UV. + ! This produces zsolar1=0.517 at Teff=5772 K. + lwmin = log10(wmin) + + hinge = log10(7.5e-7) !We care about amounts above and below 0.75 microns + dl1 = (hinge-lwmin)/1024.0 + dl2 = (-4-hinge)/1024.0 + + do k=1,1024 + wv1(k) = 10**(lwmin+(k-1)*dl1) + wv2(k) = 10**(hinge+(k-1)*dl2) + enddo + + do k=1,1024 + wvm1(k) = (1.0e6 * wv1(k))**5 + wvm2(k) = (1.0e6 * wv2(k))**5 + enddo + + do k=1,1024 + bbg1(k) = 1.0/wvm1(k) * 1.0/(exp(constg/wv1(k))-1) + bbg2(k) = 1.0/wvm2(k) * 1.0/(exp(constg/wv2(k))-1) + enddo + + if (lstarfile) then ! Specific input spectrum was given + call readdat(starfilehr,2,2048,kdata) !We keep the hi-res stuff for energy fractions + wv1(:) = kdata(1:1024,1)*1.0e-6 + bb1(:) = kdata(1:1024,2) + wv2(:) = kdata(1025:2048,1)*1.0e-6 + bb2(:) = kdata(1025:2048,2) + do k=1,1024 + if (wv1(k) .lt. wmin) bb1(k)=0. !Remove flux at wavelengths below 316 nm. + enddo + + ! Scan through high-res wavelengths and re-sample to bb3 wavelengths + call readdat(starfile,2,965,kdata2) + bb3(:) = kdata2(:,2) + + else ! Use blackbody spectrum + + !snowalbedos(:) = 0.25*(fsnowalb(:)+2.0*msnowalb(:)+csnowalb(:)) !assume mostly med-grain + +! const1 = 2*planckh*(cc**2) + const2 = const/starbbtemp + + do k=1,1024 !Compute the Planck function + bb1(k) = 1.0/wvm1(k) * 1.0/(exp(const2/wv1(k))-1) !const1/wv1(k)**5 + bb2(k) = 1.0/wvm2(k) * 1.0/(exp(const2/wv2(k))-1) +! write(nud,*) wv1(k),bb1(k),wv2(k),bb2(k) + enddo !The scaling and units don't actually matter, because we're going to normalize + + do k=1,965 !Compute the Planck function for the wavelengths at which we have albedo data + bb3(k) = 1.0/(wavelengths(k))**5 * 1.0/(exp(1.0e6*const2/wavelengths(k))-1) + enddo + + endif + a1 = 0.0 + a2 = 0.0 + do k=1,41 !Compute insolation-weighted albedo below 0.75 microns +! a1 = a1 + 0.5*(bb3(k)*fsnowalb(k)+bb3(k+1)*fsnowalb(k+1))* & +! & 1.0e-6*(wavelengths(k+1)-wavelengths(k)) + a1 = a1 + 0.5*(bb3(k)*iceblend(k)+bb3(k+1)*iceblend(k+1))* & + & 1.0e-6*(wavelengths(k+1)-wavelengths(k)) + enddo + do k=42,964 !Compute insolation-weighted albedo above 0.75 microns +! a2 = a2 + 0.5*(bb3(k)*fsnowalb(k)+bb3(k+1)*fsnowalb(k+1)))* & +! & 1.0e-6*(wavelengths(k+1)-wavelengths(k)) + a2 = a2 + 0.5*(bb3(k)*iceblend(k)+bb3(k+1)*iceblend(k+1))* & + & 1.0e-6*(wavelengths(k+1)-wavelengths(k)) + enddo + z1 = 0.0 + z2 = 0.0 + + zg1 = 0.0 + zg2 = 0.0 + + zcross1 = 0.0 + zcross2 = 0.0 + + zgcross1 = 0.0 + zgcross2 = 0.0 + + do k=1,1023 !Do a trapezoidal integration above and below 0.75 microns + z1 = z1 + 0.5*(bb1(k)+bb1(k+1))*(wv1(k+1)-wv1(k)) + z2 = z2 + 0.5*(bb2(k)+bb2(k+1))*(wv2(k+1)-wv2(k)) + + zg1 = zg1 + 0.5*(bbg1(k)+bbg1(k+1))*(wv1(k+1)-wv1(k)) + zg2 = zg2 + 0.5*(bbg2(k)+bbg2(k+1))*(wv2(k+1)-wv2(k)) + zcross1 = zcross1 + 0.5*(bb1(k)/((wv1(k)*1.0e6)**4)+bb1(k+1)/((wv1(k+1)*1.0e6)**4)) & + & *(wv1(k+1)-wv1(k)) + zcross2 = zcross2 + 0.5*(bb2(k)/((wv2(k)*1.0e6)**4)+bb2(k+1)/((wv2(k+1)*1.0e6)**4)) & + & *(wv2(k+1)-wv2(k)) + zgcross1 = zgcross1+0.5*(bbg1(k)/((wv1(k)*1.0e6)**4)+bbg1(k+1)/((wv1(k+1)*1.0e6)**4)) & + & *(wv1(k+1)-wv1(k)) + zgcross2 = zgcross2+0.5*(bbg2(k)/((wv2(k)*1.0e6)**4)+bbg2(k+1)/((wv2(k+1)*1.0e6)**4)) & + & *(wv2(k+1)-wv2(k)) + enddo + + z1 = z1 + 0.5*(bb1(1024)+bb2(1))*(wv2(1)-wv1(1024)) + zcross1 = zcross1+0.5*(bb1(1024)/((wv1(1024)*1.0e6)**4)+bb2(1)/((wv2(1)*1.0e6)**4)) & + & *(wv2(1)-wv1(1024)) + zg1 = zg1 + 0.5*(bbg1(1024)+bbg2(1))*(wv2(1)-wv1(1024)) + zgcross1 = zgcross1+0.5*(bbg1(1024)/((wv1(1024)*1.0e6)**4)+bbg2(1)/((wv2(1)*1.0e6)**4)) & + & *(wv2(1)-wv1(1024)) + + zg = zg1+zg2 + zgcross = zgcross1 + zgcross2 + zchi = zgcross / zg !spectrum-weighted cross section for 5772 K + rcoeff = (zcross1 + zcross2) * zsolar1 / z1 / zchi !Using default zsolar=0.517 here + + ! effective optical depth is the spectral average of the cross-section, normalized to + ! 5772 K input blackbody. There's already a spectral dependence due to z1/z2 partitioning, + ! so we compute the true weighting and normalize to the partitioning and solar result +! +! We want tau = /*tau_g, where +! +! int_0^inf[F(w) w^-4 dw] +! = ------------------------- +! int_0^inf[F(w) dw] +! +! so: +! +! int_0^inf[F(w) w^-4 dw] int_0^inf[F_g(w) dw] +! tau = ------------------------- x --------------------------- x tau_g +! int_0^inf[F(w) dw] int_0^inf[F_g(w) w^-4 dw] +! +! We need to somehow account for the fact that we have two bands, especially because that +! will impart a Z1/Z1_g scaling all on its own. We can do this by multiplying by 1: +! +! int_0^w2[F(w) dw] int_0^inf[F(w) w^-4 dw] int_0^inf[F_g(w) dw] +! tau = ------------------- x ------------------------- x -------------------------- x tau_g +! int_0^w2[F(w) dw] int_0^inf[F(w) dw] int_0^inf[F_g(w) w^-4 dw] +! +! when we rearrange: +! +! int_0^w2[F(w) dw] int_0^inf[F(w) w^-4 dw] int_0^inf[F_g(w) dw] +! tau = -------------------- x ------------------------ x -------------------------- x tau_g +! int_0^inf[F(w) dw] int_0^w2[F(w) dw] int_0^inf[F_g(w) w^-4 dw] +! +! This new first term out front is equal to Z1, the partitioning fraction. So +! +! int_0^inf[F(w) w^-4 dw] int_0^inf[F_g(w) dw] +! tau = Z1 x ------------------------- x --------------------------- x tau_g +! int_0^w2[F(w) dw] int_0^inf[F_g(w) w^-4 dw] +! +! We also know that PlaSim's energy partitioning scheme will impart a factor of Z1/Z1_g, so +! if we know what we really have is +! +! Z1 +! tau = R x ---- x tau_g +! Z1_g +! +! then we can solve for R: +! +! int_0^inf[F(w) w^-4 dw] int_0^inf[F_g(w) dw] +! R = Z1_g x ------------------------- x --------------------------- +! int_0^w2[F(w) dw] int_0^inf[F_g(w) w^-4 dw] +! +! zcross1 + zcross2 zg1 + zg2 +! = zsolar1 x ------------------- x --------------------- +! z1 zgcross1 + zgcross2 +! + zdenom1 = 0.01/z1 + zdenom2 = 0.01/z2 + + a1 = zdenom1*a1 !Percent -> Decimal; normalization + a2 = zdenom2*a2 + + znet = z1+z2 + + z1 = z1/znet + z2 = 1.0-z1 + + zsolar1 = z1 + zsolar2 = z2 + + write(nud,*) "Energy fraction below 0.75 microns:",zsolar1 + write(nud,*) "Energy fraction above 0.75 microns:",zsolar2 + write(nud,*) "Rayleigh scattering coefficient:",rcoeff + + zsolars(1) = zsolar1 + zsolars(2) = zsolar2 + + dsnowalb(1) = a1 + dsnowalb(2) = a2 + + write(nud,*) "Snow albedo below 0.75 microns:",dsnowalb(1) + write(nud,*) "Snow albedo above 0.75 microns:",dsnowalb(2) + write(nud,*) "Overall snow albedo:",z1*dsnowalb(1)+z2*dsnowalb(2) + + if (nsimplealbedo>0.5) dsnowalb(:) = z1*a1 + z2*a2 + + a1 = 0.0 + a2 = 0.0 + do k=1,41 !Compute insolation-weighted albedo below 0.75 microns + a1 = a1 + 0.5*(bb3(k)*iceblendmin(k)+bb3(k+1)*iceblendmin(k+1))* & + & 1.0e-6*(wavelengths(k+1)-wavelengths(k)) + enddo + do k=42,964 !Compute insolation-weighted albedo above 0.75 microns + a2 = a2 + 0.5*(bb3(k)*iceblendmin(k)+bb3(k+1)*iceblendmin(k+1))* & + & 1.0e-6*(wavelengths(k+1)-wavelengths(k)) + enddo + a1 = zdenom1*a1 !Percent -> Decimal; normalization + a2 = zdenom2*a2 + + dsnowalbmn(1) = a1 + dsnowalbmn(2) = a2 + + write(nud,*) "Minimum snow albedo below 0.75 microns:",dsnowalbmn(1) + write(nud,*) "Minimum snow albedo above 0.75 microns:",dsnowalbmn(2) + write(nud,*) "Overall minimum snow albedo:",z1*dsnowalbmn(1)+z2*dsnowalbmn(2) + + if (nsimplealbedo>0.5) dsnowalbmn(:) = z1*a1 + z2*a2 + + a1 = 0.0 + a2 = 0.0 + do k=1,41 !Compute insolation-weighted albedo below 0.75 microns + a1 = a1 + 0.5*(bb3(k)*iceblendmax(k)+bb3(k+1)*iceblendmax(k+1))* & + & 1.0e-6*(wavelengths(k+1)-wavelengths(k)) + enddo + do k=42,964 !Compute insolation-weighted albedo above 0.75 microns + a2 = a2 + 0.5*(bb3(k)*iceblendmax(k)+bb3(k+1)*iceblendmax(k+1))* & + & 1.0e-6*(wavelengths(k+1)-wavelengths(k)) + enddo + a1 = zdenom1*a1 !Percent -> Decimal; normalization + a2 = zdenom2*a2 + + dsnowalbmx(1) = a1 + dsnowalbmx(2) = a2 + + write(nud,*) "Maximum snow albedo below 0.75 microns:",dsnowalbmx(1) + write(nud,*) "Maximum snow albedo above 0.75 microns:",dsnowalbmx(2) + write(nud,*) "Overall maximum snow albedo:",z1*dsnowalbmx(1)+z2*dsnowalbmx(2) + + if (nsimplealbedo>0.5) dsnowalbmx(:) = z1*a1 + z2*a2 + + a1 = 0.0 + a2 = 0.0 + do k=1,41 !Compute insolation-weighted albedo below 0.75 microns + a1 = a1 + 0.5*(bb3(k)*seaicemin(k)+bb3(k+1)*seaicemin(k+1))* & + & 1.0e-6*(wavelengths(k+1)-wavelengths(k)) + enddo + do k=42,964 !Compute insolation-weighted albedo above 0.75 microns + a2 = a2 + 0.5*(bb3(k)*seaicemin(k)+bb3(k+1)*seaicemin(k+1))* & + & 1.0e-6*(wavelengths(k+1)-wavelengths(k)) + enddo + a1 = zdenom1*a1 !Percent -> Decimal; normalization + a2 = zdenom2*a2 + + dicealbmn(1) = a1 + dicealbmn(2) = a2 + + write(nud,*) "Minimum sea ice albedo below 0.75 microns:",dicealbmn(1) + write(nud,*) "Minimum sea ice albedo above 0.75 microns:",dicealbmn(2) + write(nud,*) "Overall minimum sea ice albedo:",z1*dicealbmn(1)+z2*dicealbmn(2) + + if (nsimplealbedo>0.5) dicealbmn(:) = z1*a1 + z2*a2 + + a1 = 0.0 + a2 = 0.0 + do k=1,41 !Compute insolation-weighted albedo below 0.75 microns + a1 = a1 + 0.5*(bb3(k)*seaicemax(k)+bb3(k+1)*seaicemax(k+1))* & + & 1.0e-6*(wavelengths(k+1)-wavelengths(k)) + enddo + do k=42,964 !Compute insolation-weighted albedo above 0.75 microns + a2 = a2 + 0.5*(bb3(k)*seaicemax(k)+bb3(k+1)*seaicemax(k+1))* & + & 1.0e-6*(wavelengths(k+1)-wavelengths(k)) + enddo + a1 = zdenom1*a1 !Percent -> Decimal; normalization + a2 = zdenom2*a2 + + dicealbmx(1) = a1 + dicealbmx(2) = a2 + + write(nud,*) "Maximum sea ice albedo below 0.75 microns:",dicealbmx(1) + write(nud,*) "Maximum sea ice albedo above 0.75 microns:",dicealbmx(2) + write(nud,*) "Overall maximum sea ice albedo:",z1*dicealbmx(1)+z2*dicealbmx(2) + + if (nsimplealbedo>0.5) dicealbmx(:) = z1*a1 + z2*a2 + + a1 = 0.0 + a2 = 0.0 + do k=1,41 !Compute insolation-weighted albedo below 0.75 microns + a1 = a1 + 0.5*(bb3(k)*glacalbmin(k)+bb3(k+1)*glacalbmin(k+1))* & + & 1.0e-6*(wavelengths(k+1)-wavelengths(k)) + enddo + do k=42,964 !Compute insolation-weighted albedo above 0.75 microns + a2 = a2 + 0.5*(bb3(k)*glacalbmin(k)+bb3(k+1)*glacalbmin(k+1))* & + & 1.0e-6*(wavelengths(k+1)-wavelengths(k)) + enddo + a1 = zdenom1*a1 !Percent -> Decimal; normalization + a2 = zdenom2*a2 + + dglacalbmn(1) = a1 + dglacalbmn(2) = a2 + + write(nud,*) "Minimum glacier albedo below 0.75 microns:",dglacalbmn(1) + write(nud,*) "Minimum glacier albedo above 0.75 microns:",dglacalbmn(2) + write(nud,*) "Overall minimum glacier albedo:",z1*dglacalbmn(1)+z2*dglacalbmn(2) + + if (nsimplealbedo>0.5) dglacalbmn(:) = z1*a1 + z2*a2 + + a1 = 0.0 + a2 = 0.0 + do k=1,41 !Compute insolation-weighted albedo below 0.75 microns + a1 = a1 + 0.5*(bb3(k)*groundblend(k)+bb3(k+1)*groundblend(k+1))* & + & 1.0e-6*(wavelengths(k+1)-wavelengths(k)) + enddo + do k=42,964 !Compute insolation-weighted albedo above 0.75 microns + a2 = a2 + 0.5*(bb3(k)*groundblend(k)+bb3(k+1)*groundblend(k+1))* & + & 1.0e-6*(wavelengths(k+1)-wavelengths(k)) + enddo + a1 = zdenom1*a1 !Percent -> Decimal; normalization + a2 = zdenom2*a2 + + dgroundalb(1) = a1 + dgroundalb(2) = a2 + + write(nud,*) "Ground albedo below 0.75 microns:",dgroundalb(1) + write(nud,*) "Ground albedo above 0.75 microns:",dgroundalb(2) + write(nud,*) "Overall ground albedo:",z1*dgroundalb(1)+z2*dgroundalb(2) + + if (nsimplealbedo>0.5) dgroundalb(:) = z1*a1 + z2*a2 + + a1 = 0.0 + a2 = 0.0 + do k=1,41 !Compute insolation-weighted albedo below 0.75 microns + a1 = a1 + 0.5*(bb3(k)*oceanblend(k)+bb3(k+1)*oceanblend(k+1))* & + & 1.0e-6*(wavelengths(k+1)-wavelengths(k)) + enddo + do k=42,964 !Compute insolation-weighted albedo above 0.75 microns + a2 = a2 + 0.5*(bb3(k)*oceanblend(k)+bb3(k+1)*oceanblend(k+1))* & + & 1.0e-6*(wavelengths(k+1)-wavelengths(k)) + enddo + a1 = zdenom1*a1 !Percent -> Decimal; normalization + a2 = zdenom2*a2 + + doceanalb(1) = a1 + doceanalb(2) = a2 + + write(nud,*) "Ocean albedo below 0.75 microns:",doceanalb(1) + write(nud,*) "Ocean albedo above 0.75 microns:",doceanalb(2) + write(nud,*) "Overall ocean albedo:",z1*doceanalb(1)+z2*doceanalb(2) + + if (nsimplealbedo>0.5) doceanalb(:) = z1*a1 + z2*a2 + + + call put_restart_array("zsolars",zsolars,2,2,1) + call put_restart_array('dsnowalb',dsnowalb,2,2,1) + call put_restart_array('dsnowalbmn',dsnowalbmn,2,2,1) + call put_restart_array('dsnowalbmx',dsnowalbmx,2,2,1) + call put_restart_array('dicealbmn',dicealbmn,2,2,1) + call put_restart_array('dicealbmx',dicealbmx,2,2,1) + call put_restart_array('dglacalbmn',dglacalbmn,2,2,1) + call put_restart_array('dgroundalb',dgroundalb,2,2,1) + call put_restart_array('doceanalb',doceanalb,2,2,1) + + + endif + + call mpbcrn(zsolars,2) + call mpbcr(zsolar1) + call mpbcr(zsolar2) + call mpbcr(rcoeff) + call mpbcrn(dsnowalb,2) + call mpbcrn(dsnowalbmn,2) + call mpbcrn(dsnowalbmx,2) + call mpbcrn(dglacalbmn,2) + call mpbcrn(dicealbmn,2) + call mpbcrn(dicealbmx,2) + call mpbcrn(dgroundalb,2) + call mpbcrn(doceanalb,2) + +! call mpputgp('zsolars',zsolars,2,1) +! call mpputgp('dsnowalb',dsnowalb,2,1) +! call mpputgp('dsnowalbmn',dsnowalbmn,2,1) +! call mpputgp('dsnowalbmx',dsnowalbmx,2,1) +! call mpputgp('dicealbmn',dicealbmn,2,1) +! call mpputgp('dicealbmx',dicealbmx,2,1) +! call mpputgp('dglacalbmn',dglacalbmn,2,1) +! call mpputgp('dgroundalb',dgroundalb,2,1) +! call mpputgp('doceanalb',doceanalb,2,1) + + end subroutine solarini + + ! ================= ! SUBROUTINE RADINI ! ================= @@ -142,7 +580,9 @@ subroutine radini & ,iyrbp,nswr,nlwr & & ,a0o3,a1o3,aco3,bo3,co3,toffo3,o3scale & & ,nsol,nswrcl,nrscat,rcl1,rcl2,acl2,clgray,tpofmt & - & ,acllwr,tswr1,tswr2,tswr3,th2oc,dawn + & ,acllwr,tswr1,tswr2,tswr3,th2oc,dawn,tswr1mod & + & ,starbbtemp,nstartemp,nsimplealbedo,nstarfile & + & ,starfile,starfilehr,minwavel ! ! namelist parameter: ! @@ -192,7 +632,7 @@ subroutine radini jtune=1 endif endif - elseif(NLEV==10) then + elseif(NLEV>=10) then if(NDCYCLE==1) then jtune=0 else @@ -208,7 +648,7 @@ subroutine radini endif endif elseif(NTRU==31) then - if(NLEV==10) then + if(NLEV>=10) then if(NDCYCLE==1) then jtune=0 else @@ -224,7 +664,7 @@ subroutine radini endif endif elseif(NTRU==42) then - if(NLEV==10) then + if(NLEV>=10) then if(NDCYCLE==1) then jtune=0 else @@ -242,6 +682,8 @@ subroutine radini endif endif ! + tswr1mod(:)=1.0 + if(jtune==0) then if(mypid==NROOT) then write(nud,*)'No radiation setup for this resolution (NTRU,NLEV)' @@ -298,7 +740,40 @@ subroutine radini call mpbci(nsol) call mpbci(nrscat) call mpbci(nswrcl) - + call mpbcrn(tswr1mod,NLEV) + +! Exoplasim + + call mpbcr(starbbtemp) + call mpbci(nstartemp) + call mpbci(nsimplealbedo) + call mpbci(nstarfile) + call mpbcr(minwavel) + +! +! determine stellar parameters +! + if (nstarfile > 0) then + lstarfile = .true. + call solarini + nstartemp = 1 ! needed so that SWR routine later uses correct spectral calculation + call mpbci(nstartemp) + else if (nstartemp > 0) then + call solarini + else + call mpbcr(zsolar1) + call mpbcr(zsolar2) + call mpbcr(rcoeff) + call mpbcrn(dsnowalb,2) + call mpbcrn(dsnowalbmn,2) + call mpbcrn(dsnowalbmx,2) + call mpbcrn(dglacalbmn,2) + call mpbcrn(dicealbmn,2) + call mpbcrn(dicealbmx,2) + call mpbcrn(dgroundalb,2) + call mpbcrn(doceanalb,2) + endif + ! ! determine orbital parameters ! @@ -388,7 +863,8 @@ subroutine radstep real, allocatable :: zprf11(:,:) real, allocatable :: zprf12(:,:) real, allocatable :: zcc(:,:) - real, allocatable :: zalb(:) + real, allocatable :: zalb1(:) + real, allocatable :: zalb2(:) real, allocatable :: zdtdte(:,:) ! ! cpu time estimates @@ -422,9 +898,11 @@ subroutine radstep if(ndiagcf > 0) then allocate(zcc(NHOR,NLEP)) - allocate(zalb(NHOR)) + allocate(zalb1(NHOR)) + allocate(zalb2(NHOR)) zcc(:,:)=dcc(:,:) - zalb(:)=dalb(:) + zalb1(:) = dsalb(1,:) + zalb2(:) = dsalb(2,:) dcc(:,:)=0. if(nswr==1) call swr dclforc(:,1)=dswfl(:,NLEP) @@ -432,8 +910,10 @@ subroutine radstep dclforc(:,5)=dfu(:,1) dclforc(:,6)=dfu(:,NLEP) dcc(:,:)=zcc(:,:) - dalb(:)=zalb(:) - deallocate(zalb) + dsalb(1,:) = zalb1(:) + dsalb(2,:) = zalb2(:) + deallocate(zalb1) + deallocate(zalb2) end if ! @@ -694,6 +1174,8 @@ subroutine radstop ! no PUMA *subs* are used ! ! no PUMA variables are used + + call mpputgp('zsolars',zsolars,2,1) ! if(mypid == NROOT .and. ntime == 1) then write(nud,*)'******************************************' @@ -755,14 +1237,21 @@ end function ndayofyear zmuz = 0.0 zdawn = sin(dawn * PI / 180.0) ! compute dawn/dusk angle zrlon = TWOPI / NLON ! scale lambda to radians - zrtim = TWOPI / 1440.0 ! scale time to radians + if(ltidally_locked) then + zrtim = 0.0 + zoff= (tl_substellar - 180.0) / 360.0 * TWOPI - PI + ndcycle=1 + else + zrtim = TWOPI * 60 / solar_day ! scale time to radians + zoff = -PI + endif zmins = ihou * 60 + imin jhor = 0 - if (ncstsol==0) then + if (ncstsol==0) then ! JJJ What is the use of ncstsol=1 anyway? do jlat = 1 , NLPP do jlon = 0 , NLON-1 jhor = jhor + 1 - zhangle = zmins * zrtim + jlon * zrlon - PI + zhangle = zmins * zrtim + jlon * zrlon + zoff ! includes an offset for the tidally locked case zmuz=sin(zdecl)*sid(jlat)+cola(jlat)*cos(zdecl)*cos(zhangle) if (zmuz > zdawn) gmu0(jhor) = zmuz enddo @@ -902,6 +1391,7 @@ subroutine swr ! dsigma(NLEV) : delta sigma (half level) (used) ! dp(NHOR) : surface pressure (Pa) (used) ! dalb(NHOR) : surface albedo (used) +! dsalb(2,NHOR) : band-specific surface albedo (used) ! dq(NHOR,NLEP) : specific humidity (kg/kg) (used) ! dql(NHOR,NLEP) : cloud liquid water content (kg/kg) (used) ! dcc(NHOR,NLEP) : cloud cover (frac.) (used) @@ -912,12 +1402,15 @@ subroutine swr ! 0) define local parameters and arrays ! parameter(zero=1.E-6) ! if insolation < zero : fluxes=0. - parameter(zsolar1=0.517) ! spectral partitioning 1 (wl < 0.75mue) - parameter(zsolar2=0.483) ! spectral partitioning 2 (wl > 0.75mue) parameter(zbetta=1.66) ! magnification factor water vapour parameter(zmbar=1.9) ! magnification factor ozon parameter(zro3=2.14) ! ozon density (kg/m**3 STP) parameter(zfo3=100./zro3) ! transfere o3 to cm STP + +! Exoplasim +! parameter(zsolar1=0.517) ! spectral partitioning 1 (wl < 0.75mue) +! parameter(zsolar2=0.483) ! spectral partitioning 2 (wl > 0.75mue) + ! real zt1(NHOR,NLEP),zt2(NHOR,NLEP) ! transmissivities 1-l real zr1s(NHOR,NLEP),zr2s(NHOR,NLEP) ! reflexivities l-1 (scattered) @@ -942,6 +1435,7 @@ subroutine swr ! real zmu0(NHOR) ! zenit angle real zmu1(NHOR) ! zenit angle + real zscf(NHOR) ! Pressure scale factor real zcs(NHOR) ! clear sky part real zm(NHOR) ! magnification factor real zo3(NHOR) ! ozon amount @@ -1012,9 +1506,9 @@ subroutine swr ! zcs(:) = 1.0 ! Clear sky fraction (1.0 = clear sky) zmu00 = 0.5 - zb3 = tswr1 * SQRT(zmu00) / zmu00 zb4 = tswr2 * SQRT(zmu00) zb5 = tswr3 * zmu00 * zmu00 + zb3 = tswr1 * SQRT(zmu00) / zmu00 ! ! prescribed ! @@ -1058,6 +1552,7 @@ subroutine swr zrcl2s(:,:)=0.0 ztcl2s(:,:)=1.0 do jlev=1,NLEV + zb3 = tswr1 * tswr1mod(jlev) * SQRT(zmu00) / zmu00 where(losun(:) .and. (dcc(:,jlev) > 0.)) zlwp(:) = min(1000.0,1000.*dql(:,jlev)*dp(:)/ga*dsigma(jlev)) ztau(:) = 2.0 * ALOG10(zlwp(:)+1.5)**3.9 @@ -1074,7 +1569,7 @@ subroutine swr ztcl2s(:,jlev)=4.*zu(:)/zr(:) zrcl2s(:,jlev)=(zu(:)*zu(:)-1.)/zr(:)*(zexp(:)-1./zexp(:)) - zb1(:) = tswr1*SQRT(zmu0(:)) + zb1(:) = tswr1*SQRT(zmu0(:))*tswr1mod(jlev) zb2(:) = tswr2*SQRT(zmu0(:))/ALOG(3.+0.1*ztau(:)) zom0(:) = min(0.9999,1.-tswr3*zmu0(:)*zmu0(:)*zlog(:)) zun(:) = 1.0 - zom0(:) @@ -1151,15 +1646,31 @@ subroutine swr & +1.082*zo3(:)/((1.+138.6*zo3(:))**0.805) & & +0.0658*zo3(:)/(1.+(103.6*zo3(:))**3))/zsolar1 ztwvt(:)=1. - zwv(:)=zywvt(:)+zbetta*zwvt(:) + zwv(:)=zywvt(:)+zbetta*zwvt(:) ztwvtu(:)=1.-2.9*zwv(:)/((1.+141.5*zwv(:))**0.635+5.925*zwv(:)) & & /zsolar2 ! ! clear sky scattering (Rayleigh scatterin lower most level only) -! - zrcs(:,NLEV)=(0.219/(1.+0.816*zmu0(:))*zcs(:) & - & +0.144*(1.-zcs(:)-dcc(:,NLEV)))*nrscat - zrcsu(:,NLEV)=0.144*(1.-dcc(:,NLEV))*nrscat +! +! From exoplasim +! +! R = 1 - e^((ps/p0)*ln(T0)) +! + zscf(:) = rcoeff*dp(:)/101100.0*9.80665/ga + zrcs(:,NLEV)= (zrcs(:,NLEV) + (1.0-exp(zscf(:)*log(1.0-(0.219/(1.+0.816*zmu0(:))))))& + & * zcs(:)*nrscat & + & + (1.0-exp(zscf(:)*log(1.0-0.144)))*(1.-zcs(:)-dcc(:,NLEV))& + & * nrscat)*nstartemp + & + & (0.219/(1.+0.816*zmu0(:))*zcs(:) & + & +0.144*(1.-zcs(:)-dcc(:,NLEV)))*nrscat*(1-nstartemp) + zrcsu(:,NLEV)=(zrcsu(:,NLEV) + (1.0-exp(zscf(:)*log(1.0-0.144))) & + & *nrscat*(1-dcc(:,NLEV)))*nstartemp + & + & 0.144*(1.-dcc(:,NLEV))*nrscat*(1-nstartemp) +! Ensures that results are identical to old version if no nstartemp +! zrcs(:,NLEV)=(0.219/(1.+0.816*zmu0(:))*zcs(:) & +! & +0.144*(1.-zcs(:)-dcc(:,NLEV)))*nrscat +! zrcsu(:,NLEV)=0.144*(1.-dcc(:,NLEV))*nrscat + endwhere ! do jlev=1,NLEV @@ -1273,15 +1784,36 @@ subroutine swr ! ! make upward R ! - zra1s(:)=dalb(:) - zra2s(:)=dalb(:) + +! original +! zra1s(:)=dalb(:) +! zra2s(:)=dalb(:) ! ! set albedo for the direct beam (for ocean use ECHAM3 param) ! - dalb(:)=dls(:)*dalb(:)+(1.-dls(:))*dicec(:)*dalb(:) & - & +(1.-dls(:))*(1.-dicec(:))*AMIN1(0.05/(zmu0(:)+0.15),0.15) - zra1(:)=dalb(:) - zra2(:)=dalb(:) +! dalb(:)=dls(:)*dalb(:)+(1.-dls(:))*dicec(:)*dalb(:) & +! & +(1.-dls(:))*(1.-dicec(:))*AMIN1(0.05/(zmu0(:)+0.15),0.15) +! zra1(:)=dalb(:) +! zra2(:)=dalb(:) + +! Currently: we use the same albedo for both spectral ranges. + + zra1s(:)=dalb(:)*(1-nstartemp) + dsalb(1,:)*nstartemp + zra2s(:)=dalb(:)*(1-nstartemp) + dsalb(2,:)*nstartemp +! +! set albedo for the direct beam (for ocean use ECHAM3 param unless necham=0) + dsalb(1,:)=dls(:)*dsalb(1,:) + (1.-dls(:)) * dicec(:) * dsalb(1,:) & + & + (1.-dls(:)) * (1.-dicec(:)) * AMIN1(0.05/(zmu0(:)+0.15),0.15) + dsalb(2,:)=dls(:)*dsalb(2,:) + (1.-dls(:)) * dicec(:) * dsalb(2,:) & + & + (1.-dls(:)) * (1.-dicec(:)) * AMIN1(0.05/(zmu0(:)+0.15),0.15) + dalb(:) = dls(:)*dalb(:) + (1.-dls(:)) * dicec(:) * dalb(:) & + & + (1.-dls(:)) * (1.-dicec(:)) * AMIN1(0.05/(zmu0(:)+0.15),0.15) + + zra1(:)=dalb(:)*(1-nstartemp) + dsalb(1,:)*nstartemp + zra2(:)=dalb(:)*(1-nstartemp) + dsalb(2,:)*nstartemp + +! Ice-free ocean albedo is min(0.05/(phi+0.15), 0.15)--reflection and scattering is higher at low phi + endwhere do jlev=NLEV,1,-1 where(losun(:)) @@ -1699,7 +2231,7 @@ module orbconst ! implicit none real, parameter :: ORB_ECCEN_MIN = 0.0 ! minimum value for eccen - real, parameter :: ORB_ECCEN_MAX = 0.1 ! maximum value for eccen + real, parameter :: ORB_ECCEN_MAX = 1.0 ! maximum value for eccen real, parameter :: ORB_OBLIQ_MIN = -90.0 ! minimum value for obliq real, parameter :: ORB_OBLIQ_MAX = +90.0 ! maximum value for obliq real, parameter :: ORB_MVELP_MIN = 0.0 ! minimum value for mvelp @@ -2342,3 +2874,29 @@ subroutine orb_print( iyear_AD, eccen, obliq, mvelp ,mypid,nroot,nud) ! return end subroutine orb_print + +!--------------------------------------------------------------------72 +! +! Read a 2D array from a formatted text file with single-line header + + subroutine readdat(filename,ndim,nitems,kdata) + + character (len=*), intent(in) :: filename + character (len=128) :: header + integer, intent(in) :: ndim + integer, intent(in) :: nitems + real, intent(out) :: kdata(nitems,ndim) + + + open(87,file=filename,form='formatted') + read(87,'(a)') header + + do nl = 1,nitems + read(87,*) kdata(nl,:) + enddo + + close(87) + + + return + end subroutine readdat \ No newline at end of file diff --git a/plasim/src/rainmod.f90 b/plasim/src/rainmod.f90 index 776c6f9d..fadd03d6 100644 --- a/plasim/src/rainmod.f90 +++ b/plasim/src/rainmod.f90 @@ -75,7 +75,7 @@ subroutine rainini if(NTRU==21 .and. NLEV==5) then nshallow=0 endif - if(NTRU==42 .and. NLEV==10) then + if(NTRU==42 .and. NLEV>=10) then gamma=0.007 endif ! @@ -1881,7 +1881,7 @@ subroutine mkclouds !* convective cloud cover for random overlab: ! - zrfac = solar_day * 1000.0 ! convert m/s into mm/day + zrfac = earth_solar_day * 1000.0 ! convert m/s into mm/day (EARTH days!) where(dprc(:) > 0.) zcctot(:)=zcca+zccb*log(dprc(:)*zrfac) zcctot(:)=AMIN1(zccmax,AMAX1(zccmin,zcctot(:))) diff --git a/plasim/src/seamod.f90 b/plasim/src/seamod.f90 index 7b7a1f74..f1999ab2 100644 --- a/plasim/src/seamod.f90 +++ b/plasim/src/seamod.f90 @@ -17,6 +17,7 @@ module seamod real :: drhssea = 1. ! wetness factor sea real :: drhsice = 1. ! " " ice real :: charnock = 0.018 ! albedo for free ocean + ! ! global arrays ! @@ -65,7 +66,7 @@ subroutine seaini use seamod ! namelist/seamod_nl/albsea,albice,dz0sea,dz0ice,drhssea,drhsice & - & ,ncpl_atmos_ice,charnock + & ,ncpl_atmos_ice,charnock,doceanalb,dicealbmn,dicealbmx ! ! read namelist ! @@ -90,6 +91,9 @@ subroutine seaini call mpbcr(drhsice) call mpbci(ncpl_atmos_ice) call mpbcr(charnock) + call mpbcrn(doceanalb,2) + call mpbcrn(dicealbmn,2) + call mpbcrn(dicealbmx,2) ! ! initialize ice (and ocean) ! @@ -141,6 +145,10 @@ subroutine seaini drhs(:)=drhssea*(1.-dicec(:))+drhsice*dicec(:) dalb(:)=albsea*(1.-dicec(:)) & & +dicec(:)*AMIN1(albice,0.5+0.025*(273.-dts(:))) + dsalb(1,:)=doceanalb(1)*(1.-dicec(:)) & + & +dicec(:)*AMIN1(dicealbmx(1),dicealbmn(1)+0.025*(273.-dts(:))) + dsalb(2,:)=doceanalb(2)*(1.-dicec(:)) & + & +dicec(:)*AMIN1(dicealbmx(2),dicealbmn(2)+0.025*(273.-dts(:))) dz0(:)=dz0sea*(1.-dicec(:))+dz0ice*dicec(:) endwhere endif @@ -249,6 +257,10 @@ subroutine seastep drhs(:)=drhssea*(1.-dicec(:))+drhsice*dicec(:) dalb(:)=albsea*(1.-dicec(:)) & & +dicec(:)*AMIN1(albice,0.5+0.025*(273.-dts(:))) + dsalb(1,:)=doceanalb(1)*(1.-dicec(:)) & + & +dicec(:)*AMIN1(dicealbmx(1),dicealbmn(1)+0.025*(273.-dts(:))) + dsalb(2,:)=doceanalb(2)*(1.-dicec(:)) & + & +dicec(:)*AMIN1(dicealbmx(2),dicealbmn(2)+0.025*(273.-dts(:))) dz0(:)=zz0(:)*(1.-dicec(:))+dz0ice*dicec(:) endwhere ! diff --git a/plasim/src/specblock.f90 b/plasim/src/specblock.f90 new file mode 100644 index 00000000..4f6b14f5 --- /dev/null +++ b/plasim/src/specblock.f90 @@ -0,0 +1,1749 @@ + module specblock + +! +! Spectral snow reflectance sourced from the ECOSTRESS spectral library (JPL,JHU,USGS): +! +! Meerdink, S. K., Hook, S. J., Abbott, E.A., & Roberts, D.A. (in prep). +! The ECOSTRESS Spectral Library 1.0. +! Baldridge, A. M., S.J. Hook, C.I. Grove and G. Rivera, 2009.. +! The ASTER Spectral Library Version 2.0. Remote Sensing of Environment, vol 113, pp. 711-715 +! + + real :: snowalbedos(965) = 0.0 !Combined snow spectral albedos + + real :: wavelengths(965) = (/0.3400,0.3500,0.3600,0.3700,0.3800,0.3900,0.4000,0.4100,0.4200, & + & 0.4300,0.4400,0.4500,0.4600,0.4700,0.4800,0.4900,0.5000,0.5100, & + & 0.5200,0.5300,0.5400,0.5500,0.5600,0.5700,0.5800,0.5900,0.6000, & + & 0.6100,0.6200,0.6300,0.6400,0.6500,0.6600,0.6700,0.6800,0.6900, & + & 0.7000,0.7100,0.7200,0.7300,0.7400,0.7500,0.7600,0.7700,0.7800, & + & 0.7900,0.8000,0.8200,0.8400,0.8600,0.8800,0.9000,0.9200,0.9400, & + & 0.9600,0.9800,1.0000,1.0200,1.0400,1.0600,1.0800,1.1000,1.1200, & + & 1.1400,1.1600,1.1800,1.2000,1.2200,1.2400,1.2600,1.2800,1.3000, & + & 1.3200,1.3400,1.3600,1.3800,1.4000,1.4200,1.4400,1.4600,1.4800, & + & 1.5000,1.5200,1.5400,1.5600,1.5800,1.6000,1.6200,1.6400,1.6600, & + & 1.6800,1.7000,1.7200,1.7400,1.7600,1.7800,1.8000,1.8200,1.8400, & + & 1.8600,1.8800,1.9000,1.9200,1.9400,1.9600,1.9800,2.0000,2.0200, & + & 2.0400,2.0600,2.0800,2.1000,2.1200,2.1400,2.1600,2.1800,2.2000, & + & 2.2200,2.2400,2.2500,2.2600,2.2700,2.2800,2.2900,2.3000,2.3100, & + & 2.3200,2.3300,2.3400,2.3500,2.3600,2.3700,2.3800,2.3900,2.4000, & + & 2.4100,2.4200,2.4300,2.4400,2.4500,2.4600,2.4700,2.4800,2.4900, & + & 2.5000,2.5100,2.5200,2.5300,2.5400,2.5500,2.5600,2.5700,2.5800, & + & 2.5900,2.6000,2.6100,2.6200,2.6300,2.6400,2.6500,2.6600,2.6700, & + & 2.6800,2.6900,2.7000,2.7100,2.7200,2.7300,2.7400,2.7500,2.7600, & + & 2.7700,2.7800,2.7900,2.8000,2.8100,2.8200,2.8300,2.8400,2.8500, & + & 2.8600,2.8700,2.8800,2.8900,2.9000,2.9100,2.9200,2.9300,2.9400, & + & 2.9500,2.9600,2.9700,2.9800,2.9900,3.0000,3.0100,3.0200,3.0300, & + & 3.0400,3.0500,3.0600,3.0700,3.0800,3.0900,3.1000,3.1100,3.1200, & + & 3.1300,3.1400,3.1500,3.1600,3.1700,3.1800,3.1900,3.2000,3.2100, & + & 3.2200,3.2300,3.2400,3.2500,3.2600,3.2700,3.2800,3.2900,3.3000, & + & 3.3100,3.3200,3.3300,3.3400,3.3500,3.3600,3.3700,3.3800,3.3900, & + & 3.4000,3.4100,3.4200,3.4300,3.4400,3.4500,3.4600,3.4700,3.4800, & + & 3.4900,3.5000,3.5100,3.5200,3.5300,3.5400,3.5500,3.5600,3.5700, & + & 3.5800,3.5900,3.6000,3.6100,3.6200,3.6300,3.6400,3.6500,3.6600, & + & 3.6700,3.6800,3.6900,3.7000,3.7100,3.7200,3.7300,3.7400,3.7500, & + & 3.7600,3.7700,3.7800,3.7900,3.8000,3.8100,3.8200,3.8300,3.8400, & + & 3.8500,3.8600,3.8700,3.8800,3.8900,3.9000,3.9100,3.9200,3.9300, & + & 3.9400,3.9500,3.9600,3.9700,3.9800,3.9900,4.0000,4.0100,4.0200, & + & 4.0300,4.0400,4.0500,4.0600,4.0700,4.0800,4.0900,4.1000,4.1100, & + & 4.1200,4.1300,4.1400,4.1500,4.1600,4.1700,4.1800,4.1900,4.2000, & + & 4.2100,4.2200,4.2300,4.2400,4.2500,4.2600,4.2700,4.2800,4.2900, & + & 4.3000,4.3100,4.3200,4.3300,4.3400,4.3500,4.3600,4.3700,4.3800, & + & 4.3900,4.4000,4.4100,4.4200,4.4300,4.4400,4.4500,4.4600,4.4700, & + & 4.4800,4.4900,4.5000,4.5100,4.5200,4.5300,4.5400,4.5500,4.5600, & + & 4.5700,4.5800,4.5900,4.6000,4.6100,4.6200,4.6300,4.6400,4.6500, & + & 4.6600,4.6700,4.6800,4.6900,4.7000,4.7100,4.7200,4.7300,4.7400, & + & 4.7500,4.7600,4.7700,4.7800,4.7900,4.8000,4.8100,4.8200,4.8300, & + & 4.8400,4.8500,4.8600,4.8700,4.8800,4.8900,4.9000,4.9100,4.9200, & + & 4.9300,4.9400,4.9500,4.9600,4.9700,4.9800,4.9900,5.0000,5.0100, & + & 5.0200,5.0300,5.0400,5.0500,5.0600,5.0700,5.0800,5.0900,5.1000, & + & 5.1100,5.1200,5.1300,5.1400,5.1500,5.1600,5.1700,5.1800,5.1900, & + & 5.2000,5.2100,5.2200,5.2300,5.2400,5.2500,5.2600,5.2700,5.2800, & + & 5.2900,5.3000,5.3100,5.3200,5.3300,5.3400,5.3500,5.3600,5.3700, & + & 5.3800,5.3900,5.4000,5.4100,5.4200,5.4300,5.4400,5.4500,5.4600, & + & 5.4700,5.4800,5.4900,5.5000,5.5100,5.5200,5.5300,5.5400,5.5500, & + & 5.5600,5.5700,5.5800,5.5900,5.6000,5.6100,5.6200,5.6300,5.6400, & + & 5.6500,5.6600,5.6700,5.6800,5.6900,5.7000,5.7100,5.7200,5.7300, & + & 5.7400,5.7500,5.7600,5.7700,5.7800,5.7900,5.8000,5.8100,5.8200, & + & 5.8300,5.8400,5.8500,5.8600,5.8700,5.8800,5.8900,5.9000,5.9100, & + & 5.9200,5.9300,5.9400,5.9500,5.9600,5.9700,5.9800,5.9900,6.0000, & + & 6.0100,6.0200,6.0300,6.0400,6.0500,6.0600,6.0700,6.0800,6.0900, & + & 6.1000,6.1100,6.1200,6.1300,6.1400,6.1500,6.1600,6.1700,6.1800, & + & 6.1900,6.2000,6.2100,6.2200,6.2300,6.2400,6.2500,6.2600,6.2700, & + & 6.2800,6.2900,6.3000,6.3100,6.3200,6.3300,6.3400,6.3500,6.3600, & + & 6.3700,6.3800,6.3900,6.4000,6.4100,6.4200,6.4300,6.4400,6.4500, & + & 6.4600,6.4700,6.4800,6.4900,6.5000,6.5100,6.5200,6.5300,6.5400, & + & 6.5500,6.5600,6.5700,6.5800,6.5900,6.6000,6.6100,6.6200,6.6300, & + & 6.6400,6.6500,6.6600,6.6700,6.6800,6.6900,6.7000,6.7100,6.7200, & + & 6.7300,6.7400,6.7500,6.7600,6.7700,6.7800,6.7900,6.8000,6.8100, & + & 6.8200,6.8300,6.8400,6.8500,6.8600,6.8700,6.8800,6.8900,6.9000, & + & 6.9100,6.9200,6.9300,6.9400,6.9500,6.9600,6.9700,6.9800,6.9900, & + & 7.0000,7.0100,7.0200,7.0300,7.0400,7.0500,7.0600,7.0700,7.0800, & + & 7.0900,7.1000,7.1100,7.1200,7.1300,7.1400,7.1500,7.1600,7.1700, & + & 7.1800,7.1900,7.2000,7.2100,7.2200,7.2300,7.2400,7.2500,7.2600, & + & 7.2700,7.2800,7.2900,7.3000,7.3100,7.3200,7.3300,7.3400,7.3500, & + & 7.3600,7.3700,7.3800,7.4000,7.4100,7.4200,7.4300,7.4400,7.4500, & + & 7.4600,7.4700,7.4800,7.4900,7.5000,7.5100,7.5200,7.5400,7.5500, & + & 7.5600,7.5700,7.5800,7.5900,7.6000,7.6100,7.6200,7.6300,7.6500, & + & 7.6600,7.6700,7.6800,7.6900,7.7000,7.7100,7.7300,7.7400,7.7500, & + & 7.7600,7.7700,7.7800,7.8000,7.8100,7.8200,7.8300,7.8400,7.8500, & + & 7.8700,7.8800,7.8900,7.9000,7.9100,7.9300,7.9400,7.9500,7.9600, & + & 7.9800,7.9900,8.0000,8.0100,8.0300,8.0400,8.0500,8.0600,8.0800, & + & 8.0900,8.1000,8.1100,8.1300,8.1400,8.1500,8.1600,8.1800,8.1900, & + & 8.2000,8.2200,8.2300,8.2400,8.2600,8.2700,8.2800,8.2900,8.3100, & + & 8.3200,8.3300,8.3500,8.3600,8.3800,8.3900,8.4000,8.4200,8.4300, & + & 8.4400,8.4600,8.4700,8.4800,8.5000,8.5100,8.5300,8.5400,8.5500, & + & 8.5700,8.5800,8.6000,8.6100,8.6300,8.6400,8.6500,8.6700,8.6800, & + & 8.7000,8.7100,8.7300,8.7400,8.7600,8.7700,8.7900,8.8000,8.8200, & + & 8.8300,8.8500,8.8600,8.8800,8.8900,8.9100,8.9200,8.9400,8.9500, & + & 8.9700,8.9800,9.0000,9.0200,9.0300,9.0500,9.0600,9.0800,9.1000, & + & 9.1100,9.1300,9.1400,9.1600,9.1800,9.1900,9.2100,9.2200,9.2400, & + & 9.2600,9.2700,9.2900,9.3100,9.3200,9.3400,9.3600,9.3700,9.3900, & + & 9.4100,9.4300,9.4400,9.4600,9.4800,9.4900,9.5100,9.5300,9.5500, & + & 9.5600,9.5800,9.6000,9.6200,9.6400,9.6500,9.6700,9.6900,9.7100, & + & 9.7300,9.7400,9.7600,9.7800,9.8000,9.8200,9.8400,9.8600,9.8700, & + & 9.8900,9.9100,9.9300,9.9500,9.9700,9.9900,10.0100,10.0300,10.0500, & + & 10.0700,10.0900,10.1100,10.1300,10.1500,10.1700,10.1800,10.2100,10.2300, & + & 10.2500,10.2700,10.2900,10.3100,10.3300,10.3500,10.3700,10.3900,10.4100, & + & 10.4300,10.4500,10.4700,10.4900,10.5200,10.5400,10.5600,10.5800,10.6000, & + & 10.6200,10.6500,10.6700,10.6900,10.7100,10.7300,10.7600,10.7800,10.8000, & + & 10.8200,10.8500,10.8700,10.8900,10.9100,10.9400,10.9600,10.9800,11.0100, & + & 11.0300,11.0500,11.0800,11.1000,11.1200,11.1500,11.1700,11.2000,11.2200, & + & 11.2500,11.2700,11.2900,11.3200,11.3400,11.3700,11.3900,11.4200,11.4400, & + & 11.4700,11.4900,11.5200,11.5500,11.5700,11.6000,11.6200,11.6500,11.6800, & + & 11.7000,11.7300,11.7600,11.7800,11.8100,11.8400,11.8600,11.8900,11.9200, & + & 11.9500,11.9700,12.0000,12.0300,12.0600,12.0800,12.1100,12.1400,12.1700, & + & 12.2000,12.2300,12.2600,12.2800,12.3100,12.3400,12.3700,12.4000,12.4300, & + & 12.4600,12.4900,12.5200,12.5500,12.5800,12.6100,12.6400,12.6800,12.7100, & + & 12.7400,12.7700,12.8000,12.8300,12.8600,12.9000,12.9300,12.9600,12.9900, & + & 13.0300,13.0600,13.0900,13.1200,13.1600,13.1900,13.2200,13.2600,13.2900, & + & 13.3300,13.3600,13.4000,13.4300,13.4700,13.5000,13.5400,13.5700,13.6100, & + & 13.6400,13.6800,13.7100,13.7500,13.7900,13.8200,13.8600,13.9000,13.9400, & + & 13.9700,14.0100/) + + real :: csnowalb(965) = (/96.0980,96.2900,96.4230,96.5490,96.7270,96.8430,96.9870,97.1520,97.2650, & + & 97.4450,97.5050,97.8490,97.9080,97.8730,97.7810,97.7360,97.6340,97.5820, & + & 97.5280,97.4620,97.2960,97.1630,97.1230,97.0590,96.8980,96.7230,96.3570, & + & 95.5080,95.6910,95.2990,94.9000,94.5670,94.2170,93.6110,93.6190,93.1990, & + & 92.5050,92.0360,91.5250,91.2130,90.6720,89.9820,89.1350,88.1980,87.0520, & + & 86.4820,85.8460,85.2430,85.2360,82.8540,79.3290,77.3930,76.2460,74.9770, & + & 71.6990,67.0850,60.8970,57.4940,57.1240,60.0210,62.2260,62.7290,61.9590, & + & 59.0470,54.5580,47.3760,41.5390,34.0440,31.5480,30.3300,30.5110,30.8370, & + & 31.1360,31.2110,30.2540,28.7190,25.1350,11.2590,2.3120,1.0520,0.6190, & + & 0.5090,0.5610,0.6340,0.8010,1.0100,1.1870,1.4250,1.8840,2.4420, & + & 3.0950,3.7230,4.2260,4.7940,5.3750,6.1670,7.0920,8.1850,9.2150, & + & 7.5990,3.0310,1.2170,0.5350,0.3380,0.2420,0.2040,0.2000,0.2070, & + & 0.2260,0.2610,0.3140,0.4210,0.6530,1.0260,1.4710,1.9870,2.6210, & + & 3.3170,3.6960,3.6770,3.5800,3.3610,3.0840,2.7980,2.5400,2.3020, & + & 2.1370,2.0200,1.9140,1.8110,1.7500,1.7000,1.6820,1.6370,1.6010, & + & 1.6030,1.5740,1.5560,1.5080,1.4980,1.4850,1.4660,1.4530,1.4370, & + & 1.3800,1.3590,1.3670,1.3510,1.3070,1.3150,1.3290,1.2940,1.3010, & + & 1.2920,1.2700,1.2390,1.2150,1.1570,1.1370,1.0880,1.0650,1.0010, & + & 0.9250,0.8920,0.8090,0.7620,0.7060,0.6460,0.6050,0.5840,0.5840, & + & 0.5250,0.4850,0.4820,0.4300,0.4150,0.4000,0.3990,0.3940,0.4130, & + & 0.4420,0.4660,0.5250,0.6480,0.7990,0.9970,1.1950,1.4360,1.7020, & + & 1.9030,2.0990,2.2790,2.4280,2.6390,2.8780,3.2290,3.6490,4.1500, & + & 4.6890,5.3580,5.9130,6.4650,6.7620,6.8220,6.6880,6.3590,6.0790, & + & 5.8940,5.7770,5.7110,5.6730,5.6280,5.5760,5.4410,5.3060,5.0970, & + & 4.8930,4.6840,4.4740,4.3040,4.1440,3.9930,3.8770,3.7490,3.6490, & + & 3.5630,3.4740,3.3850,3.3020,3.2380,3.2010,3.1450,3.0470,2.9840, & + & 2.9590,2.9320,2.8880,2.8330,2.7710,2.7260,2.7030,2.6570,2.6100, & + & 2.5860,2.5670,2.5300,2.4780,2.4840,2.4590,2.4290,2.4070,2.3850, & + & 2.3810,2.3670,2.3480,2.3140,2.2960,2.3010,2.2700,2.2490,2.2400, & + & 2.2150,2.2070,2.1990,2.1840,2.1490,2.1610,2.1580,2.1240,2.1190, & + & 2.1150,2.0950,2.0830,2.0800,2.0720,2.0540,2.0460,2.0490,2.0530, & + & 2.0370,2.0050,2.0050,2.0090,1.9850,1.9670,1.9620,1.9640,1.9610, & + & 1.9600,1.9560,1.9350,1.9280,1.9290,1.9230,1.9240,1.9160,1.9020, & + & 1.9000,1.8830,1.8570,1.8670,1.8880,1.8740,1.8520,1.8570,1.8600, & + & 1.8480,1.8440,1.8440,1.8340,1.8330,1.8320,1.8230,1.8330,1.8350, & + & 1.8120,1.7980,1.8020,1.8090,1.8040,1.8010,1.7990,1.7940,1.7950, & + & 1.8000,1.7930,1.7810,1.7830,1.7940,1.7940,1.7850,1.7820,1.7790, & + & 1.7830,1.7910,1.7960,1.7980,1.7830,1.7810,1.8070,1.8270,1.8230, & + & 1.8150,1.8170,1.8190,1.8160,1.8190,1.8280,1.8320,1.8340,1.8400, & + & 1.8420,1.8410,1.8420,1.8430,1.8510,1.8640,1.8700,1.8700,1.8640, & + & 1.8570,1.8520,1.8490,1.8490,1.8510,1.8480,1.8370,1.8250,1.8230, & + & 1.8230,1.8150,1.8110,1.8190,1.8290,1.8220,1.8090,1.8030,1.8010, & + & 1.7990,1.7970,1.7950,1.7920,1.7880,1.7870,1.7880,1.7850,1.7800, & + & 1.7810,1.7860,1.7840,1.7740,1.7640,1.7540,1.7450,1.7420,1.7430, & + & 1.7470,1.7490,1.7440,1.7360,1.7330,1.7330,1.7300,1.7210,1.7080, & + & 1.7010,1.7060,1.7150,1.7100,1.6950,1.6830,1.6830,1.6840,1.6770, & + & 1.6630,1.6550,1.6510,1.6510,1.6530,1.6560,1.6580,1.6530,1.6460, & + & 1.6440,1.6440,1.6400,1.6270,1.6190,1.6260,1.6360,1.6430,1.6390, & + & 1.6260,1.6110,1.6010,1.5920,1.5860,1.5840,1.5800,1.5730,1.5650, & + & 1.5600,1.5570,1.5580,1.5670,1.5740,1.5710,1.5530,1.5360,1.5320, & + & 1.5360,1.5390,1.5360,1.5280,1.5170,1.5120,1.5140,1.5180,1.5150, & + & 1.5040,1.4940,1.4920,1.4940,1.4890,1.4740,1.4590,1.4550,1.4630, & + & 1.4700,1.4680,1.4620,1.4600,1.4640,1.4730,1.4820,1.4830,1.4770, & + & 1.4720,1.4710,1.4730,1.4700,1.4620,1.4490,1.4370,1.4350,1.4400, & + & 1.4520,1.4610,1.4640,1.4660,1.4710,1.4820,1.4940,1.4990,1.4970, & + & 1.4940,1.4940,1.4950,1.4970,1.4980,1.5050,1.5200,1.5370,1.5500, & + & 1.5560,1.5570,1.5550,1.5540,1.5510,1.5490,1.5500,1.5540,1.5590, & + & 1.5660,1.5710,1.5740,1.5750,1.5740,1.5710,1.5700,1.5750,1.5830, & + & 1.5970,1.6070,1.6080,1.6050,1.6020,1.6020,1.6050,1.6130,1.6200, & + & 1.6220,1.6170,1.6060,1.5980,1.5940,1.6020,1.6240,1.6410,1.6550, & + & 1.6640,1.6640,1.6630,1.6640,1.6650,1.6650,1.6610,1.6570,1.6540, & + & 1.6540,1.6610,1.6690,1.6770,1.6820,1.6840,1.6810,1.6780,1.6770, & + & 1.6780,1.6820,1.6870,1.6900,1.6920,1.6950,1.6990,1.7030,1.7040, & + & 1.6990,1.6930,1.6870,1.6820,1.6780,1.6740,1.6690,1.6640,1.6600, & + & 1.6580,1.6570,1.6600,1.6650,1.6730,1.6810,1.6900,1.6920,1.6900, & + & 1.6870,1.6830,1.6810,1.6800,1.6800,1.6820,1.6860,1.6890,1.6930, & + & 1.6950,1.6950,1.6930,1.6900,1.6890,1.6890,1.6890,1.6870,1.6820, & + & 1.6760,1.6690,1.6640,1.6620,1.6640,1.6680,1.6730,1.6750,1.6740, & + & 1.6710,1.6660,1.6610,1.6580,1.6550,1.6520,1.6490,1.6470,1.6470, & + & 1.6470,1.6460,1.6430,1.6390,1.6330,1.6260,1.6210,1.6170,1.6150, & + & 1.6140,1.6140,1.6160,1.6190,1.6250,1.6290,1.6300,1.6250,1.6140, & + & 1.5980,1.5800,1.5670,1.5620,1.5660,1.5770,1.5900,1.5990,1.6010, & + & 1.5960,1.5850,1.5730,1.5620,1.5550,1.5520,1.5530,1.5550,1.5580, & + & 1.5590,1.5570,1.5530,1.5490,1.5460,1.5440,1.5450,1.5460,1.5470, & + & 1.5470,1.5460,1.5460,1.5450,1.5450,1.5440,1.5430,1.5380,1.5330, & + & 1.5260,1.5220,1.5200,1.5230,1.5280,1.5320,1.5340,1.5330,1.5310, & + & 1.5290,1.5300,1.5330,1.5360,1.5390,1.5390,1.5380,1.5360,1.5330, & + & 1.5290,1.5260,1.5240,1.5250,1.5300,1.5370,1.5450,1.5510,1.5530, & + & 1.5500,1.5450,1.5390,1.5320,1.5250,1.5180,1.5120,1.5090,1.5100, & + & 1.5140,1.5190,1.5240,1.5260,1.5260,1.5250,1.5230,1.5240,1.5260, & + & 1.5280,1.5270,1.5210,1.5110,1.4970,1.4830,1.4720,1.4660,1.4650, & + & 1.4680,1.4740,1.4800,1.4850,1.4880,1.4900,1.4900,1.4900,1.4900, & + & 1.4880,1.4850,1.4790,1.4720,1.4660,1.4620,1.4620,1.4650,1.4710, & + & 1.4750,1.4730,1.4660,1.4560,1.4480,1.4460,1.4510,1.4620,1.4700, & + & 1.4700,1.4610,1.4450,1.4260,1.4110,1.4050,1.4060,1.4120,1.4180, & + & 1.4230,1.4230,1.4210,1.4180,1.4140,1.4090,1.4040,1.3970,1.3900, & + & 1.3840,1.3790,1.3740,1.3690,1.3610,1.3510,1.3420,1.3330,1.3270, & + & 1.3230,1.3210,1.3160,1.3080,1.2980,1.2830,1.2660,1.2470,1.2300, & + & 1.2160,1.2090,1.2070,1.2110,1.2160,1.2170,1.2110,1.2000,1.1820, & + & 1.1610,1.1390,1.1170,1.0970,1.0790,1.0630,1.0490,1.0380,1.0280, & + & 1.0190,1.0080,0.9950,0.9810,0.9660,0.9530,0.9430,0.9340,0.9280, & + & 0.9220,0.9190,0.9150,0.9090,0.9000,0.8860,0.8660,0.8400,0.8130, & + & 0.7900,0.7760,0.7710,0.7730,0.7780,0.7790,0.7760,0.7680,0.7580, & + & 0.7520,0.7520,0.7560,0.7630,0.7730,0.7870,0.8020,0.8210,0.8450, & + & 0.8730,0.9050,0.9410,0.9840,1.0310,1.0810,1.1290,1.1760,1.2210, & + & 1.2650,1.3120,1.3630,1.4180,1.4750,1.5310,1.5880,1.6460,1.7070, & + & 1.7710,1.8370,1.9030,1.9660,2.0250,2.0820,2.1390,2.1980,2.2590, & + & 2.3200,2.3810,2.4400,2.4950,2.5490,2.6030,2.6580,2.7140,2.7720, & + & 2.8310,2.8910,2.9500,3.0030,3.0490,3.0880,3.1210,3.1510,3.1840, & + & 3.2200,3.2600,3.3040,3.3480,3.3930,3.4370,3.4820,3.5280,3.5770, & + & 3.6290,3.6840,3.7400,3.7950,3.8480,3.8950,3.9400,3.9830,4.0240, & + & 4.0640,4.1060,4.1460,4.1840,4.2180,4.2480,4.2750,4.2960,4.3130, & + & 4.3300,4.3470,4.3670,4.3890,4.4130,4.4390,4.4630,4.4850,4.5050, & + & 4.5230,4.5360,4.5420,4.5400,4.5330,4.5250,4.5190,4.5170,4.5200, & + & 4.5230,4.5240,4.5230,4.5190,4.5110,4.5000,4.4850,4.4660,4.4440, & + & 4.4260,4.4210,4.4280,4.4450,4.4640,4.4760,4.4770,4.4660,4.4490, & + & 4.4310,4.4120,4.3870,4.3540,4.3120,4.2670,4.2260,4.1950,4.1810, & + & 4.1740,4.1600 /) + + real :: msnowalb(965) = (/97.3810,97.4320,97.5420,97.6360,97.8130,97.8360,97.9740,98.0590,98.2080, & + & 98.2900,98.3790,98.5380,98.5360,98.5780,98.5650,98.5220,98.4490,98.3590, & + & 98.3240,98.2340,98.1110,98.1510,98.0970,98.0130,97.9010,97.6920,97.5250, & + & 97.2970,97.0760,96.8090,96.5850,95.9750,96.0250,95.7930,95.6150,95.3290, & + & 94.9490,94.5520,94.1700,93.9720,93.6170,93.0600,92.4990,91.8540,91.1910, & + & 90.3890,90.0660,89.9020,89.7670,88.0740,85.4770,83.9870,83.3810,82.3000, & + & 79.7740,76.1730,72.4830,68.6590,67.9870,70.8230,72.4330,72.8880,72.3670, & + & 70.0170,66.2320,60.1390,55.0300,48.2160,44.6580,44.5010,44.3870,44.9400, & + & 45.1580,45.0200,43.8600,42.6350,38.9960,21.5660,6.4470,3.2650,1.9890, & + & 1.6340,1.8050,2.0320,2.5540,3.1620,3.6430,4.2570,5.4520,6.7560, & + & 8.1060,9.4780,10.5090,11.7060,12.7990,13.9730,15.5850,17.2010,19.1400, & + & 16.5080,8.1560,3.7400,1.7400,1.0750,0.7150,0.5580,0.5410,0.5740, & + & 0.6560,0.7920,0.9950,1.3730,2.1160,3.1900,4.4140,5.6970,7.0460, & + & 8.6660,9.6390,9.5940,9.1440,8.3630,7.3170,6.2050,5.2290,4.4140, & + & 3.7100,3.2060,2.8250,2.5330,2.3520,2.2160,2.1170,2.0610,1.9720, & + & 1.9510,1.8750,1.8350,1.8090,1.7320,1.6840,1.6250,1.5760,1.5420, & + & 1.5030,1.4790,1.4690,1.4600,1.4210,1.4290,1.4430,1.4510,1.4390, & + & 1.4190,1.3970,1.3610,1.3150,1.2530,1.1880,1.1020,1.0230,0.9270, & + & 0.8490,0.7560,0.6740,0.5800,0.5480,0.5070,0.4470,0.4310,0.4230, & + & 0.3880,0.3780,0.3570,0.3310,0.3130,0.3040,0.2910,0.2740,0.2760, & + & 0.2910,0.3120,0.3660,0.4360,0.5410,0.6910,0.8110,0.9300,1.0700, & + & 1.1630,1.2620,1.3780,1.4420,1.5570,1.6740,1.8370,2.0640,2.3210, & + & 2.6550,3.0310,3.3710,3.6570,3.8060,3.7920,3.6440,3.4540,3.2730, & + & 3.1290,3.0500,3.0170,3.0000,2.9650,2.9180,2.8580,2.7630,2.6530, & + & 2.5330,2.4230,2.3380,2.2430,2.1580,2.0780,2.0320,1.9920,1.9490, & + & 1.9060,1.8750,1.8390,1.8180,1.8090,1.7800,1.7620,1.7490,1.7380, & + & 1.7240,1.6960,1.7000,1.7070,1.6810,1.6570,1.6590,1.6550,1.6480, & + & 1.6400,1.6310,1.6300,1.6200,1.6030,1.5890,1.5840,1.5840,1.5760, & + & 1.5690,1.5620,1.5500,1.5430,1.5420,1.5310,1.5110,1.5070,1.5110, & + & 1.5060,1.4940,1.4830,1.4660,1.4530,1.4590,1.4600,1.4450,1.4280, & + & 1.4170,1.4070,1.4000,1.3970,1.3890,1.3800,1.3740,1.3600,1.3470, & + & 1.3460,1.3450,1.3320,1.3170,1.3120,1.3110,1.3060,1.2990,1.2950, & + & 1.2900,1.2770,1.2670,1.2640,1.2550,1.2460,1.2460,1.2460,1.2390, & + & 1.2280,1.2160,1.2100,1.2100,1.2120,1.2090,1.2020,1.1930,1.1900, & + & 1.1910,1.1920,1.1920,1.1880,1.1860,1.1840,1.1750,1.1610,1.1510, & + & 1.1460,1.1450,1.1450,1.1460,1.1460,1.1440,1.1420,1.1410,1.1400, & + & 1.1380,1.1330,1.1280,1.1210,1.1150,1.1120,1.1120,1.1100,1.1080, & + & 1.1070,1.1070,1.1060,1.1080,1.1190,1.1280,1.1270,1.1200,1.1190, & + & 1.1250,1.1290,1.1280,1.1280,1.1320,1.1370,1.1430,1.1500,1.1570, & + & 1.1620,1.1660,1.1680,1.1700,1.1740,1.1800,1.1830,1.1830,1.1840, & + & 1.1840,1.1840,1.1810,1.1780,1.1760,1.1790,1.1850,1.1920,1.1950, & + & 1.1950,1.1910,1.1860,1.1830,1.1820,1.1830,1.1810,1.1770,1.1730, & + & 1.1710,1.1750,1.1830,1.1900,1.1930,1.1900,1.1820,1.1780,1.1780, & + & 1.1810,1.1830,1.1850,1.1870,1.1860,1.1810,1.1750,1.1720,1.1700, & + & 1.1710,1.1710,1.1710,1.1700,1.1670,1.1650,1.1620,1.1570,1.1520, & + & 1.1470,1.1450,1.1420,1.1370,1.1290,1.1210,1.1180,1.1170,1.1170, & + & 1.1140,1.1110,1.1070,1.1040,1.1020,1.1020,1.1020,1.0990,1.0950, & + & 1.0900,1.0850,1.0800,1.0760,1.0740,1.0730,1.0720,1.0720,1.0730, & + & 1.0720,1.0690,1.0640,1.0580,1.0520,1.0490,1.0490,1.0500,1.0480, & + & 1.0460,1.0430,1.0390,1.0320,1.0260,1.0200,1.0130,1.0080,1.0050, & + & 1.0040,1.0040,1.0050,1.0080,1.0100,1.0080,1.0020,0.9900,0.9820, & + & 0.9750,0.9700,0.9670,0.9630,0.9600,0.9560,0.9510,0.9450,0.9380, & + & 0.9340,0.9330,0.9340,0.9360,0.9360,0.9340,0.9300,0.9260,0.9220, & + & 0.9220,0.9260,0.9310,0.9350,0.9370,0.9340,0.9280,0.9190,0.9100, & + & 0.9040,0.8990,0.8970,0.8960,0.8960,0.8960,0.8980,0.9020,0.9060, & + & 0.9090,0.9090,0.9070,0.9000,0.8910,0.8850,0.8820,0.8840,0.8890, & + & 0.8930,0.8970,0.9000,0.9010,0.9030,0.9040,0.9050,0.9070,0.9070, & + & 0.9080,0.9090,0.9090,0.9110,0.9120,0.9130,0.9140,0.9150,0.9160, & + & 0.9170,0.9180,0.9190,0.9200,0.9220,0.9230,0.9240,0.9270,0.9280, & + & 0.9290,0.9300,0.9320,0.9340,0.9380,0.9460,0.9540,0.9590,0.9640, & + & 0.9690,0.9730,0.9750,0.9770,0.9800,0.9830,0.9850,0.9870,0.9890, & + & 0.9930,0.9950,0.9960,0.9970,0.9980,0.9970,0.9970,0.9960,0.9960, & + & 0.9960,0.9960,0.9970,0.9980,0.9990,1.0000,1.0010,1.0020,1.0010, & + & 1.0000,0.9980,0.9970,0.9950,0.9940,0.9930,0.9920,0.9900,0.9890, & + & 0.9880,0.9860,0.9850,0.9840,0.9850,0.9870,0.9930,0.9990,1.0030, & + & 1.0060,1.0090,1.0100,1.0100,1.0100,1.0100,1.0110,1.0130,1.0140, & + & 1.0170,1.0190,1.0200,1.0200,1.0180,1.0160,1.0130,1.0110,1.0110, & + & 1.0120,1.0150,1.0190,1.0230,1.0270,1.0300,1.0300,1.0300,1.0270, & + & 1.0240,1.0210,1.0170,1.0140,1.0120,1.0100,1.0080,1.0060,1.0030, & + & 1.0010,0.9980,0.9940,0.9910,0.9880,0.9860,0.9840,0.9820,0.9800, & + & 0.9790,0.9770,0.9760,0.9750,0.9730,0.9720,0.9710,0.9700,0.9690, & + & 0.9690,0.9680,0.9680,0.9670,0.9670,0.9660,0.9650,0.9630,0.9600, & + & 0.9580,0.9550,0.9530,0.9520,0.9510,0.9500,0.9500,0.9500,0.9500, & + & 0.9500,0.9510,0.9510,0.9520,0.9520,0.9520,0.9520,0.9510,0.9490, & + & 0.9470,0.9460,0.9440,0.9440,0.9440,0.9450,0.9470,0.9490,0.9510, & + & 0.9530,0.9540,0.9540,0.9540,0.9530,0.9510,0.9490,0.9480,0.9460, & + & 0.9440,0.9430,0.9410,0.9410,0.9410,0.9410,0.9410,0.9410,0.9400, & + & 0.9390,0.9380,0.9370,0.9360,0.9360,0.9370,0.9390,0.9420,0.9460, & + & 0.9490,0.9530,0.9580,0.9610,0.9630,0.9640,0.9630,0.9600,0.9560, & + & 0.9500,0.9430,0.9350,0.9280,0.9220,0.9180,0.9160,0.9160,0.9170, & + & 0.9200,0.9230,0.9260,0.9270,0.9260,0.9230,0.9190,0.9140,0.9100, & + & 0.9060,0.9020,0.9010,0.8990,0.8990,0.8980,0.8980,0.8990,0.9000, & + & 0.9010,0.9010,0.9020,0.9030,0.9020,0.9010,0.8990,0.8970,0.8950, & + & 0.8940,0.8930,0.8920,0.8910,0.8900,0.8890,0.8880,0.8870,0.8870, & + & 0.8860,0.8860,0.8840,0.8820,0.8770,0.8710,0.8630,0.8540,0.8460, & + & 0.8400,0.8350,0.8330,0.8350,0.8380,0.8430,0.8500,0.8570,0.8630, & + & 0.8670,0.8690,0.8680,0.8640,0.8580,0.8500,0.8410,0.8310,0.8210, & + & 0.8110,0.8030,0.7960,0.7900,0.7840,0.7790,0.7750,0.7700,0.7650, & + & 0.7600,0.7530,0.7460,0.7370,0.7260,0.7160,0.7060,0.6970,0.6910, & + & 0.6860,0.6830,0.6810,0.6800,0.6770,0.6730,0.6650,0.6560,0.6440, & + & 0.6320,0.6190,0.6080,0.5980,0.5900,0.5840,0.5790,0.5750,0.5710, & + & 0.5670,0.5600,0.5520,0.5420,0.5320,0.5210,0.5110,0.5020,0.4960, & + & 0.4910,0.4870,0.4840,0.4820,0.4790,0.4760,0.4730,0.4710,0.4700, & + & 0.4710,0.4740,0.4790,0.4860,0.4960,0.5080,0.5230,0.5400,0.5590, & + & 0.5790,0.5990,0.6200,0.6410,0.6630,0.6860,0.7110,0.7380,0.7680, & + & 0.7990,0.8330,0.8670,0.9010,0.9350,0.9680,1.0010,1.0330,1.0650, & + & 1.0970,1.1290,1.1620,1.1940,1.2270,1.2590,1.2910,1.3230,1.3550, & + & 1.3860,1.4170,1.4450,1.4730,1.4980,1.5220,1.5440,1.5650,1.5850, & + & 1.6060,1.6270,1.6470,1.6680,1.6900,1.7120,1.7350,1.7580,1.7810, & + & 1.8040,1.8270,1.8480,1.8700,1.8900,1.9100,1.9290,1.9470,1.9640, & + & 1.9810,1.9980,2.0150,2.0310,2.0490,2.0670,2.0850,2.1030,2.1210, & + & 2.1390,2.1550,2.1710,2.1870,2.2030,2.2180,2.2330,2.2480,2.2620, & + & 2.2740,2.2850,2.2960,2.3040,2.3120,2.3180,2.3220,2.3260,2.3300, & + & 2.3340,2.3390,2.3460,2.3540,2.3630,2.3720,2.3800,2.3860,2.3890, & + & 2.3890,2.3860,2.3810,2.3750,2.3680,2.3620,2.3560,2.3510,2.3460, & + & 2.3420,2.3390,2.3360,2.3340,2.3330,2.3310,2.3290,2.3260,2.3220, & + & 2.3180,2.3130,2.3100,2.3090,2.3080,2.3090,2.3080,2.3040,2.2960, & + & 2.2810,2.2600 /) + + real :: fsnowalb(965) = (/98.5210,98.6350,98.6700,98.7120,98.7790,98.8680,98.8450,98.9540,98.9610, & + & 99.0500,99.1250,99.2070,99.2820,99.2250,99.1880,99.2370,99.0990,99.1030, & + & 99.1020,99.1160,98.9910,98.9690,98.9930,98.9200,98.8790,98.7640,98.6570, & + & 98.5730,98.3690,98.2560,98.1060,97.7940,97.7790,97.7460,97.6460,97.4890, & + & 96.7700,97.0330,96.7160,96.6300,96.2220,95.9270,95.4900,95.5320,95.1660, & + & 94.6110,94.6240,94.5270,94.3100,93.3850,91.5990,91.2340,90.6630,90.1130, & + & 88.4780,86.1840,83.8720,82.0690,81.4550,83.1620,82.1010,84.7800,84.4700, & + & 82.9290,80.1690,75.9630,65.0150,67.5290,65.9010,64.8110,64.6430,65.2040, & + & 63.2540,65.8620,65.4960,64.2190,60.9990,44.1790,20.6330,13.9170,9.8620, & + & 8.5270,9.1870,9.9920,11.9100,13.6980,15.3350,16.5310,20.2890,20.9180, & + & 24.5220,28.3510,28.3660,29.4560,32.7410,35.2040,36.9860,38.7430,40.9240, & + & 37.5480,24.9240,15.3950,9.0950,6.2970,4.4940,3.6270,3.5060,3.6890, & + & 4.2150,5.0350,6.1990,8.1690,11.1840,13.9240,17.5410,20.1650,22.8010, & + & 26.3190,28.3300,27.8650,26.8480,25.0320,22.5830,19.9560,17.5520,15.3820, & + & 13.3700,11.7490,10.4760,9.5200,8.8530,8.3410,8.0240,7.7990,7.6360, & + & 7.4400,7.2310,6.9970,6.7890,6.5870,6.3510,6.1360,5.9150,5.7040, & + & 5.5560,5.4300,5.3400,5.2720,5.2760,5.2940,5.3000,5.3570,5.3790, & + & 5.2740,5.2360,5.1410,4.9320,4.6360,4.4280,4.0220,3.5180,2.8720, & + & 2.3400,1.7760,1.3320,0.9540,0.6770,0.5140,0.3780,0.3210,0.2640, & + & 0.2400,0.2350,0.2140,0.1900,0.1930,0.1480,0.1660,0.1710,0.1600, & + & 0.2100,0.1690,0.2100,0.2460,0.3040,0.3370,0.4280,0.5060,0.5860, & + & 0.6630,0.7190,0.7860,0.7970,0.8760,0.9160,1.0290,1.1780,1.2890, & + & 1.4920,1.7850,2.0290,2.3160,2.5890,2.7750,2.7460,2.5550,2.3160, & + & 2.1490,2.0570,2.0130,2.0030,2.0260,2.0420,2.0510,1.9820,1.9340, & + & 1.8640,1.7710,1.7000,1.6370,1.5850,1.5150,1.4780,1.4190,1.3810, & + & 1.3340,1.3090,1.3030,1.2660,1.2370,1.2160,1.2230,1.2200,1.1860, & + & 1.1730,1.1720,1.1580,1.1530,1.1390,1.1320,1.1310,1.1460,1.1470, & + & 1.1490,1.1580,1.1700,1.1670,1.1720,1.1860,1.2030,1.2210,1.2150, & + & 1.2240,1.2520,1.2750,1.2840,1.2860,1.2800,1.2810,1.2800,1.2860, & + & 1.2830,1.2730,1.2630,1.2360,1.2300,1.2140,1.1780,1.1460,1.1430, & + & 1.1320,1.0970,1.0680,1.0480,1.0360,1.0100,0.9780,0.9690,0.9610, & + & 0.9390,0.9150,0.9050,0.8920,0.8870,0.8840,0.8730,0.8470,0.8370, & + & 0.8390,0.8280,0.8120,0.7950,0.7960,0.7960,0.7840,0.7710,0.7670, & + & 0.7590,0.7550,0.7580,0.7540,0.7450,0.7320,0.7250,0.7280,0.7230, & + & 0.7210,0.7200,0.7140,0.7200,0.7180,0.7050,0.7050,0.7060,0.6910, & + & 0.6810,0.6860,0.6870,0.6690,0.6610,0.6700,0.6720,0.6560,0.6470, & + & 0.6550,0.6580,0.6510,0.6460,0.6410,0.6400,0.6400,0.6390,0.6380, & + & 0.6380,0.6320,0.6290,0.6350,0.6320,0.6360,0.6470,0.6460,0.6390, & + & 0.6350,0.6380,0.6430,0.6400,0.6280,0.6310,0.6540,0.6740,0.6740, & + & 0.6630,0.6560,0.6540,0.6560,0.6660,0.6730,0.6680,0.6630,0.6640, & + & 0.6700,0.6720,0.6710,0.6760,0.6880,0.6940,0.6880,0.6790,0.6820, & + & 0.6870,0.6880,0.6900,0.6930,0.6950,0.6990,0.7030,0.7020,0.7000, & + & 0.7000,0.7040,0.7110,0.7190,0.7290,0.7330,0.7330,0.7370,0.7390, & + & 0.7330,0.7290,0.7350,0.7440,0.7440,0.7290,0.7220,0.7310,0.7400, & + & 0.7380,0.7290,0.7270,0.7340,0.7420,0.7420,0.7350,0.7280,0.7210, & + & 0.7190,0.7200,0.7190,0.7110,0.7010,0.6960,0.6970,0.6950,0.6890, & + & 0.6820,0.6770,0.6730,0.6660,0.6560,0.6470,0.6430,0.6460,0.6500, & + & 0.6490,0.6420,0.6310,0.6250,0.6230,0.6200,0.6140,0.6090,0.6090, & + & 0.6130,0.6090,0.5980,0.5860,0.5770,0.5800,0.5820,0.5780,0.5660, & + & 0.5590,0.5610,0.5680,0.5730,0.5730,0.5700,0.5600,0.5490,0.5430, & + & 0.5410,0.5400,0.5380,0.5360,0.5310,0.5270,0.5190,0.5090,0.5050, & + & 0.5060,0.5080,0.5080,0.5030,0.4990,0.4970,0.4980,0.5000,0.4980, & + & 0.4910,0.4800,0.4720,0.4750,0.4840,0.4910,0.4890,0.4770,0.4640, & + & 0.4640,0.4720,0.4780,0.4740,0.4630,0.4510,0.4460,0.4520,0.4590, & + & 0.4620,0.4600,0.4580,0.4540,0.4520,0.4520,0.4560,0.4610,0.4640, & + & 0.4610,0.4530,0.4450,0.4350,0.4330,0.4430,0.4580,0.4660,0.4630, & + & 0.4560,0.4470,0.4460,0.4500,0.4530,0.4510,0.4420,0.4330,0.4320, & + & 0.4350,0.4450,0.4530,0.4630,0.4700,0.4730,0.4740,0.4750,0.4770, & + & 0.4770,0.4770,0.4750,0.4720,0.4700,0.4700,0.4710,0.4720,0.4700, & + & 0.4660,0.4580,0.4500,0.4460,0.4440,0.4490,0.4580,0.4660,0.4710, & + & 0.4740,0.4730,0.4720,0.4730,0.4760,0.4780,0.4790,0.4800,0.4810, & + & 0.4850,0.4880,0.4900,0.4920,0.4920,0.4910,0.4860,0.4830,0.4830, & + & 0.4860,0.4970,0.5090,0.5140,0.5160,0.5140,0.5110,0.5100,0.5120, & + & 0.5160,0.5180,0.5170,0.5120,0.5050,0.4990,0.4950,0.4980,0.5020, & + & 0.5040,0.5030,0.4980,0.4930,0.4900,0.4910,0.4980,0.5080,0.5130, & + & 0.5160,0.5180,0.5190,0.5190,0.5190,0.5200,0.5210,0.5240,0.5270, & + & 0.5300,0.5310,0.5260,0.5150,0.5060,0.4990,0.4950,0.4960,0.5000, & + & 0.5060,0.5120,0.5150,0.5160,0.5140,0.5110,0.5090,0.5070,0.5070, & + & 0.5090,0.5110,0.5110,0.5080,0.5020,0.4930,0.4860,0.4820,0.4820, & + & 0.4860,0.4920,0.4960,0.4960,0.4930,0.4880,0.4820,0.4790,0.4760, & + & 0.4760,0.4760,0.4760,0.4760,0.4780,0.4800,0.4810,0.4820,0.4830, & + & 0.4820,0.4800,0.4770,0.4740,0.4700,0.4670,0.4650,0.4630,0.4610, & + & 0.4580,0.4550,0.4540,0.4550,0.4600,0.4680,0.4770,0.4850,0.4910, & + & 0.4920,0.4890,0.4830,0.4750,0.4690,0.4650,0.4650,0.4670,0.4710, & + & 0.4760,0.4800,0.4820,0.4820,0.4810,0.4790,0.4760,0.4750,0.4750, & + & 0.4750,0.4750,0.4750,0.4740,0.4720,0.4710,0.4700,0.4700,0.4720, & + & 0.4720,0.4720,0.4700,0.4660,0.4630,0.4590,0.4570,0.4560,0.4570, & + & 0.4600,0.4640,0.4700,0.4760,0.4800,0.4830,0.4820,0.4810,0.4790, & + & 0.4770,0.4750,0.4750,0.4740,0.4740,0.4750,0.4770,0.4790,0.4790, & + & 0.4760,0.4710,0.4640,0.4590,0.4560,0.4560,0.4570,0.4570,0.4550, & + & 0.4520,0.4500,0.4510,0.4550,0.4610,0.4660,0.4700,0.4700,0.4700, & + & 0.4680,0.4650,0.4620,0.4580,0.4540,0.4510,0.4490,0.4490,0.4510, & + & 0.4550,0.4620,0.4710,0.4800,0.4860,0.4870,0.4820,0.4710,0.4590, & + & 0.4490,0.4420,0.4410,0.4430,0.4450,0.4450,0.4430,0.4410,0.4420, & + & 0.4460,0.4510,0.4540,0.4560,0.4530,0.4480,0.4440,0.4420,0.4450, & + & 0.4510,0.4590,0.4670,0.4750,0.4800,0.4820,0.4830,0.4830,0.4790, & + & 0.4720,0.4650,0.4590,0.4560,0.4570,0.4620,0.4680,0.4750,0.4810, & + & 0.4860,0.4910,0.4950,0.4990,0.5000,0.4970,0.4920,0.4850,0.4790, & + & 0.4730,0.4670,0.4570,0.4440,0.4280,0.4120,0.3980,0.3890,0.3850, & + & 0.3830,0.3800,0.3710,0.3580,0.3410,0.3250,0.3130,0.3070,0.3060, & + & 0.3090,0.3090,0.3050,0.2980,0.2890,0.2790,0.2680,0.2600,0.2530, & + & 0.2470,0.2430,0.2410,0.2420,0.2430,0.2460,0.2490,0.2510,0.2500, & + & 0.2460,0.2400,0.2340,0.2280,0.2250,0.2220,0.2190,0.2160,0.2140, & + & 0.2140,0.2170,0.2230,0.2310,0.2400,0.2480,0.2560,0.2650,0.2760, & + & 0.2900,0.3090,0.3300,0.3510,0.3710,0.3860,0.3970,0.4050,0.4120, & + & 0.4220,0.4330,0.4470,0.4640,0.4820,0.5010,0.5220,0.5450,0.5690, & + & 0.5930,0.6160,0.6350,0.6500,0.6600,0.6670,0.6710,0.6740,0.6790, & + & 0.6890,0.7050,0.7260,0.7510,0.7770,0.7980,0.8140,0.8230,0.8270, & + & 0.8310,0.8380,0.8490,0.8660,0.8840,0.9010,0.9150,0.9260,0.9340, & + & 0.9420,0.9520,0.9640,0.9790,0.9940,1.0090,1.0210,1.0320,1.0390, & + & 1.0440,1.0480,1.0520,1.0590,1.0690,1.0830,1.0990,1.1150,1.1260, & + & 1.1320,1.1330,1.1330,1.1350,1.1430,1.1560,1.1700,1.1790,1.1820, & + & 1.1780,1.1690,1.1570,1.1490,1.1460,1.1500,1.1610,1.1750,1.1880, & + & 1.1960,1.1940,1.1820,1.1630,1.1420,1.1230,1.1120,1.1100,1.1170, & + & 1.1280,1.1350,1.1360,1.1270,1.1130,1.0990,1.0920,1.0950,1.1060, & + & 1.1200,1.1280,1.1280,1.1170,1.0990,1.0770,1.0580,1.0440,1.0400, & + & 1.0440,1.0500,1.0660,1.0760,1.0790,1.0700,1.0520,1.0340,1.0200, & + & 1.0100,1.0100 /) + + real :: groundblend(965) = (/12.6184,12.6184,12.6184,12.6184,12.6184,12.6184,12.6184,13.1161, & + & 13.5867,14.1196,14.7424,15.2969,15.2550,15.6031,15.8681,16.3757, & + & 16.6847,17.1698,17.6965,18.0291,18.4459,18.8582,19.7512,20.3127, & + & 20.5441,20.9867,21.2748,21.4852,21.6601,21.8871,22.0959,22.3769, & + & 22.5555,22.6841,22.8859,23.1235,23.1722,23.3581,23.6036,23.7318, & + & 23.9446,23.9542,24.0230,24.1734,24.1251,24.1392,24.3469,24.3035, & + & 24.1023,23.9795,23.6917,23.4389,23.3111,23.2013,23.0616,22.9689, & + & 23.1830,23.5632,23.7520,24.0554,24.2983,24.4708,24.6850,24.6702, & + & 24.3875,24.3069,24.4843,24.7049,24.8939,25.0117,25.0568,24.9801, & + & 24.8849,24.7795,24.5999,24.2513,23.6281,23.0756,22.9904,23.2346, & + & 23.4023,23.7440,23.9070,24.0748,24.4747,24.6725,25.0065,25.0427, & + & 25.3064,25.2820,25.3311,24.9252,24.4807,24.1382,24.0793,24.1720, & + & 24.4702,24.5874,24.3143,23.8518,22.6322,20.9508,20.5339,21.2402, & + & 21.4860,21.7359,22.3565,22.7591,23.1622,23.1278,23.2192,23.0662, & + & 22.9350,22.8464,22.6460,22.3771,22.0274,21.9255,21.9643,21.9098, & + & 21.9174,21.8881,21.8306,21.6983,21.6164,21.5285,21.4726,21.3897, & + & 21.2695,21.1804,21.1874,21.0888,20.9989,20.8369,20.7698,20.6752, & + & 20.5616,20.4998,20.3843,20.3119,20.2465,20.1921,20.1192,20.0303, & + & 19.9051,20.5181,20.5511,20.4673,20.3303,20.3783,20.3147,20.2802, & + & 20.3099,20.1966,20.1630,20.1259,19.9596,19.8334,19.8770,19.5972, & + & 19.2134,18.5325,17.8574,16.4800,14.6280,13.8308,13.1163,12.4486, & + & 11.9491,11.6487,11.3945,11.4007,11.3356,11.3736,11.4299,11.3093, & + & 11.3615,11.3210,11.3192,11.3509,11.2981,11.3254,11.2479,11.2040, & + & 11.2245,11.3198,11.1707,11.2782,11.2528,11.1918,11.3169,11.3154, & + & 11.3594,11.3931,11.4678,11.4829,11.5074,11.5281,11.6097,11.6884, & + & 11.6797,11.6617,11.7554,11.8200,11.8374,11.9067,12.0302,12.0630, & + & 12.1658,12.3165,12.4339,12.5477,12.6119,12.6780,12.7953,12.9337, & + & 12.9967,13.1742,13.2295,13.3202,13.4792,13.5765,13.6835,13.8198, & + & 13.8555,14.0722,14.1067,14.1761,14.2259,14.2250,14.2846,14.3322, & + & 14.3424,14.4607,14.5394,14.5393,14.6360,14.7817,14.9949,15.0743, & + & 15.2085,15.2436,15.2829,15.3453,15.4313,15.5978,15.9001,16.1327, & + & 16.2750,16.4356,16.5749,16.6471,16.7713,16.8856,16.9990,17.0809, & + & 17.1626,17.2430,17.3521,17.4067,17.4680,17.5638,17.6095,17.6486, & + & 17.7019,17.7573,17.7642,17.8256,17.8607,17.9032,17.9301,17.9884, & + & 18.0488,17.9857,17.9823,17.9251,17.8695,17.7879,17.7272,17.7236, & + & 17.6404,17.6509,17.6716,17.6807,17.6908,17.6447,17.5986,17.5476, & + & 17.4500,17.2547,17.1026,16.9764,16.9326,16.9822,17.0983,17.2506, & + & 17.3612,17.4659,17.5732,17.6433,17.6524,17.6560,17.6229,17.5708, & + & 17.5651,17.4985,17.4318,17.3933,17.3414,17.2616,17.2423,17.1257, & + & 17.0959,17.0166,16.9363,16.8619,16.7482,16.6415,16.6052,16.5912, & + & 16.5002,16.3664,16.2904,16.2502,16.2004,16.1755,16.1584,16.1065, & + & 15.9991,15.9238,15.8043,15.6901,15.5448,15.4169,15.2921,15.1880, & + & 15.0799,14.9855,14.8754,14.8085,14.7168,14.6476,14.6086,14.5781, & + & 14.5634,14.5850,14.6578,14.7004,14.6860,14.6632,14.6701,14.6026, & + & 14.5375,14.4678,14.3761,14.2805,14.1601,14.0407,13.8858,13.7244, & + & 13.5898,13.4532,13.3642,13.3278,13.3654,13.3688,13.3402,13.3068, & + & 13.2451,13.1720,13.0793,13.0060,12.9538,12.8837,12.7927,12.6968, & + & 12.6361,12.5646,12.4567,12.3606,12.1931,12.0676,11.9173,11.7557, & + & 11.5970,11.4510,11.3102,11.1767,11.0563,10.9637,10.8623,10.7821, & + & 10.6982,10.6156,10.5213,10.4711,10.4130,10.3640,10.3020,10.3008, & + & 10.2512,10.1942,10.1370,10.1063,10.0780,10.0089,9.9590,9.8962, & + & 9.8242,9.7567,9.7058,9.6345,9.5636,9.4881,9.3874,9.2630, & + & 9.1781,9.0745,8.9465,8.8267,8.6807,8.5982,8.4913,8.3825, & + & 8.3243,8.2706,8.1985,8.1500,8.1151,8.0704,8.0800,8.1049, & + & 8.1130,8.1350,8.1348,8.1288,8.1047,8.0793,8.0591,8.0357, & + & 7.9936,7.9379,7.8745,7.8325,7.7627,7.6875,7.6269,7.5488, & + & 7.4562,7.3633,7.2617,7.2284,7.2010,7.2016,7.2001,7.1939, & + & 7.1617,7.1612,7.1339,7.0978,7.0784,7.0573,7.0481,7.0023, & + & 6.9599,6.9226,6.8862,6.8443,6.7843,6.7479,6.7064,6.6591, & + & 6.6226,6.5819,6.5360,6.4752,6.4218,6.3694,6.3328,6.2544, & + & 6.1890,6.1318,6.0348,5.9585,5.9211,5.8629,5.7906,5.7092, & + & 5.6701,5.6078,5.5355,5.4860,5.4313,5.3857,5.3313,5.2859, & + & 5.2385,5.1952,5.1513,5.1139,5.0893,5.0638,5.0550,5.0086, & + & 4.9703,4.9475,4.9244,4.9099,4.9226,4.9470,4.9421,4.9385, & + & 4.9427,4.9619,4.9915,5.0244,5.0511,5.0653,5.0664,5.0814, & + & 5.1122,5.1381,5.1479,5.1766,5.2168,5.2295,5.2354,5.2516, & + & 5.2754,5.3087,5.3283,5.3277,5.3314,5.3305,5.3169,5.3326, & + & 5.3326,5.3364,5.3582,5.3414,5.3136,5.2865,5.2521,5.2498, & + & 5.2160,5.1982,5.1895,5.1839,5.1757,5.1376,5.1120,5.1008, & + & 5.0761,5.0466,5.0374,5.0125,4.9710,4.9557,4.9417,4.9324, & + & 4.9203,4.9166,4.8914,4.8886,4.8842,4.8565,4.8489,4.8360, & + & 4.7995,4.7643,4.7487,4.7143,4.6870,4.6668,4.6179,4.5856, & + & 4.5697,4.5488,4.5421,4.5111,4.4641,4.4483,4.4327,4.4067, & + & 4.3810,4.3510,4.3223,4.2969,4.2570,4.2223,4.2106,4.2125, & + & 4.2110,4.1582,4.1191,4.1079,4.0939,4.0732,4.0522,4.0470, & + & 4.0512,4.0424,4.0105,3.9693,3.9509,3.9513,3.9344,3.9017, & + & 3.8649,3.8250,3.7820,3.7754,3.7497,3.7175,3.7048,3.6828, & + & 3.6612,3.6259,3.5876,3.5685,3.5571,3.5387,3.5138,3.4793, & + & 3.4621,3.4453,3.4188,3.4017,3.3889,3.3635,3.3374,3.3228, & + & 3.3096,3.2546,3.2245,3.2081,3.2099,3.1913,3.1489,3.1260, & + & 3.0983,3.0680,3.0478,3.0227,2.9910,2.9602,2.9270,2.9108, & + & 2.8865,2.8699,2.8547,2.8316,2.8010,2.7639,2.7441,2.7485, & + & 2.7655,2.7509,2.7166,2.7018,2.6920,2.6869,2.6813,2.6687, & + & 2.6681,2.6712,2.6501,2.6224,2.6040,2.6053,2.6114,2.6119, & + & 2.6208,2.6293,2.6371,2.6762,2.6648,2.6529,2.6583,2.6728, & + & 2.7383,2.7730,2.7993,2.8363,2.8664,2.8767,2.9176,2.9908, & + & 3.0922,3.1485,3.2171,3.2823,3.4467,3.5517,3.6423,3.7126, & + & 3.9180,4.0334,4.1374,4.2246,4.3893,4.4814,4.5543,4.6942, & + & 4.7526,4.8106,4.9626,5.0164,5.0367,5.0784,5.1650,5.1808, & + & 5.2165,5.3260,5.3665,5.4005,5.4427,5.5128,5.6723,5.7514, & + & 5.8222,5.9424,5.9989,6.0508,6.1457,6.1896,6.2694,6.3202, & + & 6.3431,6.3213,6.2696,6.1697,6.1763,6.2059,6.2143,6.2634, & + & 6.3905,6.4496,6.5232,6.5432,6.5829,6.5985,6.5988,6.6125, & + & 6.6226,6.6250,6.6656,6.6790,6.6302,6.6118,6.6070,6.5795, & + & 6.5072,6.4845,6.4341,6.4042,6.3804,6.3459,6.2554,6.2622, & + & 6.2601,6.1893,6.1617,6.1390,6.1182,6.1053,6.1012,6.0901, & + & 6.0498,6.0072,6.0075,5.9882,5.9669,5.9460,5.8917,5.8639, & + & 5.8464,5.7981,5.7618,5.7696,5.7868,5.7570,5.7041,5.6768, & + & 5.6499,5.6320,5.6487,5.6801,5.6760,5.6729,5.6779,5.6965, & + & 5.7084,5.6992,5.7195,5.7890,5.7691,5.7644,5.7810,5.7462, & + & 5.7309,5.7364,5.7244,5.6696,5.6259,5.6083,5.5939,5.5681, & + & 5.5307,5.5132,5.4851,5.4321,5.4173,5.4214,5.3740,5.3250, & + & 5.2817,5.2382,5.2012,5.1801,5.1502,5.1116,5.0813,5.0499, & + & 4.9904,4.9559,4.8783,4.8600,4.8729,4.8856,4.8827,4.8824, & + & 4.8918,4.9303,4.9456,4.9209,4.9158,4.9436,4.9400,4.9219, & + & 4.9391,4.9415,4.9229,4.8960,4.8686,4.8793,4.9081,4.8903, & + & 4.8385,4.8073,4.8243,4.8351,4.8122,4.8071,4.8227,4.7952, & + & 4.7427,4.7340,4.6818,4.6315,4.5909,4.5907,4.5551,4.4885, & + & 4.4819,4.4468,4.3990,4.4123,4.3882,4.3215,4.2887,4.2501, & + & 4.2489,4.2381,4.2184,4.1917,4.1648,4.1390,4.0738,4.0483, & + & 4.0298,4.0136,3.9928,3.9654,3.9546,3.8933,3.8531,3.8062, & + & 3.7705,3.7849,3.7704,3.7301,3.7187,3.7163,3.7524,3.7590, & + & 3.7283,3.7220,3.6777,3.6713,3.6646,3.6649,3.7132,3.6957, & + & 3.6641,3.6692,3.6465,3.5626,3.4967,3.4370,3.3826,3.2979, & + & 3.1938,3.0922,2.9820,2.8385,2.7622,2.7300,2.7205,2.7075, & + & 2.5697,2.4529,2.4551,2.5290,2.4643,2.3695,2.3853,2.3698, & + & 2.3235,2.3492,2.3354,2.3328,2.2808,2.1591,2.0505,1.9828, & + & 2.0443,2.0528,2.1298,2.0987,1.9916,2.0043,1.9213,1.9423, & + & 2.0312,2.0010,1.7628,1.7760,2.0828,2.0650,1.8917,1.9262, & + & 1.8328,1.6978,1.8787,2.0174,1.6473,1.3033,1.4262,1.6316, & + & 1.5811,1.6315,1.3217,1.1069,1.0377 /) + + real :: oceanblend(965) = (/7.6429,7.6429,7.6429,7.6429,7.6429,7.6429,7.6429,8.1255, & + & 7.7870,7.9815,7.9227,7.5827,8.0846,8.5154,7.4492,7.6387, & + & 7.8697,7.3311,7.3110,7.0563,7.5270,7.7468,7.5052,7.4358, & + & 7.5702,7.6549,7.2887,7.4358,7.4818,7.4877,7.2026,7.4877, & + & 7.5052,7.4877,7.4654,7.0181,7.6435,7.6435,6.9200,7.4286, & + & 7.6170,7.3854,7.3854,7.4007,7.6649,7.2196,7.4442,6.9819, & + & 7.0022,7.2801,7.2781,6.8507,7.3199,7.0722,6.8507,6.8507, & + & 6.6241,6.6277,6.6249,6.6263,6.8774,6.6068,6.3293,6.5335, & + & 5.8224,6.2674,6.2493,6.7342,6.2120,5.9659,5.9690,5.9419, & + & 5.8879,6.1122,6.1509,6.1348,6.1083,6.0723,5.5958,6.0796, & + & 6.3212,5.8372,6.3045,5.5618,6.0317,5.7951,6.0425,6.0372, & + & 5.5618,5.7951,5.7850,5.7951,5.8154,5.5448,6.0069,5.5496, & + & 5.9821,5.9974,5.3389,6.0286,5.3071,5.2879,5.3375,5.3177, & + & 5.3197,5.2901,5.3344,5.8402,5.3300,5.3579,5.4208,5.4581, & + & 5.4308,5.3788,5.3832,5.3057,5.2663,5.2382,5.2202,5.1795, & + & 5.1567,5.1254,5.0949,5.0620,5.0430,5.0687,5.0199,4.9917, & + & 4.9633,4.9491,4.9184,4.8855,4.8804,4.8220,4.8209,4.7721, & + & 4.7639,4.7364,4.6863,4.6255,4.5802,4.5429,4.5169,4.4542, & + & 4.4203,4.3650,4.2795,4.1633,4.1055,3.8483,3.6094,3.6431, & + & 3.5173,3.4737,3.5717,3.3321,3.0095,2.8737,3.4677,3.1898, & + & 2.9182,2.1945,2.3415,2.4304,2.2563,1.7628,1.4695,1.7444, & + & 1.2975,1.6832,1.6181,1.6708,1.8928,2.0242,2.2287,2.6051, & + & 2.8357,3.2663,3.6979,4.0715,4.6224,5.0739,5.6432,6.1840, & + & 6.6036,7.2491,7.7119,8.2982,8.7481,9.0912,9.4326,9.6652, & + & 9.9035,10.0259,10.1700,10.2310,10.3417,10.4783,10.5910,10.6530, & + & 10.7916,10.8991,10.9705,11.0589,11.1114,11.1263,11.1899,11.1280, & + & 11.1008,11.0379,10.9611,10.8592,10.7481,10.5997,10.4437,10.3027, & + & 10.1993,10.0767,9.9350,9.8162,9.6723,9.5586,9.4286,9.3588, & + & 9.2109,9.1544,9.0129,8.9284,8.8327,8.7397,8.6558,8.5741, & + & 8.4617,8.4220,8.3492,8.3026,8.2116,8.1764,8.0860,8.0003, & + & 7.9643,7.9004,7.8446,7.7733,7.7210,7.6906,7.6429,7.6003, & + & 7.5650,7.5272,7.4653,7.4229,7.4013,7.3437,7.3258,7.2941, & + & 7.2626,7.2420,7.1895,7.1924,7.1512,7.1274,7.1050,7.0768, & + & 7.0503,7.0087,7.0025,6.9821,6.9391,6.9449,6.9049,6.8966, & + & 6.8696,6.8463,6.8271,6.8069,6.7790,6.7459,6.7498,6.7250, & + & 6.7141,6.6955,6.6748,6.6473,6.6283,6.6094,6.5899,6.5879, & + & 6.5722,6.5460,6.5209,6.5079,6.4920,6.4898,6.4894,6.4605, & + & 6.4369,6.4219,6.4067,6.3993,6.3825,6.3845,6.3494,6.3308, & + & 6.3202,6.2994,6.2942,6.2841,6.2769,6.2685,6.2614,6.2500, & + & 6.2373,6.2174,6.2025,6.2103,6.1894,6.1706,6.1551,6.1423, & + & 6.1469,6.1424,6.1328,6.1356,6.1221,6.1096,6.1092,6.0973, & + & 6.0797,6.0750,6.0732,6.0616,6.0502,6.0358,6.0337,6.0417, & + & 6.0299,6.0199,6.0087,6.0031,6.0089,5.9980,5.9819,5.9834, & + & 5.9818,5.9751,5.9618,5.9514,5.9548,5.9480,5.9440,5.9619, & + & 5.9503,5.9395,5.9483,5.9469,5.9443,5.9455,5.9476,5.9370, & + & 5.9343,5.9335,5.9305,5.9399,5.9522,5.9445,5.9283,5.9318, & + & 5.9355,5.9351,5.9354,5.9426,5.9362,5.9293,5.9305,5.9235, & + & 5.9294,5.9258,5.8988,5.8917,5.9118,5.9184,5.9145,5.8977, & + & 5.8856,5.8960,5.8955,5.8779,5.8813,5.8441,5.8278,5.8526, & + & 5.8798,5.8644,5.8577,5.7669,5.7147,5.7481,5.8184,5.8145, & + & 5.8175,5.7718,5.7087,5.7027,5.7311,5.7225,5.7192,5.6837, & + & 5.5523,5.5150,5.5977,5.6850,5.6729,5.5830,5.4095,5.3230, & + & 5.4026,5.4785,5.4977,5.5199,5.5449,5.5046,5.3776,5.3002, & + & 5.3443,5.4388,5.4876,5.4628,5.1847,4.9883,5.0617,5.3213, & + & 5.3905,5.3786,5.3452,5.0001,4.8123,4.8824,5.1836,5.0974, & + & 4.8418,4.6895,4.8063,5.0308,5.1247,5.0142,4.9299,4.9132, & + & 4.8303,4.7520,4.5832,4.3985,4.3995,4.4886,4.6644,4.6893, & + & 4.5788,4.2646,3.9737,3.9850,4.2048,4.3521,4.3021,4.2361, & + & 4.0686,3.8501,3.7947,3.8416,3.9765,3.6991,3.3990,3.4200, & + & 3.6634,4.1184,4.1318,3.6468,3.2617,3.2542,3.5299,3.7747, & + & 3.5318,3.0674,2.7254,2.7695,3.1619,3.6243,3.5011,3.1834, & + & 3.1551,3.3379,3.6659,3.6648,3.5843,3.8070,4.0347,4.4104, & + & 4.7484,4.3598,4.0206,3.7000,3.6695,4.3412,5.1095,5.3343, & + & 5.3136,5.2452,5.3760,5.8394,6.1765,6.1755,6.0395,5.8763, & + & 5.9062,6.0905,6.2637,6.6197,6.7140,6.6387,6.6686,6.6498, & + & 6.6064,6.5655,6.5302,6.5290,6.5481,6.5665,6.2720,5.8166, & + & 5.5617,5.3026,5.2448,5.5045,5.6526,5.2360,4.6440,4.0645, & + & 3.8989,4.2408,5.0739,5.5117,5.3144,4.6754,4.0479,3.8488, & + & 3.9497,4.4230,4.9739,5.1475,4.9807,4.7101,4.3481,4.0459, & + & 4.1131,4.4275,4.7811,4.6929,4.2596,4.0403,4.1148,4.3906, & + & 4.7414,5.0691,5.0422,4.8199,4.7619,4.8389,4.9288,5.0837, & + & 5.3967,5.5799,5.3418,4.8788,4.6166,4.5972,4.6829,4.9228, & + & 5.2420,5.2113,4.6974,4.3449,4.2800,4.3558,4.5740,4.9645, & + & 5.2680,5.3493,5.4069,5.3478,5.1862,5.0173,4.8715,4.8216, & + & 4.9306,5.1356,5.2700,5.2173,5.0315,4.8345,4.7060,4.7126, & + & 4.8492,5.0777,5.3157,5.3666,5.3079,5.2502,5.1755,5.0688, & + & 4.9085,4.8006,4.7848,4.8100,4.8679,4.9494,5.0387,5.1115, & + & 5.1221,5.1754,5.2308,5.1745,5.0575,4.9815,4.9603,5.0038, & + & 5.0464,5.0400,4.9809,4.9102,4.8855,4.9036,4.9618,5.0529, & + & 5.1202,5.1184,5.1277,5.1388,5.1032,5.0188,4.9296,4.8610, & + & 4.8362,4.8620,4.9280,5.0158,5.0787,5.0989,5.0734,5.0458, & + & 5.0158,4.9831,4.9486,4.9190,4.9176,4.9289,4.9482,4.9648, & + & 4.9792,4.9784,4.9725,4.9626,4.9617,4.9606,4.9627,4.9610, & + & 4.9500,4.9360,4.9240,4.9109,4.9051,4.9082,4.9143,4.9157, & + & 4.9065,4.8946,4.8834,4.8679,4.8669,4.8669,4.8669,4.8645, & + & 4.8540,4.8491,4.8500,4.8552,4.8689,4.8701,4.8658,4.8578, & + & 4.8392,4.8277,4.8209,4.8209,4.8297,4.8331,4.8389,4.8411, & + & 4.8363,4.8271,4.8193,4.8063,4.7830,4.7751,4.7734,4.7714, & + & 4.7720,4.7688,4.7564,4.7441,4.7354,4.7299,4.7154,4.7057, & + & 4.7035,4.7039,4.7055,4.7025,4.7025,4.6986,4.6754,4.6590, & + & 4.6488,4.6275,4.6154,4.6011,4.5780,4.5671,4.5557,4.5519, & + & 4.5521,4.5530,4.5546,4.5588,4.5606,4.5485,4.5429,4.5308, & + & 4.5016,4.4847,4.4600,4.4509,4.4485,4.4515,4.4559,4.4495, & + & 4.4288,4.4146,4.3856,4.3700,4.3657,4.3663,4.3598,4.3535, & + & 4.3485,4.3416,4.3220,4.3096,4.2968,4.2888,4.2724,4.2599, & + & 4.2544,4.2246,4.2077,4.1723,4.1436,4.1277,4.1045,4.0917, & + & 4.0679,4.0476,4.0459,4.0477,4.0486,4.0408,4.0255,4.0122, & + & 3.9897,3.9563,3.9445,3.9230,3.9058,3.8973,3.8917,3.8855, & + & 3.8691,3.8513,3.8145,3.7794,3.7659,3.7422,3.7298,3.7062, & + & 3.6940,3.6721,3.6492,3.6206,3.6099,3.6024,3.5835,3.5608, & + & 3.5501,3.5328,3.5219,3.4967,3.4866,3.4754,3.4567,3.4300, & + & 3.4053,3.3908,3.3645,3.3361,3.3136,3.2887,3.2634,3.2305, & + & 3.2123,3.1937,3.1729,3.1528,3.1380,3.1197,3.0993,3.0782, & + & 3.0646,3.0537,3.0149,2.9927,2.9720,2.9476,2.9210,2.8920, & + & 2.8729,2.8481,2.8279,2.8114,2.7933,2.7686,2.7518,2.7289, & + & 2.7109,2.6798,2.6622,2.6410,2.6222,2.6058,2.6003,2.5893, & + & 2.5819,2.5641,2.5497,2.5309,2.5143,2.5063,2.5007,2.4886, & + & 2.4768,2.4715,2.4770,2.4792,2.4798,2.4720,2.4686,2.4637, & + & 2.4656,2.4689,2.4892,2.5015,2.5085,2.5093,2.5193,2.5380, & + & 2.5508,2.5686,2.5860,2.6034,2.6349,2.6548,2.6919,2.7153, & + & 2.7520,2.7781,2.8241,2.8499,2.9000,2.9502,2.9877,3.0410, & + & 3.0819,3.1475,3.2219,3.2640,3.3274,3.3835,3.4236,3.4846, & + & 3.5588,3.6116,3.6990,3.7799,3.8719,3.9260,4.0141,4.0921, & + & 4.1703,4.2208,4.3004,4.3804,4.4699,4.5580,4.6527,4.7433, & + & 4.8054,4.8951,5.0039,5.1117,5.2272,5.3351,5.4494,5.5616, & + & 5.6729,5.7692,5.8745,5.9768,6.0904,6.2343,6.3536,6.4735, & + & 6.5920,6.6999,6.8094,6.9093,7.0486,7.1457,7.2452,7.3476, & + & 7.5005,7.6010,7.7090,7.8164,7.9643,8.0704,8.1712,8.3058, & + & 8.4206,8.5542,8.6725,8.8178,8.9314,9.0508,9.1432,9.2495, & + & 9.3403,9.4713,9.5926,9.7316,9.8349,9.9513,10.0890,10.1728, & + & 10.2925,10.4215,10.5886,10.6864,10.7863 /) + + real :: iceblend(965) = (/76.5831,76.6438,76.7246,76.7803,76.8781,76.9153,76.9738,77.0573, & + & 77.1100,77.1962,77.2366,77.3703,77.3868,77.3909,77.3595,77.3408, & + & 77.2787,77.2429,77.2131,77.1866,77.0807,77.0771,77.0496,76.9933, & + & 76.9307,76.8156,76.6748,76.4445,76.3496,76.1804,76.0106,75.7067, & + & 75.6455,75.4641,75.3821,75.1899,74.8131,74.6450,74.3874,74.2458, & + & 73.9713,73.6175,73.2059,72.8285,72.3517,71.8928,71.6702,71.4964, & + & 71.4047,70.2676,68.4786,67.5829,67.1136,66.4212,64.6907,62.3396, & + & 59.5691,57.3820,56.9208,58.7662,59.4444,60.0964,59.7967,58.2365, & + & 55.6891,51.6068,46.9814,42.8594,41.5179,41.0608,41.0912,41.0255, & + & 41.2415,41.5225,40.8844,39.9752,37.5794,25.3568,11.8465,8.3604, & + & 6.4608,5.6337,5.9680,6.1563,7.2506,8.3465,8.9445,9.1251, & + & 11.4897,12.3193,14.1252,15.3866,16.2014,16.7530,18.1783,18.7612, & + & 20.5381,21.4536,23.2083,20.9991,13.9114,8.8586,5.7690,4.3582, & + & 3.3256,2.8970,2.7453,2.8881,3.2568,3.5597,4.1582,5.0826, & + & 6.4497,8.3304,9.8873,11.1988,13.1491,14.6770,15.2738,15.1536, & + & 14.7968,14.1645,13.2990,12.3732,11.5182,10.7355,10.0085,9.4344, & + & 8.9429,8.5497,8.2733,8.0419,7.8643,7.7291,7.5993,7.4938, & + & 7.3628,7.2346,7.1245,6.9952,6.8666,6.7298,6.6133,6.4906, & + & 6.3702,6.2793,6.2039,6.1187,6.0496,6.0222,5.9431,5.8847, & + & 5.8264,5.6397,5.5640,5.4915,5.3283,5.1456,5.0847,4.7734, & + & 4.3635,3.8096,3.5671,3.1764,2.7277,2.2805,1.8472,1.5180, & + & 1.1671,0.9197,0.7104,0.5669,0.4688,0.3957,0.3375,0.3072, & + & 0.2783,0.2686,0.2667,0.2704,0.2815,0.3098,0.3650,0.4703, & + & 0.5876,0.7441,0.9063,1.0686,1.2483,1.3994,1.5255,1.6848, & + & 1.8027,1.9918,2.1865,2.4482,2.7374,3.0684,3.4574,3.8798, & + & 4.2585,4.5519,4.7516,4.7658,4.6776,4.4971,4.3278,4.2010, & + & 4.1319,4.0850,4.0435,3.9924,3.9375,3.8444,3.7276,3.5958, & + & 3.4585,3.3227,3.2011,3.0972,3.0028,2.9004,2.8186,2.7497, & + & 2.6913,2.6341,2.5782,2.5374,2.5044,2.4760,2.4467,2.4256, & + & 2.4005,2.3831,2.3828,2.3775,2.3837,2.3976,2.4049,2.4182, & + & 2.4439,2.4840,2.5271,2.5670,2.6098,2.6628,2.7137,2.7749, & + & 2.8356,2.8938,2.9562,3.0195,3.0832,3.1430,3.1998,3.2527, & + & 3.3058,3.3513,3.3827,3.4196,3.4534,3.4712,3.4814,3.4826, & + & 3.4713,3.4593,3.4499,3.4228,3.3840,3.3478,3.3041,3.2594, & + & 3.2131,3.1622,3.1093,3.0546,3.0057,2.9566,2.9085,2.8580, & + & 2.8036,2.7554,2.7115,2.6694,2.6278,2.5903,2.5507,2.5148, & + & 2.4831,2.4426,2.4022,2.3677,2.3330,2.3004,2.2756,2.2483, & + & 2.2173,2.1894,2.1625,2.1362,2.1146,2.0957,2.0686,2.0379, & + & 2.0154,2.0010,1.9882,1.9778,1.9648,1.9494,1.9347,1.9167, & + & 1.8948,1.8743,1.8540,1.8311,1.8150,1.8030,1.7874,1.7718, & + & 1.7554,1.7350,1.7158,1.7027,1.6905,1.6685,1.6442,1.6264, & + & 1.6165,1.6061,1.5905,1.5747,1.5641,1.5567,1.5492,1.5414, & + & 1.5339,1.5278,1.5297,1.5339,1.5313,1.5264,1.5244,1.5291, & + & 1.5341,1.5382,1.5430,1.5530,1.5667,1.5805,1.5928,1.6053, & + & 1.6197,1.6337,1.6488,1.6689,1.6915,1.7106,1.7238,1.7397, & + & 1.7568,1.7770,1.7977,1.8162,1.8396,1.8633,1.8801,1.9009, & + & 1.9232,1.9423,1.9630,1.9819,1.9979,2.0129,2.0305,2.0487, & + & 2.0632,2.0774,2.0909,2.1104,2.1302,2.1469,2.1617,2.1757, & + & 2.1886,2.2005,2.2098,2.2187,2.2282,2.2377,2.2456,2.2512, & + & 2.2551,2.2594,2.2638,2.2665,2.2689,2.2697,2.2704,2.2732, & + & 2.2725,2.2698,2.2621,2.2528,2.2437,2.2365,2.2303,2.2209, & + & 2.2069,2.1916,2.1775,2.1679,2.1562,2.1406,2.1228,2.1091, & + & 2.0975,2.0833,2.0691,2.0536,2.0380,2.0190,1.9988,1.9830, & + & 1.9681,1.9497,1.9301,1.9094,1.8866,1.8692,1.8550,1.8401, & + & 1.8261,1.8076,1.7898,1.7685,1.7451,1.7266,1.7133,1.6988, & + & 1.6766,1.6557,1.6431,1.6324,1.6171,1.6043,1.5879,1.5631, & + & 1.5381,1.5197,1.5046,1.4867,1.4742,1.4654,1.4523,1.4385, & + & 1.4208,1.3942,1.3733,1.3570,1.3432,1.3333,1.3198,1.3072, & + & 1.2931,1.2780,1.2660,1.2510,1.2392,1.2247,1.2123,1.2056, & + & 1.2018,1.1977,1.1917,1.1822,1.1700,1.1643,1.1641,1.1627, & + & 1.1564,1.1461,1.1340,1.1238,1.1190,1.1177,1.1170,1.1154, & + & 1.1154,1.1144,1.1145,1.1175,1.1218,1.1266,1.1300,1.1314, & + & 1.1284,1.1258,1.1183,1.1129,1.1128,1.1187,1.1278,1.1370, & + & 1.1419,1.1473,1.1532,1.1571,1.1608,1.1621,1.1627,1.1625, & + & 1.1631,1.1665,1.1707,1.1735,1.1793,1.1840,1.1870,1.1923, & + & 1.1970,1.2015,1.2074,1.2112,1.2124,1.2115,1.2094,1.2102, & + & 1.2116,1.2143,1.2174,1.2179,1.2158,1.2116,1.2092,1.2057, & + & 1.2096,1.2178,1.2242,1.2312,1.2363,1.2390,1.2387,1.2405, & + & 1.2453,1.2516,1.2544,1.2572,1.2587,1.2617,1.2634,1.2633, & + & 1.2631,1.2622,1.2593,1.2557,1.2545,1.2543,1.2565,1.2620, & + & 1.2712,1.2758,1.2814,1.2850,1.2871,1.2912,1.2939,1.2960, & + & 1.2965,1.2953,1.2934,1.2900,1.2884,1.2853,1.2846,1.2845, & + & 1.2860,1.2852,1.2848,1.2863,1.2876,1.2899,1.2976,1.3062, & + & 1.3113,1.3151,1.3186,1.3201,1.3213,1.3211,1.3213,1.3222, & + & 1.3220,1.3232,1.3247,1.3239,1.3231,1.3209,1.3203,1.3201, & + & 1.3217,1.3240,1.3270,1.3304,1.3328,1.3337,1.3348,1.3360, & + & 1.3356,1.3360,1.3360,1.3365,1.3370,1.3387,1.3398,1.3424, & + & 1.3432,1.3436,1.3443,1.3441,1.3430,1.3428,1.3439,1.3426, & + & 1.3408,1.3396,1.3382,1.3386,1.3395,1.3408,1.3446,1.3466, & + & 1.3493,1.3517,1.3537,1.3556,1.3554,1.3558,1.3553,1.3540, & + & 1.3519,1.3523,1.3521,1.3534,1.3559,1.3589,1.3609,1.3615, & + & 1.3612,1.3612,1.3617,1.3645,1.3670,1.3703,1.3748,1.3761, & + & 1.3787,1.3787,1.3781,1.3763,1.3745,1.3744,1.3751,1.3768, & + & 1.3800,1.3818,1.3850,1.3883,1.3896,1.3925,1.3937,1.3964, & + & 1.3978,1.3988,1.4000,1.3991,1.4001,1.3996,1.4012,1.4025, & + & 1.4030,1.4052,1.4059,1.4064,1.4061,1.4055,1.4062,1.4054, & + & 1.4040,1.4043,1.4032,1.4036,1.4032,1.4021,1.4028,1.4036, & + & 1.4037,1.4040,1.4064,1.4085,1.4080,1.4082,1.4072,1.4052, & + & 1.4047,1.4033,1.4006,1.3989,1.3984,1.3962,1.3929,1.3901, & + & 1.3868,1.3803,1.3765,1.3704,1.3679,1.3645,1.3644,1.3638, & + & 1.3637,1.3624,1.3617,1.3602,1.3569,1.3521,1.3480,1.3446, & + & 1.3423,1.3379,1.3363,1.3331,1.3302,1.3252,1.3207,1.3179, & + & 1.3134,1.3116,1.3104,1.3102,1.3092,1.3089,1.3084,1.3067, & + & 1.3036,1.3008,1.2964,1.2929,1.2867,1.2814,1.2770,1.2719, & + & 1.2682,1.2659,1.2637,1.2627,1.2612,1.2597,1.2537,1.2487, & + & 1.2434,1.2381,1.2327,1.2287,1.2243,1.2233,1.2212,1.2207, & + & 1.2203,1.2212,1.2214,1.2227,1.2261,1.2260,1.2266,1.2276, & + & 1.2254,1.2224,1.2199,1.2144,1.2105,1.2060,1.2007,1.1971, & + & 1.1960,1.1972,1.1972,1.1979,1.1987,1.1978,1.1958,1.1943, & + & 1.1929,1.1908,1.1872,1.1814,1.1716,1.1631,1.1506,1.1370, & + & 1.1241,1.1116,1.1024,1.0896,1.0753,1.0600,1.0435,1.0237, & + & 1.0064,0.9897,0.9732,0.9557,0.9363,0.9181,0.8986,0.8798, & + & 0.8603,0.8419,0.8242,0.8051,0.7890,0.7711,0.7543,0.7386, & + & 0.7206,0.7053,0.6861,0.6694,0.6532,0.6368,0.6237,0.6105, & + & 0.5994,0.5862,0.5739,0.5611,0.5493,0.5416,0.5374,0.5366, & + & 0.5371,0.5425,0.5494,0.5574,0.5684,0.5796,0.5965,0.6178, & + & 0.6374,0.6565,0.6797,0.7048,0.7356,0.7619,0.7886,0.8202, & + & 0.8592,0.8934,0.9287,0.9667,1.0147,1.0550,1.0955,1.1448, & + & 1.1879,1.2296,1.2792,1.3192,1.3568,1.4008,1.4353,1.4774, & + & 1.5144,1.5587,1.5972,1.6351,1.6806,1.7167,1.7613,1.7966, & + & 1.8351,1.8650,1.9030,1.9323,1.9700,2.0066,2.0378,2.0741, & + & 2.1025,2.1362,2.1698,2.1993,2.2343,2.2697,2.2997,2.3338, & + & 2.3677,2.3949,2.4263,2.4554,2.4843,2.5077,2.5371,2.5672, & + & 2.5965,2.6225,2.6533,2.6826,2.7125,2.7413,2.7652,2.7885, & + & 2.8084,2.8321,2.8556,2.8788,2.8987,2.9181,2.9342,2.9508, & + & 2.9630,2.9730,2.9856,2.9992,3.0134,3.0298,3.0441,3.0582, & + & 3.0688,3.0773,3.0805,3.0845,3.0899,3.0975,3.1065,3.1152, & + & 3.1253,3.1290,3.1307,3.1277,3.1216,3.1163,3.1089,3.1058, & + & 3.1031,3.1031,3.1041,3.1074,3.1093,3.1107,3.1101,3.1082, & + & 3.1049,3.1004,3.0985,3.0950,3.0924,3.0876,3.0803,3.0731, & + & 3.0643,3.0576,3.0513,3.0435,3.0337 /) + + real :: iceblendmax(965) = (/98.3976,98.4533,98.5608,98.6059,98.6901,98.7255,98.7523,98.8578, & + & 98.8657,98.9793,98.9955,99.1293,99.1470,99.1551,99.1226,99.1061, & + & 99.0499,99.0283,98.9932,99.0038,98.8756,98.8959,98.8641,98.8039, & + & 98.7724,98.6746,98.5532,98.3966,98.2369,98.1084,97.9637,97.6957, & + & 97.6233,97.5054,97.4117,97.2481,96.8266,96.7506,96.5313,96.4031, & + & 96.1441,95.8322,95.4435,95.1576,94.7636,94.3170,94.1437,94.0106, & + & 93.8868,92.8769,91.2144,90.4893,90.1128,89.4556,87.7899,85.7245, & + & 83.1175,81.1084,80.4875,82.4256,82.6016,83.4724,83.3349,81.8828, & + & 79.4023,75.3968,69.8744,65.0014,64.9448,64.4137,64.5489,63.6950, & + & 64.4730,64.8558,64.2516,63.3064,60.9015,45.9909,24.8181,18.5175, & + & 14.7305,12.8080,13.5363,13.7480,16.2124,18.6346,19.6780,19.4302, & + & 24.7459,25.9444,29.4080,31.1601,32.6662,32.9991,35.5873,35.6502, & + & 39.1007,39.8624,42.8775,39.5031,28.7121,19.3942,13.1043,9.9884, & + & 7.5448,6.5575,6.1434,6.5111,7.4581,8.0973,9.5045,11.5801, & + & 14.4592,18.6583,21.5437,23.8194,27.9398,30.3612,30.8890,30.6694, & + & 30.1785,29.3101,28.0864,26.7725,25.5149,24.3009,23.1104,22.1348, & + & 21.2419,20.5138,19.9802,19.5132,19.1278,18.8315,18.5593,18.3013, & + & 18.0224,17.7295,17.4883,17.2060,16.9125,16.6040,16.3484,16.0620, & + & 15.7903,15.5774,15.3816,15.1642,15.0142,14.9278,14.6805,14.5137, & + & 14.3513,13.8420,13.6626,13.5185,13.1280,12.7221,12.6540,11.8985, & + & 10.8481,9.4205,8.9055,7.9437,6.7940,5.6252,4.4355,3.5529, & + & 2.6048,1.9135,1.3230,0.9665,0.7173,0.5435,0.4396,0.3833, & + & 0.3347,0.3149,0.3260,0.3099,0.2899,0.2919,0.3196,0.3910, & + & 0.4571,0.5107,0.5917,0.6581,0.7511,0.8498,0.8749,0.9525, & + & 0.9673,1.0471,1.1385,1.2670,1.3951,1.5451,1.7793,2.0003, & + & 2.1735,2.3872,2.5275,2.5436,2.4740,2.3380,2.2188,2.1030, & + & 2.0701,2.0490,2.0139,2.0059,1.9994,1.9697,1.9102,1.8595, & + & 1.8022,1.7189,1.6561,1.6124,1.5837,1.5338,1.4998,1.4832, & + & 1.4844,1.4689,1.4449,1.4599,1.4915,1.5150,1.5379,1.5727, & + & 1.6113,1.6573,1.7366,1.8062,1.8970,2.0050,2.1222,2.2473, & + & 2.3806,2.5582,2.7504,2.9206,3.0965,3.3048,3.5224,3.7438, & + & 3.9726,4.1921,4.4171,4.6454,4.8637,5.0737,5.2816,5.4831, & + & 5.6755,5.8375,5.9771,6.1145,6.2300,6.3153,6.3773,6.4112, & + & 6.4182,6.4205,6.3993,6.3388,6.2663,6.1850,6.0778,5.9789, & + & 5.8679,5.7313,5.5926,5.4561,5.3324,5.2043,5.0781,4.9468, & + & 4.8108,4.6829,4.5687,4.4624,4.3516,4.2561,4.1556,4.0598, & + & 3.9740,3.8712,3.7748,3.6856,3.5932,3.5101,3.4436,3.3735, & + & 3.2979,3.2271,3.1658,3.1072,3.0452,2.9862,2.9213,2.8506, & + & 2.7930,2.7548,2.7240,2.7001,2.6687,2.6311,2.5922,2.5457, & + & 2.4927,2.4433,2.3981,2.3473,2.3074,2.2757,2.2351,2.1949, & + & 2.1494,2.0926,2.0439,2.0097,1.9738,1.9164,1.8561,1.8109, & + & 1.7852,1.7592,1.7190,1.6742,1.6449,1.6213,1.5965,1.5721, & + & 1.5458,1.5229,1.5186,1.5189,1.5078,1.4937,1.4841,1.4905, & + & 1.5012,1.5121,1.5217,1.5406,1.5680,1.5929,1.6159,1.6449, & + & 1.6808,1.7219,1.7655,1.8214,1.8820,1.9360,1.9773,2.0304, & + & 2.0875,2.1502,2.2168,2.2742,2.3433,2.4163,2.4722,2.5402, & + & 2.6092,2.6696,2.7420,2.8074,2.8577,2.9059,2.9673,3.0321, & + & 3.0850,3.1356,3.1824,3.2419,3.2988,3.3471,3.3928,3.4405, & + & 3.4885,3.5311,3.5645,3.5967,3.6295,3.6598,3.6880,3.7133, & + & 3.7395,3.7657,3.7838,3.7953,3.8047,3.8119,3.8205,3.8359, & + & 3.8396,3.8368,3.8224,3.8072,3.7941,3.7827,3.7663,3.7398, & + & 3.7080,3.6793,3.6520,3.6279,3.5965,3.5567,3.5156,3.4849, & + & 3.4591,3.4235,3.3875,3.3450,3.3015,3.2517,3.1995,3.1603, & + & 3.1243,3.0799,3.0342,2.9808,2.9139,2.8630,2.8218,2.7816, & + & 2.7487,2.7060,2.6660,2.6162,2.5578,2.5082,2.4730,2.4363, & + & 2.3803,2.3257,2.2947,2.2674,2.2251,2.1911,2.1510,2.0939, & + & 2.0347,1.9873,1.9442,1.8921,1.8585,1.8369,1.8046,1.7698, & + & 1.7239,1.6551,1.6026,1.5653,1.5335,1.5091,1.4739,1.4436, & + & 1.4130,1.3783,1.3490,1.3072,1.2741,1.2354,1.2025,1.1823, & + & 1.1683,1.1537,1.1362,1.1086,1.0756,1.0565,1.0475,1.0337, & + & 1.0097,0.9784,0.9479,0.9234,0.9111,0.9043,0.8950,0.8844, & + & 0.8789,0.8706,0.8633,0.8615,0.8612,0.8636,0.8652,0.8625, & + & 0.8485,0.8366,0.8137,0.7971,0.7894,0.7935,0.8040,0.8168, & + & 0.8208,0.8312,0.8433,0.8492,0.8550,0.8546,0.8525,0.8460, & + & 0.8413,0.8427,0.8458,0.8480,0.8582,0.8673,0.8729,0.8852, & + & 0.8930,0.8989,0.9069,0.9100,0.9098,0.9067,0.8993,0.8995, & + & 0.9001,0.9015,0.9062,0.9055,0.9010,0.8916,0.8858,0.8765, & + & 0.8799,0.8899,0.8986,0.9112,0.9206,0.9283,0.9284,0.9339, & + & 0.9472,0.9649,0.9748,0.9848,0.9900,0.9967,0.9982,0.9947, & + & 0.9911,0.9868,0.9794,0.9708,0.9696,0.9696,0.9752,0.9877, & + & 1.0103,1.0214,1.0365,1.0458,1.0501,1.0598,1.0672,1.0749, & + & 1.0794,1.0786,1.0766,1.0696,1.0676,1.0614,1.0615,1.0621, & + & 1.0670,1.0663,1.0649,1.0684,1.0682,1.0694,1.0824,1.1006, & + & 1.1121,1.1228,1.1332,1.1383,1.1430,1.1430,1.1434,1.1441, & + & 1.1407,1.1419,1.1435,1.1394,1.1382,1.1351,1.1370,1.1395, & + & 1.1473,1.1565,1.1667,1.1777,1.1842,1.1856,1.1866,1.1870, & + & 1.1823,1.1821,1.1817,1.1857,1.1902,1.1993,1.2076,1.2202, & + & 1.2275,1.2340,1.2411,1.2442,1.2436,1.2442,1.2499,1.2499, & + & 1.2491,1.2521,1.2547,1.2619,1.2699,1.2781,1.2920,1.3010, & + & 1.3104,1.3198,1.3250,1.3302,1.3303,1.3348,1.3390,1.3427, & + & 1.3457,1.3537,1.3572,1.3611,1.3654,1.3700,1.3743,1.3780, & + & 1.3812,1.3887,1.3968,1.4105,1.4207,1.4319,1.4438,1.4460, & + & 1.4525,1.4528,1.4521,1.4503,1.4482,1.4512,1.4548,1.4595, & + & 1.4694,1.4748,1.4851,1.4954,1.5002,1.5096,1.5141,1.5232, & + & 1.5275,1.5321,1.5370,1.5371,1.5418,1.5417,1.5463,1.5506, & + & 1.5548,1.5637,1.5682,1.5729,1.5771,1.5770,1.5809,1.5800, & + & 1.5794,1.5831,1.5825,1.5868,1.5915,1.5918,1.5973,1.6032, & + & 1.6094,1.6107,1.6168,1.6221,1.6228,1.6232,1.6232,1.6232, & + & 1.6240,1.6240,1.6240,1.6241,1.6289,1.6286,1.6278,1.6260, & + & 1.6234,1.6154,1.6128,1.6060,1.6051,1.6001,1.6049,1.6046, & + & 1.6046,1.6046,1.6052,1.6060,1.6066,1.6018,1.6014,1.6001, & + & 1.5992,1.5932,1.5919,1.5865,1.5806,1.5702,1.5598,1.5546, & + & 1.5453,1.5413,1.5425,1.5442,1.5465,1.5487,1.5545,1.5543, & + & 1.5526,1.5494,1.5414,1.5340,1.5224,1.5121,1.5072,1.4976, & + & 1.4926,1.4873,1.4825,1.4784,1.4793,1.4801,1.4749,1.4740, & + & 1.4714,1.4685,1.4610,1.4589,1.4536,1.4542,1.4553,1.4568, & + & 1.4592,1.4657,1.4670,1.4732,1.4838,1.4883,1.4965,1.5043, & + & 1.5069,1.5098,1.5131,1.5122,1.5161,1.5154,1.5145,1.5183, & + & 1.5273,1.5408,1.5543,1.5717,1.5880,1.6039,1.6189,1.6343, & + & 1.6451,1.6559,1.6611,1.6608,1.6498,1.6388,1.6232,1.6041, & + & 1.5867,1.5698,1.5578,1.5396,1.5160,1.4910,1.4662,1.4322, & + & 1.4045,1.3728,1.3469,1.3200,1.2875,1.2592,1.2259,1.1930, & + & 1.1554,1.1188,1.0827,1.0421,1.0111,0.9755,0.9450,0.9190, & + & 0.8884,0.8623,0.8359,0.8093,0.7824,0.7508,0.7247,0.6944, & + & 0.6696,0.6398,0.6146,0.5893,0.5644,0.5454,0.5326,0.5260, & + & 0.5205,0.5207,0.5214,0.5227,0.5297,0.5331,0.5377,0.5439, & + & 0.5510,0.5538,0.5615,0.5682,0.5789,0.5891,0.5997,0.6159, & + & 0.6332,0.6514,0.6707,0.6904,0.7100,0.7302,0.7508,0.7718, & + & 0.7977,0.8187,0.8389,0.8577,0.8751,0.8914,0.9022,0.9129, & + & 0.9241,0.9318,0.9457,0.9603,0.9757,0.9906,1.0088,1.0253, & + & 1.0398,1.0528,1.0709,1.0803,1.0953,1.1070,1.1235,1.1394, & + & 1.1544,1.1684,1.1819,1.2002,1.2145,1.2291,1.2448,1.2553, & + & 1.2658,1.2753,1.2797,1.2877,1.3001,1.3076,1.3200,1.3328, & + & 1.3420,1.3567,1.3718,1.3821,1.3957,1.4079,1.4185,1.4287, & + & 1.4393,1.4513,1.4642,1.4772,1.4839,1.4885,1.4861,1.4870, & + & 1.4872,1.4879,1.4948,1.5032,1.5130,1.5234,1.5335,1.5421, & + & 1.5433,1.5419,1.5385,1.5392,1.5404,1.5484,1.5585,1.5658, & + & 1.5783,1.5796,1.5788,1.5702,1.5551,1.5449,1.5315,1.5302, & + & 1.5309,1.5376,1.5435,1.5527,1.5550,1.5558,1.5549,1.5543, & + & 1.5541,1.5513,1.5553,1.5548,1.5571,1.5578,1.5562,1.5564, & + & 1.5540,1.5562,1.5596,1.5581,1.5577 /) + + real :: iceblendmin(965) = (/50.9676,51.0006,51.0502,51.0834,51.1442,51.1652,51.2001,51.2515, & + & 51.2827,51.3359,51.3624,51.4468,51.4542,51.4569,51.4328,51.4205, & + & 51.3764,51.3528,51.3298,51.3124,51.2394,51.2371,51.2191,51.1786, & + & 51.1375,51.0619,50.9660,50.8148,50.7525,50.6414,50.5264,50.3269, & + & 50.2866,50.1676,50.1103,49.9840,49.7366,49.6262,49.4571,49.3607, & + & 49.1804,48.9481,48.6778,48.4299,48.1134,47.8120,47.6658,47.5517, & + & 47.4880,46.7413,45.5665,44.9749,44.6667,44.2120,43.0722,41.5282, & + & 39.7089,38.2692,37.9664,39.1782,39.6201,40.0483,39.8515,38.8235, & + & 37.1506,34.4698,31.4290,28.7220,27.8377,27.5375,27.5575,27.5109, & + & 27.6527,27.8339,27.4148,26.8177,25.2410,17.2146,8.3391,6.0498, & + & 4.7989,4.2558,4.4753,4.5955,5.3141,6.0303,6.4231,6.5382, & + & 8.0910,8.6324,9.8148,10.6432,11.1748,11.5336,12.4696,12.8490, & + & 14.0124,14.6136,15.7625,14.3082,9.6504,6.3288,4.2966,3.3667, & + & 2.6851,2.4037,2.3006,2.3944,2.6331,2.8286,3.2182,3.8217, & + & 4.7161,5.9443,6.9632,7.8210,9.0949,10.0948,10.4799,10.3975, & + & 10.1598,9.7428,9.1727,8.5613,7.9964,7.4790,6.9982,6.6177, & + & 6.2916,6.0299,5.8449,5.6896,5.5695,5.4773,5.3886,5.3159, & + & 5.2264,5.1371,5.0596,4.9713,4.8834,4.7885,4.7068,4.6211, & + & 4.5368,4.4720,4.4174,4.3546,4.3023,4.2791,4.2220,4.1769, & + & 4.1317,4.0005,3.9422,3.8860,3.7703,3.6417,3.5931,3.3784, & + & 3.0989,2.7249,2.5554,2.2867,1.9801,1.6761,1.3812,1.1513, & + & 0.9072,0.7310,0.5798,0.4736,0.3971,0.3354,0.2834,0.2549, & + & 0.2274,0.2193,0.2163,0.2290,0.2467,0.2996,0.3702,0.5096, & + & 0.6571,0.8732,1.0930,1.3128,1.5441,1.7412,1.9219,2.1449, & + & 2.3407,2.6212,2.9052,3.2693,3.6515,4.0903,4.5672,5.0711, & + & 5.5464,5.8284,6.0487,6.0444,5.9727,5.8061,5.6469,5.5379, & + & 5.4668,5.4050,5.3469,5.2584,5.1674,5.0273,4.8717,4.6975, & + & 4.5198,4.3586,4.2066,4.0783,3.9562,3.8255,3.7083,3.6132, & + & 3.5251,3.4463,3.3684,3.3039,3.2444,3.1897,3.1345,3.0880, & + & 3.0389,2.9983,2.9689,2.9379,2.9146,2.8996,2.8804,2.8651, & + & 2.8580,2.8654,2.8748,2.8839,2.8948,2.9125,2.9287,2.9552, & + & 2.9813,3.0041,3.0296,3.0609,3.0924,3.1196,3.1449,3.1677, & + & 3.1905,3.2118,3.2239,3.2412,3.2566,3.2596,3.2578,3.2500, & + & 3.2340,3.2192,3.2062,3.1815,3.1492,3.1185,3.0829,3.0468, & + & 3.0095,2.9709,2.9310,2.8899,2.8527,2.8153,2.7786,2.7402, & + & 2.6993,2.6643,2.6320,2.6009,2.5702,2.5404,2.5092,2.4822, & + & 2.4580,2.4280,2.3980,2.3719,2.3457,2.3209,2.3012,2.2798, & + & 2.2560,2.2359,2.2166,2.1958,2.1783,2.1624,2.1412,2.1176, & + & 2.0994,2.0882,2.0781,2.0678,2.0558,2.0440,2.0326,2.0191, & + & 2.0030,1.9861,1.9694,1.9526,1.9403,1.9290,1.9153,1.9033, & + & 1.8909,1.8757,1.8614,1.8511,1.8414,1.8252,1.8075,1.7941, & + & 1.7860,1.7774,1.7654,1.7551,1.7481,1.7432,1.7383,1.7332, & + & 1.7282,1.7260,1.7289,1.7317,1.7300,1.7285,1.7289,1.7337, & + & 1.7387,1.7431,1.7480,1.7562,1.7670,1.7794,1.7910,1.8026, & + & 1.8155,1.8247,1.8346,1.8461,1.8592,1.8717,1.8804,1.8891, & + & 1.8987,1.9119,1.9255,1.9377,1.9530,1.9669,1.9762,1.9881, & + & 2.0010,2.0119,2.0238,2.0345,2.0433,2.0497,2.0578,2.0680, & + & 2.0758,2.0834,2.0906,2.1017,2.1130,2.1222,2.1302,2.1377, & + & 2.1445,2.1505,2.1549,2.1573,2.1601,2.1647,2.1681,2.1701, & + & 2.1709,2.1721,2.1732,2.1730,2.1725,2.1709,2.1693,2.1691, & + & 2.1666,2.1628,2.1556,2.1475,2.1394,2.1330,2.1272,2.1193, & + & 2.1084,2.0966,2.0857,2.0776,2.0682,2.0563,2.0429,2.0318, & + & 2.0222,2.0107,1.9994,1.9872,1.9748,1.9603,1.9450,1.9325, & + & 1.9207,1.9065,1.8916,1.8760,1.8589,1.8455,1.8340,1.8222, & + & 1.8110,1.7968,1.7830,1.7670,1.7495,1.7353,1.7245,1.7130, & + & 1.6963,1.6805,1.6702,1.6611,1.6490,1.6389,1.6264,1.6084, & + & 1.5903,1.5765,1.5648,1.5513,1.5414,1.5339,1.5236,1.5132, & + & 1.5002,1.4813,1.4663,1.4542,1.4437,1.4358,1.4256,1.4160, & + & 1.4053,1.3947,1.3861,1.3757,1.3672,1.3570,1.3482,1.3431, & + & 1.3399,1.3365,1.3319,1.3277,1.3217,1.3201,1.3220,1.3232, & + & 1.3211,1.3163,1.3104,1.3058,1.3047,1.3070,1.3096,1.3117, & + & 1.3147,1.3172,1.3203,1.3253,1.3313,1.3375,1.3428,1.3472, & + & 1.3487,1.3504,1.3489,1.3488,1.3521,1.3595,1.3689,1.3784, & + & 1.3850,1.3910,1.3972,1.4022,1.4070,1.4102,1.4130,1.4153, & + & 1.4181,1.4228,1.4279,1.4315,1.4370,1.4418,1.4455,1.4507, & + & 1.4555,1.4602,1.4658,1.4700,1.4725,1.4726,1.4719,1.4731, & + & 1.4747,1.4772,1.4799,1.4809,1.4802,1.4781,1.4773,1.4740, & + & 1.4755,1.4798,1.4830,1.4865,1.4889,1.4896,1.4884,1.4886, & + & 1.4907,1.4941,1.4953,1.4964,1.4967,1.4980,1.4984,1.4977, & + & 1.4969,1.4956,1.4930,1.4906,1.4898,1.4897,1.4912,1.4947, & + & 1.5008,1.5038,1.5075,1.5099,1.5112,1.5143,1.5164,1.5181, & + & 1.5188,1.5184,1.5174,1.5156,1.5148,1.5132,1.5130,1.5133, & + & 1.5146,1.5145,1.5146,1.5159,1.5171,1.5189,1.5243,1.5303, & + & 1.5340,1.5362,1.5381,1.5388,1.5392,1.5387,1.5385,1.5388, & + & 1.5383,1.5387,1.5393,1.5388,1.5383,1.5369,1.5365,1.5364, & + & 1.5374,1.5389,1.5409,1.5431,1.5447,1.5453,1.5460,1.5468, & + & 1.5465,1.5468,1.5468,1.5471,1.5474,1.5486,1.5493,1.5506, & + & 1.5509,1.5508,1.5509,1.5504,1.5493,1.5488,1.5493,1.5481, & + & 1.5465,1.5451,1.5435,1.5430,1.5429,1.5431,1.5449,1.5455, & + & 1.5466,1.5468,1.5478,1.5487,1.5482,1.5481,1.5474,1.5462, & + & 1.5445,1.5444,1.5440,1.5445,1.5461,1.5481,1.5494,1.5498, & + & 1.5496,1.5496,1.5499,1.5518,1.5534,1.5553,1.5578,1.5584, & + & 1.5594,1.5591,1.5583,1.5568,1.5553,1.5549,1.5553,1.5564, & + & 1.5586,1.5597,1.5618,1.5640,1.5648,1.5667,1.5672,1.5686, & + & 1.5692,1.5695,1.5699,1.5686,1.5690,1.5683,1.5690,1.5692, & + & 1.5681,1.5689,1.5687,1.5683,1.5667,1.5657,1.5654,1.5638, & + & 1.5609,1.5601,1.5583,1.5575,1.5552,1.5535,1.5529,1.5517, & + & 1.5484,1.5468,1.5467,1.5464,1.5426,1.5410,1.5386,1.5339, & + & 1.5318,1.5292,1.5240,1.5212,1.5191,1.5160,1.5104,1.5068, & + & 1.5029,1.4952,1.4910,1.4836,1.4802,1.4762,1.4734,1.4717, & + & 1.4703,1.4667,1.4648,1.4624,1.4575,1.4530,1.4476,1.4440, & + & 1.4411,1.4355,1.4330,1.4282,1.4249,1.4188,1.4145,1.4113, & + & 1.4056,1.4030,1.3995,1.3980,1.3946,1.3931,1.3900,1.3875, & + & 1.3827,1.3795,1.3745,1.3712,1.3651,1.3606,1.3556,1.3513, & + & 1.3464,1.3435,1.3393,1.3373,1.3336,1.3312,1.3245,1.3185, & + & 1.3137,1.3074,1.3025,1.2972,1.2915,1.2895,1.2853,1.2836, & + & 1.2806,1.2784,1.2772,1.2754,1.2762,1.2734,1.2710,1.2703, & + & 1.2661,1.2611,1.2577,1.2507,1.2447,1.2400,1.2331,1.2273, & + & 1.2231,1.2222,1.2187,1.2158,1.2146,1.2102,1.2048,1.1997, & + & 1.1967,1.1912,1.1847,1.1761,1.1649,1.1569,1.1439,1.1301, & + & 1.1172,1.1049,1.0968,1.0842,1.0707,1.0566,1.0396,1.0203, & + & 1.0029,0.9887,0.9718,0.9541,0.9352,0.9170,0.8980,0.8795, & + & 0.8609,0.8433,0.8262,0.8082,0.7921,0.7748,0.7583,0.7425, & + & 0.7252,0.7124,0.6922,0.6772,0.6624,0.6475,0.6348,0.6220, & + & 0.6106,0.5978,0.5856,0.5731,0.5626,0.5562,0.5520,0.5501, & + & 0.5491,0.5540,0.5606,0.5679,0.5772,0.5866,0.6066,0.6340, & + & 0.6558,0.6773,0.7042,0.7351,0.7770,0.8086,0.8406,0.8798, & + & 0.9333,0.9743,1.0160,1.0629,1.1326,1.1844,1.2364,1.3069, & + & 1.3606,1.4134,1.4841,1.5358,1.5838,1.6477,1.6937,1.7564, & + & 1.8068,1.8750,1.9263,1.9774,2.0450,2.0934,2.1598,2.2077, & + & 2.2646,2.3034,2.3572,2.3957,2.4499,2.5039,2.5442,2.5980, & + & 2.6359,2.6868,2.7377,2.7763,2.8282,2.8802,2.9191,2.9704, & + & 3.0215,3.0585,3.1080,3.1504,3.1901,3.2191,3.2591,3.3004, & + & 3.3413,3.3728,3.4150,3.4569,3.4992,3.5408,3.5729,3.6048, & + & 3.6288,3.6608,3.6927,3.7244,3.7540,3.7853,3.8144,3.8438, & + & 3.8635,3.8783,3.8948,3.9123,3.9309,3.9540,3.9734,3.9940, & + & 4.0123,4.0292,4.0375,4.0463,4.0581,4.0703,4.0834,4.0963, & + & 4.1105,4.1181,4.1244,4.1261,4.1263,4.1258,4.1228,4.1220, & + & 4.1214,4.1216,4.1224,4.1245,4.1257,4.1267,4.1262,4.1250, & + & 4.1229,4.1199,4.1187,4.1163,4.1143,4.1098,4.1036,4.0979, & + & 4.0907,4.0850,4.0766,4.0685,4.0579 /) + + real :: glacalbmin(965) = (/76.5647,76.6276,76.7093,76.7661,76.8648,76.9031,76.9626,77.0663, & + & 77.1065,77.2014,77.2394,77.3605,77.3981,77.4192,77.3466,77.3355, & + & 77.2838,77.2266,77.1971,77.1605,77.0746,77.0797,77.0427,76.9848, & + & 76.9276,76.8161,76.6620,76.4379,76.3449,76.1762,75.9964,75.7043, & + & 75.6438,75.4620,75.3803,75.1706,74.8191,74.6513,74.3653,74.2452, & + & 73.9786,73.6161,73.2051,72.8287,72.3642,71.8883,71.6749,71.4829, & + & 71.3933,70.2688,68.4822,67.5718,67.1219,66.4206,64.6848,62.3370, & + & 59.5614,57.3785,56.9179,58.7607,59.4490,60.0894,59.7791,58.2303, & + & 55.6582,51.5992,46.9807,42.8836,41.5244,41.0581,41.0886,41.0230, & + & 41.2365,41.5272,40.8915,39.9829,37.5905,25.3835,11.8742,8.4122, & + & 6.5259,5.6807,6.0331,6.1927,7.3042,8.3902,8.9973,9.1784, & + & 11.5209,12.3597,14.1637,15.4238,16.2394,16.7805,18.2222,18.7872, & + & 20.5799,21.4947,23.2220,21.0443,13.9389,8.8934,5.8113,4.4027, & + & 3.3727,2.9436,2.7949,2.9576,3.3066,3.6113,4.2126,5.1382, & + & 6.5035,8.3817,9.9377,11.2453,13.1936,14.7193,15.3168,15.1962, & + & 14.8401,14.2079,13.3430,12.4183,11.5648,10.7853,10.0584,9.4851, & + & 8.9943,8.6022,8.3260,8.0947,7.9183,7.7820,7.6535,7.5472, & + & 7.4172,7.2897,7.1794,7.0490,6.9199,6.7834,6.6677,6.5443, & + & 6.4244,6.3330,6.2560,6.1685,6.0994,6.0634,5.9766,5.9218, & + & 5.8607,5.6753,5.6064,5.5271,5.3541,5.1690,5.1345,4.8159, & + & 4.3990,3.8205,3.5874,3.2046,2.7535,2.2905,1.8494,1.5360, & + & 1.1722,0.9449,0.7377,0.6003,0.5149,0.4516,0.4059,0.3933, & + & 0.3764,0.3844,0.4002,0.4154,0.4452,0.4804,0.5473,0.6514, & + & 0.7629,0.9087,1.0530,1.2023,1.3635,1.4968,1.6052,1.7358, & + & 1.8252,1.9692,2.1195,2.3221,2.5540,2.8194,3.1418,3.4939, & + & 3.8055,4.0742,4.2480,4.2701,4.1886,4.0242,3.8729,3.7521, & + & 3.6902,3.6507,3.6160,3.5785,3.5368,3.4630,3.3653,3.2560, & + & 3.1427,3.0252,2.9211,2.8317,2.7509,2.6644,2.5978,2.5420, & + & 2.4936,2.4474,2.3991,2.3670,2.3423,2.3217,2.3007,2.2867, & + & 2.2675,2.2580,2.2640,2.2656,2.2769,2.2971,2.3084,2.3259, & + & 2.3578,2.4014,2.4482,2.4907,2.5368,2.5940,2.6484,2.7122, & + & 2.7758,2.8374,2.9022,2.9669,3.0329,3.0942,3.1540,3.2095, & + & 3.2651,3.3124,3.3444,3.3836,3.4179,3.4374,3.4494,3.4522, & + & 3.4426,3.4311,3.4237,3.3981,3.3598,3.3260,3.2830,3.2403, & + & 3.1951,3.1450,3.0931,3.0393,2.9910,2.9423,2.8961,2.8463, & + & 2.7931,2.7453,2.7018,2.6598,2.6185,2.5820,2.5433,2.5085, & + & 2.4773,2.4369,2.3966,2.3628,2.3286,2.2971,2.2734,2.2461, & + & 2.2152,2.1873,2.1604,2.1349,2.1138,2.0961,2.0687,2.0384, & + & 2.0166,2.0020,1.9896,1.9798,1.9677,1.9524,1.9381,1.9202, & + & 1.8983,1.8782,1.8585,1.8364,1.8201,1.8084,1.7933,1.7778, & + & 1.7621,1.7421,1.7231,1.7107,1.6985,1.6766,1.6528,1.6352, & + & 1.6252,1.6151,1.6000,1.5838,1.5728,1.5647,1.5572,1.5497, & + & 1.5418,1.5348,1.5356,1.5396,1.5372,1.5314,1.5282,1.5324, & + & 1.5368,1.5400,1.5438,1.5528,1.5661,1.5785,1.5895,1.6016, & + & 1.6144,1.6280,1.6435,1.6640,1.6870,1.7061,1.7194,1.7354, & + & 1.7529,1.7730,1.7936,1.8125,1.8363,1.8602,1.8769,1.8983, & + & 1.9213,1.9409,1.9622,1.9818,1.9982,2.0139,2.0326,2.0511, & + & 2.0663,2.0809,2.0939,2.1136,2.1347,2.1522,2.1674,2.1812, & + & 2.1942,2.2070,2.2169,2.2261,2.2368,2.2454,2.2532,2.2603, & + & 2.2658,2.2701,2.2747,2.2745,2.2755,2.2782,2.2823,2.2857, & + & 2.2858,2.2819,2.2724,2.2635,2.2562,2.2492,2.2434,2.2332, & + & 2.2145,2.1983,2.1881,2.1825,2.1708,2.1522,2.1281,2.1117, & + & 2.1039,2.0934,2.0807,2.0668,2.0528,2.0329,2.0084,1.9901, & + & 1.9777,1.9636,1.9467,1.9257,1.8925,1.8680,1.8574,1.8535, & + & 1.8429,1.8247,1.8062,1.7719,1.7416,1.7266,1.7260,1.7088, & + & 1.6771,1.6508,1.6435,1.6424,1.6315,1.6149,1.5957,1.5708, & + & 1.5432,1.5222,1.5009,1.4762,1.4643,1.4597,1.4542,1.4418, & + & 1.4201,1.3815,1.3496,1.3342,1.3295,1.3259,1.3109,1.2961, & + & 1.2758,1.2523,1.2383,1.2255,1.2192,1.1940,1.1698,1.1642, & + & 1.1703,1.1845,1.1793,1.1499,1.1217,1.1151,1.1251,1.1329, & + & 1.1163,1.0868,1.0605,1.0514,1.0616,1.0777,1.0711,1.0559, & + & 1.0538,1.0591,1.0712,1.0731,1.0732,1.0859,1.0973,1.1126, & + & 1.1220,1.1029,1.0808,1.0616,1.0591,1.0907,1.1292,1.1462, & + & 1.1491,1.1511,1.1614,1.1830,1.1993,1.1997,1.1942,1.1867, & + & 1.1878,1.1977,1.2081,1.2245,1.2334,1.2346,1.2382,1.2422, & + & 1.2446,1.2470,1.2509,1.2541,1.2556,1.2551,1.2411,1.2236, & + & 1.2146,1.2069,1.2074,1.2180,1.2216,1.2006,1.1745,1.1483, & + & 1.1459,1.1680,1.2078,1.2325,1.2301,1.2078,1.1828,1.1771, & + & 1.1862,1.2115,1.2364,1.2464,1.2414,1.2338,1.2214,1.2095, & + & 1.2123,1.2241,1.2354,1.2283,1.2099,1.2010,1.2061,1.2225, & + & 1.2457,1.2634,1.2679,1.2626,1.2624,1.2694,1.2756,1.2837, & + & 1.2966,1.3026,1.2911,1.2692,1.2570,1.2531,1.2557,1.2650, & + & 1.2790,1.2770,1.2560,1.2434,1.2420,1.2472,1.2634,1.2875, & + & 1.3045,1.3116,1.3175,1.3168,1.3117,1.3048,1.2994,1.2984, & + & 1.3026,1.3121,1.3190,1.3161,1.3080,1.2980,1.2922,1.2923, & + & 1.2993,1.3107,1.3232,1.3286,1.3286,1.3272,1.3254,1.3224, & + & 1.3155,1.3117,1.3111,1.3126,1.3153,1.3203,1.3249,1.3305, & + & 1.3319,1.3345,1.3376,1.3352,1.3295,1.3264,1.3268,1.3274, & + & 1.3274,1.3261,1.3226,1.3204,1.3206,1.3228,1.3291,1.3350, & + & 1.3405,1.3433,1.3457,1.3482,1.3467,1.3439,1.3399,1.3360, & + & 1.3330,1.3345,1.3371,1.3420,1.3470,1.3507,1.3518,1.3513, & + & 1.3498,1.3485,1.3476,1.3492,1.3516,1.3556,1.3609,1.3630, & + & 1.3663,1.3665,1.3657,1.3636,1.3619,1.3619,1.3626,1.3642, & + & 1.3671,1.3682,1.3710,1.3738,1.3748,1.3779,1.3794,1.3823, & + & 1.3834,1.3840,1.3849,1.3836,1.3847,1.3843,1.3860,1.3874, & + & 1.3879,1.3902,1.3911,1.3920,1.3927,1.3924,1.3931,1.3923, & + & 1.3909,1.3910,1.3900,1.3907,1.3913,1.3907,1.3920,1.3934, & + & 1.3944,1.3949,1.3975,1.3997,1.3993,1.3997,1.3992,1.3982, & + & 1.3983,1.3973,1.3952,1.3936,1.3933,1.3914,1.3887,1.3860, & + & 1.3832,1.3777,1.3746,1.3695,1.3675,1.3645,1.3644,1.3636, & + & 1.3635,1.3623,1.3615,1.3599,1.3565,1.3517,1.3481,1.3450, & + & 1.3431,1.3396,1.3385,1.3364,1.3340,1.3293,1.3251,1.3223, & + & 1.3174,1.3154,1.3142,1.3140,1.3138,1.3141,1.3146,1.3131, & + & 1.3100,1.3071,1.3022,1.2985,1.2928,1.2878,1.2838,1.2788, & + & 1.2757,1.2736,1.2714,1.2703,1.2693,1.2679,1.2621,1.2575, & + & 1.2525,1.2468,1.2412,1.2367,1.2320,1.2308,1.2287,1.2280, & + & 1.2276,1.2286,1.2291,1.2314,1.2352,1.2357,1.2366,1.2375, & + & 1.2352,1.2320,1.2296,1.2243,1.2208,1.2165,1.2121,1.2093, & + & 1.2086,1.2097,1.2093,1.2098,1.2105,1.2099,1.2087,1.2076, & + & 1.2064,1.2047,1.2015,1.1962,1.1875,1.1794,1.1678,1.1547, & + & 1.1429,1.1311,1.1220,1.1096,1.0962,1.0818,1.0666,1.0477, & + & 1.0315,1.0151,0.9996,0.9829,0.9646,0.9475,0.9289,0.9108, & + & 0.8925,0.8752,0.8584,0.8403,0.8253,0.8085,0.7927,0.7779, & + & 0.7611,0.7463,0.7280,0.7117,0.6960,0.6800,0.6672,0.6541, & + & 0.6437,0.6308,0.6190,0.6069,0.5953,0.5870,0.5826,0.5813, & + & 0.5815,0.5852,0.5908,0.5973,0.6069,0.6167,0.6306,0.6471, & + & 0.6635,0.6791,0.6980,0.7176,0.7409,0.7622,0.7841,0.8092, & + & 0.8389,0.8669,0.8965,0.9275,0.9633,0.9952,1.0274,1.0642, & + & 1.0993,1.1330,1.1712,1.2035,1.2339,1.2667,1.2941,1.3258, & + & 1.3549,1.3874,1.4182,1.4484,1.4831,1.5121,1.5462,1.5746, & + & 1.6044,1.6291,1.6597,1.6839,1.7141,1.7432,1.7695,1.7984, & + & 1.8222,1.8492,1.8766,1.9016,1.9299,1.9583,1.9837,2.0110, & + & 2.0386,2.0617,2.0874,2.1122,2.1382,2.1593,2.1856,2.2119, & + & 2.2374,2.2607,2.2876,2.3129,2.3390,2.3642,2.3865,2.4082, & + & 2.4269,2.4489,2.4715,2.4937,2.5129,2.5307,2.5454,2.5605, & + & 2.5734,2.5845,2.5987,2.6136,2.6294,2.6475,2.6634,2.6787, & + & 2.6903,2.6995,2.7051,2.7110,2.7194,2.7285,2.7392,2.7496, & + & 2.7634,2.7694,2.7738,2.7738,2.7723,2.7702,2.7664,2.7681, & + & 2.7697,2.7748,2.7806,2.7897,2.7961,2.8022,2.8053,2.8076, & + & 2.8080,2.8087,2.8116,2.8136,2.8152,2.8155,2.8142,2.8106, & + & 2.8070,2.8059,2.8075,2.8046,2.8001 /) + + real :: seaicemax(965) = (/89.3836,89.4590,89.5557,89.6232,89.7398,89.7856,89.8562,89.9637, & + & 90.0223,90.1284,90.1748,90.3282,90.3575,90.3690,90.3178,90.2988, & + & 90.2319,90.1815,90.1484,90.1134,89.9989,89.9981,89.9622,89.8973, & + & 89.8260,89.6926,89.5241,89.2568,89.1463,88.9483,88.7471,88.3957, & + & 88.3242,88.1116,88.0173,87.7852,87.3537,87.1568,86.8439,86.6882, & + & 86.3696,85.9517,85.4697,85.0279,84.4758,83.9315,83.6742,83.4634, & + & 83.3585,82.0312,79.9360,78.8825,78.3403,77.5255,75.4977,72.7443, & + & 69.4962,66.9371,66.3969,68.5580,69.3583,70.1177,69.7624,67.9406, & + & 64.9462,60.1723,54.7574,49.9376,48.3606,47.8214,47.8570,47.7819, & + & 48.0339,48.3687,47.6220,46.5569,43.7530,29.4384,13.6111,9.5361, & + & 7.3173,6.3412,6.7399,6.9510,8.2399,9.5217,10.2260,10.4395, & + & 13.2013,14.1786,16.2955,17.7729,18.7296,19.3735,21.0499,21.7275, & + & 23.8174,24.8897,26.9366,24.3622,16.0527,10.1371,6.5219,4.8715, & + & 3.6644,3.1620,2.9871,3.1623,3.5883,3.9456,4.6496,5.7349, & + & 7.3377,9.5436,11.3691,12.9059,15.1937,16.9847,17.6876,17.5484, & + & 17.1324,16.3924,15.3794,14.2968,13.2974,12.3833,11.5333,10.8627, & + & 10.2888,9.8302,9.5082,9.2388,9.0329,8.8758,8.7260,8.6037, & + & 8.4523,8.3050,8.1785,8.0283,7.8791,7.7216,7.5879,7.4465, & + & 7.3081,7.2040,7.1177,7.0204,6.9429,6.9099,6.8168,6.7533, & + & 6.6872,6.4733,6.3916,6.3082,6.1175,5.9067,5.8501,5.4877, & + & 5.0098,4.3563,4.0810,3.6323,3.1117,2.5867,2.0810,1.7084, & + & 1.2991,1.0240,0.7864,0.6267,0.5227,0.4478,0.3914,0.3672, & + & 0.3423,0.3387,0.3444,0.3480,0.3632,0.3820,0.4341,0.5218, & + & 0.6218,0.7443,0.8707,0.9990,1.1457,1.2668,1.3586,1.4748, & + & 1.5425,1.6683,1.8008,1.9881,2.2083,2.4596,2.7785,3.1325, & + & 3.4365,3.7259,3.9051,3.9317,3.8379,3.6567,3.4895,3.3562, & + & 3.2909,3.2543,3.2238,3.1968,3.1651,3.1031,3.0132,2.9114, & + & 2.8037,2.6878,2.5883,2.5023,2.4271,2.3451,2.2870,2.2363, & + & 2.1967,2.1546,2.1127,2.0872,2.0707,2.0585,2.0455,2.0399, & + & 2.0290,2.0264,2.0431,2.0533,2.0763,2.1070,2.1292,2.1584, & + & 2.2030,2.2608,2.3222,2.3786,2.4386,2.5110,2.5805,2.6601, & + & 2.7393,2.8165,2.8983,2.9781,3.0588,3.1355,3.2093,3.2783, & + & 3.3475,3.4057,3.4471,3.4947,3.5379,3.5636,3.5806,3.5870, & + & 3.5787,3.5682,3.5614,3.5338,3.4919,3.4538,3.4063,3.3582, & + & 3.3078,3.2511,3.1921,3.1309,3.0765,3.0216,2.9686,2.9123, & + & 2.8515,2.7970,2.7475,2.6998,2.6529,2.6120,2.5685,2.5286, & + & 2.4934,2.4476,2.4021,2.3636,2.3250,2.2889,2.2620,2.2317, & + & 2.1971,2.1653,2.1347,2.1058,2.0825,2.0625,2.0323,1.9982, & + & 1.9739,1.9578,1.9438,1.9335,1.9204,1.9033,1.8870,1.8669, & + & 1.8420,1.8199,1.7981,1.7724,1.7544,1.7421,1.7257,1.7083, & + & 1.6903,1.6674,1.6458,1.6316,1.6182,1.5933,1.5659,1.5460, & + & 1.5352,1.5240,1.5068,1.4881,1.4756,1.4666,1.4578,1.4488, & + & 1.4398,1.4315,1.4324,1.4373,1.4343,1.4274,1.4237,1.4281, & + & 1.4329,1.4365,1.4409,1.4513,1.4664,1.4802,1.4925,1.5052, & + & 1.5197,1.5360,1.5538,1.5784,1.6059,1.6282,1.6438,1.6633, & + & 1.6844,1.7079,1.7322,1.7540,1.7816,1.8103,1.8308,1.8562, & + & 1.8835,1.9070,1.9323,1.9556,1.9754,1.9949,2.0177,2.0400, & + & 2.0581,2.0757,2.0923,2.1160,2.1406,2.1613,2.1796,2.1969, & + & 2.2129,2.2280,2.2400,2.2523,2.2656,2.2772,2.2873,2.2953, & + & 2.3014,2.3073,2.3134,2.3164,2.3198,2.3224,2.3256,2.3302, & + & 2.3307,2.3281,2.3194,2.3097,2.3008,2.2933,2.2870,2.2765, & + & 2.2591,2.2417,2.2276,2.2187,2.2059,2.1873,2.1648,2.1488, & + & 2.1377,2.1235,2.1086,2.0920,2.0754,2.0538,2.0295,2.0111, & + & 1.9956,1.9767,1.9559,1.9326,1.9028,1.8806,1.8664,1.8543, & + & 1.8403,1.8198,1.7996,1.7706,1.7415,1.7222,1.7126,1.6957, & + & 1.6670,1.6413,1.6297,1.6220,1.6068,1.5912,1.5717,1.5435, & + & 1.5140,1.4923,1.4731,1.4502,1.4367,1.4289,1.4174,1.4025, & + & 1.3808,1.3456,1.3175,1.2995,1.2876,1.2791,1.2634,1.2485, & + & 1.2302,1.2095,1.1950,1.1787,1.1674,1.1465,1.1277,1.1206, & + & 1.1203,1.1232,1.1167,1.0968,1.0751,1.0671,1.0698,1.0708, & + & 1.0583,1.0376,1.0168,1.0043,1.0036,1.0073,1.0027,0.9939, & + & 0.9915,0.9913,0.9946,0.9961,0.9980,1.0051,1.0107,1.0161, & + & 1.0158,1.0045,0.9883,0.9748,0.9720,0.9873,1.0078,1.0200, & + & 1.0232,1.0270,1.0344,1.0447,1.0528,1.0528,1.0498,1.0456, & + & 1.0453,1.0506,1.0568,1.0645,1.0717,1.0750,1.0778,1.0827, & + & 1.0864,1.0900,1.0953,1.0987,1.0994,1.0981,1.0906,1.0840, & + & 1.0812,1.0800,1.0823,1.0864,1.0859,1.0740,1.0615,1.0491, & + & 1.0516,1.0673,1.0884,1.1040,1.1076,1.1015,1.0919,1.0916, & + & 1.0994,1.1146,1.1269,1.1334,1.1329,1.1326,1.1294,1.1249, & + & 1.1263,1.1306,1.1331,1.1275,1.1193,1.1157,1.1194,1.1301, & + & 1.1463,1.1569,1.1631,1.1638,1.1653,1.1711,1.1754,1.1801, & + & 1.1854,1.1867,1.1804,1.1690,1.1628,1.1587,1.1590,1.1624, & + & 1.1689,1.1674,1.1587,1.1547,1.1550,1.1586,1.1708,1.1868, & + & 1.1972,1.2032,1.2084,1.2095,1.2086,1.2059,1.2041,1.2046, & + & 1.2062,1.2110,1.2151,1.2133,1.2095,1.2039,1.2012,1.2011, & + & 1.2050,1.2114,1.2185,1.2234,1.2252,1.2254,1.2255,1.2253, & + & 1.2222,1.2211,1.2208,1.2218,1.2232,1.2265,1.2292,1.2336, & + & 1.2350,1.2365,1.2384,1.2375,1.2345,1.2333,1.2345,1.2339, & + & 1.2327,1.2316,1.2295,1.2292,1.2304,1.2326,1.2383,1.2426, & + & 1.2472,1.2509,1.2535,1.2562,1.2556,1.2550,1.2532,1.2508, & + & 1.2481,1.2492,1.2502,1.2534,1.2573,1.2611,1.2630,1.2633, & + & 1.2625,1.2620,1.2620,1.2648,1.2677,1.2721,1.2778,1.2798, & + & 1.2834,1.2838,1.2831,1.2810,1.2792,1.2793,1.2800,1.2820, & + & 1.2857,1.2875,1.2911,1.2948,1.2961,1.2996,1.3013,1.3048, & + & 1.3064,1.3077,1.3091,1.3082,1.3096,1.3092,1.3113,1.3132, & + & 1.3145,1.3175,1.3187,1.3198,1.3205,1.3203,1.3214,1.3210, & + & 1.3204,1.3212,1.3204,1.3216,1.3225,1.3219,1.3235,1.3255, & + & 1.3278,1.3290,1.3327,1.3361,1.3373,1.3385,1.3384,1.3381, & + & 1.3386,1.3380,1.3368,1.3357,1.3361,1.3345,1.3325,1.3302, & + & 1.3274,1.3218,1.3185,1.3135,1.3116,1.3086,1.3099,1.3098, & + & 1.3104,1.3103,1.3101,1.3090,1.3064,1.3015,1.2983,1.2951, & + & 1.2933,1.2898,1.2888,1.2869,1.2843,1.2800,1.2755,1.2730, & + & 1.2689,1.2673,1.2673,1.2677,1.2683,1.2689,1.2700,1.2689, & + & 1.2665,1.2640,1.2596,1.2559,1.2499,1.2443,1.2403,1.2350, & + & 1.2320,1.2301,1.2289,1.2284,1.2282,1.2272,1.2216,1.2172, & + & 1.2119,1.2069,1.2011,1.1977,1.1938,1.1932,1.1921,1.1921, & + & 1.1930,1.1954,1.1965,1.1999,1.2046,1.2062,1.2083,1.2101, & + & 1.2089,1.2069,1.2048,1.2002,1.1975,1.1931,1.1890,1.1868, & + & 1.1874,1.1896,1.1912,1.1936,1.1954,1.1964,1.1964,1.1968, & + & 1.1963,1.1960,1.1940,1.1899,1.1812,1.1726,1.1608,1.1474, & + & 1.1350,1.1227,1.1129,1.1001,1.0858,1.0703,1.0546,1.0348, & + & 1.0181,1.0001,0.9843,0.9672,0.9480,0.9302,0.9108,0.8921, & + & 0.8726,0.8543,0.8367,0.8174,0.8017,0.7839,0.7674,0.7521, & + & 0.7342,0.7178,0.6995,0.6822,0.6654,0.6485,0.6353,0.6219, & + & 0.6112,0.5979,0.5857,0.5731,0.5608,0.5522,0.5479,0.5474, & + & 0.5486,0.5535,0.5601,0.5679,0.5792,0.5907,0.6049,0.6212, & + & 0.6384,0.6550,0.6747,0.6947,0.7171,0.7387,0.7609,0.7860, & + & 0.8142,0.8426,0.8724,0.9032,0.9356,0.9668,0.9983,1.0320, & + & 1.0667,1.0997,1.1343,1.1654,1.1950,1.2246,1.2506,1.2783, & + & 1.3056,1.3333,1.3622,1.3906,1.4207,1.4479,1.4775,1.5038, & + & 1.5298,1.5531,1.5803,1.6030,1.6294,1.6545,1.6791,1.7038, & + & 1.7257,1.7481,1.7706,1.7938,1.8178,1.8421,1.8658,1.8886, & + & 1.9115,1.9321,1.9523,1.9730,1.9954,2.0150,2.0380,2.0609, & + & 2.0830,2.1051,2.1287,2.1502,2.1723,2.1934,2.2125,2.2309, & + & 2.2483,2.2671,2.2861,2.3046,2.3195,2.3323,2.3413,2.3509, & + & 2.3596,2.3676,2.3789,2.3911,2.4037,2.4174,2.4298,2.4412, & + & 2.4483,2.4529,2.4545,2.4568,2.4602,2.4661,2.4737,2.4810, & + & 2.4905,2.4931,2.4936,2.4894,2.4820,2.4755,2.4674,2.4649, & + & 2.4630,2.4648,2.4679,2.4740,2.4780,2.4815,2.4822,2.4817, & + & 2.4792,2.4760,2.4757,2.4737,2.4725,2.4696,2.4641,2.4576, & + & 2.4500,2.4451,2.4428,2.4371,2.4298 /) + + real :: seaicemin(965) = (/63.7459,63.7962,63.8629,63.9090,63.9898,64.0206,64.0690,64.1688, & + & 64.1908,64.2744,64.3040,64.3929,64.4386,64.4695,64.3755,64.3721, & + & 64.3357,64.2716,64.2458,64.2076,64.1502,64.1613,64.1232,64.0723, & + & 64.0291,63.9395,63.7998,63.6190,63.5435,63.4041,63.2457,63.0128, & + & 62.9633,62.8124,62.7433,62.5559,62.2845,62.1457,61.8867,61.8023, & + & 61.5875,61.2805,60.9404,60.6296,60.2526,59.8451,59.6756,59.5024, & + & 59.4280,58.5064,57.0284,56.2612,55.9035,55.3156,53.8720,51.9297, & + & 49.6265,47.8200,47.4389,48.9634,49.5397,50.0611,49.7958,48.5200, & + & 46.3701,43.0261,39.2040,35.8297,34.6882,34.2948,34.3201,34.2642, & + & 34.4391,34.6857,34.1610,33.4088,31.4281,21.3286,10.1373,7.2883, & + & 5.7344,5.0203,5.3262,5.4344,6.3685,7.2587,7.7686,7.9174, & + & 9.8405,10.5407,12.0320,13.0747,13.7491,14.1876,15.3945,15.8469, & + & 17.3425,18.0998,19.5073,17.7263,11.8252,7.6498,5.1007,3.9340, & + & 3.0811,2.7252,2.6027,2.7530,3.0250,3.2771,3.7756,4.5416, & + & 5.6693,7.2197,8.5062,9.5847,11.1935,12.4539,12.9459,12.8440, & + & 12.5479,12.0235,11.3066,10.5397,9.8322,9.1873,8.5836,8.1076, & + & 7.6999,7.3741,7.1438,6.9506,6.8036,6.6883,6.5810,6.4908, & + & 6.3821,6.2745,6.1804,6.0697,5.9606,5.8453,5.7475,5.6421, & + & 5.5406,5.4620,5.3944,5.3167,5.2560,5.2169,5.1364,5.0904, & + & 5.0342,4.8773,4.8212,4.7460,4.5908,4.4312,4.4190,4.1442, & + & 3.7883,3.2847,3.0939,2.7769,2.3953,1.9944,1.6178,1.3636, & + & 1.0453,0.8658,0.6889,0.5738,0.5071,0.4553,0.4204,0.4195, & + & 0.4105,0.4300,0.4561,0.4828,0.5271,0.5789,0.6605,0.7811, & + & 0.9040,1.0732,1.2354,1.4055,1.5814,1.7269,1.8517,1.9968, & + & 2.1079,2.2702,2.4383,2.6561,2.8998,3.1793,3.5052,3.8554, & + & 4.1744,4.4225,4.5910,4.6086,4.5392,4.3916,4.2564,4.1480, & + & 4.0895,4.0471,4.0083,3.9603,3.9085,3.8230,3.7175,3.6006, & + & 3.4817,3.3625,3.2539,3.1612,3.0747,2.9836,2.9085,2.8477, & + & 2.7906,2.7402,2.6855,2.6469,2.6140,2.5850,2.5559,2.5336, & + & 2.5061,2.4895,2.4850,2.4779,2.4776,2.4871,2.4876,2.4934, & + & 2.5127,2.5419,2.5742,2.6028,2.6350,2.6771,2.7163,2.7643, & + & 2.8124,2.8582,2.9060,2.9557,3.0070,3.0529,3.0988,3.1407, & + & 3.1827,3.2190,3.2417,3.2725,3.2979,3.3111,3.3182,3.3175, & + & 3.3066,3.2941,3.2860,3.2625,3.2277,3.1982,3.1596,3.1223, & + & 3.0824,3.0389,2.9941,2.9476,2.9056,2.8629,2.8235,2.7803, & + & 2.7346,2.6937,2.6562,2.6197,2.5841,2.5520,2.5181,2.4884, & + & 2.4612,2.4261,2.3912,2.3619,2.3323,2.3053,2.2848,2.2604, & + & 2.2333,2.2093,2.1862,2.1640,2.1452,2.1297,2.1051,2.0785, & + & 2.0593,2.0462,2.0353,2.0260,2.0149,2.0016,1.9891,1.9736, & + & 1.9546,1.9365,1.9188,1.9004,1.8858,1.8747,1.8609,1.8472, & + & 1.8340,1.8168,1.8004,1.7897,1.7788,1.7599,1.7398,1.7244, & + & 1.7151,1.7062,1.6932,1.6795,1.6700,1.6629,1.6566,1.6506, & + & 1.6437,1.6380,1.6389,1.6420,1.6402,1.6355,1.6327,1.6367, & + & 1.6407,1.6436,1.6467,1.6543,1.6658,1.6767,1.6866,1.6980, & + & 1.7091,1.7200,1.7331,1.7496,1.7681,1.7839,1.7950,1.8075, & + & 1.8215,1.8381,1.8550,1.8709,1.8910,1.9101,1.9230,1.9404, & + & 1.9590,1.9749,1.9920,2.0081,2.0210,2.0329,2.0476,2.0622, & + & 2.0746,2.0861,2.0955,2.1112,2.1289,2.1431,2.1551,2.1656, & + & 2.1755,2.1860,2.1937,2.1999,2.2080,2.2135,2.2191,2.2253, & + & 2.2303,2.2329,2.2361,2.2326,2.2313,2.2340,2.2391,2.2413, & + & 2.2409,2.2358,2.2254,2.2174,2.2117,2.2052,2.1998,2.1899, & + & 2.1699,2.1549,2.1486,2.1462,2.1358,2.1172,2.0914,2.0746, & + & 2.0702,2.0632,2.0529,2.0415,2.0302,2.0120,1.9872,1.9692, & + & 1.9598,1.9506,1.9375,1.9189,1.8823,1.8554,1.8483,1.8527, & + & 1.8456,1.8296,1.8127,1.7731,1.7418,1.7310,1.7393,1.7219, & + & 1.6872,1.6602,1.6573,1.6629,1.6562,1.6386,1.6197,1.5982, & + & 1.5723,1.5521,1.5288,1.5022,1.4920,1.4905,1.4909,1.4811, & + & 1.4594,1.4174,1.3816,1.3689,1.3715,1.3727,1.3584,1.3438, & + & 1.3214,1.2950,1.2816,1.2723,1.2711,1.2414,1.2120,1.2078, & + & 1.2202,1.2459,1.2418,1.2030,1.1683,1.1631,1.1805,1.1950, & + & 1.1742,1.1360,1.1041,1.0984,1.1196,1.1480,1.1395,1.1179, & + & 1.1160,1.1268,1.1478,1.1501,1.1485,1.1667,1.1840,1.2091, & + & 1.2283,1.2012,1.1733,1.1483,1.1462,1.1940,1.2505,1.2725, & + & 1.2751,1.2752,1.2884,1.3212,1.3458,1.3467,1.3385,1.3279, & + & 1.3303,1.3448,1.3593,1.3844,1.3952,1.3942,1.3986,1.4017, & + & 1.4028,1.4039,1.4065,1.4095,1.4118,1.4122,1.3916,1.3632, & + & 1.3480,1.3337,1.3326,1.3495,1.3573,1.3272,1.2874,1.2475, & + & 1.2402,1.2688,1.3273,1.3610,1.3527,1.3141,1.2738,1.2626, & + & 1.2730,1.3084,1.3460,1.3594,1.3499,1.3351,1.3134,1.2940, & + & 1.2982,1.3176,1.3378,1.3292,1.3004,1.2863,1.2929,1.3150, & + & 1.3450,1.3698,1.3727,1.3615,1.3594,1.3678,1.3757,1.3874, & + & 1.4078,1.4185,1.4017,1.3693,1.3512,1.3474,1.3523,1.3676, & + & 1.3892,1.3866,1.3534,1.3321,1.3291,1.3358,1.3561,1.3881, & + & 1.4117,1.4201,1.4267,1.4241,1.4148,1.4038,1.3947,1.3922, & + & 1.3990,1.4131,1.4229,1.4189,1.4064,1.3920,1.3833,1.3836, & + & 1.3936,1.4101,1.4278,1.4339,1.4320,1.4291,1.4253,1.4195, & + & 1.4088,1.4023,1.4013,1.4033,1.4074,1.4140,1.4206,1.4274, & + & 1.4288,1.4326,1.4367,1.4329,1.4245,1.4195,1.4191,1.4208, & + & 1.4221,1.4207,1.4157,1.4115,1.4107,1.4130,1.4198,1.4273, & + & 1.4338,1.4357,1.4379,1.4403,1.4378,1.4328,1.4266,1.4212, & + & 1.4179,1.4198,1.4239,1.4306,1.4367,1.4404,1.4405,1.4392, & + & 1.4370,1.4350,1.4331,1.4336,1.4355,1.4390,1.4440,1.4461, & + & 1.4491,1.4492,1.4482,1.4461,1.4446,1.4445,1.4451,1.4464, & + & 1.4484,1.4490,1.4509,1.4528,1.4534,1.4561,1.4575,1.4598, & + & 1.4603,1.4604,1.4607,1.4590,1.4597,1.4593,1.4607,1.4616, & + & 1.4614,1.4629,1.4635,1.4642,1.4649,1.4645,1.4648,1.4636, & + & 1.4613,1.4609,1.4595,1.4599,1.4601,1.4594,1.4604,1.4612, & + & 1.4611,1.4607,1.4622,1.4632,1.4613,1.4610,1.4601,1.4583, & + & 1.4580,1.4566,1.4537,1.4515,1.4505,1.4484,1.4448,1.4419, & + & 1.4390,1.4337,1.4307,1.4255,1.4234,1.4204,1.4189,1.4174, & + & 1.4167,1.4143,1.4129,1.4108,1.4066,1.4020,1.3979,1.3949, & + & 1.3930,1.3894,1.3882,1.3859,1.3836,1.3787,1.3747,1.3716, & + & 1.3660,1.3635,1.3610,1.3602,1.3593,1.3593,1.3591,1.3574, & + & 1.3535,1.3503,1.3448,1.3410,1.3356,1.3313,1.3272,1.3227, & + & 1.3193,1.3170,1.3139,1.3123,1.3103,1.3086,1.3026,1.2977, & + & 1.2930,1.2867,1.2812,1.2757,1.2703,1.2684,1.2653,1.2640, & + & 1.2622,1.2617,1.2618,1.2630,1.2658,1.2653,1.2649,1.2648, & + & 1.2616,1.2571,1.2543,1.2484,1.2441,1.2399,1.2352,1.2318, & + & 1.2299,1.2298,1.2275,1.2259,1.2257,1.2235,1.2211,1.2183, & + & 1.2165,1.2134,1.2090,1.2025,1.1938,1.1862,1.1748,1.1621, & + & 1.1509,1.1395,1.1312,1.1191,1.1066,1.0933,1.0786,1.0606, & + & 1.0449,1.0301,1.0149,0.9987,0.9813,0.9648,0.9471,0.9295, & + & 0.9123,0.8961,0.8802,0.8632,0.8489,0.8331,0.8180,0.8037, & + & 0.7880,0.7747,0.7565,0.7413,0.7267,0.7116,0.6992,0.6864, & + & 0.6761,0.6636,0.6522,0.6406,0.6298,0.6219,0.6174,0.6152, & + & 0.6145,0.6170,0.6215,0.6268,0.6346,0.6428,0.6563,0.6730, & + & 0.6886,0.7032,0.7213,0.7406,0.7648,0.7858,0.8074,0.8324, & + & 0.8636,0.8913,0.9206,0.9518,0.9911,1.0236,1.0565,1.0964, & + & 1.1319,1.1662,1.2080,1.2416,1.2728,1.3088,1.3376,1.3732, & + & 1.4043,1.4416,1.4741,1.5063,1.5454,1.5762,1.6149,1.6453, & + & 1.6791,1.7052,1.7392,1.7648,1.7988,1.8319,1.8598,1.8929, & + & 1.9187,1.9504,1.9826,2.0094,2.0421,2.0745,2.1016,2.1333, & + & 2.1658,2.1913,2.2226,2.2514,2.2810,2.3035,2.3332,2.3628, & + & 2.3918,2.4163,2.4465,2.4756,2.5057,2.5350,2.5605,2.5854, & + & 2.6056,2.6307,2.6569,2.6827,2.7064,2.7291,2.7495,2.7701, & + & 2.7871,2.8014,2.8185,2.8362,2.8551,2.8776,2.8970,2.9162, & + & 2.9323,2.9461,2.9557,2.9653,2.9786,2.9909,3.0046,3.0183, & + & 3.0363,3.0457,3.0540,3.0583,3.0626,3.0650,3.0653,3.0713, & + & 3.0765,3.0849,3.0934,3.1054,3.1142,3.1230,3.1283,3.1336, & + & 3.1367,3.1413,3.1475,3.1534,3.1579,3.1614,3.1642,3.1636, & + & 3.1640,3.1668,3.1722,3.1721,3.1704 /) + + real :: earthveg(965) = (/5.827497147950089,5.85229714795009,5.799358021390375, & + & 5.795304010695188,5.878838057040999,5.960862032085561, & + & 6.122058288770054,6.4520573083778965,6.729866221033869, & + & 6.980863992869876,7.117502941176472,7.28247183600713, & + & 7.393030213903744,7.42842165775401,7.475569607843139, & + & 7.609533778966132,8.078160695187165,9.230414438502676, & + & 11.517675668449197,13.845692513368984,14.846989572192513, & + & 15.221248573975046,14.701650267379682,13.242428431372552, & + & 11.887079857397508,11.161103475935828,10.82826310160428, & + & 10.12285294117647,9.427760516934047,9.166091800356508, & + & 8.64080632798574,7.85588458110517,7.334262923351159, & + & 6.926715864527629,7.185361229946524,8.816807575757576, & + & 15.575309001782534,24.99218413547237,34.47443262032086, & + & 42.541570142602495,47.930085294117646,50.6597601604278, & + & 51.742263903743314,52.16461524064172,52.360184491978615, & + & 52.581960427807495,52.66034037433155,52.805883244206775, & + & 52.68796675579325,52.80420998217469,52.79228128342245, & + & 52.62759188948307,52.27916898395723,50.80416310160428, & + & 48.05629090909092,47.629911051693405,48.3206123885918, & + & 49.62281951871658,50.91769313725489,51.905454723707656, & + & 51.92996889483066,51.32257147950089,50.050410338680926, & + & 45.8863752228164,42.765528787878786,42.07449652406417, & + & 42.119750267379686,42.62221666666666,43.286043939393934, & + & 43.65336577540108,43.27456140819965,41.90735802139039, & + & 39.14577272727273,35.88431764705883,32.79027361853832, & + & 26.431252406417116,17.663085739750446,13.948001515151514, & + & 13.276011051693404,13.619738057041001,15.02328172905526, & + & 16.969916666666666,19.02052290552585,21.0119, & + & 22.748327985739756,24.119593850267382,25.425932887700537, & + & 26.471598217468806,27.18333190730838,27.619863190730836, & + & 27.737408556149738,27.339606238859176,26.520990017825312, & + & 25.98278226381462,24.803342245989306,24.387314884135478, & + & 23.70225294117647,22.388511408199648,19.0126504456328, & + & 14.539265597147951,9.836921836007132,6.606230035650626, & + & 6.09694429590018,6.454936987522282,7.127128342245991, & + & 8.088827450980393,9.082436452762924,10.112983868092691, & + & 10.944141889483067,11.693136274509806,12.506856773618539, & + & 13.211511229946527,13.9023252228164,14.503809269162213, & + & 14.964604723707668,15.313468092691624,15.45710062388592, & + & 15.258167557932268,14.839834046345812,14.55895115864528, & + & 14.281897950089126,13.862630748663099,13.495561853832442, & + & 13.105325490196073,12.644890106951873,12.233680837789658, & + & 11.905604901960782,11.587282531194292,11.252515240641712, & + & 10.844785561497323,10.485259090909093,10.131345900178248, & + & 9.781144830659539,9.410675133689837,9.064648752228164, & + & 8.674728163992867,8.351699910873442,8.087854634581104, & + & 7.775506238859181,7.504872281639928,7.265566666666667, & + & 7.163304010695189,7.034608021390374,6.909462566844919, & + & 6.895809358288772,6.863409358288772,6.831009358288771, & + & 6.798509358288772,6.7660093582887715,6.733709358288772, & + & 6.701409358288771,6.669009358288773,6.636609358288771, & + & 6.604109358288772,6.57160935828877,6.539209358288771, & + & 6.506809358288772,6.474409358288772,6.4420093582887725, & + & 6.409509358288772,6.377009358288771,6.344609358288772, & + & 6.312209358288771,6.279709358288771,6.24720935828877, & + & 6.214909358288772,6.1826093582887705,6.150209358288771, & + & 6.1178093582887705,6.085309358288771,6.052809358288772, & + & 6.02040935828877,5.988009358288772,5.955509358288771, & + & 5.9230093582887715,5.890609358288771,5.8582093582887715, & + & 5.825809358288771,5.79340935828877,5.76090935828877, & + & 5.728409358288771,5.69600935828877,5.663609358288771, & + & 5.63130935828877,5.599009358288772,5.566509358288771, & + & 5.534009358288772,5.50160935828877,5.46920935828877, & + & 5.43670935828877,5.404209358288771,5.3720093582887705, & + & 5.339809358288771,5.338609358288771,5.337409358288772, & + & 5.337309358288771,5.337209358288772,5.334709358288772, & + & 5.33220935828877,5.328309358288771,5.324409358288771, & + & 5.32140935828877,5.31840935828877,5.317709358288772, & + & 5.317009358288771,5.317509358288771,5.31800935828877, & + & 5.318609358288772,5.319209358288771,5.317009358288772, & + & 5.314809358288771,5.3152093582887705,5.315609358288771, & + & 5.3163093582887715,5.317009358288772,5.316709358288771, & + & 5.31640935828877,5.316609358288771,5.31680935828877, & + & 5.316709358288771,5.316609358288771,5.3144093582887715, & + & 5.312209358288771,5.3117093582887716,5.311209358288771, & + & 5.306809358288771,5.302409358288771,5.29600935828877, & + & 5.289609358288771,5.278109358288771,5.266609358288771, & + & 5.2573093582887696,5.248009358288772,5.227409358288771, & + & 5.206809358288771,5.328409358288773,5.450009358288771, & + & 5.5441093582887735,5.638209358288772,5.57070935828877, & + & 5.503209358288771,5.46100935828877,5.418809358288771, & + & 5.39290935828877,5.367009358288771,5.5356093582887675, & + & 5.704209358288772,5.618309358288773,5.532409358288771, & + & 5.515309358288771,5.49820935828877,5.491009358288772, & + & 5.483809358288771,5.480109358288771,5.476409358288771, & + & 5.4737093582887715,5.4710093582887716,5.469809358288772, & + & 5.468609358288771,5.468809358288771,5.469009358288771, & + & 5.46970935828877,5.470409358288772,5.472409358288771, & + & 5.474409358288771,5.475809358288772,5.47720935828877, & + & 5.479009358288772,5.48080935828877,5.48520935828877, & + & 5.489609358288772,5.492609358288771,5.495609358288771, & + & 5.500109358288772,5.50460935828877,5.507409358288771, & + & 5.510209358288772,5.513109358288772,5.5160093582887715, & + & 5.517609358288771,5.519209358288771,5.522709358288772, & + & 5.526209358288771,5.528109358288772,5.530009358288771, & + & 5.532209358288771,5.534409358288771,5.536309358288771, & + & 5.53820935828877,5.5385093582887714,5.53880935828877, & + & 5.53970935828877,5.540609358288771,5.54090935828877, & + & 5.5412093582887705,5.543009358288771,5.544809358288771, & + & 5.5446093582887706,5.544409358288771,5.544809358288772, & + & 5.545209358288771,5.545209358288772,5.545209358288771, & + & 5.545209358288771,5.545209358288771,5.543609358288772, & + & 5.542009358288771,5.541509358288771,5.541009358288771, & + & 5.54000935828877,5.539009358288771,5.536809358288772, & + & 5.53460935828877,5.531309358288771,5.52800935828877, & + & 5.52540935828877,5.522809358288771,5.519309358288771, & + & 5.51580935828877,5.511009358288771,5.506209358288771, & + & 5.503909358288771,5.50160935828877,5.5004093582887705, & + & 5.49920935828877,5.497309358288771,5.4954093582887715, & + & 5.4916093582887715,5.4878093582887715,5.485409358288771, & + & 5.48300935828877,5.480209358288771,5.477409358288771, & + & 5.475009358288771,5.4726093582887705,5.47090935828877, & + & 5.46920935828877,5.4665093582887705,5.4638093582887715, & + & 5.4608093582887705,5.45780935828877,5.455209358288771, & + & 5.452609358288771,5.450809358288771,5.449009358288771, & + & 5.446909358288772,5.44480935828877,5.444509358288772, & + & 5.444209358288771,5.442809358288771,5.441409358288771, & + & 5.43980935828877,5.43820935828877,5.436609358288772, & + & 5.435009358288772,5.435609358288771,5.436209358288771, & + & 5.434709358288771,5.433209358288771,5.432509358288771, & + & 5.431809358288772,5.43070935828877,5.42960935828877, & + & 5.430109358288772,5.430609358288771,5.430209358288772, & + & 5.429809358288771,5.429809358288771,5.429809358288771, & + & 5.4295093582887715,5.429209358288771,5.429009358288772, & + & 5.428809358288771,5.429309358288771,5.429809358288771, & + & 5.43100935828877,5.432209358288771,5.432109358288771, & + & 5.432009358288771,5.432909358288771,5.433809358288771, & + & 5.435009358288772,5.436209358288771,5.436909358288771, & + & 5.437609358288771,5.438209358288772,5.438809358288771, & + & 5.440609358288772,5.442409358288771,5.444209358288771, & + & 5.446009358288772,5.446809358288771,5.447609358288771, & + & 5.449109358288771,5.450609358288771,5.45212935828877, & + & 5.45364935828877,5.455169358288773,5.456689358288772, & + & 5.458209358288771,5.4597293582887705,5.46124935828877, & + & 5.462769358288772,5.464289358288771,5.465809358288771, & + & 5.467149358288771,5.468489358288771,5.469829358288771, & + & 5.471169358288772,5.472509358288772,5.473849358288771, & + & 5.475189358288771,5.476529358288771,5.47786935828877, & + & 5.47920935828877,5.479289358288771,5.47936935828877, & + & 5.479449358288771,5.4795293582887705,5.479609358288771, & + & 5.479689358288771,5.479769358288771,5.47984935828877, & + & 5.479929358288771,5.480009358288771,5.478589358288771, & + & 5.477169358288771,5.475749358288771,5.474329358288771, & + & 5.472909358288772,5.471489358288772,5.470069358288771, & + & 5.468649358288771,5.467229358288772,5.465809358288771, & + & 5.463529358288771,5.46124935828877,5.458969358288771, & + & 5.456689358288772,5.454409358288771,5.45212935828877, & + & 5.4498493582887715,5.447569358288771,5.445289358288771, & + & 5.443009358288771,5.439129358288771,5.435249358288771, & + & 5.43136935828877,5.427489358288771,5.423609358288772, & + & 5.419729358288771,5.415849358288771,5.41196935828877, & + & 5.4080893582887715,5.404209358288771,5.395889358288771, & + & 5.38756935828877,5.379249358288771,5.3709293582887705, & + & 5.36260935828877,5.354289358288771,5.345969358288771, & + & 5.337649358288772,5.329329358288771,5.321009358288771, & + & 5.33016935828877,5.339329358288772,5.348489358288772, & + & 5.357649358288771,5.366809358288771,5.375969358288771, & + & 5.38512935828877,5.3942893582887725,5.403449358288771, & + & 5.41260935828877,5.416569358288771,5.420529358288772, & + & 5.424489358288771,5.428449358288771,5.432409358288772, & + & 5.436369358288771,5.44032935828877,5.444289358288771, & + & 5.44824935828877,5.452209358288771,5.452589358288771, & + & 5.452969358288771,5.45334935828877,5.453729358288772, & + & 5.454109358288772,5.454489358288772,5.4548693582887715, & + & 5.455249358288771,5.455629358288771,5.456009358288771, & + & 5.456009358288771,5.456009358288771,5.456009358288771, & + & 5.456009358288771,5.456009358288771,5.456009358288771, & + & 5.456009358288771,5.456009358288771,5.456009358288771, & + & 5.456009358288771,5.456529358288771,5.457049358288771, & + & 5.457569358288771,5.45808935828877,5.458609358288771, & + & 5.45912935828877,5.459649358288771,5.460169358288772, & + & 5.460689358288771,5.461209358288771,5.4562293582887715, & + & 5.451249358288771,5.446269358288772,5.441289358288771, & + & 5.436309358288771,5.43132935828877,5.42634935828877, & + & 5.421369358288771,5.416389358288772,5.41140935828877, & + & 5.411689358288771,5.41196935828877,5.412249358288771, & + & 5.41252935828877,5.412809358288772,5.413089358288771, & + & 5.41336935828877,5.4136493582887715,5.413929358288771, & + & 5.414209358288772,5.414669358288771,5.4151293582887705, & + & 5.415589358288772,5.41604935828877,5.416509358288771, & + & 5.416969358288772,5.417429358288771,5.41788935828877, & + & 5.418349358288771,5.418809358288771,5.416749358288772, & + & 5.41468935828877,5.412629358288771,5.410569358288771, & + & 5.4085093582887716,5.4064493582887705,5.40438935828877, & + & 5.40232935828877,5.400269358288771,5.398209358288772, & + & 5.398689358288771,5.399169358288772,5.399649358288771, & + & 5.400129358288772,5.40060935828877,5.401089358288772, & + & 5.4015693582887705,5.402049358288771,5.4025293582887715, & + & 5.403009358288771,5.40720935828877,5.41140935828877, & + & 5.415609358288771,5.419809358288771,5.424009358288771, & + & 5.428209358288772,5.43240935828877,5.436609358288772, & + & 5.440809358288771,5.445009358288771,5.445969358288771, & + & 5.44692935828877,5.447889358288771,5.448849358288771, & + & 5.449809358288771,5.45076935828877,5.4517293582887705, & + & 5.4526893582887705,5.45364935828877,5.454609358288772, & + & 5.454669358288771,5.4547293582887715,5.454789358288771, & + & 5.4548493582887705,5.454909358288771,5.45496935828877, & + & 5.45502935828877,5.455089358288772,5.455149358288772, & + & 5.455209358288771,5.455309358288772,5.455409358288771, & + & 5.455509358288771,5.45560935828877,5.455709358288771, & + & 5.455809358288771,5.455909358288771,5.456009358288771, & + & 5.456109358288772,5.4562093582887705,5.454649358288771, & + & 5.4530893582887705,5.451529358288772,5.44996935828877, & + & 5.448409358288771,5.4468493582887705,5.445289358288771, & + & 5.4437293582887705,5.442169358288771,5.4406093582887705, & + & 5.438509358288771,5.436409358288771,5.434309358288772, & + & 5.432209358288771,5.430109358288772,5.428009358288771, & + & 5.425909358288771,5.423809358288771,5.421709358288771, & + & 5.419609358288771,5.421749358288771,5.423889358288772, & + & 5.426029358288771,5.42816935828877,5.4303093582887705, & + & 5.43244935828877,5.434589358288771,5.43672935828877, & + & 5.441009358288771,5.441849358288772,5.442689358288771, & + & 5.443529358288771,5.444369358288771,5.445209358288771, & + & 5.446049358288771,5.44688935828877,5.447729358288771, & + & 5.448569358288771,5.44940935828877,5.446529358288771, & + & 5.443649358288771,5.437889358288771,5.43500935828877, & + & 5.432129358288771,5.429249358288771,5.426369358288771, & + & 5.423489358288772,5.420609358288771,5.421169358288772, & + & 5.421729358288771,5.422289358288771,5.4234093582887715, & + & 5.423969358288771,5.42452935828877,5.425089358288771, & + & 5.42564935828877,5.426209358288771,5.425729358288772, & + & 5.4247693582887715,5.424289358288771,5.423809358288771, & + & 5.423329358288771,5.4228493582887705,5.422369358288772, & + & 5.421409358288772,5.420549358288771,5.419689358288771, & + & 5.418829358288772,5.417969358288771,5.417109358288771, & + & 5.415389358288772,5.414529358288771,5.413669358288771, & + & 5.41280935828877,5.411429358288771,5.40866935828877, & + & 5.407289358288771,5.405909358288771,5.40452935828877, & + & 5.401769358288771,5.400389358288771,5.39900935828877, & + & 5.401329358288772,5.40596935828877,5.40828935828877, & + & 5.410609358288772,5.412929358288772,5.4175693582887705, & + & 5.419889358288771,5.422209358288771,5.424949358288771, & + & 5.430429358288771,5.4331693582887715,5.435909358288771, & + & 5.438649358288771,5.444129358288771,5.446869358288771, & + & 5.449609358288771,5.457329358288771,5.46118935828877, & + & 5.465049358288771,5.472769358288771,5.47662935828877, & + & 5.480489358288771,5.48434935828877,5.489689358288771, & + & 5.49116935828877,5.49264935828877,5.495609358288771, & + & 5.497089358288772,5.500049358288772,5.501529358288771, & + & 5.503009358288772,5.50968935828877,5.5130293582887715, & + & 5.516369358288771,5.5230493582887705,5.52638935828877, & + & 5.529729358288771,5.536409358288771,5.541869358288771, & + & 5.552789358288771,5.558249358288771,5.5637093582887704, & + & 5.574629358288771,5.580089358288771,5.591009358288771, & + & 5.590589358288772,5.5897493582887705,5.58932935828877, & + & 5.588909358288771,5.588069358288771,5.587649358288771, & + & 5.586809358288772,5.5901693582887715,5.59688935828877, & + & 5.60024935828877,5.606969358288771,5.610329358288771, & + & 5.617049358288771,5.620409358288771,5.616769358288772, & + & 5.614949358288771,5.611309358288771,5.609489358288771, & + & 5.60584935828877,5.604029358288772,5.597009358288771, & + & 5.591809358288772,5.581409358288772,5.576209358288771, & + & 5.56580935828877,5.560609358288771,5.550209358288772, & + & 5.550129358288772,5.550089358288771,5.55000935828877, & + & 5.54996935828877,5.549889358288771,5.549809358288771, & + & 5.550949358288772,5.553229358288771,5.554369358288771, & + & 5.556649358288771,5.558929358288771,5.560069358288771, & + & 5.55850935828877,5.55580935828877,5.55040935828877, & + & 5.5450093582887705,5.5423093582887715,5.536909358288772, & + & 5.529369358288772,5.524529358288771,5.514849358288772, & + & 5.505169358288772,5.500329358288772,5.490649358288771, & + & 5.481469358288771,5.472789358288771,5.468449358288771, & + & 5.459769358288772,5.451089358288772,5.446749358288771, & + & 5.442809358288771,5.44360935828877,5.444409358288771, & + & 5.444809358288771,5.445609358288771,5.446409358288771, & + & 5.442769358288771,5.4391293582887705,5.437309358288771, & + & 5.433669358288771,5.430029358288771,5.429609358288772, & + & 5.432409358288772,5.433809358288771,5.436609358288772, & + & 5.4394093582887715,5.442209358288771,5.44920935828877, & + & 5.4562093582887705,5.463209358288771,5.466709358288771, & + & 5.4737093582887715,5.480129358288771,5.48596935828877, & + & 5.491809358288771,5.497649358288771,5.503489358288771, & + & 5.510529358288771,5.518769358288771,5.527009358288772, & + & 5.535249358288771,5.543489358288771,5.551829358288772, & + & 5.560269358288772,5.568709358288772,5.5771493582887715, & + & 5.581369358288772,5.592469358288771,5.597789358288772, & + & 5.603109358288771,5.60842935828877,5.613749358288771, & + & 5.618489358288771,5.62264935828877,5.626809358288772, & + & 5.6309693582887705,5.63512935828877,5.6391093582887715, & + & 5.6429093582887715,5.646709358288771,5.6505093582887715, & + & 5.654309358288771,5.6584893582887705,5.660769358288771, & + & 5.66304935828877,5.665329358288771,5.66760935828877, & + & 5.66964935828877,5.67270935828877,5.67474935828877, & + & 5.676789358288771,5.6778693582887705,5.677989358288771, & + & 5.678169358288771,5.6782893582887715,5.678409358288771, & + & 5.680169358288771,5.682809358288771,5.684569358288771, & + & 5.686329358288771,5.687169358288771,5.687049358288772, & + & 5.6869693582887715,5.686889358288771,5.68548935828877, & + & 5.682849358288771,5.680209358288771,5.6762493582887705, & + & 5.673609358288772,5.6735293582887705,5.673409358288771, & + & 5.673329358288772,5.673209358288771,5.674249358288772, & + & 5.675809358288772,5.676849358288771,5.677889358288771, & + & 5.677569358288769,5.676729358288771,5.675469358288772, & + & 5.6746293582887715,5.675009358288771,5.675809358288772, & + & 5.677009358288772,5.677809358288771,5.675889358288771, & + & 5.67240935828877,5.670089358288771,5.666609358288771, & + & 5.664169358288771,5.66050935828877,5.6568493582887704, & + & 5.654409358288771,5.651229358288771,5.648049358288771, & + & 5.645929358288772,5.643009358288771,5.640609358288771, & + & 5.639009358288771,5.63660935828877,5.634609358288771, & + & 5.632809358288771,5.631609358288772,5.629809358288771, & + & 5.630949358288772,5.63208935828877,5.632849358288771, & + & 5.633309358288771,5.63240935828877,5.631509358288771, & + & 5.630609358288771,5.62862935828877,5.626649358288771, & + & 5.625329358288771,5.621929358288772,5.615689358288772, & + & 5.609449358288771,5.603209358288772,5.60152935828877, & + & 5.599849358288771,5.598169358288771,5.596129358288772, & + & 5.593909358288771,5.591689358288771,5.587089358288771, & + & 5.57772935828877,5.565249358288771,5.557409358288771, & + & 5.552609358288771,5.547809358288772,5.543009358288771, & + & 5.54090935828877,5.53880935828877,5.536009358288771, & + & 5.5277893582887705,5.519569358288771,5.511349358288771, & + & 5.508189358288771,5.507769358288772,5.507349358288771, & + & 5.505249358288771,5.50132935828877,5.498389358288771, & + & 5.486049358288771,5.463329358288771,5.446289358288772, & + & 5.445949358288771,5.45128935828877,5.458409358288771, & + & 5.447309358288771,5.432509358288771,5.421409358288772, & + & 5.402769358288772,5.388789358288772,5.3775893582887715, & + & 5.385929358288771,5.397049358288772,5.402349358288771, & + & 5.401309358288771,5.400269358288772,5.4284093582887705, & + & 5.485209358288769,5.542009358288771,5.509849358288771, & + & 5.485729358288771,5.46160935828877/) + + end module specblock \ No newline at end of file diff --git a/postprocessor/ExampleCompile b/postprocessor/ExampleCompile index 9c9dead3..028f60fa 100755 --- a/postprocessor/ExampleCompile +++ b/postprocessor/ExampleCompile @@ -1 +1 @@ -c++ -O2 -o burn7.a burn.cpp -I/opt/local/include -L/opt/local/lib -lm -lnetcdf_c++ +c++ -O2 -o burn7.a burn7.cpp -I/opt/local/include -L/opt/local/lib -lm -lnetcdf_c++ diff --git a/postprocessor/burn7.cpp b/postprocessor/burn7.cpp index 2d906ff6..3dd3617c 100644 --- a/postprocessor/burn7.cpp +++ b/postprocessor/burn7.cpp @@ -103,15 +103,7 @@ using namespace std; #define EARTH_RD (1000. * R / RMD) #define RV (1000. * R / RMV) #define RCPD (3.5 * RD) -#define RCPV (4.0 * RV) -#define RETV (RV / RD - 1.) -#define RCW (4218.) -#define RCS (2106.) -#define RTT (273.16) -#define RLVTT (2.5008e+6) -#define RLSTT (2.8345e+6) -#define RESTT (611.14) -#define RLAPSE (0.0065) +#define EARTH_RLAPSE (0.0065) #ifdef NETCDF_OUTPUT @@ -197,6 +189,7 @@ int FirstMonth = 1; int LastMonth = 12; double PlanetRadius= EARTH_RADIUS; double RD = EARTH_RD; +double RLAPSE = EARTH_RLAPSE; int Spectral = FALSE; int TermCount ; int MonthCount ; @@ -5280,22 +5273,21 @@ int scanpar(const char *name, int def) return value; } -double scanreal(const char *name, double def) +double scanreal(const char *name, double value, double def) { char *cp; - double value; char tb[COLS+2]; cp = amatch(namelist,name); if (cp == NULL) { - value = def; - sprintf(tb,"%10.10s = %8.3f (default)",name,value); + if ( abs(value-def)<1e-12 ) sprintf(tb,"%10.10s = %8.3g (default)",name,value); + else sprintf(tb,"%10.10s = %8.3g ",name,value); } else { value = strtod(cp,NULL); - sprintf(tb,"%10.10s = %8.3f ",name,value); + sprintf(tb,"%10.10s = %8.3g ",name,value); } LeftText(tb); return value; @@ -5668,15 +5660,17 @@ void parini(void) HorType = scantex("htype" ,"gsfz"); // 1. char is default value (g) } Multi = scanpar("multi" ,0); - LevelFactor = scanreal("levelfactor",1.0); + LevelFactor = scanreal("levelfactor",LevelFactor,1.0); if (NetCDF == 0) NetCDF = scanpar("netcdf",0); HeadOu[6] = scanpar("head7",0); mars = scanpar("mars" ,0); FirstMonth = scanpar("first",1); LastMonth = scanpar("last",12); - PlanetRadius = scanreal("radius",EARTH_RADIUS); - Grav = scanreal("gravity",EARTH_GRAV); - SigmaTop = scanreal("sigmatop",0.0); + PlanetRadius = scanreal("radius",PlanetRadius,EARTH_RADIUS); + Grav = scanreal("gravity",Grav,EARTH_GRAV); + RD = scanreal("gascon",RD,EARTH_RD); + RLAPSE = scanreal("lapse",RLAPSE,EARTH_RLAPSE); + SigmaTop = scanreal("sigmatop",SigmaTop,0.0); vct[SigLevs] = SigmaTop; if (FirstMonth < 1) FirstMonth = 1; if (LastMonth > 12) LastMonth = 12; @@ -5855,6 +5849,7 @@ void AnalyzeFile(void) LONG fcb,fce; /* Fortran Record Control Words */ char Id[8]; char tb[COLS+2]; + double data; union EndianCheck { @@ -5959,6 +5954,18 @@ void AnalyzeFile(void) } if (RealSize == sizeof(float)) DaysPerYear = ReadFLOAT(); else DaysPerYear = ReadDOUBLE(); + if (RealSize == sizeof(float)) data = ReadFLOAT(); + else data = ReadDOUBLE(); + if ( data > 0.0 ) PlanetRadius=data; + if (RealSize == sizeof(float)) data = ReadFLOAT(); + else data = ReadDOUBLE(); + if ( data > 0.0 ) Grav=data; + if (RealSize == sizeof(float)) data = ReadFLOAT(); + else data = ReadDOUBLE(); + if ( data > 0.0 ) RD=data; + if (RealSize == sizeof(float)) data = ReadFLOAT(); + else data = ReadDOUBLE(); + if ( data > 0.0 ) RLAPSE=data; } HeadSt = HeadIn; sprintf(tb,"Truncation = %6d",Truncation); diff --git a/scripts/analisi_estm.sh b/scripts/analisi_estm.sh new file mode 100755 index 00000000..0d9141b3 --- /dev/null +++ b/scripts/analisi_estm.sh @@ -0,0 +1,26 @@ +#!/bin/bash +exp=ex00 +var=alb +year0=31 +year1=60 + +BURN=/work/users/jost/plasim/planets/scripts/burn.sh +mkdir -p post +cd post +for (( y=$year0; y<=$year1; y++)) +do + yy=$(printf "%03d" $y) + echo $yy + $BURN ../$exp.$yy $var.${yy}.nc $var +done +rm -f $var.nc tempzonall.nc +cdo cat $var.???.nc $var.nc +for m in 3 4 5 6 7 8 9 10 11 12 1 2 +do + cdo zonmean -selmon,$m -ymonmean $var.nc tempzon.nc + cdo cat tempzon.nc tempzonall.nc +done +cdo outputtab,date,lat,value tempzonall.nc > temp.txt +cdo outputtab,date,lat,value -zonmean -timmean $var.nc > ${exp}_${var}_year.txt + +awk 'BEGIN{n=0; m=1; dx=1./12.}{if(n==0) {print $0;n=n+1} else {print n*dx " " $2 " " $3; if(m==32){n=n+1;m=1}else {m=m+1}} }'< temp.txt > ${exp}_${var}_mean.txt diff --git a/scripts/aqua.sh b/scripts/aqua.sh index 8d5f9bc7..3868b7ed 100755 --- a/scripts/aqua.sh +++ b/scripts/aqua.sh @@ -1,23 +1,58 @@ DIR=/work/users/jost/plasim/src/scripts/ # Script to create boundary conditions for an acquaplanet + +function help { + echo "Create boundary conditions for an acquaplanet" + echo "Usage: aqua.sh [OPTIONS] temp sic eq" + echo " temp : average surface temperature" + echo " sic : sea-ice cover (0 or 1)" + echo " eq : equatorial continent (set to const) up to latitude lat" + echo "" + echo "Options:" + echo " -g grid grid (t21/t42, default t21)" + echo " -h print this help" + exit 1 +} + +grid="t21" +while getopts "g:h" OPTION; do + case $OPTION in + g) grid=$OPTARG ;; + h) help ;; + esac +done +shift $((OPTIND-1)) + +if [ $# -lt 2 ]; then + help +fi + temp=$1 sic=$2 eq=$3 + if [ "$eq" != "" ] && [ "$eq" != "0" ]; then CONT="-c 1 -e $eq" else CONT="" fi -$DIR/makesra 9.80665 129 > N032_surf_0129.sra # surface geopotential -$DIR/makesra -m 14 $temp 169 > N032_surf_0169.sra # surface temperature -$DIR/makesra $CONT 0. 172 > N032_surf_0172.sra # lsm -$DIR/makesra 2.0 173 > N032_surf_0173.sra # lsm DZ0LAND=2.0 in land_namelist -$DIR/makesra -m 14 0.17 174 > N032_surf_0174.sra # background albedo ALBLAND in land_namelist -$DIR/makesra 0.36 199 > N032_surf_0199.sra # forest cover -$DIR/makesra 2.0 200 > N032_surf_0200.sra # vegetation cover -$DIR/makesra -m 14 $sic 210 > N032_surf_0210.sra # sea-ice cover -$DIR/makesra -m 14 $sic 211 > N032_surf_0211.sra # sea-ice thickness -$DIR/makesra 0.28 212 > N032_surf_0212.sra # forest cover -$DIR/makesra 0.5 229 > N032_surf_0229.sra # bucket size WSMAX=0.5 in land_namelist -$DIR/makesra 0. 232 > N032_surf_0232.sra # lsm DZGLAC=-1 in land_namelist + +if [ "$grid" = "t42" ] || [ "$grid" = "T42" ]; then + tres="N064" +else + tres="N032" +fi + +$DIR/makesra -g $grid 9.80665 129 > ${tres}_surf_0129.sra # surface geopotential +$DIR/makesra -g $grid -m 14 $temp 169 > ${tres}_surf_0169.sra # surface temperature +$DIR/makesra -g $grid $CONT 0. 172 > ${tres}_surf_0172.sra # lsm +$DIR/makesra -g $grid 2.0 173 > ${tres}_surf_0173.sra # lsm DZ0LAND=2.0 in land_namelist +$DIR/makesra -g $grid -m 14 0.17 174 > ${tres}_surf_0174.sra # background albedo ALBLAND in land_namelist +$DIR/makesra -g $grid 0.36 199 > ${tres}_surf_0199.sra # forest cover +$DIR/makesra -g $grid 2.0 200 > ${tres}_surf_0200.sra # vegetation cover +$DIR/makesra -g $grid -m 14 $sic 210 > ${tres}_surf_0210.sra # sea-ice cover +$DIR/makesra -g $grid -m 14 $sic 211 > ${tres}_surf_0211.sra # sea-ice thickness +$DIR/makesra -g $grid 0.28 212 > ${tres}_surf_0212.sra # forest cover +$DIR/makesra -g $grid 0.5 229 > ${tres}_surf_0229.sra # bucket size WSMAX=0.5 in land_namelist +$DIR/makesra -g $grid 0. 232 > ${tres}_surf_0232.sra # lsm DZGLAC=-1 in land_namelist diff --git a/scripts/burn.sh b/scripts/burn.sh index 404ca08c..191b54ea 100755 --- a/scripts/burn.sh +++ b/scripts/burn.sh @@ -6,7 +6,7 @@ VERSION=v1.0 #set -ex BURNER=/work/users/jost/plasim/postprocessor/burn7.x -BURNER=/Users/jost/plasim/plasimnew/postprocessor/burn7.x +BURNER=/home/jost/work/plasim/planets/postprocessor/burn7.x PLEVS="20,30,50,70,100,150,200,250,300,400,500,600,700,850,925,1000" VARS3D="wap wa zeta stf psi d zg hur ta ua va hus clw cl spd psl" GACC=9.80665 @@ -66,7 +66,7 @@ function makevar { "rst") invar="rst"; standard_name="toa_net_shortwave_flux" ;long_name="TOA Net Shortwave Radiation"; units="W m-2"; expr="rst=rst";; "rss") invar="rss"; standard_name="surface_net_shortwave_flux_in_air" ;long_name="Surface Net Shortwave Radiation"; units="W m-2"; expr="rss=rss";; "rls") invar="rls"; standard_name="surface_net_longwave_flux_in_air" ;long_name="Surface Net Longwave Radiation"; units="W m-2"; expr="rls=rls";; - "alb") invar="alb"; standard_name="surface_albedo" ;long_name="Surface Albedo"; units="1"; expr="alb=alb";; + "alb") invar="ssru rss"; standard_name="surface_albedo" ;long_name="Surface Albedo"; units="1"; expr="alb=-ssru/(rss-ssru)";; "prl") invar="prl"; standard_name="large_scale_precipitation_flux" ;long_name="Large Scale Precipitation"; units="kg m-2 s-1"; expr="prl=prl*1000";; "sndc") invar="sndc"; standard_name="surface_snow_depth_change" ;long_name="Surface Snow Depth Change"; units="m s-1"; expr="sndc=sndc";; "stf") invar="stf"; standard_name="stream_function" ;long_name="Stream Function"; units="m"; expr="stf=stf";; diff --git a/scripts/earth.sh b/scripts/earth.sh index b3ae7d92..0b8e6540 100755 --- a/scripts/earth.sh +++ b/scripts/earth.sh @@ -1,9 +1,41 @@ DIR=/work/users/jost/plasim/src/scripts/ # Script to initialize planet with specified surface temperatures and sea ice + +function help { + echo "Initialize planet with specified surface temperatures and sea ice" + echo "Usage: earth.sh [OPTIONS] temp sic" + echo " temp : average surface temperature" + echo " sic : sea-ice cover (0 or 1)" + echo "" + echo "Options:" + echo " -g grid grid (t21/t42, default t21)" + echo " -h print this help" + exit 1 +} + +grid="t21" +while getopts "g:h" OPTION; do + case $OPTION in + g) grid=$OPTARG ;; + h) help ;; + esac +done +shift $((OPTIND-1)) + +if [ $# -lt 2 ]; then + help +fi + +if [ "$grid" = "t42" ] || [ "$grid" = "T42" ]; then + tres="N064" +else + tres="N032" +fi + temp=$1 sic=$2 # Script to create boundary conditions for an extremely hot or cold earth -$DIR/makesra -m 14 $temp 169 > N032_surf_0169.sra # surface temperature -$DIR/makesra -m 14 $sic 210 > N032_surf_0210.sra # sea-ice cover -$DIR/makesra -m 14 $sic 211 > N032_surf_0211.sra # sea-ice thickness +$DIR/makesra -g $grid -m 14 $temp 169 > ${tres}_surf_0169.sra # surface temperature +$DIR/makesra -g $grid -m 14 $sic 210 > ${tres}_surf_0210.sra # sea-ice cover +$DIR/makesra -g $grid -m 14 $sic 211 > ${tres}_surf_0211.sra # sea-ice thickness diff --git a/scripts/makesra b/scripts/makesra index 9c89e903..88e173b4 100755 --- a/scripts/makesra +++ b/scripts/makesra @@ -44,8 +44,12 @@ fi if [ "$grid" = "t42" ] || [ "$grid" = "T42" ]; then gr=r128x64 + nx=128 + ny=64 else gr=r64x32 + nx=64 + ny=32 fi CONST=$1 @@ -63,7 +67,7 @@ for ((m=1; m<=$months; m++)); do if [ "$months" -ne "1" ]; then date=${date:0:4}$mm${date:6:2} fi - printf " $2 0 %s %s 64 32 0 0\n" $date $time + printf " $2 0 %s %s $nx $ny 0 0\n" $date $time cdo -s outputf," %7.3f",8 const$$.nc done rm const$$.nc diff --git a/scripts/nc2txt b/scripts/nc2txt new file mode 100755 index 00000000..d3171b12 --- /dev/null +++ b/scripts/nc2txt @@ -0,0 +1,99 @@ +#!/bin/bash +#set -exv +if [ $# -lt 1 ] ; then + cat << END + Usage: nc2txt infile [options] + + Converts gridded netcdf files to text + Written by: Jost von Hardenberg ISAC-CNR 2012 + + Options [default in brackets]: + -var string variable to extract [first one] + -outputf string output format in C style [%16.7g] + -head create header with lon and lat information + -hour include hour of day + -yearonly include only year (no month, day or hour) + -ncol int print ncol values per line + -zon perform zonal mean +END + exit 1 +fi + +INFILE=$1 +OUTPUTF="%16.7g" +HOUR=0 +YEARONLY=0 +NOUT=1 +ZON="" +shift 1 +while [ $# -gt 0 ] ; do + case $1 in + -var) NCVAR=$2 ; shift 2 ;; + -outputf) OUTPUTF=$2 ; shift 2 ;; + -head) HEAD=1 ; shift 1 ;; + -hour) HOUR=1 ; shift 1 ;; + -yearonly) YEARONLY=1 ; shift 1 ;; + -zon) ZON="-zonmean" ; shift 1 ;; + -ncol) NOUT=$2 ; shift 2 ;; + *) shift 1 ;; + esac +done + +rm -f gridinfo.txt +printf "%%lon: " > head$$_1.txt +printf "%%lat: " > head$$_2.txt +for y in `ncdump -f fortran -v lat $INFILE | grep "// lat("|cut -d, -f 1|cut -d";" -f 1|cut -d= -f 2` +do +for x in `ncdump -f fortran -v lon $INFILE | grep "// lon("|cut -d, -f 1|cut -d";" -f 1|cut -d= -f 2` +do +printf "%9.6f %9.6f\n" $x $y >> gridinfo.txt +printf "%9.6f " $x >> head$$_1.txt +printf "%9.6f " $y >> head$$_2.txt +done +done +printf "\n" >> head$$_1.txt +printf "\n" >> head$$_2.txt + +if [ ! -n "$HEAD" ]; then + rm -f t$$.txt dates$$.txt +else + cat head$$_1.txt head$$_2.txt >t$$.txt + printf "\n\n" > dates$$.txt +fi + +OUTFILE=${INFILE%.nc}.txt + +if [ ! -n "$NCVAR" ]; then + NCVAR=`cdo -s showname $INFILE` + NCVAR=(${NCVAR// / }) +fi + +rm -f in$$.nc +cdo -s selname,$NCVAR $INFILE in$$.nc + +printf '%s\n' `cdo -s showdate in$$.nc` > date$$.txt +#printf '%s\n' `cdo infov in$$.nc |grep snow -| cut -c10-19` > date$$.txt + +cut -d- -f1 date$$.txt > years$$.txt +cut -d- -f2 date$$.txt > months$$.txt +cut -d- -f3 date$$.txt > days$$.txt +if [ $HOUR == 1 ]; then + printf '%s\n' `cdo -s showtime in$$.nc` > hour1$$.txt + cut -d: -f1 hour1$$.txt > hour$$.txt + paste years$$.txt months$$.txt days$$.txt hour$$.txt >> dates$$.txt +elif [ $YEARONLY == 1 ]; then + paste years$$.txt >> dates$$.txt +else + paste years$$.txt months$$.txt days$$.txt >> dates$$.txt +fi + +SIZE=`cdo -s infov -seltimestep,1 in$$.nc|tail -1|cut -c48-55` +SIZE=(${SIZE// / }) + +#cdo -s outputf,"$OUTPUTF",$SIZE in$$.nc >> t$$.txt +# XXX Why??? +cdo -s outputf,"$OUTPUTF",$NOUT $ZON in$$.nc >> t$$.txt +paste dates$$.txt t$$.txt > $OUTFILE + +rm -f in$$.nc date$$.txt months$$.txt days$$.txt years$$.txt t$$.txt rm head$$_1.txt head$$_2.txt dates$$.txt hour$$.txt hour1$$.txt +