Streamer fluid modeling - An overview of ARCoS  1.0
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Classes | Macros | Typedefs
grid.h File Reference

Definitions for working with general grids. More...

#include "tree.h"
Include dependency graph for grid.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  grid_t
 

Macros

#define RECT_COORDS   int r0, r1, z0, z1, ntheta
 
#define BND_AT_R   0
 
#define BND_AT_Z   2
 
#define BND_MIN   0
 
#define BND_MAX   1
 
#define BND_LEFT   (BND_AT_R | BND_MIN)
 
#define BND_RIGHT   (BND_AT_R | BND_MAX)
 
#define BND_BOTTOM   (BND_AT_Z | BND_MIN)
 
#define BND_TOP   (BND_AT_Z | BND_MAX)
 
#define BND_MASK(B_)   (1 << (B_))
 
#define BND_NONE   0
 
#define BND_MASK_LEFT   BND_MASK(BND_LEFT)
 
#define BND_MASK_RIGHT   BND_MASK(BND_RIGHT)
 
#define BND_MASK_BOTTOM   BND_MASK(BND_BOTTOM)
 
#define BND_MASK_TOP   BND_MASK(BND_TOP)
 
#define BND_MASK_ALL
 
#define GRID_INSIDE   (1 << (BND_TOP + 1))
 
#define r_at(r_, level_)   (((double) (r_) + 0.5) * dr[level_])
 
#define z_at(z_, level_)   (((double) (z_) + 0.5) * dz[level_])
 
#define theta_at(theta_)   ((double) (theta_) * dtheta)
 
#define er_r_at(i_, level_)   ((i_ + 1) * dr[level_])
 
#define er_z_at(j_, level_)   (((double) (j_) + 0.5) * dz[level_])
 
#define ez_r_at(i_, level_)   (((double) (i_) + 0.5) * dr[level_])
 
#define ez_z_at(j_, level_)   ((j_ + 1) * dz[level_])
 
#define etheta_theta_at(i_)   (((double) (i_) + 0.5) * dtheta)
 
#define cyl_q(X_)   (X_)
 
#define cyl_er_r_at(i_, level_)   er_r_at(i_, level_)
 
#define cyl_r_at(r_, level_)   r_at(r_, level_)
 
#define iter_grid_z(grid_, iz_)   for(iz_ = grid_->z0; iz_ < grid_->z1; iz_++)
 
#define iter_grid_r(grid_, ir_)   for(ir_ = grid_->r0; ir_ < grid_->r1; ir_++)
 
#define iter_grid_theta(grid_, it_)   for(it_ = 0; it_ < grid_->ntheta; it_++)
 
#define iter_grid(grid_, ir_, iz_)
 
#define iter_grid_3d(grid_, ir_, iz_, it_)
 
#define iter_grid_z_1(grid_, iz_)   for(iz_ = grid_->z0 - 1; iz_ < grid_->z1 + 1; iz_++)
 
#define iter_grid_r_1(grid_, ir_)   for(ir_ = grid_->r0 - 1; ir_ < grid_->r1 + 1; ir_++)
 
#define iter_grid_1(grid_, ir_, iz_)
 
#define iter_grid_3d_1(grid_, ir_, iz_, it_)
 
#define iter_grid_theta_n(grid_, it_, n_)
 
#define iter_grid_z_n(grid_, iz_, n_)   for(iz_ = grid_->z0 - n_; iz_ < grid_->z1 + n_; iz_++)
 
#define iter_grid_r_n(grid_, ir_, n_)   for(ir_ = grid_->r0 - n_; ir_ < grid_->r1 + n_; ir_++)
 
#define iter_grid_n(grid_, ir_, iz_, n_)
 
#define iter_grid_3d_n(grid_, ir_, iz_, it_, n_)
 
#define iter_grid_parent(grid_, ir_, iz_)
 
#define grid_printf_str   "{r0 = %d, z0 = %d, r1 = %d, z1 = %d, level = %d}"
 To ease typing, you can write e.g. printf ("Solving grid (" grid_printf_str ")\n", grid_printf_args(grid));.
 
#define grid_printf_args(G_)
 
