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 18:05] – 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 69: | Line 76: | ||
| 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 this matrix | + | From these derivatives |
| $$\mathbf{B} | $$\mathbf{B} | ||
| = \begin{pmatrix} | = \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 \\ | ||
| - | 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} \\ | + | \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} |
| \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_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} \\ | & \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} \\ | ||
| Line 113: | Line 120: | ||
| - | <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 | ||
| - | answer.resize(3, | ||
| - | |||
| - | 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, | ||
| - | } | ||
| - | </ | ||
| - | Part of header file... | + | Auxilary metods that needs to be overloaded: |
| <code c++> | <code c++> | ||
| | | ||
| Line 173: | 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.1409155525.txt.gz · Last modified: 2014/08/27 18:05 by jim_brouzoulis