FEMM 5Поиск
ФормулыФайлы

Часть V · Электрические машины → § 39 · ТВВ-320-2. Первый расчёт и численная достоверность

Занятие 39.3

Внешняя граница и геометрическая дискретизация

Перед началом

Что нужно вспомнить перед началом

Место занятия в инженерной методике

Расчётная лабораторная работа · Восстановление электрических характеристик синхронного генератора

Инженерный вопрос. Как отделить влияние искусственной границы A=0 от изменения сетки?

Последовательность решения, отчёт и критерии результата

От геометрии и обмоток переходят к потокосцеплениям и ЭДС, затем к характеристикам ХХ, КЗ, нагрузки и регулирования. Эти характеристики определяют требуемое возбуждение и допустимый электрический режим.

Результат получают из наблюдаемых величин и проверяют в условиях данного практикума.

Последовательность решения

  1. Обосновать постановку и способ измерения. Для характеристики запишите, что фиксировано: скорость, возбуждение, напряжение, нагрузка или мощность. Скоростная ЭДС восстанавливается из пространственного потокосцепления.

  2. Результат. Проверьте уравнение выбранного генераторного режима и знаки мощности до построения серии.

  3. Внешняя граница и геометрическая дискретизация. Выполните действия практикума по его исходной таблице. Методика и учебные файлы доступны. Проверки относятся к указанным в занятии примерам и версиям; заводская точность и завершённость всего численного цикла не заявляются.

  4. Ответить на вопрос по своим результатам. Сопоставьте контрольные величины, входы, версии и допуски.

Что включить в отчёт

Оформление наблюдений. Возбуждение, скорость, фазные потокосцепления, ЭДС и согласованные токи/напряжения в объёме конкретного опыта; независимые условия каждой строки.

Как обосновать результат

Точность и расхождения. Уточняйте шаг возбуждения или угла отдельно от сетки. При КЗ оценивайте абсолютное остаточное напряжение и его отношение к ненулевому масштабу режима.

Вывод для устройства

Свяжите полученную характеристику с выбором возбуждения, регулированием напряжения или допустимым режимом; укажите, какие проверки нужны для полной машины.

Границы вывода. Каждая характеристика требует своих независимых условий и скорости. Двумерный срез, заданные токи и статическое поле не подтверждают автоматически режим на сеть, устойчивость и полную мощность реального генератора.

Теория и вывод формул

Учебный материал с ограничениями. Как отделить влияние искусственной границы A=0 от изменения сетки?

Обозначения и единицы

Нормировки, общие обозначения и единицы курса. Обозначения конкретной задачи приведены рядом с формулами.

Указатель формул этого занятия
  1. (39.7) · Граница задачи
  2. (39.8) · Граница задачи
  3. (39.9) · Чувствительность входов

Модель и обозначения

Занятие 13 из 36 в цикле ТВВ-320-2. Как отделить влияние искусственной границы A=0 от изменения сетки?

Документированная учебная модель; заводская точность не заявляется. Новых полевых расчётов при подготовке публикации не выполнялось.

Общие обозначения цикла ТВВ-320
Таблица 39.5. Обозначения и единицы
ВеличинаФизический смыслЕдиница СИ
θm; θeМеханический и электрический углы; \theta e=p\theta mрад
pЧисло пар полюсов; для ТВВ-320-2 p=11
ULL; IЛинейное напряжение и фазный ток RMS основной симметричной составляющейВ; А
id; iq; IfАмплитудные токи d–q и постоянный ток возбужденияА
λd; λq; λfПотокосцепления в согласованной нормировкеВб·виток
Pg; Qg; TОтдаваемые активная и реактивная мощности; момент против часовой стрелкиВт; вар; Н·м

Граница задачи

Наружная окружность расположена в воздухе. На ней задаётся A_z =0; это фиксирует уровень потенциала и приближённо ограничивает внешнее поле. Радиусы равны 2, 3 и 4 наружным радиусам статора: 2590, 3885 и 5180 мм. При переносе границы сетка внешнего воздуха перестраивается, поэтому тест включает небольшое сопутствующее сеточное изменение.

