From 5709a6a179ece39ce751570411b828d42acefba1 Mon Sep 17 00:00:00 2001
From: "LEGOLAS\\lenz" <lenz@irmb.tu-bs.de>
Date: Tue, 10 Mar 2020 13:32:02 +0100
Subject: [PATCH] new method for setting velocity profiles in Velocity boundary
 conditions

---
 .../grid/BoundaryConditions/BoundaryCondition.cpp    | 12 ++++++++++++
 .../grid/BoundaryConditions/BoundaryCondition.h      |  3 +++
 2 files changed, 15 insertions(+)

diff --git a/src/GridGenerator/grid/BoundaryConditions/BoundaryCondition.cpp b/src/GridGenerator/grid/BoundaryConditions/BoundaryCondition.cpp
index a969246fe..0c0a01476 100644
--- a/src/GridGenerator/grid/BoundaryConditions/BoundaryCondition.cpp
+++ b/src/GridGenerator/grid/BoundaryConditions/BoundaryCondition.cpp
@@ -10,6 +10,18 @@ bool BoundaryCondition::isSide( SideType side ) const
     return this->side->whoAmI() == side;
 }
 
+VF_PUBLIC void VelocityBoundaryCondition::setVelocityProfile(SPtr<Grid> grid, std::function<void(real, real, real, real&, real&, real&)> velocityProfile)
+{
+    for( uint index = 0; index < this->indices.size(); index++ ){
+
+            real x, y, z;
+
+            grid->transIndexToCoords( this->indices[index], x, y, z );
+
+            velocityProfile(x,y,z,this->vxList[index],this->vyList[index],this->vzList[index]);
+    }
+}
+
 void GeometryBoundaryCondition::setTangentialVelocityForPatch(SPtr<Grid> grid, uint patch, 
                                                               real p1x, real p1y, real p1z, 
                                                               real p2x, real p2y, real p2z, 
diff --git a/src/GridGenerator/grid/BoundaryConditions/BoundaryCondition.h b/src/GridGenerator/grid/BoundaryConditions/BoundaryCondition.h
index 9c60ace72..a45ecf2f6 100644
--- a/src/GridGenerator/grid/BoundaryConditions/BoundaryCondition.h
+++ b/src/GridGenerator/grid/BoundaryConditions/BoundaryCondition.h
@@ -2,6 +2,7 @@
 #define BoundaryCondition_H
 
 #include <vector>
+#include <functional>
 
 #include "global.h"
 
@@ -94,6 +95,8 @@ public:
     real getVx(uint index) { return this->vxList[index]; }
     real getVy(uint index) { return this->vyList[index]; }
     real getVz(uint index) { return this->vzList[index]; }
+    
+    VF_PUBLIC void setVelocityProfile( SPtr<Grid> grid, std::function<void(real,real,real,real&,real&,real&)> velocityProfile );
 };
 
 //////////////////////////////////////////////////////////////////////////
-- 
GitLab