OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
feinterpol.C
Go to the documentation of this file.
1 /*
2  *
3  * ##### ##### ###### ###### ### ###
4  * ## ## ## ## ## ## ## ### ##
5  * ## ## ## ## #### #### ## # ##
6  * ## ## ## ## ## ## ## ##
7  * ## ## ## ## ## ## ## ##
8  * ##### ##### ## ###### ## ##
9  *
10  *
11  * OOFEM : Object Oriented Finite Element Code
12  *
13  * Copyright (C) 1993 - 2013 Borek Patzak
14  *
15  *
16  *
17  * Czech Technical University, Faculty of Civil Engineering,
18  * Department of Structural Mechanics, 166 29 Prague, Czech Republic
19  *
20  * This library is free software; you can redistribute it and/or
21  * modify it under the terms of the GNU Lesser General Public
22  * License as published by the Free Software Foundation; either
23  * version 2.1 of the License, or (at your option) any later version.
24  *
25  * This program is distributed in the hope that it will be useful,
26  * but WITHOUT ANY WARRANTY; without even the implied warranty of
27  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
28  * Lesser General Public License for more details.
29  *
30  * You should have received a copy of the GNU Lesser General Public
31  * License along with this library; if not, write to the Free Software
32  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
33  */
34 
35 #include "feinterpol.h"
36 #include "element.h"
37 #include "gaussintegrationrule.h"
38 
39 namespace oofem {
41 
42 double
44 {
45  FloatMatrix jacobianMatrix;
46  this->giveJacobianMatrixAt(jacobianMatrix, lcoords, cellgeo);
47  return jacobianMatrix.giveDeterminant();
48 }
49 
50 
53 {
54  integrationDomain id = this->giveIntegrationDomain();
55  IntegrationRule *iRule = new GaussIntegrationRule(1, NULL);
56 
57  int points = iRule->getRequiredNumberOfIntegrationPoints(id, order + this->order);
58  iRule->SetUpPointsOnLine(points, _Unknown);
59  return iRule;
60 }
61 
64 {
65  integrationDomain id = this->giveBoundaryIntegrationDomain(boundary);
66  IntegrationRule *iRule = new GaussIntegrationRule(1, NULL);
67 
68  int points = iRule->getRequiredNumberOfIntegrationPoints(id, order + this->order);
69  iRule->setUpIntegrationPoints(id, points, _Unknown);
70  return iRule;
71 }
72 
75 {
76  integrationDomain id = this->giveBoundaryEdgeIntegrationDomain(boundary);
77  IntegrationRule *iRule = new GaussIntegrationRule(1, NULL);
78 
79  int points = iRule->getRequiredNumberOfIntegrationPoints(id, order + this->order);
80  iRule->setUpIntegrationPoints(id, points, _Unknown);
81  return iRule;
82 }
83 
86 {
87  integrationDomain id = this->giveBoundarySurfaceIntegrationDomain(boundary);
88  IntegrationRule *iRule = new GaussIntegrationRule(1, NULL);
89 
90  int points = iRule->getRequiredNumberOfIntegrationPoints(id, order + this->order);
91  iRule->setUpIntegrationPoints(id, points, _Unknown);
92  return iRule;
93 }
94 
95 
96 
97 } // end namespace oofem
double giveDeterminant() const
Returns the trace (sum of diagonal components) of the receiver.
Definition: floatmatrix.C:1408
integrationDomain
Used by integrator class to supply integration points for proper domain to be integrated (Area...
virtual IntegrationRule * giveBoundaryEdgeIntegrationRule(int order, int boundary)
Sets up a suitable integration rule for integrating over the requested boundary.
Definition: feinterpol.C:74
virtual double giveTransformationJacobian(const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the determinant of the transformation.
Definition: feinterpol.C:43
Class representing a general abstraction for cell geometry.
Definition: feinterpol.h:62
Abstract base class representing integration rule.
virtual int giveNumberOfNodes() const
Returns number of nodes of receiver.
Definition: element.h:662
virtual IntegrationRule * giveBoundarySurfaceIntegrationRule(int order, int boundary)
Sets up a suitable integration rule for integrating over the requested boundary.
Definition: feinterpol.C:85
Class representing vector of real numbers.
Definition: floatarray.h:82
Implementation of matrix containing floating point numbers.
Definition: floatmatrix.h:94
virtual IntegrationRule * giveBoundaryIntegrationRule(int order, int boundary)
Sets up a suitable integration rule for integrating over the requested boundary.
Definition: feinterpol.C:63
virtual int getRequiredNumberOfIntegrationPoints(integrationDomain dType, int approxOrder)
Abstract service.
virtual int SetUpPointsOnLine(int, MaterialMode mode)
Sets up receiver's integration points on unit line integration domain.
int setUpIntegrationPoints(integrationDomain intdomain, int nPoints, MaterialMode matMode)
Initializes the receiver.
virtual IntegrationRule * giveIntegrationRule(int order)
Sets up a suitable integration rule for numerical integrating over volume.
Definition: feinterpol.C:52
the oofem namespace is to define a context or scope in which all oofem names are defined.
Class representing Gaussian-quadrature integration rule.

This page is part of the OOFEM documentation. Copyright (c) 2011 Borek Patzak
Project e-mail: info@oofem.org
Generated at Tue Jan 2 2018 20:07:28 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011