FEMM 5

Гармоническое магнитное поле · Плоскопараллельная

Бегущее поле: наведённые токи, тяга пластины и реверс фаз

Шесть сторон трёхфазной обмотки создают бегущее магнитное поле над неподвижной алюминиевой пластиной. Наведённые в пластине токи взаимодействуют с полем и создают продольную силу. Работа связывает пространственное распределение обмотки, чередование фаз, потери и направление тяги.

Это электромагнитная постановка линейного асинхронного преобразователя при неподвижной вторичной части. Она помогает понять общий механизм двигателя и электромагнитного насоса, но не вычисляет движение пластины или течение жидкости.

Самостоятельная учебная модель FEMM 5: от физических соотношений к полевому решению и проверке результата.

Допущения и устройство учебной модели

Принятые допущения и их назначение
Учебная модель FEMM 5Причина
Неподвижная проводящая пластина в бегущем полеИзолирует электромагнитный механизм при скольжении s=1.
Конечная шестисторонняя обмотка и конечная пластинаСохраняет пространственные гармоники и краевые поля.

Все размеры, свойства материалов и условия возбуждения заданы ниже. Численные результаты относятся к опубликованной версии модели FEMM 5.

Физическая и математическая постановка

От пространственного чередования к бегущему полю

Комплексные амплитуды токов фаз A, B, C равны I, I exp(−j2π/3), I exp(j2π/3). Стороны обмоток расположены с шагом 50 мм в порядке A+, C−, B+, A−, C+, B−. Их суммарный мгновенный ток равен нулю. Изменение порядка фаз на обратный меняет направление пространственного перемещения поля.

В проводящей вторичной части поле вызывает вихревые токи. Их фаза определяется одновременно индукцией, сопротивлением и собственным полем. Пластина электрически изолирована: ей назначена отдельная последовательная цепь с полным током ноль. Это позволяет решателю определить продольный градиент потенциала, обеспечивающий нулевой интеграл плотности тока через всё сечение; локальные вихревые токи при этом сохраняются. Оставление пластины без цепи задавало бы другую электрическую постановку с возможным ненулевым сквозным током.

Плотность средней силы равна половине действительной части векторного произведения комплексной амплитуды тока на сопряжённую амплитуду магнитной индукции. Продольная тяга проверяется двумя интегральными способами. Для каждого решения отдельно интегрируется полный комплексный ток пластины и проверяется его близость к нулю.

\langle\mathbf f\rangle=\tfrac12\operatorname{Re}(\widehat{\mathbf J}\times\widehat{\mathbf B}^{\,*}),\qquad P=\tfrac12\operatorname{Re}\sum_k\widehat U_k\widehat I_k^{\,*}

Энергия неподвижной вторичной части

Механическая мощность неподвижной пластины равна нулю даже при ненулевой тяге. Активная мощность идеальных обмоток переходит в джоулевы потери пластины. Проверка использует амплитудные, а не действующие комплексные токи, поэтому множитель 1/2 обязателен.

Увеличение частоты меняет глубину проникновения и фазу наведённого тока. В конечной обмотке присутствуют пространственные гармоники и концевой эффект, поэтому нельзя подменять всё поле единственной идеальной бегущей синусоидой. Программа решает поле целиком и не вводит непроверенную формулу тяги через одну скорость волны.

P_{\mathrm{вх}}=P_J,\quad P_{\mathrm{мех}}=F_x v=0,\quad \delta=\sqrt{2/(\omega\mu\sigma)}

Независимые численные опыты

Три пространственные сетки проверяют тягу и потери. Удаление внешней границы с 400 до 600 мм отдельно проверяет влияние усечения воздушного пространства. Смена чередования фаз должна менять знак продольной силы, сохраняя потери в зеркально симметричной геометрии.

В линейных материалах удвоение тока должно увеличивать тягу и потери в четыре раза. При нулевой проводимости и относительной проницаемости единица пластина становится электромагнитно неотличимой от воздуха: интеграл силы Лоренца и потери точно обращаются в ноль. Малый остаток интеграла напряжений на условной границе такого воздушного тела является численной погрешностью; он проверяется отдельно относительно рабочей тяги с допуском 0,01%. Эти опыты проверяют механизм силы, а не только устойчивость одного численного значения.

