diff --git a/PotentialFlow/generateOptFile.py b/PotentialFlow/generateOptFile.py
new file mode 100644
index 0000000000000000000000000000000000000000..7f121d051cbe7be23549e32571fc38bc8a57d24a
--- /dev/null
+++ b/PotentialFlow/generateOptFile.py
@@ -0,0 +1,26 @@
+#!/usr/bin/env python
+# This Python script generates a formay file for the "phi.pos"
+# map generated by the model. 
+
+#print input[0]
+phiTrail = input[0]
+
+fout = open('KJ.pos.opt', 'w')
+fout.write('l=PostProcessing.NbViews-1;\n')
+fout.write('View[l].IntervalsType = 3;\n')
+fout.write('Mesh.SurfaceEdges = 0;\n')
+fout.write('View[l].RangeType = 2;\n')
+fout.write('View[l].CustomMin = ' + str(phiTrail) + ';\n')
+fout.write('View[l].CustomMax = ' + str(1.001*phiTrail) + ';\n')
+fout.write('View[l].NbIso = 10;\n\n')
+
+fout.close()
+
+
+
+
+
+
+
+
+
diff --git a/PotentialFlow/magnus.geo b/PotentialFlow/magnus.geo
new file mode 100644
index 0000000000000000000000000000000000000000..c78c6ac81c8d10598121a1cbcaccbb01cffb466e
--- /dev/null
+++ b/PotentialFlow/magnus.geo
@@ -0,0 +1,71 @@
+Include "magnus_common.pro";
+
+A = (BoxSize-1)/2.;
+B = A;
+R = 0.5;
+lc  = A/10;
+
+
+If( Flag_Object == 0 ) // Cylinder
+
+lcr = 0.1;
+Point(1) = { 2*R, 0.0, 0.0, lcr};
+Point(2) = {   R,  -R, 0.0, lcr};
+Point(3) = { 0.0, 0.0, 0.0, lcr};
+Point(4) = {   R,   R, 0.0 , lcr};
+Point(5) = {   R, 0.0, 0.0 , lcr};
+Circle(1) = {1,5,2};
+Circle(2) = {2,5,3};
+Circle(3) = {3,5,4};
+Circle(4) = {4,5,1};
+
+// Points to be connected with the outer boundary
+PtA = 4;
+PtB = 2; 
+
+Else // naca airfoil
+
+lca = 0.03;
+Include "nacaAirFoil.geo";
+PtA = 121;
+PtB = 81; 
+
+EndIf
+
+Point(306)  = { 0, B, 0, lc};
+Point(307)  = { 0,-B, 0, lc};
+
+Line(5) = { PtA, 306 };
+Line(6) = { PtB, 307 };
+
+Point(308) = {-A,-B, 0, lc};
+Point(309) = {-A, B, 0, lc};
+Point(310) = { A+1, B, 0, lc};
+Point(311) = { A+1,-B, 0, lc};
+
+Line( 7) = { 306, 309 };
+Line( 8) = { 309, 308 };
+Line( 9) = { 308, 307 };
+Line(10) = { 307, 311 };
+Line(11) = { 311, 310 };
+Line(12) = { 310, 306 };
+
+Line Loop(21) = { 7, 8, 9, -6, 2, 3, 5 }; // aire a gauche
+Line Loop(22) = { 10, 11, 12, -5, 4, 1, 6 };
+
+Plane Surface(24) = { 21 };
+Plane Surface(25) = { 22 };
+
+Physical Surface("Fluid", 2) = { 24, 25 };
+Physical Line("UpStream", 10) = { 8 };
+Physical Line("DownStream", 11) = { 11 };
+Physical Line("Airfoil", 12) = { 1 ... 4 };
+Physical Line("Wake", 13) = { 5 };
+
+
+
+//Line Loop(20) = {1,2,3,4};
+//Plane Surface(23) = {20};
+//Physical Surface("Cylinder", 1) = {23};
+//Physical Line("Outer", 10) = { 7 ... 12 };
+
diff --git a/PotentialFlow/magnus.pro b/PotentialFlow/magnus.pro
new file mode 100644
index 0000000000000000000000000000000000000000..ab45cee046c9fedff1f4b85122b3638876a14209
--- /dev/null
+++ b/PotentialFlow/magnus.pro
@@ -0,0 +1,410 @@
+/* -------------------------------------------------------------------
+   Tutorial 6 : Potential flow, lift and Magnus effect
+
+   Features:
+   - Discontinuous scalar field 
+   - Multivalued scalar field
+   - Potential flow
+   - Non-linear iteration on an Associated global quantity
+   - Using a run-time variable in a Post-Operation (via Python) 
+
+   To compute the solution in a terminal: 
+     getdp magnus.pro -solve LPE -pos LPE
+     gmsh magnus.geo velocity.pos
+
+   To compute the solution interactively from the Gmsh GUI:
+       File > Open > magnus.pro
+       Run (button at the bottom of the left panel)
+   ------------------------------------------------------------------- */
+/*
+   This model solves a 2D potential flow around a cylinder or a naca airfoil
+   placed in a uniform "V_infinity" flow.
+   Potential flows are defined by
+
+   V = grad phi => curl V = 0
+
+   where the multivalued scalar potential "phi" 
+   presents a discontinuity of magnitude "deltaPhi" 
+   across a cut "Sur_Cut".
+   In consequence, the velocity field "V" is curl-free 
+   over the wole domain of analysis "Vol_rho"
+   but its circulation over any closed curve circling around the object,
+   a quantity often noted "Gamma" in the literature,
+   gives "deltaPhi" as a result.
+   The circulation of "V" over closed curves 
+   not circling around the object is zero.
+
+   In the getDP model, the discontinuity "deltaPhi" [m^2/s]
+   is defined as a global quantity in the Functional space of "phi".
+   The associated (dual) global quantity is the mass flow density,
+   noted "Dmdt", which has [kg/s] as a unit. 
+
+   Governing equations are 
+
+   div ( rho[] grad phi ) = 0         in Vol_rho 
+   rho[] grad phi . n = rho[] Vn = 0  on Sur_Neu
+
+   whereas the uniform velocity field "V_infinity" is imposed
+   by means of Dirichlet boundary conditions 
+   on the upstream and downstream surfaces "GammaUp" and "GammaDown".
+
+   Momentum equation is decoupled in case of stationary potential flows.
+   The velocity filed can be solved first, and the pressure
+   is obtained afterwards by invoking Bernoulli's theorem:
+
+   p = -0.5 * rho[] * SquNorm [ {d phi} ] 
+
+   The "Lift" force in "Y" direction is then evaluated 
+   either by integrating "p * CompY[Normal[]]" 
+   over the contour of the object, 
+   or by the Kutta-Jukowski theorem
+
+   Lift = - L_z rho[] V_infinity Gamma
+
+   which is a first order approximation of the former. 
+
+   "Cylinder" case:
+   Either the circulation "deltaPhi" or the mass flow rate "Dmdt" 
+   can be imposed, according to the "Flag_Circ" flag.
+   The Lift is evaluated by both the integration of pressure
+   and the Kutta-Jukowski approximation.
+   
+   "Airfoil" case:
+   If "Flag_Circ == 1", the model works similar to the "Cylinder" case.
+   If "Flag_Circ == 0", the mass flow rate is not directly imposed 
+   in this case.
+   It is determined so that the Kutta condition is verified.
+   This condition states that the actual value of "Dmdt" 
+   is the one for which the stagnation point 
+   (singularity of the velocity field)
+   is located at the trailing edge of the airfoil,
+   i.e., when the function 
+
+   argVTrail[] = ( Atan2[CompY[$1], CompX[$1] ] - Incidence ) / deg ;
+
+   returns zero when evaluated for the velocity at a point "P_edge"
+   close to the trailing edge.
+   A non linear iteration is thus done by means of a pseudo-newton scheme,
+   updating the value of the imposed "Dmdt" until the norm of the residual
+
+   f(V) = argVTrail[ {d phi } ] OnPoint {1.0001,0,0}
+
+   comes below a fixed tolerance. 
+ */
+
+Include "magnus_common.pro";
+
+Group{
+  // Physical regions
+  Fluid     = Region[ 2 ];
+  GammaUp   = Region[ 10 ];
+  GammaDown = Region[ 11 ];
+  GammaAirf = Region[ 12 ];
+  GammaCut = Region[ 13 ];
+
+  // Abstract regions
+  Vol_rho = Region[ { Fluid } ]; 
+  Sur_Dir = Region[ { GammaUp, GammaDown } ]; 
+  Sur_Neu = Region[ { GammaAirf } ]; 
+  Sur_Cut = Region[ { GammaCut } ];
+}
+
+Function{
+  rho[] = 1.225; // kg/m^3
+  MassFlowRate[] = MassFlowRate; // kg/s
+  DeltaPhi[] = DeltaPhi; // m^2/s
+  argVTrail[] = ( Atan2[CompY[$1], CompX[$1] ] - Incidence ) / deg ;
+}
+
+Jacobian {
+  { Name Vol ;
+    Case {
+      { Region All ; Jacobian Vol ; }
+    }
+  }
+  { Name Sur ;
+    Case {
+      { Region All ; Jacobian Sur ; }
+    }
+  }
+}
+
+Integration {
+  { Name Int ;
+    Case {
+      { Type Gauss ;
+        Case {
+          { GeoElement Point       ; NumberOfPoints  1 ; }
+          { GeoElement Line        ; NumberOfPoints  4 ; }
+          { GeoElement Triangle    ; NumberOfPoints  6 ; }
+          { GeoElement Quadrangle  ; NumberOfPoints  7 ; }
+          { GeoElement Tetrahedron ; NumberOfPoints 15 ; }
+          { GeoElement Hexahedron  ; NumberOfPoints 34 ; }
+        }
+      }
+    }
+  }
+}
+
+Constraint{
+  { Name Dirichlet; Type Assign;
+    Case{
+      // Boundary conditions for the V_infinity uniform flow
+      { Region GammaDown; Value Velocity*BoxSize; }
+      { Region GammaUp  ; Value 0; }
+    }
+  }
+  { Name DeltaPhi; Type Assign;
+    Case{
+      { Region Sur_Cut; Value DeltaPhi[]; }
+    }
+  }
+  { Name MassFlowRate; Type Assign;
+    Case{
+      { Region Sur_Cut; Value MassFlowRate[]; }
+    }
+  }
+}
+
+// Domains of definition used in the description of the function space
+// These groups contain both volume and surface regions/elements. 
+Group{
+  Dom_Vh =  Region[ { Vol_rho, Sur_Dir, Sur_Neu, Sur_Cut } ]; 
+  Dom_Cut = ElementsOf[ Dom_Vh, OnPositiveSideOf Sur_Cut ];
+}
+FunctionSpace{
+  { Name Vh; Type Form0;
+    BasisFunction{
+      { Name vn; NameOfCoef phin; Function BF_Node;
+	Support Dom_Vh; Entity NodesOf[All]; }
+      { Name vc; NameOfCoef dphi; Function BF_GroupOfNodes;
+	Support Dom_Cut; Entity GroupsOfNodesOf[ Sur_Cut ];}
+    }
+    SubSpace {
+      { Name phiCont ; NameOfBasisFunction { vn } ; }
+      { Name phiDisc ; NameOfBasisFunction { vc } ; }
+    }
+    GlobalQuantity {
+      { Name Circ ; Type AliasOf        ; NameOfCoef dphi ; }
+      { Name Dmdt ; Type AssociatedWith ; NameOfCoef dphi ; }
+    }
+    Constraint{
+      {NameOfCoef phin; EntityType NodesOf; 
+	NameOfConstraint Dirichlet;}
+      If( Flag_Circ )
+        {NameOfCoef Circ; EntityType GroupsOfNodesOf; 
+      	  NameOfConstraint DeltaPhi;}
+      Else
+        If( Flag_Object == 0 ) // if Cylinder only
+          {NameOfCoef Dmdt; EntityType GroupsOfNodesOf; 
+      	  NameOfConstraint MassFlowRate;}
+        EndIf
+      EndIf
+    }
+  }
+}
+
+Formulation{
+  {Name LPE; Type FemEquation;
+    Quantity{
+      {Name phi; Type Local; NameOfSpace Vh;}
+      { Name phiCont ; Type Local ; NameOfSpace Vh[phiCont] ; }
+      { Name phiDisc ; Type Local ; NameOfSpace Vh[phiDisc] ; }
+      { Name Circ ; Type Global ; NameOfSpace Vh[Circ] ; }
+      { Name Dmdt ; Type Global ; NameOfSpace Vh[Dmdt] ; }
+    }
+    Equation{
+      Galerkin{[ rho[] * Dof{d phi}, {d phi}];
+        In Vol_rho; Jacobian Vol; Integration Int;}
+      If( !Flag_Circ )
+	GlobalTerm { [ -Dof{Dmdt} , {Circ} ] ; In Sur_Cut ; }
+        If( Flag_Object == 1 )
+          GlobalTerm { [ -Dof{Dmdt} , {Dmdt} ] ; In Sur_Cut ; }
+	  GlobalTerm { [ $newDmdt , {Dmdt} ] ; In Sur_Cut ; }
+        EndIf
+      EndIf
+    }
+  }
+}
+
+Resolution{
+  {Name LPE;
+    System{
+      {Name A; NameOfFormulation LPE;}
+    }
+    Operation{
+      InitSolution[A];
+
+      If( Flag_Circ || ( Flag_Object == 0 ) )
+
+        Generate[A]; Solve[A]; SaveSolution[A];
+
+      Else
+	// Pseudo-Newton iteration to determine Dmdt in the Airfoil case.
+	// The run-time variable $newDmdt used in Generate[A]
+        // whereas $circ, $dmdt and argV are evaluated 
+	// by PostOperation[Trailing]
+
+	DeleteFile["KJiter.txt"];
+
+        Evaluate[$newDmdt = MassFlowRate];
+        Evaluate[ $syscount = 0 ]; 
+        Generate[A]; Solve[A]; SaveSolution[A];
+
+	Evaluate[$dmdtp = MassFlowRate];
+	Evaluate[$argVp = DeltaPhi];
+        PostOperation[Trailing];
+
+        Print[{$syscount, $circ, $dmdt, $argV}, 
+	    Format "iter = %3g Circ = %7.5e Dmdt = %7.5e argV = %7.5e"];
+
+        While[ Norm[ $argV ] > 1e-3 && $syscount < 50] {
+
+	  Test[ $syscount && Norm[$argV-$argVp] > 1e-3 ]
+	    {Evaluate[$jac = Min[ ($dmdt-$dmdtp)/($argV-$argVp), 0.2 ] ] ;}
+  	    {Evaluate[$jac = 0.2];}
+	  Print[{$jac}, Format "Jac = %7.5e"];
+
+	  Evaluate[$newDmdt = $dmdt - $jac * $argV];
+	  Evaluate[ $syscount = $syscount + 1 ];
+	  Generate[A]; Solve[A]; SaveSolution[A];
+
+	  Evaluate[$dmdtp = $dmdt];
+	  Evaluate[$argVp = $argV];
+	  PostOperation[Trailing];
+
+	  Print[{$syscount, $circ, $dmdt, $argV}, 
+		Format "iter = %3g Circ = %7.5e Dmdt = %7.5e argV = %7.5e"];
+	}
+	// A python script is used to generate a format file "KJ.pos.opt"
+	// for the color map "KJ.pos" that depends 
+	// on the run-time variable "phiTrailing".
+	Evaluate[ Python[$phiTrailing]{"generateOptFile.py"} ];
+	EndIf
+    }
+  }
+}
+
+PostProcessing{
+  {Name LPE; NameOfFormulation LPE;
+    Quantity{
+      {Name phi; Value { 
+	  Local{ [ {phi} ] ; In Dom_Vh; Jacobian Vol; } } }
+      { Name phiCont ; Value { 
+	  Local { [ { phiCont } ] ; In Dom_Vh ; Jacobian Vol ; } } }
+      { Name phiDisc ; Value {
+ 	  Local { [ { phiDisc } ] ; In Dom_Vh ; Jacobian Vol ; } } }
+      {Name velocity; Value { 
+	  Local { [ {d phi} ]; In Dom_Vh; Jacobian Vol; } } }
+      {Name pressure; Value { 
+	  Local { [ -0.5*rho[]*SquNorm[ {d phi} ]]; 
+	    In Dom_Vh; Jacobian Vol; } } }
+      {Name Angle; Value { 
+	  Local{ [ argVTrail[{d phi}] ]; 
+	    In Dom_Vh; Jacobian Vol; } } }
+
+      { Name Circ; Value { Local { [ {Circ} ]; In Sur_Cut; } } }
+
+      { Name Dmdt; Value { Local { [ {Dmdt} ]; In Sur_Cut; } } }
+
+      // Kutta-Jukowski approximation for Lift
+      { Name LiftKJ; Value { Local { [ -rho[]*{Circ}*Velocity ]; 
+	    In Sur_Cut; } } }
+
+      // Lift computed with the real pressure field
+      { Name Lift;
+         Value {
+          Integral { [ -0.5*rho[]*SquNorm[{d phi}]*CompY[Normal[]] ];
+            In Dom_Vh ; Jacobian Sur ; Integration Int; }
+        }
+      }
+
+      { Name circulation;
+         Value {
+          Integral { [ {d phi} * Tangent[] ] ;
+            In Dom_Vh ; Jacobian Sur  ; Integration Int; }
+        }
+      }
+    
+    }
+  }
+}
+
+PostOperation{
+  {Name LPE; NameOfPostProcessing LPE;
+    Operation{
+
+      Print[Circ, OnRegion Sur_Cut, File > "output.txt", Color "Ivory",
+	   Format Table, SendToServer "Output/Circ" ];
+
+      Print[Dmdt, OnRegion Sur_Cut, File > "output.txt", Color "Ivory",
+	    Format Table, SendToServer "Output/Dmdt" ];
+
+      Print[LiftKJ, OnRegion Sur_Cut, File > "output.txt", Color "Ivory",
+ 	   Format Table, SendToServer "Output/LiftKJ" ];
+
+      Print[Lift[GammaAirf], OnGlobal, Format Table,
+	    File  > "output.txt", Color "Ivory",
+	    SendToServer "Output/Lift"];
+
+      // Uncomment these lines to have more color maps
+      //Print[phi, OnElementsOf Vol_rho, File "phi.pos"];
+      //Print[phiDisc, OnElementsOf Vol_rho, File "phiDisc.pos"];
+      //Print[phiCont, OnElementsOf Vol_rho, File "phiCont.pos"];
+      //Print[pressure, OnElementsOf Vol_rho, File "p.pos"];
+
+      Print[ velocity, OnElementsOf Vol_rho, File "velocity.pos"];
+      Echo[ StrCat["l=PostProcessing.NbViews-1;",
+		   "View[l].VectorType = 1;",
+		   "View[l].LineWidth = 2;",
+		   "View[l].ArrowSizeMax = 100;",
+		   "View[l].CenterGlyphs = 1;"],
+	    File "tmp.geo", LastTimeStepOnly] ;
+
+      If( Flag_Circ || ( Flag_Object == 0 ) )
+	//same condition as in the Resolution section
+	
+        Print[phi, OnElementsOf Vol_rho, File "phi.pos"];
+        Echo[ StrCat["l=PostProcessing.NbViews-1;",
+		     "View[l].IntervalsType = 3;",
+		     "View[l].NbIso = 40;"],
+	      File "tmp.geo", LastTimeStepOnly] ;
+
+      Else
+        Print[phi, OnElementsOf Vol_rho, File "KJ.pos"];
+        Echo[ StrCat["l=PostProcessing.NbViews-1;",
+		     "View[l].IntervalsType = 3;",
+		     "View[l].NbIso = 40;"],
+	      File "tmp.geo", LastTimeStepOnly] ;
+      EndIf
+    }
+  }
+}
+
+PostOperation{ // for the Airfoil model
+  {Name Trailing; NameOfPostProcessing LPE;
+    Operation{
+       Print[Circ, OnRegion Sur_Cut, File > "KJiter.txt", Format Table,
+     	     StoreInVariable $circ, 
+     	     SendToServer "Output/Circ" ];
+       Print[Dmdt, OnRegion Sur_Cut, File > "KJiter.txt", Format Table,
+     	     StoreInVariable $dmdt, 
+     	     SendToServer "Output/Dmdt" ];
+	Print[phi, OnPoint{1.0001,0,0}, File > "KJiter.txt", Color "Ivory",
+	      StoreInVariable $phiTrailing, 
+	      Format Table, SendToServer "Output/PhiTrailing"]; 
+
+        Print[Angle, OnPoint{1.0001,0,0}, File > "KJiter.txt", Color "Ivory",
+	      StoreInVariable $argV, 
+	      Format Table, SendToServer "Output/argVTrailing"];
+    }
+  }
+}
+
+
+DefineConstant[
+  R_ = {"LPE", Name "GetDP/1ResolutionChoices", Visible 0},
+  C_ = {"-solve -pos", Name "GetDP/9ComputeCommand", Visible 0},
+  P_ = {"LPE", Name "GetDP/2PostOperationChoices", Visible 0}
+];
+
diff --git a/PotentialFlow/magnus_common.pro b/PotentialFlow/magnus_common.pro
new file mode 100644
index 0000000000000000000000000000000000000000..b9c659b20ef1c87b8df1d90fdef029ab3a4034b2
--- /dev/null
+++ b/PotentialFlow/magnus_common.pro
@@ -0,0 +1,27 @@
+cm = 1e-2;
+deg = Pi/180;
+kmh = 10./36.;
+
+Flag_Circ = 
+  DefineNumber[0, Name "Model/Impose circulation", Choices {0, 1} ];
+Flag_Object = 
+  DefineNumber[1, Name "Model/Object",
+               Choices {0="Cylinder", 1="Airfoil"} ];
+
+BoxSize = 
+  DefineNumber[7, Name "Model/Air box size [m]", Help "In flow direction."];
+Velocity = kmh*
+  DefineNumber[100, Name "Model/V", Label "Model/Flow velocity [km/h]"];
+Incidence = -deg*
+  DefineNumber[10, Name "Model/Angle of attack [deg]", Visible Flag_Object];
+
+// Negative circulation for a positive lift. 
+DeltaPhi = (-1)*
+  DefineNumber[10, Name "Model/Circ", Visible Flag_Circ,
+	       Min 0, Max 20, Step 2, 
+	       Label "Circulation around foil [m^2/s]"];
+
+MassFlowRate = 
+  DefineNumber[-100, Name "Model/Dmdt", Visible !Flag_Circ,
+	       Label "Mass flow rate [kg/s]"];
+
diff --git a/PotentialFlow/nacaAirfoil.geo b/PotentialFlow/nacaAirfoil.geo
new file mode 100644
index 0000000000000000000000000000000000000000..9ef61996e0759624d206570cf17e658117423d36
--- /dev/null
+++ b/PotentialFlow/nacaAirfoil.geo
@@ -0,0 +1,222 @@
+
+
+Point(1) = {1.000000,0.000000,0,lca};
+Point(2) = {0.999753,-0.000035,0,lca};
+Point(3) = {0.999013,-0.000141,0,lca};
+Point(4) = {0.997781,-0.000317,0,lca};
+Point(5) = {0.996057,-0.000562,0,lca};
+Point(6) = {0.993844,-0.000876,0,lca};
+Point(7) = {0.991144,-0.001258,0,lca};
+Point(8) = {0.987958,-0.001707,0,lca};
+Point(9) = {0.984292,-0.002222,0,lca};
+Point(10) = {0.980147,-0.002801,0,lca};
+Point(11) = {0.975528,-0.003443,0,lca};
+Point(12) = {0.970440,-0.004147,0,lca};
+Point(13) = {0.964888,-0.004909,0,lca};
+Point(14) = {0.958877,-0.005729,0,lca};
+Point(15) = {0.952414,-0.006603,0,lca};
+Point(16) = {0.945503,-0.007531,0,lca};
+Point(17) = {0.938153,-0.008510,0,lca};
+Point(18) = {0.930371,-0.009537,0,lca};
+Point(19) = {0.922164,-0.010610,0,lca};
+Point(20) = {0.913540,-0.011726,0,lca};
+Point(21) = {0.904508,-0.012883,0,lca};
+Point(22) = {0.895078,-0.014079,0,lca};
+Point(23) = {0.885257,-0.015310,0,lca};
+Point(24) = {0.875056,-0.016574,0,lca};
+Point(25) = {0.864484,-0.017868,0,lca};
+Point(26) = {0.853553,-0.019189,0,lca};
+Point(27) = {0.842274,-0.020535,0,lca};
+Point(28) = {0.830656,-0.021904,0,lca};
+Point(29) = {0.818712,-0.023291,0,lca};
+Point(30) = {0.806454,-0.024694,0,lca};
+Point(31) = {0.793893,-0.026111,0,lca};
+Point(32) = {0.781042,-0.027539,0,lca};
+Point(33) = {0.767913,-0.028974,0,lca};
+Point(34) = {0.754521,-0.030414,0,lca};
+Point(35) = {0.740877,-0.031856,0,lca};
+Point(36) = {0.726995,-0.033296,0,lca};
+Point(37) = {0.712890,-0.034733,0,lca};
+Point(38) = {0.698574,-0.036163,0,lca};
+Point(39) = {0.684062,-0.037582,0,lca};
+Point(40) = {0.669369,-0.038988,0,lca};
+Point(41) = {0.654508,-0.040378,0,lca};
+Point(42) = {0.639496,-0.041747,0,lca};
+Point(43) = {0.624345,-0.043094,0,lca};
+Point(44) = {0.609072,-0.044414,0,lca};
+Point(45) = {0.593691,-0.045705,0,lca};
+Point(46) = {0.578217,-0.046962,0,lca};
+Point(47) = {0.562667,-0.048182,0,lca};
+Point(48) = {0.547054,-0.049362,0,lca};
+Point(49) = {0.531395,-0.050499,0,lca};
+Point(50) = {0.515705,-0.051587,0,lca};
+Point(51) = {0.500000,-0.052625,0,lca};
+Point(52) = {0.484295,-0.053608,0,lca};
+Point(53) = {0.468605,-0.054534,0,lca};
+Point(54) = {0.452946,-0.055397,0,lca};
+Point(55) = {0.437333,-0.056195,0,lca};
+Point(56) = {0.421783,-0.056924,0,lca};
+Point(57) = {0.406309,-0.057581,0,lca};
+Point(58) = {0.390928,-0.058163,0,lca};
+Point(59) = {0.375655,-0.058666,0,lca};
+Point(60) = {0.360504,-0.059087,0,lca};
+Point(61) = {0.345492,-0.059424,0,lca};
+Point(62) = {0.330631,-0.059674,0,lca};
+Point(63) = {0.315938,-0.059834,0,lca};
+Point(64) = {0.301426,-0.059902,0,lca};
+Point(65) = {0.287110,-0.059876,0,lca};
+Point(66) = {0.273005,-0.059754,0,lca};
+Point(67) = {0.259123,-0.059535,0,lca};
+Point(68) = {0.245479,-0.059217,0,lca};
+Point(69) = {0.232087,-0.058799,0,lca};
+Point(70) = {0.218958,-0.058280,0,lca};
+Point(71) = {0.206107,-0.057661,0,lca};
+Point(72) = {0.193546,-0.056940,0,lca};
+Point(73) = {0.181288,-0.056119,0,lca};
+Point(74) = {0.169344,-0.055197,0,lca};
+Point(75) = {0.157726,-0.054176,0,lca};
+Point(76) = {0.146447,-0.053056,0,lca};
+Point(77) = {0.135516,-0.051839,0,lca};
+Point(78) = {0.124944,-0.050527,0,lca};
+Point(79) = {0.114743,-0.049121,0,lca};
+Point(80) = {0.104922,-0.047624,0,lca};
+Point(81) = {0.095492,-0.046037,0,lca};
+Point(82) = {0.086460,-0.044364,0,lca};
+Point(83) = {0.077836,-0.042608,0,lca};
+Point(84) = {0.069629,-0.040770,0,lca};
+Point(85) = {0.061847,-0.038854,0,lca};
+Point(86) = {0.054497,-0.036863,0,lca};
+Point(87) = {0.047586,-0.034800,0,lca};
+Point(88) = {0.041123,-0.032668,0,lca};
+Point(89) = {0.035112,-0.030471,0,lca};
+Point(90) = {0.029560,-0.028212,0,lca};
+Point(91) = {0.024472,-0.025893,0,lca};
+Point(92) = {0.019853,-0.023517,0,lca};
+Point(93) = {0.015708,-0.021088,0,lca};
+Point(94) = {0.012042,-0.018607,0,lca};
+Point(95) = {0.008856,-0.016078,0,lca};
+Point(96) = {0.006156,-0.013503,0,lca};
+Point(97) = {0.003943,-0.010884,0,lca};
+Point(98) = {0.002219,-0.008223,0,lca};
+Point(99) = {0.000987,-0.005521,0,lca};
+Point(100) = {0.000247,-0.002779,0,lca};
+Point(101) = {0.000000,0.000000,0,lca};
+Point(102) = {0.000247,0.002779,0,lca};
+Point(103) = {0.000987,0.005521,0,lca};
+Point(104) = {0.002219,0.008223,0,lca};
+Point(105) = {0.003943,0.010884,0,lca};
+Point(106) = {0.006156,0.013503,0,lca};
+Point(107) = {0.008856,0.016078,0,lca};
+Point(108) = {0.012042,0.018607,0,lca};
+Point(109) = {0.015708,0.021088,0,lca};
+Point(110) = {0.019853,0.023517,0,lca};
+Point(111) = {0.024472,0.025893,0,lca};
+Point(112) = {0.029560,0.028212,0,lca};
+Point(113) = {0.035112,0.030471,0,lca};
+Point(114) = {0.041123,0.032668,0,lca};
+Point(115) = {0.047586,0.034800,0,lca};
+Point(116) = {0.054497,0.036863,0,lca};
+Point(117) = {0.061847,0.038854,0,lca};
+Point(118) = {0.069629,0.040770,0,lca};
+Point(119) = {0.077836,0.042608,0,lca};
+Point(120) = {0.086460,0.044364,0,lca};
+Point(121) = {0.095492,0.046037,0,lca};
+Point(122) = {0.104922,0.047624,0,lca};
+Point(123) = {0.114743,0.049121,0,lca};
+Point(124) = {0.124944,0.050527,0,lca};
+Point(125) = {0.135516,0.051839,0,lca};
+Point(126) = {0.146447,0.053056,0,lca};
+Point(127) = {0.157726,0.054176,0,lca};
+Point(128) = {0.169344,0.055197,0,lca};
+Point(129) = {0.181288,0.056119,0,lca};
+Point(130) = {0.193546,0.056940,0,lca};
+Point(131) = {0.206107,0.057661,0,lca};
+Point(132) = {0.218958,0.058280,0,lca};
+Point(133) = {0.232087,0.058799,0,lca};
+Point(134) = {0.245479,0.059217,0,lca};
+Point(135) = {0.259123,0.059535,0,lca};
+Point(136) = {0.273005,0.059754,0,lca};
+Point(137) = {0.287110,0.059876,0,lca};
+Point(138) = {0.301426,0.059902,0,lca};
+Point(139) = {0.315938,0.059834,0,lca};
+Point(140) = {0.330631,0.059674,0,lca};
+Point(141) = {0.345492,0.059424,0,lca};
+Point(142) = {0.360504,0.059087,0,lca};
+Point(143) = {0.375655,0.058666,0,lca};
+Point(144) = {0.390928,0.058163,0,lca};
+Point(145) = {0.406309,0.057581,0,lca};
+Point(146) = {0.421783,0.056924,0,lca};
+Point(147) = {0.437333,0.056195,0,lca};
+Point(148) = {0.452946,0.055397,0,lca};
+Point(149) = {0.468605,0.054534,0,lca};
+Point(150) = {0.484295,0.053608,0,lca};
+Point(151) = {0.500000,0.052625,0,lca};
+Point(152) = {0.515705,0.051587,0,lca};
+Point(153) = {0.531395,0.050499,0,lca};
+Point(154) = {0.547054,0.049362,0,lca};
+Point(155) = {0.562667,0.048182,0,lca};
+Point(156) = {0.578217,0.046962,0,lca};
+Point(157) = {0.593691,0.045705,0,lca};
+Point(158) = {0.609072,0.044414,0,lca};
+Point(159) = {0.624345,0.043094,0,lca};
+Point(160) = {0.639496,0.041747,0,lca};
+Point(161) = {0.654508,0.040378,0,lca};
+Point(162) = {0.669369,0.038988,0,lca};
+Point(163) = {0.684062,0.037582,0,lca};
+Point(164) = {0.698574,0.036163,0,lca};
+Point(165) = {0.712890,0.034733,0,lca};
+Point(166) = {0.726995,0.033296,0,lca};
+Point(167) = {0.740877,0.031856,0,lca};
+Point(168) = {0.754521,0.030414,0,lca};
+Point(169) = {0.767913,0.028974,0,lca};
+Point(170) = {0.781042,0.027539,0,lca};
+Point(171) = {0.793893,0.026111,0,lca};
+Point(172) = {0.806454,0.024694,0,lca};
+Point(173) = {0.818712,0.023291,0,lca};
+Point(174) = {0.830656,0.021904,0,lca};
+Point(175) = {0.842274,0.020535,0,lca};
+Point(176) = {0.853553,0.019189,0,lca};
+Point(177) = {0.864484,0.017868,0,lca};
+Point(178) = {0.875056,0.016574,0,lca};
+Point(179) = {0.885257,0.015310,0,lca};
+Point(180) = {0.895078,0.014079,0,lca};
+Point(181) = {0.904508,0.012883,0,lca};
+Point(182) = {0.913540,0.011726,0,lca};
+Point(183) = {0.922164,0.010610,0,lca};
+Point(184) = {0.930371,0.009537,0,lca};
+Point(185) = {0.938153,0.008510,0,lca};
+Point(186) = {0.945503,0.007531,0,lca};
+Point(187) = {0.952414,0.006603,0,lca};
+Point(188) = {0.958877,0.005729,0,lca};
+Point(189) = {0.964888,0.004909,0,lca};
+Point(190) = {0.970440,0.004147,0,lca};
+Point(191) = {0.975528,0.003443,0,lca};
+Point(192) = {0.980147,0.002801,0,lca};
+Point(193) = {0.984292,0.002222,0,lca};
+Point(194) = {0.987958,0.001707,0,lca};
+Point(195) = {0.991144,0.001258,0,lca};
+Point(196) = {0.993844,0.000876,0,lca};
+Point(197) = {0.996057,0.000562,0,lca};
+Point(198) = {0.997781,0.000317,0,lca};
+Point(199) = {0.999013,0.000141,0,lca};
+Point(200) = {0.999753,0.000035,0,lca};
+
+//Points numerotation:
+numberLeadingEgde = 101 ;
+numberLowerSurface = 81 ;
+numberUpperSurface = 121 ;
+
+//Distances:
+distanceTrailingLowerPoint = 0.908262 ;
+distanceLowerUpperPoint = 0.222905 ;
+distanceUpperTrailingPoint = 0.908262 ;
+
+Line(1) = { 1 ... 81 };
+Line(2) = { 81 ... 101 };
+Line(3) = { 101 ... 121 };
+Line(4) = { 121 ... 200, 1 };
+
+Rotate { {0,0,1}, {1,0,0}, Incidence } { Line { 1 ... 4 } ; }
+
+/* Line Loop(1) = {1,2,3,4}; */
+/* Plane Surface(1) = {1}; */
diff --git a/PotentialFlow/screenshot1.png b/PotentialFlow/screenshot1.png
new file mode 100644
index 0000000000000000000000000000000000000000..1d57354aae0328c97969aa1172957ee3c0cb71ac
Binary files /dev/null and b/PotentialFlow/screenshot1.png differ
diff --git a/PotentialFlow/screenshot1_512.png b/PotentialFlow/screenshot1_512.png
new file mode 100644
index 0000000000000000000000000000000000000000..dd9835b9a054e89193c321e3d6aa447779f6f509
Binary files /dev/null and b/PotentialFlow/screenshot1_512.png differ
diff --git a/PotentialFlow/screenshot2.png b/PotentialFlow/screenshot2.png
new file mode 100644
index 0000000000000000000000000000000000000000..f6d2095515c7249100035fda62937111963170d1
Binary files /dev/null and b/PotentialFlow/screenshot2.png differ
diff --git a/PotentialFlow/screenshot2_512.png b/PotentialFlow/screenshot2_512.png
new file mode 100644
index 0000000000000000000000000000000000000000..18f399d7bcccf30811dafbecef2353c594692693
Binary files /dev/null and b/PotentialFlow/screenshot2_512.png differ