00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #if !defined(GLLBASIS_HPP)
00012 #define GLLBASIS_HPP
00013 #include "gtypes.h"
00014 #include "gnbasis.hpp"
00015 #include "gtvector.hpp"
00016 #include "gtmatrix.hpp"
00017
00018 class GLLBasis: public GNBasis
00019 {
00020 public:
00021
00022 GLLBasis();
00023 GLLBasis(GINT inorder);
00024 GLLBasis(GINT inorder, GINT maxorder);
00025 GLLBasis(const GLLBasis &);
00026 virtual ~GLLBasis();
00027
00028 virtual void operator=(const GLLBasis &);
00029
00030 GDOUBLE GetXimin ();
00031 GDOUBLE GetXimax ();
00032 GINT GetOrder();
00033 GVector *GetXiNodes(GVector *);
00034 GDOUBLE *GetXiNodes(GDOUBLE *, GINT num);
00035 GTVector<GQUAD> *GetXiNodes();
00036 GVector *GetWeights(GVector *);
00037 GDOUBLE *GetWeights(GDOUBLE *, GINT num);
00038 GTVector<GQUAD> *GetWeights();
00039 GMatrix *GetStiffMatrix(GMatrix *);
00040
00041 GMatrix *GetDerivMatrix(GMatrix *);
00042
00043 GMatrix *GetLegMatrix(GMatrix *);
00044 void SetOrder(GINT );
00045 virtual GDOUBLE EvalBasis (GINT i, GDOUBLE xi);
00046 virtual GVector *EvalBasis (GINT i, GVector *xi, GVector *vret);
00047 virtual GMatrix *EvalBasis (GVector *eta, GMatrix *mret);
00048 virtual GMatrix *EvalDBasis(GVector *eta, GMatrix *mret);
00049 GBOOL Solve ();
00050
00051
00052
00053
00054
00055
00056 protected:
00057
00058 virtual GBOOL ComputeNodes ();
00059 virtual GBOOL ComputeWeights ();
00060 virtual GBOOL ComputeDerivMatrix ();
00061 virtual GBOOL ComputeLegendreMatrix ();
00062
00063 void ComputeJacobi(GINT &,GQUAD alpha, GQUAD beta, GQUAD &Pn,
00064 GQUAD &dPn, GQUAD &Pnm1, GQUAD &dPnm1, GQUAD &Pnm2,
00065 GQUAD &dPnm2, GQUAD &xi);
00066
00067 virtual GBOOL ComputeStiffMatrix();
00068
00069 virtual GBOOL Resize(GINT order);
00070
00071
00072
00073
00074 GINT Np;
00075 GINT NpMax;
00076 GINT kstop;
00077 GBOOL bNeedNodes;
00078 GBOOL bNeedWeights;
00079 GBOOL bNeedDerivMatrix;
00080 GBOOL bNeedBasis;
00081 GBOOL bNeedDBasis;
00082 GBOOL bNeedLegMat;
00083 GQUAD alpha;
00084 GQUAD beta;
00085 GQUAD ximin;
00086 GQUAD ximax;
00087 GQUAD eps;
00088 GBasisVector xiNodes;
00089 GBasisVector Weights;
00090 GBasisVector Pn;
00091 GBasisVector dPn;
00092 GBasisMatrix GXi;
00093 GBasisMatrix Phi;
00094 GBasisMatrix dPhi;
00095 GBasisMatrix MassMatrix;
00096 GBasisMatrix StiffMatrix;
00097 GBasisMatrix LegMatrix;
00098
00099
00100
00101
00102 };
00103
00104 #endif