Skip to content
TubeBase.md

TubeBase

This component extends from TwoPorts

Usage

TubeBase(area, length, perimeter, shape_factor, head_factor, add_inertia=false, d_h=4*area/perimeter, m_flow0)

Parameters:

NameDescriptionUnitsDefault value
aream2
lengthm
perimeterm
shape_factor
head_factor
add_inertiafalse
m_flow0kg/s

Connectors

Variables

NameDescriptionUnits
ΔpPa
m_flowkg/s
rhokg/m3
muPa.s
velocitym/s
sheerPa
ff

Behavior

Behavior of this component cannot be rendered because it includes path variables.

Source

dyad
component TubeBase
  extends TwoPorts
  parameter area::Area
  parameter length::Length
  parameter perimeter::Length
  parameter shape_factor::Real
  parameter head_factor::Real
  parameter add_inertia::Boolean = false
  final parameter d_h::Length = 4*area/perimeter
  variable rho::Density
  variable mu::DynamicViscosity
  variable velocity::Velocity
  variable sheer::Pressure
  variable ff::Real
  parameter m_flow0::MassFlowRate
relations
  initial m_flow = m_flow0
  rho = density(port_a.medium, port_a.p)
  mu = viscosity(port_a.medium)
  velocity = m_flow/(rho*area)
  ff = friction_factor(m_flow, area, d_h, mu, shape_factor)
  sheer = 0.5*rho*reg_pow(velocity, 2)*ff*head_factor*(length/d_h)
  Δp = if add_inertia then sheer+(length/area)*der(m_flow) else sheer
  m_flow = port_a.m_flow
end
Flattened Source
dyad
component TubeBase
  port_a = Port()
  port_b = Port()
  variable Δp::AbsolutePressure
  variable m_flow::MassFlowRate
  parameter area::Area
  parameter length::Length
  parameter perimeter::Length
  parameter shape_factor::Real
  parameter head_factor::Real
  parameter add_inertia::Boolean = false
  final parameter d_h::Length = 4*area/perimeter
  variable rho::Density
  variable mu::DynamicViscosity
  variable velocity::Velocity
  variable sheer::Pressure
  variable ff::Real
  parameter m_flow0::MassFlowRate
relations
  continuity(port_a.medium, port_b.medium)
  port_a.m_flow+port_b.m_flow = 0
  Δp = port_a.p-port_b.p
  initial m_flow = m_flow0
  rho = density(port_a.medium, port_a.p)
  mu = viscosity(port_a.medium)
  velocity = m_flow/(rho*area)
  ff = friction_factor(m_flow, area, d_h, mu, shape_factor)
  sheer = 0.5*rho*reg_pow(velocity, 2)*ff*head_factor*(length/d_h)
  Δp = if add_inertia then sheer+(length/area)*der(m_flow) else sheer
  m_flow = port_a.m_flow
metadata {}
end


Test Cases

This is setup code, that must be run before each test case.

julia
using HydraulicComponents
using ModelingToolkit, OrdinaryDiffEqDefault
using Plots
using CSV, DataFrames

snapshotsdir = joinpath(dirname(dirname(pathof(HydraulicComponents))), "test", "snapshots")
"/home/actions-runner-10/.julia/packages/HydraulicComponents/EtOYG/test/snapshots"