Понимание того, как работает решатель секционирования

Этот раздел использует пример Нелинейная Электромеханическая Схема с Решателем Разбиения, чтобы предоставить углубленный анализ функциональности решателя Разбиения. Он исследует различные типы разбиений и их уравнения и объясняет, как решатель Разбиения решает их, чтобы получить более быструю симуляцию.

  1. Чтобы открыть пример модели Нелинейной Электромеханической Схемы с Решателем Разбиения, введите ssc_nonlinear_electromechanical_circuit в MATLAB® Командное окно.

    Block diagram of the model

  2. Чтобы просмотреть статистику модели, в окне модели, на вкладке Debug, нажмите Simscape > Statistics Viewer. При необходимости нажмите кнопку Refresh на панели инструментов окна средства просмотра, чтобы заполнить средство просмотра данными.

  3. Разверните узел Number of partitions.

    Statistics Viewer showing the Partitioning details

    Это показывает, что решатель разделяет систему на три раздела. Первый раздел решается с помощью метода Forward Euler, а два других раздела решаются с помощью метода Backward Euler.

  4. Выбирая Number of variables под каждым из узлов раздела, можно увидеть имена переменных, которые относятся к этому разделу.

    Statistics Viewer showing the variable name for the first partition

    Разделу 1 принадлежит Inerta.w переменная, которая представляет скорость вращения блока Inertia.

    Разделу 2 принадлежат Diode.v и Sensing.Ideal Rotational Motion Sensor.phi, и Partition 3 владеет Inerta.t. Каждый раздел отвечает за обновление значений переменных состояния, которым он владеет.

  5. Statistics Viewer также содержит ссылки на уравнения в каждом разделе.

    Statistics Viewer showing the equation link for the first partition

    Например, если вы выбираете Number of equations в Разделе 1, а затем кликните ssc_nonlinear_electromechanical_circuit/Inertia ссылка под Source, исходный код для блоков Inertia открывается в редакторе MATLAB, указывая на это уравнение:

    t == inertia * w.der;
    

    Точно так же можно увидеть уравнения для других разбиений.

Решатель Разбиения собирает все эти уравнения в систему уравнений, необходимую для симуляции модели:

System of equations

Здесь Sensor.phi - сокращение Sensing.Ideal Rotational Motion Sensor.phi переменная (используется, чтобы сделать представление системы уравнений более компактным). m0 является булевым, берущим начало из уравнения в блоке Diode, где Diode.v сравнивается с Forward voltage:

    if v > Vf
      i == (v - Vf*(1-Ron*Goff))/Ron;
    else
      i == v*Goff;
    end

Сравнивая эту систему уравнений с данными Statistics Viewer, можно увидеть, что первая строка системы находится в Partition 3, потому что Partition 3 владеет Inerta.t переменная состояния. Точно так же вторая и третья строки находятся в разделе 2, а четвертая строка находится в разделе 1.

Тип уравнения разбиения зависит только от условий, связанных с принадлежащими состояниями, и не зависит от функции соединения. Для примера Partition 3 списков свою Equation Type как Linear time-invariant, несмотря на нелинейность в термине функции соединения, потому что она является линейной инвариантной во времени относительно принадлежащих ей состояний.

Во время симуляции решатель Partitioning решает разделы в том же порядке, в котором они перечислены в Statistics Viewer (то есть снизу вверх в системе уравнений), с помощью заданного метода (Forward Euler или Backward Euler). Решатель использует обновленные значения состояния, полученные после решения каждого раздела, чтобы выполнить обновление состояния для вышестоящих разделов.

Похожие темы