github.com/archlabjp/eeslism-go@v0.0.0-20231109122333-4bb7bfcdf292/eeslism/mcqmeas.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 /* mcqmeas.c */ 17 18 /* QMEAS */ 19 20 package eeslism 21 22 import ( 23 "fmt" 24 "io" 25 ) 26 27 // 出入り口温湿度の割り当て 28 29 func Qmeaselm(Qmeas []*QMEAS) { 30 for _, qmeas := range Qmeas { 31 PlistTh := qmeas.PlistTh 32 N := qmeas.Nelmh 33 Pelm := PlistTh.Pelm[N] 34 if N > 0 && (Pelm.Cmp.Eqptype != DIVERG_TYPE) && (Pelm.Cmp.Eqptype != DIVGAIR_TYPE) { 35 Pelm = PlistTh.Pelm[N-1] 36 qmeas.Th = &Pelm.Out.Sysv 37 38 if PlistTh.Plistx != nil { 39 qmeas.Plistxh = PlistTh.Plistx 40 Plist := qmeas.Plistxh 41 Pelm = Plist.Pelm[N-1] 42 qmeas.Xh = &Pelm.Out.Sysv 43 } 44 } else { 45 Pelm = PlistTh.Pelm[1] 46 var sysvin *float64 47 48 if Pelm.Out != nil { 49 sysvin = &Pelm.Out.Elins[0].Sysvin 50 } else { 51 sysvin = &Pelm.In.Sysvin 52 } 53 54 qmeas.Th = sysvin 55 56 if PlistTh.Plistx != nil { 57 qmeas.Plistxh = PlistTh.Plistx 58 Pelm = qmeas.Plistxh.Pelm[1] 59 60 if Pelm.Out != nil { 61 qmeas.Xh = &Pelm.Out.Elins[0].Sysvin 62 } else { 63 qmeas.Xh = &Pelm.In.Sysvin 64 } 65 } 66 } 67 68 PlistTc := qmeas.PlistTc 69 N = qmeas.Nelmc 70 Pelm = PlistTc.Pelm[N] 71 if N > 0 && (Pelm.Cmp.Eqptype != DIVERG_TYPE) && (Pelm.Cmp.Eqptype != DIVGAIR_TYPE) { 72 Pelm = PlistTc.Pelm[N-1] 73 qmeas.Tc = &Pelm.Out.Sysv 74 75 if PlistTc.Plistx != nil { 76 qmeas.Plistxc = PlistTc.Plistx 77 Plist := qmeas.Plistxc 78 Pelm = Plist.Pelm[N-1] 79 qmeas.Xc = &Pelm.Out.Sysv 80 } 81 } else { 82 Pelm = PlistTc.Pelm[1] 83 var sysvin *float64 84 85 if Pelm.Out != nil { 86 sysvin = &Pelm.Out.Elins[0].Sysvin 87 } else { 88 sysvin = &Pelm.In.Sysvin 89 } 90 91 qmeas.Tc = sysvin 92 93 if PlistTc.Plistx != nil { 94 qmeas.Plistxc = PlistTc.Plistx 95 Pelm = qmeas.Plistxc.Pelm[1] 96 97 if Pelm.Out != nil { 98 qmeas.Xc = &Pelm.Out.Elins[0].Sysvin 99 } else { 100 qmeas.Xc = &Pelm.In.Sysvin 101 } 102 } 103 } 104 } 105 } 106 107 func Qmeasene(Qmeas []*QMEAS) { 108 for _, qmeas := range Qmeas { 109 PG := qmeas.PlistG 110 Ph := qmeas.PlistTh 111 Pc := qmeas.PlistTc 112 113 if PG.Control != OFF_SW && Ph.Control != OFF_SW && Pc.Control != OFF_SW { 114 qmeas.Qs = Spcheat(PG.Mpath.Fluid) * *qmeas.G * (*qmeas.Th - *qmeas.Tc) 115 116 if qmeas.Plistxc != nil { 117 qmeas.Ql = Ro * *qmeas.G * (*qmeas.Xh - *qmeas.Xc) 118 } else { 119 qmeas.Ql = 0.0 120 } 121 122 qmeas.Qt = qmeas.Qs + qmeas.Ql 123 } else { 124 qmeas.Qs = 0.0 125 qmeas.Ql = 0.0 126 qmeas.Qt = 0.0 127 } 128 } 129 } 130 131 func Qmeasprint(fo io.Writer, id int, Qmeas []*QMEAS) { 132 for _, qmeas := range Qmeas { 133 el := qmeas.Cmp.Elouts[0] 134 135 switch id { 136 case 0: 137 if len(Qmeas) > 0 { 138 fmt.Fprintf(fo, "%s %d\n", QMEAS_TYPE, len(Qmeas)) 139 } 140 if qmeas.Plistxc != nil && qmeas.Plistxh != nil { 141 fmt.Fprintf(fo, " %s 1 9\n", qmeas.Name) 142 } else { 143 fmt.Fprintf(fo, " %s 1 5\n", qmeas.Name) 144 } 145 case 1: 146 if qmeas.Plistxc != nil && qmeas.Plistxh != nil { 147 fmt.Fprintf(fo, "%s_ce c c %s_G m f %s_Th t f %s_Tc t f %s_xh t f %s_xc t f\n", 148 qmeas.Name, qmeas.Name, qmeas.Name, qmeas.Name, qmeas.Name, qmeas.Name) 149 fmt.Fprintf(fo, "%s_Qs q f %s_Ql q f %s_Qt q f\n", 150 qmeas.Name, qmeas.Name, qmeas.Name) 151 } else { 152 fmt.Fprintf(fo, "%s_ce c c %s_G m f %s_Th t f %s_Tc t f\n", 153 qmeas.Name, qmeas.Name, qmeas.Name, qmeas.Name) 154 fmt.Fprintf(fo, "%s_Qt q f\n", qmeas.Name) 155 } 156 default: 157 if qmeas.Plistxc != nil && qmeas.Plistxh != nil { 158 fmt.Fprintf(fo, "%c %6.4g %4.1f %4.1f %.3f %.3f ", 159 el.Control, *qmeas.G, *qmeas.Th, *qmeas.Tc, *qmeas.Xh, *qmeas.Xc) 160 fmt.Fprintf(fo, "%.0f %.0f %.0f\n", 161 qmeas.Qs, qmeas.Ql, qmeas.Qt) 162 } else { 163 fmt.Fprintf(fo, "%c %6.4g %4.1f %4.1f ", 164 el.Control, *qmeas.G, *qmeas.Th, *qmeas.Tc) 165 fmt.Fprintf(fo, "%.0f\n", qmeas.Qt) 166 } 167 } 168 } 169 } 170 171 func Qmeasdyint(Qmeas []*QMEAS) { 172 for _, qmeas := range Qmeas { 173 svdyint(&qmeas.Tcdy) 174 svdyint(&qmeas.Thdy) 175 svdyint(&qmeas.xcdy) 176 svdyint(&qmeas.xhdy) 177 178 qdyint(&qmeas.Qdys) 179 qdyint(&qmeas.Qdyl) 180 qdyint(&qmeas.Qdyt) 181 } 182 } 183 184 func Qmeasmonint(Qmeas []*QMEAS) { 185 for _, qmeas := range Qmeas { 186 svdyint(&qmeas.mTcdy) 187 svdyint(&qmeas.mThdy) 188 svdyint(&qmeas.mxcdy) 189 svdyint(&qmeas.mxhdy) 190 191 qdyint(&qmeas.mQdys) 192 qdyint(&qmeas.mQdyl) 193 qdyint(&qmeas.mQdyt) 194 } 195 } 196 197 func Qmeasday(Mon, Day, ttmm int, Qmeas []*QMEAS, Nday, SimDayend int) { 198 for _, qmeas := range Qmeas { 199 // 日次集計 200 svdaysum(int64(ttmm), qmeas.PlistG.Control, *qmeas.Th, &qmeas.Thdy) // 温度 201 svdaysum(int64(ttmm), qmeas.PlistG.Control, *qmeas.Tc, &qmeas.Tcdy) // 温度 202 203 if qmeas.Xh != nil { 204 svdaysum(int64(ttmm), qmeas.PlistG.Control, *qmeas.Xh, &qmeas.xhdy) // 出口湿度 205 } 206 207 if qmeas.Xc != nil { 208 svdaysum(int64(ttmm), qmeas.PlistG.Control, *qmeas.Xc, &qmeas.xcdy) // 入口湿度 209 } 210 211 qdaysum(int64(ttmm), qmeas.PlistG.Control, qmeas.Qs, &qmeas.Qdys) // 流量 212 qdaysum(int64(ttmm), qmeas.PlistG.Control, qmeas.Ql, &qmeas.Qdyl) // 湿度流量 213 qdaysum(int64(ttmm), qmeas.PlistG.Control, qmeas.Qt, &qmeas.Qdyt) // 総熱量 214 215 // 月次集計 216 svmonsum(Mon, Day, ttmm, qmeas.PlistG.Control, *qmeas.Th, &qmeas.mThdy, Nday, SimDayend) // 温度 217 svmonsum(Mon, Day, ttmm, qmeas.PlistG.Control, *qmeas.Tc, &qmeas.mTcdy, Nday, SimDayend) // 温度 218 219 if qmeas.Xh != nil { 220 svmonsum(Mon, Day, ttmm, qmeas.PlistG.Control, *qmeas.Xh, &qmeas.mxhdy, Nday, SimDayend) // 出口湿度 221 } 222 223 if qmeas.Xc != nil { 224 svmonsum(Mon, Day, ttmm, qmeas.PlistG.Control, *qmeas.Xc, &qmeas.mxcdy, Nday, SimDayend) // 入口湿度 225 } 226 227 qmonsum(Mon, Day, ttmm, qmeas.PlistG.Control, qmeas.Qs, &qmeas.mQdys, Nday, SimDayend) // 流量 228 qmonsum(Mon, Day, ttmm, qmeas.PlistG.Control, qmeas.Ql, &qmeas.mQdyl, Nday, SimDayend) // 湿度流量 229 qmonsum(Mon, Day, ttmm, qmeas.PlistG.Control, qmeas.Qt, &qmeas.mQdyt, Nday, SimDayend) // 総熱量 230 } 231 } 232 233 func Qmeasdyprt(fo io.Writer, id int, Qmeas []*QMEAS) { 234 for _, qmeas := range Qmeas { 235 switch id { 236 case 0: 237 if len(Qmeas) > 0 { 238 fmt.Fprintf(fo, "%s %d\n", QMEAS_TYPE, len(Qmeas)) 239 } 240 if qmeas.Plistxc != nil && qmeas.Plistxh != nil { 241 fmt.Fprintf(fo, " %s 1 24\n", qmeas.Name) 242 } else { 243 fmt.Fprintf(fo, " %s 1 8\n", qmeas.Name) 244 } 245 case 1: 246 if qmeas.Plistxc != nil && qmeas.Plistxh != nil { 247 fmt.Fprintf(fo, "%s_Hhs H d %s_Qsh Q f %s_Hcs H d %s_Qsc Q f\n", 248 qmeas.Name, qmeas.Name, qmeas.Name, qmeas.Name) 249 fmt.Fprintf(fo, "%s_ths h d %s_qsh q f %s_tcs h d %s_qsc q f\n", 250 qmeas.Name, qmeas.Name, qmeas.Name, qmeas.Name) 251 fmt.Fprintf(fo, "%s_Hhl H d %s_Qlh Q f %s_Hcl H d %s_Qlc Q f\n", 252 qmeas.Name, qmeas.Name, qmeas.Name, qmeas.Name) 253 fmt.Fprintf(fo, "%s_thl h d %s_qlh q f %s_tcl h d %s_qlc q f\n", 254 qmeas.Name, qmeas.Name, qmeas.Name, qmeas.Name) 255 } 256 fmt.Fprintf(fo, "%s_Hht H d %s_Qth Q f %s_Hct H d %s_Qtc Q f\n", 257 qmeas.Name, qmeas.Name, qmeas.Name, qmeas.Name) 258 fmt.Fprintf(fo, "%s_tht h d %s_qth q f %s_tct h d %s_qtc q f\n\n", 259 qmeas.Name, qmeas.Name, qmeas.Name, qmeas.Name) 260 default: 261 if qmeas.Plistxc != nil && qmeas.Plistxh != nil { 262 fmt.Fprintf(fo, "%1d %3.1f ", qmeas.Qdys.Hhr, qmeas.Qdys.H) 263 fmt.Fprintf(fo, "%1d %3.1f ", qmeas.Qdys.Chr, qmeas.Qdys.C) 264 fmt.Fprintf(fo, "%1d %2.0f ", qmeas.Qdys.Hmxtime, qmeas.Qdys.Hmx) 265 fmt.Fprintf(fo, "%1d %2.0f\n", qmeas.Qdys.Cmxtime, qmeas.Qdys.Cmx) 266 267 fmt.Fprintf(fo, "%1d %3.1f ", qmeas.Qdyl.Hhr, qmeas.Qdyl.H) 268 fmt.Fprintf(fo, "%1d %3.1f ", qmeas.Qdyl.Chr, qmeas.Qdyl.C) 269 fmt.Fprintf(fo, "%1d %2.0f ", qmeas.Qdyl.Hmxtime, qmeas.Qdyl.Hmx) 270 fmt.Fprintf(fo, "%1d %2.0f\n", qmeas.Qdyl.Cmxtime, qmeas.Qdyl.Cmx) 271 } 272 273 fmt.Fprintf(fo, "%1d %3.1f ", qmeas.Qdyt.Hhr, qmeas.Qdyt.H) 274 fmt.Fprintf(fo, "%1d %3.1f ", qmeas.Qdyt.Chr, qmeas.Qdyt.C) 275 fmt.Fprintf(fo, "%1d %2.0f ", qmeas.Qdyt.Hmxtime, qmeas.Qdyt.Hmx) 276 fmt.Fprintf(fo, "%1d %2.0f\n", qmeas.Qdyt.Cmxtime, qmeas.Qdyt.Cmx) 277 } 278 } 279 } 280 281 func Qmeasmonprt(fo io.Writer, id int, Qmeas []*QMEAS) { 282 for _, qmeas := range Qmeas { 283 switch id { 284 case 0: 285 if len(Qmeas) > 0 { 286 fmt.Fprintf(fo, "%s %d\n", QMEAS_TYPE, len(Qmeas)) 287 } 288 if qmeas.Plistxc != nil && qmeas.Plistxh != nil { 289 fmt.Fprintf(fo, " %s 1 24\n", qmeas.Name) 290 } else { 291 fmt.Fprintf(fo, " %s 1 8\n", qmeas.Name) 292 } 293 case 1: 294 if qmeas.Plistxc != nil && qmeas.Plistxh != nil { 295 fmt.Fprintf(fo, "%s_Hhs H d %s_Qsh Q f %s_Hcs H d %s_Qsc Q f\n", 296 qmeas.Name, qmeas.Name, qmeas.Name, qmeas.Name) 297 fmt.Fprintf(fo, "%s_ths h d %s_qsh q f %s_tcs h d %s_qsc q f\n", 298 qmeas.Name, qmeas.Name, qmeas.Name, qmeas.Name) 299 fmt.Fprintf(fo, "%s_Hhl H d %s_Qlh Q f %s_Hcl H d %s_Qlc Q f\n", 300 qmeas.Name, qmeas.Name, qmeas.Name, qmeas.Name) 301 fmt.Fprintf(fo, "%s_thl h d %s_qlh q f %s_tcl h d %s_qlc q f\n", 302 qmeas.Name, qmeas.Name, qmeas.Name, qmeas.Name) 303 } 304 fmt.Fprintf(fo, "%s_Hht H d %s_Qth Q f %s_Hct H d %s_Qtc Q f\n", 305 qmeas.Name, qmeas.Name, qmeas.Name, qmeas.Name) 306 fmt.Fprintf(fo, "%s_tht h d %s_qth q f %s_tct h d %s_qtc q f\n\n", 307 qmeas.Name, qmeas.Name, qmeas.Name, qmeas.Name) 308 default: 309 if qmeas.Plistxc != nil && qmeas.Plistxh != nil { 310 fmt.Fprintf(fo, "%1d %3.1f ", qmeas.mQdys.Hhr, qmeas.mQdys.H) 311 fmt.Fprintf(fo, "%1d %3.1f ", qmeas.mQdys.Chr, qmeas.mQdys.C) 312 fmt.Fprintf(fo, "%1d %2.0f ", qmeas.mQdys.Hmxtime, qmeas.mQdys.Hmx) 313 fmt.Fprintf(fo, "%1d %2.0f\n", qmeas.mQdys.Cmxtime, qmeas.mQdys.Cmx) 314 315 fmt.Fprintf(fo, "%1d %3.1f ", qmeas.mQdyl.Hhr, qmeas.mQdyl.H) 316 fmt.Fprintf(fo, "%1d %3.1f ", qmeas.mQdyl.Chr, qmeas.mQdyl.C) 317 fmt.Fprintf(fo, "%1d %2.0f ", qmeas.mQdyl.Hmxtime, qmeas.mQdyl.Hmx) 318 fmt.Fprintf(fo, "%1d %2.0f\n", qmeas.mQdyl.Cmxtime, qmeas.mQdyl.Cmx) 319 } 320 321 fmt.Fprintf(fo, "%1d %3.1f ", qmeas.mQdyt.Hhr, qmeas.mQdyt.H) 322 fmt.Fprintf(fo, "%1d %3.1f ", qmeas.mQdyt.Chr, qmeas.mQdyt.C) 323 fmt.Fprintf(fo, "%1d %2.0f ", qmeas.mQdyt.Hmxtime, qmeas.mQdyt.Hmx) 324 fmt.Fprintf(fo, "%1d %2.0f\n", qmeas.mQdyt.Cmxtime, qmeas.mQdyt.Cmx) 325 } 326 } 327 }