Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/drafts/next.draft.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ STP: "flare" column has been added to STP Export - for `FIXED` installations onl
## Bug Fixes

- Hardened compressor PH flash handling so invalid thermodynamic states are no longer used in compressor outlet calculations.
- 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.

## Breaking changes

Expand Down
40 changes: 16 additions & 24 deletions src/libecalc/domain/process/compressor/core/results.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,65 +84,57 @@ def create_empty(cls) -> CompressorTrainStageResultSingleTimeStep:
def inlet_actual_rate_m3_per_hour(self) -> float:
"""Actual inlet rate in Am3/hour."""
if self.inlet_stream is None:
return np.nan
else:
return self.inlet_stream.volumetric_rate_m3_per_hour
return 0.0
return self.inlet_stream.volumetric_rate_m3_per_hour

@property
def inlet_actual_rate_asv_corrected_m3_per_hour(self) -> float:
"""Actual inlet rate in Am3/hour, corrected for ASV."""
if self.inlet_stream_including_asv is None:
return np.nan
else:
return self.inlet_stream_including_asv.volumetric_rate_m3_per_hour
return 0.0
return self.inlet_stream_including_asv.volumetric_rate_m3_per_hour

@property
def standard_rate_sm3_per_day(self) -> float:
"""Standard inlet rate in Sm3/day."""
if self.inlet_stream is None:
return np.nan
else:
return self.inlet_stream.standard_rate_sm3_per_day
return 0.0
return self.inlet_stream.standard_rate_sm3_per_day

@property
def standard_rate_asv_corrected_sm3_per_day(self) -> float:
"""Standard inlet rate in Sm3/day, corrected for ASV."""
if self.inlet_stream_including_asv is None:
return np.nan
else:
return self.inlet_stream_including_asv.standard_rate_sm3_per_day
return 0.0
return self.inlet_stream_including_asv.standard_rate_sm3_per_day

@property
def outlet_actual_rate_m3_per_hour(self) -> float:
"""Actual outlet rate in Am3/hour."""
if self.outlet_stream is None:
return np.nan
else:
return self.outlet_stream.volumetric_rate_m3_per_hour
return 0.0
return self.outlet_stream.volumetric_rate_m3_per_hour

@property
def outlet_actual_rate_asv_corrected_m3_per_hour(self) -> float:
"""Actual outlet rate in Am3/hour, corrected for ASV."""
if self.outlet_stream_including_asv is None:
return np.nan
else:
return self.outlet_stream_including_asv.volumetric_rate_m3_per_hour
return 0.0
return self.outlet_stream_including_asv.volumetric_rate_m3_per_hour

@property
def mass_rate_kg_per_hour(self) -> float:
"""Mass rate in kg/hour"""
if self.inlet_stream is None:
return np.nan
else:
return self.inlet_stream.mass_rate_kg_per_h
return 0.0
return self.inlet_stream.mass_rate_kg_per_h

@property
def mass_rate_asv_corrected_kg_per_hour(self) -> float:
"""Mass rate in kg/hour, corrected for ASV."""
if self.inlet_stream_including_asv is None:
return np.nan
else:
return self.inlet_stream_including_asv.mass_rate_kg_per_h
return 0.0
return self.inlet_stream_including_asv.mass_rate_kg_per_h

@property
def is_valid(self) -> bool:
Expand Down
Loading
Loading