LINUX.ORG.RU

N-body для электронного облака


0

1

Disclaimer: я полный нуб в численном моделировании, пожалуйста сильно не бейте.

Делаю моделирование облака электронов в вакууме во внешнем электрическом статичном поле. Количество частиц 1-3х 10^6. Энергии до 100 эВ. Диаметр облака от десятков микрон до миллиметров. Сейчас использую Барнс-Хат с leapfrog интегрированием. Магнитное поле не учитываю поскольку ~v/c, а скорости небольшие (если тут не прав, поправте pls)

Вопрос: как проверить правильность модели?

Энергия сохраняется в пределах долей процента. Шаг интегрирования по времени менял вроде как тоже на энергию и результат не сильно влияет. Можно ли это считать критерием правильности?

Еще на импульс можно посмотреть. Ну и на простых тестовых задачах погонять с известными аналитическими решениями - типа с одним электроном, с двумя электронами... Еще сравнивать решения (не по энергии а по траекториям) с разными шагами - должно сходится. Можно ввести разницу между двумя решениями скажем как 1/N sqrt{ sum_i (r1_i-r2_i)^2+(v1_i-v2_i)^2 }, сравнивать решения с различающимися вдвое шагами (в один и тот же момент времени) и смотреть как оно зависит от шага и сходится ли куда нить вообще...

AIv ★★★★★
()
Ответ на: комментарий от AIv

Еще на импульс можно посмотреть.

В смысле на импульс?

...типа с одним электроном, с двумя электронами...

На простых системах проверял, работает.

...сравнивать решения с различающимися вдвое шагами...

Да про 1/2 шага это же очевидно, а я не смотрел. Спасибо огромное, буду поглядеть.

Вообще n-body это самое прямое решение задачи. Скажите пожалуйста, правильно ли я понимаю что самая большая системная проблема этого метода — накапливание ошибки при интегрировании? Просто существуют еще всякие particle-mesh методы, метод моментов итд. Они точнее или их основная цель просто уменьшить количество флопов?

ebantrop
() автор топика

Магнитное поле не учитываю поскольку ~v/c, а скорости небольшие (если тут не прав, поправте pls)

Вот здесь меня терзают сомнения, ибо сила поперёк v будет направлена, так что надо учитывать. Но я тоже не спец :)

Энергия сохраняется в пределах долей процента.

Магнитное поле работы не совершает.

i-rinat ★★★★★
()
Ответ на: комментарий от ebantrop

В смысле на импульс?

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

...правильно ли я понимаю...

Я плазмой не занимаюсь. Коллеги считают PIC-ом, но у них задачи другие (в частности ионы есть). Метод моментов ЕМНИП это вообще усредненное описание системы. Вы спросите у VLev - он лучше разбирается;-)

Какую сверхзадачу то решаете?

AIv ★★★★★
()
Ответ на: комментарий от ebantrop

Вот несколько соображений, которые не опираются на мат. доказательства, так что применять надо с осторожностью:

Метод PIC - это метод расчета полей, созданных зарядами, также как и Барнс-Хут. Барнс-хут не самый точный метод из семейства tree-method, точнее и более вычислительно накладный - FMM. Заменить Barnes Hut на что-то другое целесообразно, если поле действующее от системы зарядов на электрон сопоставимо по своему значению с полем действующим от внешних электродов, при условии, что точности не хватает(по крайней мере, если внешнее поле задано не аналитически, а тоже вычисляется и также с ошибкой, что на практике при недостатке точности реализуется чаще из-за конечных размеров реальных устройств и неидеального по своей природе поля). Это соотношение довольно легко можно оценить аналитически, зная примерный размер облака и внешние поля. Для проверки есть ли недостаточная точность можно попробовать заменить электроны квазизарядами с массой и зарядом умноженным на 10, 100, 1000 и рассчитать все попарные взаимодействия между ними точно, посмотреть как себя ведет система, если также, то менять не стоит, если нет, то можно попробовать посчитать короткое время с 1к частицами напрямую на гпу и посмотреть на что больше похож результат. В методе leap frog ошибки накапливаться не должны http://einstein.drexel.edu/courses/Comp_Phys/Integrators/leapfrog/

gameover__
()
Ответ на: комментарий от AIv

А можно чуть подробней про Барнс-Хат ?

Ежу понятно, что в лоб n-body для 10^6 тяжело решить. На GPU оно конечно можно, но оно у меня nvidia не супер мощна, да и брутально оно не изящно как-то.

Ну как каждый профан в наши дни, я начал с педивикии. Оттуда:

http://www.ecs.umass.edu/~mettu/ece665/barnes_86.pdf

ну и небольшая поправка к критерию дальности (статью не найду сейчас), но вместо l/D < \theta (см стр 447, абзац перед кодом) берут l/D + |c_m - c|/D < \theta, где |c_m - c| расстояние между геометрическим центром и центром масс.

Если внешнее поле постоянно по пространству...

