oomph::TElementShape< 3, 3 > Class Reference

Return local coordinates of node j. More...

#include <Telements.h>

Public Member Functions

void local_coordinate_of_node (const unsigned &j, Vector< double > &s) const
 
void shape (const Vector< double > &s, Shape &psi) const
 Shape function for specific TElement<3,3> More...
 
void dshape_local (const Vector< double > &s, Shape &psi, DShape &dpsids) const
 Derivatives of shape functions for specific TElement<3,3> More...
 
void d2shape_local (const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids) const
 

Detailed Description

Return local coordinates of node j.

Member Function Documentation

◆ d2shape_local()

void oomph::TElementShape< 3, 3 >::d2shape_local ( const Vector< double > &  s,
Shape psi,
DShape dpsids,
DShape d2psids 
) const
inline

Second derivatives of shape functions for specific TElement<3,3>: d2psids(i,0) = \( \partial^2 \psi_j / \partial s_0^2 \) d2psids(i,1) = \( \partial^2 \psi_j / \partial s_1^2 \) d2psids(i,2) = \( \partial^2 \psi_j / \partial s_2^2 \) d2psids(i,3) = \( \partial^2 \psi_j / \partial s_0 \partial s_1 \) d2psids(i,4) = \( \partial^2 \psi_j / \partial s_0 \partial s_2 \) d2psids(i,5) = \( \partial^2 \psi_j / \partial s_1 \partial s_2 \)

2215  {
2216  // ALH: Don't know why object qualifier is needed
2217  this->dshape_local(s, psi, dpsids);
2218 
2219  //(.,3) for mixed derivative s[0]-s[1]
2220  //(.,4) for mixed derivative s[0]-s[2]
2221  //(.,5) for mixed derivative s[1]-s[2]
2222 
2223  d2psids(0, 0) = 4.0;
2224  d2psids(0, 1) = 0.0;
2225  d2psids(0, 2) = 0.0;
2226  d2psids(0, 3) = 0.0;
2227  d2psids(0, 4) = 0.0;
2228  d2psids(0, 5) = 0.0;
2229 
2230 
2231  d2psids(1, 0) = 0.0;
2232  d2psids(1, 1) = 4.0;
2233  d2psids(1, 2) = 0.0;
2234  d2psids(1, 3) = 0.0;
2235  d2psids(1, 4) = 0.0;
2236  d2psids(1, 5) = 0.0;
2237 
2238  d2psids(2, 0) = 0.0;
2239  d2psids(2, 1) = 0.0;
2240  d2psids(2, 2) = 4.0;
2241  d2psids(2, 3) = 0.0;
2242  d2psids(2, 4) = 0.0;
2243  d2psids(2, 5) = 0.0;
2244 
2245  d2psids(3, 0) = 4.0;
2246  d2psids(3, 1) = 4.0;
2247  d2psids(3, 2) = 4.0;
2248  d2psids(3, 3) = 4.0;
2249  d2psids(3, 4) = 4.0;
2250  d2psids(3, 5) = 4.0;
2251 
2252  d2psids(4, 0) = 0.0;
2253  d2psids(4, 1) = 0.0;
2254  d2psids(4, 2) = 0.0;
2255  d2psids(4, 3) = 4.0;
2256  d2psids(4, 4) = 0.0;
2257  d2psids(4, 5) = 0.0;
2258 
2259  d2psids(5, 0) = 0.0;
2260  d2psids(5, 1) = 0.0;
2261  d2psids(5, 2) = 0.0;
2262  d2psids(5, 3) = 0.0;
2263  d2psids(5, 4) = 4.0;
2264  d2psids(5, 5) = 0.0;
2265 
2266  d2psids(6, 0) = -8.0;
2267  d2psids(6, 1) = 0.0;
2268  d2psids(6, 2) = 0.0;
2269  d2psids(6, 3) = -4.0;
2270  d2psids(6, 4) = -4.0;
2271  d2psids(6, 5) = 0.0;
2272 
2273  d2psids(7, 0) = 0.0;
2274  d2psids(7, 1) = 0.0;
2275  d2psids(7, 2) = 0.0;
2276  d2psids(7, 3) = 0.0;
2277  d2psids(7, 4) = 0.0;
2278  d2psids(7, 5) = 4.0;
2279 
2280  d2psids(8, 0) = 0.0;
2281  d2psids(8, 1) = 0.0;
2282  d2psids(8, 2) = -8.0;
2283  d2psids(8, 3) = 0.0;
2284  d2psids(8, 4) = -4.0;
2285  d2psids(8, 5) = -4.0;
2286 
2287  d2psids(9, 0) = 0.0;
2288  d2psids(9, 1) = -8.0;
2289  d2psids(9, 2) = 0.0;
2290  d2psids(9, 3) = -4.0;
2291  d2psids(9, 4) = 0.0;
2292  d2psids(9, 5) = -4.0;
2293  }
void dshape_local(const Vector< double > &s, Shape &psi, DShape &dpsids) const
Derivatives of shape functions for specific TElement<3,3>
Definition: Telements.h:2152

References s.

◆ dshape_local()

void oomph::TElementShape< 3, 3 >::dshape_local ( const Vector< double > &  s,
Shape psi,
DShape dpsids 
) const
inline

Derivatives of shape functions for specific TElement<3,3>

