github.com/archlabjp/eeslism-go@v0.0.0-20231109122333-4bb7bfcdf292/eeslism/build.go (about)

     1  package eeslism
     2  
     3  import (
     4  	"io"
     5  )
     6  
     7  // 壁体の材料定義
     8  // wbmlist.efl から読み取った材料定義リストの要素
     9  type BMLST struct {
    10  	Mcode string  // 材料名
    11  	Cond  float64 // 熱伝導率 [W/mK]
    12  	Cro   float64 // 容積比熱 [kJ/m3K]
    13  }
    14  
    15  type PVWALLCAT struct {
    16  	// PVcap float64 // 太陽電池容量[W]
    17  	KHD     float64 // 日射量年変動補正係数(安全率) [-]
    18  	KPD     float64 // 経時変化補正係数[-]
    19  	KPM     float64 // アレイ負荷整合補正係数[-]
    20  	KPA     float64 // アレイ回路補正係数[-]
    21  	KConst  float64 // 温度補正係数以外の補正係数の積(温度補正係数以外は時々刻々変化しない)
    22  	EffINO  float64 // インバータ実行効率[-]
    23  	Apmax   float64 // 最大出力温度係数[-]
    24  	Ap      float64 // 太陽電池裏面の熱伝達率[W/m2K]
    25  	Type    byte    // 結晶系:'C' アモルファス系:'A'
    26  	Rcoloff float64 // 集熱ファン停止時の太陽電池から集熱器裏面までの熱抵抗[m2K/W]
    27  	Kcoloff float64
    28  }
    29  
    30  type PVWALL struct {
    31  	KTotal float64 // 太陽電池の総合設計係数[-]
    32  	KPT    float64 // 温度補正係数[-]
    33  	TPV    float64 // 太陽電池温度[℃]
    34  	Power  float64 // 発電量[W]
    35  	Eff    float64 // 発電効率[-]
    36  	PVcap  float64 // 太陽電池設置容量[W]
    37  }
    38  
    39  type PCMSTATE struct {
    40  	Name         *string // name
    41  	TempPCMNodeL float64 // PCM温度(左側節点)
    42  	TempPCMNodeR float64 // 同(右)
    43  	TempPCMave   float64 // PCM温度(平均温度)
    44  	//capm       float64 // PCM比熱[J/kgK]
    45  	//lamda      float64 // PCM熱伝導率[W/mK]
    46  	CapmL     float64 // PCM見かけの比熱(左側)[J/kgK]
    47  	CapmR     float64 // PCM見かけの比熱(右側)[J/kgK]
    48  	LamdaL    float64 // PCM熱伝導率(左側)[W/mK]
    49  	LamdaR    float64 // PCM熱伝導率(右側)[W/mK]
    50  	OldCapmL  float64 // 前時刻PCM見かけの比熱(左側)
    51  	OldCapmR  float64 // 前時刻PCM見かけの比熱(右側)
    52  	OldLamdaL float64 // 前時刻PCM熱伝導率(左側)
    53  	OldLamdaR float64 // 前時刻PCM熱伝導率(右側)
    54  }
    55  
    56  type RMSRFType rune
    57  
    58  const (
    59  	RMSRFType_None RMSRFType = 0
    60  	RMSRFType_H    RMSRFType = 'H' // 壁
    61  	RMSRFType_E    RMSRFType = 'E' // 地中壁
    62  	RMSRFType_W    RMSRFType = 'W' // 窓
    63  	RMSRFType_e    RMSRFType = 'e' // 地表面境界
    64  )
    65  
    66  type RMSRFMwType rune
    67  
    68  const (
    69  	RMSRFMwType_None RMSRFMwType = 0
    70  	RMSRFMwType_I    RMSRFMwType = 'I' // 専用壁
    71  	RMSRFMwType_C    RMSRFMwType = 'C' // 共同壁
    72  )
    73  
    74  type RMSRFMwSideType rune
    75  
    76  const (
    77  	RMSRFMwSideType_None RMSRFMwSideType = 0
    78  	RMSRFMwSideType_i    RMSRFMwSideType = 'i' // 壁体0側
    79  	RMSRFMwSideType_M    RMSRFMwSideType = 'M' // 壁体M側
    80  )
    81  
    82  // 壁体 固定デ-タ
    83  type RMSRF struct {
    84  	Name  string // 壁体名
    85  	Sname string //RMP名 higuchi 070918
    86  
    87  	// ---- 出力指定 ---- //
    88  
    89  	wlpri  bool // 壁体内部温度出力指定 (ROOM *p)
    90  	shdpri bool // 日よけの影面積の出力指定 (ROOM *shd)
    91  	sfepri bool // 要素別壁体表面温度出力指定 (ROOM *sfe)
    92  
    93  	// 部位コ-ド
    94  	// 'B' | 'W' | 'E'(外壁) | 'R'(屋根)  | 'F'床(外気、地中に接する) |
    95  	// 'i'(内壁) | 'f'(床(隣室に接する)) | 'c'(天井)  |'d'
    96  	ble      BLEType
    97  	typ      RMSRFType       // 壁のとき'H', 地中壁のとき'E', 窓のとき'W', 地表面境界の時'e'
    98  	mwtype   RMSRFMwType     // 専用壁のとき'I',共用壁のとき'C'
    99  	mwside   RMSRFMwSideType // 壁体 0 側のとき'i', M 側のとき'M'
   100  	mrk      rune            // '*' or '!'
   101  	ffix_flg rune            // 表面への短波長放射基本吸収比率が定義されている場合'*' 未定義の場合'!'
   102  	PCMflg   bool            // PCMの有無の判定フラグ 毎時係数行列を計算するかどうかを決める
   103  	pcmpri   bool            // PCMの状態値出力フラグ
   104  	fnmrk    [10]rune        // 窓変更設定用窓コ-ド
   105  
   106  	room     *ROOM
   107  	nextroom *ROOM
   108  	nxsd     *RMSRF
   109  
   110  	mw         *MWALL  // 重量壁(差分による非定常計算)
   111  	rpnl       *RDPNL  // 輻射パネル用
   112  	window     *WINDOW // 窓
   113  	dynamicwin int     // 動的に窓を切り替える場合'Y'
   114  	ifwin      *WINDOW // Trueの時の窓
   115  	//falsewin *WINDOW	// Falseの時の窓
   116  	Ctlif       *CTLIF // 動的窓の制御
   117  	DynamicCode string // 動的窓 ex) "A > B" のような評価式
   118  
   119  	rm       int    // 室番号
   120  	n        int    // 室壁体番号
   121  	exs      int    // 方位番号
   122  	nxrmname string //隣室名
   123  	nxrm     int    // 隣室番号
   124  	nxn      int    // 隣室室壁体番号
   125  	wd       int    // 壁体定義番号
   126  	rmw      int    // 重量壁体番号
   127  	lwd      int
   128  	dr       int // ドア定義番号
   129  	//		drd [4]int
   130  	fn               int     // 選択窓定義番号
   131  	Nfn              int     // 窓種類数
   132  	fnd              [10]int // 窓定義番号
   133  	direct_heat_gain [10]int // 日射熱取得、窓部材熱抵抗を直接指定する場合の番号
   134  	fnsw             int     // 窓変更設定番号
   135  
   136  	sb int // 日除け定義番号
   137  
   138  	A    float64 // 面積 [m2]
   139  	Eo   float64 // 外表面輻射率 [-]
   140  	as   float64 // 外表面日射吸収率 [-]
   141  	c    float64 // 隣室温度係数 [-]
   142  	tgtn float64 // 日射総合透過率 [-]
   143  	Bn   float64 // 吸収日射取得率 [-]
   144  
   145  	// ---- 壁体、窓熱抵抗 ----
   146  
   147  	fsol *float64 // 部位室内表面の日射吸収比率 [-]
   148  
   149  	/*窓透過日射の吸収比率     */
   150  	srg     float64 // 1次入射比率(隣接室への透過やガラスから屋外への放熱は無視)
   151  	srg2    float64 // 最終的に室の日射熱取得の内の吸収比率
   152  	srh     float64 // 人体よりの輻射の吸収比率
   153  	srl     float64 // 照明よりの輻射の吸収比率
   154  	sra     float64 // 機器よりの輻射の吸収比率
   155  	alo     float64 // 外表面熱伝達率 [W/m2K]
   156  	ali     float64 // 内表面熱伝達率 [W/m2K]
   157  	alic    float64
   158  	alir    float64
   159  	Qc      float64 // 対流による熱取得 [W]
   160  	Qr      float64 // 放射による熱取得 [W]
   161  	Qi      float64 // 壁体貫流熱取得 [W]
   162  	Qgt     float64 // 透過日射熱取得 [W]
   163  	Qga     float64 // 吸収日射熱取得 [W]
   164  	Qrn     float64 // 夜間放射熱取得 [W]
   165  	K       float64 // 熱伝達率 [W/m2K] K = 1/(1/alo + Rwall + 1/ali)
   166  	Rwall   float64 // 熱抵抗 [m2K/W] 表面熱伝達抵抗(1/alo+1/ali)は除く
   167  	CAPwall float64 // 単位面積当たり熱容量[J/m2K]
   168  	alicsch *float64
   169  	alirsch *float64
   170  	FI      float64
   171  	FO      float64
   172  	FP      float64
   173  	CF      float64
   174  	WSR     float64
   175  	WSRN    []float64
   176  	WSPL    []float64
   177  	WSC     float64
   178  	Fsdworg float64 // SUNBRKで定義した日よけの影面積率
   179  	Fsdw    float64 /* 影面積  higuchi 070918 */ // KAGE-SUN用
   180  	Ihor    float64 /*higuchi 070918 */
   181  	Idre    float64 /*higuchi 070918 */
   182  	Idf     float64 /*higuchi 070918 */
   183  	Iw      float64 /*higuchi 070918 */
   184  	rn      float64 /*higuchi 070918 */
   185  
   186  	// ---- 室内表面に吸収される日射と内部発熱 ----
   187  
   188  	RS     float64 // 室内表面に吸収される短波長輻射 [W/m2]
   189  	RSsol  float64 // 室内表面に吸収される日射(短波長)[W/m2]
   190  	RSsold float64 // 室内表面に入射する日射(短波長)(隣接室への透過を考慮する前)
   191  	RSli   float64 // 室内表面に吸収される照明(短波長)[W/m2]
   192  	RSin   float64 // 室内表面に吸収される人体・照明・設備・設備機器(短波長) [W/m2]
   193  
   194  	TeEsol float64
   195  	TeErn  float64
   196  	Te     float64 // 外表面の相当外気温 [C]
   197  	Tmrt   float64 // 室内表面の平均輻射温度 [C]
   198  	Ei     float64
   199  	Ts     float64 // 室内表面の温度 ????
   200  
   201  	/*設備機器発熱*/
   202  	eqrd float64
   203  	end  int
   204  	//ColTe  float64		// 建材一体型空気集熱器の相当外気温度[℃]
   205  	Tcole          float64 // 建材一体型空気集熱器の相当外気温度[℃] 記号変更
   206  	Tcoleu, Tcoled float64
   207  	Tf             float64 // 建材一体型空気集熱器の熱媒平均温度[℃]
   208  	SQi            QDAY    // 日積算壁体貫流熱取得
   209  	Tsdy           SVDAY
   210  	PVwall         PVWALL // 太陽電池一体型壁体
   211  	mSQi           QDAY
   212  	mTsdy          SVDAY
   213  
   214  	// ---- 集熱器一体型壁体用計算結果 ----
   215  
   216  	Ndiv     int //  空気式集熱器のときの流れ方向(入口から出口)の分割数
   217  	ColCoeff float64
   218  	// 建材一体型集熱器計算時の後退差分要素URM
   219  	Tc []float64
   220  	//Scol float64 // 放射熱取得量[W/m2]
   221  	oldTx float64 // 前時刻の集熱器と躯体の境界温度(集熱器相当外気温度計算用)
   222  	// 太陽電池一体型
   223  	Iwall                                                 float64
   224  	PVwallFlg                                             bool    // 太陽電池一体型の場合はtrue
   225  	dblWsu                                                float64 // <入力値> 屋根一体型空気集熱器(集熱屋根)の通気層上側の幅 [m]
   226  	dblWsd                                                float64 // <入力値> 屋根一体型空気集熱器(集熱屋根)の通気層下側の幅 [m]
   227  	dblKsu, dblKsd, dblKc, dblfcu, dblfcd, dblKcu, dblKcd float64
   228  	dblb11, dblb12, dblb21, dblb22                        float64
   229  	dblacr, dblacc, dblao                                 float64
   230  	dblTsu, dblTsd, dblTf                                 float64
   231  	dblSG                                                 float64
   232  	ku, kd                                                float64
   233  	ras, Tg                                               float64
   234  
   235  	pcmstate []*PCMSTATE // PCM状態値収録構造体
   236  	Npcm     int         // PCM設置レイヤー数
   237  
   238  	tnxt    float64 // 当該部位への入射日射の隣接空間への日射分配(連続空間の隣室への日射分配)
   239  	RStrans bool    // 室内透過日射が窓室内側への入射日射を屋外に透過する場合はtrue
   240  }
   241  
   242  // 壁体各層の熱抵抗と熱容量
   243  type WELM struct {
   244  	Code string  // <入力値> 材料コード
   245  	L    float64 // <入力値> 各層の材料厚さ[m](分割前)
   246  	ND   int     // <入力値> 各層の内部分割数
   247  	Cond float64 // <材料定義リストから読み取り> 熱伝導率  [W/mK]
   248  	Cro  float64 // <材料定義リストから読み取り> 容積比熱  [J/m3K]
   249  }
   250  
   251  func NewWelm() *WELM {
   252  	return &WELM{
   253  		Code: "",
   254  		L:    -999.0,
   255  		ND:   0,
   256  		Cond: -999.0,
   257  		Cro:  -999.0,
   258  	}
   259  }
   260  
   261  type CHARTABLE struct {
   262  	filename             string        // テーブル形式ファイルのファイル名
   263  	fp                   io.ReadCloser // `filename`の読み込みファイルポインタ
   264  	PCMchar              rune          // E:エンタルピー、C:熱伝導率
   265  	T                    []float64     // PCM温度[℃]
   266  	Chara                []float64     // 特性値(エンタルピー、熱伝導率)
   267  	tabletype            rune          // h:見かけの比熱、e:エンタルピー
   268  	minTemp, maxTemp     float64       // テーブルの下限温度、上限温度
   269  	itablerow            int           // テーブル形式の入力行数
   270  	lowA, lowB, upA, upB float64       // 上下限温度範囲外の特性値計算用線形回帰式の傾きと切片
   271  	minTempChng          float64       // 最低温度変動幅 前時刻からの温度変化がminTempChng以下の場合はminTempChngとして特性値を計算
   272  }
   273  
   274  // 潜熱蓄熱材
   275  type PCM struct {
   276  	Name         string       // PCM名称
   277  	Spctype      rune         // 見かけの比熱 m:モデルで設定、t:テーブル形式
   278  	Condtype     rune         // 熱伝導率 m:モデルで設定、t:テーブル形式
   279  	Ql           float64      // 潜熱量[J/m3]
   280  	Condl        float64      // 液相の熱伝導率[W/mK]
   281  	Conds        float64      // 固相の熱伝導率[W/mK]
   282  	Crol         float64      // 液相の容積比熱[J/m3K]
   283  	Cros         float64      // 固相の容積比熱[J/m3K]
   284  	Ts           float64      // 固体から融解が始まる温度[℃]
   285  	Tl           float64      // 液体から凝固が始まる温度[℃]
   286  	Tp           float64      // 見かけの比熱のピーク温度
   287  	Iterate      bool         // PCM状態値を収束計算させるかどうか
   288  	IterateTemp  bool         // 収束条件に温度も加えるかどうか(通常は比熱のみ)
   289  	DivTemp      int          // 比熱の数値積分時の温度分割数
   290  	Ctype        int          // 比熱
   291  	PCMp         PCMPARAM     // 見かけの比熱計算用パラメータ
   292  	AveTemp      rune         // PCM温度を両側の節点温度の平均で計算する場合は'y'(デフォルト)
   293  	NWeight      float64      // 収束計算時の現在ステップの重み係数
   294  	IterateJudge float64      // 収束計算時の前ステップ見かけの比熱の収束判定[%]
   295  	Chartable    [2]CHARTABLE // 0:見かけの比熱またはエンタルピー、1:熱伝導率
   296  }
   297  
   298  // PCM見かけの比熱計算用パラメータ
   299  type PCMPARAM struct {
   300  	T     float64
   301  	B     float64
   302  	bs    float64
   303  	bl    float64
   304  	skew  float64
   305  	omega float64
   306  	a     float64
   307  	b     float64
   308  	c     float64
   309  	d     float64
   310  	e     float64
   311  	f     float64
   312  }
   313  
   314  type BLEType rune
   315  
   316  const (
   317  	BLE_None         BLEType = 0
   318  	BLE_ExternalWall BLEType = 'E' // 外壁
   319  	BLE_Roof         BLEType = 'R' // 屋根
   320  	BLE_Floor        BLEType = 'F' // 外部に接する床
   321  	BLE_InnerWall    BLEType = 'i' // 内壁
   322  	BLE_Ceil         BLEType = 'c' // 天井(内部)
   323  	BLE_InnerFloor   BLEType = 'f' // 床(内部)
   324  	BLE_d            BLEType = 'd'
   325  	BLE_Window       BLEType = 'W' // 窓
   326  )
   327  
   328  type WALLType rune
   329  
   330  const (
   331  	WallType_None WALLType = 0
   332  	WallType_C    WALLType = 'C' // 建材一体型空気集熱器
   333  	WallType_P    WALLType = 'P' // 床暖房等放射パネル(通常の床暖房パネル)
   334  	WallType_N    WALLType = 'N' // 一般壁体
   335  )
   336  
   337  // 壁体 定義デ-タ
   338  type WALL struct {
   339  	ble    BLEType // <入力値> 部位コ-ド = E,R,F,i,c,f,R
   340  	name   string  // <入力値> 壁体名 最初の1文字は英字 省略時は既定値とみなす
   341  	PCMflg bool    // 部材構成にPCMが含まれる場合は毎時係数行列を作成するので
   342  	// PCMが含まれるかどうかのフラグ
   343  
   344  	N  int /*材料層数≠節点数        */
   345  	Ip int /*発熱面のある層の番号  */
   346  	//	code [12][5]rune; /*各層の材料コ-ド      */
   347  	L []float64 /*節点間の材料厚さ        */
   348  	//	ND []int;      /*各層の内部分割数      */
   349  	Ei          float64   // <入力値> 室内表面放射率
   350  	Eo          float64   // <入力値> 外表面輻射率
   351  	as          float64   // <入力値> 外表面日射吸収率
   352  	Rwall       float64   // <内部計算値> 壁体熱抵抗(表面熱伝達抵抗(1/alo+1/ali)は除く) [m2K/W]
   353  	CAPwall     float64   // <内部計算値> 単位面積当たりの熱容量[J/m2K]
   354  	CAP, R      []float64 // <入力値> 登録された材料(≠節点)ごとの熱容量、熱抵抗
   355  	effpnl      float64   // <入力値> 放射暖冷房パネルのパネル効率
   356  	tnxt        float64   // <入力値> 当該部位への入射日射の隣接空間への日射分配(連続空間の隣室への日射分配)
   357  	M           int       // 節点数
   358  	mp          int       // <入力値> 放射暖冷房パネルの発熱面のある節点番号
   359  	res         []float64 // 節点間の熱抵抗 [m2K/W]
   360  	cap         []float64 // 節点間の熱容量 [J/m2K]
   361  	welm        []WELM    // <入力値> 層構成(layer)
   362  	tra         float64   // <入力値> τα
   363  	Ko          float64   // <内部計算値> Ksu + Ksd
   364  	Ksu         float64   // <入力値> 通気層上部から屋外までの熱貫流率[W/m2K]
   365  	Ksd         float64   // <入力値> 通気層下部から集熱器裏面までの熱貫流率[W/m2K]
   366  	fcu         float64   // <入力値> Kcu / Ksu
   367  	fcd         float64   // <入力値> Kcd / Ksd
   368  	ku          float64   // <内部計算値> Kcu / Kc
   369  	kd          float64   // <内部計算値> Ksu / Ko
   370  	Ru          float64   // <入力値> 通気層上部から屋外までの熱抵抗 [m2K/W]
   371  	Rd          float64   // <入力値> 通気層下部から集熱器裏面までの熱抵抗 [m2K/W]
   372  	Kc          float64   // <入力値> Kcu + Kcd
   373  	Kcu         float64   // <入力値> 通気層内上側から屋外までの熱貫流率 [W/m2K]
   374  	Kcd         float64   // <入力値> 通気層内下側から裏面までの熱貫流率 [W/m2K]
   375  	air_layer_t float64
   376  	dblEsu      float64 // 通気層の厚さ[m]
   377  	dblEsd      float64 // 通気層の厚さ[m]
   378  	ta          float64 // <入力値> 中空層の厚さ [mm]
   379  	Eg          float64 // <入力値> 透過体の中空層側表面の放射率
   380  	Eb          float64 // <入力値> 集熱版の中空層側表面の放射率
   381  	ag          float64 // <入力値> 透過体の日射吸収率
   382  
   383  	chrRinput bool     // 熱抵抗が入力されている場合は'Y', 熱貫流率が入力されている場合は'N'
   384  	WallType  WALLType // <内部判定値> 建材一体型空気集熱器の場合:'C', 床暖房等放射パネルの場合:'P', 一般壁体の場合:'N'
   385  
   386  	//char	PVwall ;
   387  	// 太陽電池一体型建材(裏面通気):'Y'
   388  	ColType string // <入力値> 集熱器のタイプ: 'A1'=ガラス付集熱器, 'A2'=ガラス無し集熱器 or 'A2P'=太陽電池一体型集熱器
   389  
   390  	// 集熱器タイプ JSES2009大会論文(宇田川先生発表)のタイプ
   391  	PVwallcat  PVWALLCAT
   392  	PCM        []*PCM
   393  	PCMLyr     []*PCM    // 潜熱蓄熱材
   394  	PCMrate    []float64 // PCM含有率(Vol)
   395  	PCMrateLyr []float64 // PCM体積含有率
   396  }
   397  
   398  func NewWall() *WALL {
   399  	Wa := new(WALL)
   400  
   401  	Wa.name = ""
   402  	Wa.ble = ' '
   403  	Wa.N = 0
   404  	Wa.M = 0
   405  	Wa.mp = 0
   406  	Wa.Ip = -1
   407  	Wa.Ei = 0.9
   408  	Wa.Eo = 0.9
   409  	Wa.as = 0.7
   410  	Wa.Rwall = -999.0
   411  	Wa.effpnl = -999.0
   412  	Wa.CAPwall = -999.
   413  	Wa.res = nil
   414  	Wa.cap = nil
   415  	// Wa.welm = nil ;
   416  	Wa.tra = -999.0
   417  	Wa.Ksu = -999.
   418  	Wa.Ksd = -999.
   419  	Wa.Kc = -999.
   420  	Wa.fcu = -999.
   421  	Wa.fcd = -999.
   422  	Wa.ku = -999.
   423  	Wa.kd = -999.
   424  	Wa.Ko = -999.
   425  	Wa.Rd = -999.
   426  	Wa.Ru = -999.
   427  	Wa.Kcu = -999.
   428  	Wa.Kcd = -999.
   429  	Wa.air_layer_t = -999.0
   430  	Wa.dblEsd = 0.9
   431  	Wa.dblEsu = 0.9
   432  	Wa.chrRinput = false
   433  	Wa.ColType = ""
   434  	Wa.WallType = WallType_N //一般壁体
   435  	//Wa.PVwall = 'N' ;
   436  
   437  	// 太陽電池一体型空気集熱器のパラメータ初期化
   438  	PVwallcatinit(&Wa.PVwallcat)
   439  
   440  	Wa.ta = -999.
   441  	Wa.ag = -999.0
   442  	Wa.Eg = 0.9
   443  	Wa.Eb = 0.9
   444  
   445  	Wa.PCMLyr = nil
   446  	Wa.PCMrateLyr = nil
   447  	Wa.L = nil
   448  
   449  	Wa.PCMflg = false
   450  
   451  	Wa.tnxt = -999.0
   452  
   453  	return Wa
   454  }
   455  
   456  // 壁体定義番号既定値
   457  type DFWL struct {
   458  	E int // 外壁(壁体定義番号既定値)
   459  	R int // 屋根(壁体定義番号既定値)
   460  	F int // 外部に接する床(壁体定義番号既定値)
   461  	i int // 内壁(壁体定義番号既定値)
   462  	c int // 天井(壁体定義番号既定値)
   463  	f int // 隣室に接する床(壁体定義番号既定値)
   464  }
   465  
   466  // 重量壁体デ-タ
   467  type MWALL struct {
   468  	sd   *RMSRF
   469  	nxsd *RMSRF
   470  	wall *WALL
   471  	ns   int       // 壁体通し番号
   472  	rm   int       // 室番号
   473  	n    int       // 室壁体番号
   474  	nxrm int       // 隣室番号
   475  	nxn  int       // 隣室室壁体番号
   476  	UX   []float64 // [UX]の先頭位置
   477  
   478  	M     int
   479  	mp    int
   480  	res   []float64
   481  	cap   []float64
   482  	uo    float64   // 室内表面のuo
   483  	um    float64   // 外表面のum
   484  	Pc    float64   // 床パネル用係数
   485  	Tw    []float64 // 壁体温度
   486  	Told  []float64 // 以前の壁体温度
   487  	Twd   []float64 // 現ステップの壁体内部温度
   488  	Toldd []float64 // PCM温度に関する収束計算過程における前ステップの壁体内温度
   489  }
   490  
   491  // 窓およびドア定義デ-タ
   492  type WINDOW struct {
   493  	Name    string  // 名称
   494  	Cidtype string  // 入射角特性のタイプ。 'N':一般ガラス
   495  	K       float64 // !入力されてる?!
   496  	Rwall   float64 // 窓部材熱抵抗 [m2K/W]
   497  	Ei      float64 // 室内表面放射率(0.9) [-]
   498  	Eo      float64 // 外表面放射率(0.9)(ドアのみ) [-]
   499  	tgtn    float64 // 日射透過率 [-]
   500  	Bn      float64 // 吸収日射取得率 [-]
   501  	As      float64 // 日射吸収率(ドアのみ)[-]
   502  	Ag      float64 // 窓ガラス面積 !入力されてる?!
   503  	Ao      float64 // 開口面積 !入力されてる?!
   504  	W       float64 // 巾 !入力されてる?!
   505  	H       float64 // 高さ !入力されてる?!
   506  	RStrans bool    // 室内透過日射が窓室内側への入射日射を屋外に透過する場合はtrue
   507  }
   508  
   509  func NewWINDOW() *WINDOW {
   510  	W := new(WINDOW)
   511  	W.Name = ""
   512  	W.Cidtype = "N" // 入射角特性のタイプは一般ガラスとする
   513  	W.K = 0.0
   514  	W.Rwall = 0.0
   515  	W.Ei = 0.9 // 室内表面放射率 デフォルト値
   516  	W.Eo = 0.9 // 外表面放射率 デフォルト値
   517  	W.tgtn = 0.0
   518  	W.Bn = 0.0
   519  	W.As = 0.0
   520  	W.Ag = 0.0
   521  	W.Ao = 0.0
   522  	W.W = 0.0
   523  	W.H = 0.0
   524  	W.RStrans = false // 室内透過日射が窓室内側への入射日射を屋外に透過しない
   525  	return W
   526  }
   527  
   528  // 日除け
   529  type SNBK struct {
   530  	Name string  // 名称
   531  	Type int     // 日除けタイプ 1: 一般の庇(H), 2: 袖壁(HL), 5: 長い庇(S), 6: 長い袖壁(SL), 9: 格子ルーバー(K)
   532  	Ksi  int     // 日影部分と日照部分の反転 0: 反転なし, 1: 反転あり
   533  	W    float64 // 開口部の高さ (W=Width)
   534  	H    float64 // 開口部の幅 (H=Height)
   535  	D    float64 // 庇の付け根から先端までの長さ (D=Depth)
   536  	W1   float64 // 開口部の左端から壁の左端までの距離 (L=Left)
   537  	W2   float64 // 開口部の右端から壁の右端までの距離 (R=Right)
   538  	H1   float64 // 開口部の上端から壁の上端までの距離 (T=Top)
   539  	H2   float64 // 地面から開口部の下端までの高さ (B=Bottom)
   540  }
   541  
   542  // 日射、室内発熱熱取得
   543  type QRM struct {
   544  	Tsol float64 // 透過日射 [W]
   545  	Asol float64 // 外表面吸収日射室内熱取得 [W]
   546  	Arn  float64 // 外表面吸収長波長輻射熱損失 [W]
   547  
   548  	// --- 人体・照明・機器の顕熱 [W] ---
   549  
   550  	Hums  float64 // 人体顕熱 [W]
   551  	Light float64 // 照明 [W]
   552  	Apls  float64 // 機器顕熱 [W]
   553  	Hgins float64 //  室内発熱(顕熱)の合計 [W]
   554  
   555  	// --- 人体・機器の潜熱 [W] ---
   556  
   557  	Huml float64 // 人体潜熱 [W]
   558  	Apll float64 // 機器潜熱 [W]
   559  
   560  	// --- 熱負荷 ---
   561  
   562  	Qinfs float64 // 換気顕熱負荷[W]
   563  	Qinfl float64 // 換気潜熱負荷[W]
   564  
   565  	Qsto  float64 // 室内の顕熱蓄熱量[W]
   566  	Qstol float64 // 室内の潜熱蓄熱量[W]
   567  
   568  	Qeqp float64 // 室内設置の配管、ボイラからの熱取得[W]
   569  
   570  	Solo float64 //  外壁面入射日射量[W]
   571  	Solw float64 //  窓面入射日射量[W]
   572  	Asl  float64 // 外表面吸収日射[W]
   573  
   574  	AE float64 // 消費電力[W]
   575  	AG float64 // 消費ガス[W]
   576  }
   577  
   578  // 室間相互換気
   579  type ACHIR struct {
   580  	rm   int
   581  	sch  int
   582  	room *ROOM
   583  	Gvr  float64 // 室間相互換気量
   584  }
   585  
   586  // 隣室
   587  type TRNX struct {
   588  	nextroom *ROOM
   589  	sd       *RMSRF // room側からみたnextroomと接する表面の壁体への参照
   590  }
   591  
   592  // 室についての輻射パネル
   593  type RPANEL struct {
   594  	pnl     *RDPNL
   595  	sd      *RMSRF
   596  	elinpnl int // 放射パネルの入力要素の先頭位置
   597  }
   598  
   599  // 輻射パネル
   600  type RDPNL struct {
   601  	Name    string
   602  	Loadt   *ControlSWType
   603  	Type    rune // 建材一体型空気集熱器の場合:'C', それ以外:'P'
   604  	rm      [2]*ROOM
   605  	sd      [2]*RMSRF
   606  	cmp     *COMPNT
   607  	MC      int // 専用壁のとき MC=1, 共用壁のとき MC=2
   608  	Ntrm    [2]int
   609  	Nrp     [2]int
   610  	elinpnl [2]int
   611  	eprmnx  int // 隣室EPRN[]の位置
   612  	epwtw   int // EPWの当該パネル入口水温の位置
   613  	control rune
   614  
   615  	effpnl float64
   616  	Toset  float64
   617  	Wp     float64
   618  	Wpold  float64
   619  	Tpi    float64
   620  	Tpo    float64
   621  	FIp    [2]float64
   622  	FOp    [2]float64
   623  	FPp    float64
   624  	Epw    float64
   625  	EPt    [2]float64
   626  	EPR    [2][]float64
   627  	EPW    [2][]float64
   628  	EPC    float64
   629  	Q      float64
   630  	// 2009/01/26 Satoh Debug
   631  	cG             float64 // 比熱×流量
   632  	Ec, FI, FO, FP float64
   633  	Ew             float64
   634  
   635  	/* 日集計 */
   636  	Tpody  SVDAY
   637  	Tpidy  SVDAY
   638  	Qdy    QDAY
   639  	Scoldy QDAY
   640  	PVdy   QDAY
   641  	TPVdy  SVDAY
   642  
   643  	// 月集計
   644  	mTpody, mTpidy, mTPVdy SVDAY
   645  	mQdy, mScoldy, mPVdy   QDAY
   646  	mtPVdy                 [12][24]EDAY
   647  
   648  	OMvav *OMVAV // 吹出を制御する変風量ユニット
   649  
   650  }
   651  
   652  // 室への冷温風供給熱量
   653  type AIRSUP struct {
   654  	Qs                  float64
   655  	Ql                  float64
   656  	Qt                  float64
   657  	G                   float64
   658  	Tin                 float64
   659  	Xin                 float64
   660  	Qdys                QDAY // 日積算暖冷房
   661  	Qdyl                QDAY
   662  	Qdyt                QDAY
   663  	mQdys, mQdyl, mQdyt QDAY
   664  }
   665  
   666  // 室負荷
   667  type RMLOAD struct {
   668  	loadt *ControlSWType
   669  	loadx *ControlSWType
   670  	tropt rune /* 室温制御方法  'o': OT制御、'a': 空気温度制御 */
   671  	hmopt rune /* 湿度制御設定値 'x': 絶対湿度、'r': 相対湿度、 'd': 露点温度 */
   672  	Tset  float64
   673  	Xset  float64
   674  	Qs    float64
   675  	Ql    float64
   676  	Qt    float64
   677  
   678  	FOTr float64
   679  	FOTN []float64
   680  	FOPL []float64
   681  	FOC  float64
   682  
   683  	Qdys                QDAY /* 日積算暖冷房 */
   684  	Qdyl                QDAY
   685  	Qdyt                QDAY
   686  	mQdys, mQdyl, mQdyt QDAY
   687  }
   688  
   689  // ゾーン集計
   690  type RZONE struct {
   691  	name   string  // ゾーン名
   692  	Nroom  int     // ゾーンに属する室の数
   693  	rm     []*ROOM //ゾーンに属する室のポインター
   694  	Afloor float64
   695  	Tr     float64
   696  	xr     float64
   697  	RH     float64
   698  	Tsav   float64
   699  	Qhs    float64
   700  	Qhl    float64
   701  	Qht    float64
   702  	Qcs    float64
   703  	Qcl    float64
   704  	Qct    float64
   705  	Trdy   SVDAY
   706  	xrdy   SVDAY
   707  	RHdy   SVDAY
   708  	Tsavdy SVDAY
   709  	Qsdy   QDAY
   710  	Qldy   QDAY
   711  	Qtdy   QDAY
   712  }
   713  
   714  /* ---------------------------------------------------------- */
   715  /* 要素別熱損失・熱取得計算用 */
   716  
   717  type BHELM struct {
   718  	trs float64 // 貫流
   719  	so  float64 // 外壁入射日射
   720  	sg  float64 // 窓入射日射
   721  	rn  float64 // 大気放射
   722  	in  float64 // 室内発熱
   723  	pnl float64 // 放射暖・冷房パネル
   724  }
   725  
   726  type QHELM struct {
   727  	qe   BHELM
   728  	slo  float64 // 外壁面入射日射量 [W]
   729  	slw  float64 // 窓面入射日射量 [W]
   730  	asl  float64 // 外壁面吸収日射量 [W]
   731  	tsol float64 // 窓透過日射量 [W]
   732  	hins float64 // 室内発熱(顕熱) [W]
   733  	hinl float64 // 室内発熱(潜熱) [W]
   734  
   735  	nx     float64 // 隣室熱損失
   736  	gd     float64 // 窓熱損失
   737  	ew     float64 // 外壁熱損失
   738  	wn     float64 // 窓熱損失
   739  	i      float64 // 内壁熱損失
   740  	c      float64 // 天井、屋根
   741  	f      float64 // 床(内・外)
   742  	vo     float64 // 換気
   743  	vol    float64 // 換気(潜熱)
   744  	vr     float64 // 室間換気
   745  	vrl    float64 // 室間換気(潜熱)
   746  	sto    float64 // 室内空気蓄熱
   747  	stol   float64 // 室内空気蓄熱(潜熱)
   748  	loadh  float64
   749  	loadhl float64
   750  	loadc  float64
   751  	loadcl float64
   752  }
   753  
   754  type RMQELM struct {
   755  	rmsb   []*RMSB
   756  	WSCwk  []*BHELM
   757  	qelm   QHELM
   758  	qelmdy QHELM
   759  }
   760  
   761  type RMSBType rune
   762  
   763  const (
   764  	RMSBType_None RMSBType = 0
   765  	RMSBType_E    RMSBType = 'E' // 外気に接する面
   766  	RMSBType_G    RMSBType = 'G' // 地面に接する面
   767  	RMSBType_i    RMSBType = 'i' // 内壁
   768  )
   769  
   770  type RMSB struct {
   771  	Type RMSBType // 'E':外気に接する面、'G':地面に接する面、'i':内壁
   772  	Ts   BHELM
   773  	Tw   []*BHELM
   774  	Told []*BHELM
   775  }
   776  
   777  // 合計空調負荷
   778  type QETOTAL struct {
   779  	Name   string
   780  	Qelm   QHELM // 空調負荷
   781  	Qelmdy QHELM // 空調負荷
   782  }
   783  
   784  // 室デ-タ
   785  type ROOM struct {
   786  	Name        string //室名
   787  	N           int    //周壁数
   788  	Brs         int    //Sd[],S[]の先頭位置
   789  	MCAP        *float64
   790  	CM          *float64
   791  	TM          float64
   792  	oldTM       float64
   793  	HM          float64
   794  	QM          float64
   795  	fsolm       *float64 // 家具の日射吸収割合
   796  	Srgm2       float64  // 家具の最終的な日射吸収割合
   797  	Qsolm       float64  // 家具の日射吸収量[W]
   798  	PCMfurnname string   // PCM内臓家具の部材名称
   799  	PCM         *PCM     // PCM内臓家具の場合
   800  	mPCM        float64  // PCM内臓家具の容積[m3]
   801  	PCMQl       float64  // PCM内臓家具の見かけの比熱[J/m3K]
   802  	FunHcap     float64  // 家具の熱容量(顕熱とPCM内臓家具の合計)
   803  	// 室空気に加算したものは除く
   804  	FMT, FMC float64
   805  
   806  	// --- 家具の計算用パラメータ ----
   807  
   808  	Qgt         float64 // 透過日射熱取得 [W]
   809  	Nachr       int     //`achr`の数
   810  	Ntr         int     //内壁を共有する隣室数
   811  	Nrp         int     //輻射パネル数
   812  	Nflr        int     //床の部位数
   813  	Nfsolfix    int     //短波長放射吸収比率が定義されている面数
   814  	Nisidermpnl int
   815  	Nasup       int
   816  
   817  	rsrf  []*RMSRF  // 壁体
   818  	achr  []*ACHIR  // 室間相互換気
   819  	trnx  []*TRNX   // 隣室
   820  	rmpnl []*RPANEL // 室についての輻射パネル
   821  	//rairflow []RAIRFLOW
   822  	Arsp      []*AIRSUP // 室への冷温風供給熱量
   823  	cmp       *COMPNT   // 逆参照
   824  	elinasup  []*ELIN   // 流入経路(空気温度用) サイズは Nasup に等しい
   825  	elinasupx []*ELIN   // 流入経路(空気湿度用) サイズは Nasup に等しい
   826  	rmld      *RMLOAD   // 室負荷
   827  	rmqe      *RMQELM
   828  
   829  	F     []float64
   830  	alr   []float64
   831  	XA    []float64
   832  	Wradx []float64
   833  
   834  	rsrnx bool //隣室裏面の短波長放射考慮のとき true (床、天井のみ)
   835  	fij   rune //形態係数 'F':外部入力、'A':面積率
   836  	sfpri bool //表面温度出力指定
   837  	eqpri bool //日射、室内発熱取得出力指定
   838  	mrk   rune // '*', 'C', '!'
   839  
   840  	VRM     float64  //室容積 [m3]
   841  	GRM     float64  //室内空気質量
   842  	MRM     float64  //室空気熱容量
   843  	Area    float64  //室内表面総面積
   844  	FArea   float64  //床面積
   845  	flrsr   *float64 //床に直接吸収される短波長放射の比率
   846  	tfsol   float64  //部位に直接吸収される短波長放射比率の既定値合計(Sd->fsol、Rm->flrsr、Rm->fsolmの合計)
   847  	alrbold float64  //
   848  
   849  	Hcap  float64 // 室内熱容量   J/K
   850  	Mxcap float64 // 室内湿気容量 kg/(kg/kg)
   851  
   852  	Ltyp     rune     // 照明器具形式
   853  	Nhm      float64  // 人数
   854  	Light    float64  // 照明器具容量
   855  	Apsc     float64  // 機器対流放熱容量
   856  	Apsr     float64  // 機器輻射放熱容量
   857  	Apl      float64  // 機器潜熱放熱容量
   858  	Gve      float64  // 換気量
   859  	Gvi      float64  // 隙間風量
   860  	AE       float64  // 消費電力容量[W]
   861  	AG       float64  // 消費ガス容量[W]
   862  	AEsch    *float64 // 消費電力スケジュール (未設定時はnil)
   863  	AGsch    *float64 // 消費ガススケジュール (未設定時はnil)
   864  	Lightsch *float64 // 照明スケジュール (未設定時はnil)
   865  	Assch    *float64 // 機器顕熱スケジュール (未設定時はnil)
   866  	Alsch    *float64 // 機器潜熱スケジュール (未設定時はnil)
   867  	Hmsch    *float64 // 在室人数スケジュール (未設定時はnil)
   868  	Metsch   *float64 // Met値スケジュール (未設定時はnil)
   869  	Closch   *float64 // Clo値スケジュール (未設定時はnil)
   870  	Wvsch    *float64 // 室内風速設定値名 (未設定時はnil)
   871  	Hmwksch  *float64 // 作業強度設定値名 (未設定時はnil)
   872  	Vesc     *float64 // 換気スケジュール (未設定時はnil)
   873  	Visc     *float64 // 隙間風スケジュール (未設定時はnil)
   874  	alc      *float64 // 室内側対流熱伝達率のスケジュール設定値  (未設定時はnil)
   875  
   876  	// --- 室内発熱 ---
   877  
   878  	Hc float64 //人体よりの対流  [W]
   879  	Hr float64 //人体よりの輻射  [W]
   880  	HL float64 //人体よりの潜熱 [W]
   881  	Lc float64 //照明よりの対流  [W]
   882  	Lr float64 //照明よりの輻射  [W]
   883  	Ac float64 //機器よりの対流  [W]
   884  	Ar float64 //機器よりの輻射  [W]
   885  	AL float64 //機器よりの潜熱  [W]
   886  
   887  	/*設備機器発熱*/
   888  	eqcv  float64 //設備機器発熱の対流成分比率
   889  	Qeqp  float64 //設備機器からの発熱[W]
   890  	Gvent float64
   891  
   892  	RMt  float64
   893  	ARN  []float64
   894  	RMP  []float64
   895  	RMC  float64
   896  	RMx  float64
   897  	RMXC float64
   898  
   899  	Tr     float64 //室内温度
   900  	Trold  float64 //室内温度
   901  	xr     float64 //室内絶対湿度 [kg/kg]
   902  	xrold  float64 //室内絶対湿度
   903  	RH     float64
   904  	Tsav   float64 // 平均表面温度
   905  	Tot    float64 // 作用温度
   906  	hr     float64 // エンタルピー
   907  	PMV    float64
   908  	SET    float64 // SET(体感温度)
   909  	setpri bool    // SET(体感温度)の出力フラグ
   910  
   911  	Trdy   SVDAY
   912  	xrdy   SVDAY
   913  	RHdy   SVDAY
   914  	Tsavdy SVDAY
   915  
   916  	mTrdy, mxrdy, mRHdy, mTsavdy SVDAY
   917  	VAVcontrl                    *VAV
   918  	OTsetCwgt                    *float64 // 作用温度設定時の対流成分重み係数
   919  	// デフォルトは0.5
   920  	HGc, CA, AR float64
   921  	Qsab        float64 // 吸収日射熱取得 [W]
   922  	Qrnab       float64 // 夜間放射による熱損失 [W]
   923  }
   924  
   925  /* --------------------------------
   926  室計算用データ
   927  --------------------------------*/
   928  
   929  type RMVLS struct {
   930  	Twallinit  float64   // 初期温度 (GDAT.RUN.Tinit)
   931  	Emrk       []rune    // '!' or '*' ????
   932  	Wall       []*WALL   // 壁
   933  	Window     []*WINDOW // 窓
   934  	Snbk       []*SNBK   // 日よけ
   935  	PCM        []*PCM    // 潜熱蓄熱材
   936  	Sd         []*RMSRF  // 壁体
   937  	Mw         []*MWALL  // 重量壁体
   938  	Room       []*ROOM   // 室
   939  	Rdpnl      []*RDPNL  // 輻射パネル
   940  	Qrm, Qrmd  []*QRM    // 日射、室内発熱熱取得
   941  	Qetotal    QETOTAL   // 合計空調負荷
   942  	Trdav      []float64
   943  	Pcmiterate rune // PCM建材を使用し、かつ収束計算を行う場合は'y'
   944  }