OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
frcfcmnl.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 frcfcmnl_h
36 #define frcfcmnl_h
37 
38 
39 #include "frcfcm.h"
41 
43 
44 #define _IFT_FRCFCMNL_Name "frcfcmnl"
45 #define _IFT_FRCFCMNL_participAngle "alpha"
46 
47 
48 namespace oofem {
49 class GaussPoint;
58 {
59 protected:
60 
65 
70 
71 
72 public:
73  FRCFCMNLStatus(int n, Domain *d, GaussPoint *g);
74  virtual ~FRCFCMNLStatus();
75 
77  double giveFiberStressLoc(int icrack) { return fiberStressLoc.at(icrack); }
78  double giveTempFiberStressLoc(int icrack) { return tempFiberStressLoc.at(icrack); }
79  void setTempFiberStressLoc(int icrack, double newFiberStressLoc) { tempFiberStressLoc.at(icrack) = newFiberStressLoc; }
80 
82  double giveFiberStressNL(int icrack) { return fiberStressNL.at(icrack); }
83  double giveTempFiberStressNL(int icrack) { return tempFiberStressNL.at(icrack); }
84  void setTempFiberStressNL(int icrack, double newFiberStressNL) { tempFiberStressNL.at(icrack) = newFiberStressNL; }
85 
86  virtual void printOutputAt(FILE *file, TimeStep *tStep);
87 
88  // definition
89  virtual const char *giveClassName() const { return "FRCFCMNLStatus"; }
90 
91  virtual void initTempStatus();
92 
93  virtual void updateYourself(TimeStep *tStep);
94 
95 
96 
97  // saves current context(state) into stream
98  virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj = NULL);
99  virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj = NULL);
100 
102 };
103 
104 
106 {
107 public:
108  FRCFCMNL(int n, Domain *d);
109  virtual ~FRCFCMNL() {}
110 
111  // identification and auxiliary functions
112  virtual const char *giveClassName() const { return "FRCFCMNL"; }
113  virtual const char *giveInputRecordName() const { return _IFT_FRCFCMNL_Name; }
114 
115  // identification and auxiliary functions
117 
118  virtual void giveRealStressVector(FloatArray &answer, GaussPoint *gp,
119  const FloatArray &reducedStrain, TimeStep *tStep);
120 
121 
122  virtual void giveMaterialStiffnessMatrix(FloatMatrix & answer, MatResponseMode,
123  GaussPoint * gp,
124  TimeStep * tStep);
125 
127 
128  virtual MaterialStatus *CreateStatus(GaussPoint *gp) const { return new FRCFCMNLStatus(1, FRCFCM :: domain, gp); }
129 
130  virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep);
131 
132  //nothing to update here, is it?
134 
135  virtual bool isStrengthExceeded(const FloatMatrix &base, GaussPoint *gp, TimeStep *tStep, int iCrack, double trialStress);
136 
137 
138  double computeDebondedLength(double delta);
139 
141  double computeDecreaseInFibreStress(double distance, double delta, double debondedLength);
142 
144  void computeElementCentroid(FloatArray &answer, GaussPoint *gp);
145 
147  bool isInElementProjection(GaussPoint *homeGp, GaussPoint *nearGp, int iNlCrack);
148 
150  virtual double computeNonlocalStressInFibers(const FloatArray &crackVector, GaussPoint *gp, TimeStep *tStep);
151 
153  virtual double computeNonlocalStressInFibersInUncracked(GaussPoint *gp, TimeStep *tStep);
154 
156  double computeAngleBetweenVectors(const FloatArray &vec1, const FloatArray &vec2);
157 
158 
159 protected:
162 };
163 } // end namespace oofem
164 #endif // frcfcmnl_h
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
Abstract base class for all nonlocal structural materials.
double giveFiberStressLoc(int icrack)
LOCAL FIBER STRESSES (from crack opening)
Definition: frcfcmnl.h:77
GaussPoint * gp
Associated integration point.
Class and object Domain.
Definition: domain.h:115
double giveTempFiberStressLoc(int icrack)
Definition: frcfcmnl.h:78
Domain * domain
Link to domain object, useful for communicating with other FEM components.
Definition: femcmpnn.h:82
FloatArray tempFiberStressLoc
Non-equilibrated stress (bulk) in fibers.
Definition: frcfcmnl.h:64
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
Definition: datastream.h:54
double & at(int i)
Coefficient access function.
Definition: floatarray.h:131
virtual const char * giveClassName() const
Definition: frcfcmnl.h:112
virtual const char * giveInputRecordName() const
Definition: frcfcmnl.h:113
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
restores context(state) from stream
Definition: frcfcmnl.C:887
FloatArray fiberStressLoc
bulk stress in fibers - evaluated from crack opening
Definition: frcfcmnl.h:62
MatResponseMode
Describes the character of characteristic material matrix.
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Writes information into the output file.
Definition: frcfcmnl.C:812
double participAngle
participation angle. The target gauss point must fall into this angle to contribute to the nonlocal s...
Definition: frcfcmnl.h:161
virtual void updateBeforeNonlocAverage(const FloatArray &strainVector, GaussPoint *gp, TimeStep *tStep)
Declares the service updating local variables in given integration points, which take part in nonloca...
Definition: frcfcmnl.h:133
double giveFiberStressNL(int icrack)
NON-LOCAL FIBER STRESSES (from surrounding cracks)
Definition: frcfcmnl.h:82
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Definition: matstatus.h:140
FRCFCMNLStatus(int n, Domain *d, GaussPoint *g)
Definition: frcfcmnl.C:794
double giveTempFiberStressNL(int icrack)
Definition: frcfcmnl.h:83
This class implements a FRCFCM material (Fiber Reinforced Concrete base on Fixed Crack Model) in a fi...
Definition: frcfcm.h:113
void setTempFiberStressLoc(int icrack, double newFiberStressLoc)
Definition: frcfcmnl.h:79
#define _IFT_FRCFCMNL_Name
Definition: frcfcmnl.h:44
void setTempFiberStressNL(int icrack, double newFiberStressNL)
Definition: frcfcmnl.h:84
FloatArray fiberStressNL
bulk stress in fibers - evaluated from crack opening
Definition: frcfcmnl.h:67
Abstract base class representing a material status information.
Definition: matstatus.h:84
Class representing vector of real numbers.
Definition: floatarray.h:82
FloatArray strainVector
Equilibrated strain vector in reduced form.
Definition: structuralms.h:69
Implementation of matrix containing floating point numbers.
Definition: floatmatrix.h:94
virtual void initTempStatus()
initializes temporary status
Definition: frcfcmnl.C:831
IRResultType
Type defining the return values of InputRecord reading operations.
Definition: irresulttype.h:47
virtual void updateYourself(TimeStep *tStep)
replaces equilibrated values with temporary values
Definition: frcfcmnl.C:846
Class representing the general Input Record.
Definition: inputrecord.h:101
virtual ~FRCFCMNLStatus()
Definition: frcfcmnl.C:806
virtual Interface * giveInterface(InterfaceType)
Interface requesting service.
Definition: frcfcmnl.C:913
Base class for all nonlocal structural material statuses.
Class Interface.
Definition: interface.h:82
virtual ~FRCFCMNL()
Definition: frcfcmnl.h:109
This class implements a FRCFCMNL material in a finite element problem.
Definition: frcfcmnl.h:57
virtual const char * giveClassName() const
Definition: frcfcmnl.h:89
virtual MaterialStatus * CreateStatus(GaussPoint *gp) const
Creates new copy of associated status and inserts it into given integration point.
Definition: frcfcmnl.h:128
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
saves current context(state) into stream
Definition: frcfcmnl.C:862
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
Definition: contextmode.h:43
InterfaceType
Enumerative type, used to identify interface type.
Definition: interfacetype.h:43
This class manages the status of FRCFCM.
Definition: frcfcm.h:74
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
FloatArray tempFiberStressNL
Non-equilibrated stress (bulk) in fibers.
Definition: frcfcmnl.h:69

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