annotate extra/fpl/deprecated/FPL3dxoutputmesh.m @ 12671:20e8aca47b2c octave-forge

prepare for release
author cdf
date Mon, 17 Aug 2015 10:19:39 +0000
parents extra/fpl/inst/deprecated/FPL3dxoutputmesh.m@2748190086ad
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10635
79655a0cc43e prepare for release
cdf
parents:
diff changeset
1 ## Copyright (C) 2004-2008,2009 Carlo de Falco, Massimiliano Culpo
79655a0cc43e prepare for release
cdf
parents:
diff changeset
2 ##
79655a0cc43e prepare for release
cdf
parents:
diff changeset
3 ## This file is part of
79655a0cc43e prepare for release
cdf
parents:
diff changeset
4 ##
79655a0cc43e prepare for release
cdf
parents:
diff changeset
5 ## FPL - Fem PLotting package for octave
79655a0cc43e prepare for release
cdf
parents:
diff changeset
6 ##
79655a0cc43e prepare for release
cdf
parents:
diff changeset
7 ## FPL is free software; you can redistribute it and/or modify
79655a0cc43e prepare for release
cdf
parents:
diff changeset
8 ## it under the terms of the GNU General Public License as published by
10655
2748190086ad prepare for release (again)
cdf
parents: 10635
diff changeset
9 ## the Free Software Foundation; either version 3 of the License, or
10635
79655a0cc43e prepare for release
cdf
parents:
diff changeset
10 ## (at your option) any later version.
79655a0cc43e prepare for release
cdf
parents:
diff changeset
11 ##
79655a0cc43e prepare for release
cdf
parents:
diff changeset
12 ## FPL is distributed in the hope that it will be useful,
79655a0cc43e prepare for release
cdf
parents:
diff changeset
13 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
79655a0cc43e prepare for release
cdf
parents:
diff changeset
14 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
79655a0cc43e prepare for release
cdf
parents:
diff changeset
15 ## GNU General Public License for more details.
79655a0cc43e prepare for release
cdf
parents:
diff changeset
16 ##
79655a0cc43e prepare for release
cdf
parents:
diff changeset
17 ## You should have received a copy of the GNU General Public License
79655a0cc43e prepare for release
cdf
parents:
diff changeset
18 ## along with FPL; If not, see <http://www.gnu.org/licenses/>.
79655a0cc43e prepare for release
cdf
parents:
diff changeset
19 ##
79655a0cc43e prepare for release
cdf
parents:
diff changeset
20 ##
79655a0cc43e prepare for release
cdf
parents:
diff changeset
21 ## AUTHORS:
79655a0cc43e prepare for release
cdf
parents:
diff changeset
22 ## Carlo de Falco <cdf _AT_ users.sourceforge.net>
79655a0cc43e prepare for release
cdf
parents:
diff changeset
23 ##
79655a0cc43e prepare for release
cdf
parents:
diff changeset
24 ## Culpo Massimiliano
79655a0cc43e prepare for release
cdf
parents:
diff changeset
25 ## Bergische Universitaet Wuppertal
79655a0cc43e prepare for release
cdf
parents:
diff changeset
26 ## Fachbereich C - Mathematik und Naturwissenschaften
79655a0cc43e prepare for release
cdf
parents:
diff changeset
27 ## Arbeitsgruppe fuer Angewandte MathematD-42119 Wuppertal Gaussstr. 20
79655a0cc43e prepare for release
cdf
parents:
diff changeset
28 ## D-42119 Wuppertal, Germany
79655a0cc43e prepare for release
cdf
parents:
diff changeset
29
79655a0cc43e prepare for release
cdf
parents:
diff changeset
30 ## -*- texinfo -*-
79655a0cc43e prepare for release
cdf
parents:
diff changeset
31 ## @deftypefn {Function File} {} FPL3dxoutputmesh ( @var{filename}, @
79655a0cc43e prepare for release
cdf
parents:
diff changeset
32 ## @var{mesh} )
79655a0cc43e prepare for release
cdf
parents:
diff changeset
33 ##
79655a0cc43e prepare for release
cdf
parents:
diff changeset
34 ## Outputs data in DX form.
79655a0cc43e prepare for release
cdf
parents:
diff changeset
35 ##
79655a0cc43e prepare for release
cdf
parents:
diff changeset
36 ## Variable must be a scalar, vector or tensor of doubles
79655a0cc43e prepare for release
cdf
parents:
diff changeset
37 ##
79655a0cc43e prepare for release
cdf
parents:
diff changeset
38 ## @itemize @minus
79655a0cc43e prepare for release
cdf
parents:
diff changeset
39 ## @item @var{filename} = name of file to save (type string)
79655a0cc43e prepare for release
cdf
parents:
diff changeset
40 ## @item @var{mesh} = PDE-tool like mesh
79655a0cc43e prepare for release
cdf
parents:
diff changeset
41 ## @end itemize
79655a0cc43e prepare for release
cdf
parents:
diff changeset
42 ## @end deftypefn
79655a0cc43e prepare for release
cdf
parents:
diff changeset
43
79655a0cc43e prepare for release
cdf
parents:
diff changeset
44
79655a0cc43e prepare for release
cdf
parents:
diff changeset
45 function FPL3dxoutputmesh(filename,mesh)
79655a0cc43e prepare for release
cdf
parents:
diff changeset
46
79655a0cc43e prepare for release
cdf
parents:
diff changeset
47 nodes = mesh.p';
79655a0cc43e prepare for release
cdf
parents:
diff changeset
48 elem = mesh.t(1:4,:)';
79655a0cc43e prepare for release
cdf
parents:
diff changeset
49
79655a0cc43e prepare for release
cdf
parents:
diff changeset
50 fid = fopen (filename,"w");
79655a0cc43e prepare for release
cdf
parents:
diff changeset
51 nnodes = columns(mesh.p);
79655a0cc43e prepare for release
cdf
parents:
diff changeset
52 nelem = columns(mesh.t);
79655a0cc43e prepare for release
cdf
parents:
diff changeset
53
79655a0cc43e prepare for release
cdf
parents:
diff changeset
54 fprintf(fid,"object ""pos""\nclass array type float rank 1 shape 3 items %d data follows",nnodes);
79655a0cc43e prepare for release
cdf
parents:
diff changeset
55 for ii = 1:nnodes
79655a0cc43e prepare for release
cdf
parents:
diff changeset
56 fprintf(fid,"\n");
79655a0cc43e prepare for release
cdf
parents:
diff changeset
57 fprintf(fid," %e",nodes(ii,:));
79655a0cc43e prepare for release
cdf
parents:
diff changeset
58 endfor
79655a0cc43e prepare for release
cdf
parents:
diff changeset
59
79655a0cc43e prepare for release
cdf
parents:
diff changeset
60 ## In DX format nodes are numbered starting from zero,
79655a0cc43e prepare for release
cdf
parents:
diff changeset
61 ## instead we want to number them starting from 1.
79655a0cc43e prepare for release
cdf
parents:
diff changeset
62 if (min(min(elem))==1)
79655a0cc43e prepare for release
cdf
parents:
diff changeset
63 elem = elem - 1;
79655a0cc43e prepare for release
cdf
parents:
diff changeset
64 elseif(min(min(elem))~=0)
79655a0cc43e prepare for release
cdf
parents:
diff changeset
65 error("WARNING: check tetrahedra structure");
79655a0cc43e prepare for release
cdf
parents:
diff changeset
66 end
79655a0cc43e prepare for release
cdf
parents:
diff changeset
67
79655a0cc43e prepare for release
cdf
parents:
diff changeset
68 fprintf(fid,"\n\nobject ""con""\nclass array type int rank 1 shape 4 items %d data follows",nelem);
79655a0cc43e prepare for release
cdf
parents:
diff changeset
69 for ii = 1:nelem
79655a0cc43e prepare for release
cdf
parents:
diff changeset
70 fprintf(fid,"\n");
79655a0cc43e prepare for release
cdf
parents:
diff changeset
71 fprintf(fid," %d",elem(ii,:));
79655a0cc43e prepare for release
cdf
parents:
diff changeset
72 endfor
79655a0cc43e prepare for release
cdf
parents:
diff changeset
73
79655a0cc43e prepare for release
cdf
parents:
diff changeset
74 fprintf(fid,"\nattribute ""element type"" string ""tetrahedra""\nattribute ""ref"" string ""positions""\n\n");
79655a0cc43e prepare for release
cdf
parents:
diff changeset
75
79655a0cc43e prepare for release
cdf
parents:
diff changeset
76 fprintf(fid,"object ""themesh"" class field\n");
79655a0cc43e prepare for release
cdf
parents:
diff changeset
77 fprintf(fid,"component ""positions"" value ""pos""\n");
79655a0cc43e prepare for release
cdf
parents:
diff changeset
78 fprintf(fid,"component ""connections"" value ""con""\n");
79655a0cc43e prepare for release
cdf
parents:
diff changeset
79
79655a0cc43e prepare for release
cdf
parents:
diff changeset
80 fprintf(fid,"\nend\n");
79655a0cc43e prepare for release
cdf
parents:
diff changeset
81 fclose (fid);
79655a0cc43e prepare for release
cdf
parents:
diff changeset
82
79655a0cc43e prepare for release
cdf
parents:
diff changeset
83 endfunction
79655a0cc43e prepare for release
cdf
parents:
diff changeset
84
79655a0cc43e prepare for release
cdf
parents:
diff changeset
85 %!test
79655a0cc43e prepare for release
cdf
parents:
diff changeset
86 %! msh.p =[ 0 0 1 1 0 0 1 1
79655a0cc43e prepare for release
cdf
parents:
diff changeset
87 %! 0 1 0 1 0 1 0 1
79655a0cc43e prepare for release
cdf
parents:
diff changeset
88 %! 0 0 0 0 1 1 1 1];
79655a0cc43e prepare for release
cdf
parents:
diff changeset
89 %! msh.e =[1 5 7 8 5 5 6 8 1 3 5 7
79655a0cc43e prepare for release
cdf
parents:
diff changeset
90 %! 2 6 3 3 7 3 2 6 3 2 6 6
79655a0cc43e prepare for release
cdf
parents:
diff changeset
91 %! 6 1 8 4 3 1 4 4 2 4 7 8
79655a0cc43e prepare for release
cdf
parents:
diff changeset
92 %! 0 0 0 0 0 0 0 0 0 0 0 0
79655a0cc43e prepare for release
cdf
parents:
diff changeset
93 %! 0 0 0 0 0 0 0 0 0 0 0 0
79655a0cc43e prepare for release
cdf
parents:
diff changeset
94 %! 0 0 0 0 0 0 0 0 0 0 0 0
79655a0cc43e prepare for release
cdf
parents:
diff changeset
95 %! 0 0 0 0 0 0 0 0 0 0 0 0
79655a0cc43e prepare for release
cdf
parents:
diff changeset
96 %! 0 0 0 0 0 0 0 0 0 0 0 0
79655a0cc43e prepare for release
cdf
parents:
diff changeset
97 %! 1 1 1 1 1 1 1 1 1 1 1 1
79655a0cc43e prepare for release
cdf
parents:
diff changeset
98 %! 1 1 2 2 3 3 4 4 5 5 6 6];
79655a0cc43e prepare for release
cdf
parents:
diff changeset
99 %! msh.t =[ 1 5 5 6 7 8
79655a0cc43e prepare for release
cdf
parents:
diff changeset
100 %! 3 6 6 3 3 3
79655a0cc43e prepare for release
cdf
parents:
diff changeset
101 %! 2 7 3 2 6 6
79655a0cc43e prepare for release
cdf
parents:
diff changeset
102 %! 6 3 1 4 8 4
79655a0cc43e prepare for release
cdf
parents:
diff changeset
103 %! 1 1 1 1 1 1];
79655a0cc43e prepare for release
cdf
parents:
diff changeset
104 %! testfile = "object ""pos""\nclass array type float rank 1 shape 3 items 8 data follows\n 0.000000e+00 0.000000e+00 0.000000e+00\n 0.000000e+00 1.000000e+00 0.000000e+00\n 1.000000e+00 0.000000e+00 0.000000e+00\n 1.000000e+00 1.000000e+00 0.000000e+00\n 0.000000e+00 0.000000e+00 1.000000e+00\n 0.000000e+00 1.000000e+00 1.000000e+00\n 1.000000e+00 0.000000e+00 1.000000e+00\n 1.000000e+00 1.000000e+00 1.000000e+00\n\nobject ""con""\nclass array type int rank 1 shape 4 items 6 data follows\n 0 2 1 5\n 4 5 6 2\n 4 5 2 0\n 5 2 1 3\n 6 2 5 7\n 7 2 5 3\nattribute ""element type"" string ""tetrahedra""\nattribute ""ref"" string ""positions""\n\nobject ""themesh"" class field\ncomponent ""positions"" value ""pos""\ncomponent ""connections"" value ""con""\n\nend\n";
79655a0cc43e prepare for release
cdf
parents:
diff changeset
105 %! FPL3dxoutputmesh ("__FPL3dxoutputmesh__test__.dx",msh);
79655a0cc43e prepare for release
cdf
parents:
diff changeset
106 %! fid = fopen("__FPL3dxoutputmesh__test__.dx","r");
79655a0cc43e prepare for release
cdf
parents:
diff changeset
107 %! s = fread(fid);
79655a0cc43e prepare for release
cdf
parents:
diff changeset
108 %! fclose(fid);
79655a0cc43e prepare for release
cdf
parents:
diff changeset
109 %! assert (char(s'), testfile);
79655a0cc43e prepare for release
cdf
parents:
diff changeset
110 %! delete __FPL3dxoutputmesh__test__.dx