github.com/archlabjp/eeslism-go@v0.0.0-20231109122333-4bb7bfcdf292/eeslism/blroomvar.go (about) 1 //This file is part of EESLISM. 2 // 3 //Foobar is free software : you can redistribute itand /or modify 4 //it under the terms of the GNU General Public License as published by 5 //the Free Software Foundation, either version 3 of the License, or 6 //(at your option) any later version. 7 // 8 //Foobar is distributed in the hope that it will be useful, 9 //but WITHOUT ANY WARRANTY; without even the implied warranty of 10 //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the 11 //GNU General Public License for more details. 12 // 13 //You should have received a copy of the GNU General Public License 14 //along with Foobar.If not, see < https://www.gnu.org/licenses/>. 15 16 /* bl_roomvar.c */ 17 18 package eeslism 19 20 /* ------------------------------------- */ 21 22 /* 室間換気、放射パネルとシステム入力要素への割り付け */ 23 24 func Roomelm(Room []*ROOM, _Rdpnl []*RDPNL) { 25 26 for n := range Room { 27 28 room := Room[n] 29 compnt := room.cmp 30 var elin_idx = 0 31 32 for i := 0; i < room.Nachr; i++ { 33 var elin *ELIN = compnt.Elins[elin_idx] 34 var elinx *ELIN = compnt.Elins[elin_idx+compnt.Elouts[0].Ni] 35 var achr *ACHIR = room.achr[i] 36 37 cmp := achr.room.cmp 38 39 elin.Upo, elin.Upv = cmp.Elouts[0], cmp.Elouts[0] 40 elinx.Upo, elinx.Upv = cmp.Elouts[1], cmp.Elouts[1] 41 42 elin_idx++ 43 } 44 45 for i := 0; i < room.Ntr; i++ { 46 47 var elin *ELIN = compnt.Elins[elin_idx] 48 trnx := room.trnx[i] 49 50 cmp := trnx.nextroom.cmp 51 elin.Upo, elin.Upv = cmp.Elouts[0], cmp.Elouts[0] 52 53 elin_idx++ 54 } 55 56 for i := 0; i < room.Nrp; i++ { 57 var elin *ELIN = compnt.Elins[elin_idx] 58 rmpnl := room.rmpnl[i] 59 60 elip := rmpnl.pnl.cmp.Elins[0] 61 62 elin.Upo = elip.Upo 63 64 elin_idx++ 65 } 66 } 67 68 for n := range _Rdpnl { 69 Rdpnl := _Rdpnl[n] 70 elin_idx := 1 71 72 for m := 0; m < Rdpnl.MC; m++ { 73 room := Rdpnl.rm[m] 74 elin := Rdpnl.cmp.Elins[elin_idx] 75 elin.Upo, elin.Upv = room.cmp.Elouts[0], room.cmp.Elouts[0] 76 77 for i := 0; i < Rdpnl.Ntrm[m]; i++ { 78 trnx := room.trnx[i] 79 elin := Rdpnl.cmp.Elins[elin_idx] 80 81 cmp := trnx.nextroom.cmp 82 elin.Upo, elin.Upv = cmp.Elouts[0], cmp.Elouts[0] 83 84 elin_idx++ 85 } 86 87 } 88 } 89 } 90 91 /* ------------------------------- */ 92 93 /* 室、放射パネルのシステム方程式作成 */ 94 95 func Roomvar(_Room []*ROOM, _Rdpnl []*RDPNL) { 96 for i := range _Room { 97 Room := _Room[i] 98 99 compnt := Room.cmp 100 elout := compnt.Elouts[0] 101 102 elout.Coeffo = Room.RMt 103 elout.Co = Room.RMC 104 105 // 室間相互換気量 106 for j := 0; j < Room.Nachr; j++ { 107 Gvr := Ca * Room.achr[j].Gvr 108 elout.Coeffin[j] = -Gvr 109 elout.Coeffo += Gvr 110 } 111 112 // ARN 113 for j := 0; j < Room.Ntr; j++ { 114 elout.Coeffin[j+Room.Nachr] = -Room.ARN[j] 115 } 116 117 // RMP 118 for j := 0; j < Room.Nrp; j++ { 119 elout.Coeffin[j+Room.Nachr+Room.Ntr] = -Room.RMP[j] 120 } 121 122 // 流量 123 for j := 0; j < Room.Nasup; j++ { 124 G := Ca * compnt.Elins[j+Room.Nachr+Room.Ntr+Room.Nrp].Lpath.G 125 elout.Coeffin[j+Room.Nachr+Room.Ntr+Room.Nrp] = -G 126 elout.Coeffo += G 127 } 128 129 elout = compnt.Elouts[1] 130 elout.Coeffo = Room.RMx 131 elout.Co = Room.RMXC 132 133 // 室間相互換気量 134 for j := 0; j < Room.Nachr; j++ { 135 Gvr := Room.achr[j].Gvr 136 elout.Coeffin[j] = -Gvr 137 elout.Coeffo += Gvr 138 } 139 140 // 流量 141 for j := 0; j < Room.Nasup; j++ { 142 G := compnt.Elins[j+Room.Nachr+Room.Ntr+Room.Nrp+Room.Nachr].Lpath.G 143 elout.Coeffin[j+Room.Nachr] = -G 144 elout.Coeffo += G 145 } 146 } 147 148 for i := range _Rdpnl { 149 Rdpnl := _Rdpnl[i] 150 151 compnt := Rdpnl.cmp 152 G := compnt.Elouts[0].Lpath.G 153 cG := Spcheat(compnt.Elouts[0].Fluid) * G 154 compnt.Elouts[0].Coeffo = cG 155 compnt.Elouts[0].Co = Rdpnl.EPC 156 157 cfin := &compnt.Elouts[0].Coeffin[0] 158 if Rdpnl.sd[0].mw.wall.WallType == WallType_P { 159 // 通常の床暖房パネル 160 *cfin = Rdpnl.Epw - cG 161 } else { 162 // 屋根一体型空気集熱器 163 *cfin = -Rdpnl.Epw 164 } 165 166 off := 1 167 for m := 0; m < Rdpnl.MC; m++ { 168 cfin := &compnt.Elouts[0].Coeffin[off] 169 off++ 170 171 *cfin = -Rdpnl.EPt[m] 172 for j := 0; j < Rdpnl.Ntrm[m]; j++ { 173 compnt.Elouts[0].Coeffin[off] = -Rdpnl.EPR[m][j] 174 off++ 175 } 176 177 for j := 0; j < Rdpnl.Nrp[m]; j++ { 178 compnt.Elouts[0].Coeffin[off] = -Rdpnl.EPW[m][j] 179 off++ 180 } 181 } 182 183 /* 空気系統湿度計算用ダミー */ 184 elout := compnt.Elouts[1] 185 elout.Coeffo = G 186 elout.Co = 0.0 187 elout.Coeffin[0] = -G 188 } 189 }