Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Step-up transformer tap changer support: linear search control logic #883

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
186 commits
Select commit Hold shift + click to select a range
66ce29b
angle measurement type enum
petersalemink95 Dec 24, 2024
411f160
current sensor input
petersalemink95 Dec 24, 2024
51c972d
current sensor update
petersalemink95 Dec 24, 2024
8480a5f
current sensor output
petersalemink95 Dec 24, 2024
8dc4374
current sensor file with license
petersalemink95 Dec 24, 2024
5c09d74
add measured terminal type to input
petersalemink95 Dec 24, 2024
083b2bf
generic current sensor + empty test file
petersalemink95 Dec 24, 2024
2c71a55
disable mypy call-overload
petersalemink95 Dec 24, 2024
a0609c7
change sigma
petersalemink95 Dec 24, 2024
476004d
start in-house factor
TonyXiang8787 Dec 27, 2024
779c307
use in-house factor
TonyXiang8787 Dec 27, 2024
c1db915
some unit test fail
TonyXiang8787 Dec 27, 2024
dbd89dd
fix is normal
TonyXiang8787 Dec 27, 2024
0b356cb
threshold to machine precision
TonyXiang8787 Dec 27, 2024
b6ab388
start perturbation
TonyXiang8787 Dec 27, 2024
16b5068
separate perturb function
TonyXiang8787 Dec 28, 2024
4773781
perturbation ready for matrix
TonyXiang8787 Dec 28, 2024
9e67119
iterative refinement does not compile yet
TonyXiang8787 Dec 28, 2024
58908bf
iterative refinement compiles
TonyXiang8787 Dec 28, 2024
272effd
debug with always enable iterative refinement
TonyXiang8787 Dec 28, 2024
839f852
try machine precision perturbation
TonyXiang8787 Dec 28, 2024
f71760e
works but converge very slow
TonyXiang8787 Dec 28, 2024
c888407
try to fix
TonyXiang8787 Dec 29, 2024
5520774
start observability
TonyXiang8787 Dec 29, 2024
fbee2f0
return observability
TonyXiang8787 Dec 29, 2024
22e37b0
try to consider observability
TonyXiang8787 Dec 29, 2024
cdf5e9c
fix a bug
TonyXiang8787 Dec 29, 2024
b146fb0
use cabs
TonyXiang8787 Dec 29, 2024
3bf4896
move to folder
TonyXiang8787 Dec 30, 2024
66d3e7a
unit test on scalar
TonyXiang8787 Dec 30, 2024
2c71b44
unit test
TonyXiang8787 Dec 30, 2024
42d6ebb
fix NRSE angle bug
TonyXiang8787 Dec 30, 2024
6e396c5
typo
TonyXiang8787 Dec 30, 2024
062a07a
fix voltage phasor check
TonyXiang8787 Dec 30, 2024
2bfd16d
add validation cases
TonyXiang8787 Dec 30, 2024
4cbd053
clang tidy
TonyXiang8787 Dec 30, 2024
abf6392
ignore warning
TonyXiang8787 Dec 30, 2024
2032aa0
disable mypy call-overload
petersalemink95 Dec 24, 2024
5908cdb
cast on the whole expression
TonyXiang8787 Dec 30, 2024
b9bebe0
clang tidy
TonyXiang8787 Dec 30, 2024
b464409
CurrentSensorCalcParam
petersalemink95 Dec 30, 2024
ca09197
CurrentSensor template
petersalemink95 Dec 30, 2024
7c32e89
Revert "change sigma"
petersalemink95 Dec 30, 2024
dade513
i_angle_sigma in constructor
petersalemink95 Dec 30, 2024
b941ae5
Merge pull request #863 from PowerGridModel/feature/disable-mypy
TonyXiang8787 Dec 30, 2024
235c14e
calculate + use base_current
petersalemink95 Dec 30, 2024
5eb52b2
Merge branch 'main' into experimental/pivot-perturbation
TonyXiang8787 Dec 30, 2024
901107d
i angle sigma without division
petersalemink95 Dec 31, 2024
8a30ac7
use scalar
petersalemink95 Dec 31, 2024
5983d7f
add dummy variables for passing build
petersalemink95 Dec 31, 2024
5db6375
DCO Remediation Commit for petersalemink95 <peter.salemink95@gmail.com>
petersalemink95 Dec 31, 2024
a0140b7
add meshed validation case which is failing. adjust error message.
TonyXiang8787 Dec 31, 2024
768037e
calc param with separate i and i_angle variance
petersalemink95 Dec 31, 2024
48656f6
first tests - temp save
petersalemink95 Dec 31, 2024
513ce1e
unused vairables
petersalemink95 Dec 31, 2024
812f018
passing tests
petersalemink95 Dec 31, 2024
d1fbb47
fill update function
petersalemink95 Jan 2, 2025
d9c5ab2
implement inverse + test sym inverse
petersalemink95 Jan 2, 2025
19ca13f
fix scalars
petersalemink95 Jan 2, 2025
3c8f757
fix default initializer
figueroa1395 Jan 2, 2025
b1ca230
test asym inverse
petersalemink95 Jan 2, 2025
285f5f6
move comment
petersalemink95 Jan 2, 2025
fa2e628
Merge branch 'main' into feature/current-sensor-skeleton
petersalemink95 Jan 2, 2025
3121369
Merge pull request #865 from PowerGridModel/fix-nightly-build
figueroa1395 Jan 2, 2025
31b3451
Merge branch 'main' into feature/current-sensor-skeleton
TonyXiang8787 Jan 2, 2025
87fb7c1
double variances
petersalemink95 Jan 3, 2025
30267eb
merge
petersalemink95 Jan 3, 2025
4885381
add angle measurement type to calc param
petersalemink95 Jan 3, 2025
f822818
Merge branch 'main' into experimental/pivot-perturbation
TonyXiang8787 Jan 3, 2025
36d5d20
remove unused/uninitialized member
figueroa1395 Jan 6, 2025
2998cde
Merge pull request #866 from PowerGridModel/fix-quality-gate
figueroa1395 Jan 6, 2025
9d96f3d
add test case for propagating rounding errors in update data
mgovers Dec 18, 2024
ca56ec8
fix for input/update for power sensor
mgovers Dec 18, 2024
09d1dac
fix voltage sensor
mgovers Jan 6, 2025
ac3511e
use inv_sqrt3
petersalemink95 Jan 7, 2025
e0eb9e4
Merge branch 'main' into feature/current-sensor-skeleton
petersalemink95 Jan 7, 2025
c8865db
Merge pull request #860 from PowerGridModel/bugfix/propagating-roundi…
mgovers Jan 7, 2025
da8c0ce
remove convert_direction + test only branch
petersalemink95 Jan 7, 2025
3691a73
only accept branches
petersalemink95 Jan 7, 2025
f30dd34
single base_current_
petersalemink95 Jan 8, 2025
00ab5e5
update switch statement
petersalemink95 Jan 8, 2025
c250f3b
fix indent
petersalemink95 Jan 8, 2025
ef777a7
Merge branch 'main' into feature/step-up-transformer-tap-changer-support
figueroa1395 Jan 8, 2025
87b323f
update calc_param
petersalemink95 Jan 8, 2025
dc5310a
use scalar
petersalemink95 Jan 8, 2025
1d149ac
base_current_inv_
petersalemink95 Jan 8, 2025
52184a9
Validation cases for step up transformer
figueroa1395 Jan 8, 2025
4ae0b48
Merge branch 'main' into feature/current-sensor-skeleton
petersalemink95 Jan 9, 2025
8534402
Merge pull request #861 from PowerGridModel/feature/current-sensor-sk…
petersalemink95 Jan 9, 2025
d947149
added test grid for transformer ranking
figueroa1395 Jan 9, 2025
37347fc
Autogenerate class/module diagrams
emabre Jan 10, 2025
639cef3
Add pylint to doc optional dependencies
emabre Jan 11, 2025
19a96e2
Merge pull request #869 from emabre/feature/695
mgovers Jan 13, 2025
8eb4196
address comments: more realistic values
figueroa1395 Jan 13, 2025
8528892
addressed comments
figueroa1395 Jan 13, 2025
3afbaab
Merge remote-tracking branch 'origin/main' into experimental/pivot-pe…
TonyXiang8787 Jan 13, 2025
659db5a
add license notice
TonyXiang8787 Jan 13, 2025
6ba4c58
typo
TonyXiang8787 Jan 13, 2025
c06ba0d
license notice
TonyXiang8787 Jan 14, 2025
db08734
fix bug where validation errors blew up quadratically
mgovers Jan 14, 2025
03ef877
process comments
mgovers Jan 14, 2025
6dbd020
Merge branch 'main' into bugfix/blow-up-of-validation-errors
mgovers Jan 14, 2025
197335d
improve fix
mgovers Jan 14, 2025
b428bda
Merge pull request #871 from PowerGridModel/bugfix/blow-up-of-validat…
mgovers Jan 14, 2025
ccb4135
disable cmake policy that removes FindBoost.cmake
mgovers Jan 15, 2025
8a2b30b
apply some review suggestions
Jerry-Jinfeng-Guo Jan 16, 2025
349a000
Merge pull request #873 from PowerGridModel/feature/cmake-3-30-compat…
TonyXiang8787 Jan 16, 2025
71ab9c4
revert back set has pivot perturbation
TonyXiang8787 Jan 17, 2025
8d0996b
Use Linux arm64 instance to build Python linux aarch64
TonyXiang8787 Jan 17, 2025
c37ec8e
fix clang-tidy
mgovers Jan 20, 2025
494fb8d
Bump dieghernan/cff-validator from 3 to 4
dependabot[bot] Jan 20, 2025
edc1452
Merge pull request #874 from PowerGridModel/linux-arm64-build
TonyXiang8787 Jan 20, 2025
083d4d4
more clang-tidy fixes
mgovers Jan 20, 2025
f8e6ad3
Merge pull request #876 from PowerGridModel/feature/fix-nightly
mgovers Jan 20, 2025
9faa259
Merge branch 'main' into dependabot/github_actions/dieghernan/cff-val…
TonyXiang8787 Jan 20, 2025
d54b032
use link time optimization for CI release build
TonyXiang8787 Jan 20, 2025
58df5a0
Merge pull request #875 from PowerGridModel/dependabot/github_actions…
TonyXiang8787 Jan 20, 2025
108dfc3
try to turn off odr violation check in address santitizer
TonyXiang8787 Jan 20, 2025
204db40
try define separately
TonyXiang8787 Jan 20, 2025
e916cd0
format
TonyXiang8787 Jan 20, 2025
dfa6437
Update power_grid_model_c/power_grid_model/include/power_grid_model/m…
Jerry-Jinfeng-Guo Jan 21, 2025
06968dd
docs: add link to pgm-ds in readme
jaapschoutenalliander Jan 21, 2025
d094684
Merge pull request #878 from PowerGridModel/feature/link-to-pgm-ds
petersalemink95 Jan 21, 2025
1d15f26
Update power_grid_model_c/power_grid_model/include/power_grid_model/m…
TonyXiang8787 Jan 21, 2025
5537751
Update tests/cpp_unit_tests/test_sparse_lu_solver.cpp
TonyXiang8787 Jan 21, 2025
0e3cbd0
Update tests/cpp_unit_tests/test_sparse_lu_solver.cpp
TonyXiang8787 Jan 21, 2025
b1c3164
Update power_grid_model_c/power_grid_model/include/power_grid_model/m…
TonyXiang8787 Jan 21, 2025
38232f9
Merge branch 'main' into experimental/pivot-perturbation
TonyXiang8787 Jan 21, 2025
cc270c0
new back error
TonyXiang8787 Jan 21, 2025
e81df62
validation case for step up transformer. marked as failing
figueroa1395 Jan 21, 2025
ec55242
Merge branch 'main' into experimental/pivot-perturbation
TonyXiang8787 Jan 21, 2025
e82fae0
assert values
TonyXiang8787 Jan 21, 2025
25eda9f
change comment
TonyXiang8787 Jan 21, 2025
919b566
add more comment
TonyXiang8787 Jan 21, 2025
081005f
avoid bool chaining
TonyXiang8787 Jan 21, 2025
3234d4b
remove ill-conditioned reference
TonyXiang8787 Jan 21, 2025
84dcd7f
Merge pull request #868 from PowerGridModel/step-up-trafo-validation
figueroa1395 Jan 21, 2025
5445c00
perturb only use references
TonyXiang8787 Jan 21, 2025
f59f8e4
relax perturbation
TonyXiang8787 Jan 21, 2025
c338e0d
Merge branch 'main' into feature/use-lto-for-ci-release
TonyXiang8787 Jan 21, 2025
923adff
try to enable LTO for clang-tidy
TonyXiang8787 Jan 21, 2025
fcbbde4
drop python 3.10
figueroa1395 Jan 21, 2025
e60dac1
Revert "try to enable LTO for clang-tidy"
TonyXiang8787 Jan 21, 2025
f204c1c
update build guide
figueroa1395 Jan 21, 2025
96f1626
DCO Remediation Commit for Tony Xiang <tony.xiang@alliander.com>
TonyXiang8787 Jan 21, 2025
8540595
fix other lambda issues
TonyXiang8787 Jan 21, 2025
46ae9f5
revert build guide. to be addressed elsewhere
figueroa1395 Jan 21, 2025
3ef4445
generic include all
TonyXiang8787 Jan 21, 2025
2afd652
Update power_grid_model_c/power_grid_model/include/power_grid_model/m…
TonyXiang8787 Jan 21, 2025
df15f73
optimize loop
TonyXiang8787 Jan 21, 2025
a4be26e
Merge pull request #877 from PowerGridModel/feature/use-lto-for-ci-re…
TonyXiang8787 Jan 21, 2025
df941a7
cmake policy based on version
TonyXiang8787 Jan 21, 2025
6434011
fix eigen initialization bug
TonyXiang8787 Jan 21, 2025
d58735e
Merge branch 'main' into experimental/pivot-perturbation
TonyXiang8787 Jan 22, 2025
78b5783
fix a bug on relevant filter
TonyXiang8787 Jan 22, 2025
b46a6f5
add type hinting to prevent future similar issues
mgovers Jan 22, 2025
7b67212
resolve some sonar-cloud issues
mgovers Jan 23, 2025
9fc25ef
Merge pull request #881 from PowerGridModel/fix/attribute-relevant-fi…
mgovers Jan 23, 2025
9f31867
Merge branch 'main' into experimental/pivot-perturbation
TonyXiang8787 Jan 24, 2025
5fb5aa0
set new cap
TonyXiang8787 Jan 24, 2025
e3d9c4f
Merge pull request #862 from PowerGridModel/experimental/pivot-pertur…
TonyXiang8787 Jan 24, 2025
80a4f93
Merge branch 'main' into drop-python-3.10
mgovers Jan 27, 2025
fda8c26
Merge pull request #879 from PowerGridModel/drop-python-3.10
mgovers Jan 27, 2025
0a7eb30
init branch
Jerry-Jinfeng-Guo Jan 27, 2025
51c42bf
improve docs on batch error
mgovers Jan 27, 2025
52831a9
fix for inf loop
petersalemink95 Jan 27, 2025
b4fafc2
validation test
petersalemink95 Jan 27, 2025
4f09f65
Merge branch 'test/auto-tap-test' into bug/auto-tap-inf-loop
petersalemink95 Jan 27, 2025
f8c88bf
clean-up
petersalemink95 Jan 27, 2025
7e7d7ed
merge origin
petersalemink95 Jan 27, 2025
257a1cb
match c++ exception with Python
petersalemink95 Jan 28, 2025
9bbd858
Merge branch 'test/auto-tap-test' into bug/auto-tap-inf-loop
petersalemink95 Jan 28, 2025
01bd0a4
Merge pull request #884 from PowerGridModel/feature/improve-documenta…
TonyXiang8787 Jan 28, 2025
b4174d3
add error to tests
petersalemink95 Jan 28, 2025
b623400
Merge branch 'test/auto-tap-test' into bug/auto-tap-inf-loop
petersalemink95 Jan 28, 2025
44c5272
linter
petersalemink95 Jan 28, 2025
f3868ee
Merge branch 'test/auto-tap-test' into bug/auto-tap-inf-loop
petersalemink95 Jan 28, 2025
4bf2a28
++ instead of +=1
petersalemink95 Jan 28, 2025
c167b26
Merge pull request #885 from PowerGridModel/bug/auto-tap-inf-loop
petersalemink95 Jan 28, 2025
f813cd0
Merge branch 'main' into test/auto-tap-test
petersalemink95 Jan 28, 2025
9215351
Merge pull request #887 from PowerGridModel/test/auto-tap-test
mgovers Jan 28, 2025
87950c4
Merge branch 'main' into feature/step-up-transformer-tap-changer-support
Jerry-Jinfeng-Guo Jan 28, 2025
5ad1752
Merge branch 'feature/step-up-transformer-tap-changer-support' into f…
Jerry-Jinfeng-Guo Jan 28, 2025
ddb8a6d
[skip ci] w.i.p. log not yet compile with template and concepts
Jerry-Jinfeng-Guo Jan 28, 2025
0f50854
logic in place
Jerry-Jinfeng-Guo Jan 29, 2025
01b5cbb
minor
Jerry-Jinfeng-Guo Jan 29, 2025
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 .clang-tidy
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ readability-*,
-readability-function-cognitive-complexity,
-readability-identifier-length,
-readability-magic-numbers,
-bugprone-unchecked-optional-access,
'

WarningsAsErrors: '*'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/citations.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,4 @@ jobs:
run: |
sudo apt-get update && sudo apt-get install -y r-base
- name: Validate CITATION.cff
uses: dieghernan/cff-validator@v3
uses: dieghernan/cff-validator@v4
6 changes: 1 addition & 5 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ jobs:
os: ubuntu-24.04
cibw_build: "*_x86_64"
- platform: linux-aarch64
os: ubuntu-24.04
os: ubuntu-24.04-arm
cibw_build: "*_aarch64"
- platform: macos
os: macos-14
Expand All @@ -208,10 +208,6 @@ jobs:
name: version
path: .

- name: Set up QEMU
if: matrix.os == 'ubuntu-24.04'
uses: docker/setup-qemu-action@v3

- name: Set up XCode
if: matrix.os == 'macos-14'
uses: maxim-lobanov/setup-xcode@v1
Expand Down
7 changes: 7 additions & 0 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ build:
os: "ubuntu-22.04"
tools:
python: "3.11"
apt_packages:
- graphviz
jobs:
post_install:
# Build package with doc requirements from pyproject.optional-dependencies
Expand All @@ -21,6 +23,11 @@ build:
- find power_grid_model_c/power_grid_model_c/include -name *.h -exec sed -i -r "s/PGM_API //g" {} \;
# build doxygen for C header
- cd docs/doxygen && doxygen && cd ../..
# build class and package diagrams
- pyreverse --no-standalone -o dot src/power_grid_model
- ccomps -x classes.dot | dot -Grankdir=LR -Nfontsize=13 -Efontsize=13 | gvpack -m100 -array_l1 | neato -n2 -Tsvg -o docs/_static/classes.svg
- dot packages.dot -Grankdir=TD -Nfontsize=13 -Efontsize=13 -Tsvg -o docs/_static/packages.svg
- rm packages.dot classes.dot
# download support
- wget -P docs/release_and_support https://github.com/PowerGridModel/.github/raw/main/RELEASE.md
- wget -P docs/release_and_support https://github.com/PowerGridModel/.github/raw/main/SUPPORT.md
Expand Down
7 changes: 6 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,13 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

