Windtunnel/Boundary Conditions: Difference between revisions

From Arbeitsgruppe Kuiper
Jump to navigation Jump to search
(→‎Object: polished thumb)
(major tidying, focus on a manual for the user_defined_parameters, 2 new pages for the problems)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
[[Windtunnel online|up]]
[[Windtunnel online|up]]


= New Keywords =
= New user_defined_parameters in pluto.ini =


== in pluto.ini ==
* <code>KinematicViscosity_m2_per_s</code>, <code>DynamicViscosity_Pa_s</code>: read in ''visc_nu.c''


* <code>ObjectType_int</code>: 0=nothing, 1=cylinder/sphere, 2=square/cube of size <code>ObjectDiameter_cm</code>
== for Domain Boundaries ==
* <code>WindPressure_Pa</code>, <code>WindPressure_mbar</code> (mutually exclusive): pressure at entry (left)
* <code>PressureGradient_mbar_per_cm</code> positive (even though pressure drops from left to right)
* Wind velocity is ramped up to <code>WindVelocity_m_per_s</code> over time <code>InjectionTime_s</code>
* <code>WindTemperature_C</code>
* <code>KinematicViscosity_m2_per_s</code>, <code>DynamicViscosity_Pa_s</code>,
* <code>Wall_BoundaryCondition</code> for tangential walls, value from {0,1,2,3}


(ignored if given values <0)
* <code>Wall_BoundaryCondition</code> for tangential walls (X2_BEG, X2_END), value from {0,1,2,3}:
 
{| class="wikitable"
== in init.c ==
! value || [[:File:WT- Boundary Condition Skizze.jpg|meaning]] || VX1 || VX2
 
* macro <code>SOLID</code> to enable an object
* array <code>solid</code> containing value 1 or 0 for object matter being present/absent
 
= Walls =
[[File:WT- Boundary Condition Skizze.jpg|thumb]]
 
== tangential ==
 
{| class="wikitable" id="ganz_oben"
|+ id="Ü-id" |
|- id="K-id"
!colspan="3"| Boundary condition for the wall
|- id="Sprungziel1"
| || vx1 || vx2
|-
|-
| no-shear || zero-gradient || reflective
| 0 || no-shear || zero-gradient || reflective
|-
|-
| no-slip || reflective || reflective
| 1 || no-slip || reflective || reflective
|-
|-
| no-wall || zero-gradient || zero-gradient
| 2 || no-wall || zero-gradient || zero-gradient
|-
|-
| one-way wall || zero-gradient || zero-gradient & no-inflow
| 3 || one-way wall || zero-gradient || zero-gradient & no-inflow
|}
|}


== entry/exit ==
* <code>WindPressure_Pa</code>, <code>WindPressure_mbar</code> (mutually exclusive): pressure at entry (X1_BEG)
* <code>PressureGradient_mbar_per_cm</code>:
** driving the flow if positive<sup>1</sup>
** ignored if negative, then ''WindVelocity'' is driving the flow.
* <code>WindVelocity_m_per_s</code>, <code>InjectionTime_s</code>: Wind velocity at entry (X1_BEG) is ramped up from 0 to the given value over the given time (if pressure gradient < 0 is specified).
* <code>WindTemperature_C</code>: determines density (via pressure) at entry (X1_BEG)


=== prescribed velocity at entry (left) ===
<sup>1</sup>: even though pressure ''drops'' from left to right


=== prescribe pressure drop (left to right) ===
== for Solid Object ==


* current simulation result: \(v_x\)-profile slightly asymmetric and \(v_x<0\) at one wall
(needs <code>SOLID = YES</code> in ''makefile_user_machinedefs'')


* <code>ObjectType_int</code>:
** 0 = nothing
** 1 = cylinder/sphere of diameter <code>ObjectDiameter_cm</code> centered on the origin
** 2 = square/cube of edge length <code>ObjectDiameter_cm</code> centered on the origin
** \(-n\) = File ''solid.txt'' contains (at most) \(n\) voxels (lines of \(x~y~z\)). Voxels outside the origin-centered sphere of radius 0.6·<code>ObjectDiameter_cm</code> are discarded.


= Object =
* <code>Obj_BoundaryCondition</code>:
** -1 = no-slip
** <s>1 = no-shear</s> (unavailable due to an [[Windtunnel/Boundary_Conditions/on_Object|unresolved issue]])


* Strong asymmetry when driven by pressure gradient. Bug!
= Analytical Solutions =
[[File:Asymmetry.png|thumb|center|500px|\(v_y\) is not symmetric to the \(x\)-axis.]]
* At the boundary of a region which has <code>FLAG_INTERNAL_BOUNDARY</code> set, '''no''' boundary conditions are specified. Ghostcells are frozen.


= Open Questions =
(for comparisons)
 
== Reflective cells ==
 
Setting the vector \(\vec v_g\) in a ghost cell as \(\vec v_g=-\vec v\), with \(\vec v\) being the value in the adjacent real cell, yields \(\vec 0\) as interpolation right at the boundary. This works for plane walls. What to do in cases where a ghost cell has more than one real cell as nearest neighbor? This calls for [[Talk:Windtunnel/Boundary_Conditions|discussion]]!
 
= Analytical Solutions =


== empty 2D channel ==
== empty 2D channel ==

Latest revision as of 16:56, 23 May 2025

up

New user_defined_parameters in pluto.ini

  • KinematicViscosity_m2_per_s, DynamicViscosity_Pa_s: read in visc_nu.c

for Domain Boundaries

  • Wall_BoundaryCondition for tangential walls (X2_BEG, X2_END), value from {0,1,2,3}:
value meaning VX1 VX2
0 no-shear zero-gradient reflective
1 no-slip reflective reflective
2 no-wall zero-gradient zero-gradient
3 one-way wall zero-gradient zero-gradient & no-inflow
  • WindPressure_Pa, WindPressure_mbar (mutually exclusive): pressure at entry (X1_BEG)
  • PressureGradient_mbar_per_cm:
    • driving the flow if positive1
    • ignored if negative, then WindVelocity is driving the flow.
  • WindVelocity_m_per_s, InjectionTime_s: Wind velocity at entry (X1_BEG) is ramped up from 0 to the given value over the given time (if pressure gradient < 0 is specified).
  • WindTemperature_C: determines density (via pressure) at entry (X1_BEG)

1: even though pressure drops from left to right

for Solid Object

(needs SOLID = YES in makefile_user_machinedefs)

  • ObjectType_int:
    • 0 = nothing
    • 1 = cylinder/sphere of diameter ObjectDiameter_cm centered on the origin
    • 2 = square/cube of edge length ObjectDiameter_cm centered on the origin
    • \(-n\) = File solid.txt contains (at most) \(n\) voxels (lines of \(x~y~z\)). Voxels outside the origin-centered sphere of radius 0.6·ObjectDiameter_cm are discarded.
  • Obj_BoundaryCondition:

Analytical Solutions

(for comparisons)

empty 2D channel

$$ v_x(y) = \frac{\Delta p}{L}\frac{D^2/4-y^2}{2\mu} $$

empty circular tube

$$ v_z(r) = \frac{\Delta p}{L}\frac{R^2-r^2}{4\mu} $$

with \(\mu\)=dynamical viscosity