Antares Simulator
Power System Simulator
RotateIndex.h
1
/*
2
** Copyright 2007-2025, RTE (https://www.rte-france.com)
3
** See AUTHORS.txt
4
** SPDX-License-Identifier: MPL-2.0
5
** This file is part of Antares-Simulator,
6
** Adequacy and Performance assessment for interconnected energy networks.
7
**
8
** Antares_Simulator is free software: you can redistribute it and/or modify
9
** it under the terms of the Mozilla Public Licence 2.0 as published by
10
** the Mozilla Foundation, either version 2 of the License, or
11
** (at your option) any later version.
12
**
13
** Antares_Simulator is distributed in the hope that it will be useful,
14
** but WITHOUT ANY WARRANTY; without even the implied warranty of
15
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
** Mozilla Public Licence 2.0 for more details.
17
**
18
** You should have received a copy of the Mozilla Public Licence 2.0
19
** along with Antares_Simulator. If not, see <https://opensource.org/license/mpl-2-0/>.
20
*/
21
#pragma once
22
#include "antares/optimisation/linear-problem-api/ILinearProblemData.h"
23
77
inline
int
rotatedIndex(
unsigned
key,
78
int
shift,
79
const
Antares::Optimisation::LinearProblemApi::FillContext
& fillContext)
80
{
81
unsigned
rangeSize = fillContext.getLocalNumberOfTimeSteps();
82
83
// Normalize shift within bounds (to prevent negative indexing)
84
shift = (shift %
static_cast<
int
>
(rangeSize) + rangeSize) %
static_cast<
int
>
(rangeSize);
85
86
// Compute which key's value should be assigned to `key`
87
return
fillContext.getLocalFirstTimeStep()
88
+ (key - fillContext.getLocalFirstTimeStep() + shift) % rangeSize;
89
}
Antares::Optimisation::LinearProblemApi::FillContext
Context for filling linear problem data. Contains temporal information.
Definition:
ILinearProblemData.h:35
src
expressions
include
antares
expressions
RotateIndex.h
Generated by
1.9.1