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.
internal_variables_interpolation_process.h
Go to the documentation of this file.
1 // KRATOS __ __ _____ ____ _ _ ___ _ _ ____
2 // | \/ | ____/ ___|| | | |_ _| \ | |/ ___|
3 // | |\/| | _| \___ \| |_| || || \| | | _
4 // | | | | |___ ___) | _ || || |\ | |_| |
5 // |_| |_|_____|____/|_| |_|___|_| \_|\____| APPLICATION
6 //
7 // License: BSD License
8 // license: MeshingApplication/license.txt
9 //
10 // Main authors: Vicente Mataix Ferrandiz
11 //
12 
13 #if !defined(KRATOS_INTERNAL_VARIABLES_INTERPOLATION_PROCESS )
14 #define KRATOS_INTERNAL_VARIABLES_INTERPOLATION_PROCESS
15 
16 // System includes
17 
18 // External includes
19 
20 // Project includes
22 #include "processes/process.h"
23 #include "includes/model_part.h"
29 // Include the point locator
31 // Include the trees
32 // #include "spatial_containers/bounding_volume_tree.h" // k-DOP
33 #include "spatial_containers/spatial_containers.h" // kd-tree
34 
35 namespace Kratos
36 {
39 
43 
45  typedef Node NodeType;
46 
48  typedef Geometry<NodeType> GeometryType;
49 
51  typedef GaussPointItem PointType;
52  typedef PointType::Pointer PointTypePointer;
53  typedef std::vector<PointTypePointer> PointVector;
54  typedef PointVector::iterator PointIterator;
55  typedef std::vector<double> DistanceVector;
56  typedef DistanceVector::iterator DistanceIterator;
57 
61 
65 
69 
77 class KRATOS_API(MESHING_APPLICATION) InternalVariablesInterpolationProcess
78  : public Process
79 {
80 public:
83 
87 
93 
94  // General type definitions
98  typedef Node NodeType;
100 
103 
107 
111  enum class InterpolationTypes {
112  CLOSEST_POINT_TRANSFER = 0,
113  LEAST_SQUARE_TRANSFER = 1,
114  SHAPE_FUNCTION_TRANSFER = 2
115  };
116 
120 
121  // Class Constructor
122 
131  ModelPart& rOriginMainModelPart,
132  ModelPart& rDestinationMainModelPart,
133  Parameters ThisParameters = Parameters(R"({})")
134  );
135 
137 
141 
142  void operator()()
143  {
144  Execute();
145  }
146 
150 
159  void Execute() override;
160 
164  const Parameters GetDefaultParameters() const override;
165 
169 
173 
177 
178  /************************************ GET INFO *************************************/
179  /***********************************************************************************/
180 
181  std::string Info() const override
182  {
183  return "InternalVariablesInterpolationProcess";
184  }
185 
186  /************************************ PRINT INFO ***********************************/
187  /***********************************************************************************/
188 
189  void PrintInfo(std::ostream& rOStream) const override
190  {
191  rOStream << Info();
192  }
193 
197 
199 
200 protected:
201 
204 
208 
209 
213 
217 
221 
225 
229 
231 
232 private:
235 
236  // Auxiliar search struct
237  template<std::size_t TDim>
238  struct auxiliar_search
239  {
240  auxiliar_search(ModelPart& rModelPart)
241  : point_locator(rModelPart)
242  {
243  // We create the locator
244  point_locator.UpdateSearchDatabase();
245  }
246 
247  BinBasedFastPointLocator<TDim> point_locator;
248  Vector N;
249  Element::Pointer p_element;
250  };
251 
255 
259 
260  // The model parts
261  ModelPart& mrOriginMainModelPart;
262  ModelPart& mrDestinationMainModelPart;
263  const std::size_t mDimension;
264 
265  // The allocation parameters
266  std::size_t mAllocationSize;
267  std::size_t mBucketSize;
268 
269  // The seatch variables
270  double mSearchFactor;
271  PointVector mPointListOrigin;
272 
273  // Variables to interpolate
274  std::vector<std::string> mInternalVariableList;
275  InterpolationTypes mThisInterpolationType;
276 
280 
284 
290  PointVector CreateGaussPointList(ModelPart& ThisModelPart);
291 
296  void InterpolateGaussPointsClosestPointTransfer();
297 
302  void InterpolateGaussPointsLeastSquareTransfer();
303 
308  void InterpolateGaussPointsShapeFunctionTransfer();
309 
314  std::size_t ComputeTotalNumberOfVariables();
315 
324  template<class TVarType>
325  static inline void SaveValuesOnGaussPoint(
326  const Variable<TVarType>& rThisVar,
327  PointTypePointer pPointOrigin,
328  ElementsArrayType::iterator itElemOrigin,
329  const IndexType GaussPointId,
330  const ProcessInfo& rCurrentProcessInfo
331  )
332  {
333  std::vector<TVarType> values;
334  itElemOrigin->CalculateOnIntegrationPoints(rThisVar, values, rCurrentProcessInfo);
335  pPointOrigin->SetValue(rThisVar, values[GaussPointId]);
336  }
337 
345  template<class TVarType>
346  static inline void GetAndSetDirectVariableOnConstitutiveLaw(
347  const Variable<TVarType>& rThisVar,
348  ConstitutiveLaw::Pointer pOriginConstitutiveLaw,
349  ConstitutiveLaw::Pointer pDestinationConstitutiveLaw,
350  const ProcessInfo& rCurrentProcessInfo
351  )
352  {
353  TVarType origin_value;
354  origin_value = pOriginConstitutiveLaw->GetValue(rThisVar, origin_value);
355 
356  pDestinationConstitutiveLaw->SetValue(rThisVar, origin_value, rCurrentProcessInfo);
357  }
358 
367  template<class TVarType>
368  static inline void GetAndSetDirectVariableOnElements(
369  const Variable<TVarType>& rThisVar,
370  PointTypePointer pPointOrigin,
371  ElementsArrayType::iterator itElemDestination,
372  const IndexType GaussPointId,
373  const ProcessInfo& rCurrentProcessInfo
374  )
375  {
376  std::vector<TVarType> values;
377  itElemDestination->CalculateOnIntegrationPoints(rThisVar, values, rCurrentProcessInfo);
378  TVarType aux_value;
379  values[GaussPointId] = pPointOrigin->GetValue(rThisVar, aux_value);
380  itElemDestination->SetValuesOnIntegrationPoints(rThisVar, values, rCurrentProcessInfo);
381  }
382 
393  template<class TVarType>
394  static inline void GetAndSetWeightedVariableOnConstitutiveLaw(
395  const Variable<TVarType>& rThisVar,
396  const std::size_t NumberOfPointsFound,
397  PointVector& PointsFound,
398  const std::vector<double>& PointDistances,
399  const double CharacteristicLenght,
400  ConstitutiveLaw::Pointer pDestinationConstitutiveLaw,
401  const ProcessInfo& rCurrentProcessInfo
402  )
403  {
404  TVarType weighting_function_numerator = rThisVar.Zero();
405  double weighting_function_denominator = 0.0;
406  TVarType origin_value;
407 
408  for (std::size_t i_point_found = 0; i_point_found < NumberOfPointsFound; ++i_point_found) {
409  PointTypePointer p_gp_origin = PointsFound[i_point_found];
410 
411  const double distance = PointDistances[i_point_found];
412 
413  origin_value = (p_gp_origin->GetConstitutiveLaw())->GetValue(rThisVar, origin_value);
414 
415  const double ponderated_weight = p_gp_origin->GetWeight() * std::exp( -4.0 * distance * distance /std::pow(CharacteristicLenght, 2));
416 
417  weighting_function_numerator += ponderated_weight * origin_value;
418  weighting_function_denominator += ponderated_weight;
419  }
420 
421  const TVarType destination_value = weighting_function_numerator/weighting_function_denominator;
422 
423  pDestinationConstitutiveLaw->SetValue(rThisVar, destination_value, rCurrentProcessInfo);
424  }
425 
437  template<class TVarType>
438  static inline void GetAndSetWeightedVariableOnElements(
439  const Variable<TVarType>& rThisVar,
440  const std::size_t NumberOfPointsFound,
441  PointVector& PointsFound,
442  const std::vector<double>& PointDistances,
443  const double CharacteristicLenght,
444  ElementsArrayType::iterator itElemDestination,
445  const IndexType GaussPointId,
446  const ProcessInfo& rCurrentProcessInfo
447  )
448  {
449  TVarType weighting_function_numerator = rThisVar.Zero();
450  double weighting_function_denominator = 0.0;
451  TVarType origin_value;
452 
453  for (std::size_t i_point_found = 0; i_point_found < NumberOfPointsFound; ++i_point_found) {
454  PointTypePointer p_gp_origin = PointsFound[i_point_found];
455 
456  const double distance = PointDistances[i_point_found];
457 
458  origin_value = p_gp_origin->GetValue(rThisVar, origin_value);
459 
460  const double ponderated_weight = p_gp_origin->GetWeight() * std::exp( -4.0 * distance * distance /std::pow(CharacteristicLenght, 2));
461 
462  weighting_function_numerator += ponderated_weight * origin_value;
463  weighting_function_denominator += ponderated_weight;
464  }
465 
466  const TVarType destination_value = weighting_function_numerator/weighting_function_denominator;
467 
468  std::vector<TVarType> values;
469  itElemDestination->CalculateOnIntegrationPoints(rThisVar, values, rCurrentProcessInfo);
470  values[GaussPointId] = destination_value;
471  itElemDestination->SetValuesOnIntegrationPoints(rThisVar, values, rCurrentProcessInfo);
472  }
473 
482  template<class TVarType>
483  static inline void InterpolateAddVariableOnConstitutiveLaw(
484  GeometryType& rThisGeometry,
485  const Variable<TVarType>& rThisVar,
486  const Vector& N,
487  ConstitutiveLaw::Pointer& pConstitutiveLaw,
488  const double Weight
489  );
490 
501  template<class TVarType>
502  static inline void InterpolateAddVariableOnElement(
503  GeometryType& rThisGeometry,
504  const Variable<TVarType>& rThisVar,
505  const Vector& N,
506  Element& rElement,
507  const IndexType GaussPointId,
508  const double Weight,
509  const ProcessInfo& rCurrentProcessInfo
510  );
511 
518  template<class TVarType>
519  static inline void PonderateVariable(
520  GeometryType& rThisGeometry,
521  const Variable<TVarType>& rThisVar,
522  const double TotalWeight
523  );
524 
532  template<class TVarType>
533  static inline void InterpolateToNode(
534  const Variable<TVarType>& rThisVar,
535  const Vector& N,
536  NodeType& rNode,
537  Element::Pointer pElement
538  )
539  {
540  // An auxiliar value
541  TVarType aux_value = rThisVar.Zero();
542 
543  // Interpolate with shape function
544  const std::size_t number_nodes = pElement->GetGeometry().size();
545  for (std::size_t i_node = 0; i_node < number_nodes; ++i_node)
546  aux_value += N[i_node] * pElement->GetGeometry()[i_node].GetValue(rThisVar);
547 
548  rNode.SetValue(rThisVar, aux_value);
549  }
550 
559  template<class TVarType>
560  static inline void SetInterpolatedValueOnConstitutiveLaw(
561  GeometryType& rThisGeometry,
562  const Variable<TVarType>& rThisVar,
563  const Vector& N,
564  ConstitutiveLaw::Pointer pDestinationConstitutiveLaw,
565  const ProcessInfo& rCurrentProcessInfo
566  )
567  {
568  // An auxiliar value
569  TVarType destination_value = rThisVar.Zero();
570 
571  // Interpolate with shape function
572  const std::size_t number_nodes = rThisGeometry.size();
573  for (std::size_t i_node = 0; i_node < number_nodes; ++i_node)
574  destination_value += N[i_node] * rThisGeometry[i_node].GetValue(rThisVar);
575 
576  pDestinationConstitutiveLaw->SetValue(rThisVar, destination_value, rCurrentProcessInfo);
577  }
578 
588  template<class TVarType>
589  static inline void SetInterpolatedValueOnElement(
590  GeometryType& rThisGeometry,
591  const Variable<TVarType>& rThisVar,
592  const Vector& N,
593  Element& rElement,
594  const IndexType GaussPointId,
595  const ProcessInfo& rCurrentProcessInfo
596  )
597  {
598  // An auxiliar value
599  TVarType destination_value = rThisVar.Zero();
600 
601  // Interpolate with shape function
602  const std::size_t number_nodes = rThisGeometry.size();
603  for (std::size_t i_node = 0; i_node < number_nodes; ++i_node)
604  destination_value += N[i_node] * rThisGeometry[i_node].GetValue(rThisVar);
605 
606  std::vector<TVarType> values;
607  rElement.CalculateOnIntegrationPoints(rThisVar, values, rCurrentProcessInfo);
608  values[GaussPointId] = destination_value;
609  rElement.SetValuesOnIntegrationPoints(rThisVar, values, rCurrentProcessInfo);
610  }
611 
616  template<std::size_t TDim>
617  void InterpolateToNodes()
618  {
619  // Iterate over nodes
620  NodesArrayType& r_nodes_array = mrDestinationMainModelPart.Nodes();
621 
622  /* Nodes */
623  block_for_each(r_nodes_array, auxiliar_search<TDim>(mrOriginMainModelPart),
624  [this](Node& rNode, auxiliar_search<TDim>& aux) {
625 
626  const bool old_entity = rNode.IsDefined(OLD_ENTITY) ? rNode.Is(OLD_ENTITY) : false;
627  if (!old_entity) {
628  const bool found = aux.point_locator.FindPointOnMeshSimplified(rNode.Coordinates(), aux.N, aux.p_element, mAllocationSize);
629 
630  if (!found) {
631  KRATOS_WARNING("InternalVariablesInterpolationProcess") << "WARNING: Node "<< rNode.Id() << " not found (interpolation not posible)" << "\t X:"<< rNode.X() << "\t Y:"<< rNode.Y() << "\t Z:"<< rNode.Z() << std::endl;
632  } else {
633  for (auto& variable_name : mInternalVariableList) {
634  if (KratosComponents<DoubleVarType>::Has(variable_name)) {
635  const auto& r_variable = KratosComponents<DoubleVarType>::Get(variable_name);
636  InterpolateToNode(r_variable, aux.N, rNode, aux.p_element);
637  } else if (KratosComponents<ArrayVarType>::Has(variable_name)) {
638  const auto& r_variable = KratosComponents<ArrayVarType>::Get(variable_name);
639  InterpolateToNode(r_variable, aux.N, rNode, aux.p_element);
640  } else if (KratosComponents<VectorVarType>::Has(variable_name)) {
641  const auto& r_variable = KratosComponents<VectorVarType>::Get(variable_name);
642  InterpolateToNode(r_variable, aux.N, rNode, aux.p_element);
643  } else if (KratosComponents<MatrixVarType>::Has(variable_name)) {
644  const auto& r_variable = KratosComponents<MatrixVarType>::Get(variable_name);
645  InterpolateToNode(r_variable, aux.N, rNode, aux.p_element);
646  } else {
647  KRATOS_WARNING("InternalVariablesInterpolationProcess") << "WARNING:: " << variable_name << " is not registered as any type of compatible variable: DOUBLE or ARRAY_1D or VECTOR or Matrix" << std::endl;
648  }
649  }
650  }
651  }
652  });
653  }
654 
660  InterpolationTypes ConvertInter(const std::string& Str);
661 
665 
669 
673 
675 
676 }; // Class InternalVariablesInterpolationProcess
677 
681 
682 template<>
683 void InternalVariablesInterpolationProcess::InterpolateAddVariableOnConstitutiveLaw<double>(
684  GeometryType& rThisGeometry,
685  const Variable<double>& rThisVar,
686  const Vector& N,
687  ConstitutiveLaw::Pointer& pConstitutiveLaw,
688  const double Weight
689  );
690 template<>
691 void InternalVariablesInterpolationProcess::InterpolateAddVariableOnConstitutiveLaw<array_1d<double, 3>>(
692  GeometryType& rThisGeometry,
693  const Variable<array_1d<double, 3>>& rThisVar,
694  const Vector& N,
695  ConstitutiveLaw::Pointer& pConstitutiveLaw,
696  const double Weight
697  );
698 template<>
699 void InternalVariablesInterpolationProcess::InterpolateAddVariableOnConstitutiveLaw<Vector>(
700  GeometryType& rThisGeometry,
701  const Variable<Vector>& rThisVar,
702  const Vector& N,
703  ConstitutiveLaw::Pointer& pConstitutiveLaw,
704  const double Weight
705  );
706 template<>
707 void InternalVariablesInterpolationProcess::InterpolateAddVariableOnConstitutiveLaw<Matrix>(
708  GeometryType& rThisGeometry,
709  const Variable<Matrix>& rThisVar,
710  const Vector& N,
711  ConstitutiveLaw::Pointer& pConstitutiveLaw,
712  const double Weight
713  );
714 
715 template<>
716 void InternalVariablesInterpolationProcess::InterpolateAddVariableOnElement(
717  GeometryType& rThisGeometry,
718  const Variable<double>& rThisVar,
719  const Vector& N,
720  Element& rElement,
721  const IndexType GaussPointId,
722  const double Weight,
723  const ProcessInfo& rCurrentProcessInfo
724  );
725 
726 template<>
727 void InternalVariablesInterpolationProcess::InterpolateAddVariableOnElement(
728  GeometryType& rThisGeometry,
729  const Variable<array_1d<double, 3>>& rThisVar,
730  const Vector& N,
731  Element& rElement,
732  const IndexType GaussPointId,
733  const double Weight,
734  const ProcessInfo& rCurrentProcessInfo
735  );
736 
737 template<>
738 void InternalVariablesInterpolationProcess::InterpolateAddVariableOnElement(
739  GeometryType& rThisGeometry,
740  const Variable<Vector>& rThisVar,
741  const Vector& N,
742  Element& rElement,
743  const IndexType GaussPointId,
744  const double Weight,
745  const ProcessInfo& rCurrentProcessInfo
746  );
747 
748 template<>
749 void InternalVariablesInterpolationProcess::InterpolateAddVariableOnElement(
750  GeometryType& rThisGeometry,
751  const Variable<Matrix>& rThisVar,
752  const Vector& N,
753  Element& rElement,
754  const IndexType GaussPointId,
755  const double Weight,
756  const ProcessInfo& rCurrentProcessInfo
757  );
758 
759 template<>
760 void InternalVariablesInterpolationProcess::PonderateVariable(
761  GeometryType& rThisGeometry,
762  const Variable<double>& rThisVar,
763  const double TotalWeight
764  );
765 
766 template<>
767 void InternalVariablesInterpolationProcess::PonderateVariable(
768  GeometryType& rThisGeometry,
769  const Variable<array_1d<double, 3>>& rThisVar,
770  const double TotalWeight
771  );
772 
773 template<>
774 void InternalVariablesInterpolationProcess::PonderateVariable(
775  GeometryType& rThisGeometry,
776  const Variable<Vector>& rThisVar,
777  const double TotalWeight
778  );
779 
780 template<>
781 void InternalVariablesInterpolationProcess::PonderateVariable(
782  GeometryType& rThisGeometry,
783  const Variable<Matrix>& rThisVar,
784  const double TotalWeight
785  );
786 
790 
791 /****************************** INPUT STREAM FUNCTION ******************************/
792 /***********************************************************************************/
793 
794 template<class TPointType, class TPointerType>
795 inline std::istream& operator >> (std::istream& rIStream,
797 
798 /***************************** OUTPUT STREAM FUNCTION ******************************/
799 /***********************************************************************************/
800 
801 template<class TPointType, class TPointerType>
802 inline std::ostream& operator << (std::ostream& rOStream,
804 {
805  return rOStream;
806 }
807 
809 
810 } // namespace Kratos.
811 
812 #endif // KRATOS_INTERNAL_VARIABLES_INTERPOLATION_PROCESS defined
std::string Info() const override
Turn back information as a string.
Definition: periodic_interface_process.hpp:93
Short class definition.
Definition: bucket.h:57
Geometry base class.
Definition: geometry.h:71
This utilitiy has as objective to interpolate the values inside elements (and conditions?...
Definition: internal_variables_interpolation_process.h:79
InterpolationTypes
This enum it used to list the different types of interpolations available.
Definition: internal_variables_interpolation_process.h:111
Variable< double > DoubleVarType
Definitions for the variables.
Definition: internal_variables_interpolation_process.h:89
std::string Info() const override
Turn back information as a string.
Definition: internal_variables_interpolation_process.h:181
ModelPart::ConditionsContainerType ConditionsArrayType
Definition: internal_variables_interpolation_process.h:97
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: internal_variables_interpolation_process.h:189
ModelPart::NodesContainerType NodesArrayType
Definition: internal_variables_interpolation_process.h:95
ModelPart::ElementsContainerType ElementsArrayType
Definition: internal_variables_interpolation_process.h:96
Tree< KDTreePartition< BucketType > > KDTree
Definition: internal_variables_interpolation_process.h:86
Bucket< 3ul, PointType, PointVector, PointTypePointer, PointIterator, DistanceIterator > BucketType
KDtree definitions.
Definition: internal_variables_interpolation_process.h:85
Variable< array_1d< double, 3 > > ArrayVarType
Definition: internal_variables_interpolation_process.h:90
Variable< Matrix > MatrixVarType
Definition: internal_variables_interpolation_process.h:92
Geometry< NodeType > GeometryType
Definition: internal_variables_interpolation_process.h:99
Variable< Vector > VectorVarType
Definition: internal_variables_interpolation_process.h:91
KRATOS_CLASS_POINTER_DEFINITION(InternalVariablesInterpolationProcess)
Pointer definition of InternalVariablesInterpolationProcess.
Node NodeType
Definition: internal_variables_interpolation_process.h:98
~InternalVariablesInterpolationProcess() override=default
void operator()()
Definition: internal_variables_interpolation_process.h:142
static bool Has(const std::string &rName)
Check if the given name exists in the set of components.
Definition: kratos_components.h:161
static const TComponentType & Get(const std::string &rName)
Retrieves a component with the specified name.
Definition: kratos_components.h:114
This class aims to manage meshes for multi-physics simulations.
Definition: model_part.h:77
MeshType::ConditionsContainerType ConditionsContainerType
Condintions container. A vector set of Conditions with their Id's as key.
Definition: model_part.h:183
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
void SetValue(const TVariableType &rThisVariable, typename TVariableType::Type const &rValue)
Definition: node.h:493
This class provides to Kratos a data structure for I/O based on the standard of JSON.
Definition: kratos_parameters.h:59
void SetValue(const std::string &rEntry, const Parameters &rOtherValue)
This method sets an existing parameter with a given parameter.
Definition: kratos_parameters.cpp:443
The base class for all processes in Kratos.
Definition: process.h:49
A generic tree data structure for spatial partitioning.
Definition: tree.h:190
std::size_t IndexType
The definition of the index type.
Definition: key_hash.h:35
#define KRATOS_WARNING(label)
Definition: logger.h:265
Kratos::ModelPart ModelPart
Definition: kratos_wrapper.h:31
Parameters GetValue(Parameters &rParameters, const std::string &rEntry)
Definition: add_kratos_parameters_to_python.cpp:53
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
Internals::Matrix< double, AMatrix::dynamic, 1 > Vector
Definition: amatrix_interface.h:472
void block_for_each(TIterator itBegin, TIterator itEnd, TFunction &&rFunction)
Execute a functor on all items of a range in parallel.
Definition: parallel_utilities.h:299
Node NodeType
The definition of the node.
Definition: tetrahedral_mesh_orientation_check.h:34
Geometry< Node > GeometryType
The definition of the geometry.
Definition: mortar_classes.h:37
ModelPart::NodesContainerType NodesArrayType
Definition: gid_gauss_point_container.h:42
std::istream & operator>>(std::istream &rIStream, LinearMasterSlaveConstraint &rThis)
input stream function
DistanceVector::iterator DistanceIterator
Definition: internal_variables_interpolation_process.h:56
std::vector< PointTypePointer > PointVector
Definition: internal_variables_interpolation_process.h:53
PointType::Pointer PointTypePointer
Definition: internal_variables_interpolation_process.h:52
PointVector::iterator PointIterator
Definition: internal_variables_interpolation_process.h:54
std::ostream & operator<<(std::ostream &rOStream, const LinearMasterSlaveConstraint &rThis)
output stream function
Definition: linear_master_slave_constraint.h:432
std::vector< double > DistanceVector
Definition: internal_variables_interpolation_process.h:55
Point PointType
Geometric definitions.
Definition: mortar_classes.h:36
list values
Definition: bombardelli_test.py:42
N
Definition: sensitivityMatrix.py:29