OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
fluiddynamicmaterial.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 fluiddynamicmaterial_h
36 #define fluiddynamicmaterial_h
37 
38 #include "material.h"
39 #include "matstatus.h"
40 #include "floatarray.h"
41 
42 
43 namespace oofem {
56 {
57 protected:
62 
63 public:
68 
69  virtual void printOutputAt(FILE *file, TimeStep *tStep);
70  virtual void initTempStatus();
71 
72  virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj = NULL);
73  virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj = NULL);
74 
83  void letDeviatoricStressVectorBe(FloatArray v) { deviatoricStressVector = std :: move(v); }
84  void letDeviatoricStrainRateVectorBe(FloatArray v) { deviatoricStrainRateVector = std :: move(v); }
85 };
86 
87 
93 {
94 public:
100  FluidDynamicMaterial(int n, Domain * d) : Material(n, d) { }
102  virtual ~FluidDynamicMaterial() { }
103 
114  virtual void computeDeviatoricStressVector(FloatArray &stress_dev, double &epsp_vol, GaussPoint *gp, const FloatArray &eps, double pressure, TimeStep *tStep);
122  virtual void computeDeviatoricStressVector(FloatArray &answer, GaussPoint *gp, const FloatArray &eps, TimeStep *tStep) = 0;
123 
124 
132  virtual void giveDeviatoricStiffnessMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) = 0;
143  virtual void giveStiffnessMatrices(FloatMatrix &dsdd, FloatArray &dsdp, FloatArray &dedd, double &dedp,
144  MatResponseMode mode, GaussPoint *gp, TimeStep *tStep);
145 
152  virtual double giveEffectiveViscosity(GaussPoint *gp, TimeStep *tStep) = 0;
153 
160  virtual void updateInternalState(const FloatArray &vec, GaussPoint *gp, TimeStep *tStep);
161 
162  virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep);
163 };
164 } // end namespace oofem
165 #endif // fluiddynamicmaterial_h
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
FloatArray deviatoricStressVector
Stress vector in reduced form.
GaussPoint * gp
Associated integration point.
Class and object Domain.
Definition: domain.h:115
Abstract base class for all fluid materials.
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
Definition: datastream.h:54
const FloatArray & giveDeviatoricStrainRateVector()
void letDeviatoricStrainRateVectorBe(FloatArray v)
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
MatResponseMode
Describes the character of characteristic material matrix.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
FluidDynamicMaterialStatus(int n, Domain *d, GaussPoint *g)
Constructor - creates new TransportMaterialStatus with number n, belonging to domain d and integratio...
void letDeviatoricStressVectorBe(FloatArray v)
Sets the deviatoric stress.
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
FloatArray deviatoricStrainRateVector
Strain vector in reduced form.
This class implements a transport material status information.
virtual ~FluidDynamicMaterialStatus()
Destructor.
const FloatArray & giveDeviatoricStressVector()
Gives the deviatoric stress.
Abstract base class for all material models.
Definition: material.h:95
Abstract base class representing a material status information.
Definition: matstatus.h:84
Class representing vector of real numbers.
Definition: floatarray.h:82
virtual ~FluidDynamicMaterial()
Destructor.
Implementation of matrix containing floating point numbers.
Definition: floatmatrix.h:94
FluidDynamicMaterial(int n, Domain *d)
Constructor.
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
Definition: contextmode.h:43
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:28 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011