diff --git a/docs/examples/State Estimation Example.ipynb b/docs/examples/State Estimation Example.ipynb
index 9a11124536..5411a33e4f 100644
--- a/docs/examples/State Estimation Example.ipynb
+++ b/docs/examples/State Estimation Example.ipynb
@@ -147,14 +147,14 @@
" MeasuredTerminalType.branch_from,\n",
"]\n",
"sym_current_sensor[\"angle_measurement_type\"] = [\n",
- " AngleMeasurementType.local_angle,\n",
+ " AngleMeasurementType.global_angle,\n",
" AngleMeasurementType.local_angle,\n",
" AngleMeasurementType.local_angle,\n",
"]\n",
"sym_current_sensor[\"i_sigma\"] = [100, 100, 100]\n",
"sym_current_sensor[\"i_angle_sigma\"] = [0.1, 0.1, 0.1]\n",
"sym_current_sensor[\"i_measured\"] = [978.814, 806.486, 776.753]\n",
- "sym_current_sensor[\"i_angle_measured\"] = [1.325, 1.368, 1.349]\n",
+ "sym_current_sensor[\"i_angle_measured\"] = [-0.20864859135578062, 1.368, 1.349]\n",
"\n",
"# all\n",
"input_data = {\n",
@@ -313,37 +313,37 @@
"type": "float"
}
],
- "ref": "a6e7d989-5998-45bf-86e7-a4931f20100b",
+ "ref": "d4208ec4-053c-4fbe-8ed8-28acc06e2c36",
"rows": [
[
"0",
"1",
"1",
- "0.998883105508261",
- "10488.27260783674",
- "0.0139517077504464",
- "31200328.01436846",
- "6755259.5347174425"
+ "0.9988831084547745",
+ "10488.272638775132",
+ "0.013951706380949211",
+ "31200329.141273886",
+ "6755258.476748327"
],
[
"1",
"2",
"1",
- "0.9522779842100326",
- "9998.918834205342",
- "-0.00938102438453505",
- "-20021412.25071719",
- "-4812473.950293278"
+ "0.9522779869831288",
+ "9998.918863322853",
+ "-0.00938102833253912",
+ "-20021413.042150345",
+ "-4812473.12993689"
],
[
"2",
"6",
"1",
- "0.962198050503647",
- "10103.079530288294",
- "-0.005094994693614059",
- "-9968971.385563152",
- "-1955178.0688977723"
+ "0.9621980533219164",
+ "10103.079559880123",
+ "-0.0050949978831099675",
+ "-9968971.662229644",
+ "-1955177.789986951"
]
],
"shape": {
@@ -385,29 +385,29 @@
"
1 | \n",
" 1 | \n",
" 0.998883 | \n",
- " 10488.272608 | \n",
+ " 10488.272639 | \n",
" 0.013952 | \n",
" 3.120033e+07 | \n",
- " 6.755260e+06 | \n",
+ " 6.755258e+06 | \n",
" \n",
" \n",
" | 1 | \n",
" 2 | \n",
" 1 | \n",
" 0.952278 | \n",
- " 9998.918834 | \n",
+ " 9998.918863 | \n",
" -0.009381 | \n",
" -2.002141e+07 | \n",
- " -4.812474e+06 | \n",
+ " -4.812473e+06 | \n",
"
\n",
" \n",
" | 2 | \n",
" 6 | \n",
" 1 | \n",
" 0.962198 | \n",
- " 10103.079530 | \n",
+ " 10103.079560 | \n",
" -0.005095 | \n",
- " -9.968971e+06 | \n",
+ " -9.968972e+06 | \n",
" -1.955178e+06 | \n",
"
\n",
" \n",
@@ -416,9 +416,9 @@
],
"text/plain": [
" id energized u_pu u u_angle p q\n",
- "0 1 1 0.998883 10488.272608 0.013952 3.120033e+07 6.755260e+06\n",
- "1 2 1 0.952278 9998.918834 -0.009381 -2.002141e+07 -4.812474e+06\n",
- "2 6 1 0.962198 10103.079530 -0.005095 -9.968971e+06 -1.955178e+06"
+ "0 1 1 0.998883 10488.272639 0.013952 3.120033e+07 6.755258e+06\n",
+ "1 2 1 0.952278 9998.918863 -0.009381 -2.002141e+07 -4.812473e+06\n",
+ "2 6 1 0.962198 10103.079560 -0.005095 -9.968972e+06 -1.955178e+06"
]
},
"metadata": {},
@@ -496,49 +496,49 @@
"type": "float"
}
],
- "ref": "2583e337-cf08-4a98-a85d-a37b59cd5a95",
+ "ref": "1c71236e-d86f-42da-8c34-06c18d899166",
"rows": [
[
"0",
"3",
"1",
- "0.9839662565967597",
- "17361932.916925427",
- "3929896.867020286",
- "979.9036411151974",
- "17801146.142797504",
- "-16638620.167827902",
- "-3681085.99926099",
- "983.9662565967598",
- "17040952.884836126"
+ "0.9839662806034554",
+ "17361933.57170148",
+ "3929896.2511004177",
+ "979.9036658939409",
+ "17801146.645443603",
+ "-16638620.786666146",
+ "-3681085.356524907",
+ "983.9662806034554",
+ "17040953.350223716"
],
[
"1",
"5",
"1",
- "0.20596174905327938",
- "-3382792.082889292",
- "-1131387.9510322888",
- "205.9617490532794",
- "3566976.446768259",
- "3413780.3461151817",
- "838798.2309692331",
- "200.88640027400496",
- "3515320.571981936"
+ "0.2059617546517118",
+ "-3382792.2554841996",
+ "-1131387.7734119822",
+ "205.9617546517118",
+ "3566976.5541127403",
+ "3413780.520579557",
+ "838798.0529906373",
+ "200.88640694069767",
+ "3515320.6989390478"
],
[
"2",
"8",
"1",
- "0.7812594842898822",
- "13838395.097443003",
- "2825362.6676971843",
- "777.480096381324",
- "14123875.285379415",
- "-13382751.731678305",
- "-2793976.2998670056",
- "781.2594842898823",
- "13671296.48116656"
+ "0.7812595019018519",
+ "13838395.569572411",
+ "2825362.2256479375",
+ "777.4801146842773",
+ "14123875.659537632",
+ "-13382752.182809198",
+ "-2793975.842977588",
+ "781.2595019018519",
+ "13671296.82940235"
]
],
"shape": {
@@ -585,12 +585,12 @@
" 1 | \n",
" 0.983966 | \n",
" 1.736193e+07 | \n",
- " 3.929897e+06 | \n",
- " 979.903641 | \n",
+ " 3.929896e+06 | \n",
+ " 979.903666 | \n",
" 1.780115e+07 | \n",
" -1.663862e+07 | \n",
- " -3.681086e+06 | \n",
- " 983.966257 | \n",
+ " -3.681085e+06 | \n",
+ " 983.966281 | \n",
" 1.704095e+07 | \n",
" \n",
" \n",
@@ -600,25 +600,25 @@
" | 0.205962 | \n",
" -3.382792e+06 | \n",
" -1.131388e+06 | \n",
- " 205.961749 | \n",
- " 3.566976e+06 | \n",
- " 3.413780e+06 | \n",
- " 8.387982e+05 | \n",
- " 200.886400 | \n",
+ " 205.961755 | \n",
+ " 3.566977e+06 | \n",
+ " 3.413781e+06 | \n",
+ " 8.387981e+05 | \n",
+ " 200.886407 | \n",
" 3.515321e+06 | \n",
"
\n",
" \n",
" | 2 | \n",
" 8 | \n",
" 1 | \n",
- " 0.781259 | \n",
+ " 0.781260 | \n",
" 1.383840e+07 | \n",
- " 2.825363e+06 | \n",
- " 777.480096 | \n",
+ " 2.825362e+06 | \n",
+ " 777.480115 | \n",
" 1.412388e+07 | \n",
" -1.338275e+07 | \n",
" -2.793976e+06 | \n",
- " 781.259484 | \n",
+ " 781.259502 | \n",
" 1.367130e+07 | \n",
"
\n",
" \n",
@@ -627,14 +627,14 @@
],
"text/plain": [
" id energized loading p_from q_from i_from \\\n",
- "0 3 1 0.983966 1.736193e+07 3.929897e+06 979.903641 \n",
- "1 5 1 0.205962 -3.382792e+06 -1.131388e+06 205.961749 \n",
- "2 8 1 0.781259 1.383840e+07 2.825363e+06 777.480096 \n",
+ "0 3 1 0.983966 1.736193e+07 3.929896e+06 979.903666 \n",
+ "1 5 1 0.205962 -3.382792e+06 -1.131388e+06 205.961755 \n",
+ "2 8 1 0.781260 1.383840e+07 2.825362e+06 777.480115 \n",
"\n",
" s_from p_to q_to i_to s_to \n",
- "0 1.780115e+07 -1.663862e+07 -3.681086e+06 983.966257 1.704095e+07 \n",
- "1 3.566976e+06 3.413780e+06 8.387982e+05 200.886400 3.515321e+06 \n",
- "2 1.412388e+07 -1.338275e+07 -2.793976e+06 781.259484 1.367130e+07 "
+ "0 1.780115e+07 -1.663862e+07 -3.681085e+06 983.966281 1.704095e+07 \n",
+ "1 3.566977e+06 3.413781e+06 8.387981e+05 200.886407 3.515321e+06 \n",
+ "2 1.412388e+07 -1.338275e+07 -2.793976e+06 781.259502 1.367130e+07 "
]
},
"metadata": {},
@@ -692,27 +692,27 @@
"type": "float"
}
],
- "ref": "2b4aea35-c988-4d03-9e15-424a00b61172",
+ "ref": "eb667da2-17fa-4238-bf0b-d71ea7a1c589",
"rows": [
[
"0",
"4",
"1",
- "20021412.25071719",
- "4812473.950293278",
- "1188.9891440639801",
- "20591669.5300653",
- "0.9723064087389565"
+ "20021413.042150345",
+ "4812473.12993689",
+ "1188.9891739639088",
+ "20591670.107855566",
+ "0.972306419891232"
],
[
"1",
"7",
"1",
- "9968971.385563152",
- "1955178.0688977723",
- "580.5397974464564",
- "10158893.235351758",
- "0.9813048680216758"
+ "9968971.662229644",
+ "1955177.789986951",
+ "580.5398081933141",
+ "10158893.453166831",
+ "0.9813048742156083"
]
],
"shape": {
@@ -754,8 +754,8 @@
" 4 | \n",
" 1 | \n",
" 2.002141e+07 | \n",
- " 4.812474e+06 | \n",
- " 1188.989144 | \n",
+ " 4.812473e+06 | \n",
+ " 1188.989174 | \n",
" 2.059167e+07 | \n",
" 0.972306 | \n",
" \n",
@@ -763,9 +763,9 @@
" 1 | \n",
" 7 | \n",
" 1 | \n",
- " 9.968971e+06 | \n",
+ " 9.968972e+06 | \n",
" 1.955178e+06 | \n",
- " 580.539797 | \n",
+ " 580.539808 | \n",
" 1.015889e+07 | \n",
" 0.981305 | \n",
" \n",
@@ -775,8 +775,8 @@
],
"text/plain": [
" id energized p q i s \\\n",
- "0 4 1 2.002141e+07 4.812474e+06 1188.989144 2.059167e+07 \n",
- "1 7 1 9.968971e+06 1.955178e+06 580.539797 1.015889e+07 \n",
+ "0 4 1 2.002141e+07 4.812473e+06 1188.989174 2.059167e+07 \n",
+ "1 7 1 9.968972e+06 1.955178e+06 580.539808 1.015889e+07 \n",
"\n",
" pf \n",
"0 0.972306 \n",
@@ -820,14 +820,6 @@
"**In the following, state estimation is performed with the Newton-Raphson method. Note the difference in the results for the nodes compared to the results from the iterative linear method.**"
]
},
- {
- "cell_type": "markdown",
- "id": "3b75b0d1",
- "metadata": {},
- "source": [
- "***Note: At the time of writing, global angle current sensors are not yet supported for state estimation with the Newton Raphson calculation method.***"
- ]
- },
{
"cell_type": "code",
"execution_count": 7,
@@ -886,37 +878,37 @@
"type": "float"
}
],
- "ref": "caea82fd-6eb9-44c5-8642-342e94b06de3",
+ "ref": "d7f8ec6d-b55f-4816-a763-fe49637dfa00",
"rows": [
[
"0",
"1",
"1",
- "0.9991710381816102",
- "10491.295900906907",
- "0.013902776698068324",
- "31142583.571411327",
- "6983679.675587834"
+ "0.9991708901200401",
+ "10491.294346260422",
+ "0.013902784770788483",
+ "31142585.04346322",
+ "6983679.275171502"
],
[
"1",
"2",
"1",
- "0.952401975007945",
- "10000.220737583422",
- "-0.009023471573391229",
- "-19972810.645222906",
- "-4996913.716750917"
+ "0.9524018187530439",
+ "10000.21909690696",
+ "-0.009023473027201348",
+ "-19972811.415234227",
+ "-4996912.929141694"
],
[
"2",
"6",
"1",
- "0.9623763232439356",
- "10104.951394061323",
- "-0.004879305124677138",
- "-9960845.146609124",
- "-2000371.618627113"
+ "0.9623761687766939",
+ "10104.949772155285",
+ "-0.004879304472340826",
+ "-9960845.389604798",
+ "-2000371.3300378183"
]
],
"shape": {
@@ -958,30 +950,30 @@
" 1 | \n",
" 1 | \n",
" 0.999171 | \n",
- " 10491.295901 | \n",
+ " 10491.294346 | \n",
" 0.013903 | \n",
- " 3.114258e+07 | \n",
- " 6.983680e+06 | \n",
+ " 3.114259e+07 | \n",
+ " 6.983679e+06 | \n",
" \n",
" \n",
" | 1 | \n",
" 2 | \n",
" 1 | \n",
" 0.952402 | \n",
- " 10000.220738 | \n",
+ " 10000.219097 | \n",
" -0.009023 | \n",
" -1.997281e+07 | \n",
- " -4.996914e+06 | \n",
+ " -4.996913e+06 | \n",
"
\n",
" \n",
" | 2 | \n",
" 6 | \n",
" 1 | \n",
" 0.962376 | \n",
- " 10104.951394 | \n",
+ " 10104.949772 | \n",
" -0.004879 | \n",
" -9.960845e+06 | \n",
- " -2.000372e+06 | \n",
+ " -2.000371e+06 | \n",
"
\n",
" \n",
"\n",
@@ -989,9 +981,9 @@
],
"text/plain": [
" id energized u_pu u u_angle p q\n",
- "0 1 1 0.999171 10491.295901 0.013903 3.114258e+07 6.983680e+06\n",
- "1 2 1 0.952402 10000.220738 -0.009023 -1.997281e+07 -4.996914e+06\n",
- "2 6 1 0.962376 10104.951394 -0.004879 -9.960845e+06 -2.000372e+06"
+ "0 1 1 0.999171 10491.294346 0.013903 3.114259e+07 6.983679e+06\n",
+ "1 2 1 0.952402 10000.219097 -0.009023 -1.997281e+07 -4.996913e+06\n",
+ "2 6 1 0.962376 10104.949772 -0.004879 -9.960845e+06 -2.000371e+06"
]
},
"metadata": {},
@@ -1071,27 +1063,27 @@
"type": "float"
}
],
- "ref": "a4f08673-f9d4-4767-9972-28a30110f2e9",
+ "ref": "253b7f66-6c72-4dda-a78c-dabcca55d3eb",
"rows": [
[
"0",
"1",
"1",
- "0.9991437674327667",
- "10491.00955804405",
- "0.013840775559241087",
- "31099408.499957506",
- "7028384.093707517"
+ "0.9991437674327666",
+ "10491.009558044048",
+ "0.013840775559241085",
+ "31099408.499957386",
+ "7028384.093707515"
],
[
"1",
"2",
"1",
- "0.9524178651683304",
+ "0.9524178651683305",
"10000.38758426747",
- "-0.008984925191110308",
- "-19919628.609156385",
- "-5002840.651668097"
+ "-0.008984925191110287",
+ "-19919628.609156225",
+ "-5002840.651668073"
],
[
"2",
@@ -1099,9 +1091,9 @@
"1",
"0.9623167164236469",
"10104.325522448293",
- "-0.004855850368130788",
- "-9973746.110207152",
- "-2041416.173354753"
+ "-0.004855850368130793",
+ "-9973746.110207208",
+ "-2041416.173354726"
]
],
"shape": {
@@ -1301,37 +1293,37 @@
"type": "float"
}
],
- "ref": "32799643-7af0-4303-a188-2df3c4c455aa",
+ "ref": "33664645-b7b9-4c4a-aa4f-5dc6a1e12d14",
"rows": [
[
"0",
"1",
"1",
- "0.9989385385268099",
- "10488.854654531504",
- "0.01136001123709097",
- "31136434.596432924",
- "6783582.245855995"
+ "0.9989385424783656",
+ "10488.854696022838",
+ "0.011360008830932673",
+ "31136436.028492313",
+ "6783580.872185905"
],
[
"1",
"2",
"1",
- "0.9523781053492837",
- "9999.970106167479",
- "-0.01196892169392874",
- "-20049653.33460453",
- "-4759283.446917456"
+ "0.952378109145919",
+ "9999.97014603215",
+ "-0.011968926982357539",
+ "-20049654.07294122",
+ "-4759282.686797079"
],
[
"2",
"6",
"1",
- "0.9623034612157979",
- "10104.186342765877",
- "-0.0074960884705240465",
- "-9880384.194081154",
- "-2039703.8029571807"
+ "0.9623034650076148",
+ "10104.186382579956",
+ "-0.007496093629550958",
+ "-9880384.817412749",
+ "-2039703.1408614179"
]
],
"shape": {
@@ -1373,17 +1365,17 @@
" 1 | \n",
" 1 | \n",
" 0.998939 | \n",
- " 10488.854655 | \n",
+ " 10488.854696 | \n",
" 0.011360 | \n",
- " 3.113643e+07 | \n",
- " 6.783582e+06 | \n",
+ " 3.113644e+07 | \n",
+ " 6.783581e+06 | \n",
" \n",
" \n",
" | 1 | \n",
" 2 | \n",
" 1 | \n",
" 0.952378 | \n",
- " 9999.970106 | \n",
+ " 9999.970146 | \n",
" -0.011969 | \n",
" -2.004965e+07 | \n",
" -4.759283e+06 | \n",
@@ -1393,10 +1385,10 @@
" 6 | \n",
" 1 | \n",
" 0.962303 | \n",
- " 10104.186343 | \n",
+ " 10104.186383 | \n",
" -0.007496 | \n",
- " -9.880384e+06 | \n",
- " -2.039704e+06 | \n",
+ " -9.880385e+06 | \n",
+ " -2.039703e+06 | \n",
"
\n",
" \n",
"\n",
@@ -1404,9 +1396,9 @@
],
"text/plain": [
" id energized u_pu u u_angle p q\n",
- "0 1 1 0.998939 10488.854655 0.011360 3.113643e+07 6.783582e+06\n",
- "1 2 1 0.952378 9999.970106 -0.011969 -2.004965e+07 -4.759283e+06\n",
- "2 6 1 0.962303 10104.186343 -0.007496 -9.880384e+06 -2.039704e+06"
+ "0 1 1 0.998939 10488.854696 0.011360 3.113644e+07 6.783581e+06\n",
+ "1 2 1 0.952378 9999.970146 -0.011969 -2.004965e+07 -4.759283e+06\n",
+ "2 6 1 0.962303 10104.186383 -0.007496 -9.880385e+06 -2.039703e+06"
]
},
"metadata": {},
@@ -1599,10 +1591,10 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "[[10465.44334795 9977.00921626 10080.55294686]\n",
- " [10480.47973115 9986.25420521 10093.14548916]\n",
- " [10415.61043717 9919.8471072 10025.79644647]\n",
- " [10451.69929631 9957.73804314 10066.52666673]]\n"
+ "[[10465.44337889 9977.00924537 10080.55297645]\n",
+ " [10480.47976209 9986.25423433 10093.14551875]\n",
+ " [10415.6104826 9919.84715153 10025.79649139]\n",
+ " [10451.69932494 9957.73806947 10066.52669289]]\n"
]
}
],
diff --git a/docs/user_manual/calculations.md b/docs/user_manual/calculations.md
index 78a829f062..2e4fc64b57 100644
--- a/docs/user_manual/calculations.md
+++ b/docs/user_manual/calculations.md
@@ -116,11 +116,11 @@ See also the [current sensor component documentation](./components.md#global-ang
```
```{note}
-It is not possible to mix [power sensors](./components.md#generic-current-sensor) with
-[current sensors](#./components.mdgeneric-current-sensor) on the same terminal of the same component.
+It is not possible to mix [power sensors](./components.md#generic-power-sensor) with
+[current sensors](./components.md#generic-current-sensor) on the same terminal of the same component.
It is also not possible to mix
-[current sensors with global angle measurement type](#./components.mdgeneric-current-sensor) with
-[current sensors with local angle measurement type](#./components.mdgeneric-current-sensor) on the same terminal of the
+[current sensors with global angle measurement type](./components.md#generic-current-sensor) with
+[current sensors with local angle measurement type](./components.md#generic-current-sensor) on the same terminal of the
same component.
However, such mixing of sensor types is allowed as long as they are on different terminals.
```
@@ -133,11 +133,6 @@ On the other hand with unobservable systems, exceptions raised from calculations
prevented.
```
-```{warning}
-At the time of writing, the component [global angle current sensor](./components.md#global-angle-current-sensors)
-is not supported in the calculation of [Newton-Raphson state estimation](#newton-raphson-state-estimation).
-```
-
##### Necessary observability condition
Based on the requirements of observability mentioned above, users need to satisfy at least the following conditions for
@@ -378,14 +373,8 @@ The algorithm is as follows:
1. Build $Y_{bus}$ matrix
2. Initialization of $U_N^0$ to $1$ plus the intrinsic phase shift of transformers
3. Calculate injected currents: $I_N^i$ for $i^{th}$ iteration.
- The injected currents are calculated as per ZIP model of loads and generation using $U_N$.
- $
- \begin{eqnarray}
- I_N = \overline{S_{Z}} \cdot U_{N}
- + \overline{(\frac{S_{I}}{U_{N}})} \cdot |U_{N}|
- + \overline{(\frac{S_{P}}{U_N})}
- \end{eqnarray}
- $
+ The injected currents are calculated as per ZIP model of loads and generation using $U_N$:
+ $I_N = \overline{S_{Z}} \cdot U_{N} + \overline{(\frac{S_{I}}{U_{N}})} \cdot |U_{N}| +\overline{(\frac{S_{P}}{U_N})}$
4. Solve linear equation: $YU_N^i = I_N^i$
5. Check convergence: If maximum voltage deviation from the previous iteration is greater than the tolerance setting
(i.e., $u^{(i-1)}_\sigma > u_\epsilon$), then go back to step 3.
@@ -546,8 +535,8 @@ Where $S_k$ and $\sigma_{P,k}$ and $\sigma_{Q,k}$ are the measured value and the
appliances.
```{note}
-It is not possible to mix [power sensors](./components.md#generic-current-sensor) with
-[current sensors](#./components.mdgeneric-current-sensor) on the same terminal of the same component.
+It is not possible to mix [power sensors](./components.md#generic-power-sensor) with
+[current sensors](./components.md#generic-current-sensor) on the same terminal of the same component.
It is also not possible to mix
[current sensors with global angle measurement type](./components.md#global-angle-current-sensors) with
[current sensors with local angle measurement type](./components.md#local-angle-current-sensors) on the same terminal
@@ -776,11 +765,6 @@ As for the [iterative linear](#iterative-linear-state-estimation) approach, duri
at each bus are updated using ones from the previous iteration.
The system error of the phase shift converges to zero.
-```{note}
-Newton-Raphson state estimation does not support current sensors with `global_angle` `angle_measurement_type` at this
-moment. See also [this issue](https://github.com/PowerGridModel/power-grid-model/issues/967).
-```
-
```{warning}
The algorithm will assume angles to be zero by default (see the details about voltage sensors).
In observable systems this helps better outputting correct results.
diff --git a/docs/user_manual/components.md b/docs/user_manual/components.md
index 98e8269bf8..56e28671ae 100644
--- a/docs/user_manual/components.md
+++ b/docs/user_manual/components.md
@@ -836,11 +836,11 @@ is placed for it to function.
```
```{note}
-It is not possible to mix [power sensors](./components.md#generic-current-sensor) with
-[current sensors](#./components.mdgeneric-current-sensor) on the same terminal of the same component.
+It is not possible to mix [power sensors](./components.md#generic-power-sensor) with
+[current sensors](./components.md#generic-current-sensor) on the same terminal of the same component.
It is also not possible to mix
-[current sensors with global angle measurement type](#./components.mdgeneric-current-sensor) with
-[current sensors with local angle measurement type](#./components.mdgeneric-current-sensor) on the same terminal of the
+[current sensors with global angle measurement type](./components.md#generic-current-sensor) with
+[current sensors with local angle measurement type](./components.md#generic-current-sensor) on the same terminal of the
same component.
However, such mixing of sensor types is allowed as long as they are on different terminals.
```
@@ -923,11 +923,6 @@ $$
### Generic Current Sensor
-```{warning}
-At the time of writing, state estimation with current sensors with `global_angle` `angle_measurement_type` is not
-supported by the Newton-Raphson calculation method.
-```
-
* type name: `generic_current_sensor`
`current_sensor` is an abstract class for symmetric and asymmetric current sensor and is derived from
@@ -941,11 +936,11 @@ link is a `branch`.
```
```{note}
-It is not possible to mix [power sensors](./components.md#generic-current-sensor) with
-[current sensors](#./components.mdgeneric-current-sensor) on the same terminal of the same component.
+It is not possible to mix [power sensors](./components.md#generic-power-sensor) with
+[current sensors](./components.md#generic-current-sensor) on the same terminal of the same component.
It is also not possible to mix
-[current sensors with global angle measurement type](#./components.mdgeneric-current-sensor) with
-[current sensors with local angle measurement type](#./components.mdgeneric-current-sensor) on the same terminal of the
+[current sensors with global angle measurement type](./components.md#generic-current-sensor) with
+[current sensors with local angle measurement type](./components.md#generic-current-sensor) on the same terminal of the
same component.
However, such mixing of sensor types is allowed as long as they are on different terminals.
```
@@ -961,11 +956,6 @@ However, such mixing of sensor types is allowed as long as they are on different
#### Current Sensor Concrete Types
-```{warning}
-At the time of writing, state estimation with current sensors with `global_angle` `angle_measurement_type` is not
-supported by the Newton-Raphson calculation method.
-```
-
There are two concrete types of current sensor.
They share similar attributes: the meaning of `RealValueInput` is different, as shown in the table below.
@@ -1026,11 +1016,6 @@ $$
\end{eqnarray}
$$
-```{warning}
-At the time of writing, state estimation with current sensors with `global_angle` `angle_measurement_type` is not
-supported by the Newton-Raphson calculation method.
-```
-
##### Local angle current sensors
Current sensors with `angle_measurement_type` equal to `AngleMeasurementType.local_angle` measure the phase shift
diff --git a/power_grid_model_c/power_grid_model/include/power_grid_model/main_model_impl.hpp b/power_grid_model_c/power_grid_model/include/power_grid_model/main_model_impl.hpp
index a3e481adca..5211e6d4f9 100644
--- a/power_grid_model_c/power_grid_model/include/power_grid_model/main_model_impl.hpp
+++ b/power_grid_model_c/power_grid_model/include/power_grid_model/main_model_impl.hpp
@@ -559,18 +559,7 @@ class MainModelImpl, ComponentLis
return *meta_data_;
}
- void check_no_experimental_features_used(Options const& options) const {
- if (options.calculation_type == CalculationType::state_estimation &&
- options.calculation_method == CalculationMethod::newton_raphson &&
- state_.components.template size() > 0 &&
- std::ranges::any_of(
- state_.components.template citer(), [](auto const& current_sensor) {
- return current_sensor.get_angle_measurement_type() == AngleMeasurementType::global_angle;
- })) {
- throw ExperimentalFeature{
- "Newton-Raphson state estimation is not implemented for global angle current sensors"};
- }
- }
+ void check_no_experimental_features_used(Options const& /*options*/) const {}
private:
template
diff --git a/tests/data/state_estimation/current-sensor/global-current-sensor/params.json b/tests/data/state_estimation/current-sensor/global-current-sensor/params.json
index ec21167a01..1c7166cb4b 100644
--- a/tests/data/state_estimation/current-sensor/global-current-sensor/params.json
+++ b/tests/data/state_estimation/current-sensor/global-current-sensor/params.json
@@ -7,10 +7,5 @@
"atol": {
"default": 1e-8,
".+_residual": 5e-4
- },
- "extra_params": {
- "newton_raphson": {
- "experimental_features": "enabled"
- }
}
}
\ No newline at end of file
diff --git a/tests/native_api_tests/test_api_model.cpp b/tests/native_api_tests/test_api_model.cpp
index f19157c443..1482b61b84 100644
--- a/tests/native_api_tests/test_api_model.cpp
+++ b/tests/native_api_tests/test_api_model.cpp
@@ -1062,54 +1062,6 @@ TEST_CASE("API Model") {
}
}
}
-
- SUBCASE("Global angle current sensor for NRSE is experimental: not implemented") {
- auto const* const input_data_se_json = R"json({
- "version": "1.0",
- "type": "input",
- "is_batch": false,
- "attributes": {},
- "data": {
- "node": [
- {"id": 1, "u_rated": 10000},
- {"id": 2, "u_rated": 10000}
- ],
- "line": [
- {"id": 3, "from_node": 1, "to_node": 2, "from_status": 0, "to_status": 0, "r1": 0.000416, "x1": 0.000136, "c1": 1e-09, "tan1": 0}
- ],
- "sym_current_sensor": [
- {"id": 4, "measured_object": 3, "measured_terminal_type": 0, "angle_measurement_type": 0, "i_sigma": 1, "i_angle_sigma": 0.05, "i_measured": 10, "i_angle_measured": 0.3},
- {"id": 5, "measured_object": 3, "measured_terminal_type": 1, "angle_measurement_type": 1, "i_sigma": 1, "i_angle_sigma": 0.05, "i_measured": 10, "i_angle_measured": 0.3}
- ]
- }
-})json";
-
- auto const owning_input_dataset_se = load_dataset(input_data_se_json);
- auto const& input_dataset_se = owning_input_dataset_se.dataset;
-
- auto const run_se_with_current_sensor = [&input_dataset_se](PGM_CalculationMethod method,
- PGM_ExperimentalFeatures experimental_features) {
- Model model_with_current_sensor{50.0, input_dataset_se};
- Options experimental_options{};
- experimental_options.set_calculation_type(PGM_state_estimation);
- experimental_options.set_calculation_method(method);
- experimental_options.set_experimental_features(experimental_features);
- DatasetMutable const output_dataset{"sym_output", false, 1};
- model_with_current_sensor.calculate(experimental_options, output_dataset);
- };
- for (auto const method : {PGM_default_method, PGM_iterative_linear, PGM_newton_raphson}) {
- CAPTURE(method);
- if (method == PGM_newton_raphson) {
- CHECK_THROWS_WITH_AS(
- run_se_with_current_sensor(method, PGM_experimental_features_disabled),
- "Newton-Raphson state estimation is not implemented for global angle current sensors",
- PowerGridRegularError);
- } else {
- CHECK_NOTHROW(run_se_with_current_sensor(method, PGM_experimental_features_disabled));
- }
- CHECK_NOTHROW(run_se_with_current_sensor(method, PGM_experimental_features_enabled));
- }
- }
}
} // namespace power_grid_model_cpp