6 #ifndef MYRAMATH_MULTIFRONTAL_LU_SCHURSOLVEU_H     7 #define MYRAMATH_MULTIFRONTAL_LU_SCHURSOLVEU_H    16 #include <myramath/multifrontal/detail/schursolve.h>    19 namespace multifrontal {
    21 namespace schursolveu {
    23 template<
class Number> 
class JobGraphBase : 
public ::myra::multifrontal::detail::schursolve::JobGraphBase2<Number>
    29     typedef ::myra::multifrontal::detail::schursolve::JobGraphBase2<Number> Base;
    32     typedef ::myra::multifrontal::detail::lu::LUContainer<Kernel> 
LUContainer;
    33     typedef ::myra::multifrontal::detail::XContainer<Number> 
XContainer;
    34     typedef ::myra::multifrontal::detail::XContributor<Number> XContributor;
    37     JobGraphBase(
const LUContainer* in_lucontainer, XContainer* in_xcontainer, 
const XContributor* in_xcontributor)
    38       : Base(&in_xcontainer->tree(), in_xcontainer, in_xcontributor), lucontainer(in_lucontainer), xcontainer(in_xcontainer), xcontributor(in_xcontributor) { }
    41     virtual ::myra::JobGraphBase* clone()
 const    47     const Kernel& u(
int n, 
int ij)
 const    48       { 
return lucontainer->lu(this->s2a(n),ij); }
    50       { 
return lucontainer->lu(this->s2a(n),i,j); }
    53     virtual uint64_t backsolve(
int n, 
int k, 
int j)
    56       if (k == 0) this->assign_contributions(n,k,j);
    58       const Kernel& Un_kk = this->u(n,k);
    59       return Un_kk.
solveU(Bn_kj,
'L',
'T');
    63     virtual uint64_t downdate(
int n, 
int k, 
int i, 
int j) 
    73       Number beta = k ? one : zero;
    74       uint64_t w = gemm_nwork(Bn_ij, Un_ki, 
'T', Xn_kj, 
'N', -one, beta);
    76       if (k == 0) this->add_contributions(n,i,j);
    83     const LUContainer* lucontainer;
    86     XContainer* xcontainer;
    87     const XContributor* xcontributor;
 
Represents a const MatrixRange. 
Definition: bothcat.h:22
Factors A into L*U, presents solve methods. 
Definition: Kernel.h:35
Definition: schursolveu.h:23
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
Definition: schurgemm.h:25