SyFi 0.3
|
00001 // Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory. 00002 // Licensed under the GNU GPL Version 2, or (at your option) any later version. 00003 00004 #ifndef LAGRANGEFE_IS_INCLUDED 00005 #define LAGRANGEFE_IS_INCLUDED 00006 00007 #include "FE.h" 00008 00009 namespace SyFi 00010 { 00011 00012 class Lagrange : public StandardFE 00013 { 00014 public: 00015 Lagrange(); 00016 Lagrange(Polygon& p, unsigned int order = 1); 00017 virtual ~Lagrange() {} 00018 00019 virtual void compute_basis_functions(); 00020 }; 00021 00022 class VectorLagrange : public StandardFE 00023 { 00024 protected: 00025 unsigned int size; 00026 public: 00027 VectorLagrange(); 00028 VectorLagrange(Polygon& p, unsigned int order = 1, unsigned int size = 0); 00029 ~VectorLagrange() {} 00030 00031 virtual void set_size(unsigned int size_); 00032 virtual void compute_basis_functions(); 00033 }; 00034 00035 class TensorLagrange : public StandardFE 00036 { 00037 protected: 00038 unsigned int size; 00039 public: 00040 TensorLagrange(); 00041 TensorLagrange(Polygon& p, unsigned int order = 1, unsigned int size = 0); 00042 ~TensorLagrange() {} 00043 00044 virtual void set_size(unsigned int size_); 00045 virtual void compute_basis_functions(); 00046 }; 00047 00048 GiNaC::ex lagrange(unsigned int order, Polygon& p, const std::string & a); 00049 GiNaC::lst lagrangev(unsigned int no_fields, unsigned int order, Polygon& p, const std::string & a); 00050 00051 } // namespace SyFi 00052 #endif