00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <Q1Quadrangle3DFiniteElement.hpp>
00021
00022 TinyVector<3, real_t> Q1Quadrangle3DFiniteElement::__massCenter(0.5, 0.5, 0);
00023
00024 real_t
00025 Q1Quadrangle3DFiniteElement::W(const size_t& i, const TinyVector<3>& X) const
00026 {
00027 const real_t& x = X[0];
00028 const real_t& y = X[1];
00029
00030 switch (i) {
00031 case 0: {
00032 return (1-x)*(1-y);
00033 }
00034 case 1: {
00035 return x*(1-y);
00036 }
00037 case 2: {
00038 return x*y;
00039 }
00040 case 3: {
00041 return (1-x)*y;
00042 }
00043 default: {
00044 throw ErrorHandler(__FILE__,__LINE__,
00045 "unexpected basis function number",
00046 ErrorHandler::unexpected);
00047 return 0.;
00048 }
00049 }
00050 }
00051
00052 real_t
00053 Q1Quadrangle3DFiniteElement::dxW(const size_t& i, const TinyVector<3>& X) const
00054 {
00055 const real_t& y = X[1];
00056
00057 switch (i) {
00058 case 0: {
00059 return -(1-y);
00060 }
00061 case 1: {
00062 return (1-y);
00063 }
00064 case 2: {
00065 return y;
00066 }
00067 case 3: {
00068 return -y;
00069 }
00070 default: {
00071 throw ErrorHandler(__FILE__,__LINE__,
00072 "unexpected basis function number",
00073 ErrorHandler::unexpected);
00074 return 0.;
00075 }
00076 }
00077 }
00078
00079 real_t
00080 Q1Quadrangle3DFiniteElement::dyW(const size_t& i, const TinyVector<3>& X) const
00081 {
00082 const real_t& x = X[0];
00083
00084 switch (i) {
00085 case 0: {
00086 return -(1-x);
00087 }
00088 case 1: {
00089 return -x;
00090 }
00091 case 2: {
00092 return x;
00093 }
00094 case 3: {
00095 return (1-x);
00096 }
00097 default: {
00098 throw ErrorHandler(__FILE__,__LINE__,
00099 "unexpected basis function number",
00100 ErrorHandler::unexpected);
00101 return 0.;
00102 }
00103 }
00104 }
00105
00106 real_t
00107 Q1Quadrangle3DFiniteElement::dzW(const size_t& i, const TinyVector<3>& X) const
00108 {
00109 switch (i) {
00110 case 0:
00111 case 1:
00112 case 2:
00113 case 3: {
00114 return 0;
00115 }
00116 default: {
00117 throw ErrorHandler(__FILE__,__LINE__,
00118 "unexpected basis function number",
00119 ErrorHandler::unexpected);
00120 return 0.;
00121 }
00122 }
00123 }