/// <summary>壁熱貫流テスト(潜熱蓄熱材)</summary> private static void wallHeatTransferTest3() { //初期温度 const double INIT_TEMP = 35; //壁層を作成 WallLayers wl = new WallLayers(); wl.AddLayer(new WallLayers.Layer(new WallMaterial(WallMaterial.PredefinedMaterials.FrexibleBoard), 0.0165)); wl.AddLayer(new WallLayers.Layer(new WallMaterial("ダミー材料", 1, 1), 0.02)); wl.AddLayer(new WallLayers.Layer(new WallMaterial("ダミー材料", 1, 1), 0.02)); wl.AddLayer(new WallLayers.Layer(new WallMaterial(WallMaterial.PredefinedMaterials.ExtrudedPolystyreneFoam_3), 0.02)); wl.AddLayer(new WallLayers.Layer(new WallMaterial(WallMaterial.PredefinedMaterials.Plywood), 0.009)); wl.AddLayer(new WallLayers.Layer(new WallMaterial(WallMaterial.PredefinedMaterials.AirGap), 0.015)); wl.AddLayer(new WallLayers.Layer(new WallMaterial(WallMaterial.PredefinedMaterials.Plywood), 0.009)); //壁体を作成 Wall wall = new Wall(wl); wall.TimeStep = 1200; wall.AirTemperature1 = 20; wall.AirTemperature2 = 20; wall.SurfaceArea = 6.48; //潜熱蓄熱材1を作成して設定 LatentHeatStorageMaterial material1; material1 = new LatentHeatStorageMaterial(19, new WallMaterial("パッシブ・スミターマル(凝固)", 0.19, 3.6 * 1400)); material1.AddMaterial(23, new WallMaterial("パッシブ・スミターマル(遷移)", (0.19 + 0.22) / 2d, 15.1 * 1400)); material1.AddMaterial(100, new WallMaterial("パッシブ・スミターマル(融解)", 0.22, 3.6 * 1400)); material1.Initialize(INIT_TEMP); wall.SetLatentHeatStorageMaterial(1, material1); //潜熱蓄熱材2を作成して設定 LatentHeatStorageMaterial material2; material2 = new LatentHeatStorageMaterial(30, new WallMaterial("スミターマル(凝固)", 0.19, 3.6 * 1390)); material2.AddMaterial(32, new WallMaterial("スミターマル(遷移)", (0.19 + 0.22) / 2d, 63.25 * 1400)); material2.AddMaterial(100, new WallMaterial("スミターマル(融解)", 0.22, 3.5 * 1410)); material2.Initialize(INIT_TEMP); wall.SetLatentHeatStorageMaterial(2, material2); //潜熱蓄熱材の間に配管を埋設 Tube tube = new Tube(0.84, 0.346, 4186); wall.AddTube(tube, 1); tube.SetFlowRate(0); tube.FluidTemperature = 40; //壁体温度を初期化 wall.InitializeTemperature(INIT_TEMP); for (int i = 0; i < wall.Layers.LayerNumber; i++) Console.Write("温度" + i + ", "); Console.WriteLine("蓄熱量[kJ]"); for (int i = 0; i < 200; i++) { if (i == 100) { tube.SetFlowRate(0.54); //通水開始 wall.AirTemperature1 = 30; wall.AirTemperature2 = 30; } wall.Update(); double[] tmp = wall.GetTemperatures(); for (int j = 0; j < tmp.Length - 1; j++) Console.Write(((tmp[j] + tmp[j + 1]) / 2d).ToString("F1") + ", "); Console.Write(wall.GetHeatStorage(INIT_TEMP).ToString("F0")); Console.WriteLine(); } Console.Read(); }
/// <summary>Sample program calculating the unsteady heat conduction of wall with latent heat storage material</summary> private static void wallTest3() { //Initial temperature const double INIT_TEMP = 35; //Create an instance of WallLayers class WallLayers wl = new WallLayers(); wl.AddLayer(new WallLayers.Layer(new WallMaterial(WallMaterial.PredefinedMaterials.FrexibleBoard), 0.0165)); wl.AddLayer(new WallLayers.Layer(new WallMaterial("dummy", 1, 1), 0.02)); wl.AddLayer(new WallLayers.Layer(new WallMaterial("dummy", 1, 1), 0.02)); wl.AddLayer(new WallLayers.Layer(new WallMaterial(WallMaterial.PredefinedMaterials.ExtrudedPolystyreneFoam_3), 0.02)); wl.AddLayer(new WallLayers.Layer(new WallMaterial(WallMaterial.PredefinedMaterials.Plywood), 0.009)); wl.AddLayer(new WallLayers.Layer(new WallMaterial(WallMaterial.PredefinedMaterials.AirGap), 0.015)); wl.AddLayer(new WallLayers.Layer(new WallMaterial(WallMaterial.PredefinedMaterials.Plywood), 0.009)); //Create an instance of Wall class Wall wall = new Wall(wl); wall.TimeStep = 1200; wall.AirTemperature1 = 20; wall.AirTemperature2 = 20; wall.SurfaceArea = 6.48; //Create an instance of LatentHeatStorageMaterial class LatentHeatStorageMaterial pmc1; pmc1 = new LatentHeatStorageMaterial(19, new WallMaterial("PCM1 (Solid)", 0.19, 3.6 * 1400)); pmc1.AddMaterial(23, new WallMaterial("PCM1 (Two phase)", (0.19 + 0.22) / 2d, 15.1 * 1400)); pmc1.AddMaterial(100, new WallMaterial("PCM1 (Liquid)", 0.22, 3.6 * 1400)); pmc1.Initialize(INIT_TEMP); //Set PCM to second wall layer wall.SetLatentHeatStorageMaterial(1, pmc1); //Create an instance of LatentHeatStorageMaterial class LatentHeatStorageMaterial pcm2; pcm2 = new LatentHeatStorageMaterial(30, new WallMaterial("PCM2 (Solid)", 0.19, 3.6 * 1390)); pcm2.AddMaterial(32, new WallMaterial("PCM2 (Two phase)", (0.19 + 0.22) / 2d, 63.25 * 1400)); pcm2.AddMaterial(100, new WallMaterial("PCM2 (Liquid)", 0.22, 3.5 * 1410)); pcm2.Initialize(INIT_TEMP); //Set PCM to third wall layer wall.SetLatentHeatStorageMaterial(2, pcm2); //Install heating tube between PMCs Tube tube = new Tube(0.84, 0.346, 4186); wall.AddTube(tube, 1); tube.SetFlowRate(0); tube.FluidTemperature = 40; //Initialize wall temperature wall.InitializeTemperature(INIT_TEMP); for (int i = 0; i < wall.Layers.LayerNumber; i++) Console.Write("Temperature" + i + ", "); Console.WriteLine("Heat storage[kJ]"); for (int i = 0; i < 200; i++) { if (i == 100) { tube.SetFlowRate(0.54); //Start heating wall.AirTemperature1 = 30; wall.AirTemperature2 = 30; } wall.Update(); double[] tmp = wall.GetTemperatures(); for (int j = 0; j < tmp.Length - 1; j++) Console.Write(((tmp[j] + tmp[j + 1]) / 2d).ToString("F1") + ", "); Console.Write(wall.GetHeatStorage(INIT_TEMP).ToString("F0")); Console.WriteLine(); } Console.Read(); }
/// <summary>壁熱貫流テスト(冷温水配管埋設)</summary> private static void wallHeatTransferTest2() { WallLayers wl = new WallLayers(); wl.AddLayer(new WallLayers.Layer(new WallMaterial(WallMaterial.PredefinedMaterials.FrexibleBoard), 0.0165)); wl.AddLayer(new WallLayers.Layer(new WallMaterial("水", 0.59, 4186), 0.02)); wl.AddLayer(new WallLayers.Layer(new WallMaterial("水", 0.59, 4186), 0.02)); wl.AddLayer(new WallLayers.Layer(new WallMaterial(WallMaterial.PredefinedMaterials.ExtrudedPolystyreneFoam_3), 0.02)); wl.AddLayer(new WallLayers.Layer(new WallMaterial(WallMaterial.PredefinedMaterials.Plywood), 0.009)); wl.AddLayer(new WallLayers.Layer(new WallMaterial(WallMaterial.PredefinedMaterials.AirGap), 0.015)); wl.AddLayer(new WallLayers.Layer(new WallMaterial(WallMaterial.PredefinedMaterials.Plywood), 0.009)); Wall wall = new Wall(wl); wall.TimeStep = 300; wall.AirTemperature1 = 20; wall.AirTemperature2 = 10; wall.SurfaceArea = 6.48; //配管を埋設 Tube tube = new Tube(0.84, 0.346, 4186); wall.AddTube(tube, 1); tube.SetFlowRate(0); //最初は流量0 tube.FluidTemperature = 30; wall.InitializeTemperature(20); //壁体温度を初期化 for (int i = 0; i < wall.Layers.LayerNumber; i++) Console.Write("温度" + i + ", "); Console.WriteLine("配管への熱移動量[W], 配管出口温度[C]"); for (int i = 0; i < 100; i++) { if (i == 50) tube.SetFlowRate(0.54); //通水開始 wall.Update(); double[] tmp = wall.GetTemperatures(); for (int j = 0; j < tmp.Length - 1; j++) Console.Write(((tmp[j] + tmp[j + 1]) / 2d).ToString("F1") + ", "); Console.Write(wall.GetHeatTransferToTube(1).ToString("F0") + ", " + tube.GetOutletFluidTemperature().ToString("F1")); Console.WriteLine(); } Console.Read(); }
/// <summary>Sample program calculating the unsteady heat conduction of wall with heating tube</summary> private static void wallTest2() { WallLayers wl = new WallLayers(); wl.AddLayer(new WallLayers.Layer(new WallMaterial(WallMaterial.PredefinedMaterials.FrexibleBoard), 0.0165)); wl.AddLayer(new WallLayers.Layer(new WallMaterial("Water", 0.59, 4186), 0.02)); wl.AddLayer(new WallLayers.Layer(new WallMaterial("Water", 0.59, 4186), 0.02)); wl.AddLayer(new WallLayers.Layer(new WallMaterial(WallMaterial.PredefinedMaterials.ExtrudedPolystyreneFoam_3), 0.02)); wl.AddLayer(new WallLayers.Layer(new WallMaterial(WallMaterial.PredefinedMaterials.Plywood), 0.009)); wl.AddLayer(new WallLayers.Layer(new WallMaterial(WallMaterial.PredefinedMaterials.AirGap), 0.015)); wl.AddLayer(new WallLayers.Layer(new WallMaterial(WallMaterial.PredefinedMaterials.Plywood), 0.009)); Wall wall = new Wall(wl); wall.TimeStep = 300; wall.AirTemperature1 = 20; wall.AirTemperature2 = 10; wall.SurfaceArea = 6.48; Tube tube = new Tube(0.84, 0.346, 4186); //installing tube to wall wall.AddTube(tube, 1); tube.SetFlowRate(0); //initial flow rate is 0 kg/s tube.FluidTemperature = 30; wall.InitializeTemperature(20); //initialize temperature of the wall for (int i = 0; i < wall.Layers.LayerNumber; i++) Console.Write("temperature" + i + ", "); Console.WriteLine("heat transfer to the tube[W], outlet temperature of fluid[C]"); for (int i = 0; i < 100; i++) { if (i == 50) tube.SetFlowRate(0.54); //start heating wall.Update(); double[] tmp = wall.GetTemperatures(); for (int j = 0; j < tmp.Length - 1; j++) Console.Write(((tmp[j] + tmp[j + 1]) / 2d).ToString("F1") + ", "); Console.Write(wall.GetHeatTransferToTube(1).ToString("F0") + ", " + tube.GetOutletFluidTemperature().ToString("F1")); Console.WriteLine(); } Console.Read(); }