/[MITgcm]/MITgcm_contrib/gael/matlab_class/gcmfaces_misc/check_budg.m
ViewVC logotype

Annotation of /MITgcm_contrib/gael/matlab_class/gcmfaces_misc/check_budg.m

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


Revision 1.3 - (hide annotations) (download)
Wed Feb 4 19:04:59 2015 UTC (10 years, 5 months ago) by gforget
Branch: MAIN
CVS Tags: checkpoint65r, checkpoint65p, checkpoint65q, checkpoint65t
Changes since 1.2: +22 -29 lines
- check_budg.m : output precision measures
- check_loop.m (new) : loop over check_budg.m

1 gforget 1.3 function [prec]=check_budg(budgIn,kk);
2     %function [prec]=check_budg(budgIn,kk);
3 gforget 1.2 %
4 gforget 1.3 %inputs: budgIn is a structure containting tend, trU, trV, trWtop,
5     % trWbot (calling sequence reported in check_loop.m)
6     % kk is a vertical level (0 for all levels)
7     %outputs: prec contains 3 measures of residual errors
8 gforget 1.1
9     gcmfaces_global;
10    
11     tend=budgIn.tend;
12     trU=budgIn.trU;
13     trV=budgIn.trV;
14     trWtop=budgIn.trWtop;
15     trWbot=budgIn.trWbot;
16    
17     dt=1;
18 gforget 1.2 units='1';
19     %dt=budgIn.t1-budgIn.t0;
20     %units = budgIn.specs.units;
21 gforget 1.1
22     %define northern hemisphere as domain of integration
23     nameMask='Northern Hemisphere';
24     mask=mygrid.mskC.*mk3D(mygrid.YC>0,mygrid.mskC);
25     if length(size(tend{1}))<3; mask=mask(:,:,1); end;
26    
27 gforget 1.2 %focus on one level
28     if kk>0;
29     mask=mask(:,:,kk);
30     tend=tend(:,:,kk);
31     trU=trU(:,:,kk);
32     trV=trV(:,:,kk);
33     trWtop=trWtop(:,:,kk);
34     trWbot=trWbot(:,:,kk);
35     end;
36    
37 gforget 1.1 %edit plot title accordingly
38     descr=nameMask;
39    
40     %compute northern hemisphere integrals
41     budg.tend=NaN*dt;
42     budg.hconv=NaN*dt;
43     budg.zconv=NaN*dt;
44    
45     %compute flux convergence
46     hconv=calc_UV_conv(trU,trV,{});
47 gforget 1.2 zconv=-(trWtop-trWbot);%note the confusing upward sign convention ...
48    
49 gforget 1.3 %compute local residuals
50     hconv(tend==0)=NaN;
51     zconv(tend==0)=NaN;
52     tend(tend==0)=NaN;
53    
54     %compute local residuals
55     norm=sqrt(tend.^2+hconv.^2+zconv.^2);
56     res=abs(tend-hconv-zconv);
57    
58 gforget 1.1 %compute sum over domain
59     budg.tend=nansum(tend.*mask);
60     budg.hconv=nansum(hconv.*mask);
61     budg.zconv=nansum(zconv.*mask);
62 gforget 1.3 %
63     budg.res=abs(budg.tend-budg.hconv-budg.zconv);
64     budg.norm=sqrt(budg.tend.^2+budg.hconv.^2+budg.zconv.^2);
65 gforget 1.1
66 gforget 1.3 %output result
67     prec(1,1)=nanmedian(res)/nanmedian(norm);
68     prec(1,2)=nanmax(res./norm);
69     prec(1,3)=budg.res/budg.norm;
70 gforget 1.1

  ViewVC Help
Powered by ViewVC 1.1.22