Electromagnetic Template Library (EMTL)
Loading...
Searching...
No Matches
emYeeGenRectBlock< field_t, media_data_t, fix_index_t, VECSIZE, CELLPACK > Class Template Reference

Mesh block for Yee orhtogonal mesh. More...

#include <yee_gen.h>

Inheritance diagram for emYeeGenRectBlock< field_t, media_data_t, fix_index_t, VECSIZE, CELLPACK >:
Collaboration diagram for emYeeGenRectBlock< field_t, media_data_t, fix_index_t, VECSIZE, CELLPACK >:

Classes

class  contour_it
 Class for iterating contours. More...
 

Public Types

typedef Box region_t
 synonym for enclosing region classname
 

Public Member Functions

 emYeeGenRectBlock (const Box &B, const indtype *ndim, const int wf=0)
 B - бокс, в котором находится сетка, ndim - сколько точек в сетке должно быть.
 
size_t GetDataInterleave () const
 gets the size of an interleave bank for grid data (must be accounted for when allocating memory)
 
Vector_3 get_position (indtype ind, int &ftype, Vector_3 &fdir) const
 gets the position, fieldtype and direction of a data with given index
 
interp_form_t create_interpolation (const Vector_3 &pos, const Vector_3 &dir, int fieldtype)
 old form
 
interp_form_t create_interpolation (const emInterpArg &arg, vector< emInterpArg > *nonlocal=NULL, bool all_nonlocal=false)
 returns the coefficients of field interpolation adds non-local (unresolved) requests to nonlocal (if it is not NULL)
 
int get_out_data_max_count () const
 gets the maximal possible number of output points for a contour
 
int get_out_data_index (const contour_it &cnti, indtype *ind, valtype *coeff, int check=0) const
 gets the data index and coefficients of output (central) updated data points as distributed from contour center puts the indicies and coefficients into corresponding arrayes provided it is assumed that the pointers have space at least for get_out_data_max_count() entries if check==1 performs data index memory range validity check
 
int get_inp_data_max_count () const
 gets the maximal possible number of inputs points for one edge of a contour
 
int get_edge_count (const contour_it &cnti) const
 gets the number of edges for the given contour
 
int get_inp_data_index (const contour_it &cnti, int edgenum, indtype *ind, valtype *coeff, int check=0) const
 gets the data index and coefficients of input (edge) data points to contribute to each edge center it is assumed that the pointers have space at least for get_out_data_max_count() entries if check==1 performs data index memory range validity check
 
int mark_all_unused ()
 mark all contours as unused (the fileds will not be updated by Step)
 
int mark_all_used (Vector_3 *vmin=NULL, Vector_3 *vmax=NULL)
 mark all contours as used if vmin and vmax are specified, take them as a bounding box
 
int mark_cnt_used (const contour_it &cnti, int border=0)
 mark the contour as used (for optimization purposes) for the Yee block this will extend the used box border: 0=completely internal, 1 = some input outside, 2= output outside, but some input inside border=1,2 contours may be excluded from processing by Step, but are iterated by contour iterator the processing of border contours must be managed externally
 
int commit_marking ()
 commits the marked contours to match iterator range
 
void unpack_ind (indtype ind, int &ftype, int &dir, indtype &ix, indtype &iy, indtype &iz) const
 indexing the value unpacks component indicies from integer
 
indtype pack_ind (int ftype, int dir, indtype ix, indtype iy, indtype iz) const
 packs component indicies to integer
 
emtype * GetDataPtr ()
 gets data pointer
 
int SetDataPtr (EmtypePtr_t _ptr)
 sets the pointer and clears values
 
int Reset ()
 clears all buffers
 
int StepO (int field)
 performs (optimized) explicit timestep
 
int StepV (int field)
 performs vectorizable explicit timestep
 
int StepC (int field)
 performs non-optimized contour-based explicit timestep
 
void StepContour (const contour_it &cnt)
 performs explicit timestep for one single contour
 
- Public Member Functions inherited from emComponent
emDump * GetEmDumper ()
 This function insures that the returned dumper is of true emDumper type.
 

