MathTL
|
00001 // -*- c++ -*- 00002 00003 // +--------------------------------------------------------------------+ 00004 // | This file is part of MathTL - the Mathematical Template Library | 00005 // | | 00006 // | Copyright (c) 2002-2009 | 00007 // | Thorsten Raasch, Manuel Werner | 00008 // +--------------------------------------------------------------------+ 00009 00010 #ifndef _MATHTL_CORNER_SINGULARITY_BIHARMONIC_H 00011 #define _MATHTL_CORNER_SINGULARITY_BIHARMONIC_H 00012 00013 #include <geometry/point.h> 00014 #include <utils/function.h> 00015 00016 namespace MathTL 00017 { 00036 class CornerSingularityBiharmonic 00037 : public Function<2> 00038 { 00039 public: 00045 CornerSingularityBiharmonic(const Point<2>& x0, 00046 const double theta0, 00047 const double omega, 00048 const double r0 = 0.01, 00049 const double r1 = 0.99); 00050 00052 virtual ~CornerSingularityBiharmonic() {} 00053 00055 double value(const Point<2>& x, const unsigned int component = 0) const; 00056 00058 void vector_value(const Point<2>& p, Vector<double>& values) const; 00059 00060 protected: 00062 Point<2> x0; 00063 00065 double theta0; 00066 00068 double omega; 00069 00071 double r0, r1; 00072 00074 double zeta(const double r) const; 00075 }; 00076 00082 class CornerSingularityBiharmonicRHS 00083 : public Function<2> 00084 { 00085 public: 00091 CornerSingularityBiharmonicRHS(const Point<2>& x0, 00092 const double theta0, 00093 const double omega, 00094 const double r0 = 0.01, 00095 const double r1 = 0.99); 00096 00098 virtual ~CornerSingularityBiharmonicRHS() {} 00099 00101 double value(const Point<2>& x, const unsigned int component = 0) const; 00102 00104 void vector_value(const Point<2>& p, Vector<double>& values) const; 00105 00106 protected: 00108 Point<2> x0; 00109 00111 double theta0; 00112 00114 double omega; 00115 00117 double r0, r1; 00118 00120 double zeta(const double r) const; 00121 00123 double zeta_prime(const double r) const; 00124 00126 double zeta_primeprime(const double r) const; 00127 00129 double zeta_third_der(const double r) const; 00130 00132 double zeta_fourth_der(const double r) const; 00133 }; 00134 00135 } 00136 00137 // implementations of inline functions 00138 #include "numerics/corner_singularity_biharmonic.cpp" 00139 00140 #endif