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 #ifndef FEAPP_ABSTRACTINITPOSTOP_HPP
00033 #define FEAPP_ABSTRACTINITPOSTOP_HPP
00034
00035 #include <vector>
00036
00037 #include "FEApp_AbstractElement.hpp"
00038 #include "FEApp_NodeBC.hpp"
00039
00040 namespace FEApp {
00041
00042 template <typename ScalarT>
00043 class AbstractInitPostOp {
00044 public:
00045
00047 typedef ScalarT fill_type;
00048
00050 AbstractInitPostOp() {};
00051
00053 virtual ~AbstractInitPostOp() {};
00054
00056 virtual void elementInit(const FEApp::AbstractElement& e,
00057 unsigned int neqn,
00058 std::vector<ScalarT>* elem_xdot,
00059 std::vector<ScalarT>& elem_x) = 0;
00060
00062 virtual void elementPost(const FEApp::AbstractElement& e,
00063 unsigned int neqn,
00064 std::vector<ScalarT>& elem_f) = 0;
00065
00067 virtual void nodeInit(const FEApp::NodeBC& bc,
00068 unsigned int neqn,
00069 std::vector<ScalarT>* node_xdot,
00070 std::vector<ScalarT>& node_x) = 0;
00071
00073 virtual void nodePost(const FEApp::NodeBC& bc,
00074 unsigned int neqn,
00075 std::vector<ScalarT>& node_f) = 0;
00076
00077 private:
00078
00080 AbstractInitPostOp(const AbstractInitPostOp&);
00081
00083 AbstractInitPostOp& operator=(const AbstractInitPostOp&);
00084
00085 };
00086
00087 }
00088
00089 #endif // FEAPP_ABSTRACTINITPOSTOP_HPP