OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
nodalaveragingrecoverymodel.h
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 #ifndef nodalaveragingrecoverymodel_h
36 #define nodalaveragingrecoverymodel_h
37 
38 #include "nodalrecoverymodel.h"
39 #include "interface.h"
40 
41 #define _IFT_NodalAveragingRecoveryModel_Name "nodalaverage"
42 
43 namespace oofem {
44 class GaussPoint;
45 class ProcessCommunicator;
46 
53 {
54 protected:
59  struct parallelStruct {
65  lhs(a), regionDofMansConnectivity(b), regionNodalNumbers(c), regionValSize(d) { }
66  };
67 
68 public:
73 
74  int recoverValues(Set elementSet, InternalStateType type, TimeStep *tStep);
75 
76  virtual const char *giveClassName() const { return "NodalAveragingRecoveryModel"; }
77 
78 private:
79 #ifdef __PARALLEL_MODE
80  void initCommMaps();
81  void exchangeDofManValues(FloatArray &lhs, IntArray &, IntArray &, int);
82  int packSharedDofManData(parallelStruct *s, ProcessCommunicator &processComm);
83  int unpackSharedDofManData(parallelStruct *s, ProcessCommunicator &processComm);
84 #endif
85 };
86 
91 {
92 public:
95 
97 
98 
105  virtual void NodalAveragingRecoveryMI_computeNodalValue(FloatArray &answer, int node,
106  InternalStateType type, TimeStep *tStep) = 0;
108 };
109 } // end namespace oofem
110 #endif // nodalaveragingrecoverymodel_h
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
The element interface required by NodalAvergagingRecoveryModel.
Class and object Domain.
Definition: domain.h:115
Class implementing an array of integers.
Definition: intarray.h:61
The nodal recovery model based on nodal averaging.
virtual const char * giveClassName() const
Set of elements, boundaries, edges and/or nodes.
Definition: set.h:66
Class representing process communicator for engineering model.
Definition: processcomm.h:176
Class representing vector of real numbers.
Definition: floatarray.h:82
parallelStruct(FloatArray *a, IntArray *b, IntArray *c, int d)
Class Interface.
Definition: interface.h:82
the oofem namespace is to define a context or scope in which all oofem names are defined.
The base class for all recovery models, which perform nodal averaging or projection processes for int...
Helper structure to pass required arguments to packing/unpacking functions needed in parallel mode...
Class representing solution step.
Definition: timestep.h:80

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:30 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011