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  }