Оно постоянно по времени. По пространству оно как раз хитровывернутое.

Какую сверхзадачу то решаете?

Хочу знать пространственное распределение электронов вылетающих из МКП.

ebantrop
() автор топика
Ответ на: комментарий от ebantrop

МКП

Московский клуб предпринимателей?
Международная конфедерация профсоюзов?
Македонская коммунистическая партия?
Механическая коробка передач?
Модульный конвейерный процессор?
Монтажный Кран Пневмоколесный?
Муниципальное казенное предприятие?
Микроканальная пластина?

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Вот здесь меня терзают сомнения, ибо сила поперёк v будет направлена, так что надо учитывать. Но я тоже не спец :)

Меня тоже, потому и интересуюсь. Но даже для 100 eV, скорость всего около 6000 км/с. Сила ~1/r^3.

ebantrop
() автор топика
Ответ на: комментарий от i-rinat

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

ebantrop
() автор топика
Ответ на: комментарий от gameover__

Спасибо за комментарий.

точнее и более вычислительно накладный - FMM

Более накладный по сравнению с Барнс-Хатом?

то можно попробовать посчитать короткое время с 1к частицами напрямую

Что значит напрямую? Просто в лоб частица-частица и интегрировать leapfrog'ом? Я сравнивал на тысячах частиц. Результат согласуется с Барнс-Хатом. Собственно я стал пользовать Барнс-Хат после того как стало понятно что больше 4к частиц на моем компьютере посчитать не получится. Оно конечно можно, но совсем непрактично.

Правильно я понимаю что самое точное что можно сделать в принципе — это просто интегрирование прямых взаимодействий в лоб?

ebantrop
() автор топика
Ответ на: комментарий от ebantrop

более накладный - не совсем корректно. Это зависит от необходимой точности и количества частиц. Просто если точность нужна невысокая(когда Барнс Хут не редуцируется к попарному пересчету всех взаимодействий) и количество частиц небольшое, то хотя метод FMM имеет алгоритмическую сложность O(N) там могут получаться довольно большие константы и тогда на малом количестве частиц он будет проигрывать Барнс Хуту со сложностью O(NlnN). Особенно такие проблемы были актуальны в 3D случае. За последнее время в сам алгоритм FMM внесено большое количество оптимизаций, которые отчасти решают эти проблемы, но они очень сильно усложняют его реализацию, по сравнению со сравнительно простой реализацией алгоритма Барнс Хут.

Что значит напрямую? Просто в лоб частица-частица и интегрировать leapfrog'ом? Я сравнивал на тысячах частиц. Результат согласуется с Барнс-Хатом. Собственно я стал пользовать Барнс-Хат после того как стало понятно что больше 4к частиц на моем компьютере посчитать не получится. Оно конечно можно, но совсем непрактично.

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

Правильно я понимаю что самое точное что можно сделать в принципе — это просто интегрирование прямых взаимодействий в лоб?

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

gameover__
()
Ответ на: комментарий от gameover__

...алгоритм FMM внесено большое количество оптимизаций, которые отчасти решают эти проблемы, но они очень сильно усложняют его реализацию, по сравнению со сравнительно простой реализацией алгоритма Барнс Хут.

Барнс-Хат прост как грабли. Посему у меня возник вопрос что я делаю не так? И как это можно проверить. Похоже что никак, если оставаться на уровне дилетанта. Точность которую дает мое деревянно-барнсо-хатово поделеие меня устраивает. По крайней мере если сравнивать с прямым методом с малым количеством частиц.

Скорее всего да, но там есть нюансы...

Вот все дело как всегда в нюансах. Я понимаю что я в этом профан. Мне собственно интересно как я могу оценить ошибку вычислений. Понятно что я наврал. Если это доли процента, меня устраивает. Главное что бы не на порядок-другой.

Может кто знает?

ebantrop
() автор топика
Ответ на: комментарий от ebantrop

Прикольно... спасибо за ссылку. А если для каждой ячейки взять мультипольное разложение, это как называется?

Хочу знать пространственное распределение электронов вылетающих из МКП?

Вы часом не из центра Келдыша? У меня коллеги активно PIC-ом холловский двигатель считают. 3D3V кинет. модель плазмы;-)

AIv ★★★★★
()
Ответ на: комментарий от AIv

Это называется FMM, только в современном FMM еще много чего делается.

gameover__
()
Ответ на: комментарий от AIv

Вот ссылка на ключевую статью по современному ФММ(для n body problem), не касаясь стратегий распараллеливания и применения для решения различных других дифф. уравнений.

http://scholar.google.ru/scholar_url?hl=en&q=http://amath.colorado.edu/co...

gameover__
()

с leapfrog интегрированием

Всегда считал, что второго порядка аппроксимации по времени, что дает leap-frog, для N-body не хватает, по крайней мере с бесконечным в нуле потенциалом (как у Кулона).

как проверить правильность модели?

Соответственно, по частице с максимальной скорость, вылетающей из облака.