#define _GRID_H_
 

Typedefs

typedef struct grid_t grid_t
 The cdr grids and poisson grids types are cdr_grid_t and pois_grid_t, defined in cdr.h and poisson.h.
 

Detailed Description

Definitions for working with general grids.

Definition in file grid.h.

Macro Definition Documentation

#define RECT_COORDS   int r0, r1, z0, z1, ntheta

Coordinate names for the grids

Definition at line 10 of file grid.h.

#define BND_AT_R   0

Definition at line 13 of file grid.h.

#define BND_AT_Z   2

Definition at line 14 of file grid.h.

#define BND_MIN   0

Definition at line 15 of file grid.h.

#define BND_MAX   1

Definition at line 16 of file grid.h.

#define BND_LEFT   (BND_AT_R | BND_MIN)

Definition at line 18 of file grid.h.

#define BND_RIGHT   (BND_AT_R | BND_MAX)

Definition at line 19 of file grid.h.

#define BND_BOTTOM   (BND_AT_Z | BND_MIN)

Definition at line 20 of file grid.h.

#define BND_TOP   (BND_AT_Z | BND_MAX)

Definition at line 21 of file grid.h.

#define BND_MASK (   B_)    (1 << (B_))

Definition at line 23 of file grid.h.

#define BND_NONE   0

Definition at line 24 of file grid.h.

#define BND_MASK_LEFT   BND_MASK(BND_LEFT)

Definition at line 25 of file grid.h.

#define BND_MASK_RIGHT   BND_MASK(BND_RIGHT)

Definition at line 26 of file grid.h.

#define BND_MASK_BOTTOM   BND_MASK(BND_BOTTOM)

Definition at line 27 of file grid.h.

#define BND_MASK_TOP   BND_MASK(BND_TOP)

Definition at line 28 of file grid.h.

#define BND_MASK_ALL
Value:

Definition at line 29 of file grid.h.

#define GRID_INSIDE   (1 << (BND_TOP + 1))

Definition at line 32 of file grid.h.

#define r_at (   r_,
  level_ 
)    (((double) (r_) + 0.5) * dr[level_])

Definition at line 35 of file grid.h.

#define z_at (   z_,
  level_ 
)    (((double) (z_) + 0.5) * dz[level_])

Definition at line 36 of file grid.h.

#define theta_at (   theta_)    ((double) (theta_) * dtheta)

Definition at line 37 of file grid.h.

#define er_r_at (   i_,
  level_ 
)    ((i_ + 1) * dr[level_])

Definition at line 40 of file grid.h.

#define er_z_at (   j_,
  level_ 
)    (((double) (j_) + 0.5) * dz[level_])

Definition at line 41 of file grid.h.

#define ez_r_at (   i_,
  level_ 
)    (((double) (i_) + 0.5) * dr[level_])

Definition at line 42 of file grid.h.

#define ez_z_at (   j_,
  level_ 
)    ((j_ + 1) * dz[level_])

Definition at line 43 of file grid.h.

#define etheta_theta_at (   i_)    (((double) (i_) + 0.5) * dtheta)

Definition at line 44 of file grid.h.

#define cyl_q (   X_)    (X_)

We can produce easily a true 2d code by replacing r when it appears due to the cylindrical coordinates by this macros. This has a rather large performance penalty, so it is better to do that in compile time

Definition at line 58 of file grid.h.

#define cyl_er_r_at (   i_,
  level_ 
)    er_r_at(i_, level_)

Definition at line 59 of file grid.h.

#define cyl_r_at (   r_,
  level_ 
)    r_at(r_, level_)

Definition at line 60 of file grid.h.

#define iter_grid_z (   grid_,
  iz_ 
)    for(iz_ = grid_->z0; iz_ < grid_->z1; iz_++)

Definition at line 67 of file grid.h.

#define iter_grid_r (   grid_,
  ir_ 
)    for(ir_ = grid_->r0; ir_ < grid_->r1; ir_++)

Definition at line 70 of file grid.h.

#define iter_grid_theta (   grid_,
  it_ 
)    for(it_ = 0; it_ < grid_->ntheta; it_++)

