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:58] – 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: | ||
- | Computation of the \(\mathbf{B}\) matrix: | + | Computation of the \(\mathbf{B}\)-matrix: |
This method is called '' | This method is called '' | ||
- | The derivatives of the shape functions | + | The derivatives of the shape functions |
<code c++> | <code c++> | ||
this-> | this-> | ||
Line 82: | Line 89: | ||
$$ | $$ | ||
+ | From these derivatives the \(\mathbf{B}\)-matrix can be constructed which for a three noded triangle with two dofs per node looks like | ||
+ | $$\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++> | <code c++> | ||
- | void | ||
- | BasicElement :: computeBmatrixAt(GaussPoint *gp, FloatMatrix & | ||
- | { | ||
- | /* Compute the [3x6] strain-displacement matrix {B} for the element, | ||
- | * evaluated at the given gp. | ||
- | * {B}*{a} should provide the strains {eps} in Voigt form | ||
- | * {eps} = {eps_xx, eps_yy, gam_xy}^T with {a} being the | ||
- | * solution vector of the element. | ||
- | */ | ||
- | | ||
- | /* Evaluate the derivatives of the shape functions at the position of the gp. | ||
- | * dNdx = [dN1/dx1 dN1/dx2 | ||
- | | ||
- | | ||
- | */ | ||
- | FloatMatrix dNdx; | ||
- | this-> | ||
- | |||
// Construct the B-matrix | // Construct the B-matrix | ||
answer.resize(3, | answer.resize(3, | ||
Line 118: | Line 116: | ||
answer.at(3, | answer.at(3, | ||
answer.at(3, | answer.at(3, | ||
- | } | ||
</ | </ | ||
- | Part of header file... | + | |
+ | |||
+ | |||
+ | Auxilary metods that needs to be overloaded: | ||
<code c++> | <code c++> | ||
| | ||
Line 142: | 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.1409155102.txt.gz · Last modified: 2014/08/27 17:58 by jim_brouzoulis