Skip to content
Snippets Groups Projects
Select Git revision
  • 3ad45993659948f09c41d395e6750ca8fc58d075
  • master default
  • cgnsUnstructured
  • partitioning
  • poppler
  • HighOrderBLCurving
  • gmsh_3_0_4
  • gmsh_3_0_3
  • gmsh_3_0_2
  • gmsh_3_0_1
  • gmsh_3_0_0
  • gmsh_2_16_0
  • gmsh_2_15_0
  • gmsh_2_14_1
  • gmsh_2_14_0
  • gmsh_2_13_2
  • gmsh_2_13_1
  • gmsh_2_12_0
  • gmsh_2_11_0
  • gmsh_2_10_1
  • gmsh_2_10_0
  • gmsh_2_9_3
  • gmsh_2_9_2
  • gmsh_2_9_1
  • gmsh_2_9_0
  • gmsh_2_8_6
26 results

PViewDataList.cpp

Blame
  • Forked from gmsh / gmsh
    Source project has a limited visibility.
    t3.geo 4.48 KiB
    // -----------------------------------------------------------------------------
    //
    //  Gmsh GEO tutorial 3
    //
    //  Extruded meshes, ONELAB parameters, options
    //
    // -----------------------------------------------------------------------------
    
    // Again, we start by including the first tutorial:
    
    Include "t1.geo";
    
    // As in `t2.geo', we plan to perform an extrusion along the z axis.  But here,
    // instead of only extruding the geometry, we also want to extrude the 2D
    // mesh. This is done with the same `Extrude' command, but by specifying element
    // 'Layers' (2 layers in this case, the first one with 8 subdivisions and the
    // second one with 2 subdivisions, both with a height of h/2):
    
    h = 0.1;
    
    Extrude {0,0,h} {
      Surface{1}; Layers{ {8,2}, {0.5,1} };
    }
    
    // The extrusion can also be performed with a rotation instead of a translation,
    // and the resulting mesh can be recombined into prisms (we use only one layer
    // here, with 7 subdivisions). All rotations are specified by an axis direction
    // ({0,1,0}), an axis point ({-0.1,0,0.1}) and a rotation angle (-Pi/2):
    
    Extrude { {0,1,0} , {-0.1,0,0.1} , -Pi/2 } {
      Surface{28}; Layers{7}; Recombine;
    }
    
    // Using the built-in geometry kernel, only rotations with angles < Pi are
    // supported. To do a full turn, you will thus need to apply at least 3
    // rotations. The OpenCASCADE geometry kernel does not have this limitation.
    
    // Note that a translation ({-2*h,0,0}) and a rotation ({1,0,0}, {0,0.15,0.25},
    // Pi/2) can also be combined to form a "twist". Here the angle is specified as
    // a ONELAB parameter, using the `DefineConstant' syntax. ONELAB parameters can
    // be modified interactively in the GUI, and can be exchanged with other codes
    // connected to the same ONELAB database:
    
    DefineConstant[ angle = {90, Min 0, Max 120, Step 1,
                             Name "Parameters/Twisting angle"} ];
    
    // In more details, `DefineConstant' allows you to assign the value of the
    // ONELAB parameter "Parameters/Twisting angle" to the variable `angle'. If the
    // ONELAB parameter does not exist in the database, `DefineConstant' will create
    // it and assign the default value `90'. Moreover, if the variable `angle' was
    // defined before the call to `DefineConstant', the `DefineConstant' call would
    // simply be skipped. This allows to build generic parametric models, whose
    // parameters can be frozen from the outside - the parameters ceasing to be
    // "parameters".
    //
    // An interesting use of this feature is in conjunction with the `-setnumber
    // name value' command line switch, which defines a variable `name' with value
    // `value'. Calling `gmsh t2.geo -setnumber angle 30' would define `angle'
    // before the `DefineConstant', making `t2.geo' non-parametric
    // ("Parameters/Twisting angle" will not be created in the ONELAB database and
    // will not be available for modification in the graphical user interface).
    
    out[] = Extrude { {-2*h,0,0}, {1,0,0} , {0,0.15,0.25} , angle * Pi / 180 } {
      Surface{50}; Layers{10}; Recombine;
    };
    
    // In this last extrusion command we retrieved the volume number
    // programmatically by using the return value (a list) of the `Extrude'
    // command. This list contains the "top" of the extruded surface (in `out[0]'),
    // the newly created volume (in `out[1]') and the tags of the lateral surfaces
    // (in `out[2]', `out[3]', ...).
    
    // We can then define a new physical volume (with tag 101) to group all the
    // elementary volumes:
    
    Physical Volume(101) = {1, 2, out[1]};
    
    // Let us now change some options... Since all interactive options are
    // accessible in Gmsh's scripting language, we can for example make point tags
    // visible or redefine some colors directly in the input file:
    
    Geometry.PointNumbers = 1;
    Geometry.Color.Points = Orange;
    General.Color.Text = White;
    Mesh.Color.Points = {255, 0, 0};
    
    // Note that all colors can be defined literally or numerically, i.e.
    // `Mesh.Color.Points = Red' is equivalent to `Mesh.Color.Points = {255,0,0}';
    // and also note that, as with user-defined variables, the options can be used
    // either as right or left hand sides, so that the following command will set
    // the surface color to the same color as the points:
    
    Geometry.Color.Surfaces = Geometry.Color.Points;
    
    // You can use the `Help->Current Options and Workspace' menu to see the current
    // values of all options. To save all the options in a file, use
    // `File->Export->Gmsh Options'. To associate the current options with the
    // current file use `File->Save Model Options'. To save the current options for
    // all future Gmsh sessions use `File->Save Options As Default'.