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

     1  package eeslism
     2  
     3  type EqpType string
     4  
     5  const (
     6  	ROOM_TYPE       EqpType = "ROOM"       // 室
     7  	RDPANEL_TYPE    EqpType = "RPNL"       // 放射パネル
     8  	HCCOIL_TYPE     EqpType = "HCC"        // 冷温水コイル
     9  	BOILER_TYPE     EqpType = "BOI"        // ボイラ-
    10  	COLLECTOR_TYPE  EqpType = "COL"        // 太陽熱集熱器
    11  	ACOLLECTOR_TYPE EqpType = "ACOL"       // 太陽熱集熱器
    12  	REFACOMP_TYPE   EqpType = "REFA"       // ヒートポンプ(圧縮式冷凍機)
    13  	STANK_TYPE      EqpType = "STANK"      // 蓄熱槽
    14  	HEXCHANGR_TYPE  EqpType = "HEX"        // 熱交換器
    15  	STHEAT_TYPE     EqpType = "STHEAT"     // 電気蓄熱暖房器
    16  	THEX_TYPE       EqpType = "THEX"       // 全熱交換器
    17  	DESI_TYPE       EqpType = "DESICCANT"  // デシカント槽
    18  	EVAC_TYPE       EqpType = "EVPCOOLING" // 気化冷却器
    19  	VAV_TYPE        EqpType = "VAV"
    20  	VWV_TYPE        EqpType = "VWV"
    21  )
    22  
    23  const (
    24  	COLLECTOR_PDT  = 'w'
    25  	ACOLLECTOR_PDT = 'a'
    26  )
    27  
    28  type CATType string
    29  type VAVType rune
    30  type PathType rune
    31  
    32  const (
    33  	// ---- Satoh Debug VAV  2000/10/30 ----
    34  	VAV_PDT VAVType = 'A' // 空気
    35  	VWV_PDT VAVType = 'W' // 温水
    36  
    37  	PIPEDUCT_TYPE EqpType = "PIPE"
    38  	DUCT_TYPE     EqpType = "DUCT"
    39  	PIPE_PDT              = 'P'
    40  	DUCT_PDT              = 'D'
    41  
    42  	PUMP_TYPE EqpType = "PUMP"
    43  
    44  	FAN_TYPE EqpType = "FAN"
    45  	PUMP_PF          = 'P'
    46  	FAN_PF           = 'F'
    47  
    48  	PUMP_C  = "C"
    49  	PUMP_Vv = "Vv"
    50  	PUMP_Vr = "Vr"
    51  
    52  	FAN_C  = "C"
    53  	FAN_Vd = "Vd"
    54  	FAN_Vs = "Vs"
    55  	FAN_Vp = "Vp"
    56  	FAN_Vr = "Vr"
    57  
    58  	PV_TYPE = "PV"
    59  
    60  	DIVERG_TYPE   = "B"  // 通過流体が水の分岐要素
    61  	CONVRG_TYPE   = "C"  // 通過流体が水の合流要素
    62  	DIVGAIR_TYPE  = "BA" // 通過流体が空気の分岐要素
    63  	CVRGAIR_TYPE  = "CA" // 通過流体が空気の合流要素
    64  	DIVERGCA_TYPE = "_B"
    65  	CONVRGCA_TYPE = "_C"
    66  
    67  	FLIN_TYPE  = "FLI" // 流入境界条件(システム経路への流入条件)
    68  	GLOAD_TYPE = "GLD"
    69  
    70  	HCLOAD_TYPE  = "HCLD"  // 仮想空調機コイル(直膨コイル)
    71  	HCLOADW_TYPE = "HCLDW" // 仮想空調機コイル(冷・温水コイル)
    72  	RMAC_TYPE    = "RMAC"  // ルームエアコン
    73  	RMACD_TYPE   = "RMACD"
    74  
    75  	QMEAS_TYPE = "QMEAS" // カロリーメータ
    76  	VALV_TYPE  = "V"     // 弁およびダンパー
    77  	TVALV_TYPE = "VT"    // 温調弁(水系統のみ)
    78  
    79  	OMVAV_TYPE = "OMVAV"
    80  	OAVAV_TYPE = "OAVAV"
    81  
    82  	OUTDRAIR_NAME = "_OA"
    83  	OUTDRAIR_PARM = "t=Ta x=xa *"
    84  
    85  	CITYWATER_NAME = "_CW"
    86  	CITYWATER_PARM = "t=Twsup *"
    87  )
    88  
    89  type ControlSWType rune
    90  
    91  // 通過する流体の種類(a:空気(温度)、x:空気(湿度)、W:水))
    92  type FliudType rune
    93  
    94  const (
    95  	AIR_FLD   FliudType = 'A' // 空気??
    96  	AIRt_FLD  FliudType = 't' // 空気(温度)
    97  	AIRa_FLD  FliudType = 'a' // 空気(温度)
    98  	AIRx_FLD  FliudType = 'x' // 空気(湿度)
    99  	WATER_FLD FliudType = 'W' // 水
   100  
   101  	HEATING_SYS = 'a'
   102  	HVAC_SYS    = 'A'
   103  	DHW_SYS     = 'W'
   104  
   105  	THR_PTYP PathType = 'T'
   106  	CIR_PTYP PathType = 'C'
   107  	BRC_PTYP PathType = 'B'
   108  
   109  	DIVERG_LPTP PathType = 'b' // 水または空気の*分岐*
   110  	CONVRG_LPTP PathType = 'c' // 水または空気の*合流*
   111  	IN_LPTP     PathType = 'i' // 経路の先頭が流入境界条件
   112  	OUT_LPTP    PathType = 'o' // 最後尾要素が水または空気の分岐または合流である場合
   113  
   114  	OFF_SW   ControlSWType = 'x' // 経路が停止中
   115  	ON_SW    ControlSWType = '-' // 経路が動作中
   116  	LOAD_SW  ControlSWType = 'F'
   117  	FLWIN_SW ControlSWType = 'I'
   118  	BATCH_SW ControlSWType = 'B'
   119  
   120  	COOLING_LOAD  ControlSWType = 'C'
   121  	HEATING_LOAD  ControlSWType = 'H'
   122  	HEATCOOL_LOAD ControlSWType = 'L'
   123  
   124  	COOLING_SW ControlSWType = 'C'
   125  	HEATING_SW ControlSWType = 'H'
   126  
   127  	TANK_FULL                 = 'F'
   128  	TANK_EMPTY                = 'E'
   129  	TANK_EMPTMP               = -777.0
   130  	BTFILL      ControlSWType = 'F'
   131  	BTDRAW      ControlSWType = 'D'
   132  
   133  	SYSV_EQV = 'v'
   134  	LOAD_EQV = 'L'
   135  )
   136  
   137  type COMPNT struct {
   138  	Name       string     // 機器名称
   139  	Roomname   string     // 機器の設置室名称(-room)
   140  	Eqptype    EqpType    // 機器タイプ("PIPE"など)
   141  	Envname    string     // 配管等の周囲条件名称(-env)
   142  	Exsname    string     // 方位名称
   143  	Hccname    string     // VWV制御するときの制御対象熱交換器名称
   144  	Rdpnlname  string     // VWV制御するときの制御対象床暖房(未完成)
   145  	Idi        []ELIOType // 入口の識別記号 (len(Idi) == Nin)
   146  	Ido        []ELIOType // 出口の識別記号(熱交換器の'C'、'H'や全熱交換器の'E'、'O'など)(len(Ido) == Nout)
   147  	Tparm      string     // SYSCMPで定義された"-S"や"-V"以降の文字列を収録する
   148  	Wetparm    string     // 湿りコイルの除湿時出口相対湿度の文字列を収録
   149  	Omparm     string     // 集熱器が直列接続の場合に流れ方向に記載する
   150  	Airpathcpy bool       // 空気経路の場合はtrue(湿度経路用にpathをコピーする)
   151  	Control    ControlSWType
   152  	Eqp        interface{} // 機器特有の構造体へのポインタ
   153  	Neqp       int
   154  	Ncat       int
   155  	Nout       int // 出口の数
   156  	Nin        int // 入口の数
   157  	Nivar      int
   158  	Ac         float64 // 集熱器面積[m2]
   159  	PVcap      float64 // 太陽電池容量[W]
   160  	Area       float64 // 太陽電池アレイ面積[m2]
   161  	Ivparm     *float64
   162  	Eqpeff     float64  // ボイラ室内置き時の室内供給熱量率 [-]
   163  	Elouts     []*ELOUT // 機器出口の構造体へのポインタ(Nout個)
   164  	Elins      []*ELIN  // 機器入口の構造体へのポインタ(Nin個)
   165  	//	valv	*Valv
   166  
   167  	Valvcmp *COMPNT // 三方弁の対となるValvのComptへのポインタ
   168  	//	x,			/* バルブ開度 */
   169  	//	xinit ;
   170  	//	char	org ;		/* CONTRLで指定されているとき'y' それ以外は'n' */
   171  	//	char	*OMfanName ;	// Valvが参照するファン風量
   172  	MonPlistName string  // VALVで分岐などを流量比率で行う場合の観測対象のPlist名称
   173  	MPCM         float64 // 電気蓄熱暖房器内臓PCMの容量[m3]
   174  }
   175  
   176  type ELOUT struct {
   177  	Id      ELIOType      // 出口の識別番号(熱交換器の'C'、'H'や全熱交換器の'E'、'O'など)
   178  	Pelmoid rune          // 終端の割り当てが完了していれば '-', そうでなければ 'x'
   179  	Fluid   FliudType     // 通過する流体の種類(a:空気(温度)、x:空気(湿度)、W:水))
   180  	Control ControlSWType // 経路の制御
   181  	Sysld   rune          // 負荷を計算する場合は'y'、成り行きの場合は'n'
   182  	G       float64       // 流量
   183  	Q       float64       // 熱量
   184  	Sysv    float64       // 連立方程式の答え
   185  	Load    float64
   186  	Co      float64   // 連立方程式の定数
   187  	Coeffo  float64   // 出口の係数
   188  	Coeffin []float64 // 入口の係数(入口複数の場合はそれぞれの係数)
   189  	Ni      int       // 入口の数
   190  	Sv      int
   191  	Sld     int
   192  	Cmp     *COMPNT // 機器出口の構造体が属する機器(逆参照)
   193  	Elins   []*ELIN // 機器出口の構造体が関連する機器入口
   194  	Lpath   *PLIST  // 機器出口が属する末端経路
   195  	Eldobj  *ELOUT
   196  	Emonitr *ELOUT
   197  }
   198  
   199  // 経路識別子
   200  type ELIOType rune
   201  
   202  const (
   203  	ELIO_None  ELIOType = 0
   204  	ELIO_G     ELIOType = 'G'
   205  	ELIO_C     ELIOType = 'C' // 冷風?
   206  	ELIO_H     ELIOType = 'H' // 温風?
   207  	ELIO_D     ELIOType = 'D' // Tdry
   208  	ELIO_d     ELIOType = 'd' // xdry
   209  	ELIO_V     ELIOType = 'V' // Twet
   210  	ELIO_v     ELIOType = 'v' // xwet
   211  	ELIO_e     ELIOType = 'e' // 排気系統(エンタルピー) ?
   212  	ELIO_E     ELIOType = 'E' // 排気系統(温度)?
   213  	ELIO_O     ELIOType = 'O' // 給気系統(温度) ?
   214  	ELIO_o     ELIOType = 'o' // 給気系統(エンタルピー) ?
   215  	ELIO_x     ELIOType = 'x' // 空気湿度
   216  	ELIO_f     ELIOType = 'f'
   217  	ELIO_r     ELIOType = 'r'
   218  	ELIO_W     ELIOType = 'W' // 温水温度
   219  	ELIO_w     ELIOType = 'w'
   220  	ELIO_t     ELIOType = 't' // 空気温度
   221  	ELIO_i     ELIOType = 'i'
   222  	ELIO_ASTER ELIOType = '*' // 流入経路
   223  	ELIO_SPACE ELIOType = ' '
   224  	ELIO_IN    ELIOType = '>'
   225  )
   226  
   227  type ELIN struct {
   228  	Id     ELIOType // 入口の識別番号(熱交換器の'C'、'H'や全熱交換器の'E'、'O'など)
   229  	Sysvin float64  // 連立方程式の答え
   230  	Upo    *ELOUT   // 上流の機器の出口
   231  	Upv    *ELOUT   // 上流の機器の出口(停止している場合はnil)
   232  	Lpath  *PLIST   // 機器入口が属する末端経路
   233  }
   234  
   235  // SYSPTHに記載の機器
   236  type PELM struct {
   237  	Co  ELIOType // SYSPTHに記載の機器の出口の識別番号(熱交換器の'C'、'H'や全熱交換器の'E'、'O'など)
   238  	Ci  ELIOType // SYSPTHに記載の機器の入口の識別番号(熱交換器の'C'、'H'や全熱交換器の'E'、'O'など)
   239  	Cmp *COMPNT  // SYSPTH記載の機器の構造体
   240  	//  Pelmx *PELM      // PELM構造体へのポインタ(コメントアウトされているため、Goのコードでは除外)
   241  	Out *ELOUT // 機器の出口
   242  	In  *ELIN  // 機器の入口
   243  }
   244  
   245  // 末端経路(主経路・または部分経路)
   246  type PLIST struct {
   247  	UnknownFlow int           // 末端経路が流量未知なら1、既知なら0
   248  	Name        string        // 末端経路の名前
   249  	Type        PathType      // 貫流経路か循環経路かの判定
   250  	Control     ControlSWType // 経路の制御情報
   251  	Batch       bool          // バッチ運転を行う蓄熱槽のあるときtrue
   252  	Org         bool          // 入力された経路のときtrue、複写された経路(空気系統の湿度経路)のとき false
   253  	Plistname   string        // 末端経路の名前
   254  	Lvc         int
   255  	Nvalv       int      // 経路中のバルブ数
   256  	Nvav        int      // 経路中のVAVユニットの数
   257  	NOMVAV      int      // OM用変風量制御ユニット数
   258  	N           int      // 流量計算の時の番号
   259  	Go          *float64 // 流量の計算に使用される係数
   260  	Gcalc       float64  // 温調弁によって計算された流量を記憶する変数
   261  	G           float64  // 流量
   262  	Rate        *float64 // 流量分配比
   263  	Pelm        []*PELM  // 末端経路内の機器(バルブ、カロリーメータを除く) OMVAVも除くべき?
   264  	Plmvb       *PELM    // ??
   265  	Lpair       *PLIST
   266  	Plistt      *PLIST // 空気系当時の温度系統
   267  	Plistx      *PLIST // 空気系当時の湿度系統
   268  	Valv        *VALV  // 弁・ダンパーへの参照 (V,VT用)
   269  	Mpath       *MPATH // システム経路 MPATH への逆参照
   270  	Upplist     *PLIST
   271  	Dnplist     *PLIST
   272  	OMvav       *OMVAV // OMVAVへの参照 (OMVAV用)
   273  }
   274  
   275  // SYSPTHにおける';'で区切られる経路
   276  // SYSPTH (1)--(N) MPATH (1)--(N) PLIST (1) -- (N) PELM
   277  type MPATH struct {
   278  	Name    string        // 経路名称
   279  	Sys     byte          // 系統番号
   280  	Type    PathType      // 貫流経路か循環経路かの判定
   281  	Fluid   FliudType     // 流体種別
   282  	Control ControlSWType // 経路の制御情報
   283  	NGv     int           // ガス導管数
   284  	NGv2    int           // 開口率が2%未満のガス導管数
   285  	Ncv     int           // 制御弁数
   286  	Lvcmx   int           // 制御弁の接続数の最大値
   287  	Plist   []*PLIST      // 末端経路
   288  	Pl      []*PLIST      // 末端経路を格納する配列へのポインタ
   289  	Rate    bool          // 流量比率(Plist[x].Rate)が入力されている経路ならtrue
   290  	G0      *float64      // 流量比率設定時の既知流量へのポインタ
   291  	Mpair   *MPATH        // 温度経路から湿度経路への参照
   292  	Cbcmp   []*COMPNT     // 流量連立方程式を解くときに使用する分岐・合流機器
   293  }
   294  
   295  type SYSEQ struct {
   296  	A byte
   297  }
   298  
   299  type VALV struct {
   300  	Name     string
   301  	Count    int
   302  	X        float64  // バルブ開度
   303  	Xinit    *float64 // バルブ開度の初期値
   304  	Org      byte     // CONTRLで指定されているとき'y' それ以外は'n'
   305  	Cmp      *COMPNT
   306  	Cmb      *COMPNT
   307  	Mon      *COMPNT
   308  	Tin      *float64
   309  	Tset     *float64
   310  	Tout     *float64
   311  	MGo      *float64
   312  	Plist    *PLIST // 接続している末端経路への参照
   313  	MonPlist *PLIST
   314  }