Исходные данные

Плоскопараллельная

Величины, единицы и происхождение параметров
ПараметрЗначениеЕдиницаПроисхождение
Координаты центров сторон обмотки x−125; −75; −25; 25; 75; 125ммУчебная симметричная шестисторонняя обмотка
Сечение каждой стороны обмотки20 × 12; y=10…22ммАвторская учебная геометрия
Вторичная пластинаx=−160…160; y=−4…0ммКонечная проводящая вторичная часть
Глубина плоской модели40ммОбщая длина вдоль оси z
Амплитуда фазного тока; число витков100; 50А; витокИдеальная обмотка без собственных активных потерь
Проводимость пластины; относительная проницаемость35; 1МСм/м; 1Постоянные учебные свойства алюминия
Частота; серия50; 10, 25, 50, 100, 200, 500ГцИсследование индукционного взаимодействия
Локальный размер треугольника1.2; 0.8; 0.5ммНезависимая серия сеточного контроля

Порядок воспроизведения

  1. Скачайте полный комплект и выполните reproduce.py во встроенном Python FEMM 5. Результаты сохраняются в новой папке calculated-NN.
  2. Сопоставьте три базовые сетки при 50 Гц. В них совпадают геометрия, свойства и амплитуды токов.
  3. Проверьте равенство активной мощности цепей и потерь пластины. Сравните интеграл силы Лоренца и тензор напряжений.
  4. Смените чередование фаз, затем удвойте ток и отключите проводимость. Объясните изменение направления и масштаба тяги.
  5. Исследуйте частотную серию и отдельно влияние удаления границы. Программа заново строит все поля; в комплекте сохранены три базовых решения.

Скачайте нужные файлы по отдельным ссылкам ниже в одну рабочую папку, затем откройте reproduce.py во встроенном Python FEMM 5 и выполните его. Сохраните имена файлов и структуру подпапок. Условия конкретного запуска и путь новых результатов указаны в комментариях программы.

Программа встроенного Python FEMM 5
Python · reproduce.py
"""Самостоятельное полевое исследование во встроенном Python FEMM 5.

Все размеры геометрии указаны в миллиметрах, результаты — в СИ. Значения
гармонических токов являются амплитудами. Материалы и условия имеют русские
имена; номера групп описаны в README. Программа создаёт новую calculated-NN
рядом с собой, не заменяя предшествующих расчётов. Каждая входная модель
сохраняется, закрывается, открывается повторно и только затем решается.
Открытые пользовательские документы не изменяются. Параметры — в CONFIG.
"""

import os
import sys
import json
import math

MU0 = 4e-7 * math.pi
script = globals().get("__file__", "") or (sys.argv[0] if sys.argv else "")
HERE = os.path.dirname(os.path.abspath(script)) if script else os.getcwd()
number = 1
while True:
    OUT = HERE + "/calculated-%02d" % number
    try:
        os.stat(OUT)
        number += 1
    except OSError:
        os.mkdir(OUT)
        break


def scalar(value):
    if isinstance(value, (list, tuple)):
        return scalar(value[0])
    return complex(value).real


def complex_parts(value):
    value = complex(value)
    return [value.real, value.imag]


def point(radius, angle):
    angle = angle * math.pi / 180
    return (radius * math.cos(angle), radius * math.sin(angle))


def line(a, b, group=0, size=0):
    mi_addnode(a[0], a[1])
    mi_addnode(b[0], b[1])
    mi_addsegment(a[0], a[1], b[0], b[1])
    mi_selectsegment((a[0] + b[0]) / 2, (a[1] + b[1]) / 2)
    boundary = (
        "Внешняя граница A=0"
        if globals().get("AXIS", False) and abs(a[0]) + abs(b[0]) < 1e-9
        else "<None>"
    )
    mi_setsegmentprop(boundary, size, 0 if size else 1, 0, group)
    mi_clearselected()


