taking computing of the divergence load F outside of hexa
[wrf-fire-matlab.git] / util1_jan / read_array_sp.m
bloba16abedcd8e2e399ed1e2a1c3035e0b2b33f7886
1 function [varargout]=read_array_sp(f,num1,num2)\r
2 % a=read_array_sp(f,num1,num2)\r
3 % [i,j,aij]=read_array_sp(f,num1,num2)\r
4 % [i,j,k,aijk]=read_array_sp(f,num1,num2)\r
5 % read array produced by matching call write_array_m\r
6 % as sparse, with correct indexing\r
7 \r
8 % Jan Mandel, 2008\r
9 \r
10 if exist('num1','var'),\r
11     if ~exist('num2','var'),\r
12         num2=-1;\r
13     end\r
14     f=[file_name(f,num1,num2),'.txt'];\r
15 end\r
16 b=load(f);\r
17 l=length(b);\r
18 its=b(1);\r
19 ite=b(2);\r
20 jts=b(3);\r
21 jte=b(4);\r
22 kts=b(5);\r
23 kte=b(6);\r
24 m=(ite-its+1);\r
25 n=(jte-jts+1);\r
26 o=(kte-kts+1);\r
27 s=m*n*o+6;\r
28 fprintf(1,'matrix size %i:%i %i:%i %i:%i from file %s length %i\n',its,ite,jts,jte,kts,kte,f,l)\r
29 if l~=s,\r
30     error(sprintf('incorrect file length, should be %i',s))\r
31 end\r
32 if nargout==1,\r
33     d=reshape(b(7:s),[m,n,o]);\r
34     if(its>0 & jts > 0 & kts == 1 & kte == 1),\r
35         a=sparse(ite,jte,m*n);\r
36         a(its:ite,jts:jte)=d;\r
37         varargout{1}=a;\r
38     else\r
39         error('incompatible dimensions for output as a sparse matrix')\r
40     end\r
41     return\r
42 end\r
43 ss=m*n*o;\r
44 i=zeros(ss,1);\r
45 j=zeros(ss,1);\r
46 k=zeros(ss,1);\r
47 a=zeros(ss,1);\r
48 for kk=0:kte-kts\r
49     for jj=0:jte-jts\r
50         for ii=0:ite-its\r
51             idx=1+ii+m*jj+m*n*kk;\r
52             i(idx)=its+ii;\r
53             j(idx)=jts+jj;\r
54             k(idx)=kts+kk;\r
55             a(idx)=b(6+idx);\r
56         end\r
57     end\r
58 end\r
59 switch nargout\r
60     case 3\r
61         if kts == kte\r
62             varargout{1}=i;\r
63             varargout{2}=j;\r
64             varargout{3}=a;\r
65         else\r
66             error('dimension 3 must be 1 for ouput as a 2d matrix')\r
67         end\r
68     case 4\r
69             varargout{1}=i;\r
70             varargout{2}=j;\r
71             varargout{3}=k;\r
72             varargout{4}=a;\r
73     otherwise\r
74         error('bad number of output arguments')\r
75 end\r
76 end\r