PyPO User Manual
Propagation< T, U, V, W > Class Template Reference

#include <Propagation.h>

Public Member Functions

 Propagation (T omega, int numThreads, int gs, int gt, T epsilon, T t_direction, bool verbose=false)
 
void propagateBeam_JM_PEC (int start, int stop, V *cs, V *ct, W *currents, U *res)
 
void propagateBeam_JM (int start, int stop, V *cs, V *ct, W *currents, U *res)
 
void propagateBeam_EH (int start, int stop, V *cs, V *ct, W *currents, U *res)
 
void propagateBeam_JMEH_PEC (int start, int stop, V *cs, V *ct, W *currents, U *res)
 
void propagateBeam_JMEH (int start, int stop, V *cs, V *ct, W *currents, U *res)
 
void propagateBeam_EHP (int start, int stop, V *cs, V *ct, W *currents, U *res)
 
std::array< std::array< std::complex< T >, 3 >, 2 > fieldAtPoint (V *cs, W *currents, const std::array< T, 3 > &point_target)
 
std::array< std::array< std::complex< T >, 3 >, 2 > fieldAtPoint_Old (V *cs, W *currents, const std::array< T, 3 > &point_target)
 
void parallelProp_JM (V *cs, V *ct, W *currents, U *res)
 
void parallelProp_EH (V *cs, V *ct, W *currents, U *res)
 
void parallelProp_JMEH (V *cs, V *ct, W *currents, U *res)
 
void parallelProp_EHP (V *cs, V *ct, W *currents, U *res)
 
void propagateToFarField (int start, int stop, V *cs, V *ct, W *currents, U *res)
 
std::array< std::array< std::complex< T >, 3 >, 2 > farfieldAtPoint (V *cs, W *currents, const std::array< T, 3 > &point_target)
 
std::array< std::array< std::complex< T >, 3 >, 2 > farfieldAtPoint_Old (V *cs, W *currents, const std::array< T, 3 > &point_target)
 
void parallelFarField (V *cs, V *ct, W *currents, U *res)
 
void propagateScalarBeam (int start, int stop, V *cs, V *ct, W *field, U *res)
 
std::complex< T > fieldScalarAtPoint (V *cs, W *field, const std::array< T, 3 > &point_target)
 
void parallelPropScalar (V *cs, V *ct, W *field, U *res)
 

Public Attributes

std::vector< std::thread > threadPool
 
Utils< T > ut
 

Detailed Description

template<class T, class U, class V, class W>
class Propagation< T, U, V, W >

Main class for running PO calculations.

Contains functions that run PO calculations. All calculations can be performed in a parallel way.

See also
Utils
Structs
InterfaceReflector

Constructor & Destructor Documentation

◆ Propagation()

template<class T , class U , class V , class W >
Propagation< T, U, V, W >::Propagation ( k,
int  numThreads,
int  gs,
int  gt,
epsilon,
t_direction,
bool  verbose = false 
)

Constructor.

Set important parameters internally, given input.

Parameters
omegaAngular frequency of radiation, double/float.
numThreadsNumber of computing threads to employ.
gsNumber of cells on source surface.
gtNumber of cells on target grid.
epsilonRelative electric permittivity of source surface.
t_directionTime direction. This changes the sign in the Green's function used to propagate the field. t_direction is -1 for forward propagation, +1 for backward
verboseWhether to print internal state info.

Member Function Documentation

◆ farfieldAtPoint()

template<class T , class U , class V , class W >
std::array< std::array< std::complex< T >, 3 >, 2 > Propagation< T, U, V, W >::farfieldAtPoint ( V *  cs,
W *  currents,
const std::array< T, 3 > &  r_hat 
)

Calculate far-field on target.

Calculate integrated E and H fields on a far-field target point.

Parameters
csPointer to reflcontainer or reflcontainerf object containing source grids.
currentsPointer to c2Bundle or c2Bundlef object containing currents on source.
r_hatArray of 3 double/float containing target direction angles.
See also
reflcontainer
reflcontainerf
c2Bundle
c2Bundlef

◆ farfieldAtPoint_Old()

template<class T , class U , class V , class W >
std::array< std::array< std::complex< T >, 3 >, 2 > Propagation< T, U, V, W >::farfieldAtPoint_Old ( V *  cs,
W *  currents,
const std::array< T, 3 > &  r_hat 
)

Calculate far-field on target.

Calculate integrated E and H fields on a far-field target point.

