Class xlifepp::ComputationAlgorithm#
-
template<number_t CM>
class ComputationAlgorithm#
-
Collaboration diagram for xlifepp::ComputationAlgorithm:
templated computation functions ComputationAlgorithm class is a trick to template FE/IE computation algorithm
Public Functions
-
void compute(const SuBilinearForm &subf, LargeMatrix<T> &mat, K &vt, Space *space_u_p, Space *space_v_p, const Unknown *u_p, const TestFct *v_p)#
-
FE-SP hybrid computation of a scalar SuBiinearForm on a == unique domain == -— u space is a FE/SP space and v space is a SP/FE space ——— subf: a single unknown bilinear form defined on a unique domain (assumed), single integral v: reference to matrix entries of type T vt: to pass as template the scalar type (real or complex)
-
void compute(const SuBilinearForm &subf, LargeMatrix<T> &mat, K &vt, Space *space_u_p, Space *space_v_p, const Unknown *u_p, const TestFct *v_p)
-
IE SP computation of a scalar SuBilinearForm on a == unique domain == subf: a single unknown bilinear form defined on a unique domains pair (assumed) of IE form with a TensorKernel (see TensorKernel.hpp) :
/ / | | v(x)|[sum_mn psi_m(x)*Amn*phi_n(y)]|u(y) dy dx /domx /domy
Note that the conjugate is applied to phi_n basis related to unknown
v: reference to matrix entries of type T vt: to pass as template the scalar type (real or complex)
algorithm: loop on bilinear form loop on element on uy-domain compute op_u(wj) compute sum_k[pk*phi_m(yk)*wj(yk)] loop on element on vx-domain compute op_v(ti) compute sum_k[qk*psi_n(xk)*ti(xk)] (psi may be conjugated) compute elem matrix by tensorial product
Note: this algorithm is general and not optimal when psi=phi, (wj)=(ti), op_u=op_v, quad_x=quad_y because some quantities are computed many times, nevertheless it is not memory expansive to be improved in future
-
void compute(const SuBilinearForm &subf, LargeMatrix<T> &mat, K &vt, Space *space_u_p, Space *space_v_p, const Unknown *u_p, const TestFct *v_p)
-
compute SuTermMatrix for spectral unknowns u, v subf: a single unknown bilinear form defined on a unique domain (assumed), single integral v: reference to matrix entries of type T vt: to pass as template the scalar type (real or complex)
-
void compute(const SuBilinearForm &subf0, LargeMatrix<T> &mat, K &vt, Space *space_u_p, Space *space_v_p, const Unknown *u_p, const TestFct *v_p)
-
IE computation of a scalar SuBiinearForm on a == unique domain == subf: a single unknown bilinear form defined on a unique domains pair (assumed) mat: T LargeMatrix to be filled in space_u_p: space related to col index of LargeMatrix space_v_p: space related to row index of LargeMatrix u_p, v_p: involved unknown and test function vt: to pass as template the scalar type (real or complex)
deals with scalar (T = K = real or complex) or vector problem (T = Matrix<K> with K= real or complex) deals with standard IE or extended IE (requiring to extend computation to volume dofs) deals with a list of integration methods for regular or singular part, for close to far elements interaction
Public Static Functions
-
template<typename T, typename K>
static inline void compute(const SuBilinearForm &sub, LargeMatrix<T> &mat, K &vt, Space *space_u_p, Space *space_v_p, const Unknown *u_p, const Unknown *v_p)#
-
computation algorithm
-
void compute(const SuBilinearForm &subf, LargeMatrix<T> &mat, K &vt, Space *space_u_p, Space *space_v_p, const Unknown *u_p, const TestFct *v_p)#