/[MITgcm]/MITgcm_contrib/gael/matlab_class/ecco_v4/cost_xx.m
ViewVC logotype

Contents of /MITgcm_contrib/gael/matlab_class/ecco_v4/cost_xx.m

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.13 - (show annotations) (download)
Fri Dec 30 23:09:27 2016 UTC (8 years, 6 months ago) by gforget
Branch: MAIN
CVS Tags: checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66o, HEAD
Changes since 1.12: +2 -1 lines
- abort if files are missing

1 function []=cost_xx(dirModel,dirMat,doComp,dirTex,nameTex);
2 %object: compute cost function term for atmospheric controls
3 %inputs: dirModel is the model directory
4 % dirMat is the directory where diagnozed .mat files will be saved
5 % -> set it to '' to use the default [dirModel 'mat/']
6 % doComp is a switch (1->compute; 0->display)
7 %optional: dirTex is the directory where tex and figures files are created
8 % (if not specified then display all results to screen instead)
9 % nameTex is the tex file name (default : 'myPlots')
10
11 if isempty(dirMat); dirMat=[dirModel 'mat' filesep]; else; dirMat=[dirMat filesep]; end;
12 if isempty(dir(dirMat)); mkdir([dirMat]); end;
13
14 %determine if and where to create tex and figures files
15 dirMat=[dirMat filesep];
16 if isempty(who('dirTex'));
17 addToTex=0;
18 else;
19 if ~ischar(dirTex); error('mis-specified dirTex'); end;
20 addToTex=1;
21 if isempty(who('nameTex')); nameTex='myPlots'; end;
22 fileTex=[dirTex filesep nameTex '.tex'];
23 end;
24
25 for ii=1:6;
26 switch ii;
27 case 1; xxName='atemp'; nameSigma='cap_sigma_tmp2m_degC_eccollc.bin'; cc=2; uni='K';
28 case 2; xxName='aqh'; nameSigma='cap_sigma_spfh2m_eccollc.bin'; cc=2; uni='g/kg';
29 case 3; xxName='tauu'; nameSigma='cap_sigma_ustr_eccollc.bin'; cc=0.04; uni='N/m2';
30 case 4; xxName='tauv'; nameSigma='cap_sigma_vstr_eccollc.bin'; cc=0.04; uni='N/m2';
31 case 5; xxName='lwdown'; nameSigma='cap_sigma_dlw_eccollc.bin'; cc=20; uni='W/m2';
32 case 6; xxName='swdown'; nameSigma='cap_sigma_dsw_eccollc.bin'; cc=40; uni='W/m2';
33 end;
34
35 if doComp;
36
37 %load grid
38 gcmfaces_global;
39 if ~isfield(mygrid,'XC'); grid_load('./GRID/',5,'compact'); end;
40 if ~isfield(mygrid,'LATS_MASKS'); gcmfaces_lines_zonal; end;
41
42 if ~isempty(dir([dirModel nameSigma]));
43 dirSig=dirModel;
44 else;
45 warning(['could not find ' nameSigma ' -> abort']);
46 return;
47 end;
48
49 if ~isempty(dir([dirModel 'xx_' xxName '.effective.*data']));
50 dirXX=dirModel;
51 else;
52 dirXX=[dirModel 'ADXXfiles' filesep];
53 end;
54
55 %read model cost output
56 tmp1=dir([dirXX 'xx_' xxName '.effective.*data']);
57 tmp2=size(convert2gcmfaces(mygrid.XC));
58 fld_xx=read2memory([dirXX tmp1.name],[tmp2 tmp1.bytes/tmp2(1)/tmp2(2)/4]);
59 fld_xx=convert2gcmfaces(fld_xx);
60 %does not work when adjoint overwrites xx*effective*meta fld_xx=rdmds2gcmfaces([dirXX 'xx_' xxName '.effective.*']);
61
62 fld_sig=read_bin([dirSig nameSigma],1,0);
63 if strcmp(xxName,'aqh'); fld_xx=fld_xx*1000; fld_sig=fld_sig*1000; end;
64
65 %compute xx stats
66 fld_rms=sqrt(mean(fld_xx.^2,3));
67 fld_mean=mean(fld_xx,3);
68 fld_std=std(fld_xx,[],3);
69
70 %mask
71 fld_rms=fld_rms.*mygrid.mskC(:,:,1);
72 fld_sig=fld_sig.*mygrid.mskC(:,:,1);
73 fld_mean=fld_mean.*mygrid.mskC(:,:,1);
74 fld_std=fld_std.*mygrid.mskC(:,:,1);
75
76 clear fld_xx;
77
78 if ~isdir([dirMat 'cost/']); mkdir([dirMat 'cost/']); end;
79 eval(['save ' dirMat '/cost/cost_xx_' xxName '.mat fld_* cc uni;']);
80
81 else;%display previously computed results
82
83 global mygrid;
84
85 if ~isdir([dirMat 'cost/']); dirMat=[dirMat 'cost/']; end;
86
87 eval(['load ' dirMat '/cost_xx_' xxName '.mat;']);
88
89 figure;
90 m_map_gcmfaces(fld_sig,0,{'myCaxis',[0:0.05:0.5 0.6:0.1:1 1.25]*cc});
91 myCaption={['prior uncertainty -- ' xxName ' (' uni ')']};
92 if addToTex; write2tex(fileTex,2,myCaption,gcf); end;
93
94 figure;
95 m_map_gcmfaces(fld_rms,0,{'myCaxis',[0:0.05:0.5 0.6:0.1:1 1.25]*cc});
96 myCaption={['rms adjustment -- ' xxName ' (' uni ')']};
97 if addToTex; write2tex(fileTex,2,myCaption,gcf); end;
98
99 figure;
100 m_map_gcmfaces(fld_std,0,{'myCaxis',[0:0.05:0.5 0.6:0.1:1 1.25]*cc});
101 myCaption={['std adjustment -- ' xxName ' (' uni ')']};
102 if addToTex; write2tex(fileTex,2,myCaption,gcf); end;
103
104 figure;
105 m_map_gcmfaces(fld_mean,0,{'myCaxis',[-0.5:0.05:0.5]*cc});
106 myCaption={['mean adjustment -- ' xxName ' (' uni ')']};
107 if addToTex; write2tex(fileTex,2,myCaption,gcf); end;
108
109 end;
110
111 end;%for ii=1:6;
112

  ViewVC Help
Powered by ViewVC 1.1.22