Задайте отношение между переменными компонента и узлами

Соединение переменных компонента к области

После того, как вы объявите переменные Through и Across компонента, необходимо соединить их с доменными переменными Through и Across. Вы делаете это путем установления отношения между переменными компонента и его узлами, которые несут переменные Through и Across для области:

  • Чтобы установить отношение между переменными Through, используйте раздел branches файла компонента. Если компонент имеет несколько узлов, укажите на ответвления путем записи нескольких операторов в разделе branches. Для синтаксиса и примеров, смотрите страницу с описанием branches.

  • Чтобы установить отношение между переменными Across, используйте раздел equations файла компонента. Добавьте уравнение, которое соединяет переменную Across компонента с соответствующими переменными в узлах компонента. Если существует больше чем одна переменная Across, добавьте несколько уравнений, соединив каждую переменную с ее соответствующими узлами. Раздел equations может также содержать другие уравнения, которые задают действие компонента. Для получения дополнительной информации смотрите Определяющие уравнения Компонента.

Рабочий процесс от области до компонента

Распространите доменные переменные Through и Across на компонент.

  1. Объявите переменные Across и Through в доменном файле (или используйте существующую область; для полного списка областей Основы смотрите Типы Области Основы и Структуру каталогов).

    Например, следующий доменный файл, названный rotational.ssc, объявляет угловую скорость, w, как переменная Across и крутящий момент, t, как переменная Through.

    domain rotational
    % Define the mechanical rotational domain
    % in terms of across and through variables
    
      variables
        w = { 1 , 'rad/s' }; % angular velocity
      end
    
      variables(Balancing = true)
        t = { 1 , 'N*m' }; % torque
      end
    
    end
    
    
  2. Объявите узлы в файле компонента и сопоставьте их с областью, например:

    nodes
        node1 = MyPackage.rotational;
        node2 = MyPackage.rotational;
    end

    Если узел сопоставлен с областью, этим:

    • Несет каждую из доменных переменных Across как измеримое количество. В этом примере каждый из узлов несет одну переменную Across, w.

    • Пишет уравнение сохранения для каждой из доменных переменных Through. В этом примере существует одна переменная Through, t, и поэтому каждый узел пишет одно уравнение сохранения. Уравнение сохранения является суммой условий, которая собирается обнулить (node.t == 0). Раздел branches в файле компонента устанавливает условия, которые суммированы, чтобы обнулить в узле.

  3. Объявите соответствующие переменные в файле компонента, например:

    variables
        w = { 1 , 'rad/s' };   % angular velocity
        t = { 1 , 'N*m' };     % torque
    end

    Имена переменных компонента не должны совпадать с теми из доменных переменных Across и Through, но модули должны быть соразмерными. На данном этапе нет никакой связи между переменными компонента и доменными переменными.

  4. Установите отношение между переменными Through при помощи раздела branches файла компонента. Например:

    branches
        t : node1.t -> node2.t;    % t - Through variable from node1 to node2
    end
    

    Этот оператор ветвления объявляет, что t вытекает из node1 к node2. Поэтому t вычтен из уравнения сохранения, идентифицированного node1.t, и t добавляется к уравнению сохранения, идентифицированному node2.t. Для получения дополнительной информации и примеры, смотрите страницу с описанием branches.

  5. Установите отношение между переменными Across в разделе equations файла компонента, например, путем добавления следующего уравнения:

    equations
         w == node1.w - node2.w;       % w - Across variable between node1 and node2
         [...]      % more equations describing the component behavior, as necessary
    end

Соединение одного через и один через переменную

В этом примере r и c являются вращательными узлами, в то время как t и w являются переменными компонента для крутящего момента и угловой скорости, соответственно. Отношение между переменными и узлами устанавливается в branches и разделах equations:

component spring
  nodes
    r = foundation.mechanical.rotational.rotational;
    c = foundation.mechanical.rotational.rotational;
  end
  [...]
  variables
    [...]
    t = { 0, 'N*m' };     % torque through
    w = { 0, 'rad/s' };   % velocity across
  end
  branches
    t : r.t -> c.t;       % t - Through variable from r to c
  end
  equations
    w == r.w - c.w;       % w - Across variable between r and c
    [...]                 % more equations here
  end
end

Соединение два через и два через переменные

Этот пример показывает подготовку переменных Across и Through компонента с двумя электрическими обмотками, такими как преобразователь или взаимный индуктор. Компонент имеет четыре электрических узла, и каждая обмотка имеет свое собственное напряжение и текущие переменные. Отношение между переменными и узлами устанавливается в branches и разделах equations:

component two_windings
  nodes
    p1 = foundation.electrical.electrical;
    n1 = foundation.electrical.electrical;
    p2 = foundation.electrical.electrical;
    n2 = foundation.electrical.electrical;
  end
  [...]
  variables
    i1 = { 0, 'A' };
    v1 = { 0, 'V' };
    i2 = { 0, 'A' };
    v2 = { 0, 'V' };
  end
  [...]
  branches
    i1 : p1.i -> n1.i;   % Current through first winding
    i2 : p2.i -> n2.i;   % Current through second winding
  end
  equations
    v1 == p1.v - n1.v;   % Voltage across first winding
    v2 == p2.v - n2.v;   % Voltage across second winding
    [...]                % more equations here
  end
end