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.
mesh_data_transfer_utilities.hpp
Go to the documentation of this file.
1 //
2 // Project Name: KratosDelaunayMeshingApplication $
3 // Created by: $Author: JMCarbonell $
4 // Last modified by: $Co-Author: $
5 // Date: $Date: April 2018 $
6 // Revision: $Revision: 0.0 $
7 //
8 //
9 
10 #if !defined(KRATOS_MESH_DATA_TRANSFER_UTILITIES_H_INCLUDED)
11 #define KRATOS_MESH_DATA_TRANSFER_UTILITIES_H_INCLUDED
12 
13 // System includes
14 
15 // Project includes
16 #include "includes/variables.h"
17 #include "includes/model_part.h"
20 
21 namespace Kratos
22 {
25 
29 
33 
37 
41 
43 
45  class KRATOS_API(DELAUNAY_MESHING_APPLICATION) MeshDataTransferUtilities
46  {
47  public:
48 
51 
54 
60  typedef std::vector<Node::Pointer > PointPointerVector;
61 
65 
69 
73  KRATOS_DEFINE_LOCAL_FLAG( NODE_TO_ELEMENT );
74  KRATOS_DEFINE_LOCAL_FLAG( ELEMENT_TO_NODE );
75  KRATOS_DEFINE_LOCAL_FLAG( ELEMENT_TO_ELEMENT );
76  KRATOS_DEFINE_LOCAL_FLAG( INITIALIZE_MASTER_CONDITION );
77  KRATOS_DEFINE_LOCAL_FLAG( MASTER_ELEMENT_TO_MASTER_CONDITION );
78 
80  {
81 
83 
85 
86  std::vector<const Variable<double>* > DoubleVariables;
87  std::vector<const Variable<array_1d<double,3> >* > Array1DVariables;
88  std::vector<const Variable<Vector>* > VectorVariables;
89  std::vector<const Variable<Matrix>* > MatrixVariables;
90 
92 
93  // setting refining variables (generally for python interface)
94  void Set(Flags ThisFlag)
95  {
96  Options.Set(ThisFlag);
97  };
98 
99  void Reset(Flags ThisFlag)
100  {
101  Options.Reset(ThisFlag);
102  };
103 
104  void SetOptions(const Flags& rOptions)
105  {
106  Options=rOptions;
107  };
108 
109 
110  void SetVariable(const Variable<double>& pVariable)
111  {
112  VariablesSetFlag = true;
113  DoubleVariables.push_back(&pVariable);
114  }
115 
116  void SetVariable(const Variable<array_1d<double,3> >& pVariable)
117  {
118  VariablesSetFlag = true;
119  Array1DVariables.push_back(&pVariable);
120  }
121 
122 
123  void SetVariable(const Variable<Vector>& pVariable)
124  {
125  VariablesSetFlag = true;
126  VectorVariables.push_back(&pVariable);
127  }
128 
129 
130  void SetVariable(const Variable<Matrix>& pVariable)
131  {
132  VariablesSetFlag = true;
133  MatrixVariables.push_back(&pVariable);
134  }
135 
137  {
138  return Options;
139  };
140 
141  void Initialize ()
142  {
143  VariablesSetFlag = false;
144  };
145 
146  };
147 
148 
150  {
151 
156 
157  void Initialize(const unsigned int& dimension, const unsigned int& voigt_size)
158  {
159  DoubleVariable = 0;
160  Array1DVariable.clear();
161  VectorVariable.resize(voigt_size);
162  noalias(VectorVariable) = ZeroVector(voigt_size);
163  MatrixVariable.resize(dimension, dimension,false);
164  noalias(MatrixVariable) = IdentityMatrix(dimension);
165  }
166 
167  };
168 
169 
171  {
172  unsigned int array_size;
173  std::vector<double> DoubleVariableArray;
174  std::vector<array_1d<double,3> > Array1DVariableArray;
175  std::vector<Vector> VectorVariableArray;
176  std::vector<Matrix> MatrixVariableArray;
177 
178  void Initialize(const unsigned int& size)
179  {
180  array_size = size;
181  DoubleVariableArray.resize(size);
182  Array1DVariableArray.resize(size);
183  VectorVariableArray.resize(size);
184  MatrixVariableArray.resize(size);
185  }
186 
187  };
188 
192 
195  {
196  } //
197 
198 
201  {
202  } //
203 
204 
207 
208 
212 
213 
217 
218  //*******************************************************************************************
219  //*******************************************************************************************
220 
221  void TransferData(ModelPart& rModelPart,
222  const Element & rReferenceElement,
223  PointPointerVector &list_of_new_centers,
224  std::vector<Geometry<Node > >& list_of_new_vertices,
225  Flags Options);
226 
227 
228  //*******************************************************************************************
229  //*******************************************************************************************
230 
231  void InitializeBoundaryData(Condition* rCurrentCondition,
232  const TransferParameters& rTransferVariables,
233  const ProcessInfo& rCurrentProcessInfo);
234 
235 
236 
237  //*******************************************************************************************
238  //*******************************************************************************************
239 
240  void TransferInitialBoundaryData(Condition* rCurrentCondition,
241  const TransferParameters& rTransferVariables,
242  BoundaryVariables& rVariables);
243 
244  //*******************************************************************************************
245  //*******************************************************************************************
246 
247  void TransferCurrentBoundaryData(Element* rCurrentElement,
248  Condition* rCurrentCondition,
249  const TransferParameters& rTransferVariables,
250  BoundaryVariables& rVariables,
251  BoundaryVariableArrays& rVariableArrays,
252  const ProcessInfo& rCurrentProcessInfo);
253 
254 
255  //*******************************************************************************************
256  //*******************************************************************************************
257 
258  void TransferBoundaryData(Condition::Pointer rCurrentCondition,
259  Condition::Pointer rReferenceCondition,
260  const TransferParameters& rTransferVariables);
261 
262 
263  //*******************************************************************************************
264  //*******************************************************************************************
265 
266  void TransferBoundaryData(Element* rCurrentElement,
267  Condition* rCurrentCondition,
268  const TransferParameters& rTransferVariables,
269  const ProcessInfo& rCurrentProcessInfo);
270 
271 
272  //*******************************************************************************************
273  //*******************************************************************************************
274 
275  void TransferBoundaryData(const TransferParameters& rTransferVariables,
276  ModelPart& rModelPart);
277 
278  //*******************************************************************************************
279  //*******************************************************************************************
280 
281 
282  void TransferNodalValuesToElements(const TransferParameters& rTransferVariables,
283  ModelPart& rModelPart);
284 
285 
286 
287  //*******************************************************************************************
288  //*******************************************************************************************
289 
290 
291  void TransferNodalValuesToElements(const TransferParameters& rTransferVariables,
292  const Variable<double>& rCriticalVariable,
293  const double& CriticalValue,
294  ModelPart& rModelPart);
295 
296 
297 
298  //*******************************************************************************************
299  //*******************************************************************************************
300  void TransferElementalValuesToNodes( const TransferParameters& rTransferVariables,
301  ModelPart& rModelPart);
302 
303 
304 
305  //*******************************************************************************************
306  //*******************************************************************************************
308  const Element & rReferenceElement,
309  PointPointerVector &list_of_new_centers,
310  std::vector<Geometry<Node > >& list_of_new_vertices);
311 
312 
313  //*******************************************************************************************
314  //*******************************************************************************************
316  const Element & rReferenceElement,
317  PointPointerVector &list_of_new_centers,
318  std::vector<Geometry<Node > >& list_of_new_vertices);
319 
320 
321  //*******************************************************************************************
322  //*******************************************************************************************
323 
324  void TransferElementalValuesToElements(ModelPart& rModelPart,
325  const Element & rReferenceElement,
326  PointPointerVector &list_of_new_centers,
327  std::vector<Geometry<Node > >& list_of_new_vertices);
328 
329 
330 
331  //*******************************************************************************************
332  //*******************************************************************************************
333 
334  inline void CalculateCenterAndSearchRadius(const std::vector<std::vector<double> >& rPointCoordinates,
335  std::vector<double>& rCenter, double& rRadius)
336  {
337 
338  if( rPointCoordinates.size() == 3 ){
339 
340  CalculateCenterAndSearchRadius( rPointCoordinates[0][0], rPointCoordinates[0][1],
341  rPointCoordinates[1][0], rPointCoordinates[1][1],
342  rPointCoordinates[2][0], rPointCoordinates[2][1],
343  rCenter[0], rCenter[1], rRadius);
344  }
345  else if( rPointCoordinates.size() == 4 ){
346 
347  CalculateCenterAndSearchRadius( rPointCoordinates[0][0], rPointCoordinates[0][1], rPointCoordinates[0][2],
348  rPointCoordinates[1][0], rPointCoordinates[1][1], rPointCoordinates[1][2],
349  rPointCoordinates[2][0], rPointCoordinates[2][1], rPointCoordinates[2][2],
350  rPointCoordinates[3][0], rPointCoordinates[3][1], rPointCoordinates[3][2],
351  rCenter[0], rCenter[1], rCenter[2], rRadius);
352  }
353  else{
354  KRATOS_THROW_ERROR( std::logic_error,"Number of points supplied out of range ERROR", "" )
355  }
356 
357 
358  }
359 
360  //*******************************************************************************************
361  //*******************************************************************************************
362 
363 
364  inline void CalculateCenterAndSearchRadius(const double x0, const double y0,
365  const double x1, const double y1,
366  double& xc, double& yc, double& R)
367  {
368  xc = 0.5*(x0+x1);
369  yc = 0.5*(y0+y1);
370 
371  R = sqrt( (xc-x0)*(xc-x0) + (yc-y0)*(yc-y0) );
372  }
373 
374 
375  inline void CalculateCenterAndSearchRadius(const double x0, const double y0, const double z0,
376  const double x1, const double y1, const double z1,
377  const double x2, const double y2, const double z2,
378  double& xc, double& yc, double& zc, double& R)
379  {
380  xc = 0.3333333333333333333*(x0+x1+x2);
381  yc = 0.3333333333333333333*(y0+y1+y2);
382  zc = 0.3333333333333333333*(z0+z1+z2);
383 
384  double R1 = (xc-x0)*(xc-x0) + (yc-y0)*(yc-y0) + (zc-z0)*(zc-z0);
385  double R2 = (xc-x1)*(xc-x1) + (yc-y1)*(yc-y1) + (zc-z1)*(zc-z1);
386  double R3 = (xc-x2)*(xc-x2) + (yc-y2)*(yc-y2) + (zc-z2)*(zc-z2);
387 
388  R = R1;
389  if(R2 > R) R = R2;
390  if(R3 > R) R = R3;
391 
392  R = sqrt(R);
393  }
394 
395 
396  inline void CalculateCenterAndSearchRadius(const double x0, const double y0,
397  const double x1, const double y1,
398  const double x2, const double y2,
399  double& xc, double& yc, double& R)
400  {
401  xc = 0.3333333333333333333*(x0+x1+x2);
402  yc = 0.3333333333333333333*(y0+y1+y2);
403 
404  double R1 = (xc-x0)*(xc-x0) + (yc-y0)*(yc-y0);
405  double R2 = (xc-x1)*(xc-x1) + (yc-y1)*(yc-y1);
406  double R3 = (xc-x2)*(xc-x2) + (yc-y2)*(yc-y2);
407 
408  R = R1;
409  if(R2 > R) R = R2;
410  if(R3 > R) R = R3;
411 
412  R = sqrt(R);
413  }
414 
415  inline void CalculateCenterAndSearchRadius(const double x0, const double y0, const double z0,
416  const double x1, const double y1, const double z1,
417  const double x2, const double y2, const double z2,
418  const double x3, const double y3, const double z3,
419  double& xc, double& yc, double& zc, double& R)
420  {
421  xc = 0.25*(x0+x1+x2+x3);
422  yc = 0.25*(y0+y1+y2+y3);
423  zc = 0.25*(z0+z1+z2+z3);
424 
425  double R1 = (xc-x0)*(xc-x0) + (yc-y0)*(yc-y0) + (zc-z0)*(zc-z0);
426  double R2 = (xc-x1)*(xc-x1) + (yc-y1)*(yc-y1) + (zc-z1)*(zc-z1);
427  double R3 = (xc-x2)*(xc-x2) + (yc-y2)*(yc-y2) + (zc-z2)*(zc-z2);
428  double R4 = (xc-x3)*(xc-x3) + (yc-y3)*(yc-y3) + (zc-z3)*(zc-z3);
429 
430  R = R1;
431  if(R2 > R) R = R2;
432  if(R3 > R) R = R3;
433  if(R4 > R) R = R4;
434 
435  R = sqrt(R);
436  }
437 
438 
439  //*******************************************************************************************
440  //*******************************************************************************************
441 
442 
443  void FillVectorData( VariablesList& rVariablesList,
444  Node& rNode );
445 
446 
447  void Interpolate( Geometry<Node >& geom,
448  const std::vector<double>& N,
449  VariablesList& rVariablesList,
450  Node::Pointer pnode,
451  double alpha = 1.0 );
452 
453 
455  const std::vector<double>& N,
456  VariablesList& rVariablesList,
457  Node::Pointer pnode,
458  double alpha = 1.0 );
459  //doubles only
460  void InterpolateData( Geometry<Node >& geom,
461  const std::vector<double>& N,
462  unsigned int step_data_size,
463  Node::Pointer pnode,
464  double alpha = 1.0 );
465 
466 
467  VariablesListDataValueContainer InterpolateVariablesData( Geometry<Node >& geom,
468  const std::vector<double>& N,
469  unsigned int step_data_size,
470  Node::Pointer pnode,
471  double alpha = 1.0 );
472 
473 
477 
478 
482 
483 
487 
489  virtual std::string Info() const
490  {
491  return "";
492  }
493 
495  virtual void PrintInfo(std::ostream& rOStream) const {}
496 
498  virtual void PrintData(std::ostream& rOStream) const {}
499 
500 
504 
505 
507 
508  protected:
511 
512 
517 
521 
522 
526 
527 
531 
532 
536 
537 
541 
542 
544 
545  private:
548 
549 
553 
554 
558 
561 
565 
566 
570 
571 
575 
576 
580 
582 
583  }; // Class MeshDataTransferUtilities
584 
586 
589 
590 
594 
595 
597  inline std::istream& operator >> (std::istream& rIStream,
599 
601  inline std::ostream& operator << (std::ostream& rOStream,
602  const MeshDataTransferUtilities& rThis)
603  {
604  rThis.PrintInfo(rOStream);
605  rOStream << std::endl;
606  rThis.PrintData(rOStream);
607 
608  return rOStream;
609  }
611 
612 
613 } // namespace Kratos.
614 
615 #endif // KRATOS_MESH_DATA_TRANSFER_UTILITITES_H_INCLUDED defined
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
Base class for all Conditions.
Definition: condition.h:59
Base class for all Elements.
Definition: element.h:60
Definition: flags.h:58
void Set(const Flags ThisFlag)
Definition: flags.cpp:33
void Reset(const Flags ThisFlag)
Definition: flags.h:193
Geometry base class.
Definition: geometry.h:71
PointerVector< TPointType > PointsArrayType
Definition: geometry.h:118
This class is a vector which stores global pointers.
Definition: global_pointers_vector.h:61
void resize(std::size_t NewSize1, std::size_t NewSize2, bool preserve=0)
Definition: amatrix_interface.h:224
Short class definition.
Definition: mesh_data_transfer_utilities.hpp:46
ModelPart::MeshType::GeometryType::PointsArrayType PointsArrayType
Definition: mesh_data_transfer_utilities.hpp:59
ModelPart::MeshType MeshType
Definition: mesh_data_transfer_utilities.hpp:56
KRATOS_DEFINE_LOCAL_FLAG(MASTER_ELEMENT_TO_MASTER_CONDITION)
void CalculateCenterAndSearchRadius(const double x0, const double y0, const double x1, const double y1, double &xc, double &yc, double &R)
Definition: mesh_data_transfer_utilities.hpp:364
GlobalPointersVector< Condition > ConditionWeakPtrVectorType
Definition: mesh_data_transfer_utilities.hpp:68
Kratos::weak_ptr< Element > ElementWeakPtrType
Definition: mesh_data_transfer_utilities.hpp:63
GlobalPointersVector< Element > ElementWeakPtrVectorType
Definition: mesh_data_transfer_utilities.hpp:67
void TransferElementalValuesToNodes(ModelPart &rModelPart, const Element &rReferenceElement, PointPointerVector &list_of_new_centers, std::vector< Geometry< Node > > &list_of_new_vertices)
Kratos::weak_ptr< Node > NodeWeakPtrType
Definition: mesh_data_transfer_utilities.hpp:62
Kratos::weak_ptr< Condition > ConditionWeakPtrType
Definition: mesh_data_transfer_utilities.hpp:64
void CalculateCenterAndSearchRadius(const std::vector< std::vector< double > > &rPointCoordinates, std::vector< double > &rCenter, double &rRadius)
Definition: mesh_data_transfer_utilities.hpp:334
void CalculateCenterAndSearchRadius(const double x0, const double y0, const double x1, const double y1, const double x2, const double y2, double &xc, double &yc, double &R)
Definition: mesh_data_transfer_utilities.hpp:396
ModelPart::ElementsContainerType ElementsContainerType
Definition: mesh_data_transfer_utilities.hpp:57
ModelPart::PropertiesType PropertiesType
Definition: mesh_data_transfer_utilities.hpp:55
void CalculateCenterAndSearchRadius(const double x0, const double y0, const double z0, const double x1, const double y1, const double z1, const double x2, const double y2, const double z2, double &xc, double &yc, double &zc, double &R)
Definition: mesh_data_transfer_utilities.hpp:375
KRATOS_DEFINE_LOCAL_FLAG(ELEMENT_TO_NODE)
MeshDataTransferUtilities()
Default constructor.
Definition: mesh_data_transfer_utilities.hpp:194
void CalculateCenterAndSearchRadius(const double x0, const double y0, const double z0, const double x1, const double y1, const double z1, const double x2, const double y2, const double z2, const double x3, const double y3, const double z3, double &xc, double &yc, double &zc, double &R)
Definition: mesh_data_transfer_utilities.hpp:415
virtual void PrintData(std::ostream &rOStream) const
Print object's data.
Definition: mesh_data_transfer_utilities.hpp:498
KRATOS_DEFINE_LOCAL_FLAG(INITIALIZE_MASTER_CONDITION)
ModelPart::NodesContainerType NodesContainerType
Definition: mesh_data_transfer_utilities.hpp:58
virtual std::string Info() const
Turn back information as a string.
Definition: mesh_data_transfer_utilities.hpp:489
KRATOS_DEFINE_LOCAL_FLAG(NODE_TO_ELEMENT)
MeshDataTransferUtilities(MeshDataTransferUtilities const &rOther)
Copy constructor.
Definition: mesh_data_transfer_utilities.hpp:200
GlobalPointersVector< Node > NodeWeakPtrVectorType
Definition: mesh_data_transfer_utilities.hpp:66
KRATOS_CLASS_POINTER_DEFINITION(MeshDataTransferUtilities)
Pointer definition of data transfer.
std::vector< Node::Pointer > PointPointerVector
Definition: mesh_data_transfer_utilities.hpp:60
virtual ~MeshDataTransferUtilities()
Destructor.
Definition: mesh_data_transfer_utilities.hpp:206
KRATOS_DEFINE_LOCAL_FLAG(ELEMENT_TO_ELEMENT)
int mEchoLevel
Definition: mesh_data_transfer_utilities.hpp:516
virtual void PrintInfo(std::ostream &rOStream) const
Print information about this object.
Definition: mesh_data_transfer_utilities.hpp:495
void TransferNodalValuesToElements(ModelPart &rModelPart, const Element &rReferenceElement, PointPointerVector &list_of_new_centers, std::vector< Geometry< Node > > &list_of_new_vertices)
This class aims to manage meshes for multi-physics simulations.
Definition: model_part.h:77
MeshType::ElementsContainerType ElementsContainerType
Element container. A vector set of Elements with their Id's as key.
Definition: model_part.h:168
MeshType::NodesContainerType NodesContainerType
Nodes container. Which is a vector set of nodes with their Id's as key.
Definition: model_part.h:128
This class defines the node.
Definition: node.h:65
ProcessInfo holds the current value of different solution parameters.
Definition: process_info.h:59
Properties encapsulates data shared by different Elements or Conditions. It can store any type of dat...
Definition: properties.h:69
A shared variable list gives the position of each variable in the containers sharing it.
Definition: variables_list_data_value_container.h:61
Holds a list of variables and their position in VariablesListDataValueContainer.
Definition: variables_list.h:50
BOOST_UBLAS_INLINE void clear()
Definition: array_1d.h:325
#define KRATOS_THROW_ERROR(ExceptionType, ErrorMessage, MoreInfo)
Definition: define.h:77
void InterpolateVariables(std::vector< double > &rValuesList, const GeometryType &rGeometry, const Vector &rSamplingPointShapeFunctions, const SizeType LocalSamplePointValuesOffset, const TVariableInfoTuplesList &... rVariableInfoTuplesList)
Interpolates variables for given variable list tuples.
Definition: rans_line_output_process.h:290
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
KratosZeroVector< double > ZeroVector
Definition: amatrix_interface.h:561
std::weak_ptr< T > weak_ptr
Definition: smart_pointers.h:30
AMatrix::IdentityMatrix< double > IdentityMatrix
Definition: amatrix_interface.h:564
std::istream & operator>>(std::istream &rIStream, LinearMasterSlaveConstraint &rThis)
input stream function
T & noalias(T &TheMatrix)
Definition: amatrix_interface.h:484
std::ostream & operator<<(std::ostream &rOStream, const LinearMasterSlaveConstraint &rThis)
output stream function
Definition: linear_master_slave_constraint.h:432
alpha
Definition: generate_convection_diffusion_explicit_element.py:113
x2
Definition: generate_frictional_mortar_condition.py:122
x1
Definition: generate_frictional_mortar_condition.py:121
int dimension
Definition: isotropic_damage_automatic_differentiation.py:123
R
Definition: isotropic_damage_automatic_differentiation.py:172
def Interpolate(variable, entity, sf_values, historical_value)
Definition: point_output_process.py:231
float xc
Definition: rotating_cone.py:77
float yc
Definition: rotating_cone.py:78
N
Definition: sensitivityMatrix.py:29
Definition: mesh_data_transfer_utilities.hpp:171
std::vector< Matrix > MatrixVariableArray
Definition: mesh_data_transfer_utilities.hpp:176
std::vector< double > DoubleVariableArray
Definition: mesh_data_transfer_utilities.hpp:173
unsigned int array_size
Definition: mesh_data_transfer_utilities.hpp:172
void Initialize(const unsigned int &size)
Definition: mesh_data_transfer_utilities.hpp:178
std::vector< Vector > VectorVariableArray
Definition: mesh_data_transfer_utilities.hpp:175
std::vector< array_1d< double, 3 > > Array1DVariableArray
Definition: mesh_data_transfer_utilities.hpp:174
Definition: mesh_data_transfer_utilities.hpp:150
double DoubleVariable
Definition: mesh_data_transfer_utilities.hpp:152
void Initialize(const unsigned int &dimension, const unsigned int &voigt_size)
Definition: mesh_data_transfer_utilities.hpp:157
array_1d< double, 3 > Array1DVariable
Definition: mesh_data_transfer_utilities.hpp:153
Vector VectorVariable
Definition: mesh_data_transfer_utilities.hpp:154
Matrix MatrixVariable
Definition: mesh_data_transfer_utilities.hpp:155
Definition: mesh_data_transfer_utilities.hpp:80
std::vector< const Variable< Vector > * > VectorVariables
Definition: mesh_data_transfer_utilities.hpp:88
void Reset(Flags ThisFlag)
Definition: mesh_data_transfer_utilities.hpp:99
std::vector< const Variable< array_1d< double, 3 > > * > Array1DVariables
Definition: mesh_data_transfer_utilities.hpp:87
void Initialize()
Definition: mesh_data_transfer_utilities.hpp:141
void Set(Flags ThisFlag)
Definition: mesh_data_transfer_utilities.hpp:94
bool VariablesSetFlag
Definition: mesh_data_transfer_utilities.hpp:91
void SetVariable(const Variable< Matrix > &pVariable)
Definition: mesh_data_transfer_utilities.hpp:130
void SetVariable(const Variable< double > &pVariable)
Definition: mesh_data_transfer_utilities.hpp:110
void SetVariable(const Variable< Vector > &pVariable)
Definition: mesh_data_transfer_utilities.hpp:123
void SetVariable(const Variable< array_1d< double, 3 > > &pVariable)
Definition: mesh_data_transfer_utilities.hpp:116
std::vector< const Variable< double > * > DoubleVariables
Definition: mesh_data_transfer_utilities.hpp:86
void SetOptions(const Flags &rOptions)
Definition: mesh_data_transfer_utilities.hpp:104
std::vector< const Variable< Matrix > * > MatrixVariables
Definition: mesh_data_transfer_utilities.hpp:89
Flags Options
Definition: mesh_data_transfer_utilities.hpp:84
Flags GetOptions()
Definition: mesh_data_transfer_utilities.hpp:136