00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifndef NewmarkSensitivityIntegrator_h
00035 #define NewmarkSensitivityIntegrator_h
00036
00037 #include <Newmark.h>
00038 #include <SensitivityIntegrator.h>
00039 class FE_Element;
00040 class DOF_Group;
00041 class Vector;
00042 class Information;
00043
00044
00045 class NewmarkSensitivityIntegrator : public SensitivityIntegrator , public Newmark
00046 {
00047 public:
00048 NewmarkSensitivityIntegrator();
00049 NewmarkSensitivityIntegrator(int assemblyFlag, double gamma, double beta, bool disp = true);
00050 NewmarkSensitivityIntegrator(int assemblyFlag, double gamma, double beta, double alphaM, double betaKcurrent,
00051 double betaKinit, double betaKlastCommit, bool disp = true);
00052 ~NewmarkSensitivityIntegrator();
00053
00054 int setParameter (char **argv, int argc, Information &info);
00055 int updateParameter (int parameterID, Information &info);
00056 int activateParameter (int parameterID);
00057
00058 int formEleResidual(FE_Element *theEle);
00059 int formNodUnbalance(DOF_Group *theDof);
00060
00061 int formSensitivityRHS(int gradNum);
00062 int formIndependentSensitivityRHS();
00063 int saveSensitivity (const Vector &v, int gradNum, int numGrads);
00064 int commitSensitivity (int gradNum, int numGrads);
00065
00066 protected:
00067
00068 private:
00069
00070 int parameterID;
00071 int sensitivityFlag;
00072 int gradNumber;
00073 Vector *massMatrixMultiplicator;
00074 Vector *dampingMatrixMultiplicator;
00075 int assemblyFlag;
00076 Vector independentRHS;
00077
00078 };
00079
00080 #endif
00081