Definition at line 73 of file grid.h.

#define iter_grid (   grid_,
  ir_,
  iz_ 
)
Value:
iter_grid_z(grid_, iz_) \
iter_grid_r(grid_, ir_)

Definition at line 76 of file grid.h.

#define iter_grid_3d (   grid_,
  ir_,
  iz_,
  it_ 
)
Value:
iter_grid_theta(grid_, it_) \
iter_grid_z(grid_, iz_) \
iter_grid_r(grid_, ir_)

Definition at line 80 of file grid.h.

#define iter_grid_z_1 (   grid_,
  iz_ 
)    for(iz_ = grid_->z0 - 1; iz_ < grid_->z1 + 1; iz_++)

Definition at line 87 of file grid.h.

#define iter_grid_r_1 (   grid_,
  ir_ 
)    for(ir_ = grid_->r0 - 1; ir_ < grid_->r1 + 1; ir_++)

Definition at line 90 of file grid.h.

#define iter_grid_1 (   grid_,
  ir_,
  iz_ 
)
Value:
iter_grid_z_1(grid_, iz_) \
iter_grid_r(grid_, ir_)

Definition at line 93 of file grid.h.

#define iter_grid_3d_1 (   grid_,
  ir_,
  iz_,
  it_ 
)
Value:
iter_grid_theta(grid_, it_) \
iter_grid_z_1(grid_, iz_) \
iter_grid_r_1(grid_, ir_)

Definition at line 97 of file grid.h.

#define iter_grid_theta_n (   grid_,
  it_,
  n_ 
)
Value:
for(it_ = (grid_->ntheta == 1? 0: -n_); it_ < grid_->ntheta \
+ (grid_->ntheta == 1? 0: n_); it_++)

Definition at line 106 of file grid.h.

#define iter_grid_z_n (   grid_,
  iz_,
  n_ 
)    for(iz_ = grid_->z0 - n_; iz_ < grid_->z1 + n_; iz_++)

Definition at line 110 of file grid.h.

#define iter_grid_r_n (   grid_,
  ir_,
  n_ 
)    for(ir_ = grid_->r0 - n_; ir_ < grid_->r1 + n_; ir_++)

Definition at line 113 of file grid.h.

#define iter_grid_n (   grid_,
  ir_,
  iz_,
  n_ 
)
Value:
iter_grid_z_n(grid_, iz_, n_) \
iter_grid_r_n(grid_, ir_, n_)

Definition at line 116 of file grid.h.

#define iter_grid_3d_n (   grid_,
  ir_,
  iz_,
  it_,
  n_ 
)
Value:
iter_grid_theta_n(grid_, it_, n_) \
iter_grid_z_n(grid_, iz_, n_) \
iter_grid_r_n(grid_, ir_, n_)

Definition at line 120 of file grid.h.

#define iter_grid_parent (   grid_,
  ir_,
  iz_ 
)
Value:
for(ir_ = (grid_->r0 >> 1) + (grid_->r0 % 2); \
ir_ < (grid_->r1 >> 1); ir_++) \
for(iz_ = (grid_->z0 >> 1) + (grid_->z0 % 2); \
iz_ < (grid_->z1 >> 1); iz_++)

Definition at line 127 of file grid.h.

#define grid_printf_str   "{r0 = %d, z0 = %d, r1 = %d, z1 = %d, level = %d}"

To ease typing, you can write e.g. printf ("Solving grid (" grid_printf_str ")\n", grid_printf_args(grid));.

Definition at line 154 of file grid.h.

#define grid_printf_args (   G_)
Value:
(G_)->r0, (G_)->z0, (G_)->r1, (G_)->z1, \
(G_)->level

Definition at line 155 of file grid.h.

#define _GRID_H_

Definition at line 158 of file grid.h.

Typedef Documentation

typedef struct grid_t grid_t

The cdr grids and poisson grids types are cdr_grid_t and pois_grid_t, defined in cdr.h and poisson.h.

This structure contains the common parts of both structures and thus can be used in general routines that accept any kind of grid. The C standard promises that we can du this.

Definition at line 141 of file grid.h.