VLev
()
Ответ на: комментарий от ebantrop

Правильно я понимаю что самое точное что можно сделать в принципе — это просто интегрирование прямых взаимодействий в лоб?

Последним, кто так думал был Исаак Ньютон. С тех пор стало понятно, что
-Во-первых, «интегрирование» численное, а аналитически решается задача разве что трёх тел.
-Во-вторых, никто (кроме Бога) не знает точного значения начальных условий.
В остальном, наилучшая модель зависит от задачи. В данном случае — насколько subj-евое «облако заряда» далеко от плазмы. В частности, есть ли в облаке что-то, компенсирующее заряд электронов.

VLev
()
Ответ на: комментарий от VLev

по частице с максимальной скорость, вылетающей из облака.

дык вроде у Максвелла хвост бесконечный?

AIv ★★★★★
()
Ответ на: комментарий от AIv

разве что при бесконечном числе частиц. А для миллиона частиц хвост обрезается ЕМНИП на 3,5 тепловых.
Вообще, хвосты функции распределения IMHO неплохой показатель адекватности модели.

VLev
()
Ответ на: комментарий от AIv

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

VLev
()
Ответ на: комментарий от VLev

Не помогает даже использование softening в расчете Кулоновского взаимодействия и более мелкого временного шага? Правильно ли я понимаю, что leap frog в таком случае применяется только для PIC, где такие проблемы не возникают? Какой метод интегрирования используют при расчете точного Кулоновского взаимодействия и методов с аналогичными проблемами в случае облака с заряженными частицами одного знака?

gameover__
()
Ответ на: комментарий от gameover__

softening

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

более мелкого временного шага

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

leap frog в таком случае применяется только для PIC, где такие проблемы не возникают?

угу. Более того, в PIC никто и не ставит задачу точно просчитать траектории каждой частицы --- гораздо важнее адекватное поведение всего ансамбля частиц как целого. Тем более что «крупная частица» в PIC — это совсем даже не частица в N-body, и уравнения описывающие их движение только по форме похожи на уравнения Ньютона.

Какой метод интегрирования используют при

К сожалению, я несколько оторвался от последних веяний, но что не второго порядка — точно.

VLev
()
Ответ на: комментарий от VLev

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

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

К сожалению, я несколько оторвался от последних веяний, но что не второго порядка — точно.

Что же спасибо, нужно будет посмотреть литературу.

gameover__
()
Ответ на: комментарий от gameover__

Какой метод интегрирования используют при расчете точного Кулоновского взаимодействия и методов с аналогичными проблемами в случае облака с заряженными частицами одного знака?

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

AIv ★★★★★
()
Ответ на: комментарий от AIv

Прикольно... спасибо за ссылку. А если для каждой ячейки взять мультипольное разложение, это как называется?

На самом деле так и делают в задачах для астрономии. Называется оно Hierarchical multipole expansion, тут есть две статьи с описанием, если интересно:

http://www.mpa-garching.mpg.de/galform/gadget/index.shtml#license

Вы часом не из центра Келдыша? У меня коллеги активно PIC-ом холловский двигатель считают. 3D3V кинет. модель плазмы;-)

Нет, не из Келдыша. По моему для моей задачи модель плазмы это перебор. Энергии и плотность не те что решают ребята для Холла и токомаков всяких. Я сильно все упрощаю, убрав, в частности, магнитное поле, что недопустимо в плазме.

ebantrop
() автор топика
Ответ на: комментарий от VLev

Всегда считал, что второго порядка аппроксимации по времени, что дает leap-frog, для N-body не хватает, по крайней мере с бесконечным в нуле потенциалом (как у Кулона).

Возможно я что то делаю не так. Я leapfrog подглядел тут:

http://www.mpa-garching.mpg.de/galform/gadget/gadget2-paper.pdf Раздел 4

Честно говоря я не знаю применимо ли это в данном случае. Бесконечность в нуле я обхожу через softening, просто не ограничивая потенциальную энергию сверху.

Соответственно, по частице с максимальной скорость, вылетающей из облака.

Спасибо за совет.

ebantrop
() автор топика
Ответ на: комментарий от ebantrop

Не знаю как исправить каммент, но softening естественно ограничивает энергию («не» там лишнее)

ebantrop
() автор топика
Ответ на: комментарий от VLev

насколько subj-евое «облако заряда» далеко от плазмы.

Это хороший вопрос.

В частности, есть ли в облаке что-то, компенсирующее заряд электронов.

В каком смысле? В моей модели все происходит в вакууме. Изначально из МКП вылетает низко энергитичное облако электронов. Есть статьи, где люди моделировали и измерили энергии (единицы эВ) и углы вылета. Оттуда я и взял начальные условия.

Потом это облако движется ускоряясь во внешнем поле от МКП к аноду. Кулоновское расталкивание разрывает это облако. Я хочу знать каково будет распределение заряда на аноде в зависимости от разных условий. В частности геометрии, потенциала на МКП и количества электронов.

ebantrop
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.