79 const std::vector<Real> & observation,
80 const std::vector<std::vector<Real>> & old_observations)
const
83 if (old_observations.size() != expected_history_size)
84 mooseError(
"Observation history must contain ",
85 expected_history_size,
86 " stored entries, but got ",
87 old_observations.size(),
90 std::vector<Real> stacked;
93 stacked.insert(stacked.end(), observation.begin(), observation.end());
95 for (
const auto & history_entry : old_observations)
97 if (history_entry.size() != observation.size())
98 mooseError(
"Observation history entries must have the same size as the current "
100 stacked.insert(stacked.end(), history_entry.begin(), history_entry.end());
108 const std::vector<std::vector<Real>> & component_trajectories,
109 const unsigned int time_index)
const
113 if (component_trajectories.empty())
116 const auto trajectory_size = component_trajectories.front().size();
117 if (time_index >= trajectory_size)
118 mooseError(
"Requested observation time index is out of range.");
120 std::vector<Real> stacked;
125 const auto source_index = time_index > lag ? time_index - lag : 0;
126 for (
const auto component_i : make_range(component_trajectories.size()))
127 stacked.push_back(component_trajectories[component_i][source_index]);
void initializeHistory(const std::vector< Real > &observation, std::vector< std::vector< Real > > &old_observations) const
Fill the history buffer with copies of the current observation.
std::vector< Real > expandObservationFactors(const std::vector< Real > &observation_factors) const
Repeat per-observation-entry factors across all stacked timesteps.
void advanceHistory(const std::vector< Real > &observation, std::vector< std::vector< Real > > &old_observations) const
Advance the history buffer by inserting the latest observation.
const unsigned int _input_timesteps
Number of timesteps stacked into each flattened observation.
std::vector< Real > stackCurrentObservation(const std::vector< Real > &observation, const std::vector< std::vector< Real > > &old_observations) const
Flatten the current observation together with its stored history.
std::vector< Real > stackTrajectoryObservation(const std::vector< std::vector< Real > > &component_trajectories, unsigned int time_index) const
Flatten one time slice of observation-component trajectories with causal history.
void validateTrajectoryShape(const std::vector< std::vector< Real > > &component_trajectories) const
Check that all observation-component trajectories have a consistent shape.
LibtorchObservationHistoryHelper(unsigned int input_timesteps)
Build an observation-history helper for libtorch inputs.