diff --git a/src/oops/assimilation/BMatrix.h b/src/oops/assimilation/BMatrix.h index c0c5e53a..74a58047 100644 --- a/src/oops/assimilation/BMatrix.h +++ b/src/oops/assimilation/BMatrix.h @@ -16,6 +16,7 @@ #include "oops/assimilation/ControlIncrement.h" #include "oops/assimilation/CostFunction.h" #include "oops/base/ObsAuxCovariances.h" +#include "oops/util/Logger.h" namespace oops { @@ -33,7 +34,13 @@ template class BMatrix : private boost::noncopyabl public: explicit BMatrix(const CostFct_ & j): j_(j) {} void multiply(const CtrlInc_ & x, CtrlInc_ & bx) const { +//tothink + Log::trace() << "BMatrix:: multiply start" <::evaluate(CtrlVar_ & fguess, template void CostFunction::computeGradientFG(CtrlInc_ & grad) const { - Log::trace() << "CostFunction::computeGradientFG start" << std::endl; + Log::trace() << "CostFunction::computeGradientFG start clt" << std::endl; + Log::trace() << "CostFunction::computeGradientFG start clt grad.var " << grad.state().variables()< pp; PostProcessorTLAD costad; this->zeroAD(grad); @@ -290,7 +291,9 @@ void CostFunction::computeGradientFG(CtrlInc_ & grad) const { jterms_[jj]->computeCostAD(tmp, grad, costad); } + Log::trace() << "CostFunction::computeGradientFG start clt beforerunADJ grad " << grad.state().variables()<runADJ(grad, costad, pp); + Log::trace() << "CostFunction::computeGradientFG start clt afterunADJ grad " << grad.state().variables()<setPostProcAD(); diff --git a/src/oops/assimilation/DRPCGMinimizer.h b/src/oops/assimilation/DRPCGMinimizer.h index 9cee7dc3..322e31cd 100644 --- a/src/oops/assimilation/DRPCGMinimizer.h +++ b/src/oops/assimilation/DRPCGMinimizer.h @@ -172,14 +172,17 @@ double DRPCGMinimizer::solve(CtrlInc_ & dx, CtrlInc_ & dxh, CtrlInc_ scals.push_back(1.0/dotRr0); Log::info() << std::endl; + Log::trace() << " DRPCG Starting Iteration0 0.0dxh" < 0) { // beta_{i} = r_{i+1}^T z_{i+1} / r_{i}^T z_{i} double beta = rdots/rdots_old; @@ -193,6 +196,8 @@ double DRPCGMinimizer::solve(CtrlInc_ & dx, CtrlInc_ & dxh, CtrlInc_ hh += pr; } + Log::trace() << " DRPCG Starting Iteration0 0.7pp" <::solve(CtrlInc_ & dx, CtrlInc_ & dxh, CtrlInc_ double alpha = rdots/rho; // dx_{i+1} = dx_{i} + alpha * p_{i} + Log::trace() << " DRPCG Starting Iteration0 1.9dx" <::solve(CtrlInc_ & dx, CtrlInc_ & dxh, CtrlInc_ double costJb = costJ0Jb + dot_product(dx, gradJb) + 0.5 * dot_product(dx, dxh); // Jo[dx_{i}] + Jc[dx_{i}] = J[dx_{i}] - Jb[dx_{i}] double costJoJc = costJ - costJb; + Log::trace() << " DRPCG Starting Iteration0 2.0rr" <::solve(CtrlInc_ & dx, CtrlInc_ & dxh, CtrlInc_ rr.axpy(-proj, vvecs[jj]); } + Log::trace() << " DRPCG Starting Iteration0 2.5" << jiter << std::endl; + Log::trace() << " DRPCG Starting Iteration0 2.5pr" <::EnsembleCovariance(const Geometry_ & resol, const Var ens_.reset(new IncrementSet(resol, vars, tmp, true)); *ens_ -= ens_->ens_mean(); + for (size_t i = 0; i < ens_->size(); ++i) { //cltthink + auto member = (*ens_)[i]; + Log::trace()<<"EnsembleCovariance::EnsembleCovariance start ith dx "<::EnsembleCovariance(const Geometry_ & resol, const Var } loc_.reset(new Localization_(resol, locVars, locconf)); } + Log::trace() << "EnsembleCovariance::EnsembleCovariance vars " <setObjectSize(current - init); diff --git a/src/oops/base/GetValuePosts.h b/src/oops/base/GetValuePosts.h index 8e8dd2c8..138697e4 100644 --- a/src/oops/base/GetValuePosts.h +++ b/src/oops/base/GetValuePosts.h @@ -31,6 +31,8 @@ class GetValuesParameters : public oops::Parameters { public: Parameter variableChange{"variable change", eckit::LocalConfiguration(), this}; + Parameter linearvariableChange{"linear variable change", + eckit::LocalConfiguration(), this}; }; /// \brief Fills GeoVaLs with requested variables at requested locations during model run diff --git a/src/oops/base/GetValueTLADs.h b/src/oops/base/GetValueTLADs.h index 4241191f..e36c6340 100644 --- a/src/oops/base/GetValueTLADs.h +++ b/src/oops/base/GetValueTLADs.h @@ -64,6 +64,7 @@ class GetValueTLADs : public PostBaseTLAD { std::vector getvals_; std::map chvartlad_; const eckit::LocalConfiguration cvConf_; + const eckit::LocalConfiguration linearcvConf_; }; // ----------------------------------------------------------------------------- @@ -71,8 +72,9 @@ template GetValueTLADs::GetValueTLADs(const GetValuesParameters & params, const util::DateTime & bgn, const util::DateTime & end) : PostBaseTLAD(bgn, end), geovars_(), linvars_(), getvals_(), chvartlad_(), - cvConf_(params.variableChange.value()) + linearcvConf_(params.linearvariableChange.value()),cvConf_(params.variableChange.value()) { + Log::trace() << "GetValueTLADs::GetValueTLADs clt linarcvConf_ " <::append(GetValPtr_ getval) { getvals_.push_back(getval); geovars_ += getval->requiredVariables(); linvars_ += getval->linearVariables(); + Log::trace() << "GetValuePosts::append start geovars_ " <::doProcessingTraj(const State_ & xx) { for (GetValPtr_ getval : getvals_) getval->process(zz); - CVarPtr_ cvtlad(new LinearVariableChange(xx.geometry(), cvConf_)); + CVarPtr_ cvtlad(new LinearVariableChange(xx.geometry(), linearcvConf_)); cvtlad->changeVarTraj(xx, linvars_); chvartlad_[xx.validTime()] = std::move(cvtlad); @@ -170,6 +174,7 @@ void GetValueTLADs::doProcessingAD(Increment_ & dx) { Log::trace() << "GetValueTLADs::doProcessingAD start" << std::endl; const util::DateTime now = dx.validTime(); ASSERT(chvartlad_.find(now) != chvartlad_.end()); + Log::trace() << "GetValueTLADs::doProcessingAD linearvars" < void GetValues::processAD(Increment_ & dx) { Log::trace() << "GetValues::processAD start" << std::endl; util::Timer timer("oops::GetValues", "processAD"); + Log::trace() << "GetValues::processAD startclt variables " < void ObserversTLAD::initializeTraj(const Geometry_ & geom, const ObsAuxCtrls_ & ybias, PostProcTLAD_ & pp) { Log::trace() << "ObserversTLAD::initializeTraj start" << std::endl; + Log::trace() << "ObserversTLAD::initializeTraj clt params " << getValuesParams_<::Increment(const Geometry_ & resol, const Variables & vars, { Log::trace() << "Increment::Increment starting" << std::endl; util::Timer timer(classname(), "Increment"); + Log::trace() << "Increment::Increment vars " <setObjectSize(increment_->serialSize()*sizeof(double)); Log::trace() << "Increment::Increment done" << std::endl;