dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #19648
Re: xy format for solutions.
The xy format is just:
------------------------
x_0 u(x_0)
x_1 u(x_1)
...........
x_n u(x_n)
----------------------
while the xyz format is something like
-----------------------
x_0 y_0 u(x_0,y_0)
x_1 y_1 u(x_1,y_1)
.............
x_n y_n u(x_n,y_n)
-------------------------
where u is the solution.
When you say "merging the classes" do you mean to keep only the xyz format
and when the dimension is 1 output the solutions as in the xy format?
On Wednesday 08 September 2010 18:16:52 Garth N. Wells wrote:
> On 08/09/10 18:15, Anders Logg wrote:
> > Yes, why not. Could you send a sample output in the xy format?
.........................................
0.000000e+00 3.604320e-05
9.836066e-02 3.791263e-05
1.967213e-01 1.789361e-05
2.950820e-01 -7.128666e-06
3.934426e-01 -3.047573e-05
4.918033e-01 -4.010990e-05
5.901639e-01 -2.751590e-05
6.885246e-01 -6.833624e-06
7.868852e-01 2.042466e-05
8.852459e-01 4.019479e-05
9.836066e-01 5.532863e-05
........................................
>
> I would suggest merging the xy and xyx classes.
>
> Garth
>
> > --
> > Anders
> >
> > On Wed, Sep 08, 2010 at 06:11:22PM +0100, ndlopes@xxxxxxxxx wrote:
> >> Hi,
> >>
> >> Is it possible to consider a new output format for 1D problems?
> >> I'm using it for some time and now I've updated it to dolfin-0.9.9.
> >>
> >> The solutions file contain a list of x y coordinates.
> >> (analogous to the xyz format)
> >> It could be used directly with Xgraphic (wich is part of Xd3d),
> >> gnuplot or with simple python/matplotlib scripts for instance.
> >>
> >> Hope it works.
> >>
> >> Nuno Lopes
> >>
> >>
> >> # Bazaar merge directive format 2 (Bazaar 0.90)
> >> # revision_id: ndl@an9-20100908165948-xqvxgx0834mlrkpt
> >> # target_branch: bzr+ssh://bazaar.launchpad.net/~dolfin-\
> >> # core/dolfin/main/
> >> # testament_sha1: 1a4383b33310156a890260ef4c35ceba6d7930e8
> >> # timestamp: 2010-09-08 18:01:16 +0100
> >> # base_revision_id: johannr@xxxxxxxxx-20100908084437-u2bw3adyeepm4de3
> >> #
> >> # Begin patch
> >> === modified file 'dolfin/io/File.cpp'
> >> --- dolfin/io/File.cpp 2010-09-06 15:19:48 +0000
> >> +++ dolfin/io/File.cpp 2010-09-08 16:59:48 +0000
> >> @@ -9,19 +9,20 @@
> >>
> >> // Modified by Ola Skavhaug 2009.
> >> //
> >> // First added: 2002-11-12
> >>
> >> -// Last changed: 2010-09-06
> >> +// Last changed: 2010-09-08
> >>
> >> +#include<boost/filesystem.hpp>
> >>
> >> #include<fstream>
> >>
> >> -#include<boost/filesystem.hpp>
> >> +#include<dolfin/main/MPI.h>
> >> +#include<dolfin/log/dolfin_log.h>
> >>
> >> #include<dolfin/function/Function.h>
> >>
> >> -#include<dolfin/log/dolfin_log.h>
> >> -#include<dolfin/main/MPI.h>
> >>
> >> #include "File.h"
> >> #include "XMLFile.h"
> >> #include "PythonFile.h"
> >> #include "VTKFile.h"
> >> #include "RAWFile.h"
> >> #include "XYZFile.h"
> >>
> >> +#include "XYFile.h"
> >>
> >> #include "BinaryFile.h"
> >>
> >> using namespace dolfin;
> >>
> >> @@ -34,14 +35,11 @@
> >>
> >> const std::string extension = boost::filesystem::extension(path);
> >>
> >> // Create directory if we have a parent path
> >>
> >> - if (path.has_parent_path())
> >> + if ( path.has_parent_path() )
> >>
> >> {
> >>
> >> const boost::filesystem::path directory = path.parent_path();
> >>
> >> - if (!boost::filesystem::is_directory(directory))
> >> - {
> >> - cout<< "Creating directory \""<< directory.string()<< "\"."<<
> >> endl; - boost::filesystem::create_directories(directory);
> >> - }
> >> + cout<< "Creating directory \""<< directory.string()<< "\"."<<
> >> endl; + boost::filesystem::create_directories(directory);
> >>
> >> }
> >>
> >> // Choose format based on extension
> >>
> >> @@ -64,6 +62,8 @@
> >>
> >> file.reset(new RAWFile(filename));
> >>
> >> else if (extension == ".xyz")
> >>
> >> file.reset(new XYZFile(filename));
> >>
> >> + else if (extension == ".xy")
> >> + file.reset(new XYFile(filename));
> >>
> >> else if (extension == ".bin")
> >>
> >> file.reset(new BinaryFile(filename));
> >>
> >> else
> >>
> >> @@ -89,6 +89,9 @@
> >>
> >> case xyz:
> >> file.reset(new XYZFile(filename));
> >> break;
> >>
> >> + case xy:
> >> + file.reset(new XYFile(filename));
> >> + break;
> >>
> >> case binary:
> >> file.reset(new BinaryFile(filename));
> >> break;
> >>
> >> === modified file 'dolfin/io/File.h'
> >> --- dolfin/io/File.h 2010-08-26 21:44:34 +0000
> >> +++ dolfin/io/File.h 2010-09-08 16:59:48 +0000
> >> @@ -7,7 +7,7 @@
> >>
> >> // Modified by Ola Skavhaug 2009
> >> //
> >> // First added: 2002-11-12
> >>
> >> -// Last changed: 2010-02-10
> >> +// Last changed: 2010-09-08
> >>
> >> #ifndef __FILE_H
> >> #define __FILE_H
> >>
> >> @@ -33,7 +33,7 @@
> >>
> >> public:
> >> /// File formats
> >>
> >> - enum Type {xml, vtk, python, raw, xyz, binary};
> >> + enum Type {xml, vtk, python, raw, xyz, xy, binary};
> >>
> >> /// Create a file with given name
> >> File(const std::string filename, std::string encoding = "ascii");
> >>
> >> === added file 'dolfin/io/XYFile.cpp'
> >> --- dolfin/io/XYFile.cpp 1970-01-01 00:00:00 +0000
> >> +++ dolfin/io/XYFile.cpp 2010-09-08 16:59:48 +0000
> >> @@ -0,0 +1,143 @@
> >> +// Copyright (C) 2005-2007 Garth N.Wells.
> >> +// Licensed under the GNU LGPL Version 2.1.
> >> +//
> >> +// Modified by Nuno Lopes 2010.
> >> +//
> >> +// First added: 2010-09-08
> >> +
> >> +#include<sstream>
> >> +#include<fstream>
> >> +#include<dolfin/fem/FiniteElement.h>
> >> +#include<dolfin/mesh/Mesh.h>
> >> +#include<dolfin/mesh/MeshFunction.h>
> >> +#include<dolfin/mesh/Vertex.h>
> >> +#include<dolfin/mesh/Cell.h>
> >> +#include<dolfin/function/Function.h>
> >> +#include<dolfin/function/FunctionSpace.h>
> >> +#include<dolfin/la/Vector.h>
> >> +#include "XYFile.h"
> >> +
> >> +using namespace dolfin;
> >> +
> >> +//---------------------------------------------------------------------
> >> ------- +XYFile::XYFile(const std::string filename) :
> >> GenericFile(filename) +{
> >> + type = "XY";
> >> +}
> >> +//---------------------------------------------------------------------
> >> ------- +XYFile::~XYFile()
> >> +{
> >> + // Do nothing
> >> +}
> >> +//---------------------------------------------------------------------
> >> ------- +void XYFile::operator<<(const Function& u)
> >> +{
> >> + // Update xy file name and clear file
> >> + xy_name_update(counter);
> >> +
> >> + // Write results
> >> + results_write(u);
> >> +
> >> + // Increase the number of times we have saved the function
> >> + counter++;
> >> +
> >> + cout<< "Saved function "<< u.name()<< " ("<< u.label()
> >> +<< ") to file "<< filename<< " in xgraphic xy format."<< endl;
> >> +}
> >> +//---------------------------------------------------------------------
> >> ------- +void XYFile::results_write(const Function& u) const
> >> +{
> >> + // Open file
> >> + std::ofstream fp(xy_filename.c_str(), std::ios_base::app);
> >> + if (!fp)
> >> + error("Unable to open file %s", filename.c_str());
> >> +
> >> + const uint rank = u.function_space().element().value_rank();
> >> + if(rank> 1)
> >> + error("Only scalar functions can be saved in xy format.");
> >> +
> >> + // Get number of components
> >> + uint dim = 1;
> >> + for (uint i = 0; i< rank; i++)
> >> + dim *= u.function_space().element().value_dimension(i);
> >> +
> >> + const Mesh& mesh = u.function_space().mesh();
> >> +
> >> + // Allocate memory for function values at vertices
> >> + const uint size = mesh.num_vertices()*dim;
> >> + Array<double> values(size);
> >> +
> >> + // Get function values at vertices
> >> + u.compute_vertex_values(values,mesh);
> >> +
> >> + // Write function data at mesh vertices
> >> +
> >> + if ( dim> 1 )
> >> + error("Cannot handle XY file for non-scalar functions. ");
> >> +
> >> +
> >> +
> >> + std::ostringstream ss;
> >> + ss<< std::scientific;
> >> + for (VertexIterator vertex(mesh); !vertex.end(); ++vertex)
> >> + {
> >> + ss.str("");
> >> + ss<<vertex->x(0)<<""<< values[ vertex->index()];
> >> + ss<<std::endl;
> >> + fp<<ss.str( );
> >> + }
> >> +}
> >> +//---------------------------------------------------------------------
> >> ------- +void XYFile::xy_name_update(int counter)
> >> +{
> >> + std::string filestart, extension;
> >> + std::ostringstream fileid, newfilename;
> >> +
> >> + fileid.fill('0');
> >> + fileid.width(6);
> >> +
> >> + filestart.assign(filename, 0, filename.find("."));
> >> + extension.assign(filename, filename.find("."), filename.size());
> >> +
> >> + fileid<< counter;
> >> + newfilename<< filestart<< fileid.str()<< ".xy";
> >> +
> >> + xy_filename = newfilename.str();
> >> +
> >> + // Make sure file is empty
> >> + FILE* fp = fopen(xy_filename.c_str(), "w");
> >> + if (!fp)
> >> + error("Unable to open file %s", filename.c_str());
> >> + fclose(fp);
> >> +}
> >> +//---------------------------------------------------------------------
> >> ------- +template<class T>
> >> +void XYFile::mesh_function_write(T& meshfunction)
> >> +{
> >> + // Update xy file name and clear file
> >> + xy_name_update(counter);
> >> +
> >> + Mesh& mesh = meshfunction.mesh();
> >> +
> >> + if( meshfunction.dim() != mesh.topology().dim() )
> >> + error("XY output of mesh functions is implemenetd for cell-based
> >> functions only."); +
> >> + // Open file
> >> + std::ofstream fp(xy_filename.c_str(), std::ios_base::app);
> >> +
> >> + fp<<mesh.num_cells( )<<std::endl;
> >> + for (CellIterator cell(mesh); !cell.end(); ++cell)
> >> + fp<< meshfunction.get( cell->index() )<< std::endl;
> >> +
> >> + // Close file
> >> + fp.close();
> >> +
> >> + // Increase the number of times we have saved the mesh function
> >> + counter++;
> >> +
> >> + cout<< "saved mesh function "<< counter<< " times."<< endl;
> >> +
> >> + cout<< "Saved mesh function "<< mesh.name()<< " ("<< mesh.label()
> >> +<< ") to file "<< filename<< " in XY format."<< endl;
> >> +}
> >> +//---------------------------------------------------------------------
> >> -------
> >>
> >> === added file 'dolfin/io/XYFile.h'
> >> --- dolfin/io/XYFile.h 1970-01-01 00:00:00 +0000
> >> +++ dolfin/io/XYFile.h 2010-09-08 16:59:48 +0000
> >> @@ -0,0 +1,45 @@
> >> +// Copyright (C) 2005-2007 Garth N.Wells.
> >> +// Licensed under the GNU LGPL Version 2.1.
> >> +//
> >> +// Modified by Nuno Lopes 2010.
> >> +//
> >> +// First added: 2010-02-17
> >> +
> >> +#ifndef __XY_FILE_H
> >> +#define __XY_FILE_H
> >> +
> >> +#include<fstream>
> >> +#include "GenericFile.h"
> >> +
> >> +namespace dolfin
> >> +{
> >> +
> >> + class XYFile : public GenericFile
> >> + {
> >> + public:
> >> +
> >> + /// Simple and light file format for use with Xd3d. Supports
> >> + /// scalar solution on 2D convex domains. The files only have a
> >> + /// list of xy coordinates 'x , u(x)=y'
> >> +
> >> + XYFile(const std::string filename);
> >> + ~XYFile();
> >> +
> >> + void operator<< (const Function& u);
> >> +
> >> + private:
> >> +
> >> + void results_write(const Function& u) const;
> >> + void xy_name_update(const int counter);
> >> +
> >> + template<class T>
> >> + void mesh_function_write(T& meshfunction);
> >> +
> >> + // raw filename
> >> + std::string xy_filename;
> >> +
> >> + };
> >> +
> >> +}
> >> +
> >> +#endif
> >>
> >> # Begin bundle
> >> IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWfjaqNUABrtfgEwQe///
> >> /3/n
> >> z+6////7YA29r5WttCNnVx3NUAjV0tbtXbYUXaba0MrYbWOgHCSRJhA0U8ym0TZTTEGIIaM
> >> ammjN
> >> QBoBoyCUQExNAIJiano0o/VD1PRGmg0NAaAADQHMJoyNDQyGEaGQ00aADEZMgGEAwCQohqa
> >> aqH5J
> >> 6NAp41T1NpB+VHojJp6j1Gg00A9TRppocwmjI0NDIYRoZDTRoAMRkyAYQDAJEghMEaRkJk1
> >> N6k8n
> >> lDUyGpoeU8k009Q0yaaaGmlKpJNcxzZQjSPW0Hcw/7n3bKz8acvVG2b1+tqn8Sh/B2djl50
> >> oTzPq
> >> xY0ldJRM1+2GCkRwuijRiiKik9c6ms/cRZXkG2sYZUIx5sKXDoUK1MXdTgZha20XMJN94cc
> >> eJYTI
> >> OqrRba3WfPjHLdiSAqxKuIXWU87qTIpVzr0QXXRfC5sOlhTRfc9fahJFUJHEXxJB0NIl5tM
> >> eEZEa
> >> 905ncykIbYdfAKmxfmWT6pYwz0H5Zn6cwleH3nUNNoGzXt0/FE4cuWnGeTGI9eTGHOTHL0o
> >> 5Blpq
> >> MTibikjtwsm5y40L5UpKcTWsnGHXZBB1RtTe7/DRDKM/PTZIsohSZm5MKdz9M711PgzsGzI
> >> MDUcu
> >> u4PQMNydrQyNpE9bEW5p9IpdhD/DWE3zX11tFTyWEu6Q2/d0WQ15Pc1P4Y8rChDWEtXhTM5
> >> WZTCM
> >> 3S4zN5B+GFMRhZvep6mFxahBrX9FTSUJnFWWuTz1LB+1JMxkrnMG2PPbasQapnHmLB7mrvb
> >> 5xXG+
> >> GZkOgdTnRJhpa7VhttsGsUXbgPLuzPZZcGF293Y2+7LU3G6FEGpWFk4bZzGgx4yyQESY01j
> >> usaQl
> >> sBmtKDKEyms8IN/TfEp1FZa4OiVJY9WUE2TYdA71lBx+nw8J7+8ILm2uNvptvPOeAeG8Ipp
> >> Zq/HD
> >> ySMhsz5dRZYVPGlb3SypFBwxpwxtoTGfOCIND7zrC7bbXD5L5drRLaNH+12d2T3ULtjjzte
> >> 3RZDs
> >> 6zdnMxlVq8eyEaMZFpG2y6NC+MIM9VnEd869bRnC3UV5MnPOsnh6RrAbAmNHDGIqgLGLRzn
> >> tGZPP
> >> N3nO+Nm15ObD5ItjVto04Ysm98Vee5dIB4QW5cEpagrYcUzyvg8M13kS2CVnSmXeaGNZ74c
> >> DgYtB
> >> o0sBIAXcCiIzx2hns7Z9gDt3jR4KIzEywsbdgYaOcij7jhhs0onzuE+pX57lYhULkHDwsnP
> >> 77b99
> >> Hi9WE5S9oQXLnMo5p/TcU3HkSQfMHcMbGDBsZDB/ByShSC3PNQZPnlsTEZZhI+HWcLxQ0m0
> >> n6fTK
> >> Qh9ocAGSQhgcGkKEbDpyAgjFMwqqKMApygveVyoCVys1ZY0nIqUN5KzupbRAcoSV1GeYrVp
> >> voFgK
> >> iIN863nacfB0QLVA/C8CEcSJRWUbjdGks+8na8UirZRA7BSrJnmy3FLuQZAFxvlR3TvJTHv
> >> 3Z8cw
> >> LyUEZBumPNZrHkTvDbf4aZVQir2Jv3v92+JaKOEFE0I0+bcWXm+0w8Wqow3VtiuAEW0MsKp
> >> WyyvK
> >> 86i96ah4WFTuDMOYG2tYlBRzN3LrM4RRgIzkLI3sY9FkZE7LHdSbRtDHUmhqA9Wu9Vw3M0b
> >> J7AMO
> >> xgi58sHS0FR6N0S8aYbXvGXII4cVMx6NHISOidTiII5ZGVVH9ZQc3aMrYK9LzQxIFBQDNxh
> >> KJENg
> >> HQMNJkRbw49uQD6xex2cqj8zItM0kVAMrS0z5APIlmnk59VcVQywJDfFQhoxbxjEqIM2CuY
> >> PNKai
> >> g6tolSZBhOKji21izYTQTKAPUAgLwhqaCWKlo0kZw6nsvpAwMCpXlC4DYua4gtcZDSDpK8w
> >> SA1iO
> >> 7GkqAua+dLoJGwqxmkKsY85ps+UC6ZZv3+PIMizHRVXbVcWSY2NoZPFbcYlvcJuObdF8yql
> >> E4RKS
> >> KzE4scVRglQLYMhtRvtI645kw45r+6pzzCm856pqapr3qLi675VxiGHNj+wEulpNHxGLUxB
> >> bZLtL
> >> 6N6DEdfhCDxjbXliPQz72cFu802DOgWoGrvc0ePRtnZxPZgGePiLFWpYULD5qFERG0zMmZl
> >> 08hct
> >> OhT80z9mZjn+mztQ2WZGRixuE99wsMLmYbzYvT/Kqauyp2qqDFpjDuGfHnh/VShToe+MPMV
> >> IWY0G
> >> seEA3iV+x5AGJwNeHH+SRqdWz0FJEViEzYz0o7CDiHPCBzCs5xSQFF2ooHidsyxXWdaLheo
> >> 6HBvj
> >> x5o5jeN47JC0Y5DUlEWy70rVB067/ElOR8HEu32AVCjWlCDjtX+0KaFyKB54oeAzGs8z4AS
> >> ieBWU
> >> SvFLE3HlNEwRQ8UVEziSpcRbiFU9WwVR67PQHaBJulNJuGUeZC+Qhl7StPIcBzyBRUbSiHt
> >> PTip6
> >> PLzWqRPKAdEloCnMoBoZkEOaHBOlCPIkKDYWRXr8exjrwyizNASyPwECu8USAoggbnBmTAM
> >> a6mpC
> >> oUaSW1FyGQeiAhkkwe2QR5FTfe/gO+CBwPEMzJie5QSQ3MdULhEtQNuXcJlYZY7RiQG2pC1
> >> +2KzE
> >> w1hFRRbKD2Y+FoMbYgroQ6kQ/buiW8x1rv8AOZNQoEtOUvAp/LL1UJ7zu55Bax9v9Ck5TgZ
> >> HK4vq
> >> VHQeMrzHBSpVEDGogoFGBMTGgoyBhwA8p3ae7o5lLwLeFnhL6vX5tk9Bo1kjQICXIq6MiOL
> >> mFqUq
> >> hPp8QFRhkfpAVGK3Q5DiYtEs2Xq4tpsmtSDrqMhf2qmu9zjSPR0jeByt2u8OuCcu5DSRcer
> >> 5aDGe
> >> 1W3l0MZ2No7Oxc0hevRWc63ECb8rWh23K1HyF6GNFMlZC8pz6ymuak41kkvcNDaBtIqpAzQ
> >> 4ZmdE
> >> mjHYZIDkmOizbFPxocajVhyFOklB2MuGcl0lghRJy6NEoFkHWDRdo+Ekh0nzhcC8Pi46MbG
> >> RNUJA
> >> tu5cEJnVGXjsAK4QvqMIP+dhoWTA+hGRksyYYAWOgPf2BwgXFr9KLZU+jtwGCp1HfTRmQyM
> >> bUD4p
> >> RoOgKiIqsRjC9VorzzsM+CNpTF4XF56UlXKGhMfp01Yhs711kQOnjvgMGLbQNuyGCOTlmk0
> >> Qz6Jm
> >> XQcgi5HxYNoGgYNDEMTSQYJWR9uNgugbIC3YZICh2JeUhx8OWhZMMsOrL2BHHhf4Bei9MBs
> >> Y0mJt
> >> oJmwLzUfOlNbSx0cL7CVbNYXjGbbW72gIJqz3VJWQVVncGJWBwft5w2InMJAiMQ9PEwWa5G
> >> aRbEI
> >> OAwSvGKGFBonefZSaEu8Sg6lqnUXY//NZ6+fZ04e7Wa+cFatT1BRAZAW9CzVJhA7C5OUlMw
> >> s6AJK
> >> aQGyyxpqEtx/ngSODLw0gVxFp6g07fgC15W2RCxWOsoFBtNg6SgNUGHyjo0KiQ6oUiTaPUV
> >> RnNBB
> >> BA4Q45gWaA/M1JJUUiwaXKZBIDQ4oYZ81tTMsDnMFNBQZ5XAX+xwMlpDDkbVwYYigKCiC8B
> >> hGBeQ
> >> q/AoXXI1nO9iEHhp6gKUGT2DrKJiBPb8riA0CXy+eO9ZJamCxeTQj0W0JBUS85jM2vOXsW3
> >> zlVDK
> >> tRRDEb3IC8ji0YHMql5GZLZmCwLy8YMbB3++CW1Hsrgw80CcWcTtDUj3nAzQcCYU4KcsjWV
> >> GHisM
> >> Fl7AVsjeRqJfHwBSWLMBsZFI4QwGhpQUa6gHDhTS7/Pj4NcqYBCmK7HYSvKqoJQW+V5mG1O
> >> RaCW1
> >> hLKWw5kYsoKECdYF8s9SPFnS0mlQBjRmQSWbba6W0zpqPslDP1MoCbgmRVDuLrgnp62ux7r
> >> bdVx4
> >> nIavK1Qk1azQJIvP7BdoWmxttGPT49QbA4spgTUZr1/XJlJk7xYEiMGGg6hbYMR9nYbUtaq
> >> gvb3i
> >> qang60oDZsOBB/Qw1hk9AxR7x9kXwfOkpjCZaikxlsTURMoxk5I7gIkFWJbZNjBg2pxFtlD
> >> ThYrk
> >> tz9hdgBmB1wYz6XQWvfKKouotpTuFo0C9VA3UJs2pQWtt2EkkRdlEQoFlzakdbS8a/gBroa
> >> XIFWx
> >> mfkDxZBiKAPaDBjTaCp+CwA7Qr67SvXUM1lBiUV2UabkGCl9z4fbbJOnOHkSzDyBX3gpl/m
> >> dvzKp
> >> Ra4vR+c19bNGHEEyvAF7fp/XgCqCqjvxI9bL0wn79rcvRoeb0psfyQ2fltnJzZ9oEjpaDzp
> >> hd8e4 7xzt4+WTr4AMBmvMDMMyTRNPm/4u5IpwoSHxtVGq
> >>
> >> _______________________________________________
> >> Mailing list: https://launchpad.net/~dolfin
> >> Post to : dolfin@xxxxxxxxxxxxxxxxxxx
> >> Unsubscribe : https://launchpad.net/~dolfin
> >> More help : https://help.launchpad.net/ListHelp
> >
> > --
> > Anders
> >
> > _______________________________________________
> > Mailing list: https://launchpad.net/~dolfin
> > Post to : dolfin@xxxxxxxxxxxxxxxxxxx
> > Unsubscribe : https://launchpad.net/~dolfin
> > More help : https://help.launchpad.net/ListHelp
--
Nuno David Lopes
e-mail:ndl @ ptmat.fc.ul.pt (FCUL/CMAF)
nlopes @ dec.isel.ipl.pt (ISEL)
ndlopes @ gmail.com
http://ptmat.ptmat.fc.ul.pt/%7Endl/
Wed Sep 8 20:53:34 WEST 2010
Follow ups