|
|
@@ -35,6 +35,7 @@ class WheelS3(BaseComponents):
|
|
|
beta_P5 = param['beta_P5']
|
|
|
beta_P6 = param['beta_P6']
|
|
|
beta_P7 = param['beta_P7']
|
|
|
+ beta_P8 = param['beta_P8']
|
|
|
beta_C1 = param['beta_C1']
|
|
|
beta_C2 = param['beta_C2']
|
|
|
beta_C3 = param['beta_C3']
|
|
|
@@ -49,6 +50,7 @@ class WheelS3(BaseComponents):
|
|
|
* HinP
|
|
|
* (TinR + beta_P6 * TinC + beta_P7 * TinP)
|
|
|
* EXP(-beta_P5 * FP)
|
|
|
+ + beta_P8 * FR
|
|
|
+ beta_P2
|
|
|
) / 1000
|
|
|
WdiffP = HdiffP * FP
|
|
|
@@ -62,8 +64,7 @@ class WheelS3(BaseComponents):
|
|
|
# 冷却侧
|
|
|
TdiffC = beta_C1 * EXP(-beta_C2 * EXP(-beta_C3 * (TinR - TinC))) * EXP(-beta_C4 * FC)
|
|
|
ToutC = TinC + TdiffC
|
|
|
- # HdiffC = (beta_P1 * RinC**beta_P4 * HinC * TinR * EXP(-beta_P5 * FC) + beta_P2)/1000
|
|
|
- HdiffC = 0
|
|
|
+ HdiffC = 0
|
|
|
WdiffC = HdiffC * FC
|
|
|
HoutC = HinC - HdiffC
|
|
|
DoutC = get_Dew_from_HumRatio(HoutC,engine)
|
|
|
@@ -92,6 +93,7 @@ class WheelS3(BaseComponents):
|
|
|
'beta_P5': pm.TruncatedNormal(f'{self.name}_beta_P5',mu=5,sigma=2,initval=5,lower=0),
|
|
|
'beta_P6': pm.Normal(f'{self.name}_beta_P6',mu=0,sigma=1,initval=0),
|
|
|
'beta_P7': pm.Normal(f'{self.name}_beta_P7',mu=0,sigma=1,initval=0),
|
|
|
+ 'beta_P8': pm.Normal(f'{self.name}_beta_P8',mu=1,sigma=10,initval=1),
|
|
|
'beta_C1': pm.TruncatedNormal(f'{self.name}_beta_C1',mu=60,sigma=10,initval=60,lower=10),
|
|
|
'beta_C2': pm.TruncatedNormal(f'{self.name}_beta_C2',mu=30,sigma=10,initval=30,lower=1),
|
|
|
'beta_C3': pm.TruncatedNormal(f'{self.name}_beta_C3',mu=0.05,sigma=0.1,initval=0.05,lower=0),
|
|
|
@@ -99,7 +101,8 @@ class WheelS3(BaseComponents):
|
|
|
}
|
|
|
return param
|
|
|
|
|
|
-class WheelS3V2(BaseComponents):
|
|
|
+
|
|
|
+class WheelS3V3(BaseComponents):
|
|
|
def __init__(self, name):
|
|
|
super().__init__(name)
|
|
|
|
|
|
@@ -115,40 +118,38 @@ class WheelS3V2(BaseComponents):
|
|
|
FUNC = cls.get_func_by_engine(engine)
|
|
|
EXP = FUNC['EXP']
|
|
|
|
|
|
- K0 = param['K0']
|
|
|
- eta = param['eta']
|
|
|
beta_P1 = param['beta_P1']
|
|
|
beta_P2 = param['beta_P2']
|
|
|
beta_P3 = param['beta_P3']
|
|
|
- beta_P1a = param['beta_P1a']
|
|
|
- beta_P2a = param['beta_P2a']
|
|
|
- beta_P3a = param['beta_P3a']
|
|
|
beta_P4 = param['beta_P4']
|
|
|
+ beta_P5 = param['beta_P5']
|
|
|
+ beta_P6 = param['beta_P6']
|
|
|
+ beta_P7 = param['beta_P7']
|
|
|
beta_C1 = param['beta_C1']
|
|
|
beta_C2 = param['beta_C2']
|
|
|
beta_C3 = param['beta_C3']
|
|
|
- beta_C4 = param['beta_C4']
|
|
|
|
|
|
RinP = get_RH_from_Tdb_and_Hr(TinP,HinP,engine)
|
|
|
- T_wheel_P = (
|
|
|
- beta_P1a * TinP * FP ** beta_P1
|
|
|
- + beta_P2a * TinC * FC ** beta_P2
|
|
|
- + beta_P3a * TinR * FR ** beta_P3
|
|
|
- )
|
|
|
- E = -45
|
|
|
- R = 8.314
|
|
|
- N = 0.45
|
|
|
- H_eq = K0 * EXP(-E / (R * (T_wheel_P + 273.15))) * RinP ** N # 处理侧平衡状态下转轮能够吸附的水
|
|
|
- HoutP = HinP - eta * (H_eq - HinP) * (1 - EXP(-beta_P4 * FP))
|
|
|
+ RinC = get_RH_from_Tdb_and_Hr(TinC,HinC,engine)
|
|
|
+
|
|
|
+ # 处理侧
|
|
|
+ HdiffP = (
|
|
|
+ beta_P1 * RinP ** beta_P4
|
|
|
+ * HinP
|
|
|
+ * (TinR + beta_P6 * TinC + beta_P7 * TinP)
|
|
|
+ * EXP(-beta_P5 * FP)
|
|
|
+ + beta_P2
|
|
|
+ ) / 1000
|
|
|
+ WdiffP = HdiffP * FP
|
|
|
+ HoutP = HinP - HdiffP
|
|
|
DoutP = get_Dew_from_HumRatio(HoutP,engine)
|
|
|
- WdiffP = (HinP - HoutP) * FP
|
|
|
Q_lat_P = WdiffP * cls.CONSTANT['h_ads']
|
|
|
- Q_sen_P = beta_P3 * (TinR - TinP) * FP
|
|
|
+ Q_sen_P = beta_P3 * (TinR - TinP) * FP
|
|
|
TdiffP = (Q_lat_P + Q_sen_P) / (FP * cls.CONSTANT['c_p_air'])
|
|
|
ToutP = TinP + TdiffP
|
|
|
|
|
|
# 冷却侧
|
|
|
- TdiffC = beta_C1 * EXP(-beta_C2 * EXP(-beta_C3 * (TinR - TinC))) * EXP(-beta_C4 * FC)
|
|
|
+ TdiffC = beta_C1 * RinC ** beta_C2 * TinR + beta_C3
|
|
|
ToutC = TinC + TdiffC
|
|
|
HdiffC = 0
|
|
|
WdiffC = HdiffC * FC
|
|
|
@@ -172,108 +173,16 @@ class WheelS3V2(BaseComponents):
|
|
|
|
|
|
def prior(self):
|
|
|
param = {
|
|
|
- 'beta_P1': pm.Normal(f'{self.name}_beta_P1',mu=0,sigma=1,initval=0),
|
|
|
- 'beta_P2': pm.Normal(f'{self.name}_beta_P2',mu=0,sigma=1,initval=0),
|
|
|
- 'beta_P3': pm.Normal(f'{self.name}_beta_P3',mu=0,sigma=1,initval=0),
|
|
|
- 'beta_P1a': pm.Normal(f'{self.name}_beta_P1a',mu=1,sigma=1,initval=1),
|
|
|
- 'beta_P2a': pm.Normal(f'{self.name}_beta_P2a',mu=1,sigma=1,initval=1),
|
|
|
- 'beta_P3a': pm.Normal(f'{self.name}_beta_P3a',mu=1,sigma=1,initval=1),
|
|
|
- 'beta_P4': pm.TruncatedNormal(f'{self.name}_beta_P4',mu=5,sigma=3,initval=5,lower=0),
|
|
|
- 'beta_C1': pm.TruncatedNormal(f'{self.name}_beta_C1',mu=60,sigma=10,initval=60,lower=10),
|
|
|
- 'beta_C2': pm.TruncatedNormal(f'{self.name}_beta_C2',mu=30,sigma=10,initval=30,lower=1),
|
|
|
- 'beta_C3': pm.TruncatedNormal(f'{self.name}_beta_C3',mu=0.05,sigma=0.1,initval=0.05,lower=0),
|
|
|
- 'beta_C4': pm.TruncatedNormal(f'{self.name}_beta_C4',mu=1,sigma=1,initval=1,lower=0),
|
|
|
- 'K0' : pm.TruncatedNormal(f'{self.name}_k0',mu=0.4,sigma=0.1,initval=0.4,lower=0),
|
|
|
- 'eta' : pm.HalfNormal(f'{self.name}_eta',sigma=0.1,initval=0.1)
|
|
|
+ 'beta_P1': pm.TruncatedNormal(f'{self.name}_beta_P1',mu=5,sigma=10,initval=5,lower=0),
|
|
|
+ 'beta_P2': pm.Normal(f'{self.name}_beta_P2',sigma=1,initval=0),
|
|
|
+ 'beta_P3': pm.TruncatedNormal(f'{self.name}_beta_P3',mu=1,sigma=2,initval=1.5,lower=0),
|
|
|
+ 'beta_P4': pm.HalfNormal(f'{self.name}_beta_P4',sigma=1,initval=0.1),
|
|
|
+ 'beta_P5': pm.TruncatedNormal(f'{self.name}_beta_P5',mu=5,sigma=2,initval=5,lower=0),
|
|
|
+ 'beta_P6': pm.Normal(f'{self.name}_beta_P6',mu=0,sigma=1,initval=0),
|
|
|
+ 'beta_P7': pm.Normal(f'{self.name}_beta_P7',mu=0,sigma=1,initval=0),
|
|
|
+ 'beta_C1': pm.TruncatedNormal(f'{self.name}_beta_C1',mu=0.5,sigma=1,initval=0.5,lower=0),
|
|
|
+ 'beta_C2': pm.TruncatedNormal(f'{self.name}_beta_C2',mu=0.3,sigma=1,initval=0.3,lower=0),
|
|
|
+ 'beta_C3': pm.Normal(f'{self.name}_beta_C3',mu=0,sigma=10,initval=0),
|
|
|
}
|
|
|
return param
|
|
|
|
|
|
-
|
|
|
-class WheelS3V3(BaseComponents):
|
|
|
-
|
|
|
- def __init__(self, name):
|
|
|
- super().__init__(name)
|
|
|
-
|
|
|
- @classmethod
|
|
|
- def model(
|
|
|
- cls,
|
|
|
- TinP,HinP,FP,
|
|
|
- TinR,HinR,FR,
|
|
|
- TinC,HinC,FC,
|
|
|
- engine : str,
|
|
|
- param : dict,
|
|
|
- ):
|
|
|
- FUNC = cls.get_func_by_engine(engine)
|
|
|
- EXP = FUNC['EXP']
|
|
|
-
|
|
|
- beta_P1 = param['beta_P1'] # km
|
|
|
- beta_P2 = param['beta_P2'] # eta_max
|
|
|
- beta_P4 = param['beta_P4']
|
|
|
- beta_P5 = param['beta_P5']
|
|
|
- beta_C1 = param['beta_C1']
|
|
|
- beta_C2 = param['beta_C2']
|
|
|
- beta_C3 = param['beta_C3']
|
|
|
- beta_C4 = param['beta_C4']
|
|
|
- beta_R1 = param['beta_R1']
|
|
|
- beta_R2 = param['beta_R2']
|
|
|
-
|
|
|
- # FP_w = EXP(FP)
|
|
|
- # FR_w = EXP(FR)
|
|
|
- # FC_w = EXP(FC)
|
|
|
- T_wheel = (
|
|
|
- TinP * (FP / (FP + FR + FC))
|
|
|
- + TinR * (FR / (FP + FR + FC))
|
|
|
- + TinC * (FC / (FP + FR + FC))
|
|
|
- )
|
|
|
- Hr_eq = get_HumRatio_from_Tdb_and_RH(T_wheel,1,engine)
|
|
|
-
|
|
|
- # 处理侧
|
|
|
- # 湿度
|
|
|
- eta = beta_P2 * (1-EXP(-beta_P1 * (HinP-Hr_eq)/Hr_eq))
|
|
|
- HdiffP = eta * (HinP - Hr_eq)
|
|
|
- HoutP = HinP - HdiffP
|
|
|
- DoutP = get_Dew_from_HumRatio(HoutP,engine)
|
|
|
- # 温度
|
|
|
- TdiffP_sen = beta_P4 * (T_wheel - TinP)
|
|
|
- TdiffP_lat = cls.CONSTANT['h_ads'] / cls.CONSTANT['c_p_air'] * HdiffP * beta_P5
|
|
|
- ToutP = TinP + TdiffP_sen + TdiffP_lat
|
|
|
-
|
|
|
- # 预冷侧
|
|
|
- # 湿度
|
|
|
- HdiffC = eta * (HinC - Hr_eq)
|
|
|
- HoutC = HinC - HdiffC
|
|
|
- DoutC = get_Dew_from_HumRatio(HoutC,engine)
|
|
|
- # 温度
|
|
|
- TdiffC = beta_C1 * EXP(-beta_C2 * EXP(-beta_C3 * (T_wheel - TinC))) * EXP(-beta_C4 * FC)
|
|
|
- ToutC = TinC + TdiffC
|
|
|
-
|
|
|
- # 再生侧
|
|
|
- # 湿度
|
|
|
- HdiffR = (HdiffP * FP + HdiffC * FC) / FR
|
|
|
- HoutR = HinR + HdiffR
|
|
|
- DoutR = get_Dew_from_HumRatio(HoutR,engine)
|
|
|
- # 温度
|
|
|
- TdiffR_lat = cls.CONSTANT['h_ads'] / cls.CONSTANT['c_p_air'] * HdiffR * beta_R1
|
|
|
- TdiffR_sen = beta_R2 * (TinR - T_wheel)
|
|
|
- ToutR = TinR - TdiffR_sen - TdiffR_lat
|
|
|
-
|
|
|
- return {
|
|
|
- 'ToutP':ToutP,'HoutP':HoutP,'DoutP':DoutP,'FP':FP,
|
|
|
- 'ToutR':ToutR,'HoutR':HoutR,'DoutR':DoutR,'FR':FR,
|
|
|
- 'ToutC':ToutC,'HoutC':HoutC,'DoutC':DoutC,'FC':FC,
|
|
|
- }
|
|
|
-
|
|
|
- def prior(self):
|
|
|
- param = {
|
|
|
- 'beta_P1': pm.HalfNormal(f'{self.name}_beta_P1',sigma=10,initval=0.01),
|
|
|
- 'beta_P2': pm.Uniform(f'{self.name}_beta_P2',lower=0,upper=1,initval=0.5),
|
|
|
- 'beta_P4': pm.HalfNormal(f'{self.name}_beta_P4', sigma=0.5,initval=0.2),
|
|
|
- 'beta_P5': pm.TruncatedNormal(f'{self.name}_beta_P5', mu=1, sigma=1,initval=1,lower=0),
|
|
|
- 'beta_C1': pm.TruncatedNormal(f'{self.name}_beta_C1',mu=60,sigma=10,initval=60,lower=10),
|
|
|
- 'beta_C2': pm.TruncatedNormal(f'{self.name}_beta_C2',mu=30,sigma=10,initval=30,lower=1),
|
|
|
- 'beta_C3': pm.TruncatedNormal(f'{self.name}_beta_C3',mu=0.05,sigma=0.1,initval=0.05,lower=0),
|
|
|
- 'beta_C4': pm.TruncatedNormal(f'{self.name}_beta_C4',mu=1,sigma=1,initval=1,lower=0),
|
|
|
- 'beta_R1': pm.TruncatedNormal(f'{self.name}_beta_R1', mu=1, sigma=1,initval=1,lower=0),
|
|
|
- 'beta_R2': pm.HalfNormal(f'{self.name}_beta_R2', sigma=10,initval=1),
|
|
|
- }
|
|
|
- return param
|