37 for(
direction cmpt=0; cmpt<pTraits<Type>::nComponents; cmpt++)
50 for(
direction cmpt=0; cmpt<pTraits<Type>::nComponents; cmpt++)
52 if (!singular_[cmpt])
return false;
62 const Type& Tolerance,
63 const Type& RelTolerance
69 <<
": Iteration " << nIterations_
70 <<
" residual = " << finalResidual_
76 finalResidual_ < Tolerance
80 && finalResidual_ <
cmptMultiply(RelTolerance, initialResidual_)
101 for(
direction cmpt=0; cmpt<pTraits<Type>::nComponents; cmpt++)
105 os <<
indent << solverName_ <<
": Solving for " << fieldName_;
110 os <<
indent << solverName_ <<
": Solving for "
116 os <<
": solution singularity" <<
endl;
120 os <<
", Initial residual = " <<
component(initialResidual_, cmpt)
121 <<
", Final residual = " <<
component(finalResidual_, cmpt)
122 <<
", No Iterations " << nIterations_
136 initialResidual_.replace(cmpt, sp.initialResidual());
137 finalResidual_.replace(cmpt, sp.finalResidual());
138 nIterations_.replace(cmpt, sp.nIterations());
139 singular_[cmpt] = sp.singular();
168 solverName() != sp.solverName()
169 || fieldName() != sp.fieldName()
170 || initialResidual() != sp.initialResidual()
171 || finalResidual() != sp.finalResidual()
172 || nIterations() != sp.nIterations()
173 || converged() != sp.converged()
174 || singular() != sp.singular()
209 >> sp.initialResidual_
214 is.readEndList(
"SolverPerformance<Type>");
227 os << token::BEGIN_LIST
228 << sp.solverName_ << token::SPACE
229 << sp.fieldName_ << token::SPACE
230 << sp.initialResidual_ << token::SPACE
231 << sp.finalResidual_ << token::SPACE
232 << sp.nIterations_ << token::SPACE
233 << sp.converged_ << token::SPACE
234 << sp.singular_ << token::SPACE
Useful combination of include files which define Sin, Sout and Serr and the use of IO streams general...
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
char readBeginList(const char *funcName)
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Traits class for primitives.
A class for handling words, derived from string.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Ostream & endl(Ostream &os)
Add newline and flush stream.
void component(FieldField< Field, typename FieldField< Field, Type >::cmptType > &sf, const FieldField< Field, Type > &f, const direction d)
layerAndWeight max(const layerAndWeight &a, const layerAndWeight &b)
dimensioned< Type > cmptMultiply(const dimensioned< Type > &, const dimensioned< Type > &)
void cmptMax(FieldField< Field, typename FieldField< Field, Type >::cmptType > &cf, const FieldField< Field, Type > &f)
Ostream & indent(Ostream &os)
Indent stream.