github.com/archlabjp/eeslism-go@v0.0.0-20231109122333-4bb7bfcdf292/eeslism/eeprint_s.go (about) 1 package eeslism 2 3 import ( 4 "fmt" 5 ) 6 7 /* ---------------------------------------------------------------- */ 8 /* 毎時計算値出力 */ 9 10 func Eeprinth(Daytm *DAYTM, Simc *SIMCONTL, flout []*FLOUT, Rmvls *RMVLS, Exsfst *EXSFS, Mpath []*MPATH, Eqsys *EQSYS, Wd *WDAT) { 11 if Daytm.Ddpri != 0 && Simc.Dayprn[Daytm.DayOfYear] != 0 { 12 title := Simc.Title 13 Mon := Daytm.Mon 14 Day := Daytm.Day 15 time := Daytm.Time 16 17 for i, flo := range flout { 18 19 if DEBUG { 20 fmt.Printf("Eeprinth MAX=%d flo[%d]=%s\n", len(flout), i, flo.Idn) 21 } 22 23 switch flo.Idn { 24 case PRTHWD: 25 if DEBUG { 26 fmt.Println("<Eeprinth> xprsolrd") 27 } 28 // 気象データの出力 29 Wdtprint(flo.F, title, Mon, Day, time, Wd, Exsfst) 30 case PRTCOMP: // 毎時機器の出力 31 Hcmpprint(flo.F, string(PRTCOMP), Simc, Mon, Day, time, Eqsys, Rmvls.Rdpnl) 32 case PRTPATH: // システム経路の温湿度出力 33 Pathprint(flo.F, title, Mon, Day, time, Mpath) 34 case PRTHRSTANK: // 蓄熱槽内温度分布の出力 35 Hstkprint(flo.F, title, Mon, Day, time, Eqsys) 36 default: 37 if SIMUL_BUILDG { // these blocks are only compiled in debug builds 38 switch flo.Idn { 39 case PRTREV: 40 // 毎時室温、MRTの出力 41 Rmevprint(flo.F, title, Rmvls.Room, Mon, Day, time) 42 case PRTHROOM: 43 // 放射パネルの出力 44 Rmpnlprint(flo.F, string(PRTHROOM), Simc, Mon, Day, time, Rmvls.Room) 45 case PRTHELM: 46 // 要素別熱損失・熱取得 47 Helmprint(flo.F, string(PRTHELM), Simc, Mon, Day, time, Rmvls.Room, &Rmvls.Qetotal) 48 case PRTHELMSF: 49 // 要素別熱損失・熱取得 50 Helmsurfprint(flo.F, string(PRTHELMSF), Simc, Mon, Day, time, Rmvls.Room) 51 case PRTPMV: 52 // PMV計算 53 Pmvprint(flo.F, title, Rmvls.Room, Mon, Day, time) 54 case PRTQRM: 55 // 日射、室内熱取得の出力 56 Qrmprint(flo.F, title, Mon, Day, time, Rmvls.Room, Rmvls.Qrm) 57 case PRTRSF: 58 // 室内表面温度の出力 59 Rmsfprint(flo.F, title, Mon, Day, time, Rmvls.Room, Rmvls.Sd) 60 case PRTSHD: 61 // 日よけの影面積の出力 62 Shdprint(flo.F, title, Mon, Day, time, Rmvls.Sd) 63 case PRTWAL: 64 // 壁体内部温度の出力 65 Wallprint(flo.F, title, Mon, Day, time, Rmvls.Sd) 66 case PRTPCM: 67 // 潜熱蓄熱材の状態値の出力 68 PCMprint(flo.F, title, Mon, Day, time, Rmvls.Sd) 69 case PRTSFQ: 70 // 室内表面熱流の出力 71 Rmsfqprint(flo.F, title, Mon, Day, time, Rmvls.Room, Rmvls.Sd) 72 case PRTSFA: 73 // 室内表面熱伝達率の出力 74 Rmsfaprint(flo.F, title, Mon, Day, time, Rmvls.Room, Rmvls.Sd) 75 } 76 } 77 } 78 } 79 } 80 } 81 82 /* ----------------------------------------------------------- */ 83 /* 日集計値出力 */ 84 85 var __Eeprintd_ic int 86 87 func Eeprintd(Daytm *DAYTM, Simc *SIMCONTL, flout []*FLOUT, Rmvls *RMVLS, Exs []*EXSF, Soldy []float64, Eqsys *EQSYS, Wdd *WDAT) { 88 if Daytm.Ddpri != 0 { 89 title := Simc.Title 90 Mon := int(Daytm.Mon) 91 Day := int(Daytm.Day) 92 93 for _, flo := range flout { 94 switch flo.Idn { 95 case PRTDWD: 96 // 気象データ日集計値出力 97 Wdtdprint(flo.F, title, Mon, Day, Wdd, Exs, Soldy) 98 case PRTWK: 99 // 計算年月日出力 100 if __Eeprintd_ic == 0 { 101 fmt.Fprintf(flo.F, "Mo Nd Day Week\n") 102 __Eeprintd_ic = 1 103 } 104 105 fmt.Fprintf(flo.F, "%2d %2d %3d %s\n", Mon, Day, Daytm.DayOfYear, DAYweek[Simc.Daywk[Daytm.DayOfYear]]) 106 case PRTDYCOMP: 107 // システム要素機器の日集計結果出力 108 Compodyprt(flo.F, string(PRTDYCOMP), Simc, Mon, Day, Eqsys, Rmvls.Rdpnl) 109 case PRTDYRM: 110 // 部屋ごとの熱集計結果出力 111 Rmdyprint(flo.F, string(PRTDYRM), Simc, Mon, Day, Rmvls.Room) 112 case PRTDYHELM: 113 // 要素別熱損失・熱取得(日積算値出力) 114 Helmdyprint(flo.F, string(PRTDYHELM), Simc, Mon, Day, Rmvls.Room, &Rmvls.Qetotal) 115 case PRTDQR: 116 // 日射、室内熱取得の出力 117 Dyqrmprint(flo.F, title, Mon, Day, Rmvls.Room, Rmvls.Trdav, Rmvls.Qrmd) 118 case PRTDYSF: 119 // 日積算壁体貫流熱取得の出力 120 Dysfprint(flo.F, title, Mon, Day, Rmvls.Room) 121 } 122 } 123 } 124 } 125 126 /* ----------------------------------------------------------- */ 127 /* 月集計値出力 */ 128 129 func Eeprintm(daytm *DAYTM, simc *SIMCONTL, flout []*FLOUT, rmvls *RMVLS, exs []*EXSF, solmon []float64, eqsys *EQSYS, wdm *WDAT) { 130 var title string 131 var mon, day int 132 title = simc.Title 133 mon = daytm.Mon 134 day = daytm.Day 135 if daytm.Ddpri != 0 { 136 for _, flo := range flout { 137 switch flo.Idn { 138 case PRTMWD: 139 // 気象データ月集計値出力 140 Wdtmprint(flo.F, title, mon, day, wdm, exs, solmon) 141 case PRTMNCOMP: 142 // システム要素機器の月集計結果出力 143 Compomonprt(flo.F, string(PRTMNCOMP), simc, mon, day, eqsys, rmvls.Rdpnl) 144 case PRTMNRM: 145 // 部屋ごとの熱集計結果出力 146 Rmmonprint(flo.F, string(PRTMNRM), simc, mon, day, rmvls.Room) 147 } 148 } 149 } 150 } 151 152 /* ----------------------------------------------------------- */ 153 /* 月-時刻集計値出力 */ 154 155 func Eeprintmt(simc *SIMCONTL, flout []*FLOUT, eqsys *EQSYS, rdpnl []*RDPNL) { 156 for _, flo := range flout { 157 if flo.Idn == PRTMTCOMP { 158 Compomtprt(flo.F, string(PRTMNCOMP), simc, eqsys, rdpnl) 159 } 160 } 161 }