From: <cu...@us...> - 2009-02-25 20:07:37
|
Revision: 5567 http://octave.svn.sourceforge.net/octave/?rev=5567&view=rev Author: culpo Date: 2009-02-25 20:07:32 +0000 (Wed, 25 Feb 2009) Log Message: ----------- Updated FPL to latest version Modified Paths: -------------- trunk/octave-forge/extra/fpl/DESCRIPTION trunk/octave-forge/extra/fpl/inst/FPL2showmesh.net Added Paths: ----------- trunk/octave-forge/extra/fpl/inst/FPL3dxoutputfield.m trunk/octave-forge/extra/fpl/inst/FPL3dxoutputmesh.m Modified: trunk/octave-forge/extra/fpl/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/fpl/DESCRIPTION 2009-02-25 20:03:38 UTC (rev 5566) +++ trunk/octave-forge/extra/fpl/DESCRIPTION 2009-02-25 20:07:32 UTC (rev 5567) @@ -1,6 +1,6 @@ Name: FPL -Version: 0.1.3 -Date: 2008-08-23 +Version: 0.1.4 +Date: 2009-02-25 Author: Carlo de Falco and Massimiliano Culpo Maintainer: Massimiliano Culpo Title: FEM Plotting Modified: trunk/octave-forge/extra/fpl/inst/FPL2showmesh.net =================================================================== --- trunk/octave-forge/extra/fpl/inst/FPL2showmesh.net 2009-02-25 20:03:38 UTC (rev 5566) +++ trunk/octave-forge/extra/fpl/inst/FPL2showmesh.net 2009-02-25 20:07:32 UTC (rev 5567) @@ -203,7 +203,7 @@ main_GetLocal_1_in_3 = NULL; main_GetLocal_1_out_1 = NULL; main_GetLocal_1_out_2 = NULL; -main_StringList_1_out_1 = { __FILE__DX__ }; +main_StringList_1_out_1 = {__FILE__DX__}; main_ForEachMember_1_out_1 = NULL; main_Import_1_in_2 = NULL; main_Import_1_in_3 = NULL; Added: trunk/octave-forge/extra/fpl/inst/FPL3dxoutputfield.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/FPL3dxoutputfield.m (rev 0) +++ trunk/octave-forge/extra/fpl/inst/FPL3dxoutputfield.m 2009-02-25 20:07:32 UTC (rev 5567) @@ -0,0 +1,79 @@ +## Copyright (C) 2004-2008 Carlo de Falco, Massimiliano Culpo +## +## This file is part of +## +## FPL - Fem PLotting package for octave +## +## FPL is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## FPL is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with FPL; If not, see <http://www.gnu.org/licenses/>. +## +## +## AUTHORS: +## Carlo de Falco +## Dublin City University +## School of Mathemetical Sciences +## Ireland +## +## Culpo Massimiliano +## Bergische Universitaet Wuppertal +## Fachbereich C - Mathematik und Naturwissenschaften +## Arbeitsgruppe fuer Angewandte MathematD-42119 Wuppertal Gaussstr. 20 +## D-42119 Wuppertal, Germany + +## -*- texinfo -*- +## @deftypefn {Function File} {} FPL3dxoutputfield( @var{filename}, @ +## @var{meshfilename}, @var{dep}, @var{u}, @var{attr_name}, @var{attr_rank}, @ +## @var{attr_shape}, @var{endfile} ) +## +## Outputs data in DX form. +## +## Variable must be a scalar, vector or tensor of doubles +## +## @itemize @minus +## @item @var{filename} = name of file to save (type string) +## @item @var{meshfilename} = name of mesh file (type string) +## @item @var{dep} = "positions" for node data, "connections" for element data +## @item @var{field} = field data to be saved +## @item @var{attr_name} = name of the variable (type string) +## @item @var{attr_rank} = rank of variable data (0 for scalar, 1 for vector, etc.) +## @item @var{attr_shape} = number of components of variable data (assumed 1 for scalar) +## @end itemize +## @end deftypefn + +function FPL3dxoutputfield(filename,meshfilename,dep,field,attr_name,attr_rank,attr_shape) + + fid = fopen (filename,"w"); + nnodes = size(field,1); + + if ((attr_rank==0) & (min(size(field))==1)) + fprintf(fid,"object ""%s.data""\nclass array type double rank 0 items %d data follows",attr_name,nnodes); + fprintf(fid,"\n %e",field); + else + fprintf(fid,"object ""%s.data""\nclass array type double rank %d shape %d items %d data follows",attr_name,attr_rank,attr_shape,nnodes); + for ii = 1:nnodes + fprintf(fid,"\n"); + fprintf(fid," %e",field(ii,:)); + endfor + endif + fprintf(fid,"\nattribute ""dep"" string ""%s""\n\n",dep); + fprintf(fid,"object ""%s"" class field\n",attr_name); + fprintf(fid,"component ""positions"" file %s ""pos""\n",meshfilename); + fprintf(fid,"component ""connections"" file %s ""con""\n",meshfilename); + fprintf(fid,"component ""data"" value ""%s.data""\n",attr_name); + + fprintf(fid,"\nend\n"); + fclose (fid); + +endfunction + + Added: trunk/octave-forge/extra/fpl/inst/FPL3dxoutputmesh.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/FPL3dxoutputmesh.m (rev 0) +++ trunk/octave-forge/extra/fpl/inst/FPL3dxoutputmesh.m 2009-02-25 20:07:32 UTC (rev 5567) @@ -0,0 +1,86 @@ +## Copyright (C) 2004-2008 Carlo de Falco, Massimiliano Culpo +## +## This file is part of +## +## FPL - Fem PLotting package for octave +## +## FPL is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## FPL is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with FPL; If not, see <http://www.gnu.org/licenses/>. +## +## +## AUTHORS: +## Carlo de Falco +## Dublin City University +## School of Mathemetical Sciences +## Ireland +## +## Culpo Massimiliano +## Bergische Universitaet Wuppertal +## Fachbereich C - Mathematik und Naturwissenschaften +## Arbeitsgruppe fuer Angewandte MathematD-42119 Wuppertal Gaussstr. 20 +## D-42119 Wuppertal, Germany + +## -*- texinfo -*- +## @deftypefn {Function File} {} FPL3dxoutputmesh ( @var{filename}, @ +## @var{mesh} ) +## +## Outputs data in DX form. +## +## Variable must be a scalar, vector or tensor of doubles +## +## @itemize @minus +## @item @var{filename} = name of file to save (type string) +## @item @var{mesh} = PDE-tool like mesh +## @end itemize +## @end deftypefn + + +function FPL3dxoutputmesh(filename,mesh) + + nodes = mesh.p'; + elem = mesh.t(1:4,:)'; + + fid = fopen (filename,"w"); + nnodes = columns(mesh.p); + nelem = columns(mesh.t); + + fprintf(fid,"object ""pos""\nclass array type float rank 1 shape 3 items %d data follows",nnodes); + for ii = 1:nnodes + fprintf(fid,"\n"); + fprintf(fid," %e",nodes(ii,:)); + endfor + + ## In DX format nodes are numbered starting from zero, + ## instead we want to number them starting from 1. + if (min(min(elem))==1) + elem = elem - 1; + elseif(min(min(elem))~=0) + error("WARNING: check tetrahedra structure"); + end + + fprintf(fid,"\n\nobject ""con""\nclass array type int rank 1 shape 4 items %d data follows",nelem); + for ii = 1:nelem + fprintf(fid,"\n"); + fprintf(fid," %d",elem(ii,:)); + endfor + + fprintf(fid,"\nattribute ""element type"" string ""tetrahedra""\nattribute ""ref"" string ""positions""\n\n"); + + fprintf(fid,"object ""themesh"" class field\n"); + fprintf(fid,"component ""positions"" value ""pos""\n"); + fprintf(fid,"component ""connections"" value ""con""\n"); + + fprintf(fid,"\nend\n"); + fclose (fid); + +endfunction \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cu...@us...> - 2010-02-01 07:51:57
|
Revision: 6820 http://octave.svn.sourceforge.net/octave/?rev=6820&view=rev Author: culpo Date: 2010-02-01 07:51:51 +0000 (Mon, 01 Feb 2010) Log Message: ----------- Added new functions. Updated INDEX, DESCRIPTION. Modified Paths: -------------- trunk/octave-forge/extra/fpl/DESCRIPTION trunk/octave-forge/extra/fpl/INDEX Added Paths: ----------- trunk/octave-forge/extra/fpl/inst/fpl_dx_write_field.m trunk/octave-forge/extra/fpl/inst/fpl_dx_write_series.m trunk/octave-forge/extra/fpl/inst/fpl_vtk_write_field.m Modified: trunk/octave-forge/extra/fpl/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/fpl/DESCRIPTION 2010-02-01 07:46:43 UTC (rev 6819) +++ trunk/octave-forge/extra/fpl/DESCRIPTION 2010-02-01 07:51:51 UTC (rev 6820) @@ -1,12 +1,11 @@ -Name: FPL -Version: 0.1.6 -Date: 2009-02-25 -Author: Carlo de Falco and Massimiliano Culpo +Name: fpl +Version: 1.0.0 +Date: 2010-02-01 +Author: Carlo de Falco, Massimiliano Culpo Maintainer: Massimiliano Culpo -Title: FEM Plotting -Description: Collection of routines to plot data on unstructured triangular and tetrahedral meshes -Categories: Graphics -Depends: Octave ( >= 3.0.0 ) -Autoload: NO +Title: Fem PLotting +Description: Collection of routines to save data in different graphical formats. +Categories: Graphics +Depends: octave ( >= 3.0.0 ) License: GNU/GPL SystemRequirements: dx ( >= 4.3.2), sed, bash Modified: trunk/octave-forge/extra/fpl/INDEX =================================================================== --- trunk/octave-forge/extra/fpl/INDEX 2010-02-01 07:46:43 UTC (rev 6819) +++ trunk/octave-forge/extra/fpl/INDEX 2010-02-01 07:51:51 UTC (rev 6820) @@ -1,5 +1,7 @@ FPL >> FEM Plotting Functions to save data in DX format + fpl_dx_write_field.m + fpl_dx_write_series.m FPL2dxappenddata FPL2dxoutputdata FPL2dxoutputtimeseries @@ -15,4 +17,5 @@ FPL2pdequiver FPL2ptcquiver Functions to save data in VTK format + fpl_vtk_write_field.m FPL2vtkoutputdata Added: trunk/octave-forge/extra/fpl/inst/fpl_dx_write_field.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/fpl_dx_write_field.m (rev 0) +++ trunk/octave-forge/extra/fpl/inst/fpl_dx_write_field.m 2010-02-01 07:51:51 UTC (rev 6820) @@ -0,0 +1,222 @@ +## Copyright (C) 2006,2007,2008,2009,2010 Carlo de Falco, Massimiliano Culpo +## +## This file is part of: +## FPL - Fem PLotting package for octave +## +## FPL is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## FPL is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with FPL; If not, see <http://www.gnu.org/licenses/>. +## +## author: Carlo de Falco <cdf _AT_ users.sourceforge.net> +## author: Massimiliano Culpo <culpo _AT_ users.sourceforge.net> + +## -*- texinfo -*- +## @deftypefn {Function File} {} fpl_dx_writefield (@var{basename}, @ +## @var{mesh}, @var{u}, @var{attr_name}, @var{attr_rank}, @ +## @var{attr_shape}, @var{endfile}) +## +## Output data field in ASCII Open-DX format. +## +## @var{basename} is a string containing the base-name of the dx file where the +## data will be saved. +## +## @var{mesh} is a PDE-tool like mesh, like the ones generated by the +## "msh" package. +## +## @var{u} is the field to be saved. It should represent scalar, vector +## or tensor of doubles. +## +## @var{attr_name} is a descriptive name for the field @var{u}, while +## @var{attr_rank} is the rank of the field (0 for scalar, 1 for vector, +## etc.) and @var{attr_shape} is the number of components of the field +## (assumed 1 for scalar). +## +## @var{endfile} should be 0 if you want to add other variables to the +## same file, 1 otherwise. +## +## Notice that when appending fields to an already existing file: +## +## @itemize +## @item @var{mesh} will not be printed to @var{filename}, but it will +## be only used to determine if the field is piece-wise constant or +## piece-wise linear +## @item @var{u} is not checked for consistency against the @var{mesh} +## already printed in @var{filename} +## @end itemize +## +## Example 1 (wrong usage): +## @example +## <generate msh1/u1 msh2/u2 in some way> +## fpl_dx_write_field("field.dx",msh1,u1,"density",1,0,0); +## fpl_dx_write_field("field.dx",msh2,u2,"temperature",1,0,1); +## @end example +## generate a file that fails at OpenDX run-time. +## +## Example 2: +## @example +## <generate msh1 and two fields u1-u2 in some way> +## fpl_dx_write_field("field",msh1,u1,"density",1,0,0); +## fpl_dx_write_field("field",msh1,u2,"temperature",1,0,1); +## @end example +## will generate a valid OpenDX ASCII data file. +## +## @seealso{fpl_dx_write_series} +## +## @end deftypefn + +function fpl_dx_write_field(basename,mesh,u,attr_name,attr_rank,attr_shape,endfile) + + ## Check input + if nargin!=7 + error("fpl_dx_write_field: wrong number of input"); + endif + + if !ischar(basename) + error("fpl_dx_write_field: basename should be a valid string"); + elseif !( isstruct(mesh) ) + error("fpl_dx_write_field: mesh should be a valid structure"); + elseif !ismatrix(u) + error("fpl_dx_write_field: u should be a valid matrix"); + elseif !ischar(attr_name) + error("fpl_dx_write_field: attr_name should be a valid string"); + elseif !isscalar(attr_rank) + error("fpl_dx_write_field: attr_rank should be a valid scalar"); + elseif !isscalar(attr_shape) + error("fpl_dx_write_field: attr_shape should be a valid scalar"); + elseif !isscalar(endfile) + error("fpl_dx_write_field: endfile should be a valid scalar"); + endif + + filename = [basename ".dx"]; + + if ! exist(filename,"file") + ## If file does not exist, create it + fid = fopen (filename,"w"); + create = 1; + else + ## FIXME: the following should be performed in a cleaner way! Does a + ## backward fgetl function exist? + + ## If file exist, check if it was already closed + fid = fopen (filename,"r"); + fseek(fid,-4,SEEK_END); + tst = fgetl(fid); + if strcmp(tst,"end") + error("fpl_dx_write_field: file %s exist and was already closed",filename); + endif + fclose(fid); + fid = fopen(filename,"a"); + create = 0; + endif + + p = mesh.p'; + dim = columns(p); # 2D or 3D + + if dim == 2 + t = mesh.t(1:3,:)'; + elseif dim == 3 + t = mesh.t(1:4,:)'; + else + error("fpl_dx_write_field: neither 2D triangle nor 3D tetrahedral mesh"); + endif + + nnodes = rows(p); + nelems = rows(t); + ndatas = rows(u); + + if ndatas == nnodes + dep = "positions"; + elseif ndatas == nelems + dep = "connections"; + else + error("fpl_dx_write_field: neither position nor connection data type") + endif + + if create + ## If the file has just been created, print mesh information + print_grid(fid,dim,p,nnodes,t,nelems); + endif + ## Otherwise assume the mesh is consistent with the one in the file + ## and print only field information + print_data(fid,u,ndatas,dep,attr_name,attr_rank,attr_shape); + + if(endfile) + fprintf(fid,"\nend\n"); + endif + fclose (fid); + +endfunction + +## fprint a 2Dtrg or 3Dtet mesh +function print_grid(fid,dim,p,nnodes,t,nelems) + + fprintf(fid,"object ""pos""\n"); + fprintf(fid,"class array type float rank 1 shape %d items %d data follows",dim,nnodes); + + for ii = 1:nnodes + fprintf(fid,"\n"); + fprintf(fid," %1.7e",p(ii,:)); + endfor + + ## In DX format nodes are + ## numbered starting from zero, + ## instead we want to number + ## them starting from 1! + ## Here we restore the DX + ## format + if (min(min(t))==1) + t -= 1; + elseif(min(min(t))~=0) + error("fpl_dx_write_field: check triangle structure") + endif + + fprintf(fid,"\n\nobject ""con""\n"); + fprintf(fid,"class array type int rank 1 shape %d items %d data follows",dim+1,nelems); + for ii = 1:nelems + fprintf(fid,"\n"); + fprintf(fid," %d",t(ii,:)); + endfor + + fprintf(fid,"\n"); + if dim == 2 + fprintf(fid,"attribute ""element type"" string ""triangles""\n"); + elseif dim == 3 + fprintf(fid,"\nattribute ""element type"" string ""tetrahedra""\n"); + endif + fprintf(fid,"attribute ""ref"" string ""positions""\n\n"); + +endfunction + +## fprint data on a trg grid +function print_data(fid,u,ndatas,dep,attr_name,attr_rank,attr_shape) + + if ((attr_rank == 0) && (min(size(u))==1)) + fprintf(fid,"object ""%s.data""\n",attr_name); + fprintf(fid,"class array type double rank 0 items %d data follows",ndatas); + fprintf(fid,"\n %1.7e",u); + else + fprintf(fid,"object ""%s.data""\n",attr_name); + fprintf(fid,"class array type double rank %d shape %d items %d data follows",attr_rank,attr_shape,ndatas); + for ii=1:ndatas + fprintf(fid,"\n"); + fprintf(fid," %1.7e",u(ii,:)); + endfor + endif + + fprintf(fid,"\n"); + fprintf(fid,"attribute ""dep"" string ""%s"" \n\n",dep); + fprintf(fid,"object ""%s"" class field\n",attr_name); + fprintf(fid,"component ""positions"" value ""pos""\n"); + fprintf(fid,"component ""connections"" value ""con""\n"); + fprintf(fid,"component ""data"" value ""%s.data""\n",attr_name); + fprintf(fid,"\n"); +endfunction Added: trunk/octave-forge/extra/fpl/inst/fpl_dx_write_series.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/fpl_dx_write_series.m (rev 0) +++ trunk/octave-forge/extra/fpl/inst/fpl_dx_write_series.m 2010-02-01 07:51:51 UTC (rev 6820) @@ -0,0 +1,119 @@ +## Copyright (C) 2006,2007,2008,2009,2010 Carlo de Falco, Massimiliano Culpo +## +## This file is part of: +## FPL - Fem PLotting package for octave +## +## FPL is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## FPL is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with FPL; If not, see <http://www.gnu.org/licenses/>. +## +## author: Carlo de Falco <cdf _AT_ users.sourceforge.net> +## author: Massimiliano Culpo <culpo _AT_ users.sourceforge.net> + +## -*- texinfo -*- +## @deftypefn {Function File} {} fpl_dx_write_series (@var{basename}, @ +## @var{mesh}, @var{u}, @var{sp}, @var{attr_name}, @var{attr_rank}, @ +## @var{attr_shape}) +## +## Output data series in ASCII Open-DX format. +## +## @var{basename} is a string containing the base-name of the dx file where the +## data will be saved. +## +## @var{mesh} is a PDE-tool like mesh, like the ones generated by the +## "msh" package. +## +## @var{u} is the series to be saved. It should represent scalar, vector +## or tensor of doubles. @var{sp} is the vector of the sampled points +## (e.g. time points in the case of a time series). +## +## @var{attr_name} is a descriptive name for the series @var{u}, while +## @var{attr_rank} is the rank of the field items (0 for scalar, 1 for +## vector, etc.) and @var{attr_shape} is the number of components of the +## field items (assumed 1 for scalar). +## +## @seealso{fpl_dx_write_field} +## +## @end deftypefn + +function fpl_dx_write_series(basename,mesh,u,tp,attr_name,attr_rank,attr_shape) + + ## FIXME: add append capabilities as in fpl_dx_write_field?? + + if nargin!=7 + error("fpl_dx_write_series: wrong number of input"); + endif + + if !ischar(basename) + error("fpl_dx_write_series: basename should be a valid string"); + elseif !( isstruct(mesh) ) + error("fpl_dx_write_series: mesh should be a valid structure"); + elseif !ismatrix(u) + error("fpl_dx_write_series: u should be a valid matrix"); + elseif !ischar(attr_name) + error("fpl_dx_write_series: attr_name should be a valid string"); + elseif !isscalar(attr_rank) + error("fpl_dx_write_series: attr_rank should be a valid scalar"); + elseif !isscalar(attr_shape) + error("fpl_dx_write_series: attr_shape should be a valid scalar"); + ##elseif !isscalar(endfile) + ##error("fpl_dx_write_series: endfile should be a valid scalar"); + endif + + filename = [basename ".dx"]; + + npoints = length(tp); + + p = mesh.p'; + dim = columns(p); # 2D or 3D + + if dim == 2 + t = mesh.t(1:3,:)'; + elseif dim == 3 + t = mesh.t(1:4,:)'; + else + error("fpl_dx_write_series: neither 2D triangle nor 3D tetrahedral mesh"); + endif + + nnodes = rows(p); + nelems = rows(t); + ndatas = rows(u); + + if ndatas == nnodes + dep = "positions"; + elseif ndatas == nelems + dep = "connections"; + else + error("fpl_dx_write_series: neither position nor connection data type") + endif + + ## Write field items to file + idx = (1:attr_shape); + for ii = 1:npoints + field = u(:,idx); + fname = sprintf("%s.%d",attr_name,ii); + fpl_dx_write_field(basename,mesh,field,fname,attr_rank,attr_shape,0); + idx += attr_shape; + endfor + + ##if endfile + fid = fopen(filename,"a"); + fprintf (fid, "object \"%s_series\" class series\n",attr_name); + for ii = 1:npoints + fname = sprintf("%s.%d",attr_name,ii); + fprintf (fid,"member %d position %g value \"%s\"\n",ii-1,tp(ii),fname); + endfor + fprintf (fid, "\nend\n"); + fclose(fid); + ##endif + +endfunction \ No newline at end of file Added: trunk/octave-forge/extra/fpl/inst/fpl_vtk_write_field.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/fpl_vtk_write_field.m (rev 0) +++ trunk/octave-forge/extra/fpl/inst/fpl_vtk_write_field.m 2010-02-01 07:51:51 UTC (rev 6820) @@ -0,0 +1,227 @@ +## Copyright (C) 2006,2007,2008,2009,2010 Carlo de Falco, Massimiliano Culpo +## +## This file is part of: +## FPL - Fem PLotting package for octave +## +## FPL is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## FPL is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with FPL; If not, see <http://www.gnu.org/licenses/>. +## +## author: Carlo de Falco <cdf _AT_ users.sourceforge.net> +## author: Massimiliano Culpo <culpo _AT_ users.sourceforge.net> + +## -*- texinfo -*- +## @deftypefn {Function File} {} fpl_vtk_write_field (@var{basename}, @ +## @var{mesh}, @var{nodedata}, @var{celldata}, @var{endfile}) +## +## Output data field in serial XML-VTK UnstructuredGrid format. +## +## @var{basename} is a string containing the base-name of the (vtu) file +## where the data will be saved. +## +## @var{mesh} is a PDE-tool like mesh, like the ones generated by the +## "msh" package. +## +## @var{nodedata} and @var{celldata} are (Ndata x 2) cell arrays containing +## respectively <PointData> and <CellData> representing scalars or +## vectors: +## @itemize @minus +## @item @var{*data}@{:,1@} = variable data; +## @item @var{*data}@{:,2@} = variable names; +## @end itemize +## +## @var{endfile} should be 0 if you want to add other variables to the +## same file, 1 otherwise. +## +## Example: +## @example +## <generate msh1, node centered field nc1, cell centered field cc1> +## fpl_vtk_write_field("example",msh1,@{nc1, "temperature"@},@ +## @{cc1, "density"@},0); +## <generate msh2, node centered field nc2> +## fpl_vtk_write_field("example",msh2,@{nc2, "temperature"@},@ +## @{@},1); +## @end example +## will generate a valid XML-VTK UnstructuredGrid file. +## +## @seealso{fpl_dx_write_field, fpl_dx_write_series} +## +## @end deftypefn + +function fpl_vtk_write_field(basename,mesh,nodedata,celldata,endfile) + + ## Check input + if nargin!=5 + error("fpl_vtk_write_field: wrong number of input"); + endif + + if !ischar(basename) + error("fpl_vtk_write_field: basename should be a valid string"); + elseif !( isstruct(mesh) ) + error("fpl_vtk_write_field: mesh should be a valid structure"); + elseif !(iscell(nodedata) && iscell(celldata)) + error("fpl_vtk_write_field: nodedata and celldata should be a valid cells"); + endif + + filename = [basename ".vtu"]; + + if ! exist(filename,"file") + fid = fopen (filename,"w"); + ## Header + fprintf (fid,"<?xml version=""1.0""?>\n"); + fprintf (fid,"<VTKFile type=""UnstructuredGrid"" version=""0.1"" byte_order=""LittleEndian"">\n"); + fprintf (fid,"<UnstructuredGrid>\n"); + else + ## FIXME: the following should be performed in a cleaner way! Does a + ## backward fgetl function exist? + + ## If file exist, check if it was already closed + fid = fopen (filename,"r"); + fseek(fid,-10,SEEK_END); + tst = fgetl(fid); + if strcmp(tst,"</VTKFile>") + error("fpl_vtk_write_field: file %s exist and was already closed",filename); + endif + fclose(fid); + fid = fopen (filename,"a"); + endif + + p = mesh.p; + dim = rows(p); # 2D or 3D + + if dim == 2 + t = mesh.t(1:3,:); + elseif dim == 3 + t = mesh.t(1:4,:); + else + error("fpl_vtk_write_field: neither 2D triangle nor 3D tetrahedral mesh"); + endif + + t -= 1; + + nnodes = columns(p); + nelems = columns(t); + + ## Header for <Piece> + fprintf (fid,"<Piece NumberOfPoints=""%d"" NumberOfCells=""%d"">\n",nnodes,nelems); + ## Print grid + print_grid(fid,dim,p,nnodes,t,nelems); + ## Print PointData + print_data_points(fid,nodedata,nnodes) + print_cell_data (fid,celldata,nelems) + ## Footer for <Piece> + fprintf (fid, "</Piece>\n"); + + if (endfile) + ## Footer + fprintf (fid, "</UnstructuredGrid>\n"); + fprintf (fid, "</VTKFile>"); + endif + + fclose (fid); + +endfunction + +## Print Points and Cells Data +function print_grid(fid,dim,p,nnodes,t,nelems) + + if dim == 2 + p = [p; zeros(1,nnodes)]; + eltype = 5; + else + eltype = 10; + endif + + ## VTK-Points (mesh nodes) + fprintf (fid,"<Points>\n"); + fprintf (fid,"<DataArray type=""Float64"" Name=""Array"" NumberOfComponents=""3"" format=""ascii"">\n"); + fprintf (fid,"%g %g %g\n", p); + fprintf (fid,"</DataArray>\n"); + fprintf (fid,"</Points>\n"); + + ## VTK-Cells (mesh elements) + fprintf (fid, "<Cells>\n"); + fprintf (fid, "<DataArray type=""Int32"" Name=""connectivity"" format=""ascii"">\n"); + if dim == 2 + fprintf (fid, "%d %d %d \n", t); + else + fprintf (fid, "%d %d %d %d \n", t); + endif + fprintf (fid, "</DataArray>\n"); + fprintf (fid, "<DataArray type=""Int32"" Name=""offsets"" format=""ascii"">\n"); + fprintf (fid, "%d %d %d %d %d %d\n", (dim+1):(dim+1):((dim+1)*nelems)); + fprintf (fid, "</DataArray>\n"); + fprintf (fid, "<DataArray type=""Int32"" Name=""types"" format=""ascii"">\n"); + fprintf (fid, "%d %d %d %d %d %d\n", eltype*ones(nelems,1)); + fprintf (fid, "</DataArray>\n"); + fprintf (fid, "</Cells>\n"); + +endfunction + +## Print DataPoints +function print_data_points(fid,nodedata,nnodes) + + ## # of data to print in + ## <PointData> field + nvdata = size(nodedata,1); + + if (nvdata) + fprintf (fid, "<PointData>\n"); + for ii = 1:nvdata + data = nodedata{ii,1}; + dataname = nodedata{ii,2}; + nsamples = rows(data); + ncomp = columns(data); + if nsamples != nnodes + error("fpl_vtk_write_field: wrong number of samples in <PointData> ""%s""",dataname); + endif + fprintf (fid,"<DataArray type=""Float32"" Name=""%s"" ",dataname); + fprintf (fid,"NumberOfComponents=""%d"" format=""ascii"">\n",ncomp); + for jj = 1:nsamples + fprintf (fid,"%g ",data(jj,:)); + fprintf (fid,"\n"); + endfor + fprintf (fid,"</DataArray>\n"); + endfor + fprintf (fid, "</PointData>\n"); + endif + +endfunction + +function print_cell_data(fid,celldata,nelems) + + ## # of data to print in + ## <CellData> field + nvdata = size(celldata,1); + + if (nvdata) + fprintf (fid, "<CellData>\n"); + for ii = 1:nvdata + data = celldata{ii,1}; + dataname = celldata{ii,2}; + nsamples = rows(data); + ncomp = columns(data); + if nsamples != nelems + error("fpl_vtk_write_field: wrong number of samples in <CellData> ""%s""",dataname); + endif + fprintf (fid,"<DataArray type=""Float32"" Name=""%s"" ",dataname); + fprintf (fid,"NumberOfComponents=""%d"" format=""ascii"">\n",ncomp); + for jj = 1:nsamples + fprintf (fid,"%g ",data(jj,:)); + fprintf (fid,"\n"); + endfor + fprintf (fid,"</DataArray>\n"); + endfor + fprintf (fid, "</CellData>\n"); + endif + +endfunction \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cd...@us...> - 2012-08-04 13:50:57
|
Revision: 10817 http://octave.svn.sourceforge.net/octave/?rev=10817&view=rev Author: cdf Date: 2012-08-04 13:50:51 +0000 (Sat, 04 Aug 2012) Log Message: ----------- binary data output Modified Paths: -------------- trunk/octave-forge/extra/fpl/inst/FPL2dxappenddata.m Added Paths: ----------- trunk/octave-forge/extra/fpl/src/ trunk/octave-forge/extra/fpl/src/array_to_uint8.cc Modified: trunk/octave-forge/extra/fpl/inst/FPL2dxappenddata.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/FPL2dxappenddata.m 2012-08-04 13:16:23 UTC (rev 10816) +++ trunk/octave-forge/extra/fpl/inst/FPL2dxappenddata.m 2012-08-04 13:50:51 UTC (rev 10817) @@ -63,7 +63,7 @@ fprintf(fid,'\nattribute "element type" string "triangles"\nattribute "ref" string "positions"\n\n'); - if ((attr_rank==0) && (min(size(u))==1)) + if ((attr_rank==0) & (min(size(u))==1)) fprintf(fid,'object "%s.data"\nclass array type double rank 0 items %d data follows',attr_name,Nnodi); fprintf(fid,'\n %1.7e',u); else Added: trunk/octave-forge/extra/fpl/src/array_to_uint8.cc =================================================================== --- trunk/octave-forge/extra/fpl/src/array_to_uint8.cc (rev 0) +++ trunk/octave-forge/extra/fpl/src/array_to_uint8.cc 2012-08-04 13:50:51 UTC (rev 10817) @@ -0,0 +1,110 @@ +/* +Copyright (C) 2012 Carlo de Falco + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Octave; see the file COPYING. If not, see +<http://www.gnu.org/licenses/>. + +Author: Carlo de Falco <carlo@guglielmo.local> +Created: 2012-08-04 + +*/ + +#include <octave/oct.h> + +DEFUN_DLD(array_to_uint8,args,nargout,"\ +undocumented internal function\n\ +") +{ + octave_value_list retval; + int nargin = args.length (); + + if (nargin != 1) + print_usage (); + else + { + uint8NDArray out; + + if (! args(0).is_numeric_type ()) + error ("array_to_uint8: encoding is supported only for numeric arrays"); + else if (args(0).is_complex_type () + || args(0).is_sparse_type ()) + error ("array_to_uint8: encoding complex or sparse data is not supported"); + else if (args(0).is_integer_type ()) + { + +#define MAKE_INT_BRANCH(X) \ + if (args(0).is_ ## X ## _type ()) \ + { \ + const X##NDArray in = \ + args(0). X## _array_value (); \ + octave_idx_type len = \ + in.numel () * sizeof (X## _t) / sizeof (uint8_t); \ + if (! error_state) \ + { \ + out.resize1 (len); \ + std::copy ((uint8_t*) in.data(), \ + ((uint8_t*) in.data()) + len, \ + out.fortran_vec ()); \ + retval(0) = octave_value (out); \ + } \ + } + + MAKE_INT_BRANCH(int8) + else MAKE_INT_BRANCH(int16) + else MAKE_INT_BRANCH(int32) + else MAKE_INT_BRANCH(int64) + else MAKE_INT_BRANCH(uint8) + else MAKE_INT_BRANCH(uint16) + else MAKE_INT_BRANCH(uint32) + else MAKE_INT_BRANCH(uint64) + +#undef MAKE_INT_BRANCH + + else + panic_impossible (); + } + else if (args(0).is_single_type ()) + { + const FloatNDArray in = + args(0).float_array_value (); + octave_idx_type len = + in.numel () * sizeof (float) / sizeof (uint8_t); + if (! error_state) + { + out.resize1 (len); + std::copy ((uint8_t*) in.data(), + ((uint8_t*) in.data()) + len, + out.fortran_vec ()); + retval(0) = octave_value (out); + } + } + else + { + const Array<double> in = args(0).array_value (); + + octave_idx_type len = + in.numel () * sizeof (double) / sizeof (uint8_t); + + if (! error_state) + { + out.resize1 (len); + std::copy ((uint8_t*) in.data(), + ((uint8_t*) in.data()) + len, + out.fortran_vec ()); + retval(0) = octave_value (out); + } + } + } + return retval; +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cd...@us...> - 2012-08-04 21:03:45
|
Revision: 10822 http://octave.svn.sourceforge.net/octave/?rev=10822&view=rev Author: cdf Date: 2012-08-04 21:03:39 +0000 (Sat, 04 Aug 2012) Log Message: ----------- prepare for release Modified Paths: -------------- trunk/octave-forge/extra/fpl/DESCRIPTION trunk/octave-forge/extra/fpl/INDEX Modified: trunk/octave-forge/extra/fpl/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/fpl/DESCRIPTION 2012-08-04 20:59:31 UTC (rev 10821) +++ trunk/octave-forge/extra/fpl/DESCRIPTION 2012-08-04 21:03:39 UTC (rev 10822) @@ -9,4 +9,4 @@ Depends: octave ( >= 3.0.0 ) License: GNU/GPL SystemRequirements: -SVNRelease: 10821 +SVNRelease: 10822 Modified: trunk/octave-forge/extra/fpl/INDEX =================================================================== --- trunk/octave-forge/extra/fpl/INDEX 2012-08-04 20:59:31 UTC (rev 10821) +++ trunk/octave-forge/extra/fpl/INDEX 2012-08-04 21:03:39 UTC (rev 10822) @@ -1,10 +1,13 @@ FPL >> FEM Plotting -Functions to save data in VTK format +functions to save data in VTK format fpl_vtk_write_field.m fpl_vtk_b64_write_field.m fpl_vtk_assemble_series.m savevtk savevtkvector -Pdetool compatible plotting functions +functions to save data in OpenDX format + fpl_dx_write_field + fpl_dx_write_series +pdetool compatible plotting functions pdesurf pdemesh This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cd...@us...> - 2012-08-08 12:20:29
|
Revision: 10841 http://octave.svn.sourceforge.net/octave/?rev=10841&view=rev Author: cdf Date: 2012-08-08 12:20:17 +0000 (Wed, 08 Aug 2012) Log Message: ----------- prepare for release (again) Modified Paths: -------------- trunk/octave-forge/extra/fpl/DESCRIPTION trunk/octave-forge/extra/fpl/INDEX trunk/octave-forge/extra/fpl/NEWS trunk/octave-forge/extra/fpl/inst/deprecated/FPL2dxappenddata.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL2dxoutputdata.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL2dxoutputtimeseries.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL2pdequiver.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL2pdeshowmesh.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL2pdesurf.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL2ptcquiver.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL2ptcshowmesh.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL2ptcsurf.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL2trspdesurf.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL2trsptcsurf.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL2vtkoutputdata.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL3dxoutputfield.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL3dxoutputmesh.m trunk/octave-forge/extra/fpl/inst/fpl_dx_write_field.m trunk/octave-forge/extra/fpl/inst/fpl_dx_write_series.m trunk/octave-forge/extra/fpl/inst/fpl_vtk_assemble_series.m trunk/octave-forge/extra/fpl/inst/fpl_vtk_b64_write_field.m trunk/octave-forge/extra/fpl/inst/fpl_vtk_write_field.m trunk/octave-forge/extra/fpl/inst/pdemesh.m trunk/octave-forge/extra/fpl/inst/pdesurf.m trunk/octave-forge/extra/fpl/inst/savevtk.m trunk/octave-forge/extra/fpl/inst/savevtkvector.m Added Paths: ----------- trunk/octave-forge/extra/fpl/inst/fpl_vtk_raw_write_field.m Modified: trunk/octave-forge/extra/fpl/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/fpl/DESCRIPTION 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/DESCRIPTION 2012-08-08 12:20:17 UTC (rev 10841) @@ -1,11 +1,11 @@ Name: fpl Version: 1.3.0 -Date: 2012-08-04 +Date: 2012-08-08 Author: Carlo de Falco, Massimiliano Culpo and others Maintainer: Carlo de Falco, Massimiliano Culpo Title: Fem PLotting -Description: Collection of routines to save data in different graphical formats. +Description: Collection of routines to export data produced by Finite Elements or Finite Volume Simulations in formats used by some visualization programs. Categories: Graphics Depends: octave ( >= 3.0.0 ) -License: GNU/GPL -SVNRelease: 10827 +License: GPLv3+ + Modified: trunk/octave-forge/extra/fpl/INDEX =================================================================== --- trunk/octave-forge/extra/fpl/INDEX 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/INDEX 2012-08-08 12:20:17 UTC (rev 10841) @@ -2,6 +2,7 @@ functions to save data in VTK format fpl_vtk_write_field.m fpl_vtk_b64_write_field.m + fpl_vtk_raw_write_field.m fpl_vtk_assemble_series.m savevtk savevtkvector Modified: trunk/octave-forge/extra/fpl/NEWS =================================================================== --- trunk/octave-forge/extra/fpl/NEWS 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/NEWS 2012-08-08 12:20:17 UTC (rev 10841) @@ -6,8 +6,10 @@ * ASCII VTK Unstructured Grid (VTU) exporter has been speeded up via code vectorization +* A new function to write raw binary VTU files has been added + * A new function to write base64-encoded binary VTU files has been added - (requires Octave >= 3.7) + (requires Octave >= 3.7, will fall back to ASCII mode otherwise) * New functions to write ASCII structured grid VTK files have been added Modified: trunk/octave-forge/extra/fpl/inst/deprecated/FPL2dxappenddata.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/deprecated/FPL2dxappenddata.m 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/inst/deprecated/FPL2dxappenddata.m 2012-08-08 12:20:17 UTC (rev 10841) @@ -6,7 +6,7 @@ ## ## FPL is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## FPL is distributed in the hope that it will be useful, Modified: trunk/octave-forge/extra/fpl/inst/deprecated/FPL2dxoutputdata.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/deprecated/FPL2dxoutputdata.m 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/inst/deprecated/FPL2dxoutputdata.m 2012-08-08 12:20:17 UTC (rev 10841) @@ -6,7 +6,7 @@ ## ## FPL is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## FPL is distributed in the hope that it will be useful, Modified: trunk/octave-forge/extra/fpl/inst/deprecated/FPL2dxoutputtimeseries.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/deprecated/FPL2dxoutputtimeseries.m 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/inst/deprecated/FPL2dxoutputtimeseries.m 2012-08-08 12:20:17 UTC (rev 10841) @@ -6,7 +6,7 @@ ## ## FPL is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## FPL is distributed in the hope that it will be useful, Modified: trunk/octave-forge/extra/fpl/inst/deprecated/FPL2pdequiver.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/deprecated/FPL2pdequiver.m 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/inst/deprecated/FPL2pdequiver.m 2012-08-08 12:20:17 UTC (rev 10841) @@ -6,7 +6,7 @@ ## ## FPL is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## FPL is distributed in the hope that it will be useful, Modified: trunk/octave-forge/extra/fpl/inst/deprecated/FPL2pdeshowmesh.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/deprecated/FPL2pdeshowmesh.m 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/inst/deprecated/FPL2pdeshowmesh.m 2012-08-08 12:20:17 UTC (rev 10841) @@ -6,7 +6,7 @@ ## ## FPL is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## FPL is distributed in the hope that it will be useful, Modified: trunk/octave-forge/extra/fpl/inst/deprecated/FPL2pdesurf.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/deprecated/FPL2pdesurf.m 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/inst/deprecated/FPL2pdesurf.m 2012-08-08 12:20:17 UTC (rev 10841) @@ -6,7 +6,7 @@ ## ## FPL is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## FPL is distributed in the hope that it will be useful, Modified: trunk/octave-forge/extra/fpl/inst/deprecated/FPL2ptcquiver.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/deprecated/FPL2ptcquiver.m 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/inst/deprecated/FPL2ptcquiver.m 2012-08-08 12:20:17 UTC (rev 10841) @@ -6,7 +6,7 @@ ## ## FPL is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## FPL is distributed in the hope that it will be useful, Modified: trunk/octave-forge/extra/fpl/inst/deprecated/FPL2ptcshowmesh.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/deprecated/FPL2ptcshowmesh.m 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/inst/deprecated/FPL2ptcshowmesh.m 2012-08-08 12:20:17 UTC (rev 10841) @@ -6,7 +6,7 @@ ## ## FPL is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## FPL is distributed in the hope that it will be useful, Modified: trunk/octave-forge/extra/fpl/inst/deprecated/FPL2ptcsurf.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/deprecated/FPL2ptcsurf.m 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/inst/deprecated/FPL2ptcsurf.m 2012-08-08 12:20:17 UTC (rev 10841) @@ -6,7 +6,7 @@ ## ## FPL is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## FPL is distributed in the hope that it will be useful, Modified: trunk/octave-forge/extra/fpl/inst/deprecated/FPL2trspdesurf.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/deprecated/FPL2trspdesurf.m 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/inst/deprecated/FPL2trspdesurf.m 2012-08-08 12:20:17 UTC (rev 10841) @@ -6,7 +6,7 @@ ## ## FPL is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## FPL is distributed in the hope that it will be useful, Modified: trunk/octave-forge/extra/fpl/inst/deprecated/FPL2trsptcsurf.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/deprecated/FPL2trsptcsurf.m 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/inst/deprecated/FPL2trsptcsurf.m 2012-08-08 12:20:17 UTC (rev 10841) @@ -6,7 +6,7 @@ ## ## FPL is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## FPL is distributed in the hope that it will be useful, Modified: trunk/octave-forge/extra/fpl/inst/deprecated/FPL2vtkoutputdata.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/deprecated/FPL2vtkoutputdata.m 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/inst/deprecated/FPL2vtkoutputdata.m 2012-08-08 12:20:17 UTC (rev 10841) @@ -2,7 +2,7 @@ ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, Modified: trunk/octave-forge/extra/fpl/inst/deprecated/FPL3dxoutputfield.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/deprecated/FPL3dxoutputfield.m 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/inst/deprecated/FPL3dxoutputfield.m 2012-08-08 12:20:17 UTC (rev 10841) @@ -6,7 +6,7 @@ ## ## FPL is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## FPL is distributed in the hope that it will be useful, Modified: trunk/octave-forge/extra/fpl/inst/deprecated/FPL3dxoutputmesh.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/deprecated/FPL3dxoutputmesh.m 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/inst/deprecated/FPL3dxoutputmesh.m 2012-08-08 12:20:17 UTC (rev 10841) @@ -6,7 +6,7 @@ ## ## FPL is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## FPL is distributed in the hope that it will be useful, Modified: trunk/octave-forge/extra/fpl/inst/fpl_dx_write_field.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/fpl_dx_write_field.m 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/inst/fpl_dx_write_field.m 2012-08-08 12:20:17 UTC (rev 10841) @@ -5,7 +5,7 @@ ## ## FPL is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## FPL is distributed in the hope that it will be useful, Modified: trunk/octave-forge/extra/fpl/inst/fpl_dx_write_series.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/fpl_dx_write_series.m 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/inst/fpl_dx_write_series.m 2012-08-08 12:20:17 UTC (rev 10841) @@ -5,7 +5,7 @@ ## ## FPL is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## FPL is distributed in the hope that it will be useful, Modified: trunk/octave-forge/extra/fpl/inst/fpl_vtk_assemble_series.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/fpl_vtk_assemble_series.m 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/inst/fpl_vtk_assemble_series.m 2012-08-08 12:20:17 UTC (rev 10841) @@ -5,7 +5,7 @@ ## ## FPL is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## FPL is distributed in the hope that it will be useful, Modified: trunk/octave-forge/extra/fpl/inst/fpl_vtk_b64_write_field.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/fpl_vtk_b64_write_field.m 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/inst/fpl_vtk_b64_write_field.m 2012-08-08 12:20:17 UTC (rev 10841) @@ -6,7 +6,7 @@ ## ## FPL is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## FPL is distributed in the hope that it will be useful, @@ -50,11 +50,12 @@ ## @end example ## ## The difference between @code{fpl_vtk_write_field} and @code{fpl_vtk_b64_write_field} -## is that the former saves data in ASCII format while the former uses base64-encoded -## binary format. +## is that the former saves data in ASCII format while the latter uses base64-encoded +## binary format. To save data in un-encoded binary format use @code{fpl_vtk_raw_write_field}. ## ## @seealso{fpl_dx_write_field, fpl_dx_write_series, @ -## fpl_vtk_assemble_series, fpl_vtk_write_field} +## fpl_vtk_assemble_series, fpl_vtk_write_field, @ +## fpl_vtk_raw_write_field} ## ## @end deftypefn Added: trunk/octave-forge/extra/fpl/inst/fpl_vtk_raw_write_field.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/fpl_vtk_raw_write_field.m (rev 0) +++ trunk/octave-forge/extra/fpl/inst/fpl_vtk_raw_write_field.m 2012-08-08 12:20:17 UTC (rev 10841) @@ -0,0 +1,236 @@ +## Copyright (C) 2012 Carlo de Falco +## Copyright (C) 2008,2009,2010 Massimiliano Culpo +## +## This file is part of: +## FPL - Fem PLotting package for octave +## +## FPL is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 3 of the License, or +## (at your option) any later version. +## +## FPL is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with FPL; If not, see <http://www.gnu.org/licenses/>. +## +## author: Carlo de Falco <cdf _AT_ users.sourceforge.net> +## author: Massimiliano Culpo <culpo _AT_ users.sourceforge.net> + +## -*- texinfo -*- +## @deftypefn {Function File} {} fpl_vtk_raw_write_field (@var{basename}, @ +## @var{mesh}, @var{nodedata}, @var{celldata}) +## +## Output data field in binary serial XML-VTK UnstructuredGrid format. +## +## @var{basename} is a string containing the base-name of the (vtu) file +## where the data will be saved. +## +## @var{mesh} is a PDE-tool like mesh, like the ones generated by the +## "msh" package. +## +## @var{nodedata} and @var{celldata} are (Ndata x 2) cell arrays containing +## respectively <PointData> and <CellData> representing scalars or +## vectors: +## @itemize @minus +## @item @var{*data}@{:,1@} = variable data; +## @item @var{*data}@{:,2@} = variable names; +## @end itemize +## +## +## Example: +## @example +## %% generate msh1, node centered field nc1, cell centered field cc1 +## fpl_vtk_raw_write_field ("example", msh1, @{nc1, "temperature"@}, @{cc1, "density"@}); +## %% generate msh2, node centered field nc2 +## fpl_vtk_raw_write_field ("example", msh2, @{nc2, "temperature"@}, @{@}); +## @end example +## +## The difference between @code{fpl_vtk_write_field} and @code{fpl_vtk_raw_write_field} +## is that the former saves data in ASCII format while the latter uses raw +## binary format. To save data in b64-encoded binary format use @code{fpl_vtk_b64_write_field}. +## +## @seealso{fpl_dx_write_field, fpl_dx_write_series, @ +## fpl_vtk_assemble_series, fpl_vtk_write_field, @ +## fpl_vtk_b64_write_field} +## +## @end deftypefn + +function fpl_vtk_raw_write_field (basename, mesh, nodedata, celldata, endfile) + + ## Check input + if (nargin != 4) + print_usage (); + endif + + if (! ischar (basename)) + error ("fpl_vtk_b64_write_field: basename should be a string"); + elseif (! isstruct (mesh)) + error ("fpl_vtk_b64_write_field: mesh should be a struct"); + elseif (! (iscell (nodedata) && iscell (celldata))) + error ("fpl_vtk_b64_write_field: nodedata and celldata should be cell arrays"); + endif + + filename = [basename ".vtu"]; + + if (! exist (filename, "file")) + fid = fopen (filename, "w"); + + ## Format + fprintf (fid, "<?xml version=""1.0""?>\n"); + + ## Start file + fprintf (fid, "<VTKFile type=""UnstructuredGrid"" version=""0.1"" byte_order=""LittleEndian"">\n"); + + ## Start Header + fprintf (fid, " <UnstructuredGrid>\n"); + else + error ("fpl_vtk_b64_write_field: file %s exists", filename); + endif + + offset = 0; + data = uint8([]); + + p = mesh.p; + dim = rows (p); # 2D or 3D + + if dim == 2 + t = mesh.t (1:3,:); + elseif dim == 3 + t = mesh.t (1:4,:); + else + error ("fpl_vtk_b64_write_field: neither 2D triangle nor 3D tetrahedral mesh"); + endif + + t -= 1; + + nnodes = columns (p); + nelems = columns (t); + + ## Piece + fprintf (fid, " <Piece NumberOfPoints=""%d"" NumberOfCells=""%d"">\n", nnodes, nelems); + + ## assemble data-sets + [data, offset] = print_data_points (fid, nodedata, nnodes, data, offset); + [data, offset] = print_cell_data (fid, celldata, nelems, data, offset); + + ## assemble mesh data + [data, offset] = print_grid (fid, dim, p, nnodes, t, nelems, data, offset); + + ## End Piece + fprintf (fid, " </Piece>\n"); + + ## End Header + fprintf (fid, " </UnstructuredGrid>\n"); + + ## Write data + fprintf (fid, " <AppendedData encoding=""raw"">\n"); + fwrite (fid, "_"); + fwrite (fid, data, "uint8"); + fprintf (fid, " </AppendedData>>\n"); + + ## End file + fprintf (fid, "</VTKFile>"); + fclose (fid); + +endfunction + +## Print Points and Cells Data +function [data, offset] = print_grid (fid, dim, p, nnodes, t, nelems, data, offset) + + if dim == 2 + p = [p; zeros(1,nnodes)]; + eltype = 5; + else + eltype = 10; + endif + + ## VTK-Points (mesh nodes) + fprintf (fid, " <Points>\n"); + fprintf (fid, " <DataArray type=""Float64"" Name=""Array"" NumberOfComponents=""3"" format=""appended"" offset=""%d"" />\n", offset); + newdata = array_to_uint8 (p); + data = [data, array_to_uint8(int32 (numel (newdata))), newdata]; + offset = numel (data); + + fprintf (fid, " </Points>\n"); + + ## VTK-Cells (mesh elements) + fprintf (fid, " <Cells>\n"); + fprintf (fid, " <DataArray type=""Int32"" Name=""connectivity"" format=""appended"" offset=""%d"" />\n", offset); + newdata = array_to_uint8 (int32 (t)); + data = [data, array_to_uint8(int32 (numel (newdata))), newdata]; + offset = numel (data); + + fprintf (fid, " <DataArray type=""Int32"" Name=""offsets"" format=""appended"" offset=""%d"" />\n", offset); + tmp = (dim+1):(dim+1):((dim+1)*nelems); + newdata = array_to_uint8 (int32 (tmp)); + data = [data, array_to_uint8(int32 (numel (newdata))), newdata]; + offset = numel (data); + + fprintf (fid, " <DataArray type=""UInt8"" Name=""types"" format=""appended"" offset=""%d"" />\n", offset); + tmp = eltype*ones(nelems,1); + newdata = array_to_uint8 (uint8 (tmp)); + data = [data, array_to_uint8(int32 (numel (newdata))), newdata]; + offset = numel (data); + + fprintf (fid, " </Cells>\n"); + +endfunction + +## Print DataPoints +function [data, offset] = print_data_points (fid, nodedata, nnodes, data, offset) + + ## # of data to print in + ## <PointData> field + nvdata = size (nodedata, 1); + + if (nvdata) + fprintf (fid, " <PointData>\n"); + for ii = 1:nvdata + ndata = nodedata{ii,1}; + ndataname = nodedata{ii,2}; + nsamples = rows (ndata); + ncomp = columns (ndata); + if (nsamples != nnodes) + error ("fpl_vtk_b64_write_field: wrong number of samples in <PointData> ""%s""", ndataname); + endif + fprintf (fid, " <DataArray type=""Float64"" Name=""%s"" ", ndataname); + fprintf (fid, "NumberOfComponents=""%d"" format=""appended"" offset=""%d"" />\n", ncomp, offset); + newdata = array_to_uint8 (ndata.'); + data = [data, array_to_uint8(int32 (numel (newdata))), newdata]; + offset = numel (data); + endfor + fprintf (fid, " </PointData>\n"); + endif + +endfunction + +function [data, offset] = print_cell_data (fid, celldata, nelems, data, offset) + + ## # of data to print in + ## <CellData> field + nvdata = size (celldata, 1); + + if (nvdata) + fprintf (fid, "<CellData>\n"); + for ii = 1:nvdata + cdata = celldata{ii,1}; + cdataname = celldata{ii,2}; + nsamples = rows (cdata); + ncomp = columns (cdata); + if nsamples != nelems + error ("fpl_vtk_b64_write_field: wrong number of samples in <CellData> ""%s""", cdataname); + endif + fprintf (fid, " <DataArray type=""Float64"" Name=""%s"" ", cdataname); + fprintf (fid, "NumberOfComponents=""%d"" format=""appended"" offset=""%d"" />\n", ncomp, offset); + newdata = array_to_uint8 (cdata.'); + data = [data, array_to_uint8(int32 (numel (newdata))), newdata]; + offset = numel (data); + endfor + fprintf (fid, " </CellData>\n"); + endif + +endfunction Modified: trunk/octave-forge/extra/fpl/inst/fpl_vtk_write_field.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/fpl_vtk_write_field.m 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/inst/fpl_vtk_write_field.m 2012-08-08 12:20:17 UTC (rev 10841) @@ -5,7 +5,7 @@ ## ## FPL is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## FPL is distributed in the hope that it will be useful, @@ -147,7 +147,7 @@ ## VTK-Points (mesh nodes) fprintf (fid, "<Points>\n"); fprintf (fid, "<DataArray type=""Float64"" Name=""Array"" NumberOfComponents=""3"" format=""ascii"">\n"); - fprintf (fid, "%g %g %g\n", p); + fprintf (fid, "%.17g %.17g %.17g\n", p); fprintf (fid, "</DataArray>\n"); fprintf (fid, "</Points>\n"); @@ -189,10 +189,8 @@ endif fprintf (fid, "<DataArray type=""Float64"" Name=""%s"" ", dataname); fprintf (fid, "NumberOfComponents=""%d"" format=""ascii"">\n", ncomp); -% for jj = 1:nsamples - fprintf (fid, "%g ", data); + fprintf (fid, "%.17g ", data); fprintf (fid, "\n"); -% endfor fprintf (fid, "</DataArray>\n"); endfor fprintf (fid, "</PointData>\n"); @@ -218,10 +216,8 @@ endif fprintf (fid, "<DataArray type=""Float64"" Name=""%s"" ", dataname); fprintf (fid, "NumberOfComponents=""%d"" format=""ascii"">\n", ncomp); -% for jj = 1:nsamples - fprintf (fid, "%g ", data); + fprintf (fid, "%.17g ", data); fprintf (fid, "\n"); -% endfor fprintf (fid, "</DataArray>\n"); endfor fprintf (fid, "</CellData>\n"); Modified: trunk/octave-forge/extra/fpl/inst/pdemesh.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/pdemesh.m 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/inst/pdemesh.m 2012-08-08 12:20:17 UTC (rev 10841) @@ -5,7 +5,7 @@ ## ## FPL is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## FPL is distributed in the hope that it will be useful, Modified: trunk/octave-forge/extra/fpl/inst/pdesurf.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/pdesurf.m 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/inst/pdesurf.m 2012-08-08 12:20:17 UTC (rev 10841) @@ -5,7 +5,7 @@ ## ## FPL is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## FPL is distributed in the hope that it will be useful, Modified: trunk/octave-forge/extra/fpl/inst/savevtk.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/savevtk.m 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/inst/savevtk.m 2012-08-08 12:20:17 UTC (rev 10841) @@ -2,7 +2,7 @@ ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, Modified: trunk/octave-forge/extra/fpl/inst/savevtkvector.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/savevtkvector.m 2012-08-07 19:48:30 UTC (rev 10840) +++ trunk/octave-forge/extra/fpl/inst/savevtkvector.m 2012-08-08 12:20:17 UTC (rev 10841) @@ -2,7 +2,7 @@ ##. ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ##. ## This program is distributed in the hope that it will be useful, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cd...@us...> - 2012-08-10 12:42:53
|
Revision: 10853 http://octave.svn.sourceforge.net/octave/?rev=10853&view=rev Author: cdf Date: 2012-08-10 12:42:46 +0000 (Fri, 10 Aug 2012) Log Message: ----------- prepare for release 1.3.1 Modified Paths: -------------- trunk/octave-forge/extra/fpl/DESCRIPTION trunk/octave-forge/extra/fpl/NEWS trunk/octave-forge/extra/fpl/inst/fpl_vtk_b64_write_field.m trunk/octave-forge/extra/fpl/inst/fpl_vtk_raw_write_field.m trunk/octave-forge/extra/fpl/src/Makefile Added Paths: ----------- trunk/octave-forge/extra/fpl/src/__array_to_uint8__.cc Removed Paths: ------------- trunk/octave-forge/extra/fpl/src/array_to_uint8.cc Modified: trunk/octave-forge/extra/fpl/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/fpl/DESCRIPTION 2012-08-10 09:30:12 UTC (rev 10852) +++ trunk/octave-forge/extra/fpl/DESCRIPTION 2012-08-10 12:42:46 UTC (rev 10853) @@ -1,11 +1,11 @@ Name: fpl -Version: 1.3.0 -Date: 2012-08-08 +Version: 1.3.1 +Date: 2012-10-08 Author: Carlo de Falco, Massimiliano Culpo and others Maintainer: Carlo de Falco, Massimiliano Culpo Title: Fem PLotting Description: Collection of routines to export data produced by Finite Elements or Finite Volume Simulations in formats used by some visualization programs. Categories: Graphics -Depends: octave ( >= 3.0.0 ) +Depends: octave ( >= 3.4.2 ) License: GPLv3+ Modified: trunk/octave-forge/extra/fpl/NEWS =================================================================== --- trunk/octave-forge/extra/fpl/NEWS 2012-08-10 09:30:12 UTC (rev 10852) +++ trunk/octave-forge/extra/fpl/NEWS 2012-08-10 12:42:46 UTC (rev 10853) @@ -1,3 +1,8 @@ +Summary of important user-visible changes for dataframe 1.3.1: +------------------------------------------------------------------- + + * 1.3.1 is just a bugfix release to fix some issues in 1.3.0 + Summary of important user-visible changes for dataframe 1.3.0: ------------------------------------------------------------------- @@ -6,12 +11,13 @@ * ASCII VTK Unstructured Grid (VTU) exporter has been speeded up via code vectorization -* A new function to write raw binary VTU files has been added. - A new function to write base64-encoded binary VTU files has been added - (requires Octave >= 3.7, will fall back to ASCII mode otherwise). - As a rule of thumbs, ascii files are about 50% larger than base64 which - are 30% larger than raw files. base64 files are faster to write (about 30% faster - than raw on my machine for large meshes), ASCII files are more portable. + * A new function to write raw binary VTU files has been added. + A new function to write base64-encoded binary VTU files has been added + (requires Octave >= 3.7, will fall back to ASCII mode otherwise). + As a rule of thumbs, ascii files are about 50% larger than base64 which + are 30% larger than raw files. base64 files are faster to write (about 30% faster + than raw on my machine for large meshes), ASCII files are more portable. -* New functions to write ASCII structured grid VTK files have been added + * New functions to write ASCII structured grid VTK files have been added + Modified: trunk/octave-forge/extra/fpl/inst/fpl_vtk_b64_write_field.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/fpl_vtk_b64_write_field.m 2012-08-10 09:30:12 UTC (rev 10852) +++ trunk/octave-forge/extra/fpl/inst/fpl_vtk_b64_write_field.m 2012-08-10 12:42:46 UTC (rev 10853) @@ -156,8 +156,8 @@ ## VTK-Points (mesh nodes) fprintf (fid, " <Points>\n"); fprintf (fid, " <DataArray type=""Float64"" Name=""Array"" NumberOfComponents=""3"" format=""appended"" offset=""%d"" />\n", offset); - newdata = array_to_uint8(p)(:); - data = [data, base64_encode([array_to_uint8(int32 (numel (newdata)))(:); newdata])]; + newdata = __array_to_uint8__(p)(:); + data = [data, base64_encode([__array_to_uint8__(int32 (numel (newdata)))(:); newdata])]; offset = numel (data); fprintf (fid, " </Points>\n"); @@ -165,20 +165,20 @@ ## VTK-Cells (mesh elements) fprintf (fid, " <Cells>\n"); fprintf (fid, " <DataArray type=""Int32"" Name=""connectivity"" format=""appended"" offset=""%d"" />\n", offset); - newdata = array_to_uint8(int32 (t))(:); - data = [data, base64_encode([array_to_uint8(int32 (numel (newdata)))(:); newdata])]; + newdata = __array_to_uint8__(int32 (t))(:); + data = [data, base64_encode([__array_to_uint8__(int32 (numel (newdata)))(:); newdata])]; offset = numel (data); fprintf (fid, " <DataArray type=""Int32"" Name=""offsets"" format=""appended"" offset=""%d"" />\n", offset); tmp = (dim+1):(dim+1):((dim+1)*nelems); - newdata = array_to_uint8(int32 (tmp))(:); - data = [data, base64_encode([array_to_uint8(int32 (numel (newdata)))(:); newdata])]; + newdata = __array_to_uint8__(int32 (tmp))(:); + data = [data, base64_encode([__array_to_uint8__(int32 (numel (newdata)))(:); newdata])]; offset = numel (data); fprintf (fid, " <DataArray type=""UInt8"" Name=""types"" format=""appended"" offset=""%d"" />\n", offset); tmp = eltype*ones(nelems,1); - newdata = array_to_uint8(uint8 (tmp))(:); - data = [data, base64_encode([array_to_uint8(int32 (numel (newdata)))(:); newdata])]; + newdata = __array_to_uint8__(uint8 (tmp))(:); + data = [data, base64_encode([__array_to_uint8__(int32 (numel (newdata)))(:); newdata])]; offset = numel (data); fprintf (fid, " </Cells>\n"); @@ -204,8 +204,8 @@ endif fprintf (fid, " <DataArray type=""Float64"" Name=""%s"" ", ndataname); fprintf (fid, "NumberOfComponents=""%d"" format=""appended"" offset=""%d"" />\n", ncomp, offset); - newdata = array_to_uint8(ndata.')(:); - data = [data, base64_encode([array_to_uint8(int32 (numel (newdata)))(:); newdata])]; + newdata = __array_to_uint8__(ndata.')(:); + data = [data, base64_encode([__array_to_uint8__(int32 (numel (newdata)))(:); newdata])]; offset = numel (data); endfor fprintf (fid, " </PointData>\n"); @@ -231,8 +231,8 @@ endif fprintf (fid, " <DataArray type=""Float64"" Name=""%s"" ", cdataname); fprintf (fid, "NumberOfComponents=""%d"" format=""appended"" offset=""%d"" />\n", ncomp, offset); - newdata = array_to_uint8(cdata.')(:); - data = [data, base64_encode([array_to_uint8(int32 (numel (newdata)))(:); newdata])]; + newdata = __array_to_uint8__(cdata.')(:); + data = [data, base64_encode([__array_to_uint8__(int32 (numel (newdata)))(:); newdata])]; offset = numel (data); endfor fprintf (fid, " </CellData>\n"); Modified: trunk/octave-forge/extra/fpl/inst/fpl_vtk_raw_write_field.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/fpl_vtk_raw_write_field.m 2012-08-10 09:30:12 UTC (rev 10852) +++ trunk/octave-forge/extra/fpl/inst/fpl_vtk_raw_write_field.m 2012-08-10 12:42:46 UTC (rev 10853) @@ -151,8 +151,8 @@ ## VTK-Points (mesh nodes) fprintf (fid, " <Points>\n"); fprintf (fid, " <DataArray type=""Float64"" Name=""Array"" NumberOfComponents=""3"" format=""appended"" offset=""%d"" />\n", offset); - newdata = array_to_uint8 (p); - data = [data, array_to_uint8(int32 (numel (newdata))), newdata]; + newdata = __array_to_uint8__ (p); + data = [data, __array_to_uint8__(int32 (numel (newdata))), newdata]; offset = numel (data); fprintf (fid, " </Points>\n"); @@ -160,20 +160,20 @@ ## VTK-Cells (mesh elements) fprintf (fid, " <Cells>\n"); fprintf (fid, " <DataArray type=""Int32"" Name=""connectivity"" format=""appended"" offset=""%d"" />\n", offset); - newdata = array_to_uint8 (int32 (t)); - data = [data, array_to_uint8(int32 (numel (newdata))), newdata]; + newdata = __array_to_uint8__ (int32 (t)); + data = [data, __array_to_uint8__(int32 (numel (newdata))), newdata]; offset = numel (data); fprintf (fid, " <DataArray type=""Int32"" Name=""offsets"" format=""appended"" offset=""%d"" />\n", offset); tmp = (dim+1):(dim+1):((dim+1)*nelems); - newdata = array_to_uint8 (int32 (tmp)); - data = [data, array_to_uint8(int32 (numel (newdata))), newdata]; + newdata = __array_to_uint8__ (int32 (tmp)); + data = [data, __array_to_uint8__(int32 (numel (newdata))), newdata]; offset = numel (data); fprintf (fid, " <DataArray type=""UInt8"" Name=""types"" format=""appended"" offset=""%d"" />\n", offset); tmp = eltype*ones(nelems,1); - newdata = array_to_uint8 (uint8 (tmp)); - data = [data, array_to_uint8(int32 (numel (newdata))), newdata]; + newdata = __array_to_uint8__ (uint8 (tmp)); + data = [data, __array_to_uint8__(int32 (numel (newdata))), newdata]; offset = numel (data); fprintf (fid, " </Cells>\n"); @@ -199,8 +199,8 @@ endif fprintf (fid, " <DataArray type=""Float64"" Name=""%s"" ", ndataname); fprintf (fid, "NumberOfComponents=""%d"" format=""appended"" offset=""%d"" />\n", ncomp, offset); - newdata = array_to_uint8 (ndata.'); - data = [data, array_to_uint8(int32 (numel (newdata))), newdata]; + newdata = __array_to_uint8__ (ndata.'); + data = [data, __array_to_uint8__(int32 (numel (newdata))), newdata]; offset = numel (data); endfor fprintf (fid, " </PointData>\n"); @@ -226,8 +226,8 @@ endif fprintf (fid, " <DataArray type=""Float64"" Name=""%s"" ", cdataname); fprintf (fid, "NumberOfComponents=""%d"" format=""appended"" offset=""%d"" />\n", ncomp, offset); - newdata = array_to_uint8 (cdata.'); - data = [data, array_to_uint8(int32 (numel (newdata))), newdata]; + newdata = __array_to_uint8__ (cdata.'); + data = [data, __array_to_uint8__(int32 (numel (newdata))), newdata]; offset = numel (data); endfor fprintf (fid, " </CellData>\n"); Modified: trunk/octave-forge/extra/fpl/src/Makefile =================================================================== --- trunk/octave-forge/extra/fpl/src/Makefile 2012-08-10 09:30:12 UTC (rev 10852) +++ trunk/octave-forge/extra/fpl/src/Makefile 2012-08-10 12:42:46 UTC (rev 10853) @@ -1,9 +1,9 @@ -OCTFILES := array_to_uint8.oct - +OCTFILES := __array_to_uint8__.oct +MKOCTFILE ?= mkoctfile all: $(OCTFILES) %.oct: %.cc - mkoctfile $< + $(MKOCTFILE) $< clean: -rm -f *.o core octave-core *.oct *~ Copied: trunk/octave-forge/extra/fpl/src/__array_to_uint8__.cc (from rev 10831, trunk/octave-forge/extra/fpl/src/array_to_uint8.cc) =================================================================== --- trunk/octave-forge/extra/fpl/src/__array_to_uint8__.cc (rev 0) +++ trunk/octave-forge/extra/fpl/src/__array_to_uint8__.cc 2012-08-10 12:42:46 UTC (rev 10853) @@ -0,0 +1,112 @@ +/* +Copyright (C) 2012 Carlo de Falco + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Octave; see the file COPYING. If not, see +<http://www.gnu.org/licenses/>. + +Author: Carlo de Falco <carlo@guglielmo.local> +Created: 2012-08-04 + +*/ + +#include <octave/oct.h> + +DEFUN_DLD(__array_to_uint8__,args,nargout,"\ +-*- texinfo -*-\n\ +@deftypefn {Function File} [@var{out}] = __array_to_uint8__ (@var{in})\n\ +UNDOCUMENTED INTERNAL FUNCTION.\n\ +@end deftypefn") +{ + octave_value_list retval; + int nargin = args.length (); + + if (nargin != 1) + print_usage (); + else + { + uint8NDArray out; + + if (! args(0).is_numeric_type ()) + error ("array_to_uint8: encoding is supported only for numeric arrays"); + else if (args(0).is_complex_type () + || args(0).is_sparse_type ()) + error ("array_to_uint8: encoding complex or sparse data is not supported"); + else if (args(0).is_integer_type ()) + { + +#define MAKE_INT_BRANCH(X) \ + if (args(0).is_ ## X ## _type ()) \ + { \ + const X##NDArray in = \ + args(0). X## _array_value (); \ + octave_idx_type len = \ + in.numel () * sizeof (X## _t) / sizeof (uint8_t); \ + if (! error_state) \ + { \ + out.resize1 (len); \ + std::copy ((uint8_t*) in.data(), \ + ((uint8_t*) in.data()) + len, \ + out.fortran_vec ()); \ + retval(0) = octave_value (out); \ + } \ + } + + MAKE_INT_BRANCH(int8) + else MAKE_INT_BRANCH(int16) + else MAKE_INT_BRANCH(int32) + else MAKE_INT_BRANCH(int64) + else MAKE_INT_BRANCH(uint8) + else MAKE_INT_BRANCH(uint16) + else MAKE_INT_BRANCH(uint32) + else MAKE_INT_BRANCH(uint64) + +#undef MAKE_INT_BRANCH + + else + panic_impossible (); + } + else if (args(0).is_single_type ()) + { + const FloatNDArray in = + args(0).float_array_value (); + octave_idx_type len = + in.numel () * sizeof (float) / sizeof (uint8_t); + if (! error_state) + { + out.resize1 (len); + std::copy ((uint8_t*) in.data(), + ((uint8_t*) in.data()) + len, + out.fortran_vec ()); + retval(0) = octave_value (out); + } + } + else + { + const Array<double> in = args(0).array_value (); + + octave_idx_type len = + in.numel () * sizeof (double) / sizeof (uint8_t); + + if (! error_state) + { + out.resize1 (len); + std::copy ((uint8_t*) in.data(), + ((uint8_t*) in.data()) + len, + out.fortran_vec ()); + retval(0) = octave_value (out); + } + } + } + return retval; +} Deleted: trunk/octave-forge/extra/fpl/src/array_to_uint8.cc =================================================================== --- trunk/octave-forge/extra/fpl/src/array_to_uint8.cc 2012-08-10 09:30:12 UTC (rev 10852) +++ trunk/octave-forge/extra/fpl/src/array_to_uint8.cc 2012-08-10 12:42:46 UTC (rev 10853) @@ -1,112 +0,0 @@ -/* -Copyright (C) 2012 Carlo de Falco - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with Octave; see the file COPYING. If not, see -<http://www.gnu.org/licenses/>. - -Author: Carlo de Falco <carlo@guglielmo.local> -Created: 2012-08-04 - -*/ - -#include <octave/oct.h> - -DEFUN_DLD(array_to_uint8,args,nargout,"\ --*- texinfo -*-\n\ -@deftypefn {Function File} [@var{out}] = array_to_uint8 (@var{in})\n\ -UNDOCUMENTED INTERNAL FUNCTION.\n\ -@end deftypefn") -{ - octave_value_list retval; - int nargin = args.length (); - - if (nargin != 1) - print_usage (); - else - { - uint8NDArray out; - - if (! args(0).is_numeric_type ()) - error ("array_to_uint8: encoding is supported only for numeric arrays"); - else if (args(0).is_complex_type () - || args(0).is_sparse_type ()) - error ("array_to_uint8: encoding complex or sparse data is not supported"); - else if (args(0).is_integer_type ()) - { - -#define MAKE_INT_BRANCH(X) \ - if (args(0).is_ ## X ## _type ()) \ - { \ - const X##NDArray in = \ - args(0). X## _array_value (); \ - octave_idx_type len = \ - in.numel () * sizeof (X## _t) / sizeof (uint8_t); \ - if (! error_state) \ - { \ - out.resize1 (len); \ - std::copy ((uint8_t*) in.data(), \ - ((uint8_t*) in.data()) + len, \ - out.fortran_vec ()); \ - retval(0) = octave_value (out); \ - } \ - } - - MAKE_INT_BRANCH(int8) - else MAKE_INT_BRANCH(int16) - else MAKE_INT_BRANCH(int32) - else MAKE_INT_BRANCH(int64) - else MAKE_INT_BRANCH(uint8) - else MAKE_INT_BRANCH(uint16) - else MAKE_INT_BRANCH(uint32) - else MAKE_INT_BRANCH(uint64) - -#undef MAKE_INT_BRANCH - - else - panic_impossible (); - } - else if (args(0).is_single_type ()) - { - const FloatNDArray in = - args(0).float_array_value (); - octave_idx_type len = - in.numel () * sizeof (float) / sizeof (uint8_t); - if (! error_state) - { - out.resize1 (len); - std::copy ((uint8_t*) in.data(), - ((uint8_t*) in.data()) + len, - out.fortran_vec ()); - retval(0) = octave_value (out); - } - } - else - { - const Array<double> in = args(0).array_value (); - - octave_idx_type len = - in.numel () * sizeof (double) / sizeof (uint8_t); - - if (! error_state) - { - out.resize1 (len); - std::copy ((uint8_t*) in.data(), - ((uint8_t*) in.data()) + len, - out.fortran_vec ()); - retval(0) = octave_value (out); - } - } - } - return retval; -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cd...@us...> - 2011-08-17 06:24:30
|
Revision: 8466 http://octave.svn.sourceforge.net/octave/?rev=8466&view=rev Author: cdf Date: 2011-08-17 06:24:23 +0000 (Wed, 17 Aug 2011) Log Message: ----------- added new function Modified Paths: -------------- trunk/octave-forge/extra/fpl/INDEX trunk/octave-forge/extra/fpl/inst/FPL2dxappenddata.m trunk/octave-forge/extra/fpl/inst/FPL2dxoutputdata.m trunk/octave-forge/extra/fpl/inst/FPL3dxoutputfield.m trunk/octave-forge/extra/fpl/inst/fpl_vtk_write_field.m trunk/octave-forge/extra/fpl/inst/savevtk.m trunk/octave-forge/extra/fpl/inst/savevtkvector.m Added Paths: ----------- trunk/octave-forge/extra/fpl/inst/fpl_vtk_assemble_series.m Modified: trunk/octave-forge/extra/fpl/INDEX =================================================================== --- trunk/octave-forge/extra/fpl/INDEX 2011-08-16 21:03:07 UTC (rev 8465) +++ trunk/octave-forge/extra/fpl/INDEX 2011-08-17 06:24:23 UTC (rev 8466) @@ -4,6 +4,9 @@ fpl_dx_write_series.m Functions to save data in VTK format fpl_vtk_write_field.m + fpl_vtk_assemble_series.m + savevtk + savevtkvector Pdetool compatible plotting functions pdesurf pdemesh Modified: trunk/octave-forge/extra/fpl/inst/FPL2dxappenddata.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/FPL2dxappenddata.m 2011-08-16 21:03:07 UTC (rev 8465) +++ trunk/octave-forge/extra/fpl/inst/FPL2dxappenddata.m 2011-08-17 06:24:23 UTC (rev 8466) @@ -63,7 +63,7 @@ fprintf(fid,'\nattribute "element type" string "triangles"\nattribute "ref" string "positions"\n\n'); - if ((attr_rank==0) & (min(size(u))==1)) + if ((attr_rank==0) && (min(size(u))==1)) fprintf(fid,'object "%s.data"\nclass array type double rank 0 items %d data follows',attr_name,Nnodi); fprintf(fid,'\n %1.7e',u); else Modified: trunk/octave-forge/extra/fpl/inst/FPL2dxoutputdata.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/FPL2dxoutputdata.m 2011-08-16 21:03:07 UTC (rev 8465) +++ trunk/octave-forge/extra/fpl/inst/FPL2dxoutputdata.m 2011-08-17 06:24:23 UTC (rev 8466) @@ -86,7 +86,7 @@ fprintf(fid,"\nattribute ""element type"" string ""triangles""\nattribute ""ref"" string ""positions""\n\n"); - if ((attr_rank==0) & (min(size(u))==1)) + if ((attr_rank==0) && (min(size(u))==1)) fprintf(fid,"object ""%s.data""\nclass array type double rank 0 items %d data follows",attr_name,Ndati); fprintf(fid,"\n %1.7e",u); Modified: trunk/octave-forge/extra/fpl/inst/FPL3dxoutputfield.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/FPL3dxoutputfield.m 2011-08-16 21:03:07 UTC (rev 8465) +++ trunk/octave-forge/extra/fpl/inst/FPL3dxoutputfield.m 2011-08-17 06:24:23 UTC (rev 8466) @@ -52,7 +52,7 @@ fid = fopen (filename,"w"); nnodes = size(field,1); - if ((attr_rank==0) & (min(size(field))==1)) + if ((attr_rank==0) && (min(size(field))==1)) fprintf(fid,"object ""%s.data""\nclass array type double rank 0 items %d data follows",attr_name,nnodes); fprintf(fid,"\n %e",field); else Added: trunk/octave-forge/extra/fpl/inst/fpl_vtk_assemble_series.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/fpl_vtk_assemble_series.m (rev 0) +++ trunk/octave-forge/extra/fpl/inst/fpl_vtk_assemble_series.m 2011-08-17 06:24:23 UTC (rev 8466) @@ -0,0 +1,60 @@ +## Copyright (C) 2011 Carlo de Falco +## +## This file is part of: +## FPL - Fem PLotting package for octave +## +## FPL is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## FPL is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with FPL; If not, see <http://www.gnu.org/licenses/>. +## +## author: Carlo de Falco <cdf _AT_ users.sourceforge.net> + +## -*- texinfo -*- +## @deftypefn {Function File} {} fpl_vtk_assemble_series (@var{collection}, @var{basenanme}, @var{format}, @var{idx}, @var{time}) +## +## Assemble a ParaView collection file (pvd) from a set of files representing data at different time-steps. +## +## @var{collection} is a string containing the base-name of the pvd file +## where the data will be saved. +## +## @var{basename}, @var{format}, @var{idx} are two strings and a set of integers, the name of the i-th file in the collection +## will be computed as @code{sprintf ([basename, format, ".vtu"], idx(i))}. +## +## @var{time} is the set of time-steps to which data correspond +## +## @seealso{fpl_vtk_write_field, fpl_dx_write_series} +## +## @end deftypefn + + +function fpl_vtk_assemble_series (collection, basenanme, format, idx, time) + + fid = fopen (strcat (collection, ".pvd"), "w"); + + ## Header + fprintf (fid, "<?xml version=""1.0""?>\n"); + fprintf (fid, "<VTKFile type=""Collection"" "); + fprintf (fid, " version=""0.1"">\n"); + fprintf (fid, "<Collection>\n"); + + ## Series + for ii = 1:ntpoints + fprintf (fid, "<DataSet timestep=""%#17.17g"" group=""%s"" ", time(ii), basename); + fprintf (fid, strcat ("file=""%s.", format, ".vtu""/>\n"), basename, idx(ii)); + endfor + + ## Footer + fprintf (fid, "</Collection>\n"); + fprintf (fid, "</VTKFile>\n"); + fclose (fid); + +endfunction \ No newline at end of file Modified: trunk/octave-forge/extra/fpl/inst/fpl_vtk_write_field.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/fpl_vtk_write_field.m 2011-08-16 21:03:07 UTC (rev 8465) +++ trunk/octave-forge/extra/fpl/inst/fpl_vtk_write_field.m 2011-08-17 06:24:23 UTC (rev 8466) @@ -45,79 +45,82 @@ ## Example: ## @example ## <generate msh1, node centered field nc1, cell centered field cc1> -## fpl_vtk_write_field("example",msh1,@{nc1, "temperature"@},@ -## @{cc1, "density"@},0); +## fpl_vtk_write_field ("example", msh1, @{nc1, "temperature"@}, @{cc1, "density"@}, 0); ## <generate msh2, node centered field nc2> -## fpl_vtk_write_field("example",msh2,@{nc2, "temperature"@},@ -## @{@},1); +## fpl_vtk_write_field ("example", msh2, @{nc2, "temperature"@}, @{@}, 1); ## @end example ## will generate a valid XML-VTK UnstructuredGrid file. ## -## @seealso{fpl_dx_write_field, fpl_dx_write_series} +## @seealso{fpl_dx_write_field, fpl_dx_write_series, fpl_vtk_assemble_series} ## ## @end deftypefn -function fpl_vtk_write_field(basename,mesh,nodedata,celldata,endfile) +function fpl_vtk_write_field (basename, mesh, nodedata, celldata, endfile) ## Check input if nargin!=5 - error("fpl_vtk_write_field: wrong number of input"); + error ("fpl_vtk_write_field: wrong number of input parameters"); endif - if !ischar(basename) - error("fpl_vtk_write_field: basename should be a valid string"); - elseif !( isstruct(mesh) ) - error("fpl_vtk_write_field: mesh should be a valid structure"); - elseif !(iscell(nodedata) && iscell(celldata)) - error("fpl_vtk_write_field: nodedata and celldata should be a valid cells"); + if (! ischar (basename)) + error ("fpl_vtk_write_field: basename should be a string"); + elseif (! isstruct (mesh)) + error ("fpl_vtk_write_field: mesh should be a struct"); + elseif (! (iscell (nodedata) && iscell (celldata))) + error ("fpl_vtk_write_field: nodedata and celldata should be cell arrays"); endif filename = [basename ".vtu"]; - if ! exist(filename,"file") - fid = fopen (filename,"w"); + if (! exist (filename, "file")) + fid = fopen (filename, "w"); + ## Header - fprintf (fid,"<?xml version=""1.0""?>\n"); - fprintf (fid,"<VTKFile type=""UnstructuredGrid"" version=""0.1"" byte_order=""LittleEndian"">\n"); - fprintf (fid,"<UnstructuredGrid>\n"); + fprintf (fid, "<?xml version=""1.0""?>\n"); + fprintf (fid, "<VTKFile type=""UnstructuredGrid"" version=""0.1"" byte_order=""LittleEndian"">\n"); + fprintf (fid, "<UnstructuredGrid>\n"); else + ## FIXME: the following should be performed in a cleaner way! Does a ## backward fgetl function exist? ## If file exist, check if it was already closed - fid = fopen (filename,"r"); - fseek(fid,-10,SEEK_END); - tst = fgetl(fid); - if strcmp(tst,"</VTKFile>") - error("fpl_vtk_write_field: file %s exist and was already closed",filename); + fid = fopen (filename, "r"); + fseek (fid, -10, SEEK_END); + tst = fgetl (fid); + if (strcmp (tst, "</VTKFile>")) + error ("fpl_vtk_write_field: file %s exist and was already closed", filename); endif - fclose(fid); - fid = fopen (filename,"a"); + fclose (fid); + fid = fopen (filename, "a"); endif p = mesh.p; - dim = rows(p); # 2D or 3D + dim = rows (p); # 2D or 3D if dim == 2 - t = mesh.t(1:3,:); + t = mesh.t (1:3,:); elseif dim == 3 - t = mesh.t(1:4,:); + t = mesh.t (1:4,:); else - error("fpl_vtk_write_field: neither 2D triangle nor 3D tetrahedral mesh"); + error ("fpl_vtk_write_field: neither 2D triangle nor 3D tetrahedral mesh"); endif t -= 1; - nnodes = columns(p); - nelems = columns(t); + nnodes = columns (p); + nelems = columns (t); ## Header for <Piece> - fprintf (fid,"<Piece NumberOfPoints=""%d"" NumberOfCells=""%d"">\n",nnodes,nelems); + fprintf (fid, "<Piece NumberOfPoints=""%d"" NumberOfCells=""%d"">\n", nnodes, nelems); + ## Print grid - print_grid(fid,dim,p,nnodes,t,nelems); - ## Print PointData - print_data_points(fid,nodedata,nnodes) - print_cell_data (fid,celldata,nelems) + print_grid (fid, dim, p, nnodes, t, nelems); + + ## Print Data + print_data_points (fid, nodedata, nnodes) + print_cell_data (fid, celldata, nelems) + ## Footer for <Piece> fprintf (fid, "</Piece>\n"); @@ -132,7 +135,7 @@ endfunction ## Print Points and Cells Data -function print_grid(fid,dim,p,nnodes,t,nelems) +function print_grid (fid, dim, p, nnodes, t, nelems) if dim == 2 p = [p; zeros(1,nnodes)]; @@ -142,11 +145,11 @@ endif ## VTK-Points (mesh nodes) - fprintf (fid,"<Points>\n"); - fprintf (fid,"<DataArray type=""Float64"" Name=""Array"" NumberOfComponents=""3"" format=""ascii"">\n"); - fprintf (fid,"%g %g %g\n", p); - fprintf (fid,"</DataArray>\n"); - fprintf (fid,"</Points>\n"); + fprintf (fid, "<Points>\n"); + fprintf (fid, "<DataArray type=""Float64"" Name=""Array"" NumberOfComponents=""3"" format=""ascii"">\n"); + fprintf (fid, "%g %g %g\n", p); + fprintf (fid, "</DataArray>\n"); + fprintf (fid, "</Points>\n"); ## VTK-Cells (mesh elements) fprintf (fid, "<Cells>\n"); @@ -168,40 +171,40 @@ endfunction ## Print DataPoints -function print_data_points(fid,nodedata,nnodes) +function print_data_points (fid, nodedata, nnodes) ## # of data to print in ## <PointData> field - nvdata = size(nodedata,1); + nvdata = size (nodedata, 1); if (nvdata) fprintf (fid, "<PointData>\n"); for ii = 1:nvdata data = nodedata{ii,1}; dataname = nodedata{ii,2}; - nsamples = rows(data); - ncomp = columns(data); - if nsamples != nnodes - error("fpl_vtk_write_field: wrong number of samples in <PointData> ""%s""",dataname); + nsamples = rows (data); + ncomp = columns (data); + if (nsamples != nnodes) + error ("fpl_vtk_write_field: wrong number of samples in <PointData> ""%s""", dataname); endif - fprintf (fid,"<DataArray type=""Float32"" Name=""%s"" ",dataname); - fprintf (fid,"NumberOfComponents=""%d"" format=""ascii"">\n",ncomp); + fprintf (fid, "<DataArray type=""Float32"" Name=""%s"" ", dataname); + fprintf (fid, "NumberOfComponents=""%d"" format=""ascii"">\n", ncomp); for jj = 1:nsamples - fprintf (fid,"%g ",data(jj,:)); - fprintf (fid,"\n"); + fprintf (fid, "%g ", data(jj,:)); + fprintf (fid, "\n"); endfor - fprintf (fid,"</DataArray>\n"); + fprintf (fid, "</DataArray>\n"); endfor fprintf (fid, "</PointData>\n"); endif endfunction -function print_cell_data(fid,celldata,nelems) +function print_cell_data (fid, celldata, nelems) ## # of data to print in ## <CellData> field - nvdata = size(celldata,1); + nvdata = size (celldata, 1); if (nvdata) fprintf (fid, "<CellData>\n"); @@ -211,15 +214,15 @@ nsamples = rows(data); ncomp = columns(data); if nsamples != nelems - error("fpl_vtk_write_field: wrong number of samples in <CellData> ""%s""",dataname); + error ("fpl_vtk_write_field: wrong number of samples in <CellData> ""%s""", dataname); endif - fprintf (fid,"<DataArray type=""Float32"" Name=""%s"" ",dataname); - fprintf (fid,"NumberOfComponents=""%d"" format=""ascii"">\n",ncomp); + fprintf (fid, "<DataArray type=""Float32"" Name=""%s"" ", dataname); + fprintf (fid, "NumberOfComponents=""%d"" format=""ascii"">\n", ncomp); for jj = 1:nsamples - fprintf (fid,"%g ",data(jj,:)); - fprintf (fid,"\n"); + fprintf (fid, "%g ", data(jj,:)); + fprintf (fid, "\n"); endfor - fprintf (fid,"</DataArray>\n"); + fprintf (fid, "</DataArray>\n"); endfor fprintf (fid, "</CellData>\n"); endif Modified: trunk/octave-forge/extra/fpl/inst/savevtk.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/savevtk.m 2011-08-16 21:03:07 UTC (rev 8465) +++ trunk/octave-forge/extra/fpl/inst/savevtk.m 2011-08-17 06:24:23 UTC (rev 8466) @@ -14,31 +14,30 @@ ## along with this program; If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} [ @var{status} ] = savevtk ( @var{X}, @var{Y}, @var{Z}, @var{filename} ) -## savevtk Save a 3-D scalar array in VTK format. +## @deftypefn {Function File} [@var{status}] = savevtk ( @var{X}, @var{Y}, @var{Z}, @var{filename} ) ## -## savevtk( array, filename ) saves a 3-D array of any size to -## filename in VTK format. This file format is used by Mayavi2 for example. +## Save a 3-D scalar array @var{array} to the file @var{filename} in VTK structured-grid format. ## -## If no write errors occurred, output argument status is set to 1, otherwise 0. +## This file format is used by Mayavi2 or ParaView for example. +## If no write errors occurred, output argument @var{status} is set to 1, otherwise 0. ## ## Example: ## ## @example ## n = 30; -## X = zeros(n,n,n); +## X = zeros (n, n, n); ## for x = 1:n ## for y = 1:n ## for z = 1:n -## X(x, y, z) = 1/sqrt ( x*x + y*y + z*z ); +## X(x, y, z) = 1 / sqrt (x*x + y*y + z*z); ## endfor ## endfor ## endfor -## X = X * 200 / max(max(max(X))); -## savevtk( X, "spherical.vtk"); +## X = X * 200 / max (max (max (X))); +## savevtk (X, "spherical.vtk"); ## @end example ## -## @seealso savevtkvector +## @seealso{savevtkvector} ## ## @end deftypefn @@ -46,55 +45,55 @@ ## Author: Kurnia Wano, Levente Torok <Tor...@gm...> ## Created: 2010-08-02 matlab version ## Updates: 2010-11-03 octave adoptation +## 2011-08-17 remove matlab style short-cicuit operator, indentation, help text ## -function [status ] = savevtk (array, filename="vtkout.vtk") +function status = savevtk (array, filename="vtkout.vtk") - status = 0; - if (nargin < 1), usage ("[status] = savevtk (array, filename)"); endif - dims = size (array) - if ( size (dims) != 3) -# if (ndims (A) != 3) - error ("Save Vtk requires a 3 dimensional array"); + status = 0; + if (nargin < 1), usage ("[status] = savevtk (array, filename)"); endif + dims = size (array); + if (numel (dims) != 3) + error ("Save Vtk requires a 3 dimensional array"); + endif + [nx, ny, nz] = size (array); + + if (ischar (filename)) + [fid, msg] = fopen (filename, 'wt'); + if (fid < 0) + error ("Cannot open file for saving file. %s", msg); endif - [nx, ny, nz] = size (array); + else + usage ("Filename expected for arg # 2"); + endif - if (ischar (filename)) - [fid, msg] = fopen (filename, 'wt'); - if (fid < 0) - error ("Cannot open file for saving file. %s", msg); - endif - else - usage ("Filename expected for arg # 2"); - endif + try + fprintf (fid, '# vtk DataFile Version 2.0\n'); + fprintf (fid, 'Comment goes here\n'); + fprintf (fid, 'ASCII\n'); + fprintf (fid, '\n'); + fprintf (fid, 'DATASET STRUCTURED_POINTS\n'); + fprintf (fid, 'DIMENSIONS %d %d %d\n', nx, ny, nz); + fprintf (fid, '\n'); + fprintf (fid, 'ORIGIN 0.000 0.000 0.000\n'); + fprintf (fid, 'SPACING 1.000 1.000 1.000\n'); + fprintf (fid, '\n'); + fprintf (fid, 'POINT_DATA %d\n', nx*ny*nz); + fprintf (fid, 'SCALARS scalars double\n'); + fprintf (fid, 'LOOKUP_TABLE default\n'); + fprintf (fid, '\n'); + for a=1:nz + for b=1:ny + for c=1:nx + fprintf (fid, '%d ', array(c, b, a)); + endfor + fprintf (fid, '\n'); + endfor + endfor + fclose (fid); + status = 1; + catch + error ("Error writing file %s - disk full?", filename); + end_try_catch - try - fprintf (fid, '# vtk DataFile Version 2.0\n'); - fprintf (fid, 'Comment goes here\n'); - fprintf (fid, 'ASCII\n'); - fprintf (fid, '\n'); - fprintf (fid, 'DATASET STRUCTURED_POINTS\n'); - fprintf (fid, 'DIMENSIONS %d %d %d\n', nx, ny, nz); - fprintf (fid, '\n'); - fprintf (fid, 'ORIGIN 0.000 0.000 0.000\n'); - fprintf (fid, 'SPACING 1.000 1.000 1.000\n'); - fprintf (fid, '\n'); - fprintf (fid, 'POINT_DATA %d\n', nx*ny*nz); - fprintf (fid, 'SCALARS scalars double\n'); - fprintf (fid, 'LOOKUP_TABLE default\n'); - fprintf (fid, '\n'); - for a=1:nz - for b=1:ny - for c=1:nx - fprintf (fid, '%d ', array(c, b, a)); - endfor - fprintf (fid, '\n'); - endfor - endfor - fclose (fid); - status = 1; - catch - error ("Error writing file %s - disk full?", filename); - end_try_catch - endfunction Modified: trunk/octave-forge/extra/fpl/inst/savevtkvector.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/savevtkvector.m 2011-08-16 21:03:07 UTC (rev 8465) +++ trunk/octave-forge/extra/fpl/inst/savevtkvector.m 2011-08-17 06:24:23 UTC (rev 8466) @@ -15,71 +15,71 @@ ## ## -*- texinfo -*- -## @deftypefn {Function File} [ @var{status} ] = savevtkvector ( @var{X}, @var{Y}, @var{Z}, @var{filename} ) -## savevtkvector Save a 3-D vector array in VTK format +## @deftypefn {Function File} [@var{status}] = savevtkvector (@var{X}, @var{Y}, @var{Z}, @var{filename}) ## -## savevtkvector (X, Y, Z, filename) saves a 3-D vector of any size to -## filename in VTK format. This file format is used by Mayavi2 for example. -## X, Y and Z should be arrays of the same -## size, each storing speeds in the a single Cartesian directions. +## Save a 3-D vector field of components @var{X}, @var{Y}, @var{Z} to the file @var{filename} in VTK format. ## -## If no write errors occurred, output argument status is set to 1, otherwise 0. +## This file format is used by Mayavi2 or ParaView for example. +## X, Y and Z should be 3-D arrays of the same +## size, each storing vector components in a given Cartesian direction. ## +## If no write errors occurred, output argument @var{status} is set to 1, otherwise 0. +## +## @seealso{savevtk} ## @end deftypefn ## ## Author: Kurnia Wano, Levente Torok <Tor...@gm...> ## Created: 2010-08-02 matlab version ## Updates: 2010-11-03 octave adoptatoin +## 2011-08-17 remove matlab style short-cicuit operator, indentation, help text ## -function [ status ] = savevtkvector (X, Y, Z, filename) +function [status] = savevtkvector (X, Y, Z, filename='vtkvector.vtk') + + status = 0; + if (nargin < 4), usage ("[status] = savevtkvector (X, Y, Z, filename='vtkvector.vtk')"); endif + if ((size(X) ~= size(Y)) || (size(X) ~= size(Z))) + error ("Error: velocity arrays of unequal size\n"); + end + [ny, nx, nz] = size (datax); + xx = 1:size (datax, 2); + yy = 1:size (datax, 1); + zz = 1:size (datax, 3); + datax = datax(:)'; + datay = datay(:)'; + dataz = dataz(:)'; + ## Header + if (ischar (filename)) + [ fid, msg ] = fopen (fullfile (outputd, filename), 'w'); + if ( fid < 1 ) + error ("Cannot open the file for saving: %s", msg); + endif + else + usage ("Filename expected for arg # 2"); + endif - status = 0; - if (nargin < 4), usage ("[status] = savevtkvector (X, Y, Z, filename='vtkvector.out')"); endif - if ((size(X) ~= size(Y)) | (size(X) ~= size(Z))) - error ("Error: velocity arrays of unequal size\n"); -# return; return not needed here, error() breaks out already - end - [ny, nx, nz] = size (datax); - xx = 1:size (datax, 2); - yy = 1:size (datax, 1); - zz = 1:size (datax, 3); - datax = datax(:)'; - datay = datay(:)'; - dataz = dataz(:)'; - ## Header + try + fprintf (fid, '%s\n', '# vtk DataFile Version 3.0'); + fprintf (fid, '%s\n', '3D LFF extrapolation'); + fprintf (fid, '%s\n', 'ASCII' ); + fprintf (fid, '%s\n', 'DATASET RECTILINEAR_GRID'); + fprintf (fid, '%s %1.0i %1.0i %1.0i\n', 'DIMENSIONS',nx, ny, nz); + fprintf (fid, '%s %1.0i %s\n', 'X_COORDINATES', nx, 'float'); + fprintf (fid, '%1.0i ', xx); + fprintf (fid, '\n%s %1.0i %s\n', 'Y_COORDINATES', ny, 'float'); + fprintf (fid, '%1.0i ', yy); + fprintf (fid, '\n%s %1.0i %s\n', 'Z_COORDINATES', nz, 'float'); + fprintf (fid, '%1.0i ', zz); + ## Data + fprintf (fid, '\n%s %1.0i','POINT_DATA', nx*ny*nz ); + fprintf (fid, '\n%s\n', 'VECTORS BFIELD float'); + fprintf (fid, '%6.2f %6.2f %6.2f\n', [datax;datay;dataz]); + fclose (fid); + status = 1; + catch + error ("Error writing file %s - disk full?", filename) + end_try_catch - if (ischar (filename)) - [ fid, msg ] = fopen (fullfile (outputd, filename), 'w'); - if ( fid < 1 ) - error ("Cannot open the file for saving: %s", msg); - endif - else - usage ("Filename expected for arg # 2"); - endif - - try - fprintf (fid, '%s\n', '# vtk DataFile Version 3.0'); - fprintf (fid, '%s\n', '3D LFF extrapolation'); - fprintf (fid, '%s\n', 'ASCII' ); - fprintf (fid, '%s\n', 'DATASET RECTILINEAR_GRID'); - fprintf (fid, '%s %1.0i %1.0i %1.0i\n', 'DIMENSIONS',nx, ny, nz); - fprintf (fid, '%s %1.0i %s\n', 'X_COORDINATES', nx, 'float'); - fprintf (fid, '%1.0i ', xx); - fprintf (fid, '\n%s %1.0i %s\n', 'Y_COORDINATES', ny, 'float'); - fprintf (fid, '%1.0i ', yy); - fprintf (fid, '\n%s %1.0i %s\n', 'Z_COORDINATES', nz, 'float'); - fprintf (fid, '%1.0i ', zz); - ## Data - fprintf (fid, '\n%s %1.0i','POINT_DATA', nx*ny*nz ); - fprintf (fid, '\n%s\n', 'VECTORS BFIELD float'); - fprintf (fid, '%6.2f %6.2f %6.2f\n', [datax;datay;dataz]); - fclose (fid); - status = 1; - catch - error ("Error writing file %s - disk full?", filename) - end_try_catch - endfunction This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cd...@us...> - 2012-08-04 20:59:40
|
Revision: 10821 http://octave.svn.sourceforge.net/octave/?rev=10821&view=rev Author: cdf Date: 2012-08-04 20:59:31 +0000 (Sat, 04 Aug 2012) Log Message: ----------- prepare for release Modified Paths: -------------- trunk/octave-forge/extra/fpl/DESCRIPTION trunk/octave-forge/extra/fpl/INDEX trunk/octave-forge/extra/fpl/src/array_to_uint8.cc Added Paths: ----------- trunk/octave-forge/extra/fpl/inst/deprecated/ trunk/octave-forge/extra/fpl/inst/deprecated/FPL2coloredgradient.net trunk/octave-forge/extra/fpl/inst/deprecated/FPL2coloredrubbersheet.net trunk/octave-forge/extra/fpl/inst/deprecated/FPL2dxappenddata.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL2dxoutputdata.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL2dxoutputtimeseries.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL2pdequiver.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL2pdequiver.net trunk/octave-forge/extra/fpl/inst/deprecated/FPL2pdeshowmesh.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL2pdeshowmesh.net trunk/octave-forge/extra/fpl/inst/deprecated/FPL2pdesurf.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL2ptcquiver.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL2ptcquiver.net trunk/octave-forge/extra/fpl/inst/deprecated/FPL2ptcshowmesh.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL2ptcshowmesh.net trunk/octave-forge/extra/fpl/inst/deprecated/FPL2ptcsurf.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL2ptcsurf.net trunk/octave-forge/extra/fpl/inst/deprecated/FPL2showmesh.net trunk/octave-forge/extra/fpl/inst/deprecated/FPL2trspdesurf.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL2trspdesurf.net trunk/octave-forge/extra/fpl/inst/deprecated/FPL2trsptcsurf.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL2trsptcsurf.net trunk/octave-forge/extra/fpl/inst/deprecated/FPL2vtkoutputdata.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL3dxoutputfield.m trunk/octave-forge/extra/fpl/inst/deprecated/FPL3dxoutputmesh.m Removed Paths: ------------- trunk/octave-forge/extra/fpl/inst/FPL2coloredgradient.net trunk/octave-forge/extra/fpl/inst/FPL2coloredrubbersheet.net trunk/octave-forge/extra/fpl/inst/FPL2dxappenddata.m trunk/octave-forge/extra/fpl/inst/FPL2dxoutputdata.m trunk/octave-forge/extra/fpl/inst/FPL2dxoutputtimeseries.m trunk/octave-forge/extra/fpl/inst/FPL2pdequiver.m trunk/octave-forge/extra/fpl/inst/FPL2pdequiver.net trunk/octave-forge/extra/fpl/inst/FPL2pdeshowmesh.m trunk/octave-forge/extra/fpl/inst/FPL2pdeshowmesh.net trunk/octave-forge/extra/fpl/inst/FPL2pdesurf.m trunk/octave-forge/extra/fpl/inst/FPL2ptcquiver.m trunk/octave-forge/extra/fpl/inst/FPL2ptcquiver.net trunk/octave-forge/extra/fpl/inst/FPL2ptcshowmesh.m trunk/octave-forge/extra/fpl/inst/FPL2ptcshowmesh.net trunk/octave-forge/extra/fpl/inst/FPL2ptcsurf.m trunk/octave-forge/extra/fpl/inst/FPL2ptcsurf.net trunk/octave-forge/extra/fpl/inst/FPL2showmesh.net trunk/octave-forge/extra/fpl/inst/FPL2trspdesurf.m trunk/octave-forge/extra/fpl/inst/FPL2trspdesurf.net trunk/octave-forge/extra/fpl/inst/FPL2trsptcsurf.m trunk/octave-forge/extra/fpl/inst/FPL2trsptcsurf.net trunk/octave-forge/extra/fpl/inst/FPL2vtkoutputdata.m trunk/octave-forge/extra/fpl/inst/FPL3dxoutputfield.m trunk/octave-forge/extra/fpl/inst/FPL3dxoutputmesh.m Modified: trunk/octave-forge/extra/fpl/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/fpl/DESCRIPTION 2012-08-04 19:47:21 UTC (rev 10820) +++ trunk/octave-forge/extra/fpl/DESCRIPTION 2012-08-04 20:59:31 UTC (rev 10821) @@ -1,12 +1,12 @@ Name: fpl -Version: 1.2.0 -Date: 2010-06-12 -Author: Carlo de Falco, Massimiliano Culpo +Version: 1.3.0 +Date: 2012-08-04 +Author: Carlo de Falco, Massimiliano Culpo and others Maintainer: Carlo de Falco, Massimiliano Culpo Title: Fem PLotting Description: Collection of routines to save data in different graphical formats. Categories: Graphics Depends: octave ( >= 3.0.0 ) License: GNU/GPL -SystemRequirements: dx ( >= 4.3.2), sed, bash -SVNRelease: 7425 \ No newline at end of file +SystemRequirements: +SVNRelease: 10821 Modified: trunk/octave-forge/extra/fpl/INDEX =================================================================== --- trunk/octave-forge/extra/fpl/INDEX 2012-08-04 19:47:21 UTC (rev 10820) +++ trunk/octave-forge/extra/fpl/INDEX 2012-08-04 20:59:31 UTC (rev 10821) @@ -1,28 +1,10 @@ FPL >> FEM Plotting -Functions to save data in DX format - fpl_dx_write_field.m - fpl_dx_write_series.m Functions to save data in VTK format fpl_vtk_write_field.m + fpl_vtk_b64_write_field.m fpl_vtk_assemble_series.m savevtk savevtkvector Pdetool compatible plotting functions pdesurf pdemesh -Legacy DX export functions - FPL2dxappenddata - FPL2dxoutputdata - FPL2dxoutputtimeseries - FPL3dxoutputmesh - FPL3dxoutputfield -Legacy DX wrappers - FPL2pdeshowmesh - FPL2ptcshowmesh - FPL2pdesurf - FPL2ptcsurf - FPL2trspdesurf - FPL2trsptcsurf - FPL2pdequiver - FPL2ptcquiver - FPL2vtkoutputdata Deleted: trunk/octave-forge/extra/fpl/inst/FPL2coloredgradient.net =================================================================== --- trunk/octave-forge/extra/fpl/inst/FPL2coloredgradient.net 2012-08-04 19:47:21 UTC (rev 10820) +++ trunk/octave-forge/extra/fpl/inst/FPL2coloredgradient.net 2012-08-04 20:59:31 UTC (rev 10821) @@ -1,635 +0,0 @@ -// -// time: Wed Jun 13 18:54:22 2007 -// -// version: 3.2.0 (format), 4.4.4 (DX) -// -// -// MODULE main -// workspace: width = 459, height = 507 -// layout: snap = 0, width = 50, height = 50, align = NN -// -macro main( -) -> ( -) { - // - // node FileSelector[1]: x = 28, y = 29, inputs = 0, label = FileSelector - // output[1]: visible = 1, type = 32, value = "__FILE__DX__" - // output[2]: visible = 1, type = 32, value = "__FILE__DX__" - // - // - // node Import[1]: x = 34, y = 109, inputs = 6, label = Import - // -main_Import_1_out_1 = - Import( - main_FileSelector_1_out_1, - main_Import_1_in_2, - main_Import_1_in_3, - main_Import_1_in_4, - main_Import_1_in_5, - main_Import_1_in_6 - ) [instance: 1, cache: 1]; - // - // node Post[1]: x = 124, y = 167, inputs = 2, label = Post - // input[2]: defaulting = 0, visible = 1, type = 32, value = "positions" - // -main_Post_1_out_1 = - Post( - main_Import_1_out_1, - main_Post_1_in_2 - ) [instance: 1, cache: 1]; - // - // node Gradient[1]: x = 227, y = 144, inputs = 2, label = Gradient - // -main_Gradient_1_out_1 = - Gradient( - main_Post_1_out_1, - main_Gradient_1_in_2 - ) [instance: 1, cache: 1]; - // - // node AutoGlyph[1]: x = 241, y = 215, inputs = 7, label = AutoGlyph - // -main_AutoGlyph_1_out_1 = - AutoGlyph( - main_Gradient_1_out_1, - main_AutoGlyph_1_in_2, - main_AutoGlyph_1_in_3, - main_AutoGlyph_1_in_4, - main_AutoGlyph_1_in_5, - main_AutoGlyph_1_in_6, - main_AutoGlyph_1_in_7 - ) [instance: 1, cache: 1]; - // - // node AutoColor[1]: x = 253, y = 283, inputs = 10, label = AutoColor - // -main_AutoColor_1_out_1, -main_AutoColor_1_out_2 = - AutoColor( - main_AutoGlyph_1_out_1, - main_AutoColor_1_in_2, - main_AutoColor_1_in_3, - main_AutoColor_1_in_4, - main_AutoColor_1_in_5, - main_AutoColor_1_in_6, - main_AutoColor_1_in_7, - main_AutoColor_1_in_8, - main_AutoColor_1_in_9, - main_AutoColor_1_in_10 - ) [instance: 1, cache: 1]; - // - // node ShowConnections[1]: x = 39, y = 242, inputs = 1, label = ShowConnections - // -main_ShowConnections_1_out_1 = - ShowConnections( - main_Post_1_out_1 - ) [instance: 1, cache: 1]; - // - // node Color[1]: x = 72, y = 328, inputs = 5, label = Color - // input[2]: defaulting = 0, visible = 1, type = 32, value = "black" - // input[3]: defaulting = 0, visible = 1, type = 5, value = .5 - // -main_Color_1_out_1 = - Color( - main_ShowConnections_1_out_1, - main_Color_1_in_2, - main_Color_1_in_3, - main_Color_1_in_4, - main_Color_1_in_5 - ) [instance: 1, cache: 1]; - // - // node ColorBar[1]: x = 339, y = 285, inputs = 16, label = ColorBar - // input[9]: defaulting = 0, visible = 0, type = 16777248, value = {"black"} - // -main_ColorBar_1_out_1 = - ColorBar( - main_AutoColor_1_out_2, - main_ColorBar_1_in_2, - main_ColorBar_1_in_3, - main_ColorBar_1_in_4, - main_ColorBar_1_in_5, - main_ColorBar_1_in_6, - main_ColorBar_1_in_7, - main_ColorBar_1_in_8, - main_ColorBar_1_in_9, - main_ColorBar_1_in_10, - main_ColorBar_1_in_11, - main_ColorBar_1_in_12, - main_ColorBar_1_in_13, - main_ColorBar_1_in_14, - main_ColorBar_1_in_15, - main_ColorBar_1_in_16 - ) [instance: 1, cache: 1]; - // - // node Collect[1]: x = 280, y = 393, inputs = 3, label = Collect - // -main_Collect_1_out_1 = - Collect( - main_Color_1_out_1, - main_AutoColor_1_out_1, - main_ColorBar_1_out_1 - ) [instance: 1, cache: 1]; - // - // node Image[1]: x = 188, y = 445, inputs = 49, label = Image - // input[1]: defaulting = 0, visible = 0, type = 67108863, value = "Image_1" - // input[4]: defaulting = 0, visible = 0, type = 1, value = 1 - // input[5]: defaulting = 0, visible = 0, type = 8, value = [0.182894 0.102434 0] - // input[6]: defaulting = 0, visible = 0, type = 8, value = [0.182894 0.102434 3.60504] - // input[7]: defaulting = 0, visible = 0, type = 5, value = 0.460265 - // input[8]: defaulting = 0, visible = 0, type = 1, value = 772 - // input[9]: defaulting = 0, visible = 0, type = 5, value = 0.791 - // input[10]: defaulting = 0, visible = 0, type = 8, value = [0 1 0] - // input[11]: defaulting = 1, visible = 0, type = 5, value = 7.30519 - // input[12]: defaulting = 0, visible = 0, type = 1, value = 0 - // input[14]: defaulting = 0, visible = 0, type = 1, value = 1 - // input[15]: defaulting = 1, visible = 0, type = 32, value = "none" - // input[16]: defaulting = 1, visible = 0, type = 32, value = "none" - // input[17]: defaulting = 1, visible = 0, type = 1, value = 1 - // input[18]: defaulting = 1, visible = 0, type = 1, value = 1 - // input[19]: defaulting = 0, visible = 0, type = 1, value = 0 - // input[22]: defaulting = 0, visible = 0, type = 32, value = "snow" - // input[25]: defaulting = 0, visible = 0, type = 32, value = "/Users/carlo/Desktop/COMSONDEMO/CoMSON DP/doping.tif" - // input[26]: defaulting = 0, visible = 0, type = 32, value = "tiff" - // input[29]: defaulting = 0, visible = 0, type = 3, value = 1 - // input[31]: defaulting = 0, visible = 0, type = 1, value = -5 - // input[33]: defaulting = 0, visible = 0, type = 3, value = 1 - // input[34]: defaulting = 0, visible = 0, type = 3, value = 0 - // input[36]: defaulting = 0, visible = 0, type = 3, value = 1 - // input[37]: defaulting = 0, visible = 0, type = 16777248, value = {"clear", "black", "blue", "blue"} - // input[38]: defaulting = 0, visible = 0, type = 16777248, value = {"background", "grid", "ticks", "labels"} - // input[39]: defaulting = 0, visible = 0, type = 5, value = 0.65 - // input[40]: defaulting = 0, visible = 0, type = 32, value = "roman_d" - // input[41]: defaulting = 0, visible = 0, type = 32, value = "panzoom" - // depth: value = 24 - // window: position = (0.0000,0.0000), size = 0.6141x0.6396 - // internal caching: 1 - // -main_Image_1_out_1, -main_Image_1_out_2, -main_Image_1_out_3 = - Image( - main_Image_1_in_1, - main_Collect_1_out_1, - main_Image_1_in_3, - main_Image_1_in_4, - main_Image_1_in_5, - main_Image_1_in_6, - main_Image_1_in_7, - main_Image_1_in_8, - main_Image_1_in_9, - main_Image_1_in_10, - main_Image_1_in_11, - main_Image_1_in_12, - main_Image_1_in_13, - main_Image_1_in_14, - main_Image_1_in_15, - main_Image_1_in_16, - main_Image_1_in_17, - main_Image_1_in_18, - main_Image_1_in_19, - main_Image_1_in_20, - main_Image_1_in_21, - main_Image_1_in_22, - main_Image_1_in_23, - main_Image_1_in_24, - main_Image_1_in_25, - main_Image_1_in_26, - main_Image_1_in_27, - main_Image_1_in_28, - main_Image_1_in_29, - main_Image_1_in_30, - main_Image_1_in_31, - main_Image_1_in_32, - main_Image_1_in_33, - main_Image_1_in_34, - main_Image_1_in_35, - main_Image_1_in_36, - main_Image_1_in_37, - main_Image_1_in_38, - main_Image_1_in_39, - main_Image_1_in_40, - main_Image_1_in_41, - main_Image_1_in_42, - main_Image_1_in_43, - main_Image_1_in_44, - main_Image_1_in_45, - main_Image_1_in_46, - main_Image_1_in_47, - main_Image_1_in_48, - main_Image_1_in_49 - ) [instance: 1, cache: 1]; -// network: end of macro body -CacheScene(main_Image_1_in_1, main_Image_1_out_1, main_Image_1_out_2); -} -main_FileSelector_1_out_1 = "/tmp/SECS2D.6003912.dx"; -main_Import_1_in_2 = NULL; -main_Import_1_in_3 = NULL; -main_Import_1_in_4 = NULL; -main_Import_1_in_5 = NULL; -main_Import_1_in_6 = NULL; -main_Import_1_out_1 = NULL; -main_Post_1_in_2 = "positions"; -main_Post_1_out_1 = NULL; -main_Gradient_1_in_2 = NULL; -main_Gradient_1_out_1 = NULL; -main_AutoGlyph_1_in_2 = NULL; -main_AutoGlyph_1_in_3 = NULL; -main_AutoGlyph_1_in_4 = NULL; -main_AutoGlyph_1_in_5 = NULL; -main_AutoGlyph_1_in_6 = NULL; -main_AutoGlyph_1_in_7 = NULL; -main_AutoGlyph_1_out_1 = NULL; -main_AutoColor_1_in_2 = NULL; -main_AutoColor_1_in_3 = NULL; -main_AutoColor_1_in_4 = NULL; -main_AutoColor_1_in_5 = NULL; -main_AutoColor_1_in_6 = NULL; -main_AutoColor_1_in_7 = NULL; -main_AutoColor_1_in_8 = NULL; -main_AutoColor_1_in_9 = NULL; -main_AutoColor_1_in_10 = NULL; -main_AutoColor_1_out_1 = NULL; -main_AutoColor_1_out_2 = NULL; -main_ShowConnections_1_out_1 = NULL; -main_Color_1_in_2 = "black"; -main_Color_1_in_3 = .5; -main_Color_1_in_4 = NULL; -main_Color_1_in_5 = NULL; -main_Color_1_out_1 = NULL; -main_ColorBar_1_in_2 = NULL; -main_ColorBar_1_in_3 = NULL; -main_ColorBar_1_in_4 = NULL; -main_ColorBar_1_in_5 = NULL; -main_ColorBar_1_in_6 = NULL; -main_ColorBar_1_in_7 = NULL; -main_ColorBar_1_in_8 = NULL; -main_ColorBar_1_in_9 = {"black"}; -main_ColorBar_1_in_10 = NULL; -main_ColorBar_1_in_11 = NULL; -main_ColorBar_1_in_12 = NULL; -main_ColorBar_1_in_13 = NULL; -main_ColorBar_1_in_14 = NULL; -main_ColorBar_1_in_15 = NULL; -main_ColorBar_1_in_16 = NULL; -main_ColorBar_1_out_1 = NULL; -main_Collect_1_out_1 = NULL; -macro Image( - id, - object, - where, - useVector, - to, - from, - width, - resolution, - aspect, - up, - viewAngle, - perspective, - options, - buttonState = 1, - buttonUpApprox = "none", - buttonDownApprox = "none", - buttonUpDensity = 1, - buttonDownDensity = 1, - renderMode = 0, - defaultCamera, - reset, - backgroundColor, - throttle, - RECenable = 0, - RECfile, - RECformat, - RECresolution, - RECaspect, - AAenable = 0, - AAlabels, - AAticks, - AAcorners, - AAframe, - AAadjust, - AAcursor, - AAgrid, - AAcolors, - AAannotation, - AAlabelscale, - AAfont, - interactionMode, - title, - AAxTickLocs, - AAyTickLocs, - AAzTickLocs, - AAxTickLabels, - AAyTickLabels, - AAzTickLabels, - webOptions) -> ( - object, - camera, - where) -{ - ImageMessage( - id, - backgroundColor, - throttle, - RECenable, - RECfile, - RECformat, - RECresolution, - RECaspect, - AAenable, - AAlabels, - AAticks, - AAcorners, - AAframe, - AAadjust, - AAcursor, - AAgrid, - AAcolors, - AAannotation, - AAlabelscale, - AAfont, - AAxTickLocs, - AAyTickLocs, - AAzTickLocs, - AAxTickLabels, - AAyTickLabels, - AAzTickLabels, - interactionMode, - title, - renderMode, - buttonUpApprox, - buttonDownApprox, - buttonUpDensity, - buttonDownDensity) [instance: 1, cache: 1]; - autoCamera = - AutoCamera( - object, - "front", - object, - resolution, - aspect, - [0,1,0], - perspective, - viewAngle, - backgroundColor) [instance: 1, cache: 1]; - realCamera = - Camera( - to, - from, - width, - resolution, - aspect, - up, - perspective, - viewAngle, - backgroundColor) [instance: 1, cache: 1]; - coloredDefaultCamera = - UpdateCamera(defaultCamera, - background=backgroundColor) [instance: 1, cache: 1]; - nullDefaultCamera = - Inquire(defaultCamera, - "is null + 1") [instance: 1, cache: 1]; - resetCamera = - Switch( - nullDefaultCamera, - coloredDefaultCamera, - autoCamera) [instance: 1, cache: 1]; - resetNull = - Inquire( - reset, - "is null + 1") [instance: 2, cache: 1]; - reset = - Switch( - resetNull, - reset, - 0) [instance: 2, cache: 1]; - whichCamera = - Compute( - "($0 != 0 || $1 == 0) ? 1 : 2", - reset, - useVector) [instance: 1, cache: 1]; - camera = Switch( - whichCamera, - resetCamera, - realCamera) [instance: 3, cache: 1]; - AAobject = - AutoAxes( - object, - camera, - AAlabels, - AAticks, - AAcorners, - AAframe, - AAadjust, - AAcursor, - AAgrid, - AAcolors, - AAannotation, - AAlabelscale, - AAfont, - AAxTickLocs, - AAyTickLocs, - AAzTickLocs, - AAxTickLabels, - AAyTickLabels, - AAzTickLabels) [instance: 1, cache: 1]; - switchAAenable = Compute("$0+1", - AAenable) [instance: 2, cache: 1]; - object = Switch( - switchAAenable, - object, - AAobject) [instance:4, cache: 1]; - SWapproximation_options = - Switch( - buttonState, - buttonUpApprox, - buttonDownApprox) [instance: 5, cache: 1]; - SWdensity_options = - Switch( - buttonState, - buttonUpDensity, - buttonDownDensity) [instance: 6, cache: 1]; - HWapproximation_options = - Format( - "%s,%s", - buttonDownApprox, - buttonUpApprox) [instance: 1, cache: 1]; - HWdensity_options = - Format( - "%d,%d", - buttonDownDensity, - buttonUpDensity) [instance: 2, cache: 1]; - switchRenderMode = Compute( - "$0+1", - renderMode) [instance: 3, cache: 1]; - approximation_options = Switch( - switchRenderMode, - SWapproximation_options, - HWapproximation_options) [instance: 7, cache: 1]; - density_options = Switch( - switchRenderMode, - SWdensity_options, - HWdensity_options) [instance: 8, cache: 1]; - renderModeString = Switch( - switchRenderMode, - "software", - "hardware")[instance: 9, cache: 1]; - object_tag = Inquire( - object, - "object tag")[instance: 3, cache: 1]; - annoted_object = - Options( - object, - "send boxes", - 0, - "cache", - 1, - "object tag", - object_tag, - "ddcamera", - whichCamera, - "rendering approximation", - approximation_options, - "render every", - density_options, - "button state", - buttonState, - "rendering mode", - renderModeString) [instance: 1, cache: 1]; - RECresNull = - Inquire( - RECresolution, - "is null + 1") [instance: 4, cache: 1]; - ImageResolution = - Inquire( - camera, - "camera resolution") [instance: 5, cache: 1]; - RECresolution = - Switch( - RECresNull, - RECresolution, - ImageResolution) [instance: 10, cache: 1]; - RECaspectNull = - Inquire( - RECaspect, - "is null + 1") [instance: 6, cache: 1]; - ImageAspect = - Inquire( - camera, - "camera aspect") [instance: 7, cache: 1]; - RECaspect = - Switch( - RECaspectNull, - RECaspect, - ImageAspect) [instance: 11, cache: 1]; - switchRECenable = Compute( - "$0 == 0 ? 1 : (($2 == $3) && ($4 == $5)) ? ($1 == 1 ? 2 : 3) : 4", - RECenable, - switchRenderMode, - RECresolution, - ImageResolution, - RECaspect, - ImageAspect) [instance: 4, cache: 1]; - NoRECobject, RECNoRerenderObject, RECNoRerHW, RECRerenderObject = Route(switchRECenable, annoted_object); - Display( - NoRECobject, - camera, - where, - throttle) [instance: 1, cache: 1]; - image = - Render( - RECNoRerenderObject, - camera) [instance: 1, cache: 1]; - Display( - image, - NULL, - where, - throttle) [instance: 2, cache: 1]; - WriteImage( - image, - RECfile, - RECformat) [instance: 1, cache: 1]; - rec_where = Display( - RECNoRerHW, - camera, - where, - throttle) [instance: 1, cache: 0]; - rec_image = ReadImageWindow( - rec_where) [instance: 1, cache: 1]; - WriteImage( - rec_image, - RECfile, - RECformat) [instance: 1, cache: 1]; - RECupdateCamera = - UpdateCamera( - camera, - resolution=RECresolution, - aspect=RECaspect) [instance: 2, cache: 1]; - Display( - RECRerenderObject, - camera, - where, - throttle) [instance: 1, cache: 1]; - RECRerenderObject = - ScaleScreen( - RECRerenderObject, - NULL, - RECresolution, - camera) [instance: 1, cache: 1]; - image = - Render( - RECRerenderObject, - RECupdateCamera) [instance: 2, cache: 1]; - WriteImage( - image, - RECfile, - RECformat) [instance: 2, cache: 1]; -} -main_Image_1_in_1 = "Image_1"; -main_Image_1_in_3 = "X24,,"; -main_Image_1_in_4 = 1; -main_Image_1_in_5 = [0.182894 0.102434 0]; -main_Image_1_in_6 = [0.182894 0.102434 3.60504]; -main_Image_1_in_7 = 0.460265; -main_Image_1_in_8 = 772; -main_Image_1_in_9 = 0.791; -main_Image_1_in_10 = [0 1 0]; -main_Image_1_in_11 = NULL; -main_Image_1_in_12 = 0; -main_Image_1_in_13 = NULL; -main_Image_1_in_14 = 1; -main_Image_1_in_15 = NULL; -main_Image_1_in_16 = NULL; -main_Image_1_in_17 = NULL; -main_Image_1_in_18 = NULL; -main_Image_1_in_19 = 0; -main_Image_1_in_20 = NULL; -main_Image_1_in_21 = NULL; -main_Image_1_in_22 = "snow"; -main_Image_1_in_23 = NULL; -main_Image_1_in_25 = "/Users/carlo/Desktop/COMSONDEMO/CoMSON DP/doping.tif"; -main_Image_1_in_26 = "tiff"; -main_Image_1_in_27 = NULL; -main_Image_1_in_28 = NULL; -main_Image_1_in_29 = 1; -main_Image_1_in_30 = NULL; -main_Image_1_in_31 = -5; -main_Image_1_in_32 = NULL; -main_Image_1_in_33 = 1; -main_Image_1_in_34 = 0; -main_Image_1_in_35 = NULL; -main_Image_1_in_36 = 1; -main_Image_1_in_37 = {"clear", "black", "blue", "blue"}; -main_Image_1_in_38 = {"background", "grid", "ticks", "labels"}; -main_Image_1_in_39 = 0.65; -main_Image_1_in_40 = "roman_d"; -main_Image_1_in_41 = "panzoom"; -main_Image_1_in_42 = NULL; -main_Image_1_in_43 = NULL; -main_Image_1_in_44 = NULL; -main_Image_1_in_45 = NULL; -main_Image_1_in_46 = NULL; -main_Image_1_in_47 = NULL; -main_Image_1_in_48 = NULL; -main_Image_1_in_49 = NULL; -Executive("product version 4 4 4"); -$sync -main(); Deleted: trunk/octave-forge/extra/fpl/inst/FPL2coloredrubbersheet.net =================================================================== --- trunk/octave-forge/extra/fpl/inst/FPL2coloredrubbersheet.net 2012-08-04 19:47:21 UTC (rev 10820) +++ trunk/octave-forge/extra/fpl/inst/FPL2coloredrubbersheet.net 2012-08-04 20:59:31 UTC (rev 10821) @@ -1,619 +0,0 @@ -// -// time: Wed Jun 13 17:16:01 2007 -// -// version: 3.2.0 (format), 4.4.4 (DX) -// -// -// MODULE main -// workspace: width = 533, height = 507 -// layout: snap = 0, width = 50, height = 50, align = NN -// -macro main( -) -> ( -) { - // - // node FileSelector[1]: x = 51, y = 31, inputs = 0, label = FileSelector - // output[1]: visible = 1, type = 32, value = "__FILE__DX__" - // output[2]: visible = 1, type = 32, value = "__FILE__DX__" - // - // - // node Import[1]: x = 104, y = 118, inputs = 6, label = Import - // -main_Import_1_out_1 = - Import( - main_FileSelector_1_out_1, - main_Import_1_in_2, - main_Import_1_in_3, - main_Import_1_in_4, - main_Import_1_in_5, - main_Import_1_in_6 - ) [instance: 1, cache: 1]; - // - // node Post[1]: x = 249, y = 57, inputs = 2, label = Post - // input[2]: defaulting = 0, visible = 1, type = 32, value = "__DATA_DEPENDENCY__" - // -main_Post_1_out_1 = - Post( - main_Import_1_out_1, - main_Post_1_in_2 - ) [instance: 1, cache: 1]; - // - // node RubberSheet[1]: x = 228, y = 142, inputs = 4, label = RubberSheet - // -main_RubberSheet_1_out_1 = - RubberSheet( - main_Post_1_out_1, - main_RubberSheet_1_in_2, - main_RubberSheet_1_in_3, - main_RubberSheet_1_in_4 - ) [instance: 1, cache: 1]; - // - // node AutoColor[1]: x = 253, y = 283, inputs = 10, label = AutoColor - // -main_AutoColor_1_out_1, -main_AutoColor_1_out_2 = - AutoColor( - main_RubberSheet_1_out_1, - main_AutoColor_1_in_2, - main_AutoColor_1_in_3, - main_AutoColor_1_in_4, - main_AutoColor_1_in_5, - main_AutoColor_1_in_6, - main_AutoColor_1_in_7, - main_AutoColor_1_in_8, - main_AutoColor_1_in_9, - main_AutoColor_1_in_10 - ) [instance: 1, cache: 1]; - // - // node ShowConnections[1]: x = 49, y = 232, inputs = 1, label = ShowConnections - // -main_ShowConnections_1_out_1 = - ShowConnections( - main_RubberSheet_1_out_1 - ) [instance: 1, cache: 1]; - // - // node Color[1]: x = 72, y = 328, inputs = 5, label = Color - // input[2]: defaulting = 0, visible = 1, type = 32, value = "black" - // input[3]: defaulting = 0, visible = 1, type = 5, value = .5 - // -main_Color_1_out_1 = - Color( - main_ShowConnections_1_out_1, - main_Color_1_in_2, - main_Color_1_in_3, - main_Color_1_in_4, - main_Color_1_in_5 - ) [instance: 1, cache: 1]; - // - // node ColorBar[1]: x = 413, y = 290, inputs = 16, label = ColorBar - // input[9]: defaulting = 0, visible = 0, type = 16777248, value = {"black"} - // -main_ColorBar_1_out_1 = - ColorBar( - main_AutoColor_1_out_2, - main_ColorBar_1_in_2, - main_ColorBar_1_in_3, - main_ColorBar_1_in_4, - main_ColorBar_1_in_5, - main_ColorBar_1_in_6, - main_ColorBar_1_in_7, - main_ColorBar_1_in_8, - main_ColorBar_1_in_9, - main_ColorBar_1_in_10, - main_ColorBar_1_in_11, - main_ColorBar_1_in_12, - main_ColorBar_1_in_13, - main_ColorBar_1_in_14, - main_ColorBar_1_in_15, - main_ColorBar_1_in_16 - ) [instance: 1, cache: 1]; - // - // node Collect[1]: x = 280, y = 393, inputs = 3, label = Collect - // -main_Collect_1_out_1 = - Collect( - main_Color_1_out_1, - main_AutoColor_1_out_1, - main_ColorBar_1_out_1 - ) [instance: 1, cache: 1]; - // - // node Image[1]: x = 188, y = 445, inputs = 49, label = Image - // input[1]: defaulting = 0, visible = 0, type = 67108863, value = "Image_1" - // input[4]: defaulting = 0, visible = 0, type = 1, value = 1 - // input[5]: defaulting = 0, visible = 0, type = 8, value = [0.466889 0.863877 0.166499] - // input[6]: defaulting = 0, visible = 0, type = 8, value = [0.466889 0.863877 4.74189] - // input[7]: defaulting = 0, visible = 0, type = 5, value = 1.01623 - // input[8]: defaulting = 0, visible = 0, type = 1, value = 1254 - // input[9]: defaulting = 0, visible = 0, type = 5, value = 0.730064 - // input[10]: defaulting = 0, visible = 0, type = 8, value = [0 1 0] - // input[11]: defaulting = 1, visible = 0, type = 5, value = 12.6739 - // input[12]: defaulting = 0, visible = 0, type = 1, value = 0 - // input[14]: defaulting = 0, visible = 0, type = 1, value = 1 - // input[15]: defaulting = 1, visible = 0, type = 32, value = "none" - // input[16]: defaulting = 1, visible = 0, type = 32, value = "none" - // input[17]: defaulting = 1, visible = 0, type = 1, value = 1 - // input[18]: defaulting = 1, visible = 0, type = 1, value = 1 - // input[19]: defaulting = 0, visible = 0, type = 1, value = 0 - // input[22]: defaulting = 0, visible = 0, type = 32, value = "snow" - // input[25]: defaulting = 0, visible = 0, type = 32, value = "/Users/carlo/Desktop/COMSONDEMO/CoMSON DP/doping.tif" - // input[26]: defaulting = 0, visible = 0, type = 32, value = "tiff" - // input[29]: defaulting = 0, visible = 0, type = 3, value = 1 - // input[31]: defaulting = 0, visible = 0, type = 1, value = -5 - // input[33]: defaulting = 0, visible = 0, type = 3, value = 1 - // input[34]: defaulting = 0, visible = 0, type = 3, value = 0 - // input[36]: defaulting = 0, visible = 0, type = 3, value = 1 - // input[37]: defaulting = 0, visible = 0, type = 16777248, value = {"clear", "black", "blue", "blue"} - // input[38]: defaulting = 0, visible = 0, type = 16777248, value = {"background", "grid", "ticks", "labels"} - // input[39]: defaulting = 0, visible = 0, type = 5, value = 0.65 - // input[40]: defaulting = 0, visible = 0, type = 32, value = "roman_d" - // input[41]: defaulting = 0, visible = 0, type = 32, value = "panzoom" - // depth: value = 24 - // window: position = (0.0000,0.0283), size = 0.9906x0.9375 - // internal caching: 1 - // -main_Image_1_out_1, -main_Image_1_out_2, -main_Image_1_out_3 = - Image( - main_Image_1_in_1, - main_Collect_1_out_1, - main_Image_1_in_3, - main_Image_1_in_4, - main_Image_1_in_5, - main_Image_1_in_6, - main_Image_1_in_7, - main_Image_1_in_8, - main_Image_1_in_9, - main_Image_1_in_10, - main_Image_1_in_11, - main_Image_1_in_12, - main_Image_1_in_13, - main_Image_1_in_14, - main_Image_1_in_15, - main_Image_1_in_16, - main_Image_1_in_17, - main_Image_1_in_18, - main_Image_1_in_19, - main_Image_1_in_20, - main_Image_1_in_21, - main_Image_1_in_22, - main_Image_1_in_23, - main_Image_1_in_24, - main_Image_1_in_25, - main_Image_1_in_26, - main_Image_1_in_27, - main_Image_1_in_28, - main_Image_1_in_29, - main_Image_1_in_30, - main_Image_1_in_31, - main_Image_1_in_32, - main_Image_1_in_33, - main_Image_1_in_34, - main_Image_1_in_35, - main_Image_1_in_36, - main_Image_1_in_37, - main_Image_1_in_38, - main_Image_1_in_39, - main_Image_1_in_40, - main_Image_1_in_41, - main_Image_1_in_42, - main_Image_1_in_43, - main_Image_1_in_44, - main_Image_1_in_45, - main_Image_1_in_46, - main_Image_1_in_47, - main_Image_1_in_48, - main_Image_1_in_49 - ) [instance: 1, cache: 1]; -// network: end of macro body -CacheScene(main_Image_1_in_1, main_Image_1_out_1, main_Image_1_out_2); -} -main_FileSelector_1_out_1 = "__FILE__DX__"; -main_Import_1_in_2 = NULL; -main_Import_1_in_3 = NULL; -main_Import_1_in_4 = NULL; -main_Import_1_in_5 = NULL; -main_Import_1_in_6 = NULL; -main_Import_1_out_1 = NULL; -main_Post_1_in_2 = "positions"; -main_Post_1_out_1 = NULL; -main_RubberSheet_1_in_2 = NULL; -main_RubberSheet_1_in_3 = NULL; -main_RubberSheet_1_in_4 = NULL; -main_RubberSheet_1_out_1 = NULL; -main_AutoColor_1_in_2 = NULL; -main_AutoColor_1_in_3 = NULL; -main_AutoColor_1_in_4 = NULL; -main_AutoColor_1_in_5 = NULL; -main_AutoColor_1_in_6 = NULL; -main_AutoColor_1_in_7 = NULL; -main_AutoColor_1_in_8 = NULL; -main_AutoColor_1_in_9 = NULL; -main_AutoColor_1_in_10 = NULL; -main_AutoColor_1_out_1 = NULL; -main_AutoColor_1_out_2 = NULL; -main_ShowConnections_1_out_1 = NULL; -main_Color_1_in_2 = "black"; -main_Color_1_in_3 = .5; -main_Color_1_in_4 = NULL; -main_Color_1_in_5 = NULL; -main_Color_1_out_1 = NULL; -main_ColorBar_1_in_2 = NULL; -main_ColorBar_1_in_3 = NULL; -main_ColorBar_1_in_4 = NULL; -main_ColorBar_1_in_5 = NULL; -main_ColorBar_1_in_6 = NULL; -main_ColorBar_1_in_7 = NULL; -main_ColorBar_1_in_8 = NULL; -main_ColorBar_1_in_9 = {"black"}; -main_ColorBar_1_in_10 = NULL; -main_ColorBar_1_in_11 = NULL; -main_ColorBar_1_in_12 = NULL; -main_ColorBar_1_in_13 = NULL; -main_ColorBar_1_in_14 = NULL; -main_ColorBar_1_in_15 = NULL; -main_ColorBar_1_in_16 = NULL; -main_ColorBar_1_out_1 = NULL; -main_Collect_1_out_1 = NULL; -macro Image( - id, - object, - where, - useVector, - to, - from, - width, - resolution, - aspect, - up, - viewAngle, - perspective, - options, - buttonState = 1, - buttonUpApprox = "none", - buttonDownApprox = "none", - buttonUpDensity = 1, - buttonDownDensity = 1, - renderMode = 0, - defaultCamera, - reset, - backgroundColor, - throttle, - RECenable = 0, - RECfile, - RECformat, - RECresolution, - RECaspect, - AAenable = 0, - AAlabels, - AAticks, - AAcorners, - AAframe, - AAadjust, - AAcursor, - AAgrid, - AAcolors, - AAannotation, - AAlabelscale, - AAfont, - interactionMode, - title, - AAxTickLocs, - AAyTickLocs, - AAzTickLocs, - AAxTickLabels, - AAyTickLabels, - AAzTickLabels, - webOptions) -> ( - object, - camera, - where) -{ - ImageMessage( - id, - backgroundColor, - throttle, - RECenable, - RECfile, - RECformat, - RECresolution, - RECaspect, - AAenable, - AAlabels, - AAticks, - AAcorners, - AAframe, - AAadjust, - AAcursor, - AAgrid, - AAcolors, - AAannotation, - AAlabelscale, - AAfont, - AAxTickLocs, - AAyTickLocs, - AAzTickLocs, - AAxTickLabels, - AAyTickLabels, - AAzTickLabels, - interactionMode, - title, - renderMode, - buttonUpApprox, - buttonDownApprox, - buttonUpDensity, - buttonDownDensity) [instance: 1, cache: 1]; - autoCamera = - AutoCamera( - object, - "front", - object, - resolution, - aspect, - [0,1,0], - perspective, - viewAngle, - backgroundColor) [instance: 1, cache: 1]; - realCamera = - Camera( - to, - from, - width, - resolution, - aspect, - up, - perspective, - viewAngle, - backgroundColor) [instance: 1, cache: 1]; - coloredDefaultCamera = - UpdateCamera(defaultCamera, - background=backgroundColor) [instance: 1, cache: 1]; - nullDefaultCamera = - Inquire(defaultCamera, - "is null + 1") [instance: 1, cache: 1]; - resetCamera = - Switch( - nullDefaultCamera, - coloredDefaultCamera, - autoCamera) [instance: 1, cache: 1]; - resetNull = - Inquire( - reset, - "is null + 1") [instance: 2, cache: 1]; - reset = - Switch( - resetNull, - reset, - 0) [instance: 2, cache: 1]; - whichCamera = - Compute( - "($0 != 0 || $1 == 0) ? 1 : 2", - reset, - useVector) [instance: 1, cache: 1]; - camera = Switch( - whichCamera, - resetCamera, - realCamera) [instance: 3, cache: 1]; - AAobject = - AutoAxes( - object, - camera, - AAlabels, - AAticks, - AAcorners, - AAframe, - AAadjust, - AAcursor, - AAgrid, - AAcolors, - AAannotation, - AAlabelscale, - AAfont, - AAxTickLocs, - AAyTickLocs, - AAzTickLocs, - AAxTickLabels, - AAyTickLabels, - AAzTickLabels) [instance: 1, cache: 1]; - switchAAenable = Compute("$0+1", - AAenable) [instance: 2, cache: 1]; - object = Switch( - switchAAenable, - object, - AAobject) [instance:4, cache: 1]; - SWapproximation_options = - Switch( - buttonState, - buttonUpApprox, - buttonDownApprox) [instance: 5, cache: 1]; - SWdensity_options = - Switch( - buttonState, - buttonUpDensity, - buttonDownDensity) [instance: 6, cache: 1]; - HWapproximation_options = - Format( - "%s,%s", - buttonDownApprox, - buttonUpApprox) [instance: 1, cache: 1]; - HWdensity_options = - Format( - "%d,%d", - buttonDownDensity, - buttonUpDensity) [instance: 2, cache: 1]; - switchRenderMode = Compute( - "$0+1", - renderMode) [instance: 3, cache: 1]; - approximation_options = Switch( - switchRenderMode, - SWapproximation_options, - HWapproximation_options) [instance: 7, cache: 1]; - density_options = Switch( - switchRenderMode, - SWdensity_options, - HWdensity_options) [instance: 8, cache: 1]; - renderModeString = Switch( - switchRenderMode, - "software", - "hardware")[instance: 9, cache: 1]; - object_tag = Inquire( - object, - "object tag")[instance: 3, cache: 1]; - annoted_object = - Options( - object, - "send boxes", - 0, - "cache", - 1, - "object tag", - object_tag, - "ddcamera", - whichCamera, - "rendering approximation", - approximation_options, - "render every", - density_options, - "button state", - buttonState, - "rendering mode", - renderModeString) [instance: 1, cache: 1]; - RECresNull = - Inquire( - RECresolution, - "is null + 1") [instance: 4, cache: 1]; - ImageResolution = - Inquire( - camera, - "camera resolution") [instance: 5, cache: 1]; - RECresolution = - Switch( - RECresNull, - RECresolution, - ImageResolution) [instance: 10, cache: 1]; - RECaspectNull = - Inquire( - RECaspect, - "is null + 1") [instance: 6, cache: 1]; - ImageAspect = - Inquire( - camera, - "camera aspect") [instance: 7, cache: 1]; - RECaspect = - Switch( - RECaspectNull, - RECaspect, - ImageAspect) [instance: 11, cache: 1]; - switchRECenable = Compute( - "$0 == 0 ? 1 : (($2 == $3) && ($4 == $5)) ? ($1 == 1 ? 2 : 3) : 4", - RECenable, - switchRenderMode, - RECresolution, - ImageResolution, - RECaspect, - ImageAspect) [instance: 4, cache: 1]; - NoRECobject, RECNoRerenderObject, RECNoRerHW, RECRerenderObject = Route(switchRECenable, annoted_object); - Display( - NoRECobject, - camera, - where, - throttle) [instance: 1, cache: 1]; - image = - Render( - RECNoRerenderObject, - camera) [instance: 1, cache: 1]; - Display( - image, - NULL, - where, - throttle) [instance: 2, cache: 1]; - WriteImage( - image, - RECfile, - RECformat) [instance: 1, cache: 1]; - rec_where = Display( - RECNoRerHW, - camera, - where, - throttle) [instance: 1, cache: 0]; - rec_image = ReadImageWindow( - rec_where) [instance: 1, cache: 1]; - WriteImage( - rec_image, - RECfile, - RECformat) [instance: 1, cache: 1]; - RECupdateCamera = - UpdateCamera( - camera, - resolution=RECresolution, - aspect=RECaspect) [instance: 2, cache: 1]; - Display( - RECRerenderObject, - camera, - where, - throttle) [instance: 1, cache: 1]; - RECRerenderObject = - ScaleScreen( - RECRerenderObject, - NULL, - RECresolution, - camera) [instance: 1, cache: 1]; - image = - Render( - RECRerenderObject, - RECupdateCamera) [instance: 2, cache: 1]; - WriteImage( - image, - RECfile, - RECformat) [instance: 2, cache: 1]; -} -main_Image_1_in_1 = "Image_1"; -main_Image_1_in_3 = "X24,,"; -main_Image_1_in_4 = 1; -main_Image_1_in_5 = [0.466889 0.863877 0.166499]; -main_Image_1_in_6 = [0.466889 0.863877 4.74189]; -main_Image_1_in_7 = 1.01623; -main_Image_1_in_8 = 1254; -main_Image_1_in_9 = 0.730064; -main_Image_1_in_10 = [0 1 0]; -main_Image_1_in_11 = NULL; -main_Image_1_in_12 = 0; -main_Image_1_in_13 = NULL; -main_Image_1_in_14 = 1; -main_Image_1_in_15 = NULL; -main_Image_1_in_16 = NULL; -main_Image_1_in_17 = NULL; -main_Image_1_in_18 = NULL; -main_Image_1_in_19 = 0; -main_Image_1_in_20 = NULL; -main_Image_1_in_21 = NULL; -main_Image_1_in_22 = "snow"; -main_Image_1_in_23 = NULL; -main_Image_1_in_25 = "/Users/carlo/Desktop/COMSONDEMO/CoMSON DP/doping.tif"; -main_Image_1_in_26 = "tiff"; -main_Image_1_in_27 = NULL; -main_Image_1_in_28 = NULL; -main_Image_1_in_29 = 1; -main_Image_1_in_30 = NULL; -main_Image_1_in_31 = -5; -main_Image_1_in_32 = NULL; -main_Image_1_in_33 = 1; -main_Image_1_in_34 = 0; -main_Image_1_in_35 = NULL; -main_Image_1_in_36 = 1; -main_Image_1_in_37 = {"clear", "black", "blue", "blue"}; -main_Image_1_in_38 = {"background", "grid", "ticks", "labels"}; -main_Image_1_in_39 = 0.65; -main_Image_1_in_40 = "roman_d"; -main_Image_1_in_41 = "panzoom"; -main_Image_1_in_42 = NULL; -main_Image_1_in_43 = NULL; -main_Image_1_in_44 = NULL; -main_Image_1_in_45 = NULL; -main_Image_1_in_46 = NULL; -main_Image_1_in_47 = NULL; -main_Image_1_in_48 = NULL; -main_Image_1_in_49 = NULL; -Executive("product version 4 4 4"); -$sync -main(); Deleted: trunk/octave-forge/extra/fpl/inst/FPL2dxappenddata.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/FPL2dxappenddata.m 2012-08-04 19:47:21 UTC (rev 10820) +++ trunk/octave-forge/extra/fpl/inst/FPL2dxappenddata.m 2012-08-04 20:59:31 UTC (rev 10821) @@ -1,90 +0,0 @@ -## Copyright (C) 2004-2008 Carlo de Falco, Massimiliano Culpo -## -## This file is part of -## -## FPL - Fem PLotting package for octave -## -## FPL is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or -## (at your option) any later version. -## -## FPL is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with FPL; If not, see <http://www.gnu.org/licenses/>. -## -## -## AUTHORS: -## Carlo de Falco <cdf _AT_ users.sourceforge.net> -## -## Culpo Massimiliano -## Bergische Universitaet Wuppertal -## Fachbereich C - Mathematik und Naturwissenschaften -## Arbeitsgruppe fuer Angewandte MathematD-42119 Wuppertal Gaussstr. 20 -## D-42119 Wuppertal, Germany - -## -*- texinfo -*- -## @deftypefn {Function File} {} FPL2dxappenddata ( @var{filename}, -## @var{p}, @var{t}, @var{u}, @var{attr_name}, @var{attr_rank}, -## @var{attr_shape}, @var{endflie} ) -## -## Apends data to a file in DX form. -## Only one variable can be written to the file -## variable must be a scalar, vector or tensor of doubles -## mesh data in the file must be consistent with this variable -## -## Variable must be a scalar, vector or tensor of doubles -## -## @itemize @minus -## @item @var{filename}= name of file to save (type string) -## @item @var{p}, @var{t} = mesh -## @item @var{u} = variable to save -## @item @var{attr_name} = name of the variable (type string) -## @item @var{attr_rank} = rank of variable data (0 for scalar, 1 for vector, etc.) -## @item @var{attr_shape} = number of components of variable data (assumed 1 for scalar) -## @item @var{endfile} = 0 if you want to add other variables to the -## same file, 1 otherwise -## @end itemize -## @end deftypefn - -function FPL2dxappenddata(filename,p,t,u,attr_name,attr_rank,attr_shape,endfile) - - p = p'; - t = t'; - t = t(:,1:3); - - fid=fopen (filename,'a'); - Nnodi = size(p,1); - Ntriangoli = size(t,1); - - fprintf(fid,'\nattribute "element type" string "triangles"\nattribute "ref" string "positions"\n\n'); - - if ((attr_rank==0) & (min(size(u))==1)) - fprintf(fid,'object "%s.data"\nclass array type double rank 0 items %d data follows',attr_name,Nnodi); - fprintf(fid,'\n %1.7e',u); - else - fprintf(fid,'object "%s.data"\nclass array type double rank %d shape %d items %d data follows', ... - attr_name,attr_rank,attr_shape,Nnodi); - for i=1:Nnodi - fprintf(fid,'\n'); - fprintf(fid,' %1.7e',u(i,:)); - endfor - endif - fprintf(fid,['\nattribute "dep" string "positions"\n\n' ... - 'object "%s" class field\n'... - 'component "positions" value "pos"\n'... - 'component "connections" value "con"\n'... - 'component "data" value "%s.data"\n'],... - attr_name,attr_name); - - if(endfile) - fprintf(fid,'\nend\n'); - endif - - fclose (fid); - -endfunction \ No newline at end of file Deleted: trunk/octave-forge/extra/fpl/inst/FPL2dxoutputdata.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/FPL2dxoutputdata.m 2012-08-04 19:47:21 UTC (rev 10820) +++ trunk/octave-forge/extra/fpl/inst/FPL2dxoutputdata.m 2012-08-04 20:59:31 UTC (rev 10821) @@ -1,126 +0,0 @@ -## Copyright (C) 2004-2008,2009 Carlo de Falco, Massimiliano Culpo -## -## This file is part of -## -## FPL - Fem PLotting package for octave -## -## FPL is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or -## (at your option) any later version. -## -## FPL is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with FPL; If not, see <http://www.gnu.org/licenses/>. -## -## -## AUTHORS: -## Carlo de Falco <cdf _AT_ users.sourceforge.net> -## -## Culpo Massimiliano -## Bergische Universitaet Wuppertal -## Fachbereich C - Mathematik und Naturwissenschaften -## Arbeitsgruppe fuer Angewandte MathematD-42119 Wuppertal Gaussstr. 20 -## D-42119 Wuppertal, Germany - -## -*- texinfo -*- -## @deftypefn {Function File} {} FPL2dxoutputdata ( @var{filename}, @ -## @var{p}, @var{t}, @var{u}, @var{attr_name}, @var{attr_rank}, @ -## @var{attr_shape}, @var{endfile} ) -## -## Outputs data in DX form. -## -## Variable must be a scalar, vector or tensor of doubles -## -## @itemize @minus -## @item @var{filename}= name of file to save (type string) -## @item @var{p}, @var{t} = mesh -## @item @var{u} = variable to save -## @item @var{attr_name} = name of the variable (type string) -## @item @var{attr_rank} = rank of variable data (0 for scalar, 1 for vector, etc.) -## @item @var{attr_shape} = number of components of variable data (assumed 1 for scalar) -## @item @var{endfile} = 0 if you want to add other variables to the -## same file, 1 otherwise -## @end itemize -## @end deftypefn - -function FPL2dxoutputdata(filename,p,t,u,attr_name,attr_rank,attr_shape,endfile) - - p = p'; - t = t'; - t = t(:,1:3); - - fid=fopen (filename,'w'); - Nnodi = size(p,1); - Ntriangoli = size(t,1); - Ndati = size(u,1); - - fprintf(fid,"object ""pos""\nclass array type float rank 1 shape 2 items %d data follows",Nnodi); - - for i=1:Nnodi - fprintf(fid,"\n"); - fprintf(fid," %1.7e",p(i,:)); - endfor - - if (min(min(t))==1) - t=t-1; - elseif(min(min(t))~=0) - disp('WARNING: check triangle structure') - endif - ## In DX format nodes are - ## numbered starting from zero, - ## instead we want to number - ## them starting from 1! - ## Here we restore the DX - ## format - - fprintf(fid,"\n\nobject ""con""\nclass array type int rank 1 shape 3 items %d data follows",Ntriangoli); - for i=1:Ntriangoli - fprintf(fid,"\n"); - fprintf(fid," %d",t(i,:)); - endfor - - fprintf(fid,"\nattribute ""element type"" string ""triangles""\nattribute ""ref"" string ""positions""\n\n"); - - if ((attr_rank==0) && (min(size(u))==1)) - fprintf(fid,"object ""%s.data""\nclass array type double rank 0 items %d data follows",attr_name,Ndati); - fprintf(fid,"\n %1.7e",u); - - else - fprintf(fid,"object ""%s.data""\nclass array type double rank %d shape %d items %d data follows", ... - attr_name,attr_rank,attr_shape,Ndati); - for i=1:Ndati - fprintf(fid,"\n"); - fprintf(fid," %1.7e",u(i,:)); - endfor - - endif - - if Ndati==Nnodi - fprintf(fid,["\nattribute ""dep"" string ""positions""\n\n" ... - "object ""%s"" class field\n"... - "component ""positions"" value ""pos""\n"... - "component ""connections"" value ""con""\n"... - "component ""data"" value ""%s.data""\n"],... - attr_name,attr_name); - elseif Ndati==Ntriangoli - fprintf(fid,["\nattribute ""dep"" string ""connections""\n\n" ... - "object ""%s"" class field\n"... - "component ""positions"" value ""pos""\n"... - "component ""connections"" value ""con""\n"... - "component ""data"" value ""%s.data""\n"],... - attr_name,attr_name); - endif - - if(endfile) - fprintf(fid,"\nend\n"); - endif - - fclose (fid); - - -endfunction \ No newline at end of file Deleted: trunk/octave-forge/extra/fpl/inst/FPL2dxoutputtimeseries.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/FPL2dxoutputtimeseries.m 2012-08-04 19:47:21 UTC (rev 10820) +++ trunk/octave-forge/extra/fpl/inst/FPL2dxoutputtimeseries.m 2012-08-04 20:59:31 UTC (rev 10821) @@ -1,71 +0,0 @@ -## Copyright (C) 2004-2008 Carlo de Falco, Massimiliano Culpo -## -## This file is part of -## -## FPL - Fem PLotting package for octave -## -## FPL is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or -## (at your option) any later version. -## -## FPL is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with FPL; If not, see <http://www.gnu.org/licenses/>. -## -## -## AUTHORS: -## Carlo de Falco <cdf _AT_ users.sourceforge.net> -## -## Culpo Massimiliano -## Bergische Universitaet Wuppertal -## Fachbereich C - Mathematik und Naturwissenschaften -## Arbeitsgruppe fuer Angewandte MathematD-42119 Wuppertal Gaussstr. 20 -## D-42119 Wuppertal, Germany - -## -*- texinfo -*- -## @deftypefn {Function File} {} FPL2dxoutputtimeseries ( @var{filename}, @var{p}, @var{t}, @var{u}, @var{attr_name}, @var{attr_rank}, @var{attr_shape}, @var{time} ) -## -## Outputs a time series in DX form. -## variable must be a scalar, vector or tensor of doubles -## @itemize @minus -## @item @var{filename}= name of file to save (type string) -## @item @var{p}, @var{t} = mesh -## @item @var{u} = variable to save -## @item @var{attr_name} = name of the variable (type string) -## @item @var{attr_rank} = rank of variable data (0 for scalar, 1 for vector, etc.) -## @item @var{attr_shape} = number of components of variable data (assumed 1 for scalar) -## @item @var{time} = time instants -## @end itemize -## @end deftypefn - -function FPL2dxoutputtimeseries(filename,p,t,u,attr_name,attr_rank,attr_shape,time) - - Nsteps = length(time); - if (Nsteps<=1) - endfile = 1; - else - endfile = 0; - endif - - FPL2dxoutputdata(filename,p,t,u(:,1:attr_shape),[attr_name "1"],attr_rank,attr_shape,endfile); - - for it = 2:Nsteps - FPL2dxappenddata(filename,p,t,u(:,[1:attr_shape]+attr_shape*(it-1)),... - [attr_name num2str(it)],attr_rank,attr_shape,endfile); - endfor - - fid=fopen(filename,"a"); - - fprintf (fid, "object \"%s_series\" class series\n",attr_name); - for it = 1:Nsteps - fprintf (fid,"member %d position %g value \"%s\"\n",it-1,time(it),[attr_name num2str(it)]); - endfor - fprintf (fid, "\nend\n"); - fclose(fid); - -endfunction \ No newline at end of file Deleted: trunk/octave-forge/extra/fpl/inst/FPL2pdequiver.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/FPL2pdequiver.m 2012-08-04 19:47:21 UTC (rev 10820) +++ trunk/octave-forge/extra/fpl/inst/FPL2pdequiver.m 2012-08-04 20:59:31 UTC (rev 10821) @@ -1,92 +0,0 @@ -## Copyright (C) 2004-2008 Carlo de Falco, Massimiliano Culpo -## -## This file is part of -## -## FPL - Fem PLotting package for octave -## -## FPL is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or -## (at your option) any later version. -## -## FPL is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with FPL; If not, see <http://www.gnu.org/licenses/>. -## -## -## AUTHORS: -## Carlo de Falco <cdf _AT_ users.sourceforge.net> -## -## Culpo Massimiliano -## Bergische Universitaet Wuppertal -## Fachbereich C - Mathematik und Naturwissenschaften -## Arbeitsgruppe fuer Angewandte MathematD-42119 Wuppertal Gaussstr. 20 -## D-42119 Wuppertal, Germany - -## -*- texinfo -*- -## @deftypefn {Function File} {} FPL2pdequiver (@var{mesh}, @ -## @var{vx}, @var{vy}, [ @var{property}, @var{value} ...]) -## -## Plots the 2D vector field @var{vx}, @var{vy} -## defined on the triangulation @var{mesh} using opendx. -## -## Options (default values): -## @var{sample_density} (100) -## -## @seealso{FPL2pdesurf, FPL2ptcsurf, FPL2ptcquiver} -## @end deftypefn - -function FPL2pdequiver(mesh,vecfieldx,vecfieldy,varargin); - - sample_density = "100"; - - if( (nargin >= 3) && (rem(nargin,2)==1) ) - for ii=1:2:length(varargin) - [ varargin{ii} " = " varargin{ii+1} ";" ] - eval([ varargin{ii} " = """ varargin{ii+1} """;" ]); - endfor - else - error(["wrong number of parameters " num2str (nargin)]) - endif - - JX = sum(vecfieldx,1)'/3; - JY = sum(vecfieldy,1)'/3; - - dataname = mktemp("/tmp",".dx"); - scriptname = mktemp("/tmp",".net"); - - FPL2dxoutputdata(dataname,mesh.p,mesh.t,[ JX JY],'J',1,2,1); - - showmesh = file_in_path(path,"FPL2pdequiver.net"); - - system (["cp " showmesh " " scriptname]); - system (["sed -i \'s|__FILE__DX__|" dataname "|g\' " scriptname]); - system (["sed -i \'s|__SAMPLE__DENSITY__|" sample_density "|g\' " scriptname]); - - command = ["dx -noConfirmedQuit -program " scriptname " -execute -image >& /dev/null & "]; - - system(command); - - -endfunction - -function filename = mktemp (direct,ext); - - if (~exist(direct,"dir")) - error("trying to save temporary file to non existing directory") - endif - - done=false; - - while ~done - filename = [direct,"/FPL.",num2str(floor(rand*1e7)),ext]; - if ~exist(filename,"file") - done =true; - endif - endwhile - -endfunction Deleted: trunk/octave-forge/extra/fpl/inst/FPL2pdequiver.net =================================================================== --- trunk/octave-forge/extra/fpl/inst/FPL2pdequiver.net 2012-08-04 19:47:21 UTC (rev 10820) +++ trunk/octave-forge/extra/fpl/inst/FPL2pdequiver.net 2012-08-04 20:59:31 UTC (rev 10821) @@ -1,613 +0,0 @@ -// -// time: Fri Jun 15 19:24:56 2007 -// -// version: 3.2.0 (format), 4.4.4 (DX) -// -// -// MODULE main -// workspace: width = 481, height = 614 -// layout: snap = 0, width = 50, height = 50, align = NN -// -macro main( -) -> ( -) { - // - // node FileSelector[1]: x = 173, y = 81, inputs = 0, label = FileSelector - // output[1]: visible = 1, type = 32, value = "__FILE__DX__" - // output[2]: visible = 1, type = 32, value = "__FILE__DX__" - // - // - // node Import[1]: x = 203, y = 177, inputs = 6, label = Import - // -main_Import_1_out_1 = - Import( - main_FileSelector_1_out_1, - main_Import_1_in_2, - main_Import_1_in_3, - main_Import_1_in_4, - main_Import_1_in_5, - main_Import_1_in_6 - ) [instance: 1, cache: 1]; - // - // node Sample[1]: x = 89, y = 238, inputs = 2, label = Sample - // input[2]: defaulting = 0, visible = 1, type = 1, value = __SAMPLE__DENSITY__ - // -main_Sample_1_out_1 = - Sample( - main_Import_1_out_1, - main_Sample_1_in_2 - ) [instance: 1, cache: 1]; - // - // node AutoGlyph[1]: x = 64, y = 323, inputs = 7, label = AutoGlyph - // -main_AutoGlyph_1_out_1 = - AutoGlyph( - main_Sample_1_out_1, - main_AutoGlyph_1_in_2, - main_AutoGlyph_1_in_3, - main_AutoGlyph_1_in_4, - main_AutoGlyph_1_in_5, - main_AutoGlyph_1_in_6, - main_AutoGlyph_1_in_7 - ) [instance: 1, cache: 1]; - // - // node AutoColor[1]: x = 76, y = 415, inputs = 10, label = AutoColor - // -main_AutoColor_1_out_1, -main_AutoColor_1_out_2 = - AutoColor( - main_AutoGlyph_1_out_1, - main_AutoColor_1_in_2, - main_AutoColor_1_in_3, - main_AutoColor_1_in_4, - main_AutoColor_1_in_5, - main_AutoColor_1_in_6, - main_AutoColor_1_in_7, - main_AutoColor_1_in_8, - main_AutoColor_1_in_9, - main_AutoColor_1_in_10 - ) [instance: 1, cache: 1]; - // - // node ColorBar[1]: x = 238, y = 367, inputs = 16, label = ColorBar - // -main_ColorBar_1_out_1 = - ColorBar( - main_AutoColor_1_out_2, - main_ColorBar_1_in_2, - main_ColorBar_1_in_3, - main_ColorBar_1_in_4, - main_ColorBar_1_in_5, - main_ColorBar_1_in_6, - main_ColorBar_1_in_7, - main_ColorBar_1_in_8, - main_ColorBar_1_in_9, - main_ColorBar_1_in_10, - main_ColorBar_1_in_11, - main_ColorBar_1_in_12, - main_ColorBar_1_in_13, - main_ColorBar_1_in_14, - main_ColorBar_1_in_15, - main_ColorBar_1_in_16 - ) [instance: 1, cache: 1]; - // - // node ShowConnections[1]: x = 348, y = 295, inputs = 1, label = ShowConnections - // -main_ShowConnections_1_ou... [truncated message content] |
From: <cd...@us...> - 2012-09-07 08:55:59
|
Revision: 10968 http://octave.svn.sourceforge.net/octave/?rev=10968&view=rev Author: cdf Date: 2012-09-07 08:55:50 +0000 (Fri, 07 Sep 2012) Log Message: ----------- get rid of oct files Modified Paths: -------------- trunk/octave-forge/extra/fpl/DESCRIPTION trunk/octave-forge/extra/fpl/NEWS trunk/octave-forge/extra/fpl/inst/fpl_vtk_b64_write_field.m trunk/octave-forge/extra/fpl/inst/fpl_vtk_raw_write_field.m Removed Paths: ------------- trunk/octave-forge/extra/fpl/src/ Modified: trunk/octave-forge/extra/fpl/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/fpl/DESCRIPTION 2012-09-06 20:29:31 UTC (rev 10967) +++ trunk/octave-forge/extra/fpl/DESCRIPTION 2012-09-07 08:55:50 UTC (rev 10968) @@ -1,11 +1,11 @@ Name: fpl -Version: 1.3.1 -Date: 2012-08-10 +Version: 1.3.2 +Date: 2012-09-07 Author: Carlo de Falco, Massimiliano Culpo and others Maintainer: Carlo de Falco, Massimiliano Culpo Title: Fem PLotting Description: Collection of routines to export data produced by Finite Elements or Finite Volume Simulations in formats used by some visualization programs. Categories: Graphics -Depends: octave ( >= 3.4.2 ) +Depends: octave ( >= 3.2.3 ) License: GPLv3+ Modified: trunk/octave-forge/extra/fpl/NEWS =================================================================== --- trunk/octave-forge/extra/fpl/NEWS 2012-09-06 20:29:31 UTC (rev 10967) +++ trunk/octave-forge/extra/fpl/NEWS 2012-09-07 08:55:50 UTC (rev 10968) @@ -1,3 +1,9 @@ +Summary of important user-visible changes for fpl 1.3.2: +------------------------------------------------------------------- + + * raw/base64 vtk exporters have been rewritten in a more backward-compatible + way. This should also make fpl easier to install. + Summary of important user-visible changes for fpl 1.3.1: ------------------------------------------------------------------- Modified: trunk/octave-forge/extra/fpl/inst/fpl_vtk_b64_write_field.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/fpl_vtk_b64_write_field.m 2012-09-06 20:29:31 UTC (rev 10967) +++ trunk/octave-forge/extra/fpl/inst/fpl_vtk_b64_write_field.m 2012-09-07 08:55:50 UTC (rev 10968) @@ -156,8 +156,8 @@ ## VTK-Points (mesh nodes) fprintf (fid, " <Points>\n"); fprintf (fid, " <DataArray type=""Float64"" Name=""Array"" NumberOfComponents=""3"" format=""appended"" offset=""%d"" />\n", offset); - newdata = __array_to_uint8__(p)(:); - data = [data, base64_encode([__array_to_uint8__(int32 (numel (newdata)))(:); newdata])]; + newdata = typecast (p, 'uint8')(:); + data = [data, base64_encode([typecast(int32 (numel (newdata)), 'uint8')(:); newdata])]; offset = numel (data); fprintf (fid, " </Points>\n"); @@ -165,20 +165,20 @@ ## VTK-Cells (mesh elements) fprintf (fid, " <Cells>\n"); fprintf (fid, " <DataArray type=""Int32"" Name=""connectivity"" format=""appended"" offset=""%d"" />\n", offset); - newdata = __array_to_uint8__(int32 (t))(:); - data = [data, base64_encode([__array_to_uint8__(int32 (numel (newdata)))(:); newdata])]; + newdata = typecast (int32 (t), 'uint8')(:); + data = [data, base64_encode([typecast(int32 (numel (newdata)), 'uint8')(:); newdata])]; offset = numel (data); fprintf (fid, " <DataArray type=""Int32"" Name=""offsets"" format=""appended"" offset=""%d"" />\n", offset); tmp = (dim+1):(dim+1):((dim+1)*nelems); - newdata = __array_to_uint8__(int32 (tmp))(:); - data = [data, base64_encode([__array_to_uint8__(int32 (numel (newdata)))(:); newdata])]; + newdata = typecast(int32 (tmp), 'uint8')(:); + data = [data, base64_encode([typecast(int32 (numel (newdata)), 'uint8')(:); newdata])]; offset = numel (data); fprintf (fid, " <DataArray type=""UInt8"" Name=""types"" format=""appended"" offset=""%d"" />\n", offset); tmp = eltype*ones(nelems,1); - newdata = __array_to_uint8__(uint8 (tmp))(:); - data = [data, base64_encode([__array_to_uint8__(int32 (numel (newdata)))(:); newdata])]; + newdata = typecast(uint8 (tmp), 'uint8')(:); + data = [data, base64_encode([typecast(int32 (numel (newdata)), 'uint8')(:); newdata])]; offset = numel (data); fprintf (fid, " </Cells>\n"); @@ -204,8 +204,8 @@ endif fprintf (fid, " <DataArray type=""Float64"" Name=""%s"" ", ndataname); fprintf (fid, "NumberOfComponents=""%d"" format=""appended"" offset=""%d"" />\n", ncomp, offset); - newdata = __array_to_uint8__(ndata.')(:); - data = [data, base64_encode([__array_to_uint8__(int32 (numel (newdata)))(:); newdata])]; + newdata = typecast (ndata.', 'uint8')(:); + data = [data, base64_encode([typecast(int32 (numel (newdata)), 'uint8')(:); newdata])]; offset = numel (data); endfor fprintf (fid, " </PointData>\n"); @@ -231,8 +231,8 @@ endif fprintf (fid, " <DataArray type=""Float64"" Name=""%s"" ", cdataname); fprintf (fid, "NumberOfComponents=""%d"" format=""appended"" offset=""%d"" />\n", ncomp, offset); - newdata = __array_to_uint8__(cdata.')(:); - data = [data, base64_encode([__array_to_uint8__(int32 (numel (newdata)))(:); newdata])]; + newdata = typecast(cdata.', 'uint8')(:); + data = [data, base64_encode([typecast(int32 (numel (newdata)), 'uint8')(:); newdata])]; offset = numel (data); endfor fprintf (fid, " </CellData>\n"); Modified: trunk/octave-forge/extra/fpl/inst/fpl_vtk_raw_write_field.m =================================================================== --- trunk/octave-forge/extra/fpl/inst/fpl_vtk_raw_write_field.m 2012-09-06 20:29:31 UTC (rev 10967) +++ trunk/octave-forge/extra/fpl/inst/fpl_vtk_raw_write_field.m 2012-09-07 08:55:50 UTC (rev 10968) @@ -151,8 +151,8 @@ ## VTK-Points (mesh nodes) fprintf (fid, " <Points>\n"); fprintf (fid, " <DataArray type=""Float64"" Name=""Array"" NumberOfComponents=""3"" format=""appended"" offset=""%d"" />\n", offset); - newdata = __array_to_uint8__ (p); - data = [data, __array_to_uint8__(int32 (numel (newdata))), newdata]; + newdata = typecast (p, 'uint8')(:); + data = [data; typecast(int32 (numel (newdata)), 'uint8')(:); newdata]; offset = numel (data); fprintf (fid, " </Points>\n"); @@ -160,20 +160,20 @@ ## VTK-Cells (mesh elements) fprintf (fid, " <Cells>\n"); fprintf (fid, " <DataArray type=""Int32"" Name=""connectivity"" format=""appended"" offset=""%d"" />\n", offset); - newdata = __array_to_uint8__ (int32 (t)); - data = [data, __array_to_uint8__(int32 (numel (newdata))), newdata]; + newdata = typecast (int32 (t), 'uint8')(:); + data = [data; typecast(int32 (numel (newdata)), 'uint8')(:); newdata]; offset = numel (data); fprintf (fid, " <DataArray type=""Int32"" Name=""offsets"" format=""appended"" offset=""%d"" />\n", offset); tmp = (dim+1):(dim+1):((dim+1)*nelems); - newdata = __array_to_uint8__ (int32 (tmp)); - data = [data, __array_to_uint8__(int32 (numel (newdata))), newdata]; + newdata = typecast (int32 (tmp), 'uint8')(:); + data = [data; typecast(int32 (numel (newdata)), 'uint8')(:); newdata]; offset = numel (data); fprintf (fid, " <DataArray type=""UInt8"" Name=""types"" format=""appended"" offset=""%d"" />\n", offset); tmp = eltype*ones(nelems,1); - newdata = __array_to_uint8__ (uint8 (tmp)); - data = [data, __array_to_uint8__(int32 (numel (newdata))), newdata]; + newdata = typecast (uint8 (tmp), 'uint8')(:); + data = [data; typecast(int32 (numel (newdata)), 'uint8')(:); newdata]; offset = numel (data); fprintf (fid, " </Cells>\n"); @@ -199,8 +199,8 @@ endif fprintf (fid, " <DataArray type=""Float64"" Name=""%s"" ", ndataname); fprintf (fid, "NumberOfComponents=""%d"" format=""appended"" offset=""%d"" />\n", ncomp, offset); - newdata = __array_to_uint8__ (ndata.'); - data = [data, __array_to_uint8__(int32 (numel (newdata))), newdata]; + newdata = typecast (ndata.', 'uint8')(:); + data = [data; typecast(int32 (numel (newdata)), 'uint8')(:); newdata]; offset = numel (data); endfor fprintf (fid, " </PointData>\n"); @@ -226,8 +226,8 @@ endif fprintf (fid, " <DataArray type=""Float64"" Name=""%s"" ", cdataname); fprintf (fid, "NumberOfComponents=""%d"" format=""appended"" offset=""%d"" />\n", ncomp, offset); - newdata = __array_to_uint8__ (cdata.'); - data = [data, __array_to_uint8__(int32 (numel (newdata))), newdata]; + newdata = typecast (cdata.', 'uint8')(:); + data = [data; typecast(int32 (numel (newdata)), 'uint8')(:); newdata]; offset = numel (data); endfor fprintf (fid, " </CellData>\n"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |