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

     1  package eeslism
     2  
     3  // 冷温水コイルの処理熱量計算用係数
     4  func wcoil(Air_SW ControlSWType, Water_SW ControlSWType, wet rune, Gaet float64, Gaeh float64,
     5  	xai float64, Twi float64) (ACS, ACS, ACS) {
     6  
     7  	var Et, Ex, Ew ACS
     8  
     9  	if wet == 'd' || Water_SW == OFF_SW || Air_SW == OFF_SW {
    10  		// 片側系統が停止していたときに対応するように修正
    11  		// Satoh Debug 2009/1/9
    12  		if Water_SW != OFF_SW {
    13  			Et = ACS{
    14  				W: Ca * Gaet,
    15  				T: Ca * Gaet,
    16  				X: 0.0,
    17  				C: 0.0,
    18  			}
    19  		} else {
    20  			Et = ACS{
    21  				W: 0.0,
    22  				T: 0.0,
    23  				X: 0.0,
    24  				C: 0.0,
    25  			}
    26  		}
    27  
    28  		Ex = ACS{
    29  			W: 0.0,
    30  			T: 0.0,
    31  			X: 0.0,
    32  			C: 0.0,
    33  		}
    34  
    35  		if Air_SW != OFF_SW {
    36  			Ew = ACS{
    37  				W: Ca * Gaet,
    38  				T: Ca * Gaet,
    39  				X: 0.0,
    40  				C: 0.0,
    41  			}
    42  		} else {
    43  			Ew = ACS{
    44  				W: 0.0,
    45  				T: 0.0,
    46  				X: 0.0,
    47  				C: 0.0,
    48  			}
    49  		}
    50  	} else {
    51  		aw, bw := hstaircf(Twi, Twi+5.0)
    52  		cs := Ca + Cv*xai
    53  
    54  		Et = ACS{
    55  			W: Ca * Gaet,
    56  			T: Ca * Gaet,
    57  			X: 0.0,
    58  			C: 0.0,
    59  		}
    60  
    61  		Ex = ACS{
    62  			W: (Gaeh*bw - Gaet*Ca) / Ro,
    63  			T: (Gaeh*cs - Gaet*Ca) / Ro,
    64  			X: Gaeh,
    65  			C: -Gaeh * aw / Ro,
    66  		}
    67  
    68  		Ew = ACS{
    69  			W: Gaeh * bw,
    70  			T: Gaeh * cs,
    71  			X: Gaeh * Ro,
    72  			C: -Gaeh * aw,
    73  		}
    74  	}
    75  
    76  	return Et, Ex, Ew
    77  }
    78  
    79  func Qcoils(Et ACS, Tai float64, xai float64, Twi float64) float64 {
    80  	return Et.W*Twi - Et.T*Tai - Et.X*xai - Et.C
    81  }
    82  
    83  func Qcoill(Ex ACS, Tai float64, xai float64, Twi float64) float64 {
    84  	return Ro * (Ex.W*Twi - Ex.T*Tai - Ex.X*xai - Ex.C)
    85  }
    86  
    87  func hstaircf(Tw1 float64, Tw2 float64) (float64, float64) {
    88  	h1 := FNH(Tw1, FNXtr(Tw1, 100.0))
    89  	h2 := FNH(Tw2, FNXtr(Tw2, 100.0))
    90  	b := (h2 - h1) / (Tw2 - Tw1)
    91  	a := h1 - b*Tw1
    92  	// fmt.Printf("== hstaircf Tw1,Tw2=%f %f a=%f b=%f\n",Tw1,Tw2,*a,*b)
    93  	return a, b
    94  }