Documentation of compare_qflux


Global Index (short | long) | Local contents | Local Index (short | long)


Help text

  Now check out the surface heat flux budgets.

Cross-Reference Information

This script calls

Listing of script compare_qflux


clear
cd /home/disk/hayes/dvimont/ccm3.6/data/SOM
nc = netcdf('tvbds_wgr.cdf', 'nowrite');
q1 = nc{'QO'}(:);
nc = close(nc);
nc = netcdf('tvbds_control_5093.cdf', 'nowrite');
q2 = nc{'QO'}(:);
nc = close(nc);
q1 = squeeze(q1);
q2 = squeeze(q2);
[lat, lon] = getll('tvbds_wgr.cdf');
get_global
default_global
top = squeeze(mean(q1 - q2));
sp(1)
     clma;
     mcont(squeeze(mean(q1)), [-500:50:500], 'giso', [0 180]);
sp(2)
     clma;
     mcont(squeeze(mean(q2)), [-500:50:500], 'giso', [0 180]);
FRAME = [0 360 -40 40];
figure(2)
sp(1)
     clma;
     mcont(top, [-50:5:50], 'giso', [0 180]);

cd /home/disk/hayes2/dvimont/ccm/ccm3.6/run/sun/gr_5093/wgr/data
[fsns1, flns1, shflx1, lhflx1] = ...
     getnc('wgr_5093.nc', 'FSNS', 'FLNS', 'SHFLX', 'LHFLX');
shfl1 = fsns1 - flns1 - shflx1 - lhflx1;

cd /home/disk/hayes2/dvimont/ccm/ccm3.6/run/sun/clim_5093/data
[fsns2, flns2, shflx2, lhflx2] = ...
     getnc('clim_5093.nc', 'FSNS', 'FLNS', 'SHFLX', 'LHFLX');
shfl2 = fsns2 - flns2 - shflx2 - lhflx2;

bot = squeeze(mean(shfl1-shfl2));
figure(2)
sp(2)
     clma;
     mcont(bot+top, [-50:1:50], 'giso', [0 180]);

top = squeeze(-1*mean((fsns1 - fsns2)));
bot = squeeze(1*mean((flns1 - flns2)));

top = squeeze(1*mean((lhflx1 - lhflx2)));
bot = squeeze(1*mean((shflx1 - shflx2)));

figure(1)
sp(1)
     clma;
     mcont(top, [-52:8:52], 'giso', [0 180]);
sp(2)
     clma;
     mcont(bot, [-50:4:50], 'giso', [0 180]);



%%%%%%%%%%%%%% calculate lamda using Lau and Nath %%%%%%%%%%%%%%%

clear

cd /home/disk/hayes2/dvimont/ccm/ccm3.6/run/sun/gr_5093/wgr/data
[fsns1, flns1, shflx1, lhflx1, psl1] = ...
     getnc('wgr_5093.nc', 'FSNS', 'FLNS', 'SHFLX', 'LHFLX', 'PSL');
[airt1, u1, v1] = getnc('wgr_5093.nc', 18, 'AIRT', 'U', 'V');
airt1 = squeeze(airt1); u1 = squeeze(u1); v1 = squeeze(v1);
wspd1 = sqrt(u1.^2 + v1.^2);
shfl1 = fsns1 - flns1 - shflx1 - lhflx1;


cd /home/disk/hayes2/dvimont/ccm/ccm3.6/run/sun/gr_5093/cgr/data
[fsns2, flns2, shflx2, lhflx2, psl2] = ...
     getnc('cgr_5093.nc', 'FSNS', 'FLNS', 'SHFLX', 'LHFLX', 'PSL');
[airt2, u2, v2] = getnc('cgr_5093.nc', 18, 'AIRT', 'U', 'V');
airt2 = squeeze(airt2); u2 = squeeze(u1); v2 = squeeze(v1);
wspd2 = sqrt(u2.^2 + v2.^2);
shfl2 = fsns2 - flns2 - shflx2 - lhflx2;

[lat, lon] = getll('cgr_5093.nc');

cd /home/disk/hayes/dvimont/ccm3.6/data/SOM
nc = netcdf('tvbds_kev.cdf', 'nowrite');
  mld = nc{'MLD'}(:);
nc = close(nc)
mld = squeeze(mld);

get_global
default_global

%  Linearized latent heat:

cdrag = 10e-3;
lhvap = 2.5e6;
cpa = 1005;
sbcon = 5.67e-8;

rho1 = psl1 ./ (287.15 * airt1);
rho2 = psl2 ./ (287.15 * airt1);

%  Find dqsat / dairt

dt = .001;

%     Calculate saturated mixing ratio using Teten's formula:

a = 17.27;
bb = 35.86;
es1 = 100 * (3.8 / 0.62197) .* exp(a .* ((airt1 - 273.15 + dt) ./ (airt1 + dt - bb)));
es2 = 100 * (3.8 / 0.62197) .* exp(a .* ((airt1 - 273.15 - dt) ./ (airt1 - dt - bb)));

qsat1 = (0.622) .* es1 ./ (psl1);
qsat2 = (0.622) .* es2 ./ (psl1);

dqsdt1 = (qsat1 - qsat2) / (2 * dt);

%  Do the same for cgr:

a = 17.27;
bb = 35.86;
es1 = 100 * (3.8 / 0.62197) .* exp(a .* ((airt2 - 273.15 + dt) ./ (airt2 + dt - bb)));
es2 = 100 * (3.8 / 0.62197) .* exp(a .* ((airt2 - 273.15 - dt) ./ (airt2 - dt - bb)));

qsat1 = (0.622) .* es1 ./ (psl1);
qsat2 = (0.622) .* es2 ./ (psl1);

dqsdt2 = (qsat1 - qsat2) / (2 * dt);

lh1 = -1 .* rho1 .* lhvap .* cdrag .* wspd1 .* dqsdt1;
lh2 = -1 .* rho2 .* lhvap .* cdrag .* wspd2 .* dqsdt2;

sh1 = -1 .* rho1 .* cpa .* cdrag .* wspd1;
sh2 = -1 .* rho2 .* cpa .* cdrag .* wspd2;

lw1 = -4 .* sbcon .* airt1.^3;
lw2 = -4 .* sbcon .* airt2.^3;

mld(find(mld == 0)) = NaN * ones(size(find(mld == 0)));

lam1 = -1 * (lh1 + sh1 + lw1) ./ (1000 * 4.218e3 * mld);
lam2 = -1 * (lh2 + sh2 + lw2) ./ (1000 * 4.218e3 * mld);

tm1 = (1./lam1) / (3600 * 24 * 30);
tm2 = (1./lam2) / (3600 * 24 * 30);

figure(1);
sp(1)
  clma
  mcont(squeeze((tm1(1,:,:))), [0:2:30], 'giso');
sp(2);