include(GNUInstallDirs)

find_package(Eigen3 CONFIG REQUIRED)
if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.30.0")
# libboost-headers packaged by conda does not come with BoostConfig.cmake
cmake_policy(SET CMP0167 OLD)
endif()

find_package(Boost REQUIRED)
find_package(Eigen3 CONFIG REQUIRED)
find_package(nlohmann_json CONFIG REQUIRED)
find_package(msgpack-cxx REQUIRED)

Expand Down
13 changes: 11 additions & 2 deletions CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,10 @@
},
{
"name": "ci-clang-release",
"inherits": "clang-release"
"inherits": "clang-release",
"cacheVariables": {
"CMAKE_INTERPROCEDURAL_OPTIMIZATION": "TRUE"
}
},
{
"name": "ci-gcc-debug",
Expand All @@ -270,7 +273,13 @@
"name": "ci-gcc-release",
"inherits": [
"gcc-release"
]
],
"cacheVariables": {
"CMAKE_INTERPROCEDURAL_OPTIMIZATION": "TRUE"
},
"environment": {
"ASAN_OPTIONS": "detect_odr_violation=0"
}
},
{
"name": "ci-sonar",
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ Currently, it supports the following calculations:

See the [power-grid-model documentation](https://power-grid-model.readthedocs.io/en/stable/) for more information.
For various conversions to the power-grid-model, refer to the [power-grid-model-io](https://github.com/PowerGridModel/power-grid-model-io) repository.
For an extended python interface to the the power-grid-model, refer to the [power-grid-model-ds](https://github.com/PowerGridModel/power-grid-model-ds) repository.

```{note}
Want to be updated on the latest news and releases? Subscribe to the Power Grid Model mailing list by sending an (empty) email to: powergridmodel+subscribe@lists.lfenergy.org
Expand Down
39 changes: 39 additions & 0 deletions code_generation/data/attribute_classes/input.json
Original file line number Diff line number Diff line change
Expand Up @@ -494,6 +494,45 @@
"description": "line drop compensation reactance"
}
]
},
{
"name": "GenericCurrentSensorInput",
"base": "SensorInput",
"attributes": [
{
"data_type": "MeasuredTerminalType",
"names": "measured_terminal_type",
"description": "type of measured terminal"
},
{
"data_type": "AngleMeasurementType",
"names": "angle_measurement_type",
"description": "type of angle measurement"
},
{
"data_type": "double",
"names": [
"i_sigma",
"i_angle_sigma"
],
"description": "sigma of error margin of current (angle) measurement"
}
]
},
{
"name": "CurrentSensorInput",
"base": "GenericCurrentSensorInput",
"is_template": true,
"attributes": [
{
"data_type": "RealValue<sym>",
"names": [
"i_measured",
"i_angle_measured"
],
"description": "measured current and current angle"
}
]
}
]
}
15 changes: 15 additions & 0 deletions code_generation/data/attribute_classes/output.json
Original file line number Diff line number Diff line change
Expand Up @@ -293,6 +293,21 @@
"base": "BaseOutput",
"is_template": false,
"attributes": []
},
{
"name": "CurrentSensorOutput",
"base": "BaseOutput",
"is_template": true,
"attributes": [
{
"data_type": "RealValue<sym>",
"names": [
"i_residual",
"i_angle_residual"
],
"description": "deviation between the measured value and calculated value"
}
]
}
]
}
23 changes: 23 additions & 0 deletions code_generation/data/attribute_classes/update.json
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,29 @@
"description": "line drop compensation reactance"
}
]
},
{
"name": "CurrentSensorUpdate",
"base": "BaseUpdate",
"is_template": true,
"attributes": [
{
"data_type": "double",
"names": [
"i_sigma",
"i_angle_sigma"
],
"description": "sigma of error margin of current (angle) measurement"
},
{
"data_type": "RealValue<sym>",
"names": [
"i_measured",
"i_angle_measured"
],
"description": "measured current and current angle"
}
]
}
]
}
37 changes: 37 additions & 0 deletions docs/advanced_documentation/python-wrapper-design.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<!--
SPDX-FileCopyrightText: Contributors to the Power Grid Model project <powergridmodel@lfenergy.org>

SPDX-License-Identifier: MPL-2.0
-->

# Design of the Python Wrapper Package

The structure of the `power_grid_model` Python package is shown here below by means of the corresponding class and package diagrams.

## Class Graph Diagram

This is the class diagram of the `power_grid_model` package.

```{note}
Only classes that have connections to other classes are shown in this diagram.
```

```{raw} html
<div style="overflow-x: auto; white-space: nowrap;">
<img src="../_static/classes.svg" style="max-width: none;" alt="Classe diagram">
</div>.
```

## Package Graph Diagram

This is the package diagram of the `power_grid_model` package.

```{note}
Only modules that import (or are impored by) other modules are shown in this diagram.
```

```{raw} html
<div style="overflow-x: auto; white-space: nowrap;">
<img src="../_static/packages.svg" style="max-width: none;" alt="Package diagram">
</div>.
```
2 changes: 2 additions & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ Currently, it supports both symmetric and asymmetric calculations for the follow
* Short Circuit

For conversions from various data format to the power-grid-model, refer to the [power-grid-model-io](https://github.com/PowerGridModel/power-grid-model-io) repository.
For an extended python interface to the the power-grid-model, refer to the [power-grid-model-ds](https://github.com/PowerGridModel/power-grid-model-ds) repository.

```{note}
Do you wish to be updated on the latest news and releases? Subscribe to the Power Grid Model mailing list by sending an (empty) email to: powergridmodel+subscribe@lists.lfenergy.org
Expand Down Expand Up @@ -100,6 +101,7 @@ advanced_documentation/native-data-interface
advanced_documentation/build-guide
advanced_documentation/c-api
advanced_documentation/core-design
advanced_documentation/python-wrapper-design
```
```{toctree}
:caption: "Contribution"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -444,6 +444,52 @@ struct TransformerTapRegulatorInput {
operator RegulatorInput const&() const { return reinterpret_cast<RegulatorInput const&>(*this); }
};

struct GenericCurrentSensorInput {
ID id{na_IntID}; // ID of the object
ID measured_object{na_IntID}; // ID of the measured object
MeasuredTerminalType measured_terminal_type{static_cast<MeasuredTerminalType>(na_IntS)}; // type of measured terminal
AngleMeasurementType angle_measurement_type{static_cast<AngleMeasurementType>(na_IntS)}; // type of angle measurement
double i_sigma{nan}; // sigma of error margin of current (angle) measurement
double i_angle_sigma{nan}; // sigma of error margin of current (angle) measurement

// implicit conversions to BaseInput
operator BaseInput&() { return reinterpret_cast<BaseInput&>(*this); }
operator BaseInput const&() const { return reinterpret_cast<BaseInput const&>(*this); }

// implicit conversions to SensorInput
operator SensorInput&() { return reinterpret_cast<SensorInput&>(*this); }
operator SensorInput const&() const { return reinterpret_cast<SensorInput const&>(*this); }
};

template <symmetry_tag sym_type>
struct CurrentSensorInput {
using sym = sym_type;

ID id{na_IntID}; // ID of the object
ID measured_object{na_IntID}; // ID of the measured object
MeasuredTerminalType measured_terminal_type{static_cast<MeasuredTerminalType>(na_IntS)}; // type of measured terminal
AngleMeasurementType angle_measurement_type{static_cast<AngleMeasurementType>(na_IntS)}; // type of angle measurement
double i_sigma{nan}; // sigma of error margin of current (angle) measurement
double i_angle_sigma{nan}; // sigma of error margin of current (angle) measurement
RealValue<sym> i_measured{nan}; // measured current and current angle
RealValue<sym> i_angle_measured{nan}; // measured current and current angle

// implicit conversions to BaseInput
operator BaseInput&() { return reinterpret_cast<BaseInput&>(*this); }
operator BaseInput const&() const { return reinterpret_cast<BaseInput const&>(*this); }

// implicit conversions to SensorInput
operator SensorInput&() { return reinterpret_cast<SensorInput&>(*this); }
operator SensorInput const&() const { return reinterpret_cast<SensorInput const&>(*this); }

// implicit conversions to GenericCurrentSensorInput
operator GenericCurrentSensorInput&() { return reinterpret_cast<GenericCurrentSensorInput&>(*this); }
operator GenericCurrentSensorInput const&() const { return reinterpret_cast<GenericCurrentSensorInput const&>(*this); }
};

using SymCurrentSensorInput = CurrentSensorInput<symmetric_t>;
using AsymCurrentSensorInput = CurrentSensorInput<asymmetric_t>;



} // namespace power_grid_model
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -396,6 +396,38 @@ struct get_attributes_list<TransformerTapRegulatorInput> {
};
};

template<>
struct get_attributes_list<GenericCurrentSensorInput> {
static constexpr std::array<MetaAttribute, 6> value{
// all attributes including base class

meta_data_gen::get_meta_attribute<&GenericCurrentSensorInput::id>(offsetof(GenericCurrentSensorInput, id), "id"),
meta_data_gen::get_meta_attribute<&GenericCurrentSensorInput::measured_object>(offsetof(GenericCurrentSensorInput, measured_object), "measured_object"),
meta_data_gen::get_meta_attribute<&GenericCurrentSensorInput::measured_terminal_type>(offsetof(GenericCurrentSensorInput, measured_terminal_type), "measured_terminal_type"),
meta_data_gen::get_meta_attribute<&GenericCurrentSensorInput::angle_measurement_type>(offsetof(GenericCurrentSensorInput, angle_measurement_type), "angle_measurement_type"),
meta_data_gen::get_meta_attribute<&GenericCurrentSensorInput::i_sigma>(offsetof(GenericCurrentSensorInput, i_sigma), "i_sigma"),
meta_data_gen::get_meta_attribute<&GenericCurrentSensorInput::i_angle_sigma>(offsetof(GenericCurrentSensorInput, i_angle_sigma), "i_angle_sigma"),
};
};

template <symmetry_tag sym_type>
struct get_attributes_list<CurrentSensorInput<sym_type>> {
using sym = sym_type;

static constexpr std::array<MetaAttribute, 8> value{
// all attributes including base class

meta_data_gen::get_meta_attribute<&CurrentSensorInput<sym>::id>(offsetof(CurrentSensorInput<sym>, id), "id"),
meta_data_gen::get_meta_attribute<&CurrentSensorInput<sym>::measured_object>(offsetof(CurrentSensorInput<sym>, measured_object), "measured_object"),
meta_data_gen::get_meta_attribute<&CurrentSensorInput<sym>::measured_terminal_type>(offsetof(CurrentSensorInput<sym>, measured_terminal_type), "measured_terminal_type"),
meta_data_gen::get_meta_attribute<&CurrentSensorInput<sym>::angle_measurement_type>(offsetof(CurrentSensorInput<sym>, angle_measurement_type), "angle_measurement_type"),
meta_data_gen::get_meta_attribute<&CurrentSensorInput<sym>::i_sigma>(offsetof(CurrentSensorInput<sym>, i_sigma), "i_sigma"),
meta_data_gen::get_meta_attribute<&CurrentSensorInput<sym>::i_angle_sigma>(offsetof(CurrentSensorInput<sym>, i_angle_sigma), "i_angle_sigma"),
meta_data_gen::get_meta_attribute<&CurrentSensorInput<sym>::i_measured>(offsetof(CurrentSensorInput<sym>, i_measured), "i_measured"),
meta_data_gen::get_meta_attribute<&CurrentSensorInput<sym>::i_angle_measured>(offsetof(CurrentSensorInput<sym>, i_angle_measured), "i_angle_measured"),
};
};




Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,20 @@ struct get_attributes_list<RegulatorShortCircuitOutput> {
};
};

template <symmetry_tag sym_type>
struct get_attributes_list<CurrentSensorOutput<sym_type>> {
using sym = sym_type;

static constexpr std::array<MetaAttribute, 4> value{
// all attributes including base class

meta_data_gen::get_meta_attribute<&CurrentSensorOutput<sym>::id>(offsetof(CurrentSensorOutput<sym>, id), "id"),
meta_data_gen::get_meta_attribute<&CurrentSensorOutput<sym>::energized>(offsetof(CurrentSensorOutput<sym>, energized), "energized"),
meta_data_gen::get_meta_attribute<&CurrentSensorOutput<sym>::i_residual>(offsetof(CurrentSensorOutput<sym>, i_residual), "i_residual"),
meta_data_gen::get_meta_attribute<&CurrentSensorOutput<sym>::i_angle_residual>(offsetof(CurrentSensorOutput<sym>, i_angle_residual), "i_angle_residual"),
};
};




Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,21 @@ struct get_attributes_list<TransformerTapRegulatorUpdate> {
};
};

template <symmetry_tag sym_type>
struct get_attributes_list<CurrentSensorUpdate<sym_type>> {
using sym = sym_type;

static constexpr std::array<MetaAttribute, 5> value{
// all attributes including base class

meta_data_gen::get_meta_attribute<&CurrentSensorUpdate<sym>::id>(offsetof(CurrentSensorUpdate<sym>, id), "id"),
meta_data_gen::get_meta_attribute<&CurrentSensorUpdate<sym>::i_sigma>(offsetof(CurrentSensorUpdate<sym>, i_sigma), "i_sigma"),
meta_data_gen::get_meta_attribute<&CurrentSensorUpdate<sym>::i_angle_sigma>(offsetof(CurrentSensorUpdate<sym>, i_angle_sigma), "i_angle_sigma"),
meta_data_gen::get_meta_attribute<&CurrentSensorUpdate<sym>::i_measured>(offsetof(CurrentSensorUpdate<sym>, i_measured), "i_measured"),
meta_data_gen::get_meta_attribute<&CurrentSensorUpdate<sym>::i_angle_measured>(offsetof(CurrentSensorUpdate<sym>, i_angle_measured), "i_angle_measured"),
};
};




Expand Down
Loading
Loading