void Albany::SolutionMaxValueResponseFunction:: evaluateResponse(const double current_time, const Epetra_Vector* xdot, const Epetra_Vector* xdotdot, const Epetra_Vector& x, const Teuchos::Array<ParamVec>& p, Epetra_Vector& g) { int index; computeMaxValue(x, g[0], index); }
FloatFormat::FloatFormat (int minExp, int maxExp, int fractionBits, bool exactPrecision, YesNoMaybe hasSubnormal_, YesNoMaybe hasInf_, YesNoMaybe hasNaN_) : m_minExp (minExp) , m_maxExp (maxExp) , m_fractionBits (fractionBits) , m_hasSubnormal (hasSubnormal_) , m_hasInf (hasInf_) , m_hasNaN (hasNaN_) , m_exactPrecision (exactPrecision) , m_maxValue (computeMaxValue(maxExp, fractionBits)) { DE_ASSERT(minExp <= maxExp); }
void Albany::SolutionMaxValueResponseFunction:: evaluateGradient(const double current_time, const Epetra_Vector* xdot, const Epetra_Vector* xdotdot, const Epetra_Vector& x, const Teuchos::Array<ParamVec>& p, ParamVec* deriv_p, Epetra_Vector* g, Epetra_MultiVector* dg_dx, Epetra_MultiVector* dg_dxdot, Epetra_MultiVector* dg_dxdotdot, Epetra_MultiVector* dg_dp) { int global_index; double mxv; computeMaxValue(x, mxv, global_index); // Evaluate response g if (g != NULL) (*g)[0] = mxv; // Evaluate dg/dx if (dg_dx != NULL) { dg_dx->PutScalar(0.0); int lid = x.Map().LID(global_index); if(lid >= 0) (*dg_dx)[0][lid] = 1.0; } // Evaluate dg/dxdot if (dg_dxdot != NULL) dg_dxdot->PutScalar(0.0); if (dg_dxdotdot != NULL) dg_dxdotdot->PutScalar(0.0); // Evaluate dg/dp if (dg_dp != NULL) dg_dp->PutScalar(0.0); }