OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
transportgradientneumann.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 #pragma once
36 
37 //#include "prescribedgradienthomogenization.h"
38 #include "activebc.h"
39 #include "floatarray.h"
40 
41 #include <memory>
42 
43 #define _IFT_TransportGradientNeumann_Name "tmgradneumann"
44 #define _IFT_TransportGradientNeumann_gradient "gradient"
45 #define _IFT_TransportGradientNeumann_centerCoords "centercoords"
46 #define _IFT_TransportGradientNeumann_surfSets "surfsets"
47 #define _IFT_TransportGradientNeumann_dispControl "useeta"
48 
49 namespace oofem {
50 class Node;
51 class Element;
52 
61 class OOFEM_EXPORT TransportGradientNeumann : public ActiveBoundaryCondition //, public Homogenization
62 {
63 public:
65  virtual ~TransportGradientNeumann();
66 
67  virtual int giveNumberOfInternalDofManagers() { return 1; }
68  virtual DofManager *giveInternalDofManager(int i);
69 
70  virtual IRResultType initializeFrom(InputRecord *ir);
71  virtual void giveInputRecord(DynamicInputRecord &input);
72  virtual void postInitialize();
73 
74  virtual bcType giveType() const { return UnknownBT; }
75 
76  virtual void scale(double s);
77 
78  double domainSize();
79 
80  virtual void assembleVector(FloatArray &answer, TimeStep *tStep,
81  CharType type, ValueModeType mode,
82  const UnknownNumberingScheme &s, FloatArray *eNorm = NULL);
83 
84  virtual void assemble(SparseMtrx &answer, TimeStep *tStep,
85  CharType type, const UnknownNumberingScheme &r_s, const UnknownNumberingScheme &c_s, double scale = 1.0);
86 
87  virtual void giveLocationArrays(std :: vector< IntArray > &rows, std :: vector< IntArray > &cols, CharType type,
88  const UnknownNumberingScheme &r_s, const UnknownNumberingScheme &c_s);
89 
90  virtual const char *giveClassName() const { return "TransportGradientNeumann"; }
91  virtual const char *giveInputRecordName() const { return _IFT_TransportGradientNeumann_Name; }
92 
93  virtual void computeField(FloatArray &flux, TimeStep *tStep);
94  virtual void computeTangent(FloatMatrix &tangent, TimeStep *tStep);
95 
96  void giveFluxLocationArray(IntArray &oCols, const UnknownNumberingScheme &r_s);
97 
98 protected:
100  std :: unique_ptr< Node > mpFluxHom;
105 
107 
109  std :: vector< std :: vector< FloatArray > > eta;
110 
112  void computeEta();
113 
115  void integrateTangent(FloatMatrix &oTangent, Element *e, int iBndIndex, int surfSet, int pos);
116 };
117 } /* namespace oofem */
std::unique_ptr< Node > mpFluxHom
DOF-manager containing the unknown homogenized stress.
Class and object Domain.
Definition: domain.h:115
Base class for all matrices stored in sparse format.
Definition: sparsemtrx.h:60
Homogenization boundary condition that imposes a gradient weakly on the boundary with scaled Neumann ...
Unknown.
Definition: bctype.h:41
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
Definition: valuemodetype.h:78
#define _IFT_TransportGradientNeumann_Name
Abstract base class for all finite elements.
Definition: element.h:145
Base class for dof managers.
Definition: dofmanager.h:113
Class implementing an array of integers.
Definition: intarray.h:61
virtual const char * giveInputRecordName() const
bcType
Type representing the type of bc.
Definition: bctype.h:40
virtual const char * giveClassName() const
Abstract base class allowing to control the way, how equations are assigned to individual DOFs...
virtual int giveNumberOfInternalDofManagers()
Gives the number of internal dof managers.
Abstract base class for all active boundary conditions.
Definition: activebc.h:63
Class representing vector of real numbers.
Definition: floatarray.h:82
Implementation of matrix containing floating point numbers.
Definition: floatmatrix.h:94
IRResultType
Type defining the return values of InputRecord reading operations.
Definition: irresulttype.h:47
std::vector< std::vector< FloatArray > > eta
Scaling factor (one array per edge with one scaling factor per GP)
CharType
Definition: chartype.h:87
Class representing the general Input Record.
Definition: inputrecord.h:101
Class representing the a dynamic Input Record.
the oofem namespace is to define a context or scope in which all oofem names are defined.
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:32 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011