def polygon(points, group=0, size=0):
    for index in range(len(points)):
        line(points[index], points[(index + 1) % len(points)], group, size)


def rectangle(x1, y1, x2, y2, group=0, size=0):
    polygon([(x1, y1), (x2, y1), (x2, y2), (x1, y2)], group, size)


def arc(radius, start, end, group=0, step=2):
    a, b = point(radius, start), point(radius, end)
    mi_addnode(a[0], a[1])
    mi_addnode(b[0], b[1])
    mi_addarc(a[0], a[1], b[0], b[1], end - start, step)
    middle = point(radius, (start + end) / 2)
    mi_selectarcsegment(middle[0], middle[1])
    mi_setarcsegmentprop(step, "<None>", 0, group)
    mi_clearselected()


def circle(radius, group=0, step=2):
    for start in (0, 90, 180, 270):
        arc(radius, start, start + 90, group, step)


def label(x, y, material, mesh, group=0, circuit="<None>", turns=1, angle=0):
    mi_addblocklabel(x, y)
    mi_selectlabel(x, y)
    mi_setblockprop(material, 0, mesh, circuit, angle, group, turns)
    mi_clearselected()


def begin(mesh, kind="planar", frequency=0, depth=40, radius=100, br=1.1, mur=1.05):
    global AXIS
    AXIS = kind == "axi"
    newdocument(0)
    mi_probdef(frequency, "millimeters", kind, 1e-9, depth, 25)
    mi_addmaterial("Воздух", 1, 1, 0, 0, 0)
    mi_addmaterial("Обмотка без вытеснения тока", 1, 1, 0, 0, 0)
    mi_addmaterial("Медь 58 МСм на метр", 1, 1, 0, 0, 58)
    mi_addmaterial("Сталь с линейной проницаемостью", 1000, 1000, 0, 0, 0)
    mi_addmaterial("Сталь с учебной кривой насыщения", 1, 1, 0, 0, 0)
    for b, h in (
        (0, 0),
        (0.3, 100),
        (0.6, 200),
        (1, 350),
        (1.3, 700),
        (1.5, 1800),
        (1.65, 5000),
        (1.8, 15000),
        (2, 60000),
        (2.2, 200000),
    ):
        mi_addbhpoint("Сталь с учебной кривой насыщения", b, h)
    mi_addmaterial("Постоянный магнит учебный NdFeB", mur, mur, br / (MU0 * mur), 0, 0)
    mi_addboundprop("Внешняя граница A=0", 0, 0, 0, 0, 0, 0, 0, 0, 0)
    if kind == "axi":
        rectangle(0, -radius, radius, radius)
        for x, y in ((0, 0), (radius, 0), (radius / 2, -radius), (radius / 2, radius)):
            mi_selectsegment(x, y)
            mi_setsegmentprop("Внешняя граница A=0", 0, 1, 0, 0)
            mi_clearselected()
    else:
        circle(radius, step=4)
        for angle in (45, 135, 225, 315):
            x, y = point(radius, angle)
            mi_selectarcsegment(x, y)
            mi_setarcsegmentprop(4, "Внешняя граница A=0", 0, 0)
            mi_clearselected()


def band(r1, r2, count, fraction, group, mesh, phase=0, mode="radial"):
    """Кольцевая сборка: заданные магнитные секторы и воздушные промежутки."""
    pitch = 360 / count
    for index in range(count):
        start = index * pitch + phase
        stop = start + pitch * fraction
        for radius in (r1, r2):
            arc(radius, start, stop, group, step=2)
            if fraction < 0.999999:
                arc(radius, stop, start + pitch, group, step=2)
        line(point(r1, start), point(r2, start), group)
        line(point(r1, stop), point(r2, stop), group)
        angle = (start + stop) / 2
        x, y = point((r1 + r2) / 2, angle)
        if mode == "steel":
            label(x, y, "Сталь с линейной проницаемостью", mesh, group)
        else:
            direction = 2 * angle if mode == "halbach" else angle + 180 * (index % 2)
            label(x, y, "Постоянный магнит учебный NdFeB", mesh, group, angle=direction)
        if fraction < 0.999999:
            x, y = point((r1 + r2) / 2, (stop + start + pitch) / 2)
            label(x, y, "Воздух", mesh, group)