Окружности геометрии созданы дугами, но сетка аппроксимирует их хордами. Угловой шаг ротора, максимальный угол сегмента дуги и угловой шаг отсчётов поля — три разных параметра. Их нельзя смешивать в одной таблице.

  1. Размер самой машины при этом не изменяется.

    R_\infty=k_R R_{\mathrm{back}},\qquad k_R\in\{2,3,4\},\quad R_{\mathrm{back}}=1295\ \mathrm{mm}
    (39.7)
  2. Стрела между дугой и хордой. В приближённой формуле \Delta \alpha выражается в радианах; это геометрическая оценка, а не оценка ошибки поля.

    \Delta r=R\left(1-\cos\frac{\Delta\alpha}{2}\right)\approx\frac{R\Delta\alpha^2}{8}
    (39.8)

Чувствительность входов

Вторая независимая серия меняет только один вход за раз: заполнение на ±1% относительно 0,8366, глубину ротора на 149,5 мм или продольную кривую статора на поперечную. Это исследуемые альтернативы модели. ±1% не является доверительным интервалом измерения, а ориентационные кривые не гарантируют верхнюю и нижнюю границы реальной машины.

Наибольшие изменения выбранных интегралов составили около 0,31% и 0,29% для заполнения, 3,50% для глубины и 3,93% для кривой статора. Последние два эффекта больше проверенных численных изменений. В материальном аудите отдельно сохраняется доля энергии вне исходного диапазона B(H); дополнительная проверка продолжений приведена в занятии 9 и examples/checked-materials-forces.

  1. Знак показывает направление изменения. Это конечное сравнение вариантов, не дифференциальная производная и не статистическая неопределённость.

    s_Q=\frac{Q_{\mathrm{variant}}-Q_{\mathrm{base}}}{\max(|Q_{\mathrm{base}}|,Q_{\mathrm{scale}})}
    (39.9)

Ограничения и происхождение методики

Учебная модель с документированными входами. Заводская и экспериментальная точность не заявляются.

Проверка относится к интегралам состояния 2; локальные поля на кромках и все силовые режимы требуют отдельного контроля.

Числа получены новой реализацией FEMM 5; проверены хеши снимков и результатов. Архив вложения использован только для направлений и задания токов.

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

Ожидаемый результат этапа

Порядок выполнения — в практикуме.

Ответ: Три внешних радиуса для состояния 2 и количественная оценка изменения интегралов.

Проверка: Учебная модель с документированными входами. Заводская и экспериментальная точность не заявляются. Проверка относится к интегралам состояния 2; локальные поля на кромках и все силовые режимы требуют отдельного контроля.

Практикум в FEMM 5

Внешняя граница и геометрическая дискретизация

Таблица 39.6. Исходные данные практикума
Исходная величинаЗначениеЕдиница
Максимальное изменение при R_{\infty}=3Rback449,3 × 10⁻⁶1
Максимальное изменение при R_{\infty}=4Rback498 × 10⁻⁶1
Максимальное изменение при дуге 1^\circ относительно 2^\circ140,5 × 10⁻⁶1
Максимальное изменение при дуге 0{,}5^\circ относительно 2^\circ127,3 × 10⁻⁶1
  1. Запустите TVV_SERIES="boundary"; сравните boundary-3 и boundary-4 с state-2 по тем же шести интегралам и шкалам.
  2. В каждом FEM проверьте наружный радиус и сохранение размеров машины. Граничное условие должно назначаться только внешней окружности.
  3. Затем отдельно запустите TVV_SERIES="input-sensitivity". Проверьте overrides каждого задания в field-plan.json и изменения в сохранённом FEM.
  4. Для отдельной проверки дуг скопируйте комплект в две новые папки. В первой сохраните учебный field-plan-arc-1.json под именем field-plan.json, во второй — field-plan-arc-05.json. Задайте TVV_SERIES="arc". Остальные входы и сеточные ограничения не меняются; прежние квитанции сохранены.

