.. ############################################################################ .. manual/packages/vertex-cfd/boundary_condition_ns.rst .. ############################################################################ .. _sec_boundary_condition_ns: *********************************************** Boundary conditions for Navier-Stokes model *********************************************** Boundary conditions available for the Navier-Stokes model are described below. Their usage in the `Data` sublist is illustrated through representative examples. .. note:: Time ramping is available for some of the boundary condition listed below, and require both an initial value and a final value. The initial value is labeled with the suffix `_init` while the final value corresponds to the field name itself. Ramping occurs between an initial time and a final time referred to as `Time Initial` and `Time Final` in the input file, respectively. Prior to `Time Initial`, the boundary value is set to the initial value. Passed `Time Final`, the value is set to the final value. Time ramping is implemented with the following expression as a function of time :math:`t` for all integration points on a boundary: .. math:: &\text{if} \ t < t_{init} \ \text{then} \ U_{bc} = U_{init} \\ &\text{if} \ t_{init} < t < t_{final} \ \text{then} \ U_{bc} = a \ t + b \ \text{where} \ a = \frac{U_{final} - U_{init}}{t_{final} - t_{init}} \ \text{and} \ b = U_{init} - a \ t_{init} \\ &\text{if} \ t > t_{final} \ \text{then} \ U_{bc} = U_{final} .. dropdown:: No-Slip boundary :icon: bookmark :color: light :animate: fade-in-slide-down .. py:data:: Type :type: string :value: No-Slip :usage: Required :description: Wall boundary condition that sets the velocity to zero. The boundary condition for the temperature equation is either isothermal, heat flux, or adiabatic. .. py:data:: Temperature Profile :type: string :value: Isothermal, Flux or Adiabatic :usage: Optional :default: Isothermal :description: Boundary condition employed for the temperature equation. .. py:data:: Wall Temperature :type: double :value: :math:`(0,\infty]` :usage: Required when solving for temperature equation and setting `Temperature Profile` to `Isothermal`. :description: Value of the temperature in Kelvin :math:`(K)` to set at the wall boundary. .. py:data:: Wall Flux :type: double :value: :math:`(0,\infty]` :usage: Required when solving for temperature equation and setting `Temperature Profile` to `Flux`. :description: Value of the heat flux in :math:`(W/m^2)` to set at the wall boundary. .. py:data:: Lagrange Pressure :type: double :value: :math:`[-\infty,\infty]` :usage: Optional. :description: Value of pressure in :math:`(Pa)` at the wall. When not specified, the wall pressure is free to vary at the wall. .. literalinclude:: ../../../../examples/inputs/incompressible/incompressible_3d_rayleigh_benard_convection.xml :language: xml :linenos: :lines: 76-93 .. dropdown:: Dirichlet boundary :icon: bookmark :color: light :animate: fade-in-slide-down .. py:data:: Type :type: string :value: Dirichlet :usage: Required :description: Dirichlet boundary condition for velocity, and temperature when enabled. .. py:data:: Time Initial :type: double :value: :math:`[0,\infty]` :usage: Optional :description: Time in second :math:`(s)` to start the linear ramping of boundary values from. .. py:data:: Time Final :type: double :value: :math:`[0,\infty]` :usage: Optional :description: Time in second :math:`(s)` to stop the linear ramping of boundary values. .. py:data:: temperature :type: double :value: :math:`(0,\infty]` :usage: Required when solving for temperature equation. :description: Final value of the temperature in Kelvin :math:`(K)` to set at the boundary. .. py:data:: temperature_init :type: double :value: :math:`(0,\infty]` :usage: Required when solving for temperature equation. :description: Initial value of the temperature in Kelvin :math:`(K)` to set at the boundary. .. py:data:: velocity_0 :type: double :value: :math:`[0,\infty]` :usage: Required. :description: Final value of the x-velocity in :math:`(m/s)` to set at the boundary. .. py:data:: velocity_0_init :type: double :value: :math:`[0,\infty]` :usage: Optional. :description: Initial value of the x-velocity in :math:`(m/s)` to set at the boundary. .. py:data:: velocity_1 :type: double :value: :math:`[0,\infty]` :usage: Required. :description: Final value of the y-velocity in :math:`(m/s)` to set at the boundary. .. py:data:: velocity_1_init :type: double :value: :math:`[0,\infty]` :usage: Optional. :description: Initial value of the y-velocity in :math:`(m/s)` to set at the boundary. .. py:data:: velocity_2 :type: double :value: :math:`[0,\infty]` :usage: Required if solving flulid equations in a 3-D computational domain. :description: Constant value of the z-velocity in :math:`(m/s)` to set at the boundary. .. py:data:: velocity_2_init :type: double :value: :math:`[0,\infty]` :usage: Optional. :description: Initial value of the z-velocity in :math:`(m/s)` to set at the boundary. .. literalinclude:: ../../../../examples/inputs/incompressible/incompressible_2d_temperature_supg.xml :language: xml :linenos: :lines: 64-69 .. dropdown:: Pressure outflow boundary :icon: bookmark :color: light :animate: fade-in-slide-down .. py:data:: Type :type: string :value: Pressure Outflow :usage: Required :description: Sets a back pressure at an outflow boundary. Temperature is advected out of the domain when temperature equation is enabled. .. py:data:: Back Pressure :type: double :value: :math:`[-\infty,\infty]` :usage: Required :description: Back pressure value in :math:`(Pa)` to set at the outflow boundary. .. literalinclude:: ../../../../examples/inputs/incompressible/incompressible_oscillating_laminar_flow_2d.xml :language: xml :linenos: :lines: 66-74 .. dropdown:: Free slip boundary :icon: bookmark :color: light :animate: fade-in-slide-down .. py:data:: Type :type: string :value: Free Slip :usage: Required :description: Free slip condition that lets the tangential component of the velocity be non-zero such as :math:`\vec{u}\cdot\vec{n}=0`. .. literalinclude:: ../../../../examples/inputs/incompressible/incompressible_oscillating_laminar_flow_2d.xml :language: xml :linenos: :lines: 50-57 .. dropdown:: Symmetry boundary :icon: bookmark :color: light :animate: fade-in-slide-down .. py:data:: Type :type: string :value: Symmetry :usage: Required :description: Impose a symmetry condition on the velocity :math:`\nabla_n \vec{u} = 0` and the temperature :math:`\nabla_n T = 0` when enabled. .. literalinclude:: ../../../../examples/inputs/incompressible/incompressible_2d_sst_turbulence_channel.xml :language: xml :linenos: :lines: 64-71 .. dropdown:: Extrapolate boundary :icon: bookmark :color: light :animate: fade-in-slide-down .. py:data:: Type :type: string :value: Extrapolate :usage: Required :description: Set the boundary temperature, velocity, pressure and their gradients to the interior values. .. dropdown:: Rotating wall boundary :icon: bookmark :color: light :animate: fade-in-slide-down .. py:data:: Type :type: string :value: Rotating Wall :usage: Required :description: Set a rotating wall boundary with a constant angular velocity around the z-axis and a constant wall temperature when solving for heat transfer. .. py:data:: Angular Velocity :type: double :value: :math:`[-\infty,\infty]` :usage: Required :description: Final Angular velocity :math:`\Omega (Hz)` the wall is rotating with. .. py:data:: Angular Velocity Initial :type: double :value: :math:`[-\infty,\infty]` :usage: Required :description: Initial angular velocity :math:`\Omega_{init} (Hz)` the wall is rotating with. .. py:data:: Wall Temperature :type: double :value: :math:`(0,\infty]` :usage: Required :description: Temperature value in Kelvin :math:`(K)` to set at the rotating wall. .. py:data:: Time Initial :type: double :value: :math:`[0,\infty]` :usage: Optional :description: Time in second :math:`(s)` to start the linear ramping of boundary values from. .. py:data:: Time Final :type: double :value: :math:`[0,\infty]` :usage: Optional :description: Time in second :math:`(s)` to stop the linear ramping of boundary values. .. literalinclude:: ../../../../examples/inputs/incompressible/incompressible_2d_rotating_cylinder_viscous.xml :language: xml :linenos: :lines: 52-61 .. dropdown:: Laminar flow boundary :icon: bookmark :color: light :animate: fade-in-slide-down .. py:data:: Type :type: string :value: Laminar Flow :usage: Required :description: Set a parabolic/laminar profile for the velocity at an inflow boundary. An uniform temperature condition is assumed when heat transfer is enabled. .. py:data:: Characteristic Radius :type: double :value: :math:`(0,\infty]` :usage: Required :description: Characteristic radius in :math:`(m)` which is the half heigh of a 2-D channel or the radius of a pipe. .. py:data:: Average Velocity :type: double :value: :math:`(0,\infty]` :usage: Required :description: Average velocity to apply at the inflow boundary in :math:`(m/s)`. The maximum velocity is computed from average velocity. .. py:data:: Origin Coordinates :type: Array(double) :value: :math:`[-\infty,\infty]` for each component. :usage: Optional :default: The default is the origin of the Cartesian coordinate system. :description: Coordinates of the center of the inflow boundary (line in a 2-D channel, and center of a face in a pipe) which corresponds to the location of the maximum velocity of the parabolic profile. .. py:data:: Temperature :type: double :value: :math:`(0,\infty]` :usage: Required when solving for heat transfer. :description: Temperature value in Kelvin :math:`(K)` to set at inflow boundary. .. literalinclude:: ../../../../examples/inputs/incompressible/incompressible_2d_heat_flux_channel.xml :language: xml :linenos: :lines: 101-115 .. dropdown:: Lid-driven cavity boundary :icon: bookmark :color: light :animate: fade-in-slide-down .. py:data:: Type :type: string :value: Cavity Lid :usage: Required :description: Lid-driven cavity boundary condition with uniform temperature (when enabled) and a power-law velocity profile for an i-component of the velocity :math:`u_i = u_{wall}(1.0 - (x_i/h)^{18})^2`. The other components of the velocity are set to 0.0. This boundary condition is well posed (zero velocity) on sides and corners of the moving wall. The moving wall (line or face) must be aligned with the Cartesian directions and of squared shape. .. py:data:: Wall Normal Direction :type: int :value: 0 for x-direction, 1 for y-direciton, and 2 for z-direction.. :usage: Required :description: Non-zero component of the outer normal vector to the moving wall. .. py:data:: Velocity Direction :type: int :value: 0 for x-direction, 1 for y-direciton, and 2 for z-direction.. :usage: Required :description: Non-zero velocity component :math:`u_i` to use on the moving wall. .. py:data:: Half width :type: double :value: :math:`(0;\infty]` :usage: Required :descrition: Half-width :math:`h` of the moving wall. The moving wall is assumed a square in 3-D. .. py:data:: Wall Velocity :type: double :value: :math:`[0;\infty]` :usage: Required :description: Maximum wall velocity :math:`u_{wall}`. .. literalinclude:: ../../../../examples/inputs/incompressible/incompressible_3d_wale_cavity.xml :language: xml :linenos: :lines: 74-87 .. dropdown:: Velocity wall function boundary :icon: bookmark :color: light :animate: fade-in-slide-down .. py:data:: Type :type: string :value: Velocity Wall Function :usage: Required :description: Assign a non-penetration condition for the velocity :math:`\nabla_n \vec{u} = 0` to be used with wall function when enabling turbulence modeling. The temperature boundary condition is :math:`\nabla_n T = 0` when solving for heat transfer. .. literalinclude:: ../../../../examples/inputs/incompressible/incompressible_2d_standard_k_epsilon_turbulence_channel.xml :language: xml :linenos: :lines: 85-102 .. dropdown:: Fluid/Solid interface :icon: bookmark :color: light :animate: fade-in-slide-down .. py:data:: Fluid/Solid Interface :type: bool :value: true or false :usage: Required if the boundary is an internal interface between a solid domain and a fluid domain. :description: When solving for an fluid/solid interface, the above boolean should be included in the `Data` block and set to `true` along with the above boundary types. It will then only applies boundary conditions to the fluid equations (velocity and pressure). Boundary conditions for variables defined on solid domain and fluid domain are ignored. .. literalinclude:: ../../../../examples/inputs/cht/solid_to_solid_fluid_cht.xml :language: xml :linenos: :lines: 94-102