Parameters
csPointer to reflcontainer or reflcontainerf object containing source grids.
currentsPointer to c2Bundle or c2Bundlef object containing currents on source.
r_hatArray of 3 double/float containing target direction angles.
See also
reflcontainer
reflcontainerf
c2Bundle
c2Bundlef

◆ fieldAtPoint()

template<class T , class U , class V , class W >
std::array< std::array< std::complex< T >, 3 >, 2 > Propagation< T, U, V, W >::fieldAtPoint ( V *  cs,
W *  currents,
const std::array< T, 3 > &  point_target 
)

Calculate field on target.

Calculate integrated E and H fields on a target point.

We use the GRASP formulae for the E and H fields in sqrt{Watts}, calculated from electric and magnetic currents in sqrt{Watts}.

The GRASP manual cites Collin "Antenna Theory" (1969) for the derivation.

Parameters
csPointer to reflcontainer or reflcontainerf object containing source grids.
currentsPointer to c2Bundle or c2Bundlef object containing currents on source.
point_targetArray of 3 double/float containing target point co-ordinate.
See also
reflcontainer
reflcontainerf
c2Bundle
c2Bundlef

◆ fieldAtPoint_Old()

template<class T , class U , class V , class W >
std::array< std::array< std::complex< T >, 3 >, 2 > Propagation< T, U, V, W >::fieldAtPoint_Old ( V *  cs,
W *  currents,
const std::array< T, 3 > &  point_target 
)

Calculate field on target.

Calculate integrated E and H fields on a target point.

Parameters
csPointer to reflcontainer or reflcontainerf object containing source grids.
currentsPointer to c2Bundle or c2Bundlef object containing currents on source.
point_targetArray of 3 double/float containing target point co-ordinate.
See also
reflcontainer
reflcontainerf
c2Bundle
c2Bundlef

◆ fieldScalarAtPoint()

template<class T , class U , class V , class W >
std::complex< T > Propagation< T, U, V, W >::fieldScalarAtPoint ( V *  cs,
W *  field,
const std::array< T, 3 > &  point_target 
)

Calculate scalar field on target.

Calculate integrated scalar field on a target point.

Parameters
csPointer to reflcontainer or reflcontainerf object containing source grids.
fieldPointer to arrC1 or arrC1f object containing currents on source.
point_targetArray of 3 double/float containing target point co-ordinate.
See also
reflcontainer
reflcontainerf
arrC1
arrC1f

◆ parallelFarField()

template<class T , class U , class V , class W >
void Propagation< T, U, V, W >::parallelFarField ( V *  cs,
V *  ct,
W *  currents,
U *  res 
)

Calculate far-field parallel.

Run the propagateToFarField function in parallel blocks.

Parameters
csPointer to reflcontainer or reflcontainerf object containing source grids.
ctPointer to reflcontainer or reflcontainerf object containing target grids.
currentsPointer to c2Bundle or c2Bundlef object containing source currents.
resPointer to c2Bundle or c2Bundlef object to be filled with calculation results.
See also
reflcontainer
reflcontainerf
c2Bundle
c2Bundlef

◆ parallelProp_EH()

template<class T , class U , class V , class W >
void Propagation< T, U, V, W >::parallelProp_EH ( V *  cs,
V *  ct,
W *  currents,
U *  res 
)

Calculate EH parallel.

Run the propagateBeam_EH function in parallel blocks.

Parameters
csPointer to reflcontainer or reflcontainerf object containing source grids.
ctPointer to reflcontainer or reflcontainerf object containing target grids.
currentsPointer to c2Bundle or c2Bundlef object containing source currents.
resPointer to c2Bundle or c2Bundlef object to be filled with calculation results.
See also
reflcontainer
reflcontainerf
c2Bundle
c2Bundlef

◆ parallelProp_EHP()

template<class T , class U , class V , class W >
void Propagation< T, U, V, W >::parallelProp_EHP ( V *  cs,
V *  ct,
W *  currents,
U *  res 
)

Calculate reflected EH and P parallel.

Run the propagateBeam_EHP function in parallel blocks.

Parameters
csPointer to reflcontainer or reflcontainerf object containing source grids.
ctPointer to reflcontainer or reflcontainerf object containing target grids.
currentsPointer to c2Bundle or c2Bundlef object containing source currents.
resPointer to c2rBundle or c2rBundlef object to be filled with calculation results.
See also
reflcontainer
reflcontainerf
c2Bundle
c2Bundlef
c2rBundle
c2rBundlef

◆ parallelProp_JM()