def energy():
    mo_clearblock()
    mo_groupselectblock()
    values = [scalar(mo_blockintegral(k)) for k in (2, 17, 4)]
    mo_clearblock()
    return values


def solve(tag, group=2, probe=(1, 0), circuits=()):
    path = OUT + "/" + tag + ".fem"
    mi_saveas(path)
    mi_close()
    opendocument(path)
    mi_analyze(1)
    mi_loadsolution()
    e, w, p = energy()
    row = {
        "state": tag,
        "elements": mo_numelements(),
        "energy_J": e,
        "coenergy_J": w,
        "loss_W": p,
    }
    if group:
        mo_groupselectblock(group)
        if CONFIG.get("kind") != "course":
            row["Fx_N"] = scalar(mo_blockintegral(18))
            row["Fy_N"] = scalar(mo_blockintegral(19))
        row["torque_Nm"] = scalar(mo_blockintegral(22))
        if CONFIG.get("kind") != "course":
            row["lorentz_x_N"] = scalar(mo_blockintegral(11))
            row["lorentz_y_N"] = scalar(mo_blockintegral(12))
        mo_clearblock()
    if CONFIG.get("kind") == "gear":
        for part in (2, 3, 4):
            mo_groupselectblock(part)
            row["T%d_Nm" % part] = scalar(mo_blockintegral(22))
            mo_clearblock()
    values = mo_getpointvalues(probe[0], probe[1])
    row["Bx_T"] = scalar(values[1])
    row["By_T"] = scalar(values[2])
    row["Hx_Am"] = scalar(values[5])
    row["Hy_Am"] = scalar(values[6])
    for circuit in circuits:
        i, v, psi = mo_getcircuitproperties(circuit)
        row[circuit + "_I_A"] = scalar(i)
        row[circuit + "_Psi_Wb"] = scalar(psi)
        row[circuit + "_Psi_im_Wb"] = complex(psi).imag
        row[circuit + "_V_V"] = scalar(v)
        row[circuit + "_V_im_V"] = complex(v).imag
    mo_close()
    mi_close()
    return row


def check(name, value, limit, passed):
    CHECKS.append(
        {"name": name, "value": value, "limit": limit, "passed": bool(passed)}
    )


def relative(a, b, minimum=1e-15):
    return abs(a - b) / max(abs(a), abs(b), minimum)


def finish(plot=None):
    result = {
        "title": CONFIG["title"],
        "records": ROWS,
        "checks": CHECKS,
        "units": "Геометрия мм; магнитное поле Тл, А/м; энергия Дж; сила Н; момент Н·м; потокосцепление Вб.",
        "passed": bool(CHECKS) and all(row["passed"] for row in CHECKS),
    }
    if plot:
        result["plot"] = plot
    with open(OUT + "/result.json", "w") as stream:
        json.dump(result, stream)
    print(CONFIG["id"], result["passed"], len(ROWS), "решений", OUT)
    assert result["passed"], "Не пройдена независимая проверка физической модели."


ROWS = []
CHECKS = []

CONFIG = {
    "id": "travelling-field-thrust",
    "kind": "linear-induction",
    "title": "Бегущее поле: наведённые токи, тяга пластины и реверс фаз",
}


