31 double locValue = Sacado::scalarValue(value);
32 double glbValue = 0.0;
36 Teuchos::reduceAll(*this->getComm(), Teuchos::REDUCE_MAX,
static_cast<Thyra::Ordinal
>(1), &locValue,&glbValue);
38 Teuchos::reduceAll(*this->getComm(), Teuchos::REDUCE_MIN,
static_cast<Thyra::Ordinal
>(1), &locValue,&glbValue);
42#ifdef PANZER_HAVE_EPETRA_STACK
44 if(this->useEpetra()) {
46 this->getEpetraVector()[0] = glbValue;
52 TEUCHOS_ASSERT(this->useThyra());
54 this->getThyraVector()[0] = glbValue;
62 using Teuchos::rcp_dynamic_cast;
64 Teuchos::RCP<Thyra::MultiVectorBase<double> > dgdx_unique = getDerivative();
66 uniqueContainer_ = linObjFactory_->buildLinearObjContainer();
67 Teuchos::rcp_dynamic_cast<ThyraObjContainer<double> >(uniqueContainer_)->set_x_th(dgdx_unique->col(0));
71 uniqueContainer_ = Teuchos::null;
79 using Teuchos::rcp_dynamic_cast;
81 Teuchos::RCP<Thyra::MultiVectorBase<double> > dgdx_unique = getDerivative();
83 uniqueContainer_ = linObjFactory_->buildLinearObjContainer();
84 Teuchos::rcp_dynamic_cast<ThyraObjContainer<double> >(uniqueContainer_)->set_x_th(dgdx_unique->col(0));
88 uniqueContainer_ = Teuchos::null;
96 const int n = value.size();
97 const int num_deriv = this->numDeriv();
98 TEUCHOS_ASSERT(n == 0 || n == num_deriv);
103 Teuchos::reduceAll(*this->getComm(), Teuchos::REDUCE_MAX, Thyra::Ordinal(1), &value.val(), &glbValue.val());
105 Teuchos::reduceAll(*this->getComm(), Teuchos::REDUCE_MIN, Thyra::Ordinal(1), &value.val(), &glbValue.val());
109 int locProc = value.val() == glbValue.val() ? this->getComm()->getRank() : this->getComm()->getSize();
111 Teuchos::reduceAll(*this->getComm(), Teuchos::REDUCE_MIN, Thyra::Ordinal(1), &locProc, &glbProc);
114 Teuchos::broadcast(*this->getComm(), glbProc, Thyra::Ordinal(n), &glbValue.fastAccessDx(0));
120#ifdef PANZER_HAVE_EPETRA_STACK
121 if(this->useEpetra()) {
124 for (
int i=0; i<num_deriv; ++i)
125 deriv[i][0] = glbValue.dx(i);
131 TEUCHOS_ASSERT(this->useThyra());
132 Thyra::ArrayRCP< Thyra::ArrayRCP<double> > deriv = this->getThyraMultiVector();
133 for (
int i=0; i<num_deriv; ++i)
134 deriv[i][0] = glbValue.dx(i);