KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
simo_J2_thermo_plasticity_model.hpp
Go to the documentation of this file.
1 //
2 // Project Name: KratosConstitutiveModelsApplication $
3 // Created by: $Author: JMCarbonell $
4 // Last modified by: $Co-Author: $
5 // Date: $Date: April 2017 $
6 // Revision: $Revision: 0.0 $
7 //
8 //
9 
10 #if !defined(KRATOS_SIMO_J2_THERMO_PLASTICITY_MODEL_H_INCLUDED )
11 #define KRATOS_SIMO_J2_THERMO_PLASTICITY_MODEL_H_INCLUDED
12 
13 // System includes
14 
15 // External includes
16 
17 // Project includes
22 
23 namespace Kratos
24 {
27 
30 
34 
38 
42 
46 
48 
50  class KRATOS_API(CONSTITUTIVE_MODELS_APPLICATION) SimoJ2ThermoPlasticityModel : public NonLinearAssociativePlasticityModel<IncompressibleNeoHookeanModel, MisesHuberThermalYieldSurface<SimoExponentialThermalHardeningRule> >
51  {
52  public:
53 
56 
57  //elasticity model
59  typedef ElasticityModelType::Pointer ElasticityModelPointer;
60 
61  //yield surface
64  typedef YieldSurfaceType::Pointer YieldSurfacePointer;
65 
66  //base type
68 
69  //common types
70  typedef BaseType::Pointer BaseTypePointer;
78 
79 
82 
86 
89 
92 
95  {
96  BaseType::operator=(rOther);
97  return *this;
98  }
99 
101  ConstitutiveModel::Pointer Clone() const override
102  {
103  return Kratos::make_shared<SimoJ2ThermoPlasticityModel>(*this);
104  }
105 
108 
109 
113 
114 
118 
119 
123 
129  void GetDomainVariablesList(std::vector<Variable<double> >& rScalarVariables,
130  std::vector<Variable<array_1d<double,3> > >& rComponentVariables) override
131  {
132  KRATOS_TRY
133 
134  PlasticityModel::GetDomainVariablesList(rScalarVariables, rComponentVariables);
135 
136  rScalarVariables.push_back(TEMPERATURE);
137 
138  KRATOS_CATCH(" ")
139  }
140 
144  bool Has(const Variable<double>& rThisVariable) override
145  {
146  if(rThisVariable == PLASTIC_STRAIN || rThisVariable == DELTA_PLASTIC_STRAIN )
147  return true;
148 
149  if(rThisVariable == PLASTIC_DISSIPATION || rThisVariable == DELTA_PLASTIC_DISSIPATION )
150  return true;
151 
152  return false;
153  }
154 
155 
159  double& GetValue(const Variable<double>& rThisVariable, double& rValue) override
160  {
161 
162  rValue=0;
163 
164  if (rThisVariable==PLASTIC_STRAIN)
165  {
166  rValue = this->mInternal.Variables[0];
167  }
168 
169 
170  if (rThisVariable==DELTA_PLASTIC_STRAIN)
171  {
172  rValue = this->mInternal.Variables[0]-mPreviousInternal.Variables[0];
173  }
174 
175  if (rThisVariable==PLASTIC_DISSIPATION)
176  {
177  rValue = this->mThermalVariables.PlasticDissipation;
178  }
179 
180 
181  if (rThisVariable==DELTA_PLASTIC_DISSIPATION)
182  {
183  rValue = this->mThermalVariables.DeltaPlasticDissipation;
184  }
185 
186  return rValue;
187  }
188 
192 
193 
197 
199  std::string Info() const override
200  {
201  std::stringstream buffer;
202  buffer << "SimoJ2ThermoPlasticityModel" ;
203  return buffer.str();
204  }
205 
207  void PrintInfo(std::ostream& rOStream) const override
208  {
209  rOStream << "SimoJ2ThermoPlasticityModel";
210  }
211 
213  void PrintData(std::ostream& rOStream) const override
214  {
215  rOStream << "SimoJ2ThermoPlasticityModel Data";
216  }
217 
221 
222 
224 
225  protected:
228 
229 
233 
234 
238 
239 
243 
244 
248 
249 
253 
254 
258 
259 
261 
262  private:
265 
266 
270 
271 
275 
276 
280 
281 
285 
286 
290 
291 
295  friend class Serializer;
296 
297  void save(Serializer& rSerializer) const override
298  {
300  }
301 
302  void load(Serializer& rSerializer) override
303  {
304  KRATOS_SERIALIZE_LOAD_BASE_CLASS( rSerializer, BaseType )
305  }
306 
310 
311 
313 
314  }; // Class SimoJ2ThermoPlasticityModel
315 
317 
320 
321 
325 
326 
330 
331 
333 
335 
336 
337 } // namespace Kratos.
338 
339 #endif // KRATOS_SIMO_J2_THERMO_PLASTICITY_MODEL_H_INCLUDED defined
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
Short class definition.
Definition: incompressible_neo_hookean_model.hpp:50
Definition: amatrix_interface.h:41
Short class definition.
Definition: mises_huber_thermal_yield_surface.hpp:50
Short class definition.
Definition: non_linear_associative_plasticity_model.hpp:50
BaseType::SizeType SizeType
Definition: non_linear_associative_plasticity_model.hpp:67
BaseType::PlasticDataType PlasticDataType
Definition: non_linear_associative_plasticity_model.hpp:72
BaseType::InternalVariablesType InternalVariablesType
Definition: non_linear_associative_plasticity_model.hpp:73
BaseType::VoigtIndexType VoigtIndexType
Definition: non_linear_associative_plasticity_model.hpp:68
void GetDomainVariablesList(std::vector< Variable< double > > &rScalarVariables, std::vector< Variable< array_1d< double, 3 > > > &rComponentVariables) override
Definition: plasticity_model.hpp:259
The serialization consists in storing the state of an object into a storage format like data file or ...
Definition: serializer.h:123
Short class definition.
Definition: simo_exponential_thermal_hardening_rule.hpp:49
Short class definition.
Definition: simo_J2_thermo_plasticity_model.hpp:51
IncompressibleNeoHookeanModel ElasticityModelType
Definition: simo_J2_thermo_plasticity_model.hpp:58
SimoJ2ThermoPlasticityModel & operator=(SimoJ2ThermoPlasticityModel const &rOther)
Assignment operator.
Definition: simo_J2_thermo_plasticity_model.hpp:94
BaseType::InternalVariablesType InternalVariablesType
Definition: simo_J2_thermo_plasticity_model.hpp:77
BaseType::MaterialDataType MaterialDataType
Definition: simo_J2_thermo_plasticity_model.hpp:75
void GetDomainVariablesList(std::vector< Variable< double > > &rScalarVariables, std::vector< Variable< array_1d< double, 3 > > > &rComponentVariables) override
Definition: simo_J2_thermo_plasticity_model.hpp:129
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: simo_J2_thermo_plasticity_model.hpp:207
BaseType::SizeType SizeType
Definition: simo_J2_thermo_plasticity_model.hpp:71
std::string Info() const override
Turn back information as a string.
Definition: simo_J2_thermo_plasticity_model.hpp:199
BaseType::VoigtIndexType VoigtIndexType
Definition: simo_J2_thermo_plasticity_model.hpp:72
BaseType::PlasticDataType PlasticDataType
Definition: simo_J2_thermo_plasticity_model.hpp:76
NonLinearAssociativePlasticityModel< ElasticityModelType, YieldSurfaceType > BaseType
Definition: simo_J2_thermo_plasticity_model.hpp:67
bool Has(const Variable< double > &rThisVariable) override
Definition: simo_J2_thermo_plasticity_model.hpp:144
YieldSurfaceType::Pointer YieldSurfacePointer
Definition: simo_J2_thermo_plasticity_model.hpp:64
double & GetValue(const Variable< double > &rThisVariable, double &rValue) override
Definition: simo_J2_thermo_plasticity_model.hpp:159
ElasticityModelType::Pointer ElasticityModelPointer
Definition: simo_J2_thermo_plasticity_model.hpp:59
BaseType::Pointer BaseTypePointer
Definition: simo_J2_thermo_plasticity_model.hpp:70
SimoExponentialThermalHardeningRule HardeningRuleType
Definition: simo_J2_thermo_plasticity_model.hpp:62
KRATOS_CLASS_POINTER_DEFINITION(SimoJ2ThermoPlasticityModel)
Pointer definition of SimoJ2ThermoPlasticityModel.
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: simo_J2_thermo_plasticity_model.hpp:213
~SimoJ2ThermoPlasticityModel() override
Destructor.
Definition: simo_J2_thermo_plasticity_model.hpp:107
MisesHuberThermalYieldSurface< HardeningRuleType > YieldSurfaceType
Definition: simo_J2_thermo_plasticity_model.hpp:63
SimoJ2ThermoPlasticityModel(SimoJ2ThermoPlasticityModel const &rOther)
Copy constructor.
Definition: simo_J2_thermo_plasticity_model.hpp:91
ConstitutiveModel::Pointer Clone() const override
Clone.
Definition: simo_J2_thermo_plasticity_model.hpp:101
SimoJ2ThermoPlasticityModel()
Default constructor.
Definition: simo_J2_thermo_plasticity_model.hpp:88
BaseType::MatrixType MatrixType
Definition: simo_J2_thermo_plasticity_model.hpp:73
BaseType::ModelDataType ModelDataType
Definition: simo_J2_thermo_plasticity_model.hpp:74
#define KRATOS_SERIALIZE_SAVE_BASE_CLASS(Serializer, BaseType)
Definition: define.h:812
#define KRATOS_CATCH(MoreInfo)
Definition: define.h:110
#define KRATOS_TRY
Definition: define.h:109
#define KRATOS_SERIALIZE_LOAD_BASE_CLASS(Serializer, BaseType)
Definition: define.h:815
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
def load(f)
Definition: ode_solve.py:307
Definition: constitutive_model_data.hpp:92
Definition: constitutive_model_data.hpp:383