#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 |
Main class for running PO calculations.
Contains functions that run PO calculations. All calculations can be performed in a parallel way.
| Propagation< T, U, V, W >::Propagation | ( | T | k, |
| int | numThreads, | ||
| int | gs, | ||
| int | gt, | ||
| T | epsilon, | ||
| T | t_direction, | ||
| bool | verbose = false |
||
| ) |
Constructor.
Set important parameters internally, given input.
| omega | Angular frequency of radiation, double/float. |
| numThreads | Number of computing threads to employ. |
| gs | Number of cells on source surface. |
| gt | Number of cells on target grid. |
| epsilon | Relative electric permittivity of source surface. |
| t_direction | Time 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 |
| verbose | Whether to print internal state info. |
| 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.
| cs | Pointer to reflcontainer or reflcontainerf object containing source grids. |
| currents | Pointer to c2Bundle or c2Bundlef object containing currents on source. |
| r_hat | Array of 3 double/float containing target direction angles. |
| 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.
| cs | Pointer to reflcontainer or reflcontainerf object containing source grids. |
| currents | Pointer to c2Bundle or c2Bundlef object containing currents on source. |
| r_hat | Array of 3 double/float containing target direction angles. |
| 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.
| cs | Pointer to reflcontainer or reflcontainerf object containing source grids. |
| currents | Pointer to c2Bundle or c2Bundlef object containing currents on source. |
| point_target | Array of 3 double/float containing target point co-ordinate. |
| 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.
| cs | Pointer to reflcontainer or reflcontainerf object containing source grids. |
| currents | Pointer to c2Bundle or c2Bundlef object containing currents on source. |
| point_target | Array of 3 double/float containing target point co-ordinate. |
| 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.
| cs | Pointer to reflcontainer or reflcontainerf object containing source grids. |
| field | Pointer to arrC1 or arrC1f object containing currents on source. |
| point_target | Array of 3 double/float containing target point co-ordinate. |
| 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.
| cs | Pointer to reflcontainer or reflcontainerf object containing source grids. |
| ct | Pointer to reflcontainer or reflcontainerf object containing target grids. |
| currents | Pointer to c2Bundle or c2Bundlef object containing source currents. |
| res | Pointer to c2Bundle or c2Bundlef object to be filled with calculation results. |
| 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.
| cs | Pointer to reflcontainer or reflcontainerf object containing source grids. |
| ct | Pointer to reflcontainer or reflcontainerf object containing target grids. |
| currents | Pointer to c2Bundle or c2Bundlef object containing source currents. |
| res | Pointer to c2Bundle or c2Bundlef object to be filled with calculation results. |
| 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.
| cs | Pointer to reflcontainer or reflcontainerf object containing source grids. |
| ct | Pointer to reflcontainer or reflcontainerf object containing target grids. |
| currents | Pointer to c2Bundle or c2Bundlef object containing source currents. |
| res | Pointer to c2rBundle or c2rBundlef object to be filled with calculation results. |
| 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.
| cs | Pointer to reflcontainer or reflcontainerf object containing source grids. |
| ct | Pointer to reflcontainer or reflcontainerf object containing target grids. |
| currents | Pointer to c2Bundle or c2Bundlef object containing source currents. |
| res | Pointer to c2Bundle or c2Bundlef object to be filled with calculation results. |
| 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.
| cs | Pointer to reflcontainer or reflcontainerf object containing source grids. |
| ct | Pointer to reflcontainer or reflcontainerf object containing target grids. |
| currents | Pointer to c2Bundle or c2Bundlef object containing source currents. |
| res | Pointer to c4Bundle or c4Bundlef object to be filled with calculation results. |
| 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.
| cs | Pointer to reflcontainer or reflcontainerf object containing source grids. |
| ct | Pointer to reflcontainer or reflcontainerf object containing target grids. |
| field | Pointer to arrC1 or arrC1f object containing source currents. |
| res | Pointer to arrC1 or arrC1f object to be filled with calculation results. |
| 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.
| start | Index of first loop iteration in parallel block. |
| stop | Index of last loop iteration in parallel block. |
| cs | Pointer to reflcontainer or reflcontainerf object containing source grids. |
| ct | Pointer to reflcontainer or reflcontainerf object containing target grids. |
| currents | Pointer to c2Bundle or c2Bundlef object containing currents on source. |
| res | Pointer to c2Bundle or c2Bundlef object, to be filled with calculation results. |
| 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.
| start | Index of first loop iteration in parallel block. |
| stop | Index of last loop iteration in parallel block. |
| cs | Pointer to reflcontainer or reflcontainerf object containing source grids. |
| ct | Pointer to reflcontainer or reflcontainerf object containing target grids. |
| currents | Pointer to c2Bundle or c2Bundlef object containing currents on source. |
| res | Pointer to c2rBundle or c2rBundlef object, to be filled with calculation results. |
| 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.
| start | Index of first loop iteration in parallel block. |
| stop | Index of last loop iteration in parallel block. |
| cs | Pointer to reflcontainer or reflcontainerf object containing source grids. |
| ct | Pointer to reflcontainer or reflcontainerf object containing target grids. |
| currents | Pointer to c2Bundle or c2Bundlef object containing currents on source. |
| res | Pointer to c2Bundle or c2Bundlef object, to be filled with calculation results. |
| 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.
| start | Index of first loop iteration in parallel block. |
| stop | Index of last loop iteration in parallel block. |
| cs | Pointer to reflcontainer or reflcontainerf object containing source grids. |
| ct | Pointer to reflcontainer or reflcontainerf object containing target grids. |
| currents | Pointer to c2Bundle or c2Bundlef object containing currents on source. |
| res | Pointer to c2Bundle or c2Bundlef object, to be filled with calculation results. |
| 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.
| start | Index of first loop iteration in parallel block. |
| stop | Index of last loop iteration in parallel block. |
| cs | Pointer to reflcontainer or reflcontainerf object containing source grids. |
| ct | Pointer to reflcontainer or reflcontainerf object containing target grids. |
| currents | Pointer to c2Bundle or c2Bundlef object containing currents on source. |
| res | Pointer to c4Bundle or c4Bundlef object, to be filled with calculation results. |
| 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.
| start | Index of first loop iteration in parallel block. |
| stop | Index of last loop iteration in parallel block. |
| cs | Pointer to reflcontainer or reflcontainerf object containing source grids. |
| ct | Pointer to reflcontainer or reflcontainerf object containing target grids. |
| currents | Pointer to c2Bundle or c2Bundlef object containing currents on source. |
| res | Pointer to c2Bundle or c2Bundlef object, to be filled with calculation results. |
| 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.
| start | Index of first loop iteration in parallel block. |
| stop | Index of last loop iteration in parallel block. |
| cs | Pointer to reflcontainer or reflcontainerf object containing source grids. |
| ct | Pointer to reflcontainer or reflcontainerf object containing target grids. |
| field | Pointer to arrC1 or arrC1f object containing field on source. |
| res | Pointer to arrC1 or arrC1f object, to be filled with calculation results. |
| 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.
| start | Index of first loop iteration in parallel block. |
| stop | Index of last loop iteration in parallel block. |
| cs | Pointer to reflcontainer or reflcontainerf object containing source grids. |
| ct | Pointer to reflcontainer or reflcontainerf object containing target grids. |
| currents | Pointer to c2Bundle or c2Bundlef object containing currents on source. |
| res | Pointer to c2Bundle or c2Bundlef object, to be filled with calculation results. |
| std::vector<std::thread> Propagation< T, U, V, W >::threadPool |
Vector of thread objects.
| Utils<T> Propagation< T, U, V, W >::ut |
Utils object for vector operations.