dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #03430
Re: VTK and discontinuous elements
It works fine! (I have not tried with tetrahedral elements) //Dag
> 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
>
> _______________________________________________
> DOLFIN-dev mailing list
> DOLFIN-dev@xxxxxxxxxx
> http://www.fenics.org/mailman/listinfo/dolfin-dev
>
Follow ups
References