rbmatlab 0.10.01
Public Member Functions
rectgrid Class Reference

Detailed Description

A cartesian rectangular grid in two dimensions with axis parallel elements.

General geometrical information is stored including neighbour information. Therefore also boundary neighbour relations can be specified. The boundary type is set to be symmetric by default. Additionally, "rectangles" can be defined: the edges with midpoints within such a rectangle are marked accordingly. By this, boundary edges can be marked for later special use Much (partially redundant) information is stored in the grid, which might be useful in simulations.

Definition at line 1 of file rectgrid.m.

Inheritance diagram for rectgrid:
Inheritance graph
[legend]
Collaboration diagram for rectgrid:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 rectgrid ( varargin)
 constructor of a cartesian rectangular grid in 2 dimensions with axis parallel elements.
function  demo ()
 small script demonstrating the possibilities of the rectgrid class.
function p plot ( params)
 plot of a rectgrid via plot_polygon_grid()
function res isequal ( grid2)
 function comparing two grids field by field
function gridbase grid set_nbi ( nbind, values)
 function setting some neighbour indices of a grid to specified values.
function gcopy copy ()
 

returns a deep copy object of the grid implementation


function glob local2global ( einds, loc, params)
 function performing a local to global coordinate change of vectors of coordinate pairs.

Constructor & Destructor Documentation

rectgrid.rectgrid (   varargin)

constructor of a cartesian rectangular grid in 2 dimensions with axis parallel elements.

The constructor has sthe following

Synopsis
  • rectgrid() : construction of a default rectgrid (2d unit square, 2x2 elements with -1 as outer neighbour indices)
  • rectgrid(rgrid) : copy-constructor
  • rectgrid(params) : generate rectgrid with certain options. In this case either
    1. the field grid_initfile is existent in params. Then the file is read and a pointlist p and a triangle. Procedure is then executing the following constructor
    2. a structured equidistant triangle grid is generated
      • params.xnumintervals : number of elements along x directions
      • params.ynumintervals : number of elements along y directions
      • params.xrange,yrange : intervals covered along the axes
      with the optional fields
      • params.bnd_rect_corner1 : coordinates of lower corner of to be marked boundaries
      • params.bnd_rect_corner2 : coordinates of upper corner of to be marked boundaries
      • params.bnd_rect_index: integer index to be set on the edges in the above defined rectangle. Should not be positive integer in the range of the number of elements. use negative indices for certain later discrimination.
      For the last three optional boundary settings, also multiple rectangles can be straightforwardly defined by accepting matrix of columnwise corners1, corners2 and a vector of indices for the different rectangles.

perhaps later: constructor by duneDGF-file? perhaps later: contructor-flag: full vs non-full => only compute redundant information if required.

Note:
for diffusion-discretization with FV-schemes, points $S_i$ must exist, such that $S_i S_j$ is perpendicular to edge i j, the intersection points are denoted $S_{ij}$

Bernard Haasdonk 9.5.2007

