Skip to content

FEMM script for coilgun simulation and optimization

Notifications You must be signed in to change notification settings

art-den/femm-coilgun

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Скрипт для симуляции выстрела пушки гаусса в FEMM

  • Скрипт нужен для того, чтобы перед постройкой пушки гаусса оценить параметры катушки, пули и конденсатора, а также подобрать оптимальные параметры.
  • Скрипт умеет оптимизировать начальные параметры и находить такие при которых скорость выстрела выше
  • Здесь представлен переработанный и "причёсанный" скрипт, взятый с сайта http://foar.ru
  • Что такое пушка гаусса расписано в вики

Необходимое ПО

Всё что нужно для работы скрипта можно скачать по следующим ссылкам:

Подготовка

  • Устанавливаем программу FEMM
  • Записываем скрипт (coilgun.lua) и файл настроек (primer.txt) в один каталог

Симуляция выстрела

Для начала надо отредактировать файл настроек под ваши параметры гаусса. Для этого открываем его в любом текстовом редакторе (например, блокноте). Файл выглядит следующим образом:

-- Конденсатор
conf.c       = 900	-- мкФ, ёмкость конденсатора
conf.u       = 450	-- Вольт, напряжение конденсатора
conf.r_cc    = 0	-- Ом, ESR конденсатора (0 - использовать расчётное значение, иначе - значение в оммах)

-- Катушка
conf.d_pr    = 0.65	-- мм, диаметр провода без изоляции
conf.l_kat   = 20	-- мм, длина катушки
...
  • После коррекции значений сохраняем файл обратно на диск.
  • Затем запускаем FEMM и выбираем в нём пункт меню "Open Lua Script":
  • И указываем имя файла настроек без расширения и нажимаем "Enter"

После чего начнётся процесс расчёта выстрела. В зависимости от мощности компьютера и значений, введённых в файле настроек, он может длится довольно долгое время. Так что наберитесь терпения. Если вы во время расчёта вдруг поняли, что ввели неправильные значения, то нажмите "Esc" на клавиатуре и процесс расчёта прервётся. Можно будет подредактирвоать файл настроек и начать всё заново.

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

Рекомендации

Если результат симуляции не устраивает, то можно поменять один или несколько параметров в файле настроек и запустить симуляцию заново или же воспользоваться возможностью оптимизации.

Оптимизация параметров

Что такое оптимизация

Оптимизация - это в нашем случае поиск лучшей конфигурации гаусса по сравнению с тем что у нас есть на данный момент. Например, скрипт насчитал, что скорость пули вашего гаусса получается 10 м/с, но вы хотите более высоких значений. Так вот поиск при каких параметрах гаусса (ёмкости конденсатора, начального напряжения, катушки, пули и.т.п) будет выходить более высокая скорость - это и есть оптимизация.

Оптимизацию можно выполнять вручную (например, менять какие-либо настройки в начальных значениях, а затем смотреть, что из этого получается). Но возможность поиска более быстрого решения уже заложена в самом скрипте и далее будет расписано как ей воспользоваться.

Как оптимизировать при помощи скрипта

Далее приведёт раздел конфигурационного файла, который касается оптимизации:

-- Параметры оптимизации 
conf.opt = 0       -- Нужно ли оптимизировать полученные результаты (0 - нет, 1 - да) 
conf.opt_t = "vel" -- Что именно надо оптимизировать ("vel" - скорость, "eff" - эффективность) 
opt.l_kat = nil    -- Оптимизация по длине катушки (nil - без оптимизации, <значение> - шаг для подбора оптимального значения) 
opt.d_kat = nil    -- Оптимизация по диаметру катушки (nil - без оптимизации, <значение> - шаг для подбора оптимального значения) 
opt.l_sdv = nil    -- Оптимизация по начальной позиции пули в катушке (nil - без оптимизации, <значение> - шаг для подбора оптимального значения) 

В первую очередь для включения оптимизации нужно задать параметр conf.opt = 1, а затем выбрать по каким параметрам мы собираемся оптимизировать. В conf.opt_t задаётся что именно мы будем оптимизировать - скорость или КПД. Если в conf.opt_t указать "eff", то скрипт будет искать результаты с максимальным КПД.

Если мы хотим оптимизировать по диаметру катушки, то меняем параметр opt.d_kat с nil на 1. Единица, которую мы задали - это шаг в миллиметрах, с которым скрипт будет менять диаметр катушки, постепенно приближаясь к более высокой скорости, чем в первоначальном варианте.

Можно оптимизировать по нескольким параметрам. Например одновременно по длине катушки и по диаметру катушки. Для этого выставляем opt.d_kat = 1 и opt.l_kat = 1. В этом случае скрипт в процессе оптимизации будет менять диаметр и длину катушки на этот шаг и приближаться к конфигурации, которая будет выдавать более высокую скорость.

После opt. можно указывать вообще любой параметр, который есть в настройках. Например, если задать opt.l_puli = 1, то будет оптимизироваться по длине пули, подбирая значения с шагом в 1 мм.

Обратите внимание, что в процессе оптимизации скрипт запускает симуляцию много раз. Так что надо набраться терпения, чтобы дождаться, когда оптимизация наконец-то закончит работу.

Ограничение оптимизации

  • Оптимизация в скрипте выполняется при помощи алгоритма, похожего на градиентный спуск. Поэтому скрипт в конце концов приходит не к оптимальной скорости, а локальному максимуму, который располагается рядом с начальными параметрами. Но если для введённых начальных значений максимум скорости только один, то будет найдена оптимальная конфигурация.

Обсуждение

Работу скрипта можно обсудить в следующих форумах:

Планы на будущее

  • Улучшить алгоритм оптимизации
  • Научить скрипт считать, а также оптимизировать параметры для многоступенчатого гаусса

About

FEMM script for coilgun simulation and optimization

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages