Skip to content

Commit faa2f4e

Browse files
authored
fix: return zero rates instead of NaN for zero-rate compressor timesteps (#1535)
docs: changelog entry for zero-rate NaN fix
1 parent a938235 commit faa2f4e

7 files changed

Lines changed: 783 additions & 765 deletions

File tree

docs/drafts/next.draft.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ STP: "flare" column has been added to STP Export - for `FIXED` installations onl
1515

1616
- Hardened compressor PH flash handling so invalid thermodynamic states are no longer used in compressor outlet calculations.
1717
- `LiquidRemover` now scales the outlet mass rate by the gas mass fraction when liquid is dropped, so the removed liquid mass is no longer carried by the gas stream downstream.
18+
- Compressor stage rate fields (`inlet_actual_rate`, `mass_rate`, `standard_rate`, etc.) now report `0.0` instead of `NaN` for zero-rate timesteps, so yearly resampling no longer forward-fills stale positive values into idle periods.
1819

1920
## Breaking changes
2021

src/libecalc/domain/process/compressor/core/results.py

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -84,65 +84,57 @@ def create_empty(cls) -> CompressorTrainStageResultSingleTimeStep:
8484
def inlet_actual_rate_m3_per_hour(self) -> float:
8585
"""Actual inlet rate in Am3/hour."""
8686
if self.inlet_stream is None:
87-
return np.nan
88-
else:
89-
return self.inlet_stream.volumetric_rate_m3_per_hour
87+
return 0.0
88+
return self.inlet_stream.volumetric_rate_m3_per_hour
9089

9190
@property
9291
def inlet_actual_rate_asv_corrected_m3_per_hour(self) -> float:
9392
"""Actual inlet rate in Am3/hour, corrected for ASV."""
9493
if self.inlet_stream_including_asv is None:
95-
return np.nan
96-
else:
97-
return self.inlet_stream_including_asv.volumetric_rate_m3_per_hour
94+
return 0.0
95+
return self.inlet_stream_including_asv.volumetric_rate_m3_per_hour
9896

9997
@property
10098
def standard_rate_sm3_per_day(self) -> float:
10199
"""Standard inlet rate in Sm3/day."""
102100
if self.inlet_stream is None:
103-
return np.nan
104-
else:
105-
return self.inlet_stream.standard_rate_sm3_per_day
101+
return 0.0
102+
return self.inlet_stream.standard_rate_sm3_per_day
106103

107104
@property
108105
def standard_rate_asv_corrected_sm3_per_day(self) -> float:
109106
"""Standard inlet rate in Sm3/day, corrected for ASV."""
110107
if self.inlet_stream_including_asv is None:
111-
return np.nan
112-
else:
113-
return self.inlet_stream_including_asv.standard_rate_sm3_per_day
108+
return 0.0
109+
return self.inlet_stream_including_asv.standard_rate_sm3_per_day
114110

115111
@property
116112
def outlet_actual_rate_m3_per_hour(self) -> float:
117113
"""Actual outlet rate in Am3/hour."""
118114
if self.outlet_stream is None:
119-
return np.nan
120-
else:
121-
return self.outlet_stream.volumetric_rate_m3_per_hour
115+
return 0.0
116+
return self.outlet_stream.volumetric_rate_m3_per_hour
122117

123118
@property
124119
def outlet_actual_rate_asv_corrected_m3_per_hour(self) -> float:
125120
"""Actual outlet rate in Am3/hour, corrected for ASV."""
126121
if self.outlet_stream_including_asv is None:
127-
return np.nan
128-
else:
129-
return self.outlet_stream_including_asv.volumetric_rate_m3_per_hour
122+
return 0.0
123+
return self.outlet_stream_including_asv.volumetric_rate_m3_per_hour
130124

131125
@property
132126
def mass_rate_kg_per_hour(self) -> float:
133127
"""Mass rate in kg/hour"""
134128
if self.inlet_stream is None:
135-
return np.nan
136-
else:
137-
return self.inlet_stream.mass_rate_kg_per_h
129+
return 0.0
130+
return self.inlet_stream.mass_rate_kg_per_h
138131

139132
@property
140133
def mass_rate_asv_corrected_kg_per_hour(self) -> float:
141134
"""Mass rate in kg/hour, corrected for ASV."""
142135
if self.inlet_stream_including_asv is None:
143-
return np.nan
144-
else:
145-
return self.inlet_stream_including_asv.mass_rate_kg_per_h
136+
return 0.0
137+
return self.inlet_stream_including_asv.mass_rate_kg_per_h
146138

147139
@property
148140
def is_valid(self) -> bool:

0 commit comments

Comments
 (0)