Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #ifndef ALBANY_AGGREGATE_SCALAR_RESPONSE_FUNCTION_HPP
00008 #define ALBANY_AGGREGATE_SCALAR_RESPONSE_FUNCTION_HPP
00009
00010 #include "Albany_SamplingBasedScalarResponseFunction.hpp"
00011 #include "Teuchos_Array.hpp"
00012
00013 namespace Albany {
00014
00019 class AggregateScalarResponseFunction :
00020 public SamplingBasedScalarResponseFunction {
00021 public:
00022
00024 AggregateScalarResponseFunction(
00025 const Teuchos::RCP<const Epetra_Comm>& comm,
00026 const Teuchos::Array< Teuchos::RCP<ScalarResponseFunction> >& responses);
00027
00029 virtual void setup();
00030
00032 virtual ~AggregateScalarResponseFunction();
00033
00035 virtual unsigned int numResponses() const;
00036
00038 virtual void
00039 evaluateResponse(const double current_time,
00040 const Epetra_Vector* xdot,
00041 const Epetra_Vector* xdotdot,
00042 const Epetra_Vector& x,
00043 const Teuchos::Array<ParamVec>& p,
00044 Epetra_Vector& g);
00045
00047 virtual void
00048 evaluateTangent(const double alpha,
00049 const double beta,
00050 const double omega,
00051 const double current_time,
00052 bool sum_derivs,
00053 const Epetra_Vector* xdot,
00054 const Epetra_Vector* xdotdot,
00055 const Epetra_Vector& x,
00056 const Teuchos::Array<ParamVec>& p,
00057 ParamVec* deriv_p,
00058 const Epetra_MultiVector* Vxdot,
00059 const Epetra_MultiVector* Vxdotdot,
00060 const Epetra_MultiVector* Vx,
00061 const Epetra_MultiVector* Vp,
00062 Epetra_Vector* g,
00063 Epetra_MultiVector* gx,
00064 Epetra_MultiVector* gp);
00065
00067 virtual void
00068 evaluateGradient(const double current_time,
00069 const Epetra_Vector* xdot,
00070 const Epetra_Vector* xdotdot,
00071 const Epetra_Vector& x,
00072 const Teuchos::Array<ParamVec>& p,
00073 ParamVec* deriv_p,
00074 Epetra_Vector* g,
00075 Epetra_MultiVector* dg_dx,
00076 Epetra_MultiVector* dg_dxdot,
00077 Epetra_MultiVector* dg_dxdotdot,
00078 Epetra_MultiVector* dg_dp);
00079
00080 private:
00081
00083 AggregateScalarResponseFunction(const AggregateScalarResponseFunction&);
00084
00086 AggregateScalarResponseFunction& operator=(const AggregateScalarResponseFunction&);
00087
00088 protected:
00089
00091 Teuchos::Array< Teuchos::RCP<ScalarResponseFunction> > responses;
00092
00093 };
00094
00095 }
00096
00097 #endif // ALBANY_AGGREGATE_SCALAR_RESPONSE_FUNCTION_HPP