[4773] | 1 | % This script plots horizontal migration distances predicted by |
---|
| 2 | % SPARTACUS's "explicit entrapment" option, but it requires (1) the |
---|
| 3 | % whole code to have been compiled with "make |
---|
| 4 | % PRINT_ENTRAPMENT_DATA=1", and (2) "make i3rc_print_entrapment" to |
---|
| 5 | % have been run in this directory. This produces the fort.10[12] files |
---|
| 6 | % containing the migration distances. |
---|
| 7 | |
---|
| 8 | xdata = load('fort.101'); |
---|
| 9 | fdata = load('fort.102'); |
---|
| 10 | in = loadnc('i3rc_mls_cumulus_sza.nc'); |
---|
| 11 | out= loadnc('i3rc_mls_cumulus_mono_entr_out.nc'); |
---|
| 12 | |
---|
| 13 | z=in.height_hl(1:end-1,1)./1000; |
---|
| 14 | zh=in.height_hl(:,1)./1000; |
---|
| 15 | [nlev,ncol] = size(in.cloud_fraction); |
---|
| 16 | |
---|
| 17 | x_region_direct = flip(reshape(xdata(:,3:5),nlev,ncol,3),1); |
---|
| 18 | x_region_diffuse = flip(reshape(xdata(:,6:8),nlev,ncol,3),1); |
---|
| 19 | n_scat_region = flip(reshape(xdata(:,9:11),nlev,ncol,3),1); |
---|
| 20 | |
---|
| 21 | x_diffuse_scaling = sqrt(2.0 * (n_scat_region+exp(-n_scat_region)-1.0) + 1.0e-16) ./ (n_scat_region+1.0e-8); |
---|
| 22 | |
---|
| 23 | tot_region_diffuse = sqrt(2.0).*x_region_diffuse.*x_diffuse_scaling; |
---|
| 24 | tot_region_direct = sqrt(x_region_direct.^2 + (x_region_diffuse.*x_diffuse_scaling).^2); |
---|
| 25 | |
---|
| 26 | flux_region_direct = reshape(fdata(:,3:5),nlev,ncol,3); |
---|
| 27 | flux_region_dn_diffuse = reshape(fdata(:,6:8),nlev,ncol,3); |
---|
| 28 | |
---|
| 29 | flux_direct = squeeze(sum(flux_region_direct,3)); |
---|
| 30 | flux_dn_diffuse = squeeze(sum(flux_region_dn_diffuse,3)); |
---|
| 31 | |
---|
| 32 | ind = find(flux_region_dn_diffuse(:,1,1) < 1.0e-8); |
---|
| 33 | flux_region_dn_diffuse(ind,:,1) = NaN; |
---|
| 34 | |
---|
| 35 | xdirect = squeeze(sum(flux_region_direct.*tot_region_direct,3) ... |
---|
| 36 | ./sum(flux_region_direct,3)); |
---|
| 37 | xdiffuse = squeeze(sum(flux_region_dn_diffuse.*tot_region_diffuse,3) ... |
---|
| 38 | ./sum(flux_region_dn_diffuse,3)); |
---|
| 39 | |
---|
| 40 | sza = acosd(in.cos_solar_zenith_angle); |
---|
| 41 | |
---|
| 42 | isza = [1 16 31 41]; |
---|
| 43 | isza = [1 23 36]; |
---|
| 44 | |
---|
| 45 | xmax = 12; |
---|
| 46 | zmax = 4; |
---|
| 47 | |
---|
| 48 | figure(2) |
---|
| 49 | clf |
---|
| 50 | for ii = 1:length(isza) |
---|
| 51 | subplot(2,2,ii) |
---|
| 52 | %plot(squeeze(x_region_direct(:,isza(ii),:)),z); |
---|
| 53 | %plot(squeeze(x_region_diffuse(:,isza(ii),:)),z,'--'); |
---|
| 54 | |
---|
| 55 | plot(xdirect(:,isza(ii))./1000,z,'r') |
---|
| 56 | hold on |
---|
| 57 | plot(xdiffuse(:,isza(ii))./1000,z,'b'); |
---|
| 58 | ylim([0 zmax]); |
---|
| 59 | xlim([0 xmax]) |
---|
| 60 | xlabel('Horizontal distance travelled (km)'); |
---|
| 61 | ylabel('Height (km)'); |
---|
| 62 | title(['(' 'a'-1+ii ') SZA=' num2str(sza(isza(ii))) '\circ']) |
---|
| 63 | if ii == 1 |
---|
| 64 | legend('Direct','Diffuse','location','southeast') |
---|
| 65 | end |
---|
| 66 | grid on |
---|
| 67 | end |
---|
| 68 | |
---|
| 69 | subplot(2,2,4) |
---|
| 70 | zz = 0.5.*(zh(1:end-1)+zh(2:end)); |
---|
| 71 | plot(in.cloud_fraction, zz,'k'); |
---|
| 72 | ylim([0 zmax]) |
---|
| 73 | xlabel('Cloud fraction'); |
---|
| 74 | ylabel('Height (km)'); |
---|
| 75 | grid on |
---|