def travelling(mesh, frequency, sequence=1, amplitude=100, conductivity=35, radius=400):
    begin(mesh, "planar", frequency, 40, radius)
    mi_addmaterial("Алюминиевая вторичная пластина", 1, 1, 0, 0, conductivity)
    mi_addcircprop("Изолированная вторичная пластина", 0, 1)
    rectangle(-180, -20, 180, 40, size=4 * mesh)
    rectangle(-160, -4, 160, 0, 2, size=mesh)
    label(
        0,
        -2,
        "Алюминиевая вторичная пластина",
        mesh,
        2,
        "Изолированная вторичная пластина",
        1,
    )
    circuits = []
    for phase, angle in (("A", 0), ("B", -120), ("C", 120)):
        name = "Фаза " + phase
        radians = sequence * angle * math.pi / 180
        value = amplitude * complex(math.cos(radians), math.sin(radians))
        mi_addcircprop(name, value, 1)
        circuits.append(name)
    for x, phase, sign in (
        (-125, "A", 1),
        (-75, "C", -1),
        (-25, "B", 1),
        (25, "A", -1),
        (75, "C", 1),
        (125, "B", -1),
    ):
        rectangle(x - 10, 10, x + 10, 22, size=mesh)
        label(x, 16, "Обмотка без вытеснения тока", mesh, 1, "Фаза " + phase, 50 * sign)
    label(0, 5, "Воздух", 2 * mesh)
    label(0, 200, "Воздух", 12 * mesh)
    return circuits


def field(
    tag, mesh, frequency=50, sequence=1, amplitude=100, conductivity=35, radius=400
):
    circuits = travelling(mesh, frequency, sequence, amplitude, conductivity, radius)
    path = OUT + "/" + tag + ".fem"
    mi_saveas(path)
    mi_close()
    opendocument(path)
    mi_analyze(1)
    mi_loadsolution()
    mo_groupselectblock(2)
    loss = scalar(mo_blockintegral(4))
    fx = scalar(mo_blockintegral(18))
    fy = scalar(mo_blockintegral(19))
    lorentz = scalar(mo_blockintegral(11))
    plate_current = complex(mo_blockintegral(7))
    mo_clearblock()
    active = 0
    for name in circuits:
        current, voltage, flux = mo_getcircuitproperties(name)
        active += 0.5 * (complex(voltage) * complex(current).conjugate()).real
    row = {
        "state": tag,
        "frequency_Hz": frequency,
        "phase_sequence": sequence,
        "current_amplitude_A": amplitude,
        "conductivity_MSm_m": conductivity,
        "mesh_mm": mesh,
        "boundary_radius_mm": radius,
        "elements": mo_numelements(),
        "Fx_N": fx,
        "Fy_N": fy,
        "lorentz_x_N": lorentz,
        "loss_W": loss,
        "summed_plate_current_real_A": plate_current.real,
        "summed_plate_current_imag_A": plate_current.imag,
        "summed_plate_current_abs_A": abs(plate_current),
        "circuit_active_power_W": active,
        "model": tag + ".fem",
    }
    ROWS.append(row)
    current_residual = abs(plate_current) / max(amplitude, 1e-15)
    check(
        "Изолированная пластина: нулевой суммарный ток по интегралу J: " + tag,
        current_residual,
        1e-6,
        current_residual < 1e-6,
    )
    if conductivity:
        check(
            "Баланс активной мощности: " + tag,
            relative(active, loss),
            0.005,
            relative(active, loss) < 0.005,
        )
        check(
            "Тяга: напряжения Максвелла и сила Лоренца: " + tag,
            relative(fx, lorentz),
            0.025,
            relative(fx, lorentz) < 0.025,
        )
    mo_close()
    mi_close()
    return row