Protected Types

typedef UniformGrid< storage_t, 1, indtype > grid_t
 grids for different field types
 

Protected Member Functions

void set_arr (emtype *sptr)
 Assigns external pointer for data array.
 
Vector_3 get_position (indtype ix, indtype iy, indtype iz, int cdir, int ftype, Vector_3 &fdir) const
 Data position via 3 indicies, and contour ftype.
 
int get_inp_data_index_unpacked (const contour_it &cnti, int edgenum, indtype *ind) const
 Gets the data index and coefficients of input (edge) data points to contribute to each edge center.
 
indtype put_media_type (const contour_it &cnti, valtype dt, emtype perm, emtype loss)
 records the media data for a contour given by it
 

Protected Attributes

storage_t * emdata
 main (aligned) data pointer
 
indtype N [3]
 sizes
 
indtype mstart [6][3]
 commited local memory range for all grids
 
indtype ustart [6][3]
 grid box internal area (border excluded) limits for each field type and direction, default is [1, N-2]
 
indtype estart [6][3]
 marking for grid box iterator limits for each field type and direction, default is [1, N-2]
 
indtype _start [6][3]
 marking for grid box memory limits for each field type and direction, default is [1, N-2]
 
indtype istart [6][3]
 marking grid box internal area (external border excluded) limits for each field type and direction, default is [1, N-2]
 
indtype astart [6][3]
 marking for interpolation area (internal border included)
 
ptrdiff_t SZ4
 slice sizes
 
Vector_3 origin
 origin point of main grid
 
Box rbox
 bounding region [origin+dx/4, origin+nx*dx-dx/4], where nx is dimension supplied in constructor [origin + dx/2, origin+nx*dx-dx/2]
 
Vector_3 dx
 space increments
 
Vector_3 dx2
 space increments divided by 2
 
grid_t grd
 for interpolation and indexing only
 
vector< indtype > pshifts
 index arrays for temporary interpolation
 

Detailed Description

template<class field_t, media_data_t, fix_index_t, int VECSIZE = 1, bool CELLPACK = true>
class emYeeGenRectBlock< field_t, media_data_t, fix_index_t, VECSIZE, CELLPACK >

Mesh block for Yee orhtogonal mesh.

This block class is conforming to emtMeshBlock model

Member Function Documentation

◆ get_inp_data_index()

template<class field_t , media_data_t , fix_index_t , int VECSIZE = 1, bool CELLPACK = true>
int emYeeGenRectBlock< field_t, media_data_t, fix_index_t, VECSIZE, CELLPACK >::get_inp_data_index ( const contour_it cnti,
int  edgenum,
indtype *  ind,
valtype *  coeff,
int  check = 0 
) const

gets the data index and coefficients of input (edge) data points to contribute to each edge center it is assumed that the pointers have space at least for get_out_data_max_count() entries if check==1 performs data index memory range validity check

Returns
the actual number of indicies

◆ get_inp_data_index_unpacked()

template<class field_t , media_data_t , fix_index_t , int VECSIZE = 1, bool CELLPACK = true>
int emYeeGenRectBlock< field_t, media_data_t, fix_index_t, VECSIZE, CELLPACK >::get_inp_data_index_unpacked ( const contour_it cnti,
int  edgenum,
indtype *  ind 
) const
protected

Gets the data index and coefficients of input (edge) data points to contribute to each edge center.


◆ get_out_data_index()

template<class field_t , media_data_t , fix_index_t , int VECSIZE = 1, bool CELLPACK = true>
int emYeeGenRectBlock< field_t, media_data_t, fix_index_t, VECSIZE, CELLPACK >::get_out_data_index ( const contour_it cnti,
indtype *  ind,
valtype *  coeff,
int  check = 0 
) const

gets the data index and coefficients of output (central) updated data points as distributed from contour center puts the indicies and coefficients into corresponding arrayes provided it is assumed that the pointers have space at least for get_out_data_max_count() entries if check==1 performs data index memory range validity check

Returns
the actual number of indicies

The documentation for this class was generated from the following file: