dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #03439
Re: VTK and discontinuous elements
Fixed. Check that it works.
Minh, thanks for the patch.
/Anders
On Tue, Oct 10, 2006 at 05:21:32PM +0200, Dag Lindbo wrote:
> 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
> >
>
>
> _______________________________________________
> DOLFIN-dev mailing list
> DOLFIN-dev@xxxxxxxxxx
> http://www.fenics.org/mailman/listinfo/dolfin-dev
References