mesh_rows = [
    field("сетка-" + str(k + 1), mesh) for k, mesh in enumerate((1.2, 0.8, 0.5))
]
fine = mesh_rows[-1]
check(
    "Сходимость тяги на двух последних сетках",
    relative(mesh_rows[-2]["Fx_N"], fine["Fx_N"]),
    0.025,
    relative(mesh_rows[-2]["Fx_N"], fine["Fx_N"]) < 0.025,
)
check(
    "Сходимость потерь на двух последних сетках",
    relative(mesh_rows[-2]["loss_W"], fine["loss_W"]),
    0.025,
    relative(mesh_rows[-2]["loss_W"], fine["loss_W"]) < 0.025,
)
reverse = field("обратное-чередование", 0.5, sequence=-1)
check(
    "Реверс фаз меняет знак тяги",
    relative(reverse["Fx_N"], -fine["Fx_N"]),
    0.01,
    relative(reverse["Fx_N"], -fine["Fx_N"]) < 0.01 and abs(fine["Fx_N"]) > 1e-5,
)
check(
    "Реверс сохраняет джоулевы потери",
    relative(reverse["loss_W"], fine["loss_W"]),
    0.01,
    relative(reverse["loss_W"], fine["loss_W"]) < 0.01,
)
doubled = field("двойной-ток", 0.5, amplitude=200)
check(
    "Тяга пропорциональна квадрату тока",
    relative(doubled["Fx_N"], 4 * fine["Fx_N"]),
    0.001,
    relative(doubled["Fx_N"], 4 * fine["Fx_N"]) < 0.001,
)
check(
    "Потери пропорциональны квадрату тока",
    relative(doubled["loss_W"], 4 * fine["loss_W"]),
    0.001,
    relative(doubled["loss_W"], 4 * fine["loss_W"]) < 0.001,
)
insulator = field("непроводящая-пластина", 0.5, conductivity=0)
check(
    "Без проводимости интеграл силы Лоренца равен нулю",
    abs(insulator["lorentz_x_N"]),
    1e-12,
    abs(insulator["lorentz_x_N"]) < 1e-12,
)
check(
    "Без проводимости джоулевы потери равны нулю",
    abs(insulator["loss_W"]),
    1e-12,
    abs(insulator["loss_W"]) < 1e-12,
)
zero_residual = abs(insulator["Fx_N"]) / max(abs(fine["Fx_N"]), 1e-15)
check(
    "Остаток интеграла напряжений в воздухе относительно рабочей тяги",
    zero_residual,
    1e-4,
    zero_residual < 1e-4,
)
far = field("удалённая-граница", 0.5, radius=600)
check(
    "Влияние удаления внешней границы на тягу",
    relative(far["Fx_N"], fine["Fx_N"]),
    0.02,
    relative(far["Fx_N"], fine["Fx_N"]) < 0.02,
)
for frequency in (10, 25, 100, 200, 500):
    field("частота-" + str(frequency), 0.5, frequency=frequency)
finish({"x": "frequency_Hz", "y": "Fx_N"})

Картина рассчитанного поля

Линии магнитного потока: сетка-3.ans
Визуализация сохранённого решения FEMM 5 сетка-3.ans. Плоская постановка: изолинии векторного потенциала Az. Показана действительная компонента фазора при фазе 0; это не модуль индукции. Показан увеличенный фрагмент расчётной области. Контуры деталей взяты из той же модели. Области вне сохранённых треугольников не заполняются. Это научный график сохранённых данных. Нажмите на карту, чтобы открыть её отдельно и увеличить.

Окна FEMM 5

Снимки интерфейса FEMM показывают геометрию, настройки и работу с результатами в FEMM 5. Откройте изображение, чтобы рассмотреть подписи и значения в полном размере.

Бегущее поле: наведённые токи, тяга пластины и реверс фаз. Геометрия учебной модели; подписи скрыты для читаемости.
Бегущее поле: наведённые токи, тяга пластины и реверс фаз. Геометрия учебной модели; подписи скрыты для читаемости. Открыть в полном размере
Сохранённое решение «Бегущее поле: наведённые токи, тяга пластины и реверс фаз». Норма комплексного вектора амплитуд магнитной индукции B, Тл; гармонический режим 50 Гц. Контуры потенциала скрыты.
Сохранённое решение «Бегущее поле: наведённые токи, тяга пластины и реверс фаз». Норма комплексного вектора амплитуд магнитной индукции B, Тл; гармонический режим 50 Гц. Контуры потенциала скрыты. Открыть в полном размере

Результаты и численные проверки

Сохранено решений FEMM: 3. Выполнено проверок: 44. Полная точность чисел и условия сравнения доступны в таблицах результатов JSON.

