dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #03429
Re: VTK and discontinuous elements
Dag, can you confirm that this works for you as well?
If so, I will add it.
Thanks
/Anders
On Tue, Oct 10, 2006 at 11:37:23AM +0200, Minh Do Quang wrote:
> Hi,
>
> I did some changes in OpenDXFile.cpp in order to work with triangles.
> Let's see the attachment for both source code and the DX net file.
>
> Regards,
> / Minh
>
> Dag Lindbo wrote:
>
> >Hi all,
> >
> >Am I right to conclude that Paraview will fail to produce a sensible
> >visualization of a function on a discontinuous Lagrange element of order >
> >0? I guess this has to do with how the degrees of freedom are placed on
> >such an element. Anyway, it's not very important for me to do these
> >visualizations - but if someone has a neat way to do it I would be glad to
> >hear.
> >
> >By the way, is there a particular reason for only supporting tetrahedral
> >cells in the OpenDX output format? If not, I might get around to extending
> >to triangles (since I really like DX).
> >
> >Best regards,
> >Dag Lindbo
> >
> >_______________________________________________
> >DOLFIN-dev mailing list
> >DOLFIN-dev@xxxxxxxxxx
> >http://www.fenics.org/mailman/listinfo/dolfin-dev
> >
> >
>
>
> // Copyright (C) 2003-2006 Johan Hoffman and Anders Logg.
> // Licensed under the GNU GPL Version 2.
> //
> // Modified by Minh Do-Quang 2006
> //
> // First added: 2003-07-15
> // Last changed: 2006-09-15
>
> #include <stdio.h>
> #include <dolfin/ParameterSystem.h>
> #include <dolfin/Mesh.h>
> #include <dolfin/Function.h>
> #include <dolfin/dolfin_log.h>
> #include <dolfin/OpenDXFile.h>
>
> using namespace dolfin;
>
> //-?---------------------------------------------------------------------------
> OpenDXFile::OpenDXFile(const std::string filename) :
> GenericFile(filename),
> save_each_mesh(dolfin::get("save each mesh")),
> event_saving_mesh("Saving mesh to OpenDX file."),
> event_saving_function("Saving function to OpenDX file.")
> {
> type = "OpenDX";
> series_pos = 0;
> }
> //-?---------------------------------------------------------------------------
> OpenDXFile::~OpenDXFile()
> {
> // Do nothing
> }
> //-?---------------------------------------------------------------------------
> void OpenDXFile::operator<<(Mesh& mesh)
> {
> event_saving_mesh();
>
> // Open file
> FILE* fp = fopen(filename.c_str(), "r+");
> fseek(fp, 0L, SEEK_END);
>
> // Write header first time
> if ( ftell(fp) == 0 )
> writeHeader(fp);
>
> // Write mesh
> writeMesh(fp, mesh);
>
> // Write mesh data
> writeMeshData(fp, mesh);
>
> // Close file
> fclose(fp);
> }
> //-?---------------------------------------------------------------------------
> void OpenDXFile::operator<<(Function& u)
> {
> event_saving_function();
>
> // Open file
> FILE* fp = fopen(filename.c_str(), "r+");
> fseek(fp, 0L, SEEK_END);
>
> // Remove previous time series
> if ( frames.size() > 0 )
> removeSeries(fp);
>
> // Write header first time
> if ( ftell(fp) == 0 )
> writeHeader(fp);
>
> // Write mesh
> if ( frames.size() == 0 || save_each_mesh )
> writeMesh(fp, u.mesh());
>
> // Write function
> writeFunction(fp, u);
>
> // Write time series
> writeSeries(fp, u);
>
> // Close file
> fclose(fp);
> }
> //-?---------------------------------------------------------------------------
> void OpenDXFile::writeHeader(FILE* fp)
> {
> fprintf(fp,"# Output from DOLFIN version %s.\n", DOLFIN_VERSION);
> fprintf(fp,"# Format intended for use with OpenDX (Data Explorer).\n");
> fprintf(fp,"#\n");
> fprintf(fp,"\n");
> }
> //-?---------------------------------------------------------------------------
> void OpenDXFile::writeMesh(FILE* fp, Mesh& mesh)
> {
> int meshdim, celldim;
> if( mesh.type() == Mesh::tetrahedra ) {
> meshdim = 3;
> celldim = 4;
> } else {
> meshdim = 2;
> celldim = 3;
> }
>
> // Write vertices
> fprintf(fp, "# A list of all vertex positions\n");
> fprintf(fp, "object \"vertices %d\" class array type float rank 1 shape %d items %d lsb binary data follows\n",
> (int)frames.size(), meshdim, mesh.numVertices());
>
> for (VertexIterator n(mesh); !n.end(); ++n)
> {
> Point p = n->coord();
>
> float x = (float) p.x;
> float y = (float) p.y;
> float z = (float) p.z;
>
> fwrite(&x, sizeof(float), 1, fp);
> fwrite(&y, sizeof(float), 1, fp);
> if ( mesh.type() == Mesh::tetrahedra )
> fwrite(&z, sizeof(float), 1, fp);
> }
> fprintf(fp,"\n\n");
>
> // Write cells
> fprintf(fp, "# A list of all cells (connections)\n");
> fprintf(fp, "object \"cells %d\" class array type int rank 1 shape %d items %d lsb binary data follows\n",
> (int)frames.size(), celldim, mesh.numCells());
>
> for (CellIterator c(mesh); !c.end(); ++c)
> {
> for (VertexIterator n(c); !n.end(); ++n)
> {
> int id = n->id();
> fwrite(&id, sizeof(int), 1, fp);
> }
> }
> fprintf(fp, "\n");
> if ( mesh.type() == Mesh::tetrahedra )
> fprintf(fp, "attribute \"element type\" string \"tetrahedra\"\n");
> else if ( mesh.type() == Mesh::triangles )
> fprintf(fp, "attribute \"element type\" string \"triangles\"\n");
> fprintf(fp, "attribute \"ref\" string \"positions\"\n");
> fprintf(fp, "\n");
> }
> //-?---------------------------------------------------------------------------
> void OpenDXFile::writeMeshData(FILE* fp, Mesh& mesh)
> {
> // Write data for a given mesh to create an object that can be visualized
> // when no data is associated with the mesh. This is necessary when we only
> // want to save the mesh.
>
> // Check that we don't try to write mesh data at the same time as we
> // write a time series
> cout << "writeMeshData "<<frames.size()<<endl;
> if ( frames.size() > 0 )
> dolfin_error("Mesh data and time series cannot be mixed for OpenDX file format.");
>
> // Write data (cell diameter)
> fprintf(fp,"# Cell diameter\n");
> fprintf(fp,"object \"diameter\" class array type float rank 0 items %d lsb binary data follows\n",
> mesh.numCells());
>
> for (CellIterator c(mesh); !c.end(); ++c)
> {
> float value = static_cast<float>(c->diameter());
> fwrite(&value, sizeof(float), 1, fp);
> }
> fprintf(fp, "\n");
> fprintf(fp, "attribute \"dep\" string \"connections\"\n");
> fprintf(fp, "\n");
>
> // Write the mesh
> fprintf(fp, "# The mesh\n");
> fprintf(fp, "object \"Mesh\" class field\n");
> fprintf(fp, "component \"positions\" value \"vertices 0\"\n");
> fprintf(fp, "component \"connections\" value \"cells 0\"\n");
> fprintf(fp, "component \"data\" value \"diameter\"\n");
> }
> //-?---------------------------------------------------------------------------
> void OpenDXFile::writeFunction(FILE* fp, Function& u)
> {
> // Write header for object
> fprintf(fp,"# Values for [%s] at nodal points, frame %d\n", u.label().c_str(), (int)frames.size());
> fprintf(fp,"object \"data %d\" class array type float rank 1 shape %d items %d lsb binary data follows\n",
> (int)frames.size(), u.vectordim(), u.mesh().numVertices());
>
> // Write data
> for (VertexIterator n(u.mesh()); !n.end(); ++n)
> {
> for(unsigned int i=0; i<u.vectordim(); i++) {
> float value = static_cast<float>(u(*n, i));
> fwrite(&value, sizeof(float), 1, fp);
> }
> }
> fprintf(fp,"\n");
> fprintf(fp,"attribute \"dep\" string \"positions\"\n\n");
>
> // Write field
> fprintf(fp,"# Field for [%s], frame %d\n", u.label().c_str(), (int)frames.size());
> fprintf(fp,"object \"field %d\" class field\n", (int)frames.size());
> if ( save_each_mesh )
> fprintf(fp,"component \"positions\" value \"vertices %d\"\n", (int)frames.size());
> else
> fprintf(fp,"component \"positions\" value \"vertices 0\"\n");
> if ( save_each_mesh )
> fprintf(fp,"component \"connections\" value \"cells %d\"\n", (int)frames.size());
> else
> fprintf(fp,"component \"connections\" value \"cells 0\"\n");
> fprintf(fp,"component \"data\" value \"data %d\"\n\n", (int)frames.size());
>
> // Add the new frame
> Frame frame(u.time());
> frames.push_back(frame);
> }
> //-?---------------------------------------------------------------------------
> void OpenDXFile::writeSeries(FILE* fp, Function& u)
> {
> // Get position in file at start of series
> series_pos = ftell(fp);
>
> // Write the time series
> fprintf(fp,"# Time series for [%s]\n", u.label().c_str());
> fprintf(fp,"object \"Time series\" class series\n");
>
> for (unsigned int i = 0; i < frames.size(); i++)
> {
> fprintf(fp,"member %u value \"field %u\" position %f\n",
> i, i, frames[i].time);
> }
>
> fprintf(fp,"\n");
> }
> //-?---------------------------------------------------------------------------
> void OpenDXFile::removeSeries(FILE* fp)
> {
> // Remove the previous series (the new one will be placed at the end).
> // This makes sure that we have a valid dx-file even if we kill the
> // program after a few frames. Note that if someone puts a "#"
> // inside a comment we are in trouble.
>
> fseek(fp, series_pos, SEEK_SET);
> fflush(fp);
> }
> //-?---------------------------------------------------------------------------
> // OpenDXFile::Frame
> //-?---------------------------------------------------------------------------
> OpenDXFile::Frame::Frame(real time) : time(time)
> {
> // Do nothing
> }
> //-?---------------------------------------------------------------------------
> OpenDXFile::Frame::~Frame()
> {
> // Do nothing
> }
>
> //
> // time: Fri Sep 15 17:50:13 2006
> //
> // version: 3.2.0 (format), 4.4.0 (DX)
> //
> //
> // MODULE main
> // workspace: width = 389, height = 294
> // layout: snap = 0, width = 50, height = 50, align = NN
> //
> macro main(
> ) -> (
> ) {
> //
> // node Import[1]: x = 24, y = 23, inputs = 6, label = Import
> // input[1]: defaulting = 0, visible = 1, type = 32, value = "poisson.dx"
> // input[2]: defaulting = 0, visible = 1, type = 32, value = "field 0"
> //
> main_Import_1_out_1 =
> Import(
> main_Import_1_in_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 AutoColor[1]: x = 174, y = 232, inputs = 10, label = AutoColor
> //
> main_AutoColor_1_out_1,
> main_AutoColor_1_out_2 =
> AutoColor(
> main_Import_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 Image[1]: x = 311, y = 218, inputs = 49, label = Image
> // input[1]: defaulting = 0, visible = 0, type = 32, value = "Image_1"
> // input[4]: defaulting = 0, visible = 0, type = 1, value = 1
> // input[5]: defaulting = 0, visible = 0, type = 8, value = [0.5 0.5 0]
> // input[6]: defaulting = 0, visible = 0, type = 8, value = [0.5 0.5 3.55379]
> // input[7]: defaulting = 0, visible = 0, type = 5, value = 1.90447
> // input[8]: defaulting = 0, visible = 0, type = 1, value = 640
> // input[9]: defaulting = 0, visible = 0, type = 5, value = 0.75
> // input[10]: defaulting = 0, visible = 0, type = 8, value = [0 1 0]
> // input[11]: defaulting = 1, visible = 0, type = 5, value = 30.0
> // 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[29]: defaulting = 1, visible = 0, type = 3, value = 0
> // depth: value = 24
> // window: position = (0.5419,0.4650), size = 0.4088x0.4350
> // internal caching: 1
> // interaction mode = NONE
> //
> main_Image_1_out_1,
> main_Image_1_out_2,
> main_Image_1_out_3 =
> Image(
> main_Image_1_in_1,
> main_AutoColor_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];
> //
> // node Print[1]: x = 33, y = 119, inputs = 3, label = Print
> // input[2]: defaulting = 0, visible = 1, type = 32, value = "o"
> //
> Print(
> main_Import_1_out_1,
> main_Print_1_in_2,
> main_Print_1_in_3
> ) [instance: 1, cache: 1];
> //
> // node Select[1]: x = 154, y = 106, inputs = 3, label = Select
> // input[2]: defaulting = 0, visible = 1, type = 32, value = "field 0"
> //
> main_Select_1_out_1 =
> Select(
> main_Import_1_out_1,
> main_Select_1_in_2,
> main_Select_1_in_3
> ) [instance: 1, cache: 1];
> //
> // node ShowConnections[1]: x = 256, y = 79, inputs = 1, label = ShowConnections
> //
> main_ShowConnections_1_out_1 =
> ShowConnections(
> main_Import_1_out_1
> ) [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_Import_1_in_1 = "poisson.dx";
> main_Import_1_in_2 = "field 0";
> 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_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;
> 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.5 0.5 0];
> main_Image_1_in_6 = [0.5 0.5 3.55379];
> main_Image_1_in_7 = 1.90447;
> main_Image_1_in_8 = 640;
> main_Image_1_in_9 = 0.75;
> 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 = NULL;
> main_Image_1_in_23 = NULL;
> main_Image_1_in_25 = NULL;
> main_Image_1_in_26 = NULL;
> main_Image_1_in_27 = NULL;
> main_Image_1_in_28 = NULL;
> main_Image_1_in_29 = NULL;
> main_Image_1_in_30 = NULL;
> main_Image_1_in_31 = NULL;
> main_Image_1_in_32 = NULL;
> main_Image_1_in_33 = NULL;
> main_Image_1_in_34 = NULL;
> main_Image_1_in_35 = NULL;
> main_Image_1_in_36 = NULL;
> main_Image_1_in_37 = NULL;
> main_Image_1_in_38 = NULL;
> main_Image_1_in_39 = NULL;
> main_Image_1_in_40 = NULL;
> main_Image_1_in_41 = NULL;
> 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;
> main_Print_1_in_2 = "o";
> main_Print_1_in_3 = NULL;
> main_Select_1_in_2 = "field 0";
> main_Select_1_in_3 = NULL;
> Executive("product version 4 4 0");
> $sync
> main();
>
> _______________________________________________
> DOLFIN-dev mailing list
> DOLFIN-dev@xxxxxxxxxx
> http://www.fenics.org/mailman/listinfo/dolfin-dev
Follow ups
References