6 #ifndef MYRAMATH_MULTIFRONTAL_LU_SCHURSOLVEL_H     7 #define MYRAMATH_MULTIFRONTAL_LU_SCHURSOLVEL_H    14 #include <myramath/multifrontal/detail/schursolve.h>    17 namespace multifrontal {
    19 namespace schursolvel {
    21 template<
class Number> 
class JobGraphBase : 
public ::myra::multifrontal::detail::schursolve::JobGraphBase2<Number>
    27     typedef ::myra::multifrontal::detail::schursolve::JobGraphBase2<Number> Base;
    30     typedef ::myra::multifrontal::detail::lu::LUContainer<Kernel> 
LUContainer;
    31     typedef ::myra::multifrontal::detail::XContainer<Number> 
XContainer;
    32     typedef ::myra::multifrontal::detail::XContributor<Number> XContributor;
    35     JobGraphBase(
const LUContainer* in_lucontainer, XContainer* in_xcontainer, 
const XContributor* in_xcontributor)
    36       : Base(&in_xcontainer->tree(), in_xcontainer, in_xcontributor), lucontainer(in_lucontainer), xcontainer(in_xcontainer), xcontributor(in_xcontributor) { }
    39     virtual ::myra::JobGraphBase* clone()
 const    45     const Kernel& l(
int n, 
int ij)
 const    46       { 
return lucontainer->lu(this->s2a(n),ij); }
    48       { 
return lucontainer->lu(this->s2a(n),i,j); }
    51     virtual uint64_t backsolve(
int n, 
int k, 
int j)
    54       if (k == 0) this->assign_contributions(n,k,j);
    55       const Kernel& Ln_kk = this->l(n,k);
    57       return Ln_kk.
solveL(Bn_kj,
'L',
'N');
    61     virtual uint64_t downdate(
int n, 
int k, 
int i, 
int j) 
    71       Number beta = k ? one : zero;
    72       uint64_t w = gemm_nwork(Bn_ij, Ln_ik, 
'N', Xn_kj, 
'N', -one, beta);
    74       if (k == 0) this->add_contributions(n,i,j);
    81     const LUContainer* lucontainer;
    84     XContainer* xcontainer;
    85     const XContributor* xcontributor;
 Definition: schursolvel.h:21
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 solveL(const MatrixRange< Number > &B, char side, char op) const
Solves op(L)*X=B or X*op(L)=B, overwrites B with X. 
Definition: Kernel.h:66
Definition: partialsolve.h:32
Definition: schurgemm.h:25