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.
poro_newmark_dynamic_U_Pw_scheme.hpp
Go to the documentation of this file.
1 //
2 // Project Name: KratosPoromechanicsApplication $
3 // Last Modified by: $Author: Ignasi de Pouplana $
4 // Date: $Date: January 2016 $
5 // Revision: $Revision: 1.0 $
6 //
7 
8 #if !defined(KRATOS_PORO_NEWMARK_DYNAMIC_U_PW_SCHEME )
9 #define KRATOS_PORO_NEWMARK_DYNAMIC_U_PW_SCHEME
10 
11 // Application includes
14 
15 namespace Kratos
16 {
17 
18 template<class TSparseSpace, class TDenseSpace>
19 
20 class PoroNewmarkDynamicUPwScheme : public PoroNewmarkQuasistaticUPwScheme<TSparseSpace,TDenseSpace>
21 {
22 
23 public:
24 
26 
37 
38 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
39 
41  PoroNewmarkDynamicUPwScheme(double beta, double gamma, double theta)
42  : PoroNewmarkQuasistaticUPwScheme<TSparseSpace,TDenseSpace>(beta, gamma, theta)
43  {
44  // Here mBeta and mGamma are used for the GN22 scheme
45  mBeta = beta;
46  mGamma = gamma;
47 
48  //Allocate auxiliary memory
49  int NumThreads = ParallelUtilities::GetNumThreads();
50  mMassMatrix.resize(NumThreads);
51  mAccelerationVector.resize(NumThreads);
52  mDampingMatrix.resize(NumThreads);
53  mVelocityVector.resize(NumThreads);
54  }
55 
56  //------------------------------------------------------------------------------------
57 
60 
61 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
62 
63  int Check(ModelPart& r_model_part) override
64  {
66 
67  // Base class checks
69  if(ierr != 0) return ierr;
70 
71  //check for variables keys (verify that the variables are correctly initialized)
72  if(ACCELERATION.Key() == 0)
73  KRATOS_THROW_ERROR( std::invalid_argument,"ACCELERATION Key is 0. Check if all applications were correctly registered.", "" )
74 
75  //check that variables are correctly allocated
76  for(ModelPart::NodesContainerType::iterator it=r_model_part.NodesBegin(); it!=r_model_part.NodesEnd(); it++)
77  {
78  if(it->SolutionStepsDataHas(ACCELERATION) == false)
79  KRATOS_THROW_ERROR( std::logic_error, "ACCELERATION variable is not allocated for node ", it->Id() )
80  }
81 
82  // Check beta, gamma
83  if(mBeta <= 0.0 || mGamma< 0.0)
84  KRATOS_THROW_ERROR( std::invalid_argument,"Some of the scheme variables: beta or gamma has an invalid value ", "" )
85 
86  return ierr;
87 
88  KRATOS_CATCH( "" )
89  }
90 
91 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
92 
93  void Initialize(ModelPart& r_model_part) override
94  {
96 
98 
99  // Note: VELOCITY_COEFFICIENT is updated according to the GN22 scheme used here
100  r_model_part.GetProcessInfo().SetValue(VELOCITY_COEFFICIENT,mGamma/(mBeta*mDeltaTime));
101 
102  KRATOS_CATCH("")
103  }
104 
105 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
106 
107  void Predict(
108  ModelPart& r_model_part,
109  DofsArrayType& rDofSet,
111  TSystemVectorType& Dx,
112  TSystemVectorType& b) override
113  {
114  // Predict Displacements on free nodes and update Acceleration, Velocity and DtPressure
115 
116  array_1d<double,3> DeltaDisplacement;
117  double DeltaPressure;
118 
119  const int NNodes = static_cast<int>(r_model_part.Nodes().size());
120  ModelPart::NodesContainerType::iterator node_begin = r_model_part.NodesBegin();
121 
122  #pragma omp parallel for private(DeltaDisplacement,DeltaPressure)
123  for(int i = 0; i < NNodes; i++)
124  {
125  ModelPart::NodesContainerType::iterator itNode = node_begin + i;
126 
127  array_1d<double,3>& CurrentDisplacement = itNode->FastGetSolutionStepValue(DISPLACEMENT);
128  array_1d<double,3>& CurrentAcceleration = itNode->FastGetSolutionStepValue(ACCELERATION);
129  array_1d<double,3>& CurrentVelocity = itNode->FastGetSolutionStepValue(VELOCITY);
130 
131  const array_1d<double,3>& PreviousDisplacement = itNode->FastGetSolutionStepValue(DISPLACEMENT, 1);
132  const array_1d<double,3>& PreviousAcceleration = itNode->FastGetSolutionStepValue(ACCELERATION, 1);
133  const array_1d<double,3>& PreviousVelocity = itNode->FastGetSolutionStepValue(VELOCITY, 1);
134 
135  if (itNode -> IsFixed(ACCELERATION_X))
136  {
137  CurrentDisplacement[0] = PreviousDisplacement[0] + mDeltaTime * PreviousVelocity[0] + std::pow(mDeltaTime, 2) * ( ( 0.5 - mBeta) * PreviousAcceleration[0] + mBeta * CurrentAcceleration[0] );
138  }
139  else if (itNode -> IsFixed(VELOCITY_X))
140  {
141  CurrentDisplacement[0] = PreviousDisplacement[0] + mDeltaTime*(mBeta/mGamma*(CurrentVelocity[0]-PreviousVelocity[0])+PreviousVelocity[0]);
142  }
143  else if (itNode -> IsFixed(DISPLACEMENT_X) == false)
144  {
145  CurrentDisplacement[0] = PreviousDisplacement[0] + mDeltaTime * PreviousVelocity[0] + 0.5 * std::pow(mDeltaTime, 2) * PreviousAcceleration[0];
146  }
147 
148  if (itNode -> IsFixed(ACCELERATION_Y))
149  {
150  CurrentDisplacement[1] = PreviousDisplacement[1] + mDeltaTime * PreviousVelocity[1] + std::pow(mDeltaTime, 2) * ( ( 0.5 - mBeta) * PreviousAcceleration[1] + mBeta * CurrentAcceleration[1] );
151  }
152  else if (itNode -> IsFixed(VELOCITY_Y))
153  {
154  CurrentDisplacement[1] = PreviousDisplacement[1] + mDeltaTime*(mBeta/mGamma*(CurrentVelocity[1]-PreviousVelocity[1])+PreviousVelocity[1]);
155  }
156  else if (itNode -> IsFixed(DISPLACEMENT_Y) == false)
157  {
158  CurrentDisplacement[1] = PreviousDisplacement[1] + mDeltaTime * PreviousVelocity[1] + 0.5 * std::pow(mDeltaTime, 2) * PreviousAcceleration[1];
159  }
160 
161  // For 3D cases
162  if (itNode -> HasDofFor(DISPLACEMENT_Z))
163  {
164  if (itNode -> IsFixed(ACCELERATION_Z))
165  {
166  CurrentDisplacement[2] = PreviousDisplacement[2] + mDeltaTime * PreviousVelocity[2] + std::pow(mDeltaTime, 2) * ( ( 0.5 - mBeta) * PreviousAcceleration[2] + mBeta * CurrentAcceleration[2] );
167  }
168  else if (itNode -> IsFixed(VELOCITY_Z))
169  {
170  CurrentDisplacement[2] = PreviousDisplacement[2] + mDeltaTime*(mBeta/mGamma*(CurrentVelocity[2]-PreviousVelocity[2])+PreviousVelocity[2]);
171  }
172  else if (itNode -> IsFixed(DISPLACEMENT_Z) == false)
173  {
174  CurrentDisplacement[2] = PreviousDisplacement[2] + mDeltaTime * PreviousVelocity[2] + 0.5 * std::pow(mDeltaTime, 2) * PreviousAcceleration[2];
175  }
176  }
177 
178  noalias(DeltaDisplacement) = CurrentDisplacement - PreviousDisplacement;
179 
180  noalias(CurrentAcceleration) = 1.0/(mBeta*mDeltaTime*mDeltaTime)*(DeltaDisplacement - mDeltaTime*PreviousVelocity - (0.5-mBeta)*mDeltaTime*mDeltaTime*PreviousAcceleration);
181  noalias(CurrentVelocity) = PreviousVelocity + (1.0-mGamma)*mDeltaTime*PreviousAcceleration + mGamma*mDeltaTime*CurrentAcceleration;
182 
183  double& CurrentDtPressure = itNode->FastGetSolutionStepValue(DT_WATER_PRESSURE);
184  DeltaPressure = itNode->FastGetSolutionStepValue(WATER_PRESSURE) - itNode->FastGetSolutionStepValue(WATER_PRESSURE, 1);
185  const double& PreviousDtPressure = itNode->FastGetSolutionStepValue(DT_WATER_PRESSURE, 1);
186 
187  CurrentDtPressure = 1.0/(mTheta*mDeltaTime)*(DeltaPressure - (1.0-mTheta)*mDeltaTime*PreviousDtPressure);
188  }
189  }
190 
191 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
192 
193 // Note: this is in a parallel loop
194 
196  Element& rCurrentElement,
197  LocalSystemMatrixType& LHS_Contribution,
198  LocalSystemVectorType& RHS_Contribution,
200  const ProcessInfo& CurrentProcessInfo) override
201  {
202  KRATOS_TRY
203 
204  int thread = OpenMPUtils::ThisThread();
205 
206  rCurrentElement.CalculateLocalSystem(LHS_Contribution,RHS_Contribution,CurrentProcessInfo);
207 
208  rCurrentElement.CalculateMassMatrix(mMassMatrix[thread],CurrentProcessInfo);
209 
210  rCurrentElement.CalculateDampingMatrix(mDampingMatrix[thread],CurrentProcessInfo);
211 
212  this->AddDynamicsToLHS (LHS_Contribution, mMassMatrix[thread], mDampingMatrix[thread], CurrentProcessInfo);
213 
214  this->AddDynamicsToRHS (rCurrentElement, RHS_Contribution, mMassMatrix[thread], mDampingMatrix[thread], CurrentProcessInfo);
215 
216  rCurrentElement.EquationIdVector(EquationId,CurrentProcessInfo);
217 
218  KRATOS_CATCH( "" )
219  }
220 
221 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
222 
223 // Note: this is in a parallel loop
224 
226  Element& rCurrentElement,
227  LocalSystemVectorType& RHS_Contribution,
229  const ProcessInfo& CurrentProcessInfo) override
230  {
231  KRATOS_TRY
232 
233  int thread = OpenMPUtils::ThisThread();
234 
235  rCurrentElement.CalculateRightHandSide(RHS_Contribution,CurrentProcessInfo);
236 
237  rCurrentElement.CalculateMassMatrix(mMassMatrix[thread], CurrentProcessInfo);
238 
239  rCurrentElement.CalculateDampingMatrix(mDampingMatrix[thread],CurrentProcessInfo);
240 
241  this->AddDynamicsToRHS (rCurrentElement, RHS_Contribution, mMassMatrix[thread], mDampingMatrix[thread], CurrentProcessInfo);
242 
243  rCurrentElement.EquationIdVector(EquationId,CurrentProcessInfo);
244 
245  KRATOS_CATCH( "" )
246  }
247 
248 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
249 
250 // Note: this is in a parallel loop
251 
253  Element& rCurrentElement,
254  LocalSystemMatrixType& LHS_Contribution,
256  const ProcessInfo& CurrentProcessInfo) override
257  {
258  KRATOS_TRY
259 
260  int thread = OpenMPUtils::ThisThread();
261 
262  rCurrentElement.CalculateLeftHandSide(LHS_Contribution,CurrentProcessInfo);
263 
264  rCurrentElement.CalculateMassMatrix(mMassMatrix[thread],CurrentProcessInfo);
265 
266  rCurrentElement.CalculateDampingMatrix(mDampingMatrix[thread],CurrentProcessInfo);
267 
268  this->AddDynamicsToLHS (LHS_Contribution, mMassMatrix[thread], mDampingMatrix[thread], CurrentProcessInfo);
269 
270  rCurrentElement.EquationIdVector(EquationId,CurrentProcessInfo);
271 
272  KRATOS_CATCH( "" )
273  }
274 
275 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
276 
277 protected:
278 
280 
281  std::vector< Matrix > mMassMatrix;
282  std::vector< Vector > mAccelerationVector;
283  std::vector< Matrix > mDampingMatrix;
284  std::vector< Vector > mVelocityVector;
285 
286 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
287 
288  inline void UpdateVariablesDerivatives(ModelPart& r_model_part) override
289  {
290  KRATOS_TRY
291 
292  //Update Acceleration, Velocity and DtPressure
293 
294  array_1d<double,3> DeltaDisplacement;
295  double DeltaPressure;
296 
297  const int NNodes = static_cast<int>(r_model_part.Nodes().size());
298  ModelPart::NodesContainerType::iterator node_begin = r_model_part.NodesBegin();
299 
300  #pragma omp parallel for private(DeltaDisplacement,DeltaPressure)
301  for(int i = 0; i < NNodes; i++)
302  {
303  ModelPart::NodesContainerType::iterator itNode = node_begin + i;
304 
305  array_1d<double,3>& CurrentAcceleration = itNode->FastGetSolutionStepValue(ACCELERATION);
306  array_1d<double,3>& CurrentVelocity = itNode->FastGetSolutionStepValue(VELOCITY);
307  noalias(DeltaDisplacement) = itNode->FastGetSolutionStepValue(DISPLACEMENT) - itNode->FastGetSolutionStepValue(DISPLACEMENT, 1);
308  const array_1d<double,3>& PreviousAcceleration = itNode->FastGetSolutionStepValue(ACCELERATION, 1);
309  const array_1d<double,3>& PreviousVelocity = itNode->FastGetSolutionStepValue(VELOCITY, 1);
310 
311  noalias(CurrentAcceleration) = 1.0/(mBeta*mDeltaTime*mDeltaTime)*(DeltaDisplacement - mDeltaTime*PreviousVelocity - (0.5-mBeta)*mDeltaTime*mDeltaTime*PreviousAcceleration);
312  noalias(CurrentVelocity) = PreviousVelocity + (1.0-mGamma)*mDeltaTime*PreviousAcceleration + mGamma*mDeltaTime*CurrentAcceleration;
313 
314  double& CurrentDtPressure = itNode->FastGetSolutionStepValue(DT_WATER_PRESSURE);
315  DeltaPressure = itNode->FastGetSolutionStepValue(WATER_PRESSURE) - itNode->FastGetSolutionStepValue(WATER_PRESSURE, 1);
316  const double& PreviousDtPressure = itNode->FastGetSolutionStepValue(DT_WATER_PRESSURE, 1);
317 
318  CurrentDtPressure = 1.0/(mTheta*mDeltaTime)*(DeltaPressure - (1.0-mTheta)*mDeltaTime*PreviousDtPressure);
319  }
320 
321  KRATOS_CATCH( "" )
322  }
323 
324 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
325 
327  {
328  // adding mass contribution
329  if (M.size1() != 0)
330  noalias(LHS_Contribution) += 1.0/(mBeta*mDeltaTime*mDeltaTime)*M;
331 
332  // adding damping contribution
333  if (C.size1() != 0)
334  noalias(LHS_Contribution) += mGamma/(mBeta*mDeltaTime)*C;
335  }
336 
337 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
338 
339  void AddDynamicsToRHS(Element& rCurrentElement,LocalSystemVectorType& RHS_Contribution,
340  LocalSystemMatrixType& M,LocalSystemMatrixType& C,const ProcessInfo& CurrentProcessInfo)
341  {
342  int thread = OpenMPUtils::ThisThread();
343 
344  //adding inertia contribution
345  if (M.size1() != 0)
346  {
347  rCurrentElement.GetSecondDerivativesVector(mAccelerationVector[thread], 0);
348 
349  noalias(RHS_Contribution) -= prod(M, mAccelerationVector[thread]);
350  }
351 
352  //adding damping contribution
353  if (C.size1() != 0)
354  {
355  rCurrentElement.GetFirstDerivativesVector(mVelocityVector[thread], 0);
356 
357  noalias(RHS_Contribution) -= prod(C, mVelocityVector[thread]);
358  }
359  }
360 
361 }; // Class PoroNewmarkDynamicUPwScheme
362 } // namespace Kratos
363 
364 #endif // KRATOS_PORO_NEWMARK_DYNAMIC_U_PW_SCHEME defined
void SetValue(const Variable< TDataType > &rThisVariable, TDataType const &rValue)
Sets the value for a given variable.
Definition: data_value_container.h:320
Base class for all Elements.
Definition: element.h:60
virtual void GetFirstDerivativesVector(Vector &values, int Step=0) const
Definition: element.h:310
virtual void CalculateLeftHandSide(MatrixType &rLeftHandSideMatrix, const ProcessInfo &rCurrentProcessInfo)
Definition: element.h:423
virtual void CalculateMassMatrix(MatrixType &rMassMatrix, const ProcessInfo &rCurrentProcessInfo)
Definition: element.h:570
virtual void CalculateRightHandSide(VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo)
Definition: element.h:437
virtual void CalculateDampingMatrix(MatrixType &rDampingMatrix, const ProcessInfo &rCurrentProcessInfo)
Definition: element.h:583
virtual void EquationIdVector(EquationIdVectorType &rResult, const ProcessInfo &rCurrentProcessInfo) const
Definition: element.h:258
virtual void GetSecondDerivativesVector(Vector &values, int Step=0) const
Definition: element.h:320
virtual void CalculateLocalSystem(MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo)
Definition: element.h:405
std::vector< std::size_t > EquationIdVectorType
Definition: element.h:98
This class aims to manage meshes for multi-physics simulations.
Definition: model_part.h:77
NodeIterator NodesBegin(IndexType ThisIndex=0)
Definition: model_part.h:487
ProcessInfo & GetProcessInfo()
Definition: model_part.h:1746
NodeIterator NodesEnd(IndexType ThisIndex=0)
Definition: model_part.h:497
NodesContainerType & Nodes(IndexType ThisIndex=0)
Definition: model_part.h:507
static int ThisThread()
Wrapper for omp_get_thread_num().
Definition: openmp_utils.h:108
static int GetNumThreads()
Returns the current number of threads.
Definition: parallel_utilities.cpp:34
A sorted associative container similar to an STL set, but uses a vector to store pointers to its data...
Definition: pointer_vector_set.h:72
Definition: poro_newmark_dynamic_U_Pw_scheme.hpp:21
void Initialize(ModelPart &r_model_part) override
This is the place to initialize the Scheme.
Definition: poro_newmark_dynamic_U_Pw_scheme.hpp:93
void AddDynamicsToRHS(Element &rCurrentElement, LocalSystemVectorType &RHS_Contribution, LocalSystemMatrixType &M, LocalSystemMatrixType &C, const ProcessInfo &CurrentProcessInfo)
Definition: poro_newmark_dynamic_U_Pw_scheme.hpp:339
void CalculateSystemContributions(Element &rCurrentElement, LocalSystemMatrixType &LHS_Contribution, LocalSystemVectorType &RHS_Contribution, Element::EquationIdVectorType &EquationId, const ProcessInfo &CurrentProcessInfo) override
This function is designed to be called in the builder and solver to introduce the selected time integ...
Definition: poro_newmark_dynamic_U_Pw_scheme.hpp:195
BaseType::TSystemVectorType TSystemVectorType
Definition: poro_newmark_dynamic_U_Pw_scheme.hpp:30
KRATOS_CLASS_POINTER_DEFINITION(PoroNewmarkDynamicUPwScheme)
int Check(ModelPart &r_model_part) override
Definition: poro_newmark_dynamic_U_Pw_scheme.hpp:63
BaseType::TSystemMatrixType TSystemMatrixType
Definition: poro_newmark_dynamic_U_Pw_scheme.hpp:29
Scheme< TSparseSpace, TDenseSpace > BaseType
Definition: poro_newmark_dynamic_U_Pw_scheme.hpp:27
void UpdateVariablesDerivatives(ModelPart &r_model_part) override
Definition: poro_newmark_dynamic_U_Pw_scheme.hpp:288
PoroNewmarkDynamicUPwScheme(double beta, double gamma, double theta)
Constructor.
Definition: poro_newmark_dynamic_U_Pw_scheme.hpp:41
void CalculateLHSContribution(Element &rCurrentElement, LocalSystemMatrixType &LHS_Contribution, Element::EquationIdVectorType &EquationId, const ProcessInfo &CurrentProcessInfo) override
This function is designed to calculate just the LHS contribution.
Definition: poro_newmark_dynamic_U_Pw_scheme.hpp:252
void Predict(ModelPart &r_model_part, DofsArrayType &rDofSet, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b) override
Performing the prediction of the solution.
Definition: poro_newmark_dynamic_U_Pw_scheme.hpp:107
std::vector< Matrix > mMassMatrix
Member Variables.
Definition: poro_newmark_dynamic_U_Pw_scheme.hpp:281
std::vector< Vector > mVelocityVector
Definition: poro_newmark_dynamic_U_Pw_scheme.hpp:284
std::vector< Vector > mAccelerationVector
Definition: poro_newmark_dynamic_U_Pw_scheme.hpp:282
BaseType::LocalSystemMatrixType LocalSystemMatrixType
Definition: poro_newmark_dynamic_U_Pw_scheme.hpp:32
void AddDynamicsToLHS(LocalSystemMatrixType &LHS_Contribution, LocalSystemMatrixType &M, LocalSystemMatrixType &C, const ProcessInfo &CurrentProcessInfo)
Definition: poro_newmark_dynamic_U_Pw_scheme.hpp:326
~PoroNewmarkDynamicUPwScheme() override
Destructor.
Definition: poro_newmark_dynamic_U_Pw_scheme.hpp:59
BaseType::LocalSystemVectorType LocalSystemVectorType
Definition: poro_newmark_dynamic_U_Pw_scheme.hpp:31
BaseType::DofsArrayType DofsArrayType
Definition: poro_newmark_dynamic_U_Pw_scheme.hpp:28
std::vector< Matrix > mDampingMatrix
Definition: poro_newmark_dynamic_U_Pw_scheme.hpp:283
void CalculateRHSContribution(Element &rCurrentElement, LocalSystemVectorType &RHS_Contribution, Element::EquationIdVectorType &EquationId, const ProcessInfo &CurrentProcessInfo) override
This function is designed to calculate just the RHS contribution.
Definition: poro_newmark_dynamic_U_Pw_scheme.hpp:225
Definition: poro_newmark_quasistatic_U_Pw_scheme.hpp:32
double mGamma
Definition: poro_newmark_quasistatic_U_Pw_scheme.hpp:526
double mBeta
Member Variables.
Definition: poro_newmark_quasistatic_U_Pw_scheme.hpp:525
int Check(ModelPart &r_model_part) override
Definition: poro_newmark_quasistatic_U_Pw_scheme.hpp:63
double mTheta
Definition: poro_newmark_quasistatic_U_Pw_scheme.hpp:527
double mDeltaTime
Definition: poro_newmark_quasistatic_U_Pw_scheme.hpp:528
void Initialize(ModelPart &r_model_part) override
This is the place to initialize the Scheme.
Definition: poro_newmark_quasistatic_U_Pw_scheme.hpp:120
ProcessInfo holds the current value of different solution parameters.
Definition: process_info.h:59
This class provides the implementation of the basic tasks that are needed by the solution strategy.
Definition: scheme.h:56
typename TSparseSpace::MatrixType TSystemMatrixType
Matrix type definition.
Definition: scheme.h:71
virtual void EquationId(const Element &rElement, Element::EquationIdVectorType &rEquationId, const ProcessInfo &rCurrentProcessInfo)
This method gets the eqaution id corresponding to the current element.
Definition: scheme.h:636
typename TSparseSpace::VectorType TSystemVectorType
Vector type definition.
Definition: scheme.h:74
typename TDenseSpace::VectorType LocalSystemVectorType
Local system vector type definition.
Definition: scheme.h:80
typename TDenseSpace::MatrixType LocalSystemMatrixType
Local system matrix type definition.
Definition: scheme.h:77
#define KRATOS_THROW_ERROR(ExceptionType, ErrorMessage, MoreInfo)
Definition: define.h:77
#define KRATOS_CATCH(MoreInfo)
Definition: define.h:110
#define KRATOS_TRY
Definition: define.h:109
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
AMatrix::MatrixProductExpression< TExpression1Type, TExpression2Type > prod(AMatrix::MatrixExpression< TExpression1Type, TCategory1 > const &First, AMatrix::MatrixExpression< TExpression2Type, TCategory2 > const &Second)
Definition: amatrix_interface.h:568
T & noalias(T &TheMatrix)
Definition: amatrix_interface.h:484
int C
Definition: generate_hyper_elastic_simo_taylor_neo_hookean.py:27
b
Definition: generate_total_lagrangian_mixed_volumetric_strain_element.py:31
float gamma
Definition: generate_two_fluid_navier_stokes.py:131
A
Definition: sensitivityMatrix.py:70
integer i
Definition: TensorModule.f:17