template<class T , class U , class V , class W >
void Propagation< T, U, V, W >::parallelProp_JM ( V *  cs,
V *  ct,
W *  currents,
U *  res 
)

Calculate JM parallel.

Run the propagateBeam_JM function in parallel blocks.

Parameters
csPointer to reflcontainer or reflcontainerf object containing source grids.
ctPointer to reflcontainer or reflcontainerf object containing target grids.
currentsPointer to c2Bundle or c2Bundlef object containing source currents.
resPointer to c2Bundle or c2Bundlef object to be filled with calculation results.
See also
reflcontainer
reflcontainerf
c2Bundle
c2Bundlef

◆ parallelProp_JMEH()

template<class T , class U , class V , class W >
void Propagation< T, U, V, W >::parallelProp_JMEH ( V *  cs,
V *  ct,
W *  currents,
U *  res 
)

Calculate JM and EH parallel.

Run the propagateBeam_JMEH function in parallel blocks.

Parameters
csPointer to reflcontainer or reflcontainerf object containing source grids.
ctPointer to reflcontainer or reflcontainerf object containing target grids.
currentsPointer to c2Bundle or c2Bundlef object containing source currents.
resPointer to c4Bundle or c4Bundlef object to be filled with calculation results.
See also
reflcontainer
reflcontainerf
c2Bundle
c2Bundlef
c4Bundle
c4Bundlef

◆ parallelPropScalar()

template<class T , class U , class V , class W >
void Propagation< T, U, V, W >::parallelPropScalar ( V *  cs,
V *  ct,
W *  field,
U *  res 
)

Calculate scalar field parallel.

Run the propagateScalarBeam function in parallel blocks.

Parameters
csPointer to reflcontainer or reflcontainerf object containing source grids.
ctPointer to reflcontainer or reflcontainerf object containing target grids.
fieldPointer to arrC1 or arrC1f object containing source currents.
resPointer to arrC1 or arrC1f object to be filled with calculation results.
See also
reflcontainer
reflcontainerf
arrC1
arrC1f

◆ propagateBeam_EH()

template<class T , class U , class V , class W >
void Propagation< T, U, V, W >::propagateBeam_EH ( int  start,
int  stop,
V *  cs,
V *  ct,
W *  currents,
U *  res 
)

Calculate JMEH on target.

Calculate the E, H fields and J, M currents on a target surface.

Parameters
startIndex of first loop iteration in parallel block.
stopIndex of last loop iteration in parallel block.
csPointer to reflcontainer or reflcontainerf object containing source grids.
ctPointer to reflcontainer or reflcontainerf object containing target grids.
currentsPointer to c2Bundle or c2Bundlef object containing currents on source.
resPointer to c2Bundle or c2Bundlef object, to be filled with calculation results.
See also
reflcontainer
reflcontainerf
c2Bundle
c2Bundlef

◆ propagateBeam_EHP()

template<class T , class U , class V , class W >
void Propagation< T, U, V, W >::propagateBeam_EHP ( int  start,
int  stop,
V *  cs,
V *  ct,
W *  currents,
U *  res 
)

Calculate reflected EH and P on target.

Calculate the reflected E, H fields and P, the reflected Poynting vector field, on a target surface.

Parameters
startIndex of first loop iteration in parallel block.
stopIndex of last loop iteration in parallel block.
csPointer to reflcontainer or reflcontainerf object containing source grids.
ctPointer to reflcontainer or reflcontainerf object containing target grids.
currentsPointer to c2Bundle or c2Bundlef object containing currents on source.
resPointer to c2rBundle or c2rBundlef object, to be filled with calculation results.
See also
reflcontainer
reflcontainerf
c2Bundle
c2Bundlef
c2rBundle
c2rBundlef

◆ propagateBeam_JM()

template<class T , class U , class V , class W >
void Propagation< T, U, V, W >::propagateBeam_JM ( int  start,
int  stop,
V *  cs,
V *  ct,
W *  currents,
U *  res 
)

Calculate JM on target.

Calculate the J, M currents on a target surface.

Parameters
startIndex of first loop iteration in parallel block.
stopIndex of last loop iteration in parallel block.
csPointer to reflcontainer or reflcontainerf object containing source grids.
ctPointer to reflcontainer or reflcontainerf object containing target grids.
currentsPointer to c2Bundle or c2Bundlef object containing currents on source.
resPointer to c2Bundle or c2Bundlef object, to be filled with calculation results.
See also
reflcontainer
reflcontainerf
c2Bundle
c2Bundlef

