Streamer fluid modeling - An overview of ARCoS
1.0
|
Definitions for working with general grids. More...
#include "tree.h"
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. | |
Definitions for working with general grids.
Definition in file grid.h.
#define RECT_COORDS int r0, r1, z0, z1, ntheta |
#define BND_MASK_BOTTOM BND_MASK(BND_BOTTOM) |
#define BND_MASK_ALL |
#define r_at | ( | r_, | |
level_ | |||
) | (((double) (r_) + 0.5) * dr[level_]) |
#define z_at | ( | z_, | |
level_ | |||
) | (((double) (z_) + 0.5) * dz[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 etheta_theta_at | ( | i_ | ) | (((double) (i_) + 0.5) * dtheta) |
#define cyl_q | ( | X_ | ) | (X_) |
#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_ | ) |
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.