Обработка и анализ результатов

Как отделить влияние искусственной границы A=0 от изменения сетки?

  1. Сопоставьте контрольные величины, входы, версии и допуски.

Полная программа: run_fields.py

Встроенный Python FEMM 5. Зависимости, входы и точные снимки программ доступны в файлах занятия.

Python · FEMM 5
"""Занятия 11–15: самостоятельные ненулевые решения учебной модели."""
import sys,json,math,os
ROOT=globals().get('TVV_ROOT','')
if not ROOT:raise ValueError('Задайте TVV_ROOT')
if ROOT in sys.path:sys.path.remove(ROOT)
sys.path.insert(0,ROOT)
# Повторный запуск редактора не должен использовать старые модули другой копии.
for module in ('run_record','geometry','physics','build','field_results','material_variants'):
    sys.modules.pop(module,None)
from run_record import start,finish,save_json,sha
from build import build
from field_results import collect
from material_variants import variant
names=['run_fields.py','field_results.py','run_record.py','build.py','geometry.py','physics.py',
       'machine.json','winding.json','rotor-bh.json','stator-bh.json','stator-cross-bh.json','field-plan.json','model-scope.json','current-mapping.json','material_variants.py']
resume=globals().get('TVV_RESUME_DIR','')
selected=globals().get('TVV_CASE_ID',None);series=globals().get('TVV_SERIES','four-states')
part=globals().get('TVV_PART',0);parts=globals().get('TVV_PARTS',1)
if parts<1 or not 0<=part<parts:raise ValueError('Неверная часть серии')
if resume:
    folder=resume
    with open(folder+'/receipt.json') as f:record=json.loads(f.read())
    if (record.get('selected_case'),record.get('series'),record.get('part',0),record.get('parts',1))!=(selected,series,part,parts):
        raise ValueError('Продолжение требует того же набора заданий')
    for name,digest in record['inputs_and_programs'].items():
        if sha(ROOT+'/'+name)!=digest or sha(folder+'/snapshot/'+name)!=digest:
            raise ValueError('Изменены входы или версия программы: '+name)
    if 'case_outputs' not in record:raise ValueError('В этой квитанции нет проверяемых промежуточных результатов')
else:
    folder,record=start(ROOT,globals().get('TVV_OUTPUT_ROOT',ROOT+'/runs'),'fields',names,'nonzero teaching model; no factory accuracy claim')
    record['case_outputs']={}
def load(name):
    with open(folder+'/snapshot/'+name+'.json') as f:return json.loads(f.read())