2153  {
2154  // ALH: Don't know why object qualifier is needed
2155  this->shape(s, psi);
2156 
2157  // Derivatives
2158  double s3 = 1.0 - s[0] - s[1] - s[2];
2159 
2160  dpsids(0, 0) = 4.0 * s[0] - 1.0;
2161  dpsids(0, 1) = 0.0;
2162  dpsids(0, 2) = 0.0;
2163 
2164  dpsids(1, 0) = 0.0;
2165  dpsids(1, 1) = 4.0 * s[1] - 1.0;
2166  dpsids(1, 2) = 0.0;
2167 
2168  dpsids(2, 0) = 0.0;
2169  dpsids(2, 1) = 0.0;
2170  dpsids(2, 2) = 4.0 * s[2] - 1.0;
2171 
2172  dpsids(3, 0) = -4.0 * s3 + 1.0;
2173  dpsids(3, 1) = -4.0 * s3 + 1.0;
2174  dpsids(3, 2) = -4.0 * s3 + 1.0;
2175 
2176  dpsids(4, 0) = 4.0 * s[1];
2177  dpsids(4, 1) = 4.0 * s[0];
2178  dpsids(4, 2) = 0.0;
2179 
2180  dpsids(5, 0) = 4.0 * s[2];
2181  dpsids(5, 1) = 0.0;
2182  dpsids(5, 2) = 4.0 * s[0];
2183 
2184  dpsids(6, 0) = 4.0 * (s3 - s[0]);
2185  dpsids(6, 1) = -4.0 * s[0];
2186  dpsids(6, 2) = -4.0 * s[0];
2187 
2188  dpsids(7, 0) = 0.0;
2189  dpsids(7, 1) = 4.0 * s[2];
2190  dpsids(7, 2) = 4.0 * s[1];
2191 
2192  dpsids(8, 0) = -4.0 * s[2];
2193  dpsids(8, 1) = -4.0 * s[2];
2194  dpsids(8, 2) = 4.0 * (s3 - s[2]);
2195 
2196  dpsids(9, 0) = -4.0 * s[1];
2197  dpsids(9, 1) = 4.0 * (s3 - s[1]);
2198  dpsids(9, 2) = -4.0 * s[1];
2199  }
void shape(const Vector< double > &s, Shape &psi) const
Shape function for specific TElement<3,3>
Definition: Telements.h:2133
RealScalar s
Definition: level1_cplx_impl.h:130

References s, and oomph::OneDimLagrange::shape().

◆ local_coordinate_of_node()

void oomph::TElementShape< 3, 3 >::local_coordinate_of_node ( const unsigned j,
Vector< double > &  s 
) const
inline
2052  {
2053  s.resize(3);
2054 
2055  switch (j)
2056  {
2057  case 0:
2058  s[0] = 1.0;
2059  s[1] = 0.0;
2060  s[2] = 0.0;
2061  break;
2062 
2063  case 1:
2064  s[0] = 0.0;
2065  s[1] = 1.0;
2066  s[2] = 0.0;
2067  break;
2068 
2069  case 2:
2070  s[0] = 0.0;
2071  s[1] = 0.0;
2072  s[2] = 1.0;
2073  break;
2074 
2075  case 3:
2076  s[0] = 0.0;
2077  s[1] = 0.0;
2078  s[2] = 0.0;
2079  break;
2080 
2081  case 4:
2082  s[0] = 0.5;
2083  s[1] = 0.5;
2084  s[2] = 0.0;
2085  break;
2086 
2087  case 5:
2088  s[0] = 0.5;
2089  s[1] = 0.0;
2090  s[2] = 0.5;
2091  break;
2092 
2093  case 6:
2094  s[0] = 0.5;
2095  s[1] = 0.0;
2096  s[2] = 0.0;
2097  break;
2098 
2099  case 7:
2100  s[0] = 0.0;
2101  s[1] = 0.5;
2102  s[2] = 0.5;
2103  break;
2104 
2105  case 8:
2106  s[0] = 0.0;
2107  s[1] = 0.0;
2108  s[2] = 0.5;
2109  break;
2110 
2111  case 9:
2112  s[0] = 0.0;
2113  s[1] = 0.5;
2114  s[2] = 0.0;
2115  break;
2116 
2117  default:
2118  std::ostringstream error_message;
2119  error_message
2120  << "Element only has ten nodes; called with node number " << j
2121  << std::endl;
2122 
2123  throw OomphLibError(error_message.str(),
2126  }
2127  }
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References j, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and s.

◆ shape()

void oomph::TElementShape< 3, 3 >::shape ( const Vector< double > &  s,
Shape psi 
) const
inline

Shape function for specific TElement<3,3>

2134  {
2135  double s3 = 1.0 - s[0] - s[1] - s[2];
2136  psi[0] = (2.0 * s[0] - 1.0) * s[0];
2137  psi[1] = (2.0 * s[1] - 1.0) * s[1];
2138  psi[2] = (2.0 * s[2] - 1.0) * s[2];
2139  psi[3] = (2.0 * s3 - 1.0) * s3;
2140  psi[4] = 4.0 * s[0] * s[1];
2141  psi[5] = 4.0 * s[0] * s[2];
2142  psi[6] = 4.0 * s[0] * s3;
2143  psi[7] = 4.0 * s[1] * s[2];
2144  psi[8] = 4.0 * s[2] * s3;
2145  psi[9] = 4.0 * s[1] * s3;
2146  }

References s.


The documentation for this class was generated from the following file: