6 #ifndef MYRAMATH_MULTIFRONTAL_LU_PARTIALSOLVELT_H 7 #define MYRAMATH_MULTIFRONTAL_LU_PARTIALSOLVELT_H 18 #include <myramath/dense/detail/nwork.h> 20 #include <myramath/multifrontal/detail/partialsolveu.h> 21 #include <myramath/multifrontal/detail/PContainer.h> 22 #include <myramath/multifrontal/detail/lu/LUContainer.h> 25 namespace multifrontal {
27 namespace partialsolvelt {
29 template<
class Kernel>
class JobGraphBase :
public ::myra::multifrontal::detail::partialsolveu::JobGraphBase2<typename ReflectNumber<Kernel>::type>
35 typedef ::myra::multifrontal::detail::partialsolveu::JobGraphBase2<Number> Base;
38 typedef ::myra::multifrontal::detail::lu::LUContainer<Kernel>
LUContainer;
39 typedef ::myra::multifrontal::detail::PContainer<Number> PContainer;
44 JobGraphBase(
const LUContainer* in_lucontainer,
const SchurTree* in_stree, PContainer* in_pcontainer,
char in_op)
45 : Base(in_stree,in_pcontainer), lucontainer(in_lucontainer), op(in_op) { }
48 virtual ::myra::JobGraphBase* clone()
const 54 const Kernel& l(
int n,
int ij)
const 55 {
return lucontainer->lu(this->s2a(n),ij); }
56 const CRange l(
int n,
int i,
int j)
const 57 {
return lucontainer->lu(this->s2a(n),i,j); }
60 virtual uint64_t backsolve(
int n,
int k,
int j)
62 const Kernel& Ln_kk = this->l(n,k);
63 Range Bn_kj = this->b(n,k,j);
64 return Ln_kk.solveL(Bn_kj,
'L', op);
68 virtual uint64_t downdate(
int n,
int k,
int i,
int j)
70 Range Bn_ij = this->b(n,i,j);
71 CRange Ln_ki = this->l(n,k,i);
72 CRange Xn_kj = this->x(n,k,j);
74 return gemm_nwork(Bn_ij, Ln_ki, op, Xn_kj,
'N', -one, one);
80 const LUContainer* lucontainer;
Reflects Number trait for a Container, containers of Numbers (Matrix's, Vector's, etc) should special...
Definition: Number.h:55
Interface class for representing subranges of dense Matrix's.
Symbolic analysis data structure for multifrontal schur complement.
Definition: SchurTree.h:42
Definition: partialsolvelt.h:29
Represents a const MatrixRange.
Definition: bothcat.h:22
Various utility functions/classes related to scalar Number types.
Represents a mutable MatrixRange.
Definition: conjugate.h:26
Definition: partialsolve.h:32
Variety of routines all for dense Matrix*Matrix multiplies. Delegates to the BLAS.