Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

Error in "OpenFlower for Dummies"??

2006-02-14
2013-04-09
  • Hello all,

    I was very excited tonight to find a CFD code that seemed to be understandable and free. I went about installing it, and read the "O.F. for Dummies" guide... I then copied the codes exactly into their repective files, and (after fixing a syntax error for the "CFL" comment) ran Openflower. Observe:

    [jack@beast01 OpenFlower]$ ./OpenFlower_v1.0_bin_Linux flow.flw
    ########################################################
    #                OpenFlower  V1.0 Alpha Release        #
    #  Free Open Source CFD Software                       #
    #  Copyright (C) 2004-2005 by OpenFlower Team          #
    http://sourceforge.net/projects/openflower/         #
    #  Licensed under the GNU GPL Version 2.               #
    ########################################################
    System composed of 1 Equations: eqn1
    - Mesh file          : flow.msh
    Finished reading 3 frontiers.
           * Number of frontier faces: 4092
           * Number of elements      : 197052
    Finding all faces in domain completed....
    OpenFlower_v1.0_bin_Linux: Octree.cpp:281: void Octree::searchDoubleFaces(MyVector<int>&, const MyVector<Face>&, const std::vector<int, std::allocator<int> >&): Assertion `m<nb-j' failed.
    Aborted
    [jack@beast01 OpenFlower]$

    What's going on? I tryed it both on a windows machine and a Fedora 3 box.

    Thanks,

    -Jack Carrozzo
    jack [{At}] crepinc.com

     
    • I find this all the time try changing your mesh.. making it smaller or larger won't help, this is some kind of orientation error.

      Now the most common thing that makes this error come up is this: You made the geometry by your self on a text file. The line loops that form a surface have to be pointing in the correct direction (like vectors forming the perimeter. either pointing clockwise or counter clockwise.) The surfaces must all have their normals pointing outside of the box (this is a theory of mine) meaning that all surfaces must have their vector loops either clockwise or counter clockwise. 

      This is not really am Openflower error, its more of a gmsh error. GMSH is still young and sometimes you are forced to go outside of it.. you then need to keep all the loop deal in mind.

      I'll show you a correct .geo file in my next post.

       
    • I wrote the thing for dummies... these guys need a little help, so I work on it a few hours on weekends. I use UBUNTU 5.1   at work, i use Knoppix, it has  all you need (exept for openflower and gmsh wich I keep on a pen drive.

      geo file:

      Point(1) = {-1,.5,0,0.1};
      Point(2) = {0,0.5,0,0.1};
      Point(3) = {-1,0,0,0.1};
      Point(4) = {0,0,0,0.1};

      Point(5) = {-.2,0.15,0,0.1};
      Point(6) = {-.5,0.15,0,0.1};
      Point(7) = {-.2,.3,0,0.1};
      Point(8) = {-.5,.3,0,0.1};

      Point(9) = {-.4,0.2,0,0.1};
      Point(10) = {-.3,0.2,0,0.1};
      Point(11) = {-.4,.25,0,0.1};
      Point(12) = {-.3,.25,0,0.1};

      // large rectangle
      Line(1) = {1,2};
      Line(2) = {2,4};
      Line(3) = {4,3};
      Line(4) = {3,1};
      // medium rectangle
      Line(5) = {8,7};
      Line(6) = {7,5};
      Line(7) = {5,6};
      Line(8) = {6,8};
      // small rectangle
      Line(9) = {12,11};
      Line(10) = {11,9};
      Line(11) = {10,12};
      Line(12) = {9,10};

      Line Loop(9) = {2,3,4,1};
      Line Loop(10) = {5,6,7,8};
      Line Loop(13) = {9,10,12,11};
      Plane Surface(11) = {9,10};
      Plane Surface(12) = {10,13};
      Plane Surface(14) = {13};

      Extrude Surface {11, {0.0,0.0,.2}} { Recombine; Layers { {12}, {9000}, {1} }; };
      Extrude Surface {12, {0.0,0.0,.2}} { Recombine; Layers { {12}, {9000}, {1} }; };
      Extrude Surface {12, {0.0,0.0,-.3}} { Recombine; Layers { {12}, {9000}, {1} }; };
      Extrude Surface {14, {0.0,0.0,.2}} { Recombine; Layers { {12}, {9000}, {1} }; };
      //Extrude Surface {14, {0.0,0.0,-.2}} { Recombine; Layers { {12}, {9000}, {1} }; };
      //inlets
      Physical Surface(2198) = {140};
      //outlets
      Physical Surface(2199) = {35};
      //walls
      Physical Surface(2200) = {39,98,162,56,11,31,131,115,111,123,135,139,127,14,27,119};
      //volume
      Physical Volume(100) = {9000};

      here is the flw file:::

      TimeBegin 0.
      TimeEnd 1.0
      MaxTimeSteps 1000
      CFL 0.6

      Medium water
      {
      rho 1.
      mu 0.001
      }

      Algorithm AlgoNavierStokes { eqn1 }

      Mesh gmsh
      {
      file ext.msh
      frontiers
      {
      surface 2198 inlet
      surface 2199 outlet
      surface 2200 walls
      }
      }

      Equation navier_stokes_incompressible eqn1
      {
      Medium water

      // boundary conditions block
      boundary_condition wall walls 0. 0. 0
      boundary_condition velocity inlet 0 0 -2.0
      boundary_condition pressure_outlet outlet 0.0

      operator diffusion
      operator convection
      solver GMRES
      Initial_Condition Expr 0. 0. -2.0
      }

      // Post_Processing block
      post_processing
      {
      // probe eqn1.Velocity 0. 10. 10.0e-8 position 1. 0.5 -0.5
      // probe eqn1.Pressure 0. 10. 10.0e-8 position 1. 0.5 -0.5
      global gmsh eqn1.Velocity 0. 3.0 0.03
      global gmsh eqn1.Pressure 0. 3.0 0.03
      }

      end

      thats it.  I'm including something about this in the new version.  I'll also correct some typos that I found and some stuff that is just not so true.

      Check out how the box is created.. much better than locating the points your self, but then you never know what surface numbers you are going to get, so if you change the inlet's geometry (points lines get erased and new ones are made) your surface will change.  So you have to go to the .flw and change it there too. Use Gmsh to figure out the new surface name.

      OK. I promiss to work on the dummies manual some more today and submit it to Vortexflow so it can be posted here.

      Fonss