OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
nonlinearfluidmaterial.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 nonlinearfluidmaterial_h
36 #define nonlinearfluidmaterial_h
37 
38 #include "fluiddynamicmaterial.h"
39 #include "floatarray.h"
40 #include "floatmatrix.h"
41 #include "matconst.h"
42 #include "matstatus.h"
43 
45 
46 #define _IFT_NonlinearFluidMaterial_Name "nonlinearfluid"
47 #define _IFT_NonlinearFluidMaterial_mu "mu"
48 #define _IFT_NonlinearFluidMaterial_alpha "alpha"
49 #define _IFT_NonlinearFluidMaterial_C "c"
50 
51 
52 namespace oofem {
53 class GaussPoint;
54 
61 {
62 protected:
65  double temp_norm2;
66 
67 public:
69 
71 
72  virtual void initTempStatus();
73 
74  virtual void updateYourself(TimeStep *);
75 
78  double giveTempStrainNorm2() { return temp_norm2; }
79  void letTempDeviatoricStressVectorBe(FloatArray v) { temp_deviatoricStressVector = std :: move(v); }
80  void letTempDeviatoricStrainVectorBe(FloatArray v) { temp_deviatoricStrainVector = std :: move(v); }
81  void letTempStrainNorm2Be(double v) { temp_norm2 = v; }
82 
83  virtual const char *giveClassName() const { return "NonlinearFluidMaterialStatus"; }
84 };
85 
96 {
97 protected:
99  double viscosity;
101  double c;
103  double alpha;
104 
105 public:
107 
109 
110  virtual void computeDeviatoricStressVector(FloatArray &answer, GaussPoint *gp, const FloatArray &eps, TimeStep *tStep);
111 
112  virtual void giveDeviatoricStiffnessMatrix(FloatMatrix &answer, MatResponseMode, GaussPoint *gp,
113  TimeStep *tStep);
114 
115  virtual double giveEffectiveViscosity(GaussPoint *gp, TimeStep *tStep);
116  virtual double give(int aProperty, GaussPoint *);
117 
119  virtual void giveInputRecord(DynamicInputRecord &input);
120 
121  virtual const char *giveClassName() const { return "NewtonianFluidMaterial"; }
122  virtual const char *giveInputRecordName() const { return _IFT_NonlinearFluidMaterial_Name; }
123 
124  virtual int checkConsistency();
125 
126  virtual MaterialStatus *CreateStatus(GaussPoint *gp) const;
127 };
128 } // end namespace oofem
129 #endif // nonlinearfluidmaterial_h
virtual const char * giveClassName() const
GaussPoint * gp
Associated integration point.
Class and object Domain.
Definition: domain.h:115
Abstract base class for all fluid materials.
Defines several material constant (respective their representative number).
virtual void updateYourself(TimeStep *)
Update equilibrium history variables according to temp-variables.
#define _IFT_NonlinearFluidMaterial_Name
double c
Material constant .
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
Definition: femcmpnn.C:77
MatResponseMode
Describes the character of characteristic material matrix.
Material status class for NonlinearFluidMaterial.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
This class implements a transport material status information.
double viscosity
Viscosity of material.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Definition: matstatus.h:140
double alpha
Material constant .
virtual int checkConsistency()
Allows programmer to test some internal data, before computation begins.
Definition: femcmpnn.C:94
virtual const char * giveClassName() const
const FloatArray & giveTempDeviatoricStressVector()
Abstract base class representing a material status information.
Definition: matstatus.h:84
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
Constitutive model of a nonlinear fluid material where the deviatoric stress is defined as where an...
Class representing the general Input Record.
Definition: inputrecord.h:101
const FloatArray & giveTempDeviatoricStrainVector()
Class representing the a dynamic Input Record.
NonlinearFluidMaterialStatus(int n, Domain *d, GaussPoint *g)
virtual const char * giveInputRecordName() const
the oofem namespace is to define a context or scope in which all oofem names are defined.
Class representing integration point in finite element program.
Definition: gausspoint.h:93
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