TRNSYS provides printegrators to integrate values over specific periods.
If specific values are missed, the entire simulation needs to be run again, while printing this value.
If a value is available at a lower level, this integration can be done in post-processing.
The following is some suggested code that would do this:
def integrate_values(df: _pd.DataFrame, column: str, new_index: _pd.DatetimeIndex,
to_type: _tp.Literal["hourly", "daily", "weekly", "monthly"],
time_step_in_minutes: int | None = None
):
if to_type == "hourly":
index = df.index.hour
elif to_type == "daily":
index = df.index.date
elif to_type == "weekly":
index = df.index.week
elif to_type == "monthly":
index = df.index.month
df_integrated = df.groupby(index)[column].sum()
df_integrated.index = new_index
if time_step_in_minutes is not None:
conversion_factor = 60./time_step_in_minutes
df_integrated /= conversion_factor
return df_integrated
sim.step["el_from_grid_trnsys"] = sim.step["ElecPelGrid_kW"].clip(lower=0)
sim.monthly["el_from_grid_trnsys"] = integrate_values(sim.step, "el_from_grid_trnsys",
new_index=sim.monthly.index, to_type="monthly",
time_step_in_minutes=2)
sim.step["el_grid_feed_in_trnsys"] = abs(sim.step["ElecPelGrid_kW"].clip(upper=0))
sim.monthly["el_grid_feed_in_trnsys"] = integrate_values(sim.step, "el_grid_feed_in_trnsys",
new_index=sim.monthly.index, to_type="monthly",
time_step_in_minutes=2)
TRNSYS provides printegrators to integrate values over specific periods.
If specific values are missed, the entire simulation needs to be run again, while printing this value.
If a value is available at a lower level, this integration can be done in post-processing.
The following is some suggested code that would do this: