6 #ifndef MYRAMATH_MULTIFRONTAL_LU_SOLVEU_H 7 #define MYRAMATH_MULTIFRONTAL_LU_SOLVEU_H 14 #include <myramath/multifrontal/detail/solveu.h> 17 namespace multifrontal {
21 template<
class Number>
class JobGraphBase :
public ::myra::multifrontal::detail::solveu::JobGraphBase2<Number>
26 typedef ::myra::multifrontal::detail::solveu::JobGraphBase2<Number> Base;
30 typedef ::myra::multifrontal::detail::lu::LUContainer<Kernel>
LUContainer;
34 : Base(&in_lucontainer->tree(), in_B, in_blocksize), lucontainer(in_lucontainer) { }
37 virtual ::myra::JobGraphBase* clone()
const 43 const Kernel& u(
int n,
int ij)
const 44 {
return lucontainer->lu(n,ij); }
46 {
return lucontainer->lu(n,i,j); }
49 virtual uint64_t backsolve(
int n,
int k,
int j)
51 const Kernel& Un_kk = this->u(n,k);
53 return Un_kk.
solveU(Bn_kj,
'L',
'N');
57 virtual uint64_t downdate(
int n,
int k,
int i,
int j)
63 return gemm_nwork(Bn_ij, Un_ik,
'N', Xn_kj,
'N', -one, one);
69 const LUContainer* lucontainer;
Represents a const MatrixRange.
Definition: bothcat.h:22
Factors A into L*U, presents solve methods.
Definition: Kernel.h:35
Represents a mutable MatrixRange.
Definition: conjugate.h:26
uint64_t solveU(const MatrixRange< Number > &B, char side, char op) const
Solves op(U)*X=B or X*op(U)=B, overwrites B with X.
Definition: Kernel.h:135
Definition: partialsolve.h:32