51 #include "Riostream.h" 167 R__ASSERT(res ->ValidNonZeroPattern());
169 (step->
fX).ResizeTo(res->
fRQ); step->
fX = res->
fRQ;
189 (step->
fS).ResizeTo(res->
fRz); step->
fS = res->
fRz;
209 (step->
fY).ResizeTo(res->
fRA); step->
fY = res->
fRA;
210 (step->
fZ).ResizeTo(res->
fRC); step->
fZ = res->
fRC;
218 (step->
fT).ResizeTo(step->
fS); step->
fT = step->
fS;
228 (step->
fU).ResizeTo(res->
fRu); step->
fU = res->
fRu;
238 (step->
fV).ResizeTo(step->
fX); step->
fV = step->
fX;
248 (step->
fW).ResizeTo(res->
fRw); step->
fW = res->
fRw;
277 Add(steps,-1.0,stepz);
316 if (
this != &source) {
317 TObject::operator=(source);
TVectorT< Element > & ResizeTo(Int_t lwb, Int_t upb)
Resize the vector to [lwb:upb] .
TQpLinSolverBase()
Default constructor.
TMatrixT< Element > & Add(TMatrixT< Element > &target, Element scalar, const TMatrixT< Element > &source)
Modify addition: target += scalar * source.
TVectorT< Element > & Invert()
v[i] = 1/v[i]
TVectorT< Element > & AddElemDiv(TVectorT< Element > &target, Element scalar, const TVectorT< Element > &source1, const TVectorT< Element > &source2)
Modify addition: target += scalar * ElementDiv(source1,source2) .
virtual void Solve(TQpDataBase *prob, TQpVar *vars, TQpResidual *resids, TQpVar *step)
Solves the system for a given set of residuals.
virtual void PutXDiagonal(TVectorD &xdiag)=0
virtual void GetDiagonalOfQ(TVectorD &dQ)=0
virtual void PutZDiagonal(TVectorD &zdiag)=0
virtual void ComputeDiagonals(TVectorD &dd, TVectorD &omega, TVectorD &t, TVectorD &lambda, TVectorD &u, TVectorD &pi, TVectorD &v, TVectorD &gamma, TVectorD &w, TVectorD &phi)
Computes the diagonal matrices in the augmented system from the current set of variables.
virtual void SeparateVars(TVectorD &x_in, TVectorD &y_in, TVectorD &z_in, TVectorD &vars_in)=0
virtual Bool_t ValidNonZeroPattern()
Check that the variables conform to the non-zero indices.
virtual void SeparateVars(TVectorD &vars1, TVectorD &vars2, TVectorD &vars3, TVectorD &vars)
Extracts three component vectors from a given aggregated vector.
TMatrixT< Element > & ElementMult(TMatrixT< Element > &target, const TMatrixT< Element > &source)
Multiply target by the source, element-by-element.
TVectorT< Element > & Zero()
Set vector elements to zero.
virtual void JoinRHS(TVectorD &rhs_in, TVectorD &rhs1_in, TVectorD &rhs2_in, TVectorD &rhs3_in)=0
Int_t NonZeros() const
Compute the number of elements != 0.0.
virtual void SolveXYZS(TVectorD &stepx, TVectorD &stepy, TVectorD &stepz, TVectorD &steps, TVectorD &ztemp, TQpDataBase *data)
Assemble right-hand side of augmented system and call SolveCompressed to solve it.
virtual void Factor(TQpDataBase *prob, TQpVar *vars)
Sets up the matrix for the main linear system in "augmented system" form.
TMatrixT< Element > & ElementDiv(TMatrixT< Element > &target, const TMatrixT< Element > &source)
Divide target by the source, element-by-element.
virtual void SolveCompressed(TVectorD &rhs)=0
TVectorT< Element > & AddElemMult(TVectorT< Element > &target, Element scalar, const TVectorT< Element > &source1, const TVectorT< Element > &source2)
Modify addition: target += scalar * ElementMult(source1,source2) .
TQpLinSolverBase & operator=(const TQpLinSolverBase &source)
Assignment opeartor.
virtual void JoinRHS(TVectorD &rhs, TVectorD &rhs1, TVectorD &rhs2, TVectorD &rhs3)
Assembles a single vector object from three given vectors .