Skip to content
HeatSystemTest.md

HeatSystemTest

Heat system with a fixed temperature source This is a test component for HeatCapacitor, FixedTemperature and ThermalConductor

Usage

HeatSystemTest(T=10.0, T0=-10.0, C=10.0, G=10.0)

Parameters:

NameDescriptionUnitsDefault value
T10
T0-10
C10
G10

Behavior

[connect(source+node,conductor+nodea)connect(conductor+nodeb,mass+node)mass.T(t)=mass.node.T(t)dmass.T(t)dt=mass.dT(t)mass.dT(t)=mass.node.Q(t)mass.Csource.node.T(t)=source.Tconductor.ΔT(t)=conductor.node_b.T(t)+conductor.node_a.T(t)conductor.node_a.Q(t)=conductor.Q(t)conductor.node_b.Q(t)+conductor.node_a.Q(t)=0conductor.Q(t)=conductor.Gconductor.ΔT(t)]

Source

dyad
# Heat system with a fixed temperature source
# This is a test component for `HeatCapacitor`, `FixedTemperature` and
# `ThermalConductor`
component HeatSystemTest
  mass = HeatCapacitor(C=C, T0=T0)
  source = FixedTemperature(T=T)
  conductor = ThermalConductor(G=G)
  parameter T::Real = 10.0
  parameter T0::Real = -10.0
  parameter C::Real = 10.0
  parameter G::Real = 10.0
relations
  connect(source.node, conductor.node_a)
  connect(conductor.node_b, mass.node)
metadata {
  "Dyad": {
    "tests": {
      "case1": {
        "stop": 10,
        "atol": {"mass.T": 0.001, "mass.dT": 0.001},
        "expect": {"final": {"mass.T": 9.999, "mass.dT": 0}}
      }
    }
  }
}
end
Flattened Source
dyad
# Heat system with a fixed temperature source
# This is a test component for `HeatCapacitor`, `FixedTemperature` and
# `ThermalConductor`
component HeatSystemTest
  mass = HeatCapacitor(C=C, T0=T0)
  source = FixedTemperature(T=T)
  conductor = ThermalConductor(G=G)
  parameter T::Real = 10.0
  parameter T0::Real = -10.0
  parameter C::Real = 10.0
  parameter G::Real = 10.0
relations
  connect(source.node, conductor.node_a)
  connect(conductor.node_b, mass.node)
metadata {
  "Dyad": {
    "tests": {
      "case1": {
        "stop": 10,
        "atol": {"mass.T": 0.001, "mass.dT": 0.001},
        "expect": {"final": {"mass.T": 9.999, "mass.dT": 0}}
      }
    }
  }
}
end


Test Cases

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

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

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

Test Case case1

julia
@mtkbuild model_case1 = HeatSystemTest()
u0_case1 = []
prob_case1 = ODEProblem(model_case1, u0_case1, (0, 10))
sol_case1 = solve(prob_case1)
retcode: Success
Interpolation: 3rd order Hermite
t: 16-element Vector{Float64}:
  0.0
  0.08705679736109888
  0.297886693169545
  0.5674494586937815
  0.8774038729659345
  1.2052067705929734
  1.6480371325405543
  2.1469023748018836
  2.74943765198039
  3.439598098323707
  4.24861247747897
  5.185507444995094
  6.287534410317887
  7.592798099416299
  9.170961905635295
 10.0
u: 16-element Vector{Vector{Float64}}:
 [-10.0]
 [-8.332500645959664]
 [-4.847709182285916]
 [-1.339394159225796]
 [1.6827756996458427]
 [4.007397056074139]
 [6.151447937140967]
 [7.663076755291136]
 [8.720699513080175]
 [9.358413030278646]
 [9.714269421051263]
 [9.887998090632538]
 [9.962746114538984]
 [9.989851526718754]
 [9.997858159017106]
 [9.999065019298108]
  • Examples

  • Experiments

  • Analyses