plan=load('field-plan');scope=load('model-scope');rows=[]
if scope['factory_accuracy_claim']:raise ValueError('Необоснованное заявление о заводской точности')
record.update(selected_case=selected,series=series,part=part,parts=parts,status='running')
save_json(folder+'/receipt.json',record)
try:
    cases=[c for c in plan['cases'] if (c['id']==selected if selected else c.get('series')==series)]
    for index,case in enumerate(cases):
        if index%parts!=part:continue
        if case['id'] in record['case_outputs']:
            for name,digest in record['case_outputs'][case['id']].items():
                if sha(folder+'/'+name)!=digest:raise ValueError('Повреждён результат продолжения: '+name)
            with open(folder+'/'+case['id']+'-result.json') as f:rows.append(json.loads(f.read()))
            print('TVV_FIELD_REUSED',case['id']);continue
        machine=load('machine');winding=load('winding')['rows'];mesh=plan['mesh'].copy()
        for key in mesh:mesh[key]*=case.get('mesh_scale',1.)
        mesh.update(case.get('mesh_overrides',{}))
        for section,values in case.get('overrides',{}).items():machine[section].update(values)
        materials={'rotor':load('rotor-bh'),'stator':load(case.get('stator_curve','stator')+'-bh')}
        machine['_bh_limits']={tag:[v['points'][0][0],v['points'][-1][0]] for tag,v in materials.items()}
        for tag in materials:materials[tag]['points']=variant(materials[tag]['points'],case.get('bh_mode','native'))
        path=folder+'/'+case['id']+'.fem'
        record['active_case']=case['id'];save_json(folder+'/receipt.json',record)
        print('TVV_FIELD_BUILD',case['id'])
        build(globals(),machine,winding,materials,path,mesh,case['theta_deg'],case['currents_dqf_A'])
        mi_close();opendocument(path);mi_analyze(1);mi_loadsolution()
        print('TVV_FIELD_SOLVED',case['id'],mo_numelements())
        row=collect(globals(),machine,winding,case['theta_deg'],case['currents_dqf_A'],folder,case['id'],case.get('coverage',True),case.get('contour_samples',1440))
        row['case']=case;row['mesh']=mesh
        limits=plan['acceptance']
        errors={name:abs(values[2]-row['independent_circuit_flux_Wb'][name])/max(abs(values[2]),limits['flux_absolute_scale_Wb']) for name,values in row['circuits'].items()}
        row['flux_identity_relative_error']=max(errors.values())
        row['energy_identity_relative_error']=abs(row['energy_J']+row['coenergy_J']-row['sum_i_lambda_J'])/max(abs(row['sum_i_lambda_J']),limits['energy_absolute_scale_J'])
        rows.append(row);save_json(folder+'/results.json',rows)
        if row['max_copper_area_relative_error']>1e-8:raise ValueError('Площадь активных областей не совпадает')
        if row['flux_identity_relative_error']>limits['flux_identity_relative']:raise ValueError('Независимое потокосцепление не совпадает')
        if row['energy_identity_relative_error']>limits['energy_identity_relative']:raise ValueError('Не выполнен энергетический интеграл')
        mo_close();mi_close()
        save_json(folder+'/'+case['id']+'-result.json',row)
        record['case_outputs'][case['id']]={name:sha(folder+'/'+name) for name in os.listdir(folder) if name.startswith(case['id']+'.') or name.startswith(case['id']+'-')}
        save_json(folder+'/receipt.json',record);print('TVV_FIELD_CHECKED',case['id'])
    if not rows:raise ValueError('Не найдено задание расчёта')
    record['checks']={'cases':len(rows),'factory_validation':False,'mesh_convergence':False}
    finish(folder,record,'passed_field_identities_not_convergence')
except Exception as error:
    record['error']=str(error);save_json(folder+'/results.json',rows);finish(folder,record,'failed');raise
print('TVV_FIELDS_RESULT',folder,record['status'])

Самостоятельная работа

Постройте таблицу знаковых изменений шести величин для четырёх вариантов входов. Обоснуйте, какое уточнение исходных данных наиболее полезно для этой точки.

Критерий выполнения: Соблюдены определения, единицы, условия и критерии занятия. Учебная модель с документированными входами. Заводская и экспериментальная точность не заявляются. Проверка относится к интегралам состояния 2; локальные поля на кромках и все силовые режимы требуют отдельного контроля.

Литература

Полные библиографические описания

Пояснения и типичные ошибки
Какие ограничения необходимо сохранить в выводе?

Учебная модель с документированными входами. Заводская и экспериментальная точность не заявляются. Проверка относится к интегралам состояния 2; локальные поля на кромках и все силовые режимы требуют отдельного контроля.

На что обратить внимание

  • Увеличить радиусы всех узлов, а не только наружную границу.
  • Назвать исследуемый размер новым заводским исполнением.
  • Принять допустимую сеточную ошибку за допустимую неопределённость материала.
НИУ «МЭИ» · Кафедра ЭМЭЭА · Учебное пособие по FEMM 5 · Теория, вычислительный эксперимент и проверка результата.

Файлы занятия

Статус, проверки и источники

Поиск по пособию

    Разделы

    На этой странице