◆ propagateBeam_JM_PEC()

template<class T , class U , class V , class W >
void Propagation< T, U, V, W >::propagateBeam_JM_PEC ( int  start,
int  stop,
V *  cs,
V *  ct,
W *  currents,
U *  res 
)

Calculate JM on target - PEC version.

Calculate the J, M currents on a perfectly conducting target surface.

Parameters
startIndex of first loop iteration in parallel block.
stopIndex of last loop iteration in parallel block.
csPointer to reflcontainer or reflcontainerf object containing source grids.
ctPointer to reflcontainer or reflcontainerf object containing target grids.
currentsPointer to c2Bundle or c2Bundlef object containing currents on source.
resPointer to c2Bundle or c2Bundlef object, to be filled with calculation results.
See also
reflcontainer
reflcontainerf
c2Bundle
c2Bundlef

◆ propagateBeam_JMEH()

template<class T , class U , class V , class W >
void Propagation< T, U, V, W >::propagateBeam_JMEH ( int  start,
int  stop,
V *  cs,
V *  ct,
W *  currents,
U *  res 
)

Calculate JM and EH on target.

Calculate the J, M currents and E, H fields on a target surface.

Parameters
startIndex of first loop iteration in parallel block.
stopIndex of last loop iteration in parallel block.
csPointer to reflcontainer or reflcontainerf object containing source grids.
ctPointer to reflcontainer or reflcontainerf object containing target grids.
currentsPointer to c2Bundle or c2Bundlef object containing currents on source.
resPointer to c4Bundle or c4Bundlef object, to be filled with calculation results.
See also
reflcontainer
reflcontainerf
c2Bundle
c2Bundlef
c4Bundle
c4Bundlef

◆ propagateBeam_JMEH_PEC()

template<class T , class U , class V , class W >
void Propagation< T, U, V, W >::propagateBeam_JMEH_PEC ( int  start,
int  stop,
V *  cs,
V *  ct,
W *  currents,
U *  res 
)

Calculate JMEH on target - PEC version.

Calculate the J, M currents and E, H fields on a perfectly conducting target surface.

Parameters
startIndex of first loop iteration in parallel block.
stopIndex of last loop iteration in parallel block.
csPointer to reflcontainer or reflcontainerf object containing source grids.
ctPointer to reflcontainer or reflcontainerf object containing target grids.
currentsPointer to c2Bundle or c2Bundlef object containing currents on source.
resPointer to c2Bundle or c2Bundlef object, to be filled with calculation results.
See also
reflcontainer
reflcontainerf
c2Bundle
c2Bundlef

◆ propagateScalarBeam()

template<class T , class U , class V , class W >
void Propagation< T, U, V, W >::propagateScalarBeam ( int  start,
int  stop,
V *  cs,
V *  ct,
W *  field,
U *  res 
)

Calculate scalar field on target.

Calculate the scalar fields on a target surface.

Parameters
startIndex of first loop iteration in parallel block.
stopIndex of last loop iteration in parallel block.
csPointer to reflcontainer or reflcontainerf object containing source grids.
ctPointer to reflcontainer or reflcontainerf object containing target grids.
fieldPointer to arrC1 or arrC1f object containing field on source.
resPointer to arrC1 or arrC1f object, to be filled with calculation results.
See also
reflcontainer
reflcontainerf
c2Bundle
c2Bundlef

◆ propagateToFarField()

template<class T , class U , class V , class W >
void Propagation< T, U, V, W >::propagateToFarField ( int  start,
int  stop,
V *  cs,
V *  ct,
W *  currents,
U *  res 
)

Calculate far-field on target.

Calculate integrated E and H fields on a far-field target point.

Parameters
startIndex of first loop iteration in parallel block.
stopIndex of last loop iteration in parallel block.
csPointer to reflcontainer or reflcontainerf object containing source grids.
ctPointer to reflcontainer or reflcontainerf object containing target grids.
currentsPointer to c2Bundle or c2Bundlef object containing currents on source.
resPointer to c2Bundle or c2Bundlef object, to be filled with calculation results.
See also
reflcontainer
reflcontainerf
c2Bundle
c2Bundlef

Member Data Documentation

◆ threadPool

template<class T , class U , class V , class W >
std::vector<std::thread> Propagation< T, U, V, W >::threadPool

Vector of thread objects.

◆ ut

template<class T , class U , class V , class W >
Utils<T> Propagation< T, U, V, W >::ut

Utils object for vector operations.


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