/[MITgcm]/MITgcm_contrib/gael/matlab_class/gcmfaces_diags/diags_grid_parms.m
ViewVC logotype

Annotation of /MITgcm_contrib/gael/matlab_class/gcmfaces_diags/diags_grid_parms.m

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


Revision 1.2 - (hide annotations) (download)
Tue Dec 11 02:35:07 2012 UTC (12 years, 7 months ago) by gforget
Branch: MAIN
Changes since 1.1: +41 -14 lines
diags_grid_parms.m      add cs510 params and params switch
diags_select.m          in case mygrid.memoryLimit=1, load the
                        stuff that was not saved to diags_grid_parms.mat
diags_set_A.m           restrict list of basins to global ocean when not llc90

1 gforget 1.1 function []=diags_grid_parms(listTimes);
2     %object : load grid, set params, and save both to dirMat
3     %input : listTimes is the time list obtained from diags_list_times
4    
5     %global variables
6     gcmfaces_global;
7     global myparms;
8    
9     %load grid
10     if isempty(dir('GRID'));
11     dirGrid=input('grid directory?\n');
12     else;
13     dirGrid='GRID/'
14     end;
15 gforget 1.2
16     nF=input('number of faces? (1, 4, 5or 6)\n');
17    
18     frmt=input('file format ? (''straight'', ''cube'' or ''compact'')\n');
19    
20     memoryLimit=input('memoryLimit ? (0=load full grid, 1=load less, 2=load even less)\n');
21    
22     grid_load(dirGrid,nF,frmt,memoryLimit);
23 gforget 1.1
24     %set default for model run parameters
25 gforget 1.2 choiceParams=input('choice of default parameters? (1=ecco v4, 2=core, 3=ecco2 adjoint)\n');
26     myparms=default_parms(choiceParams);
27 gforget 1.1
28     %allow user to change model params if necessary
29     myparms=review_parms(myparms,listTimes);
30    
31 gforget 1.2 function [parms]=default_parms(choiceParams);
32 gforget 1.1 %set model parameters to default (ecco_v4)
33    
34 gforget 1.2 if choiceParams==1|choiceParams==2;
35     parms.yearFirst=2004; %first year covered by model integration
36     parms.yearLast =2005; %last year covered by model integration
37 gforget 1.1 parms.yearInAve=[parms.yearFirst parms.yearLast]; %period for time averages and variance computations
38 gforget 1.2 parms.timeStep =1200; %model time step for tracers
39 gforget 1.1 parms.iceModel =1;%0=use freezing point 1=use pkg/seaice 2=use pkg/thsice
40 gforget 1.2 parms.useRFWF =0;%1=real fresh water flux 0=virtual salt flux
41     parms.useNLFS =0;%2=rstar 1=nlfs 0=linear free surface
42     parms.rhoconst =1027.5; %sea water density
43 gforget 1.1 parms.rcp =3994*parms.rhoconst; % sea water rho X heat capacity
44     parms.rhoi = 910; %sea ice density
45     parms.rhosn = 330; %snow density
46     parms.flami = 3.34e05; % latent heat of fusion of ice/snow (J/kg)
47     parms.flamb = 2.50e06; % latent heat of evaporation (J/kg)
48 gforget 1.2 parms.SIsal0 = 4;
49     if choiceParams==2;
50     parms.yearFirst=1948; %first year covered by model integration
51     parms.yearLast =2007; %last year covered by model integration
52     end;
53     end;
54    
55     if choiceParams==3;
56     parms.yearFirst=2004; %first year covered by model integration
57     parms.yearLast =2005; %last year covered by model integration
58     parms.yearInAve=[parms.yearFirst parms.yearLast]; %period for time averages and variance computations
59     parms.timeStep =1200; %model time step for tracers
60     parms.iceModel =1;%0=use freezing point 1=use pkg/seaice 2=use pkg/thsice
61     parms.useRFWF =0;%1=real fresh water flux 0=virtual salt flux
62     parms.useNLFS =0;%2=rstar 1=nlfs 0=linear free surface
63     parms.rhoconst =1027.5; %sea water density
64     parms.rcp =3994*parms.rhoconst; % sea water rho X heat capacity
65     parms.rhoi = 910; %sea ice density
66     parms.rhosn = 330; %snow density
67     parms.flami = 3.34e05; % latent heat of fusion of ice/snow (J/kg)
68     parms.flamb = 2.50e06; % latent heat of evaporation (J/kg)
69     parms.SIsal0 = 0;
70     end;
71 gforget 1.1
72     function [parms]=review_parms(parms,listTimes);
73     %review model parameters, correct them if needed, and check a couple more things
74    
75     test1=1;%so that we print params at least once
76     while test1;
77     fprintf('\n\n');
78     gcmfaces_msg('model parameters summary','==== ');
79    
80     tmp1=sprintf('parms.yearFirst = %i (first year covered by model integration)',parms.yearFirst); gcmfaces_msg(tmp1,'== ');
81     tmp1=sprintf('parms.yearLast = %i (first year covered by model integration)',parms.yearLast); gcmfaces_msg(tmp1,'== ');
82     tmp1=sprintf('parms.yearInAve = [%i %i] (time mean and variance years)',parms.yearInAve); gcmfaces_msg(tmp1,'== ');
83     tmp1=sprintf('parms.timeStep = %i (model time step for tracers)',parms.timeStep); gcmfaces_msg(tmp1,'== ');
84     tmp1=sprintf('parms.iceModel = %i (0=freezing point 1=pkg/seaice 2=pkg/thsice)',parms.iceModel); gcmfaces_msg(tmp1,'== ');
85     tmp1=sprintf('parms.useRFWF = %i (1=real fresh water flux 0=virtual salt flux)',parms.useRFWF); gcmfaces_msg(tmp1,'== ');
86     tmp1=sprintf('parms.useNLFS = %i; (2=rstar 1=nlfs 0=linear free surface)',parms.useNLFS); gcmfaces_msg(tmp1,'== ');
87     tmp1=sprintf('parms.rhoconst = %0.6g (sea water density)',parms.rhoconst); gcmfaces_msg(tmp1,'== ');
88     tmp1=sprintf('parms.rcp = %0.6g (sea water density X heat capacity)',parms.rcp); gcmfaces_msg(tmp1,'== ');
89     if parms.iceModel==1;
90     tmp1=sprintf('parms.rhoi = %0.6g (sea ice density)',parms.rhoi); gcmfaces_msg(tmp1,'== ');
91     tmp1=sprintf('parms.rhosn = %0.6g (snow density)',parms.rhosn); gcmfaces_msg(tmp1,'== ');
92     tmp1=sprintf('parms.flami = %0.6g (latent heat of fusion of ice/snow in J/kg)',parms.flami); gcmfaces_msg(tmp1,'== ');
93     tmp1=sprintf('parms.flamb = %0.6g (latent heat of evaporation in J/kg)',parms.flamb); gcmfaces_msg(tmp1,'== ');
94     tmp1=sprintf('parms.SIsal0 = %0.6g (sea ice constant salinity)',parms.SIsal0); gcmfaces_msg(tmp1,'== ');
95     %tmp1=sprintf('',); gcmfaces_msg(tmp1,'== ');
96     else;
97     error('only parms.iceModel=1 is currently treated\n');
98     end;
99    
100     gcmfaces_msg('to change a param type e.g. ''parms.yearFirst=1;'' or hit return if all params are ok. Change a param?','==== ');
101     tmp1=input('');
102     test1=~isempty(tmp1); %so that we change param and iterate process
103     if test1; eval(tmp1); end;
104    
105     end;
106    
107     %determine a few more things about the diagnostic time axis
108     fprintf('\n\n');
109     parms.diagsNbRec=length(listTimes);
110     test1=median(diff(listTimes)*parms.timeStep/86400);
111     if abs(test1-30.5)<1; parms.diagsAreMonthly=1; else; parms.diagsAreMonthly=0; end;
112     if abs(test1-365.25)<1; parms.diagsAreAnnual=1; else; parms.diagsAreAnnual=0; end;
113     tmp1=sprintf('parms.diagsNbRec = %i (number of records, based on model output files)',parms.diagsNbRec); gcmfaces_msg(tmp1,'== ');
114     tmp1=sprintf('parms.diagsAreMonthly = %i (0/1 = false/true; based on output frequency)',parms.diagsAreMonthly); gcmfaces_msg(tmp1,'== ');
115     tmp1=sprintf('parms.diagsAreAnnual = %i (0/1 = false/true; based on output frequency)',parms.diagsAreAnnual); gcmfaces_msg(tmp1,'== ');
116     gcmfaces_msg('hit return if this seems correct otherwise stop here','== '); test0=input(''); if ~isempty(test0); error('likely dir problem'); end;
117    
118     listTimes2=parms.yearFirst+listTimes*parms.timeStep/86400/365.25;%this approximation of course makes things simpler
119     tmp1=-0.5*diff(listTimes,1,1)*parms.timeStep/86400/365.25; tmp1=[median(tmp1);tmp1];
120     listTimes2=listTimes2+tmp1;%this converts the enddate to the middate of pkg/diags
121     ii=find(listTimes2>=parms.yearInAve(1)&listTimes2<=parms.yearInAve(2)+1);
122     if parms.diagsAreMonthly;%then restrict to full years
123     ni=floor(length(ii)/12)*12; parms.recInAve=[ii(1) ii(floor(ni))];
124     elseif ~isempty(ii);
125     parms.recInAve=[ii(1) ii(end)];
126     else;
127     parms.recInAve=[1 1];
128     end;
129     tmp1=sprintf('parms.recInAve = [%i %i] (time mean and variance records)',parms.recInAve); gcmfaces_msg(tmp1,'== ');
130    
131     fprintf('\n\n');
132    

  ViewVC Help
Powered by ViewVC 1.1.22