Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #ifndef ALBANY_SOLUTIONVALUESRESPONSEFUNCTION_HPP
00008 #define ALBANY_SOLUTIONVALUESRESPONSEFUNCTION_HPP
00009
00010 #include "Albany_SamplingBasedScalarResponseFunction.hpp"
00011
00012 #include "Albany_Application.hpp"
00013
00014 #include "Teuchos_ParameterList.hpp"
00015 #include "Teuchos_RCP.hpp"
00016
00017 class Epetra_Import;
00018
00019 namespace Albany {
00020
00021 class SolutionCullingStrategyBase;
00022
00026 class SolutionValuesResponseFunction :
00027 public SamplingBasedScalarResponseFunction {
00028 public:
00029
00031 SolutionValuesResponseFunction(
00032 const Teuchos::RCP<const Application>& app,
00033 Teuchos::ParameterList& responseParams);
00034
00036 virtual unsigned int numResponses() const;
00037
00039 virtual void setup();
00040
00042 virtual void
00043 evaluateResponse(const double current_time,
00044 const Epetra_Vector* xdot,
00045 const Epetra_Vector* xdotdot,
00046 const Epetra_Vector& x,
00047 const Teuchos::Array<ParamVec>& p,
00048 Epetra_Vector& g);
00049
00051 virtual void
00052 evaluateTangent(const double alpha,
00053 const double beta,
00054 const double omega,
00055 const double current_time,
00056 bool sum_derivs,
00057 const Epetra_Vector* xdot,
00058 const Epetra_Vector* xdotdot,
00059 const Epetra_Vector& x,
00060 const Teuchos::Array<ParamVec>& p,
00061 ParamVec* deriv_p,
00062 const Epetra_MultiVector* Vxdot,
00063 const Epetra_MultiVector* Vxdotdot,
00064 const Epetra_MultiVector* Vx,
00065 const Epetra_MultiVector* Vp,
00066 Epetra_Vector* g,
00067 Epetra_MultiVector* gx,
00068 Epetra_MultiVector* gp);
00069
00071 virtual void
00072 evaluateGradient(const double current_time,
00073 const Epetra_Vector* xdot,
00074 const Epetra_Vector* xdotdot,
00075 const Epetra_Vector& x,
00076 const Teuchos::Array<ParamVec>& p,
00077 ParamVec* deriv_p,
00078 Epetra_Vector* g,
00079 Epetra_MultiVector* dg_dx,
00080 Epetra_MultiVector* dg_dxdot,
00081 Epetra_MultiVector* dg_dxdotdot,
00082 Epetra_MultiVector* dg_dp);
00083
00084 private:
00086 SolutionValuesResponseFunction(const SolutionValuesResponseFunction&);
00087
00089 SolutionValuesResponseFunction& operator=(const SolutionValuesResponseFunction&);
00090
00091 Teuchos::RCP<const Application> app_;
00092
00093 Teuchos::RCP<SolutionCullingStrategyBase> cullingStrategy_;
00094 Teuchos::RCP<Epetra_Import> solutionImporter_;
00095
00096 void updateSolutionImporter();
00097 };
00098
00099 }
00100
00101 #endif // ALBANY_SOLUTIONVALUESRESPONSEFUNCTION_HPP