playground:tempjim
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
playground:tempjim [2014/08/27 17:35] – jim_brouzoulis | playground:tempjim [2014/08/28 21:53] (current) – jim_brouzoulis | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | \( | ||
+ | | ||
+ | \) | ||
+ | $$\b{a}_{\rm{i}} \rm{b} b$$ | ||
+ | |||
====== Implementation of a linear plane stress triangle ====== | ====== Implementation of a linear plane stress triangle ====== | ||
This tutorial will describe the implementation of a standard plane stress triangle with linear approximation of the displacement field. | This tutorial will describe the implementation of a standard plane stress triangle with linear approximation of the displacement field. | ||
+ | For quasi-static problems the following set of equations needs to be solved | ||
+ | $$\mathbf{f}_{\mathrm{int}} = \mathbf{f}_{\mathrm{ext}}$$ | ||
+ | with the internal and external force vectors respectively | ||
+ | $$\b{f}_{\rm{int}} = \int_V \b{B}^{\rm{T}} \b{\sigma} \ \rm{d}V $$ | ||
- | Each element, in the structural module (SM) needs to compute the following quantities: | + | $$\b{f}_{\rm{ext}} = \int_V \b{N}^{\rm{T}} \b{b} \ \rm{d}V |
+ | + \int_{\Gamma} \b{N}^{\rm{T}} \b{t} \ \rm{d}\Gamma $$ | ||
- | Internal load vector | + | The default solution procedure for solving the equations are a Newton-Rapshon scheme and for this the tangent |
- | $$\mathbf{f}_{\mathrm{int}} = \int_V \mathbf{B}^{\mathrm{T}} \mathbf{\sigma} \ \mathrm{d}V $$ | + | computed as |
- | + | ||
- | External load vector | + | |
- | $$\mathbf{f}_{\mathrm{ext}} = \int_V \mathbf{N}^{\mathrm{T}} \mathbf{b} \ \mathrm{d}V | + | |
- | + \int_{\Gamma} \mathbf{N}^{\mathrm{T}} \mathbf{t} \ \mathrm{d}\Gamma $$ | + | |
- | + | ||
- | Tangent | + | |
$$\mathbf{K} = \int_V \mathbf{B}^{\mathrm{T}} \mathbf{D} \mathbf{B} \ \mathrm{d}V $$ | $$\mathbf{K} = \int_V \mathbf{B}^{\mathrm{T}} \mathbf{D} \mathbf{B} \ \mathrm{d}V $$ | ||
- | + | Since the FE equations for all standard continuum elements (2D plane stress/ | |
- | Since the FE equations for all standard continuum elements (2D plane stress/ | + | of the element implementations are placed in the base class '' |
- | of the element implementations are placed in the base class '' | + | For example, this base class implements |
- | + | The main question that arises is then: what must a new element implement? In short it is everything that is element specific, such as | |
- | This class implements the integration over the volume | + | the following: |
* \(\mathbf{N}\) and \(\mathbf{B}\) matrices | * \(\mathbf{N}\) and \(\mathbf{B}\) matrices | ||
- | | + | * These depends on the number of nodes and the number o dofs stored in each node. |
+ | | ||
+ | * This defines what type of integration alogorithm | ||
+ | * if there should be several algorithms to support reduced integration for example. | ||
* Compute the differential volume element \(\Delta V \) and \(\Delta \Gamma \) | * Compute the differential volume element \(\Delta V \) and \(\Delta \Gamma \) | ||
Line 66: | Line 73: | ||
- | Evaluate | + | Computation of the \(\mathbf{B}\)-matrix: |
+ | This method is called '' | ||
+ | |||
+ | The derivatives of the shape functions | ||
+ | <code c++> | ||
+ | this-> | ||
+ | </ | ||
$$\frac{d \mathbf{N}}{d \mathbf{x}} | $$\frac{d \mathbf{N}}{d \mathbf{x}} | ||
= \begin{pmatrix} | = \begin{pmatrix} | ||
Line 74: | Line 88: | ||
\end{pmatrix} | \end{pmatrix} | ||
$$ | $$ | ||
- | = [dN1/dx1 dN1/dx2 | + | |
- | * | + | From these derivatives the \(\mathbf{B}\)-matrix can be constructed which for a three noded triangle with two dofs per node looks like |
- | * dN3/dx1 dN3/dx2] | + | $$\mathbf{B} |
- | | + | = \begin{pmatrix} |
+ | \frac{\mathrm{d}N_1}{\mathrm{d}x_1} & 0 & \frac{\mathrm{d}N_2}{\mathrm{d}x_1} & 0 & \frac{\mathrm{d}N_3}{\mathrm{d}x_1} & 0 \\ | ||
+ | \frac{\mathrm{d}N_1}{\mathrm{d}x_1} & 0 & \frac{\mathrm{d}N_2}{\mathrm{d}x_1} & 0 & \frac{\mathrm{d}N_3}{\mathrm{d}x_1} & 0\\ | ||
+ | \frac{\mathrm{d}N_1}{\mathrm{d}x_2} & \frac{\mathrm{d}N_1}{\mathrm{d}x_1} & \frac{\mathrm{d}N_2}{\mathrm{d}x_2} | ||
+ | & \frac{\mathrm{d}N_2}{\mathrm{d}x_1} & \frac{\mathrm{d}N_3}{\mathrm{d}x_2} & \frac{\mathrm{d}N_3}{\mathrm{d}x_1} \\ | ||
+ | \end{pmatrix} | ||
+ | $$ | ||
+ | <code c++> | ||
+ | | ||
+ | | ||
+ | |||
+ | answer.at(1, | ||
+ | answer.at(1, | ||
+ | answer.at(1, | ||
+ | |||
+ | answer.at(2, | ||
+ | answer.at(2, | ||
+ | answer.at(2, | ||
+ | |||
+ | answer.at(3, | ||
+ | answer.at(3, | ||
+ | answer.at(3, | ||
+ | answer.at(3, | ||
+ | answer.at(3, | ||
+ | answer.at(3, | ||
+ | </code> | ||
+ | |||
+ | |||
- | Part of header file... | + | Auxilary metods that needs to be overloaded: |
<code c++> | <code c++> | ||
| | ||
Line 100: | Line 142: | ||
virtual int testElementExtension(ElementExtension ext) { return ( ( ext == Element_EdgeLoadSupport ) ? 1 : 0 ); } | virtual int testElementExtension(ElementExtension ext) { return ( ( ext == Element_EdgeLoadSupport ) ? 1 : 0 ); } | ||
</ | </ | ||
+ | |||
+ | <file - BasicElement.C> | ||
+ | </ | ||
+ | |||
+ | <file - BasicElement.h> | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Problem representation - Engineering model ===== | ||
+ | |||
+ | The concept " | ||
+ | consideration. It represents the type of analysis to be performed (e.g. static structural, transient heat flow, etc.). | ||
+ | The base class '' | ||
+ | characteristic components and services for starting the solution step and | ||
+ | its termination. Derived classes ``know'' | ||
+ | equation and the physical meaning of particular components. | ||
+ | They are responsible for forming the governing equation for each solution | ||
+ | step, usually by summing contributions from particular elements and | ||
+ | nodes.ecific load type dependent | ||
+ | services and implement all necessary services. | ||
playground/tempjim.1409153712.txt.gz · Last modified: 2014/08/27 17:35 by jim_brouzoulis