/[MITgcm]/MITgcm_contrib/ESMF/global_ocean.128x60x15/diags_matlab/mit_getparm.m
ViewVC logotype

Contents of /MITgcm_contrib/ESMF/global_ocean.128x60x15/diags_matlab/mit_getparm.m

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


Revision 1.1 - (show annotations) (download)
Tue Mar 30 03:58:59 2004 UTC (20 years, 2 months ago) by cnh
Branch: MAIN
CVS Tags: adoption_1_0_pre_A, HEAD
New test with different size

1 function y = mit_getparm(fname,pname);
2 %function y = mit_getparm(fname,pname);
3
4 y = [];
5 [fp, msg] = fopen(fname,'r');
6 if fp > 0
7 str{1} = [];
8 notfound = 0;
9 while isempty(mystrfind(str{1},pname))
10 str{1} = fgetl(fp);
11 if ~ischar(str{1}); % this catches the end of file (not very clean)
12 notfound = 1;
13 break;
14 end
15 % clear again if commented
16 if ~isempty(mystrfind(str{1},'#'))
17 str{1} = [];
18 end
19 end
20 if notfound
21 disp(['Warning: ' pname ' not found in ' fname])
22 y=[];
23 % disp([' setting ' pname ' to zero'])
24 % y = 0;
25 else
26 teststr = [];
27 % find the termination of parameter pname
28 % (next line with an '=' sign
29 % or with a namelist termination character '&' or '/')
30 n = 1;
31 while ( isempty(mystrfind(teststr,'=')) & ...
32 isempty(mystrfind(teststr,'&')) & ...
33 isempty(mystrfind(teststr,'/')) )
34 n = n + 1;
35 teststr = fgetl(fp);
36 str{n} = teststr;
37 if ~ischar(teststr); break; end
38 end
39 eqind = findstr(str{1},'=');
40 y = str{1}(eqind+1:end-1);
41 % check whether it is a string in quotes or something else
42 quotes = findstr(y,'''');
43 if ~isempty(quotes)
44 y(quotes(2):end) = [];
45 y(1:quotes(1)) = [];
46 else
47 if ~( strcmpi(y,'.TRUE.') | strcmpi(y,'.FALSE.') )
48 y = convert_str2num(str{1}(eqind+1:end-1));
49 for k=2:n-1
50 y = [y; convert_str2num(str{k}(eqind+1:end-1))];
51 end
52 % $$$ y = str2num(str{1}(eqind+1:end-1))';
53 % $$$ for k=2:n-1
54 % $$$ y = [y; str2num(str{k}(eqind+1:end-1))'];
55 % $$$ end
56 end
57 end
58 end
59 fclose(fp);
60 else
61 error([fname ' could not be opened: ' msg])
62 end
63
64 return
65
66 function y = convert_str2num(str)
67
68 % take care of the n*value format
69 stars = findstr(str,'*');
70 if isempty(stars)
71 y = str2num(str)';
72 else
73 if length(stars)==1
74 y=repmat(str2num(str(stars+1:end)),[str2num(str(1:stars-1)) 1]);
75 else
76 warning('The format n*x1,m*x2, ... cannot be handled')
77 % $$$ for k=1:length(stars)
78 % $$$ % find the beginnin and termination of the set
79 % $$$ end
80 end
81 end
82
83 return
84
85 function [ind] = mystrfind(str,pattern)
86
87 if length(pattern) > length(str)
88 ind = [];
89 return
90 else
91 ind = findstr(str,pattern);
92 end

  ViewVC Help
Powered by ViewVC 1.1.22