Parameters:
vararginvariable number of input arguments, see above for description of possible configurations.
Generated fields of grid:
  • nelements —  number of elements
  • nvertices —  number of vertices
  • nneigh —  4
  • A — 

    vector of element area

  • Ainv —  vector of inverted element area
  • X —  vector of vertex x-coordinates
  • Y —  vector of vertex y-coordinates
  • VI —  matrix of vertex indices: VI(i,j) is the global index of j-th vertex of element i
  • CX —  vector of centroid x-values
  • CY —  vector of centroid y-values
  • NBI —  NBI(i,j) = element index of j-th neighbour of element i boundary faces are set to -1 or negative values are requested by params.boundary_type
  • INB —  INB(i,j) = local edge number in NBI(i,j) leading from element NBI(i,j) to element i, i.e. satisfying NBI(NBI(i,j), INB(i,j)) = i
  • EL —  EL(i,j) = length of edge from element i to neighbour j
  • DC —  DC(i,j) = distance from centroid of element i to NB j for boundary elements, this is the distance to the reflected element (for use in boundary treatment)
  • NX —  NX(i,j) = x-coordinate of unit outer normal of edge from el i to NB j
  • NY —  NY(i,j) = y-coordinate of unit outer normal of edge from el i to NB j
  • ECX —  ECX(i,j) = x-coordinate of midpoint of edge from el i to NB j
  • ECY —  ECY(i,j) = y-coordinate of midpoint of edge from el i to NB j
  • SX —  vector of x-coordinates of point $S_i$ (for rect: identical to centroids)
  • SY —  vector of y-coordinate of point $S_j$ (for rect: identical to centroids)
  • ESX —  ESX(i,j) = x-coordinate of point $S_{ij}$ on edge el i to NB j
  • ESY —  ESY(i,j) = y-coordinate of point $S_{ij}$ on edge el i to NB j
  • DS —  DS(i,j) = distance from $S_i$ of element i to $S_j$ of NB j for boundary elements, this is the distance to the reflected element (for use in boundary treatment)
  • hmin —  minimal element-diameter
  • alpha —  geometry bound (simultaneously satisfying $\alpha \cdot h_i^d \leq A(T_i)$, $\alpha \cdot \mbox{diam}(T_i) \leq h_i^{d-1}$ and $\alpha \cdot h_i \leq $dist(midpoint $i$ to any neigbour) )

Definition at line 25 of file rectgrid.m.


Member Function Documentation

function gcopy = rectgrid.copy ( ) [virtual]

returns a deep copy object of the grid implementation

returns a deep copy object of the grid implementation

Every grid implementations needs to provide a deep copy method, because it is derived from a handle class.

Return values:
gcopyDeep copy
Return values:
gcopygcopy

Implements gridbase.

Definition at line 543 of file rectgrid.m.

function res = rectgrid.isequal (   grid2)

function comparing two grids field by field

Parameters:
grid2the grid we want to compare with
Return values:
resboolean indicating whether the two grids are equal

Definition at line 2 of file isequal.m.

function glob = rectgrid.local2global (   einds,
  loc,
  params 
)

function performing a local to global coordinate change of vectors of coordinate pairs.

If the first three vertices of a rectangle are v1,v2,v3, then the global coordinate of a single point is

 glob = v1 + loc(:,1).*(v2-v1) + loc(:,2).*(v3-v1); 
Parameters:
eindsvector of cell indices $i_k$, $k=1,...,K$.
locmatrix of size $K \times 2$ holding local barycentric coordinate pairs for each cell index $i_k$, $k=1,...,K$.
paramsparams
Return values:
globglobal coordinate pairs [X, Y] with vectors X and Y of length $K$.

Definition at line 2 of file local2global.m.

function p = rectgrid.plot (   params)

plot of a rectgrid via plot_polygon_grid()

see help plot_polygon_grid for further information

plot method for a 2D polygonal grid. This routine can be used for triangular and rectangular grids.

A line plot is performed as default.

Todo:
For large grids, the routine can be slow. In these cases interestingly, the grid plotting should be implemented with patches, as that seems to be faster...
Parameters:
paramsoptional structure holding fields controlling the plot output.
Return values:
pThis is the list of handles to the graphics primitives
Required fields of params:
  • axis_tight —  axis tight
Optional fields of params:
  • color —  RGB vector of line/patch color
  • shrink_factor —  if this flag is given, the elements are plotted shrinked
  • plot_patch —  if this flag is set the plot is done by colored patches
  • axis_equal —  if this flag is set, set axis to equal scale
Parameters:
paramsparams
Return values:
pp

Definition at line 2 of file plot.m.

function gridbase grid = rectgrid.set_nbi (   nbind,
  values 
)

function setting some neighbour indices of a grid to specified values.

Parameters:
nbindneighbour indices
valuesnew neighbour indices. This can be a single scalar or a vector of the same length as nbind.
Return values:
gridgrid

Definition at line 2 of file set_nbi.m.


The documentation for this class was generated from the following files:
All Classes Namespaces Files Functions Variables