Section: ChannelBuilder

This section is for setting parameters for the channel builder, which is a physics module for initializing channel flows with different geometries. It can be used in single-phase and multiphase contexts. It can be used for closed channels, enabling internal flows, or open channels, enabling free surface flows. This setup is comprised of defining channel segments.

The channel builder is exclusively for initializing the flow and does not perform any operation during the progression of the simulation. The channel builder capability allows for initializing a variety of velocity profiles, which can be awkward to replicate as standard boundary conditions for a simulation. As a result, the BoundaryPlane field boundary type is often best suited for these cases by leveraging the BoundaryPlane.output_and_use_initial_plane capability. The channel builder is activated by including ChannelBuilder in the list of physics under incflo.physics. Finally, the channel builder sets up channels by defining the terrain blank variable. This variable must be used in the momentum forcing in order to actually affect the flow. Currently, this is done by including the DragForcing source term in ICNS.source_terms.

ChannelBuilder.segment_labels

type: List of strings, required

After listing the segment labels, the details of each channel segment are defined through additional input arguments, which describe the geometry and velocity profile of each segment. The example segment label used for the input arguments below is s1.

ChannelBuilder.s1.segment_start

type: Vector<Real>, mandatory

Spatial location of the start of the segment.

ChannelBuilder.s1.segment_end

type: Vector<Real>, mandatory

Spatial location of the end of the segment. The velocity profile (specified through other input arguments) is oriented along the line from the segment start to the segment end. The cross-sectional geometry (i.e., trapezoidal or elliptical) is perpendicular to this line.

ChannelBuilder.s1.type

type: String, optional, default = “ellipse”

The type of each channel segment. Currently implemented types include “trapezoid” and “ellipse”. The geometry parameters of a given segment depend on the type of that segment.

ChannelBuilder.s1.horizontal_axis_start

type: Real, optional

For an elliptical segment, the length of the horizontal axis of the ellipse at the start of the segment.

ChannelBuilder.s1.horizontal_axis_end

type: Real, optional

For an elliptical segment, the length of the horizontal axis of the ellipse at the end of the segment.

ChannelBuilder.s1.vertical_axis_start

type: Real, optional

For an elliptical segment, the length of the vertical axis of the ellipse at the start of the segment.

ChannelBuilder.s1.vertical_axis_end

type: Real, optional

For an elliptical segment, the length of the vertical axis of the ellipse at the end of the segment.

ChannelBuilder.s1.horizontal_axis

type: Real, optional

For an elliptical segment, if the cross-section does not change along the segment, this parameter can be used to specify the length of the horizontal axis of the ellipse along the entire segment instead of specifying both the start and end values.

ChannelBuilder.s1.vertical_axis

type: Real, optional

For an elliptical segment, if the cross-section does not change along the segment, this parameter can be used to specify the length of the vertical axis of the ellipse along the entire segment instead of specifying both the start and end values.

ChannelBuilder.s1.diameter_start

type: Real, optional

For an elliptical segment, if the vertical and horizontal axes are the same, this parameter can be used to specify the diameter of the ellipse at the segment start.

ChannelBuilder.s1.diameter_end

type: Real, optional

For an elliptical segment, if the vertical and horizontal axes are the same, this parameter can be used to specify the diameter of the ellipse at the segment end.

ChannelBuilder.s1.diameter

type: Real, optional

For an elliptical segment, if the vertical and horizontal axes are the same and they do not change along the length of the segment, this parameter can be used to specify the diameter of the ellipse. Although all of these elliptical parameters are individually optional, at least one set of parameters must be provided for an elliptical segment or the code will fail.

ChannelBuilder.s1.top_width_start

type: Real, optional

For a trapezoidal segment, the top width of the trapezoid at the start of the segment.

ChannelBuilder.s1.top_width_end

type: Real, optional

For a trapezoidal segment, the top width of the trapezoid at the end of the segment.

ChannelBuilder.s1.bottom_width_start

type: Real, optional

For a trapezoidal segment, the bottom width of the trapezoid at the start of the segment.

ChannelBuilder.s1.bottom_width_end

type: Real, optional

For a trapezoidal segment, the bottom width of the trapezoid at the end of the segment.

ChannelBuilder.s1.height_start

type: Real, optional

For a trapezoidal segment, the height of the trapezoid at the start of the segment.

ChannelBuilder.s1.height_end

type: Real, optional

For a trapezoidal segment, the height of the trapezoid at the end of the segment.

ChannelBuilder.s1.top_width

type: Real, optional

For a trapezoidal segment, if the cross-section does not change along the segment, this parameter can be used to specify the top width of the trapezoid along the entire segment instead of specifying both the start and end values.

ChannelBuilder.s1.bottom_width

type: Real, optional

For a trapezoidal segment, if the cross-section does not change along the segment, this parameter can be used to specify the bottom width of the trapezoid along the entire segment.

ChannelBuilder.s1.height

type: Real, optional

For a trapezoidal segment, if the cross-section does not change along the segment, this parameter can be used to specify the height of the trapezoid along the entire segment.

ChannelBuilder.velocity_profile

type: String, optional, default = “uniform”

The initial velocity profile along the channel segment. Currently implemented profiles include “uniform”, “linear”, and “parabolic”. The velocity profile is oriented along the line from the segment start to the segment end. For elliptical segments, the velocity profile is based on the distance (in any direction) from the center of the ellipse, but for trapezoidal segments, only the vertical distance is used to determine the velocity profile. For multiphase cases, the velocity profile is only applied to the liquid phase, setting the velocity above the ChannelBuilder.water_level to zero.

ChannelBuilder.s1.flow_speed

type: Real, mandatory

The flow speed associated with the velocity profile for the segment. This is the maximum flow speed of the velocity profile regardless of the type.

ChannelBuilder.water_level

type: Real, optional, default = 0.

The water level determines the location of the free surface for multiphase channel flows. This setup parameter applies to the entire domain. This parameter is not used in single-phase cases.

ChannelBuilder.land_level

type: Real, mandatory when ChannelBuilder.water_level is specified

The land level determines where the channel opens up for free surface flows. Above this vertical location, no terrain blank is applied, creating an open channel. This parameter is not used in single-phase cases.