From 6e714efc96f50077094a25dd9803852cfdff1c9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikko=20Sar=C3=A9n?= Date: Mon, 26 Aug 2024 16:18:05 +0300 Subject: [PATCH 01/15] Added documentation of the PI and Complex PI controller --- docs/source/control/control_system.rst | 42 + docs/source/control/figs/2dof_Pi.svg | 1346 ++++++++++++ .../control/figs/Complex_vector_2dof_Pi.svg | 1861 +++++++++++++++++ 3 files changed, 3249 insertions(+) create mode 100644 docs/source/control/figs/2dof_Pi.svg create mode 100644 docs/source/control/figs/Complex_vector_2dof_Pi.svg diff --git a/docs/source/control/control_system.rst b/docs/source/control/control_system.rst index 2b0149ae0..f4d9dbb48 100644 --- a/docs/source/control/control_system.rst +++ b/docs/source/control/control_system.rst @@ -13,3 +13,45 @@ By default, discrete-time control systems in *motulator* run the following schem 5. Return the sampling period `T_s` and the duty ratios `d_abc` for the carrier comparison. A template of this main control loop is available in the base class for control systems in :class:`motulator.common.control.ControlSystem`. Using this template is not necessary, but it may simplify the implementation of new control systems. + +PI Controller +------------- + +The figure below shows a two-degree-of-freedom PI controller, where :math:`k_\mathrm{p}` and :math:`k_\mathrm{i}` are the proportional and integral gains, respectively. Furthermore :math:`u(s)` is the controller output, :math:`r(s)` is the reference signal, :math:`y(s)` is the feedback signal, and :math:`1/s` refers to integration. The controllers continous-time counterpart is: + +.. math:: + u(s) = k_{\mathrm{t}}\,r(s) - k_{\mathrm{p}}\,y(s) + \frac{k_{\mathrm{i}}}{s}\bigg(r(s) - y(s)\bigg) + :label: 2DOFPI + +.. figure:: figs/2DOF_PI.svg + :width: 100% + :align: center + :alt: Two-degree-of-freedom PI controller. + +The standard PI 1DOF controller is obtained by choosing :math:`k_\mathrm{t} = k_\mathrm{p}`. The integrator anti-windup is implemented based on the realized controller output. + +The PI controller is implemented in the class :class:`motulator.common.control.PIController`. + +Complex-vector PI controller +---------------------------- + +The figure below shows a 2DOF synchronous-frame complex-vector PI controller which continuous-time counterpart of the controller is [#Bri2000]_: + +.. math:: + \boldsymbol{u}(s) = \boldsymbol{k}_{\mathrm{t}}\,\boldsymbol{r}(s) + - \boldsymbol{k}_{\mathrm{p}}\, \boldsymbol{y}(s) + \frac{\boldsymbol{k}_{\mathrm{i}} + \mathrm{j}\omega \boldsymbol{k}_{\mathrm{t}}}{s}\bigg(\boldsymbol{r}(s) + - \boldsymbol{y}(s)\bigg) + \boldsymbol{u}_{\mathrm{ff}}(s) + :label: complexFFPI + +where :math:`\boldsymbol{u}(s)` is the controller output, :math:`\boldsymbol{r}(s)` is the reference signal, :math:`\boldsymbol{y}(s)` is the feedback signal, :math:`\boldsymbol{k}_{\mathrm{t}}` is the feedforward gain, :math:`\boldsymbol{k}_{\mathrm{p}}` and :math:`\boldsymbol{k}_{\mathrm{i}}` are the proportional and integral gains, respectively, and :math:`\boldsymbol{u}_{\mathrm{ff}}(s)` is the optional feedforward signal. + +.. figure:: figs/Complex_vector_2DOF_PI.svg + :width: 100% + :align: center + :alt: Two-degree-of-freedom complex-vector PI controller, with feedforward. + +The complex-vector PI controller with feedforward is implemented in the class :class:`motulator.common.control.ComplexPIController`. + +.. rubric:: References + +.. [#Bri2000] Briz, Degner, Lorenz, "Analysis and design of current regulators using complex vectors," IEEE Trans. Ind. Appl., 2000, https://doi.org/10.1109/28.845057 \ No newline at end of file diff --git a/docs/source/control/figs/2dof_Pi.svg b/docs/source/control/figs/2dof_Pi.svg new file mode 100644 index 000000000..848fbca60 --- /dev/null +++ b/docs/source/control/figs/2dof_Pi.svg @@ -0,0 +1,1346 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/source/control/figs/Complex_vector_2dof_Pi.svg b/docs/source/control/figs/Complex_vector_2dof_Pi.svg new file mode 100644 index 000000000..bb85b11f6 --- /dev/null +++ b/docs/source/control/figs/Complex_vector_2dof_Pi.svg @@ -0,0 +1,1861 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 69cbced0244139089ebb18a59d3a969e02ac9794 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikko=20Sar=C3=A9n?= Date: Mon, 26 Aug 2024 16:24:16 +0300 Subject: [PATCH 02/15] added arrows at outputs --- docs/source/control/figs/2dof_Pi.svg | 21 ++++++++++++++++++- .../control/figs/Complex_vector_2dof_Pi.svg | 21 ++++++++++++++++++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/docs/source/control/figs/2dof_Pi.svg b/docs/source/control/figs/2dof_Pi.svg index 848fbca60..24d320fd9 100644 --- a/docs/source/control/figs/2dof_Pi.svg +++ b/docs/source/control/figs/2dof_Pi.svg @@ -55,6 +55,25 @@ + + + + + + Date: Tue, 27 Aug 2024 10:05:21 +0300 Subject: [PATCH 03/15] explanation that ACFilter class model both filter and grid impedance dynamics --- docs/source/model/grid/filter_and_grid.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/model/grid/filter_and_grid.rst b/docs/source/model/grid/filter_and_grid.rst index 7ff69d080..eccc86a05 100644 --- a/docs/source/model/grid/filter_and_grid.rst +++ b/docs/source/model/grid/filter_and_grid.rst @@ -1,7 +1,7 @@ AC Filter and Grid Impedance ============================ -This document describes continuous-time models of an AC filter and grid impedance. +This document describes continuous-time models of an AC filter and grid impedance. The dynamics of the AC filters and grid impedance are modeled in the class :class:`motulator.grid.model.ACFilter`. Based on the filter parameters the ACFilter class initializes either an L- or LCL filter. The parameters of the AC filter and grid impedance are defined in the data class :class:`motulator.grid.utils.ACFilterPars`. L Filter -------- From 517aa8ff981d391a508b82b03cf7c8e91c4ca662 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikko=20Sar=C3=A9n?= Date: Tue, 27 Aug 2024 12:46:34 +0300 Subject: [PATCH 04/15] typo fixes in 2dof_pi and complexPi figures, add information about current control scheme in GFL example page --- docs/source/control/figs/2dof_Pi.svg | 10 +- docs/source/control/figs/ComplexFFPI.svg | 3975 +++++++++++++++++ .../control/figs/Complex_vector_2dof_Pi.svg | 42 +- examples/grid/grid_following/README.txt | 15 +- 4 files changed, 4015 insertions(+), 27 deletions(-) create mode 100644 docs/source/control/figs/ComplexFFPI.svg diff --git a/docs/source/control/figs/2dof_Pi.svg b/docs/source/control/figs/2dof_Pi.svg index 24d320fd9..bd1352ed4 100644 --- a/docs/source/control/figs/2dof_Pi.svg +++ b/docs/source/control/figs/2dof_Pi.svg @@ -27,9 +27,9 @@ showguides="true" inkscape:lockguides="false" showgrid="true" - inkscape:zoom="1.371659" - inkscape:cx="292.71124" - inkscape:cy="99.514529" + inkscape:zoom="1.2478589" + inkscape:cx="189.52463" + inkscape:cy="-11.619903" inkscape:window-width="1496" inkscape:window-height="820" inkscape:window-x="0" @@ -417,7 +417,7 @@ d="m 6.5713261,15.864419 17.0074809,3e-6" id="path3" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/source/control/figs/Complex_vector_2dof_Pi.svg b/docs/source/control/figs/Complex_vector_2dof_Pi.svg index 57f2fe86b..b09e206af 100644 --- a/docs/source/control/figs/Complex_vector_2dof_Pi.svg +++ b/docs/source/control/figs/Complex_vector_2dof_Pi.svg @@ -8,7 +8,7 @@ version="1.1" id="svg1" inkscape:version="1.3.2 (091e20e, 2023-11-25)" - sodipodi:docname="Complex_vector_2dof_Pi.svg" + sodipodi:docname="Complex_vector_2dof_Pi_2.svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" @@ -27,9 +27,9 @@ showguides="true" inkscape:lockguides="false" showgrid="true" - inkscape:zoom="1.8942423" - inkscape:cx="243.10512" - inkscape:cy="104.79124" + inkscape:zoom="1.3507242" + inkscape:cx="222.47324" + inkscape:cy="67.001092" inkscape:window-width="1496" inkscape:window-height="820" inkscape:window-x="0" @@ -57,7 +57,7 @@ id="defs1"> + id="path4" /> + id="id-45101908-004b-432f-9536-acbaeaf92817"> + id="id-25908399-0297-4840-a184-20052b7d26ae"> + id="id-b69e5958-452d-4043-91c9-680d8336d9d0"> + id="id-ae87e379-3520-41d0-a437-36d2fcb11420" /> + id="id-d4984f3e-38dc-4e41-b413-a6f33dd1f0c3"> + id="id-6de2c6ca-c2e8-4a54-8c5a-2bc041845c74" /> + id="g1972"> + id="id-eb870fdf-897d-4977-ab74-16ce52206feb" /> + id="g5751"> + id="id-61acdb6b-3c34-4d5f-b535-3427caad6630" /> diff --git a/examples/grid/grid_following/README.txt b/examples/grid/grid_following/README.txt index d4524c1f0..1b5a8eae2 100644 --- a/examples/grid/grid_following/README.txt +++ b/examples/grid/grid_following/README.txt @@ -1,4 +1,17 @@ Grid-Following Control ---------------------- -These examples demonstrate grid-following control. \ No newline at end of file +These examples demonstrate grid-following control. + +The current controller in the grid following converters uses 2DOF synchronous-frame complex-vector PI controller, with an additional feedforward term. The structure of the controller is shown in the figure below: + +.. figure:: /control/figs/ComplexFFPI.svg + :width: 50% + :align: center + :alt: Two-degree-of-freedom complex-vector PI controller, with feedforward. + + The complex-vector gain selection is based on the paper by Briz et al. [#Bri2000]_. More details about the gain selection can be found in the :doc:`/control/drive/current_ctrl` section. + +.. rubric:: References + +.. [#Bri2000] Briz, Degner, Lorenz, "Analysis and design of current regulators using complex vectors," IEEE Trans. Ind. Appl., 2000,https://doi.org/10.1109/28.845057 \ No newline at end of file From f1d00d55cca4dcb2f3c00f0e0abc4dc8502ae076 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juho=20M=C3=A4=C3=A4tt=C3=A4?= Date: Tue, 27 Aug 2024 16:18:33 +0300 Subject: [PATCH 05/15] added control system block diagram --- docs/source/control/control_system.rst | 15 +- docs/source/control/figs/control_system.svg | 6110 +++++++++++++++++++ 2 files changed, 6122 insertions(+), 3 deletions(-) create mode 100644 docs/source/control/figs/control_system.svg diff --git a/docs/source/control/control_system.rst b/docs/source/control/control_system.rst index f4d9dbb48..92306f6ce 100644 --- a/docs/source/control/control_system.rst +++ b/docs/source/control/control_system.rst @@ -1,10 +1,19 @@ Common ====== -Main Control Loop ------------------ +Control System +-------------- -By default, discrete-time control systems in *motulator* run the following scheme in their main control loops: +The figure below shows the structure and data flow of the default control systems used in *motulator*. + +.. figure:: figs/control_system.svg + :width: 100% + :align: center + :alt: Block diagram of the control system. + + Block diagram of the control system. The continuous-time plant model is also shown in red. + +In the figure, :math:`\texttt{monospace}` font is used to denote actual symbol names used in the program. The shaded background represents what is executed during the simulation, while the post-processing is done only after simulation. By default, discrete-time control systems run the following scheme in their main control loops: 1. Get the feedback signals for the controllers. This step may contain first getting the measurements and then optionally computing the observer outputs. These measured and estimated signals are collected to the SimpleNamespace object named `fbk`. 2. Get the reference signals and compute the controller outputs based on the feedback signals `fbk`. These reference signals are collected to the SimpleNamespace object named `ref`. diff --git a/docs/source/control/figs/control_system.svg b/docs/source/control/figs/control_system.svg new file mode 100644 index 000000000..29b3bb58e --- /dev/null +++ b/docs/source/control/figs/control_system.svg @@ -0,0 +1,6110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 02a959e650ae787a3aa73562d3daaa052ec99691 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikko=20Sar=C3=A9n?= Date: Wed, 28 Aug 2024 10:27:57 +0300 Subject: [PATCH 06/15] typo fix --- examples/grid/grid_following/README.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/grid/grid_following/README.txt b/examples/grid/grid_following/README.txt index 1b5a8eae2..1fb6d66d8 100644 --- a/examples/grid/grid_following/README.txt +++ b/examples/grid/grid_following/README.txt @@ -6,11 +6,11 @@ These examples demonstrate grid-following control. The current controller in the grid following converters uses 2DOF synchronous-frame complex-vector PI controller, with an additional feedforward term. The structure of the controller is shown in the figure below: .. figure:: /control/figs/ComplexFFPI.svg - :width: 50% + :width: 60% :align: center :alt: Two-degree-of-freedom complex-vector PI controller, with feedforward. - The complex-vector gain selection is based on the paper by Briz et al. [#Bri2000]_. More details about the gain selection can be found in the :doc:`/control/drive/current_ctrl` section. + The complex-vector gain selection is based on[#Bri2000]_. More details about the gain selection can be found in the :doc:`/control/drive/current_ctrl` section. .. rubric:: References From 0b05e6417eb45d8405da234b158afbd84be3d77a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikko=20Sar=C3=A9n?= Date: Wed, 28 Aug 2024 10:32:02 +0300 Subject: [PATCH 07/15] typo --- examples/grid/grid_following/README.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/grid/grid_following/README.txt b/examples/grid/grid_following/README.txt index 1fb6d66d8..55b2eb63e 100644 --- a/examples/grid/grid_following/README.txt +++ b/examples/grid/grid_following/README.txt @@ -10,7 +10,7 @@ The current controller in the grid following converters uses 2DOF synchronous-fr :align: center :alt: Two-degree-of-freedom complex-vector PI controller, with feedforward. - The complex-vector gain selection is based on[#Bri2000]_. More details about the gain selection can be found in the :doc:`/control/drive/current_ctrl` section. + The complex-vector gain selection is based on [#Bri2000]_. More details about the gain selection can be found in the :doc:`/control/drive/current_ctrl` section. .. rubric:: References From ce198f5123c7ddde84a87fa76fe75f777b1daeba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juho=20M=C3=A4=C3=A4tt=C3=A4?= Date: Wed, 28 Aug 2024 10:50:59 +0300 Subject: [PATCH 08/15] updated links to example scripts in readme, removed comments --- README.md | 3 ++- motulator/common/model/_simulation.py | 3 --- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ee975c638..ea23d587d 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,8 @@ Usage ----- The system models, controllers, reference sequences etc. are easy to configure. As a starting point, example scripts and Jupyter notebooks can be downloaded here: -https://aalto-electric-drives.github.io/motulator/auto_examples/index.html +https://aalto-electric-drives.github.io/motulator/drive_examples/index.html +https://aalto-electric-drives.github.io/motulator/grid_examples/index.html New system models and controllers can be developed using the existing ones as templates. diff --git a/motulator/common/model/_simulation.py b/motulator/common/model/_simulation.py index 202b5a485..df400e20d 100644 --- a/motulator/common/model/_simulation.py +++ b/motulator/common/model/_simulation.py @@ -361,9 +361,6 @@ def rhs(self, t, state_list): if subsystem_rhs is not None: rhs_list += subsystem_rhs - ################## Set the outputs for the interconnections and for the rhs - #self.post_set_outputs(t) - # List of state derivatives return rhs_list From adc6edc526860b229e8f0c76f81b23b5fc4af7e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juho=20M=C3=A4=C3=A4tt=C3=A4?= Date: Thu, 29 Aug 2024 15:58:08 +0300 Subject: [PATCH 09/15] added customized autoAPI template to fix links to GridConverterControlSystem base class in api reference --- docs/_templates/autoapi/index.rst | 13 ++ docs/_templates/autoapi/python/attribute.rst | 1 + docs/_templates/autoapi/python/class.rst | 104 ++++++++++++ docs/_templates/autoapi/python/data.rst | 38 +++++ docs/_templates/autoapi/python/exception.rst | 1 + docs/_templates/autoapi/python/function.rst | 21 +++ docs/_templates/autoapi/python/method.rst | 21 +++ docs/_templates/autoapi/python/module.rst | 170 +++++++++++++++++++ docs/_templates/autoapi/python/package.rst | 1 + docs/_templates/autoapi/python/property.rst | 20 +++ docs/source/conf.py | 3 + 11 files changed, 393 insertions(+) create mode 100644 docs/_templates/autoapi/index.rst create mode 100644 docs/_templates/autoapi/python/attribute.rst create mode 100644 docs/_templates/autoapi/python/class.rst create mode 100644 docs/_templates/autoapi/python/data.rst create mode 100644 docs/_templates/autoapi/python/exception.rst create mode 100644 docs/_templates/autoapi/python/function.rst create mode 100644 docs/_templates/autoapi/python/method.rst create mode 100644 docs/_templates/autoapi/python/module.rst create mode 100644 docs/_templates/autoapi/python/package.rst create mode 100644 docs/_templates/autoapi/python/property.rst diff --git a/docs/_templates/autoapi/index.rst b/docs/_templates/autoapi/index.rst new file mode 100644 index 000000000..2a45554a2 --- /dev/null +++ b/docs/_templates/autoapi/index.rst @@ -0,0 +1,13 @@ +API Reference +============= + +This page contains auto-generated API reference documentation [#f1]_. + +.. toctree:: + :titlesonly: + + {% for page in pages|selectattr("is_top_level_object") %} + {{ page.include_path }} + {% endfor %} + +.. [#f1] Created with `sphinx-autoapi `_ diff --git a/docs/_templates/autoapi/python/attribute.rst b/docs/_templates/autoapi/python/attribute.rst new file mode 100644 index 000000000..ebaba555a --- /dev/null +++ b/docs/_templates/autoapi/python/attribute.rst @@ -0,0 +1 @@ +{% extends "python/data.rst" %} diff --git a/docs/_templates/autoapi/python/class.rst b/docs/_templates/autoapi/python/class.rst new file mode 100644 index 000000000..a2aa1a03b --- /dev/null +++ b/docs/_templates/autoapi/python/class.rst @@ -0,0 +1,104 @@ +{% if obj.display %} + {% if is_own_page %} +{{ obj.id }} +{{ "=" * obj.id | length }} + + {% endif %} + {% set visible_children = obj.children|selectattr("display")|list %} + {% set own_page_children = visible_children|selectattr("type", "in", own_page_types)|list %} + {% if is_own_page and own_page_children %} +.. toctree:: + :hidden: + + {% for child in own_page_children %} + {{ child.include_path }} + {% endfor %} + + {% endif %} +.. py:{{ obj.type }}:: {% if is_own_page %}{{ obj.id }}{% else %}{{ obj.short_name }}{% endif %}{% if obj.args %}({{ obj.args }}){% endif %} + + {% for (args, return_annotation) in obj.overloads %} + {{ " " * (obj.type | length) }} {{ obj.short_name }}{% if args %}({{ args }}){% endif %} + + {% endfor %} + {% if obj.bases %} + {% if "show-inheritance" in autoapi_options %} + + Bases: {% for base in obj.bases %}{% if base == "motulator.grid.control._common.GridConverterControlSystem" %}:class:`GridConverterControlSystem`{% else %}{{ base|link_objs }}{% endif %}{% if not loop.last %}, {% endif %}{% endfor %} + {% endif %} + + + {% if "show-inheritance-diagram" in autoapi_options and obj.bases != ["object"] %} + .. autoapi-inheritance-diagram:: {{ obj.obj["full_name"] }} + :parts: 1 + {% if "private-members" in autoapi_options %} + :private-bases: + {% endif %} + + {% endif %} + {% endif %} + {% if obj.docstring %} + + {{ obj.docstring|indent(3) }} + {% endif %} + {% for obj_item in visible_children %} + {% if obj_item.type not in own_page_types %} + + {{ obj_item.render()|indent(3) }} + {% endif %} + {% endfor %} + {% if is_own_page and own_page_children %} + {% set visible_attributes = own_page_children|selectattr("type", "equalto", "attribute")|list %} + {% if visible_attributes %} +Attributes +---------- + +.. autoapisummary:: + + {% for attribute in visible_attributes %} + {{ attribute.id }} + {% endfor %} + + + {% endif %} + {% set visible_exceptions = own_page_children|selectattr("type", "equalto", "exception")|list %} + {% if visible_exceptions %} +Exceptions +---------- + +.. autoapisummary:: + + {% for exception in visible_exceptions %} + {{ exception.id }} + {% endfor %} + + + {% endif %} + {% set visible_classes = own_page_children|selectattr("type", "equalto", "class")|list %} + {% if visible_classes %} +Classes +------- + +.. autoapisummary:: + + {% for klass in visible_classes %} + {{ klass.id }} + {% endfor %} + + + {% endif %} + {% set visible_methods = own_page_children|selectattr("type", "equalto", "method")|list %} + {% if visible_methods %} +Methods +------- + +.. autoapisummary:: + + {% for method in visible_methods %} + {{ method.id }} + {% endfor %} + + + {% endif %} + {% endif %} +{% endif %} diff --git a/docs/_templates/autoapi/python/data.rst b/docs/_templates/autoapi/python/data.rst new file mode 100644 index 000000000..1a502509d --- /dev/null +++ b/docs/_templates/autoapi/python/data.rst @@ -0,0 +1,38 @@ +{% if obj.display %} + {% if is_own_page %} +{{ obj.id }} +{{ "=" * obj.id | length }} + + {% endif %} +.. py:{{ obj.type }}:: {% if is_own_page %}{{ obj.id }}{% else %}{{ obj.name }}{% endif %} + {% if obj.annotation is not none %} + + :type: {% if obj.annotation %} {{ obj.annotation }}{% endif %} + {% endif %} + {% if obj.value is not none %} + + {% if obj.value.splitlines()|count > 1 %} + :value: Multiline-String + + .. raw:: html + +
Show Value + + .. code-block:: python + + {{ obj.value|indent(width=6,blank=true) }} + + .. raw:: html + +
+ + {% else %} + :value: {{ obj.value|truncate(100) }} + {% endif %} + {% endif %} + + {% if obj.docstring %} + + {{ obj.docstring|indent(3) }} + {% endif %} +{% endif %} diff --git a/docs/_templates/autoapi/python/exception.rst b/docs/_templates/autoapi/python/exception.rst new file mode 100644 index 000000000..92f3d38fd --- /dev/null +++ b/docs/_templates/autoapi/python/exception.rst @@ -0,0 +1 @@ +{% extends "python/class.rst" %} diff --git a/docs/_templates/autoapi/python/function.rst b/docs/_templates/autoapi/python/function.rst new file mode 100644 index 000000000..5dee5aa05 --- /dev/null +++ b/docs/_templates/autoapi/python/function.rst @@ -0,0 +1,21 @@ +{% if obj.display %} + {% if is_own_page %} +{{ obj.id }} +{{ "=" * obj.id | length }} + + {% endif %} +.. py:function:: {% if is_own_page %}{{ obj.id }}{% else %}{{ obj.short_name }}{% endif %}({{ obj.args }}){% if obj.return_annotation is not none %} -> {{ obj.return_annotation }}{% endif %} + {% for (args, return_annotation) in obj.overloads %} + + {%+ if is_own_page %}{{ obj.id }}{% else %}{{ obj.short_name }}{% endif %}({{ args }}){% if return_annotation is not none %} -> {{ return_annotation }}{% endif %} + {% endfor %} + {% for property in obj.properties %} + + :{{ property }}: + {% endfor %} + + {% if obj.docstring %} + + {{ obj.docstring|indent(3) }} + {% endif %} +{% endif %} diff --git a/docs/_templates/autoapi/python/method.rst b/docs/_templates/autoapi/python/method.rst new file mode 100644 index 000000000..12d42de66 --- /dev/null +++ b/docs/_templates/autoapi/python/method.rst @@ -0,0 +1,21 @@ +{% if obj.display %} + {% if is_own_page %} +{{ obj.id }} +{{ "=" * obj.id | length }} + + {% endif %} +.. py:method:: {% if is_own_page %}{{ obj.id }}{% else %}{{ obj.short_name }}{% endif %}({{ obj.args }}){% if obj.return_annotation is not none %} -> {{ obj.return_annotation }}{% endif %} + {% for (args, return_annotation) in obj.overloads %} + + {%+ if is_own_page %}{{ obj.id }}{% else %}{{ obj.short_name }}{% endif %}({{ args }}){% if return_annotation is not none %} -> {{ return_annotation }}{% endif %} + {% endfor %} + {% for property in obj.properties %} + + :{{ property }}: + {% endfor %} + + {% if obj.docstring %} + + {{ obj.docstring|indent(3) }} + {% endif %} +{% endif %} diff --git a/docs/_templates/autoapi/python/module.rst b/docs/_templates/autoapi/python/module.rst new file mode 100644 index 000000000..8e12c3fc8 --- /dev/null +++ b/docs/_templates/autoapi/python/module.rst @@ -0,0 +1,170 @@ +{% if obj.display %} + {% if is_own_page %} +{{ obj.id }} +{{ "=" * obj.id|length }} + +.. py:module:: {{ obj.name }} + + {% if obj.docstring %} +.. autoapi-nested-parse:: + + {{ obj.docstring|indent(3) }} + + {% endif %} + + {% block subpackages %} + {% set visible_subpackages = obj.subpackages|selectattr("display")|list %} + {% if visible_subpackages %} +Subpackages +----------- + +.. toctree:: + :maxdepth: 1 + + {% for subpackage in visible_subpackages %} + {{ subpackage.include_path }} + {% endfor %} + + + {% endif %} + {% endblock %} + {% block submodules %} + {% set visible_submodules = obj.submodules|selectattr("display")|list %} + {% if visible_submodules %} +Submodules +---------- + +.. toctree:: + :maxdepth: 1 + + {% for submodule in visible_submodules %} + {{ submodule.include_path }} + {% endfor %} + + + {% endif %} + {% endblock %} + {% block content %} + {% set visible_children = obj.children|selectattr("display")|list %} + {% if visible_children %} + {% set visible_attributes = visible_children|selectattr("type", "equalto", "data")|list %} + {% if visible_attributes %} + {% if "attribute" in own_page_types or "show-module-summary" in autoapi_options %} +Attributes +---------- + + {% if "attribute" in own_page_types %} +.. toctree:: + :hidden: + + {% for attribute in visible_attributes %} + {{ attribute.include_path }} + {% endfor %} + + {% endif %} +.. autoapisummary:: + + {% for attribute in visible_attributes %} + {{ attribute.id }} + {% endfor %} + {% endif %} + + + {% endif %} + {% set visible_exceptions = visible_children|selectattr("type", "equalto", "exception")|list %} + {% if visible_exceptions %} + {% if "exception" in own_page_types or "show-module-summary" in autoapi_options %} +Exceptions +---------- + + {% if "exception" in own_page_types %} +.. toctree:: + :hidden: + + {% for exception in visible_exceptions %} + {{ exception.include_path }} + {% endfor %} + + {% endif %} +.. autoapisummary:: + + {% for exception in visible_exceptions %} + {{ exception.id }} + {% endfor %} + {% endif %} + + + {% endif %} + {% set visible_classes = visible_children|selectattr("type", "equalto", "class")|list %} + {% if visible_classes %} + {% if "class" in own_page_types or "show-module-summary" in autoapi_options %} +Classes +------- + + {% if "class" in own_page_types %} +.. toctree:: + :hidden: + + {% for klass in visible_classes %} + {{ klass.include_path }} + {% endfor %} + + {% endif %} +.. autoapisummary:: + + {% for klass in visible_classes %} + {{ klass.id }} + {% endfor %} + {% endif %} + + + {% endif %} + {% set visible_functions = visible_children|selectattr("type", "equalto", "function")|list %} + {% if visible_functions %} + {% if "function" in own_page_types or "show-module-summary" in autoapi_options %} +Functions +--------- + + {% if "function" in own_page_types %} +.. toctree:: + :hidden: + + {% for function in visible_functions %} + {{ function.include_path }} + {% endfor %} + + {% endif %} +.. autoapisummary:: + + {% for function in visible_functions %} + {{ function.id }} + {% endfor %} + {% endif %} + + + {% endif %} + {% set this_page_children = visible_children|rejectattr("type", "in", own_page_types)|list %} + {% if this_page_children %} +{{ obj.type|title }} Contents +{{ "-" * obj.type|length }}--------- + + {% for obj_item in this_page_children %} +{{ obj_item.render()|indent(0) }} + {% endfor %} + {% endif %} + {% endif %} + {% endblock %} + {% else %} +.. py:module:: {{ obj.name }} + + {% if obj.docstring %} + .. autoapi-nested-parse:: + + {{ obj.docstring|indent(6) }} + + {% endif %} + {% for obj_item in visible_children %} + {{ obj_item.render()|indent(3) }} + {% endfor %} + {% endif %} +{% endif %} diff --git a/docs/_templates/autoapi/python/package.rst b/docs/_templates/autoapi/python/package.rst new file mode 100644 index 000000000..fb9a64965 --- /dev/null +++ b/docs/_templates/autoapi/python/package.rst @@ -0,0 +1 @@ +{% extends "python/module.rst" %} diff --git a/docs/_templates/autoapi/python/property.rst b/docs/_templates/autoapi/python/property.rst new file mode 100644 index 000000000..3e280dcb1 --- /dev/null +++ b/docs/_templates/autoapi/python/property.rst @@ -0,0 +1,20 @@ +{% if obj.display %} + {% if is_own_page %} +{{ obj.id }} +{{ "=" * obj.id | length }} + + {% endif %} +.. py:property:: {% if is_own_page %}{{ obj.id}}{% else %}{{ obj.short_name }}{% endif %} + {% if obj.annotation %} + + :type: {{ obj.annotation }} + {% endif %} + {% for property in obj.properties %} + + :{{ property }}: + {% endfor %} + + {% if obj.docstring %} + {{ obj.docstring|indent(3) }} + {% endif %} +{% endif %} diff --git a/docs/source/conf.py b/docs/source/conf.py index a9fb8e2ab..23d95b911 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -53,6 +53,9 @@ "imported-members", ] # "private-members", "imported-members", "undoc-members", "special-members", +# Point AutoAPI to a custom template directory +autoapi_template_dir = "../_templates/autoapi" + autoapi_python_class_content = "class" # "both" autoapi_keep_files = True autoapi_add_toctree_entry = False From bffbab8054d18938d3e0927844c721a25669a4ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikko=20Sar=C3=A9n?= Date: Thu, 29 Aug 2024 15:10:29 +0300 Subject: [PATCH 10/15] update the line widths of the control figures to the same as the other --- docs/source/control/figs/2dof_Pi.svg | 316 ++++--- docs/source/control/figs/ComplexFFPI.svg | 894 +++++++++++------- .../control/figs/Complex_vector_2dof_Pi.svg | 453 +++++---- docs/source/control/figs/pll.svg | 6 +- 4 files changed, 1016 insertions(+), 653 deletions(-) diff --git a/docs/source/control/figs/2dof_Pi.svg b/docs/source/control/figs/2dof_Pi.svg index bd1352ed4..3ac0e7f6b 100644 --- a/docs/source/control/figs/2dof_Pi.svg +++ b/docs/source/control/figs/2dof_Pi.svg @@ -27,9 +27,9 @@ showguides="true" inkscape:lockguides="false" showgrid="true" - inkscape:zoom="1.2478589" - inkscape:cx="189.52463" - inkscape:cy="-11.619903" + inkscape:zoom="2.378886" + inkscape:cx="227.20719" + inkscape:cy="72.512932" inkscape:window-width="1496" inkscape:window-height="820" inkscape:window-x="0" @@ -399,21 +399,21 @@ inkscape:groupmode="layer" id="layer1"> + style="stroke-width:0.61732481;stroke-dasharray:none"> + style="stroke-width:0.61732481;stroke-dasharray:none"> + style="stroke-width:0.61732481;stroke-dasharray:none"> + style="stroke-width:0.61732481;stroke-dasharray:none" /> @@ -470,7 +470,7 @@ ns3:stroke-to-path="0" id="g3051-6" ns3:jacobian_sqrt="0.352778" - style="stroke-width:0.607402;stroke-dasharray:none"> + style="stroke-width:0.67242067;stroke-dasharray:none"> + style="stroke-width:0.67242067;stroke-dasharray:none"> + style="stroke-width:0.67242067;stroke-dasharray:none"> + style="stroke-width:0.67242067;stroke-dasharray:none" />
@@ -512,7 +512,7 @@ ns3:stroke-to-path="0" id="g5998" ns3:jacobian_sqrt="0.352778" - style="stroke-width:0.754994;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none" />
@@ -554,7 +554,7 @@ ns3:stroke-to-path="0" id="g5998-5-4" ns3:jacobian_sqrt="0.352778" - style="stroke-width:0.754994;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none" />
@@ -596,7 +596,7 @@ ns3:stroke-to-path="0" id="g5998-5-4-4" ns3:jacobian_sqrt="0.352778" - style="stroke-width:0.754994;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none" /> + style="stroke-width:0.66406822;stroke-dasharray:none"> @@ -733,15 +733,15 @@ fill-opacity="1" id="id-56ea4aa4-f9c7-47ac-b951-2ccd79afe30b" transform="translate(-149.259, -127.843)" - style="stroke-width:0"> + style="stroke-width:0.66406822;stroke-dasharray:none"> + style="stroke-width:0.66406822;stroke-dasharray:none"> + style="stroke-width:0.66406822;stroke-dasharray:none" /> + style="stroke-width:0.66406822;stroke-dasharray:none"> + style="stroke-width:0.66406822;stroke-dasharray:none"> + style="stroke-width:0.66406822;stroke-dasharray:none" /> @@ -774,7 +774,7 @@ ns3:inkscapeversion="1.3.2" id="g1139-3" ns3:jacobian_sqrt="0.3984279413093414" - style="stroke-width:0"> + style="stroke-width:0.66406822;stroke-dasharray:none"> @@ -804,15 +804,15 @@ fill-opacity="1" id="id-80c4e39b-441c-424e-b7d8-07a87dcc6396" transform="translate(-149.259, -127.843)" - style="stroke-width:0"> + style="stroke-width:0.66406822;stroke-dasharray:none"> + style="stroke-width:0.66406822;stroke-dasharray:none"> + style="stroke-width:0.66406822;stroke-dasharray:none" /> + style="stroke-width:0.66406822;stroke-dasharray:none"> + style="stroke-width:0.66406822;stroke-dasharray:none"> + style="stroke-width:0.66406822;stroke-dasharray:none" /> @@ -844,7 +844,8 @@ ns3:stroke-to-path="0" ns3:inkscapeversion="1.3.2" id="g3688" - ns3:jacobian_sqrt="0.352778"> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-149.259, -127.843)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g276" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-b850db1c-46aa-4382-a03c-eeeb41fb064a" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.259, -127.843)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g4684" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-ca1a7476-f383-4426-84ce-a7356e328934" + style="stroke-width:0.74999953;stroke-dasharray:none" /> @@ -902,7 +909,8 @@ ns3:stroke-to-path="0" ns3:inkscapeversion="1.3.2" id="g1947" - ns3:jacobian_sqrt="0.352778"> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-149.009, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g8762" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-174caa8e-1f62-46fe-b36d-d743541b0d78" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.009, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g3389" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-edebef13-99d7-4f0c-ac5d-db71d6a0a815" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.009, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g4685" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-48aaf6db-6a74-4563-96e5-7a569f4662b9" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.009, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g8095" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-de9bf773-6e5a-4b6d-bd36-8601d84893b2" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.009, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g8418" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-e7f25671-cb86-40c7-a237-95f1aca48962" + style="stroke-width:0.74999953;stroke-dasharray:none" /> @@ -1017,7 +1040,8 @@ ns3:stroke-to-path="0" ns3:inkscapeversion="1.3.2" id="g9934" - ns3:jacobian_sqrt="0.352778"> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-149.009, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g8849" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-5dca591f-5529-4119-80e0-c35ac1223890" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.009, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g8370" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-0a3252fb-16d8-4fc4-b81a-1bed1df06b8f" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.009, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g7901" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-f5d34900-fad8-4d37-83e0-bdfafd7bf1b8" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.009, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g1174" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-844d5396-1447-41d2-8314-db32cf14b2a7" + style="stroke-width:0.74999953;stroke-dasharray:none" /> @@ -1113,7 +1149,8 @@ ns3:stroke-to-path="0" ns3:inkscapeversion="1.3.2" id="g6805" - ns3:jacobian_sqrt="0.352778"> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-149.009, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g5331" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-cb72b874-2e00-4cef-9225-83cb3c765284" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.009, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g2408" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-dd935845-a7b8-4ce4-8919-881fe25b7857" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.009, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g6534" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-49f728ca-9f4f-4fe5-b9cc-a09fcd091643" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.009, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g8348" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-d4f04ef9-736e-4cd3-8d02-fe7078460f6c" + style="stroke-width:0.74999953;stroke-dasharray:none" /> @@ -1209,7 +1258,8 @@ ns3:stroke-to-path="0" ns3:inkscapeversion="1.3.2" id="g3635" - ns3:jacobian_sqrt="0.352778"> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-149.009, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g2733" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-b8a40c66-82ed-4a38-8e76-d5a0bae3b0a9" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.009, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g4153" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-ea9e7547-5396-429c-ade7-7bccd0a7a71d" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.009, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g4797" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-2fe1c7cc-bda7-4f0c-83ab-fa62f18f7ad9" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.009, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g4019" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-40a99389-57a5-42fa-82a5-ac313302610a" + style="stroke-width:0.74999953;stroke-dasharray:none" /> @@ -1305,7 +1367,8 @@ ns3:stroke-to-path="0" ns3:inkscapeversion="1.3.2" id="g453" - ns3:jacobian_sqrt="0.352778"> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-149.906, -126.217)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g3854" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-d0893cf4-eb29-4929-9d43-b95c059db6ce" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="id-b0fe4731-c7c6-470e-a5f2-0ab7d1b05834" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.906, -126.217)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g747" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-52964ca5-f492-4102-84c5-e15071b396fd" + style="stroke-width:0.74999953;stroke-dasharray:none" /> diff --git a/docs/source/control/figs/ComplexFFPI.svg b/docs/source/control/figs/ComplexFFPI.svg index 152070e09..bc41abd36 100644 --- a/docs/source/control/figs/ComplexFFPI.svg +++ b/docs/source/control/figs/ComplexFFPI.svg @@ -8,7 +8,7 @@ version="1.1" id="svg1" inkscape:version="1.3.2 (091e20e, 2023-11-25)" - sodipodi:docname="ComplexFFPI_6_nonIMC.svg" + sodipodi:docname="ComplexFFPI.svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" @@ -25,13 +25,13 @@ inkscape:deskcolor="#d1d1d1" inkscape:document-units="mm" showgrid="true" - inkscape:zoom="1.4029444" - inkscape:cx="296.16284" - inkscape:cy="59.874076" - inkscape:window-width="1544" + inkscape:zoom="0.96088539" + inkscape:cx="137.89366" + inkscape:cy="90.541496" + inkscape:window-width="1512" inkscape:window-height="769" inkscape:window-x="0" - inkscape:window-y="55" + inkscape:window-y="38" inkscape:window-maximized="0" inkscape:current-layer="layer1" showguides="true"> @@ -1736,27 +1736,29 @@ id="layer1"> + transform="matrix(0.26458333,0,0,0.26458333,-25.01035,-8.0486271)" + style="stroke-width:1.00000001;stroke-dasharray:none"> + transform="translate(32.182038,-2.0143642)" + style="stroke-width:0.26458333;stroke-dasharray:none"> @@ -1764,27 +1766,28 @@ + transform="matrix(0.35277776,0,0,0.35277776,91.316464,40.430362)" + style="stroke-width:0.75000004;stroke-dasharray:none"> + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75000004;stroke-dasharray:none" /> + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75000004;stroke-dasharray:none" /> + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75000004;stroke-dasharray:none" /> + style="stroke-width:1.21882713;stroke-dasharray:none"> @@ -1792,10 +1795,10 @@ + style="stroke-width:1.57581997;stroke-dasharray:none"> @@ -1803,10 +1806,10 @@ + style="stroke-width:1.57544192;stroke-dasharray:none"> @@ -1814,48 +1817,50 @@ + transform="matrix(0.26458333,0,0,0.26458333,-25.233726,-20.968635)" + style="stroke-width:1.00000001;stroke-dasharray:none"> + transform="matrix(5.2334941e-7,-0.26458333,0.26458333,5.2334941e-7,81.082786,156.11782)" + style="stroke-width:1.00000001;stroke-dasharray:none"> @@ -1863,90 +1868,93 @@ + transform="matrix(0.35277776,0,0,0.35277776,0.81515971,23.414874)" + style="stroke-width:0.75000004;stroke-dasharray:none"> + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75000004;stroke-dasharray:none" /> + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75000004;stroke-dasharray:none" /> + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75000004;stroke-dasharray:none" /> + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75000004;stroke-dasharray:none" /> + transform="matrix(0.26458333,0,0,0.26458333,-24.738642,-10.85542)" + style="stroke-width:1.00000001;stroke-dasharray:none"> + transform="matrix(0.35277776,0,0,0.35277776,113.01641,36.144921)" + style="stroke-width:0.75000004;stroke-dasharray:none"> + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75000004;stroke-dasharray:none" /> + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75000004;stroke-dasharray:none" /> + style="stroke-width:1.37750884;stroke-dasharray:none"> @@ -1954,68 +1962,71 @@ + transform="matrix(0.35277776,0,0,0.35277776,113.13181,49.099622)" + style="stroke-width:0.75000004;stroke-dasharray:none"> + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75000004;stroke-dasharray:none" /> + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75000004;stroke-dasharray:none" /> + transform="matrix(0.35277776,0,0,0.35277776,119.66017,55.509401)" + style="stroke-width:0.75000004;stroke-dasharray:none"> + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75000004;stroke-dasharray:none" /> + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75000004;stroke-dasharray:none" /> + transform="matrix(0.35277776,0,0,0.35277776,86.251459,13.322956)" + style="stroke-width:0.75000004;stroke-dasharray:none"> + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75000004;stroke-dasharray:none" /> + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75000004;stroke-dasharray:none" /> + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75000004;stroke-dasharray:none" /> + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75000004;stroke-dasharray:none" /> + style="stroke-width:1.41827561;stroke-dasharray:none"> @@ -2031,7 +2042,8 @@ ns3:alignment="middle center" ns3:stroke-to-path="0" id="g1493" - ns3:jacobian_sqrt="0.352778"> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-143.78182,-128.91024)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g6690" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-e373da16-9ef0-4533-82de-7ffee043f24d" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g6642" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-e83cf1da-964e-4e4f-9b1c-b6948db35a25" + style="stroke-width:0.74999953;stroke-dasharray:none" /> @@ -2082,7 +2099,8 @@ ns3:alignment="middle center" ns3:stroke-to-path="0" id="g5136" - ns3:jacobian_sqrt="0.352778"> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-145.52543,-216.39523)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g3356" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-5602cf60-099d-45d8-ab7c-baddf6799c64" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-145.52543,-216.39523)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g6901" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-8a8c80ab-0724-4897-9b4c-5bb7e8759977" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + style="stroke-width:1.4069542;stroke-dasharray:none"> @@ -2156,7 +2180,8 @@ ns3:alignment="middle center" ns3:stroke-to-path="0" id="g1493-4" - ns3:jacobian_sqrt="0.352778"> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-143.78182,-128.91024)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g6690-0" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-e373da16-9ef0-4533-82de-7ffee043f24d-9" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g6642-3" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-e83cf1da-964e-4e4f-9b1c-b6948db35a25-7" + style="stroke-width:0.74999953;stroke-dasharray:none" /> @@ -2207,7 +2237,8 @@ ns3:alignment="middle center" ns3:stroke-to-path="0" id="g5136-5" - ns3:jacobian_sqrt="0.352778"> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-145.52543,-216.39523)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g3356-3" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-5602cf60-099d-45d8-ab7c-baddf6799c64-0" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-145.52543,-216.39523)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g6901-8" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-8a8c80ab-0724-4897-9b4c-5bb7e8759977-5" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + style="stroke-width:1.43602211;stroke-dasharray:none"> @@ -2282,7 +2319,7 @@ ns3:stroke-to-path="0" id="g1493-4-1" ns3:jacobian_sqrt="0.352778" - style="stroke-width:1.01251"> + style="stroke-width:0.75938407;stroke-dasharray:none"> + style="stroke-width:0.75938407;stroke-dasharray:none"> + style="stroke-width:0.75938407;stroke-dasharray:none"> + style="stroke-width:0.75938407;stroke-dasharray:none" /> + style="stroke-width:0.75938407;stroke-dasharray:none"> + style="stroke-width:0.75938407;stroke-dasharray:none" /> @@ -2339,7 +2376,7 @@ ns3:stroke-to-path="0" id="g5136-5-1" ns3:jacobian_sqrt="0.352778" - style="stroke-width:1.01251"> + style="stroke-width:0.75938407;stroke-dasharray:none"> + style="stroke-width:0.75938407;stroke-dasharray:none"> + style="stroke-width:0.75938407;stroke-dasharray:none"> + style="stroke-width:0.75938407;stroke-dasharray:none" /> + style="stroke-width:0.75938407;stroke-dasharray:none"> + style="stroke-width:0.75938407;stroke-dasharray:none"> + style="stroke-width:0.75938407;stroke-dasharray:none" /> @@ -2402,7 +2439,8 @@ ns3:alignment="middle center" ns3:stroke-to-path="0" id="g9125" - ns3:jacobian_sqrt="0.352778"> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-149.04,-127.953)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g5919" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-ccbdbe5e-d3e0-4ee3-9216-43fd732264bb" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g8369" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-c5747b22-aa2b-4af8-86b3-189a3dd75083" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g3322" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-b12cb09a-e78b-46b9-9269-ec1d329feab5" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-149.025,-130.265)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g5011-1" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-d64b3479-8d91-4dee-adb4-b6d6597be6ae-5" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.025,-130.265)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g3536-8" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-752563bf-efc2-4d18-b2cc-e759e637ec41-5" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.025,-130.265)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g8091-7" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-2d543dbc-ce00-4197-9189-13bdd4a354f9-9" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.025,-130.265)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g4129-1" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-c81fc80c-cc44-4ad3-a99a-d59abfc5cd93-6" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g8859-1" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-37fb1f22-dfb9-4cdf-8893-2744a52e3249-2" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g2469-0" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-777c4e64-da7f-4fa3-a776-e2019f3cb44a-4" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="matrix(0.35277776,0,0,0.35277776,65.879541,13.46693)" + style="stroke-width:0.75000004;stroke-dasharray:none"> + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75000004;stroke-dasharray:none" /> + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75000004;stroke-dasharray:none" /> + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75000004;stroke-dasharray:none" /> + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75000004;stroke-dasharray:none" /> + style="stroke-width:1.00000001;stroke-dasharray:none"> @@ -2651,26 +2714,27 @@ + style="stroke-width:1.41085096;stroke-dasharray:none"> + transform="matrix(0.26458333,0,0,0.26458333,-36.045541,-13.778111)" + style="stroke-width:1.00000001;stroke-dasharray:none"> @@ -2678,10 +2742,10 @@ + style="stroke-width:1.80315775;stroke-dasharray:none"> @@ -2689,10 +2753,10 @@ + style="stroke-width:1.44013162;stroke-dasharray:none"> @@ -2700,10 +2764,10 @@ + style="stroke-width:1.81719173;stroke-dasharray:none"> @@ -2711,10 +2775,10 @@ + style="stroke-width:1.34727328;stroke-dasharray:none"> @@ -2722,15 +2786,16 @@ + transform="matrix(0.35277776,0,0,0.35277776,41.061277,35.957152)" + style="stroke-width:0.75000004;stroke-dasharray:none"> + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75000004;stroke-dasharray:none" /> + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75000004;stroke-dasharray:none" /> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-149.025,-127.843)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g7476" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-6f8b75b8-bf3d-48d8-83e8-47e0cdd73f84" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.025,-127.843)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g3293" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-c3c04334-03f0-404d-bb67-251597e98fd1" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + style="stroke-width:0.77440727;stroke-dasharray:none"> + style="stroke-width:0.77440727;stroke-dasharray:none"> + style="stroke-width:0.77440727;stroke-dasharray:none"> + style="stroke-width:0.77440727;stroke-dasharray:none" /> + id="id-4569fe0e-d8b1-4c55-acd3-f42457b81e50" + style="stroke-width:0.77440727;stroke-dasharray:none" /> + style="stroke-width:0.77440727;stroke-dasharray:none"> + style="stroke-width:0.77440727;stroke-dasharray:none"> + style="stroke-width:0.77440727;stroke-dasharray:none" /> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-149.212,-127.734)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g5747" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-ca40b66c-9d73-4c59-b26c-649e9996731c" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g6564" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-8fe28a9f-8dd0-49ea-b6e1-6058406f43f3" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g4469" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-84d5429e-551d-4055-9b68-13f117a4cef3" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g5668" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-3cef0719-ddbd-42fe-be46-7ff53bc94ced" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.212,-127.734)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g1662" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-1feccee4-28a2-450f-9e62-ff5bd39e1e48" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g7795" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-bf2c83e9-29d0-4bbd-9680-469677acfdde" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.212,-127.734)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g4990" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-9af74be6-95b8-4d5f-b78e-2d22399a1bd6" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g5599" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-17602d93-d4fa-4de2-85b4-932134fef61f" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g9613" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-4601048b-0a33-49ed-92db-940adf187212" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.212,-127.734)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g2391" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-ecaad3d2-70d8-432b-aadc-34d260ff3c9d" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g1687" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-dafb9557-051e-44e8-ade9-4dc71a3ec3be" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g1969" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-9588100d-24c1-4603-b20d-e414558a88b0" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g2521" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-dca4594e-8a97-4d80-9d2c-66afdba3e52f" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g3166" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-8a6c226d-4362-4a41-8bb8-f581cad94334" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g4459" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-69fbbf35-77e1-4d71-89fb-c78ef76d29ca" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g6755" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-253657a5-0a4e-451b-8f33-07b1a6d1f61d" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.212,-127.734)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g6923" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-ee1f3fb8-bc3a-4c79-950f-6048cbf5f106" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g4457" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-a26077e4-820d-4836-82b4-6f26c325fe0d" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g654" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-fb475534-ded4-4522-820b-ada8c196b939" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g3185" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-eb62c8ba-f287-4919-97dd-dbea449b54c5" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.212,-127.734)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g8263" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-d6deb05e-65a0-4c9c-9bdb-a415a3908d0a" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g5241" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-e8c444b0-ad4d-4a34-ab39-32ba366964dc" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g3725" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-c091cfa3-a7f0-44ae-924b-20516626f02d" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g5418" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-82e9cc45-ed3c-41d6-91ac-8815981df2a3" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g1046" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-691466c1-ad77-4cfa-8d06-618a050c3bb3" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g7530" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-ff0ab30a-daa5-45cb-b986-0a929aa7e0eb" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g6800" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-696e3401-ce38-428d-aee6-6b0c4da25e49" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g206" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-97b48a43-3292-4679-a78f-85f29e2793f1" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.212,-127.734)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g8942" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-92acf193-6455-4738-9952-c0a33b2d53ff" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g6121" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-6b444aae-7b7e-46ab-9986-fcbdcbce3c12" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g1882" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-f200e0fd-7947-4074-9009-6f99d19bdbd6" + style="stroke-width:0.74999953;stroke-dasharray:none" /> @@ -3299,7 +3442,8 @@ ns3:stroke-to-path="0" ns3:inkscapeversion="1.3.2" id="g4070-4" - ns3:jacobian_sqrt="0.352778"> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-146.71509,-129.24236)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g4746-5" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-275e98a6-22ce-477a-afdf-74a0bcbd79b1-9" + style="stroke-width:0.74999953;stroke-dasharray:none" /> @@ -3338,7 +3485,8 @@ ns3:stroke-to-path="0" ns3:inkscapeversion="1.3.2" id="g4070-4-5" - ns3:jacobian_sqrt="0.352778"> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-146.71509,-129.24236)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g4746-5-6" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-275e98a6-22ce-477a-afdf-74a0bcbd79b1-9-1" + style="stroke-width:0.74999953;stroke-dasharray:none" /> @@ -3377,7 +3528,8 @@ ns3:stroke-to-path="0" ns3:inkscapeversion="1.3.2" id="g4070-4-8" - ns3:jacobian_sqrt="0.352778"> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-146.71509,-129.24236)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g4746-5-8" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-275e98a6-22ce-477a-afdf-74a0bcbd79b1-9-4" + style="stroke-width:0.74999953;stroke-dasharray:none" /> @@ -3416,7 +3571,8 @@ ns3:stroke-to-path="0" ns3:inkscapeversion="1.3.2" id="g4070-4-8-6" - ns3:jacobian_sqrt="0.352778"> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-146.71509,-129.24236)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g4746-5-8-0" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-275e98a6-22ce-477a-afdf-74a0bcbd79b1-9-4-9" + style="stroke-width:0.74999953;stroke-dasharray:none" /> @@ -3456,7 +3615,7 @@ ns3:inkscapeversion="1.3.2" id="g4070-7" ns3:jacobian_sqrt="0.352778" - style="stroke-width:1;stroke-dasharray:none"> + style="stroke-width:0.74999953;stroke-dasharray:none"> + style="stroke-width:0.74999953;stroke-dasharray:none"> + style="stroke-width:0.74999953;stroke-dasharray:none"> + style="stroke-width:0.74999953;stroke-dasharray:none" /> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-149.056,-127.953)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g44" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-4eea4ada-a002-47fd-b346-1d88ba1843b5" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g2318" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-a624d175-b651-4367-bbba-1b9e7bca2adc" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="g2536" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-77436430-68ae-404a-b1d6-7d6fea32f7df" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-149.259,-127.843)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g9189" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-f1d0f474-6817-4184-a3a5-c5954c121c0d" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.259,-127.843)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g963" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-a6ba0584-2b5e-4ea5-91f6-0b9ed08d9104" + style="stroke-width:0.74999953;stroke-dasharray:none" /> @@ -3643,7 +3817,8 @@ ns3:stroke-to-path="0" ns3:inkscapeversion="1.3.2" id="g9380" - ns3:jacobian_sqrt="0.352778"> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-149.259,-127.843)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g6478" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-d2ab20d0-4530-44c4-94f1-2a6ddc0f36c0" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.259,-127.843)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g9122" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-1c8579d7-b752-4a70-922a-b119e916d233" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + style="display:inline;stroke-width:1.15018173;stroke-dasharray:none"> + style="stroke-width:0.74999953;stroke-dasharray:none"> + style="stroke-width:0.74999953;stroke-dasharray:none"> + style="stroke-width:0.74999953;stroke-dasharray:none"> + style="stroke-width:0.74999953;stroke-dasharray:none" /> + style="stroke-width:0.74999953;stroke-dasharray:none"> + style="stroke-width:0.74999953;stroke-dasharray:none"> + style="stroke-width:0.74999953;stroke-dasharray:none" /> @@ -3847,7 +4028,8 @@ ns3:stroke-to-path="0" ns3:inkscapeversion="1.3.2" id="g9380-6" - ns3:jacobian_sqrt="0.352778"> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-148.587,-127.843)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g981" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-8f60f209-0c02-4003-a03f-92e5cf0866ef" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-148.587,-127.843)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g908" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-8548eae1-59d5-4f10-9d8a-f08ca4750250" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-148.587,-127.843)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g434" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-616a8f9d-f4e1-4694-9320-d7fed2a8d499" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-148.587,-127.843)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g592" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-96cbadc1-e505-47ab-b2aa-42453e4eebdc" + style="stroke-width:0.74999953;stroke-dasharray:none" /> diff --git a/docs/source/control/figs/Complex_vector_2dof_Pi.svg b/docs/source/control/figs/Complex_vector_2dof_Pi.svg index b09e206af..dedefa959 100644 --- a/docs/source/control/figs/Complex_vector_2dof_Pi.svg +++ b/docs/source/control/figs/Complex_vector_2dof_Pi.svg @@ -8,7 +8,7 @@ version="1.1" id="svg1" inkscape:version="1.3.2 (091e20e, 2023-11-25)" - sodipodi:docname="Complex_vector_2dof_Pi_2.svg" + sodipodi:docname="Complex_vector_2dof_Pi.svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" @@ -27,9 +27,9 @@ showguides="true" inkscape:lockguides="false" showgrid="true" - inkscape:zoom="1.3507242" - inkscape:cx="222.47324" - inkscape:cy="67.001092" + inkscape:zoom="2.3296949" + inkscape:cx="248.31578" + inkscape:cy="68.893142" inkscape:window-width="1496" inkscape:window-height="820" inkscape:window-x="0" @@ -494,35 +494,35 @@ inkscape:groupmode="layer" id="layer1"> + style="stroke-width:0.61732481;stroke-dasharray:none"> + style="stroke-width:0.61732481;stroke-dasharray:none"> + style="stroke-width:0.61732481;stroke-dasharray:none"> + style="stroke-width:0.61732481;stroke-dasharray:none" /> @@ -579,7 +579,7 @@ ns3:stroke-to-path="0" id="g3051-6" ns3:jacobian_sqrt="0.352778" - style="stroke-width:0.607402;stroke-dasharray:none"> + style="stroke-width:0.67242067;stroke-dasharray:none"> + style="stroke-width:0.67242067;stroke-dasharray:none"> + style="stroke-width:0.67242067;stroke-dasharray:none"> + style="stroke-width:0.67242067;stroke-dasharray:none" /> @@ -621,7 +621,7 @@ ns3:stroke-to-path="0" id="g5998" ns3:jacobian_sqrt="0.352778" - style="stroke-width:0.754994;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none" /> @@ -663,7 +663,7 @@ ns3:stroke-to-path="0" id="g5998-5" ns3:jacobian_sqrt="0.352778" - style="stroke-width:0.754994;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none" /> @@ -705,7 +705,7 @@ ns3:stroke-to-path="0" id="g5998-5-4" ns3:jacobian_sqrt="0.352778" - style="stroke-width:0.754994;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none" /> @@ -747,7 +747,7 @@ ns3:stroke-to-path="0" id="g5998-5-4-4" ns3:jacobian_sqrt="0.352778" - style="stroke-width:0.754994;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none" /> @@ -789,7 +789,7 @@ ns3:stroke-to-path="0" id="g5998-5-4-4-4" ns3:jacobian_sqrt="0.352778" - style="stroke-width:0.754994;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none" /> @@ -831,7 +831,7 @@ ns3:stroke-to-path="0" id="g5998-5-4-4-4-6" ns3:jacobian_sqrt="0.352778" - style="stroke-width:0.754994;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none" /> @@ -873,7 +873,7 @@ ns3:stroke-to-path="0" id="g5998-1" ns3:jacobian_sqrt="0.352778" - style="stroke-width:0.754994;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none"> + style="stroke-width:0.83581103;stroke-dasharray:none" /> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-149.906,-126.217)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g2234" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-dff0600e-544e-4dba-be88-9c40007e8f92" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + id="id-febd1266-0d7a-4fc4-92c3-8ad04395b379" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.906,-126.217)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g18" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-2db13c3a-2a2e-4c33-9f7f-f4f7b233e136" + style="stroke-width:0.74999953;stroke-dasharray:none" /> @@ -1074,7 +1082,8 @@ ns3:stroke-to-path="0" ns3:inkscapeversion="1.3.2" id="g1947" - ns3:jacobian_sqrt="0.352778"> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-149.025, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g8357" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-5b19e575-752a-480f-9944-8a7bd8ba7821" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.025, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g4067" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-19340bd0-4b6a-45a3-beb9-d7c5822efa65" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.025, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g331" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-e8ec4f06-2c8e-46cd-b28b-cf794469616a" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.025, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g8393" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-e4927af8-5473-495a-b0bf-7a9ff13a5e92" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.025, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g2353" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-593a7791-dcd5-4176-b845-c922e09f4196" + style="stroke-width:0.74999953;stroke-dasharray:none" /> @@ -1189,7 +1213,8 @@ ns3:stroke-to-path="0" ns3:inkscapeversion="1.3.2" id="g9934" - ns3:jacobian_sqrt="0.352778"> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-149.025, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g7735" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-eee3bc8e-7d2a-4b10-b897-17b0489b311d" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.025, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g2898" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-e972a51f-466f-4fa0-8ccc-5978d3df25f7" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.025, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g5849" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-87a6b020-7d7c-4ad6-a770-8286cf15c2b0" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.025, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g9591" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-ef20735e-9a7e-49eb-861b-d03d2f4c3a1e" + style="stroke-width:0.74999953;stroke-dasharray:none" /> @@ -1285,7 +1322,8 @@ ns3:stroke-to-path="0" ns3:inkscapeversion="1.3.2" id="g9376" - ns3:jacobian_sqrt="0.352778"> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-149.025,-127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g3436" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-6067bc72-8bff-4e9a-8087-8a125414b08e" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.025,-127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g6138" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-92ad42c7-45ff-4806-8581-1fa7817a2577" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.025,-127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g8586" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-a3f1ac95-d316-4be9-b51b-cf708f1a2abe" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.025,-127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g4805" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-51803bd6-d73d-4536-8aea-3031c5cee355" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.025,-127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g5681" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-82183ea6-17c2-4a7a-ae4b-7296fe39de7d" + style="stroke-width:0.74999953;stroke-dasharray:none" /> @@ -1400,7 +1453,8 @@ ns3:stroke-to-path="0" ns3:inkscapeversion="1.3.2" id="g6805" - ns3:jacobian_sqrt="0.352778"> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-149.025, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g5401" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-28287481-c5ed-4b10-ac7c-d39448d98600" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.025, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g4040" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-caf64550-2a42-4dad-844e-5fffc79e7bc8" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.025, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g4663" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-cb0cdc60-4008-49dd-bedd-51f6dfc6feab" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.025, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g2983" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-3b386bae-4b76-42ad-a84d-0ee39c332534" + style="stroke-width:0.74999953;stroke-dasharray:none" /> @@ -1496,7 +1562,8 @@ ns3:stroke-to-path="0" ns3:inkscapeversion="1.3.2" id="g3635" - ns3:jacobian_sqrt="0.352778"> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-149.025, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g7281" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-fe0ba493-1ccf-4c25-bc6c-0d74aec397e1" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.025, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g8828" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-08839b7a-853c-41cb-aee7-ca209487bc66" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.025, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g5460" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-64ea7b45-78bc-468d-97a6-0c3bae587077" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.025, -127.281)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g6558" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-cf51cd7a-cc79-4473-9d25-87f5bd47a74d" + style="stroke-width:0.74999953;stroke-dasharray:none" /> @@ -1593,7 +1672,7 @@ ns3:inkscapeversion="1.3.2" id="g1139" ns3:jacobian_sqrt="0.3984279413093414" - style="stroke-width:0"> + style="stroke-width:0.66406822;stroke-dasharray:none"> @@ -1623,15 +1702,15 @@ fill-opacity="1" id="id-84bcea2c-b026-4dac-8135-71dd8fb2ffd4" transform="translate(-149.212, -127.843)" - style="stroke-width:0"> + style="stroke-width:0.66406822;stroke-dasharray:none"> + style="stroke-width:0.66406822;stroke-dasharray:none"> + style="stroke-width:0.66406822;stroke-dasharray:none" /> + style="stroke-width:0.66406822;stroke-dasharray:none"> + style="stroke-width:0.66406822;stroke-dasharray:none"> + style="stroke-width:0.66406822;stroke-dasharray:none" /> @@ -1663,7 +1742,8 @@ ns3:stroke-to-path="0" ns3:inkscapeversion="1.3.2" id="g2930" - ns3:jacobian_sqrt="0.352778"> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-148.306, -127.843)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g1951" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-9c82808c-7dd4-41ce-ab59-e07102eca563" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-148.306, -127.843)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g1149" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-e2da0c04-ab43-434c-8132-791ff633db44" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-148.306, -127.843)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g1068" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-5343b558-2b91-4df0-8244-e4be2292c5da" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-148.306, -127.843)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g8251" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-047700c0-a3c8-46a8-9d30-30e4325b324f" + style="stroke-width:0.74999953;stroke-dasharray:none" /> @@ -1760,7 +1852,7 @@ ns3:inkscapeversion="1.3.2" id="g1139-3" ns3:jacobian_sqrt="0.3984279413093414" - style="stroke-width:0"> + style="stroke-width:0.66406822;stroke-dasharray:none"> @@ -1790,15 +1882,15 @@ fill-opacity="1" id="id-a96c4427-d60a-4561-87f0-96ce38d1a19b" transform="translate(-149.212, -127.843)" - style="stroke-width:0"> + style="stroke-width:0.66406822;stroke-dasharray:none"> + style="stroke-width:0.66406822;stroke-dasharray:none"> + style="stroke-width:0.66406822;stroke-dasharray:none" /> + style="stroke-width:0.66406822;stroke-dasharray:none"> + style="stroke-width:0.66406822;stroke-dasharray:none"> + style="stroke-width:0.66406822;stroke-dasharray:none" /> @@ -1830,7 +1922,8 @@ ns3:stroke-to-path="0" ns3:inkscapeversion="1.3.2" id="g3688" - ns3:jacobian_sqrt="0.352778"> + ns3:jacobian_sqrt="0.352778" + style="stroke-width:0.74999953;stroke-dasharray:none"> + transform="translate(-149.212, -127.843)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g1972" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-eb870fdf-897d-4977-ab74-16ce52206feb" + style="stroke-width:0.74999953;stroke-dasharray:none" /> + transform="translate(-149.212, -127.843)" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="g5751" + style="stroke-width:0.74999953;stroke-dasharray:none"> + id="id-61acdb6b-3c34-4d5f-b535-3427caad6630" + style="stroke-width:0.74999953;stroke-dasharray:none" /> diff --git a/docs/source/control/figs/pll.svg b/docs/source/control/figs/pll.svg index 886afd8c5..31e909438 100644 --- a/docs/source/control/figs/pll.svg +++ b/docs/source/control/figs/pll.svg @@ -632,7 +632,7 @@ y="984.79279" width="40" id="rect911" - style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.333;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.333;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> Date: Thu, 29 Aug 2024 16:31:38 +0300 Subject: [PATCH 11/15] minor updates in figures. Control system figure completely new version by Marko --- docs/source/control/control_system.rst | 6 +- docs/source/control/figs/control_system.svg | 6940 +++-------------- docs/source/model/figs/carrier_comparison.svg | 128 +- docs/source/model/figs/im_block.svg | 160 +- docs/source/model/figs/pwm_inverter.svg | 182 +- docs/source/model/figs/sm_block_rot.svg | 162 +- docs/source/model/figs/sm_block_stat.svg | 267 +- docs/source/model/figs/system.svg | 1757 +---- examples/grid/grid_following/README.txt | 2 +- 9 files changed, 1659 insertions(+), 7945 deletions(-) diff --git a/docs/source/control/control_system.rst b/docs/source/control/control_system.rst index 92306f6ce..bfb968a26 100644 --- a/docs/source/control/control_system.rst +++ b/docs/source/control/control_system.rst @@ -11,7 +11,7 @@ The figure below shows the structure and data flow of the default control system :align: center :alt: Block diagram of the control system. - Block diagram of the control system. The continuous-time plant model is also shown in red. + Block diagram of the control system. The continuous-time plant model is also shown in red. Please notice that the observer might not be present in all control systems. In the figure, :math:`\texttt{monospace}` font is used to denote actual symbol names used in the program. The shaded background represents what is executed during the simulation, while the post-processing is done only after simulation. By default, discrete-time control systems run the following scheme in their main control loops: @@ -32,7 +32,7 @@ The figure below shows a two-degree-of-freedom PI controller, where :math:`k_\ma u(s) = k_{\mathrm{t}}\,r(s) - k_{\mathrm{p}}\,y(s) + \frac{k_{\mathrm{i}}}{s}\bigg(r(s) - y(s)\bigg) :label: 2DOFPI -.. figure:: figs/2DOF_PI.svg +.. figure:: figs/2dof_pi.svg :width: 100% :align: center :alt: Two-degree-of-freedom PI controller. @@ -54,7 +54,7 @@ The figure below shows a 2DOF synchronous-frame complex-vector PI controller whi where :math:`\boldsymbol{u}(s)` is the controller output, :math:`\boldsymbol{r}(s)` is the reference signal, :math:`\boldsymbol{y}(s)` is the feedback signal, :math:`\boldsymbol{k}_{\mathrm{t}}` is the feedforward gain, :math:`\boldsymbol{k}_{\mathrm{p}}` and :math:`\boldsymbol{k}_{\mathrm{i}}` are the proportional and integral gains, respectively, and :math:`\boldsymbol{u}_{\mathrm{ff}}(s)` is the optional feedforward signal. -.. figure:: figs/Complex_vector_2DOF_PI.svg +.. figure:: figs/complex_vector_2dof_pi.svg :width: 100% :align: center :alt: Two-degree-of-freedom complex-vector PI controller, with feedforward. diff --git a/docs/source/control/figs/control_system.svg b/docs/source/control/figs/control_system.svg index 29b3bb58e..2dc2fae2f 100644 --- a/docs/source/control/figs/control_system.svg +++ b/docs/source/control/figs/control_system.svg @@ -1,20 +1,19 @@ + xmlns:dc="http://purl.org/dc/elements/1.1/"> - - - @@ -94,44 +74,6 @@ style="fill:context-stroke;fill-rule:evenodd;stroke:none" id="path58" /> - - - - - - @@ -154,7 +96,7 @@ + id="path7" />
- - - - - - + id="path7-0" /> - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + clip-rule="nonzero" + d="M 6,0 H 37 V 8.746094 H 6 Z m 0,0" + id="path56295" /> + + - - + clip-rule="nonzero" + d="m 165,12 h 16 v 4.769531 h -16 z m 0,0" + id="path80781" /> + + - - + clip-rule="nonzero" + d="m 180,9 h 27 v 7.769531 h -27 z m 0,0" + id="path57081" /> + + - - + clip-rule="nonzero" + d="m 165,12 h 16 v 4.769531 h -16 z m 0,0" + id="path57897" /> + + - + clip-rule="nonzero" + d="m 180,9 h 27 v 7.769531 h -27 z m 0,0" + id="path90105" /> + - - - + id="Arrow2Mend-9-59636-2"> + id="Arrow2Mend-924749623-3"> - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + clip-rule="nonzero" + d="m 161,10 h 50 v 8.707031 h -50 z m 0,0" + id="path58045" /> + + id="clipPath4211"> + d="M 0,0 H 31 V 6.917969 H 0 Z m 0,0" + id="path3690" /> + id="clipPath67883"> + d="m 30,2 h 8.855469 V 6.917969 H 30 Z m 0,0" + id="path81798" /> + id="clipPath3737"> + d="m 171,30 h 30 v 8.632812 h -30 z m 0,0" + id="path33722" /> + id="clipPath4401"> + d="m 173,32 h 13 v 4.695312 h -13 z m 0,0" + id="path73369" /> + id="clipPath63058"> + d="m 186,29 h 13 v 7.695312 h -13 z m 0,0" + id="path1499" /> + id="clipPath5815"> + d="m 173,12 h 13 v 4.882812 h -13 z m 0,0" + id="path37996" /> + id="clipPath79750"> + d="m 186,9 h 13 v 7.882812 h -13 z m 0,0" + id="path72686" /> + id="clipPath2959"> + d="m 167,9 h 33 v 7.769531 h -33 z m 0,0" + id="path52110" /> + id="clipPath82002"> + d="m 199,9 h 6 v 7.769531 h -6 z m 0,0" + id="path18418" /> + id="clipPath6396"> + d="M 0,1 H 6 V 8.300781 H 0 Z m 0,0" + id="path27635" /> + id="clipPath97891"> + d="M 18,0 H 33.683594 V 7 H 18 Z m 0,0" + id="path9156" /> + id="clipPath4587"> + d="M 0,0 H 6 V 6.089844 H 0 Z m 0,0" + id="path95795" /> + id="clipPath14648"> + d="m 5,5 h 5 V 6.089844 H 5 Z m 0,0" + id="path21026" /> + id="clipPath16744"> + d="m 9,1 h 5 V 6.089844 H 9 Z m 0,0" + id="path72835" /> + id="clipPath63977"> + d="m 14,5 h 5 v 1.089844 h -5 z m 0,0" + id="path72488" /> + id="clipPath45972"> + d="M 18,0 H 33.683594 V 6.089844 H 18 Z m 0,0" + id="path71871" /> + id="clipPath4157"> + d="m 0,9 h 55 v 7.882812 H 0 Z m 0,0" + id="path45143" /> + id="clipPath9586"> + d="M 0,0 H 11 V 6.917969 H 0 Z m 0,0" + id="path45209" /> + id="clipPath66363"> + d="m 10,2 h 6 v 4.917969 h -6 z m 0,0" + id="path6205" /> + id="clipPath44003"> + d="m 15,2 h 5 v 4.917969 h -5 z m 0,0" + id="path51593" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + clip-rule="nonzero" + d="M 23,0 H 56 V 6.917969 H 23 Z m 0,0" + id="path88059" /> + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + clip-rule="nonzero" + d="M 59,0 H 78.953125 V 6.917969 H 59 Z m 0,0" + id="path58827" /> + + - - + clip-rule="nonzero" + d="M 0,0 H 11 V 6.917969 H 0 Z m 0,0" + id="path7783" /> + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + clip-rule="nonzero" + d="m 10,2 h 6 v 4.917969 h -6 z m 0,0" + id="path1513" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
@@ -2588,3523 +687,726 @@ id="layer1" inkscape:groupmode="layer" inkscape:label="Layer 1" - transform="translate(-150, -420)"> + transform="translate(-150,-415)"> + + style="fill:#ffffff;fill-opacity:1;stroke:#808080;stroke-width:1.333;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect219456" + width="120" + height="20" + x="195" + y="715" /> + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path195762" + d="m 510.00002,654.99997 v 15" + style="display:inline;fill:none;stroke:#808080;stroke-width:0.999996px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#ConcaveTriangle-7)" /> + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path193700" + d="m 460.00002,589.99997 v 80" + style="display:inline;fill:none;stroke:#808080;stroke-width:0.999996px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker49);marker-end:url(#ConcaveTriangle-7)" /> + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path180955" + d="m 305,590 v 80" + style="display:inline;fill:none;stroke:#808080;stroke-width:0.999996px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker49);marker-end:url(#ConcaveTriangle-7)" /> + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path180929" + d="m 205,640 v 30" + style="display:inline;fill:none;stroke:#808080;stroke-width:0.999996px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker49);marker-end:url(#ConcaveTriangle-7)" /> + id="path193678" + d="m 560.00002,614.99997 v 55" + style="display:inline;fill:none;stroke:#808080;stroke-width:0.999996px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker49);marker-end:url(#ConcaveTriangle-7)" /> + style="fill:#ececec;fill-opacity:1;stroke:none;stroke-width:0.999998;stroke-linecap:butt;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect23" + width="170" + height="110" + x="200" + y="420" /> + style="fill:#000000;stroke:#0000ff;stroke-width:1;stroke-opacity:1;marker-end:url(#marker58)" + d="M 300,505 H 275" + id="path56799" + sodipodi:nodetypes="cc" /> + x="220" + y="490" /> + + + + + + + - + d="m 180,445 h 35" + style="display:inline;fill:#000000;stroke:#0000ff;stroke-width:0.999997px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#ConcaveTriangle)" /> + + style="fill:#ffffff;fill-opacity:1;stroke:#0000ff;stroke-width:1.333;stroke-dasharray:none;stroke-opacity:1" + id="rect30887" + width="50" + height="30" + x="300" + y="430" /> + + inkscape:connector-curvature="0" + id="path5098-1" + d="m 595,615 -49.99998,-3e-5" + style="display:inline;fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow2Mend-9-59636-2)" /> + id="path70275" + d="M 220,505 H 185" + style="display:inline;fill:#000000;stroke:#0000ff;stroke-width:0.999996px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#ConcaveTriangle-7)" /> + - - - - - - - - - - - - - - - - - - - - - - - - - - + style="display:inline;fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker58)" + d="M 475,640 H 295" + id="path79443" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> - - - - - - - - - - - - - - - - - - - - - - - - - - + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path79481" + d="m 290,590 h 25" + style="display:inline;fill:#000000;stroke:#0000ff;stroke-width:0.999996px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#ConcaveTriangle-7)" /> - - - - - - - - - + id="g79437" + style="stroke:#0000ff;stroke-opacity:1" + transform="translate(35,245)"> + - - - - - + style="fill:#ffffff;fill-opacity:1;stroke:#0000ff;stroke-width:1.333;stroke-dasharray:none;stroke-opacity:1" + id="rect114890" + width="35" + height="30" + x="320" + y="575" /> + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path117275" + d="M 220,640 H 180" + style="display:inline;fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-924749623-3)" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + style="fill:none;fill-opacity:1;stroke:#0000ff;stroke-width:0.999998;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#marker58);marker-end:url(#marker49)" + d="m 325,485 v -5 h 35 v -35" + id="path151424" + sodipodi:nodetypes="cccc" /> + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + x="195" + y="675" /> - + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path235628" + d="m 510.00002,694.99997 v 15" + style="display:inline;fill:none;stroke:#808080;stroke-width:0.999996px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#ConcaveTriangle-7)" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + x="450.00003" + y="675" /> + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + x="450.00003" + y="715" /> + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path235506" + d="m 510.00002,734.99997 v 15" + style="display:inline;fill:none;stroke:#808080;stroke-width:0.999996px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#ConcaveTriangle-7)" /> + style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:0.4;stroke-linejoin:round;stroke-dasharray:3.2, 1.6;stroke-dashoffset:0;stroke-opacity:1" + d="m 200,530 20,45" + id="path241386" + sodipodi:nodetypes="cc" /> + style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:0.4;stroke-linejoin:round;stroke-dasharray:3.2, 1.6;stroke-dashoffset:0;stroke-opacity:1" + d="m 370,530 -80,45" + id="path241388" + sodipodi:nodetypes="cc" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.4;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 375,572.5 c -0.23932,1.58728 -2.5,9 -10,15" + id="path293702" + sodipodi:nodetypes="cc" /> + + Outercontroller + ref + ref + ref + Innercontroller + Observer + fbk + fbk + mdl + Getfeedback + Save discrete data + Save continuous data + Discrete-timecontrolsystem + Continuous-timecontrolsystem + Signal ref at the control system output should containref.T_s and ref.d_c_abc + Delaymodel + Carriercomparison + Post-process + Post-process + ref + fbk + ref + T_s, d_c_abc + q_c_abc + Measured outputs in mdl + _data (list) + Externaldisturbances + sol_states (list) + States + Discrete-time data, e.g.ctrl.data.ref.i_s (ndarray)ctrl.data.fbk.i_s (ndarray) + Continuous-time data, e.g.mdl.converter.data.u_cs (ndarray)mdl.machine.data.i_ss (ndarray) diff --git a/docs/source/model/figs/carrier_comparison.svg b/docs/source/model/figs/carrier_comparison.svg index 7c7efd49c..6e31733be 100644 --- a/docs/source/model/figs/carrier_comparison.svg +++ b/docs/source/model/figs/carrier_comparison.svg @@ -1,21 +1,21 @@ + version="1.0" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + fit-margin-bottom="0" + inkscape:showpageshadow="2" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1"> + orientation="0,1" + inkscape:locked="false" /> + orientation="1,0" + inkscape:locked="false" /> @@ -867,7 +872,7 @@ image/svg+xml - + @@ -902,7 +907,7 @@ inkscape:connector-curvature="0" sodipodi:nodetypes="cc" /> + style="display:inline;fill:none;stroke:#7f7f7f;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:none" /> - - - - - - - - - - - - - + carrier diff --git a/docs/source/model/figs/im_block.svg b/docs/source/model/figs/im_block.svg index 7f8cd5cc7..0e9114172 100644 --- a/docs/source/model/figs/im_block.svg +++ b/docs/source/model/figs/im_block.svg @@ -23,13 +23,13 @@ inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="2.8" - inkscape:cx="200.17857" - inkscape:cy="76.071428" + inkscape:cx="197.67857" + inkscape:cy="76.25" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" - inkscape:window-width="1920" - inkscape:window-height="1131" + inkscape:window-width="2560" + inkscape:window-height="1403" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" @@ -1306,142 +1306,6 @@ width="60" id="rect4628" style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.333;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - + Magneticmodel diff --git a/docs/source/model/figs/pwm_inverter.svg b/docs/source/model/figs/pwm_inverter.svg index a5f17afeb..e39e3e332 100644 --- a/docs/source/model/figs/pwm_inverter.svg +++ b/docs/source/model/figs/pwm_inverter.svg @@ -28,7 +28,7 @@ inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="3.2195994" - inkscape:cx="202.97556" + inkscape:cx="201.11198" inkscape:cy="35.252833" inkscape:document-units="px" inkscape:current-layer="layer2" @@ -1990,170 +1990,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + Carriercomparison diff --git a/docs/source/model/figs/sm_block_rot.svg b/docs/source/model/figs/sm_block_rot.svg index b41d5025d..0a830f0b5 100644 --- a/docs/source/model/figs/sm_block_rot.svg +++ b/docs/source/model/figs/sm_block_rot.svg @@ -22,14 +22,14 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="2.8" - inkscape:cx="235.89286" - inkscape:cy="95" + inkscape:zoom="3.959798" + inkscape:cx="233.97658" + inkscape:cy="95.838223" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" - inkscape:window-width="1920" - inkscape:window-height="1131" + inkscape:window-width="2560" + inkscape:window-height="1403" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" @@ -892,142 +892,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + Magneticmodel diff --git a/docs/source/model/figs/sm_block_stat.svg b/docs/source/model/figs/sm_block_stat.svg index a0fdfb0d7..68c4ce462 100644 --- a/docs/source/model/figs/sm_block_stat.svg +++ b/docs/source/model/figs/sm_block_stat.svg @@ -23,13 +23,13 @@ inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="2.8" - inkscape:cx="246.96429" - inkscape:cy="106.78571" + inkscape:cx="244.82143" + inkscape:cy="106.96429" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" - inkscape:window-width="1920" - inkscape:window-height="1131" + inkscape:window-width="2560" + inkscape:window-height="1403" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" @@ -857,244 +857,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + Modelin rotorcoordinates diff --git a/docs/source/model/figs/system.svg b/docs/source/model/figs/system.svg index 391f44f15..1187f2f60 100644 --- a/docs/source/model/figs/system.svg +++ b/docs/source/model/figs/system.svg @@ -4,7 +4,7 @@ height="150" id="svg6781" version="1.1" - inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + inkscape:version="1.3.2 (091e20e, 2023-11-25)" sodipodi:docname="system.svg" viewBox="0 0 480 150" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" @@ -22,17 +22,17 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="1.979899" - inkscape:cx="203.2932" - inkscape:cy="139.65359" + inkscape:zoom="4.6690955" + inkscape:cx="294.59667" + inkscape:cy="152.49206" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" - inkscape:window-width="2560" - inkscape:window-height="1403" + inkscape:window-width="1512" + inkscape:window-height="867" inkscape:window-x="0" - inkscape:window-y="0" - inkscape:window-maximized="1" + inkscape:window-y="38" + inkscape:window-maximized="0" inkscape:document-rotation="0" fit-margin-top="0" fit-margin-left="0" @@ -1739,6 +1739,13 @@ d="m 112,0 h 3 v 9.964844 h -3 z m 0,0" id="path2569" /> + + +
@@ -1748,7 +1755,6 @@ image/svg+xml - @@ -1759,13 +1765,13 @@ transform="translate(-150, -420)"> @@ -1773,13 +1779,13 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path4641" - d="m 155,480 h 40" + d="m 180,480 h 40" style="display:inline;fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow2Mend-9-78375)" /> @@ -1814,20 +1820,20 @@ sodipodi:nodetypes="cccc" inkscape:connector-curvature="0" id="path3783" - d="M 430,550 H 175 v -40 h 20" + d="M 425,550 H 200 v -40 h 20" style="display:inline;fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend-924749623)" /> - - - - - - - - - - - - + transform="translate(40,140)"> + style="stroke-width:0.888889"> + style="stroke-width:0.888889"> + style="stroke-width:0.888889" /> + style="stroke-width:0.888889" /> + style="stroke-width:0.888889" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + style="stroke-width:0.888889" /> + style="stroke-width:0.888889"> + style="stroke-width:0.888889"> + style="stroke-width:0.888889" /> + style="stroke-width:0.888889" /> + style="stroke-width:0.888889" /> + style="stroke-width:0.888889" /> + style="stroke-width:0.888889" /> + style="stroke-width:0.888889" /> + style="stroke-width:0.888889" /> + style="stroke-width:0.888889"> + style="stroke-width:0.888889"> + style="stroke-width:0.888889" /> + style="stroke-width:0.888889" /> + style="stroke-width:0.888889" /> + style="stroke-width:0.888889" /> + style="fill:#000000;fill-opacity:1;stroke-width:0.890291" + id="g5885" + transform="matrix(1.1245833,0,0,1.121875,377.03747,449.73604)"> + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + style="fill:#000000;fill-opacity:1;stroke-width:0.888889" + id="g2489" + transform="matrix(1.25,0,0,1.25,88.930311,440)"> + + + + + + + + + + + transform="matrix(1.125,0,0,1.125,467.55725,381.21155)" + id="g64476" + style="stroke-width:0.888889"> + id="g1366" + style="stroke-width:0.888889"> + style="fill:#000000;fill-opacity:1;stroke-width:0.888889" + id="g2896"> - - - - - - - - - + style="stroke-width:0.888889" /> + style="fill:#000000;fill-opacity:1;stroke-width:0.888889" + id="g6466"> + style="stroke-width:0.888889" /> + style="fill:#000000;fill-opacity:1;stroke-width:0.888889" + id="g7804"> + style="stroke-width:0.888889" /> + style="fill:#000000;fill-opacity:1;stroke-width:0.888889" + id="g9801"> + style="stroke-width:0.888889" /> + id="g2959" + transform="matrix(0.9,0,0,0.9,31.589798,47.036582)" + style="stroke-width:1.11111;stroke-dasharray:none;image-rendering:optimizeQuality"> + fill="#000000" + fill-opacity="1" + id="g39834" + transform="matrix(1.33333,0,0,1.33333,164.54166,449.85933)" + style="stroke-width:0.833336;stroke-dasharray:none"> - - - - - - - - + id="g39832" + transform="translate(0,17.877001)" + style="stroke-width:0.833336;stroke-dasharray:none"> + + clip-path="url(#clipPath6804)" + id="g39842" + transform="matrix(1.33333,0,0,1.33333,164.54166,449.85933)" + style="stroke-width:0.833336;stroke-dasharray:none"> - - - - - - - - - + fill="#000000" + fill-opacity="1" + id="g39840" + style="stroke-width:0.833336;stroke-dasharray:none"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + id="g39838" + transform="translate(5.586,17.877001)" + style="stroke-width:0.833336;stroke-dasharray:none"> + @@ -3263,216 +2329,78 @@ fill="#000000" fill-opacity="1" id="g39848" - transform="matrix(1.33333,0,0,1.33333,-0.416667,0.151)"> + transform="matrix(1.33333,0,0,1.33333,164.54166,449.85933)" + style="stroke-width:0.833336;stroke-dasharray:none"> + transform="translate(9.46,17.877001)" + style="stroke-width:0.833336;stroke-dasharray:none"> + id="path39844" + style="stroke-width:0.833336;stroke-dasharray:none" /> + transform="matrix(1.33333,0,0,1.33333,164.54166,449.85933)" + style="stroke-width:0.833336;stroke-dasharray:none"> + id="g39854" + style="stroke-width:0.833336;stroke-dasharray:none"> + transform="translate(14.96,17.877001)" + style="stroke-width:0.833336;stroke-dasharray:none"> + id="path39850" + style="stroke-width:0.833336;stroke-dasharray:none" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + id="g2785" + transform="matrix(0.81,0,0,0.81,81.00238,81.718474)" + style="stroke-width:1.23457"> + transform="matrix(1.33333,0,0,1.33333,473.50811,423.45402)" + style="stroke-width:1.23457"> + transform="translate(98.546997,7.4720001)" + style="stroke-width:1.23457"> + id="path41643" + style="stroke-width:1.23457" /> + transform="matrix(1.33333,0,0,1.33333,473.50811,423.45402)" + style="stroke-width:1.23457"> + id="g116" + style="stroke-width:1.23457"> + transform="translate(104.063,7.4720001)" + style="stroke-width:1.23457"> + id="path218" + style="stroke-width:1.23457" /> @@ -3480,32 +2408,175 @@ fill="#000000" fill-opacity="1" id="g122" - transform="matrix(1.33333,0,0,1.33333,-0.4375,0.0164998)"> + transform="matrix(1.33333,0,0,1.33333,473.50811,423.45402)" + style="stroke-width:1.23457"> + transform="translate(107.937,7.4720001)" + style="stroke-width:1.23457"> + id="path222" + style="stroke-width:1.23457" /> + transform="matrix(1.33333,0,0,1.33333,473.50811,423.45402)" + style="stroke-width:1.23457"> + id="g126" + style="stroke-width:1.23457"> + transform="translate(111.535,7.4720001)" + style="stroke-width:1.23457"> + id="path226" + style="stroke-width:1.23457" /> + Computationaldelay + + Carriercomparison + Continuous-timesystem + Discrete-timecontrolsystem + Samples + Measurements + External disturbances + States + References diff --git a/examples/grid/grid_following/README.txt b/examples/grid/grid_following/README.txt index 55b2eb63e..0151237d5 100644 --- a/examples/grid/grid_following/README.txt +++ b/examples/grid/grid_following/README.txt @@ -5,7 +5,7 @@ These examples demonstrate grid-following control. The current controller in the grid following converters uses 2DOF synchronous-frame complex-vector PI controller, with an additional feedforward term. The structure of the controller is shown in the figure below: -.. figure:: /control/figs/ComplexFFPI.svg +.. figure:: /control/figs/complexffpi.svg :width: 60% :align: center :alt: Two-degree-of-freedom complex-vector PI controller, with feedforward. From d412161a59aaae838e400925897312e6a3cdb28c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikko=20Sar=C3=A9n?= Date: Thu, 29 Aug 2024 16:48:00 +0300 Subject: [PATCH 12/15] control/figs file names to lowercase (actually metadata doesn't change if just rename the file, at least in mac environment) --- docs/source/control/figs/2dof_Pi.svg | 4 ++-- docs/source/control/figs/ComplexFFPI.svg | 4 ++-- docs/source/control/figs/Complex_vector_2dof_Pi.svg | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/source/control/figs/2dof_Pi.svg b/docs/source/control/figs/2dof_Pi.svg index 3ac0e7f6b..fabbbfbbc 100644 --- a/docs/source/control/figs/2dof_Pi.svg +++ b/docs/source/control/figs/2dof_Pi.svg @@ -8,7 +8,7 @@ version="1.1" id="svg1" inkscape:version="1.3.2 (091e20e, 2023-11-25)" - sodipodi:docname="2dof_Pi.svg" + sodipodi:docname="2dof_pi.svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" @@ -29,7 +29,7 @@ showgrid="true" inkscape:zoom="2.378886" inkscape:cx="227.20719" - inkscape:cy="72.512932" + inkscape:cy="72.512933" inkscape:window-width="1496" inkscape:window-height="820" inkscape:window-x="0" diff --git a/docs/source/control/figs/ComplexFFPI.svg b/docs/source/control/figs/ComplexFFPI.svg index bc41abd36..93fe79ab7 100644 --- a/docs/source/control/figs/ComplexFFPI.svg +++ b/docs/source/control/figs/ComplexFFPI.svg @@ -8,7 +8,7 @@ version="1.1" id="svg1" inkscape:version="1.3.2 (091e20e, 2023-11-25)" - sodipodi:docname="ComplexFFPI.svg" + sodipodi:docname="complexffpi.svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" @@ -27,7 +27,7 @@ showgrid="true" inkscape:zoom="0.96088539" inkscape:cx="137.89366" - inkscape:cy="90.541496" + inkscape:cy="90.541495" inkscape:window-width="1512" inkscape:window-height="769" inkscape:window-x="0" diff --git a/docs/source/control/figs/Complex_vector_2dof_Pi.svg b/docs/source/control/figs/Complex_vector_2dof_Pi.svg index dedefa959..abefa38a7 100644 --- a/docs/source/control/figs/Complex_vector_2dof_Pi.svg +++ b/docs/source/control/figs/Complex_vector_2dof_Pi.svg @@ -8,7 +8,7 @@ version="1.1" id="svg1" inkscape:version="1.3.2 (091e20e, 2023-11-25)" - sodipodi:docname="Complex_vector_2dof_Pi.svg" + sodipodi:docname="complex_vector_2dof_pi.svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" @@ -29,7 +29,7 @@ showgrid="true" inkscape:zoom="2.3296949" inkscape:cx="248.31578" - inkscape:cy="68.893142" + inkscape:cy="68.893141" inkscape:window-width="1496" inkscape:window-height="820" inkscape:window-x="0" From b04874575e4f25df58882a1e4a8e8582a30621ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikko=20Sar=C3=A9n?= <166725462+MiSaren@users.noreply.github.com> Date: Thu, 29 Aug 2024 17:01:45 +0300 Subject: [PATCH 13/15] Rename 2dof_Pi.svg to 2dof_pi.svg --- docs/source/control/figs/{2dof_Pi.svg => 2dof_pi.svg} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/source/control/figs/{2dof_Pi.svg => 2dof_pi.svg} (100%) diff --git a/docs/source/control/figs/2dof_Pi.svg b/docs/source/control/figs/2dof_pi.svg similarity index 100% rename from docs/source/control/figs/2dof_Pi.svg rename to docs/source/control/figs/2dof_pi.svg From 434bd7d7ab42ed1b8c6bd1a8bb13fbd41aa62451 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikko=20Sar=C3=A9n?= <166725462+MiSaren@users.noreply.github.com> Date: Thu, 29 Aug 2024 17:02:36 +0300 Subject: [PATCH 14/15] Rename ComplexFFPI.svg to complexffpi.svg --- docs/source/control/figs/{ComplexFFPI.svg => complexffpi.svg} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/source/control/figs/{ComplexFFPI.svg => complexffpi.svg} (100%) diff --git a/docs/source/control/figs/ComplexFFPI.svg b/docs/source/control/figs/complexffpi.svg similarity index 100% rename from docs/source/control/figs/ComplexFFPI.svg rename to docs/source/control/figs/complexffpi.svg From 6311ed20213d158baa8046f27da6bd6029dfa084 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikko=20Sar=C3=A9n?= <166725462+MiSaren@users.noreply.github.com> Date: Thu, 29 Aug 2024 17:03:08 +0300 Subject: [PATCH 15/15] Rename Complex_vector_2dof_Pi.svg to complex_vector_2dof_pi.svg --- .../{Complex_vector_2dof_Pi.svg => complex_vector_2dof_pi.svg} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/source/control/figs/{Complex_vector_2dof_Pi.svg => complex_vector_2dof_pi.svg} (100%) diff --git a/docs/source/control/figs/Complex_vector_2dof_Pi.svg b/docs/source/control/figs/complex_vector_2dof_pi.svg similarity index 100% rename from docs/source/control/figs/Complex_vector_2dof_Pi.svg rename to docs/source/control/figs/complex_vector_2dof_pi.svg