Результаты расчётов и производные итоги
Активная мощность цепей, ВтМодельЧастота, ГцПоперечная сила Fy, НМодуль полного тока пластины, АРадиус границы, ммСостояниеПроводимость, МСм/мЧередование фаз: +1/−1Сила Лоренца по x, НПродольная тяга Fx, НЭлементовПолный ток пластины Re(I), АПолный ток пластины Im(I), ААмплитуда фазного тока, АПотери пластины, ВтМасштаб сетки, мм
154сетка-1.fem50-12,7228 × 10⁻⁹400сетка-13517,1217,12625487-120,9 × 10⁻⁹193,3 × 10⁻⁹1001541,2
154,1сетка-2.fem50-12,7628,59 × 10⁻⁹400сетка-23517,1277,12945985-28,16 × 10⁻⁹4,926 × 10⁻⁹100154,10,8
154,2сетка-3.fem50-12,7916,07 × 10⁻⁹400сетка-33517,1337,133110731-1,805 × 10⁻⁹-15,97 × 10⁻⁹100154,20,5
154,2обратное-чередование.fem50-12,7994,67 × 10⁻⁹400обратное-чередование35-1-7,133-7,13411073186,1 × 10⁻⁹-39,35 × 10⁻⁹100154,20,5
616,7двойной-ток.fem50-51,1532,14 × 10⁻⁹400двойной-ток35128,5328,53110731-3,611 × 10⁻⁹-31,94 × 10⁻⁹200616,70,5
-178,1 × 10⁻¹²непроводящая-пластина.fem50-934 × 10⁻⁶0400непроводящая-пластина010-312,5 × 10⁻⁶1107310010000,5
156,1удалённая-граница.fem50-12,9116,5 × 10⁻⁹600удалённая-граница3517,1027,10214965816,38 × 10⁻⁹1,998 × 10⁻⁹100156,10,5
21,66частота-10.fem10-1,79910,22 × 10⁻⁹400частота-103514,2844,284110731-8,579 × 10⁻⁹-5,552 × 10⁻⁹10021,660,5
85,27частота-25.fem25-7,07714,74 × 10⁻⁹400частота-253517,2467,246110731-7,726 × 10⁻⁹-12,55 × 10⁻⁹10085,270,5
200,7частота-100.fem100-16,6111,18 × 10⁻⁹400частота-1003514,8154,8151107317,615 × 10⁻⁹-8,184 × 10⁻⁹100200,70,5
223,8частота-200.fem200-18,3236,57 × 10⁻⁹400частота-2003512,5592,55811073136,29 × 10⁻⁹-4,506 × 10⁻⁹100223,80,5
252,9частота-500.fem500-19,1922,04 × 10⁻⁹400частота-5003511,0641,06411073116,55 × 10⁻⁹14,55 × 10⁻⁹100252,90,5
Проверки опубликованного расчёта
КритерийПолученоДопуск или ожидаемое значениеИтог
Изолированная пластина: нулевой суммарный ток по интегралу J: сетка-12,28 × 10⁻⁹1e-06Выполнен
Баланс активной мощности: сетка-121,69 × 10⁻¹²0,005Выполнен
Тяга: напряжения Максвелла и сила Лоренца: сетка-1708,4 × 10⁻⁶0,025Выполнен
Изолированная пластина: нулевой суммарный ток по интегралу J: сетка-2285,9 × 10⁻¹²1e-06Выполнен
Баланс активной мощности: сетка-27,763 × 10⁻¹²0,005Выполнен
Тяга: напряжения Максвелла и сила Лоренца: сетка-2276,2 × 10⁻⁶0,025Выполнен
Изолированная пластина: нулевой суммарный ток по интегралу J: сетка-3160,7 × 10⁻¹²1e-06Выполнен
Баланс активной мощности: сетка-36,112 × 10⁻¹²0,005Выполнен
Тяга: напряжения Максвелла и сила Лоренца: сетка-33,814 × 10⁻⁶0,025Выполнен
Сходимость тяги на двух последних сетках510,2 × 10⁻⁶0,025Выполнен
Сходимость потерь на двух последних сетках446,9 × 10⁻⁶0,025Выполнен
Изолированная пластина: нулевой суммарный ток по интегралу J: обратное-чередование946,7 × 10⁻¹²1e-06Выполнен
Баланс активной мощности: обратное-чередование13,57 × 10⁻¹²0,005Выполнен
Тяга: напряжения Максвелла и сила Лоренца: обратное-чередование115,9 × 10⁻⁶0,025Выполнен
Реверс фаз меняет знак тяги122 × 10⁻⁶0,01Выполнен
Реверс сохраняет джоулевы потери8,371 × 10⁻¹²0,01Выполнен
Изолированная пластина: нулевой суммарный ток по интегралу J: двойной-ток160,7 × 10⁻¹²1e-06Выполнен
Баланс активной мощности: двойной-ток6,112 × 10⁻¹²0,005Выполнен
Тяга: напряжения Максвелла и сила Лоренца: двойной-ток3,814 × 10⁻⁶0,025Выполнен
Тяга пропорциональна квадрату тока00,001Выполнен
Потери пропорциональны квадрату тока00,001Выполнен
Изолированная пластина: нулевой суммарный ток по интегралу J: непроводящая-пластина01e-06Выполнен
Без проводимости интеграл силы Лоренца равен нулю01e-12Выполнен
Без проводимости джоулевы потери равны нулю01e-12Выполнен
Остаток интеграла напряжений в воздухе относительно рабочей тяги43,81 × 10⁻⁶0,0001Выполнен
Изолированная пластина: нулевой суммарный ток по интегралу J: удалённая-граница165 × 10⁻¹²1e-06Выполнен
Баланс активной мощности: удалённая-граница373,3 × 10⁻¹⁵0,005Выполнен
Тяга: напряжения Максвелла и сила Лоренца: удалённая-граница13,76 × 10⁻⁶0,025Выполнен
Влияние удаления внешней границы на тягу0,0043760,02Выполнен
Изолированная пластина: нулевой суммарный ток по интегралу J: частота-10102,2 × 10⁻¹²1e-06Выполнен
Баланс активной мощности: частота-102,2 × 10⁻¹²0,005Выполнен
Тяга: напряжения Максвелла и сила Лоренца: частота-1026,18 × 10⁻⁶0,025Выполнен
Изолированная пластина: нулевой суммарный ток по интегралу J: частота-25147,4 × 10⁻¹²1e-06Выполнен
Баланс активной мощности: частота-25548,4 × 10⁻¹⁵0,005Выполнен
Тяга: напряжения Максвелла и сила Лоренца: частота-251,416 × 10⁻⁶0,025Выполнен
Изолированная пластина: нулевой суммарный ток по интегралу J: частота-100111,8 × 10⁻¹²1e-06Выполнен
Баланс активной мощности: частота-10010,32 × 10⁻¹²0,005Выполнен
Тяга: напряжения Максвелла и сила Лоренца: частота-10039,32 × 10⁻⁶0,025Выполнен
Изолированная пластина: нулевой суммарный ток по интегралу J: частота-200365,7 × 10⁻¹²1e-06Выполнен
Баланс активной мощности: частота-200127,1 × 10⁻¹²0,005Выполнен
Тяга: напряжения Максвелла и сила Лоренца: частота-200125,5 × 10⁻⁶0,025Выполнен
Изолированная пластина: нулевой суммарный ток по интегралу J: частота-500220,4 × 10⁻¹²1e-06Выполнен
Баланс активной мощности: частота-500249,3 × 10⁻¹²0,005Выполнен
Тяга: напряжения Максвелла и сила Лоренца: частота-500340,9 × 10⁻⁶0,025Выполнен

Допуски относятся к указанной учебной задаче и способу сравнения. Число показанных цифр не означает такой же физической точности.

Модели, решения и программа

Для нового расчёта сохраните программу, модели и необходимые данные в одну рабочую папку, сохраняя структуру подпапок.

Полные численные результаты

Границы применимости