epicf / ef

Low-energy charged particles' dynamics simulation using particle-in-cell method
MIT License
11 stars 9 forks source link

Attempt to add tube particle source. Possible to compile. Impossible … #4

Closed dumbman closed 6 years ago

dumbman commented 6 years ago

…to run

noooway commented 6 years ago

Код вроде был верный. Если в конфиге немного поменять параметры:

tube_axis_start_x = 0.4
tube_axis_start_y = 0.4
tube_axis_start_z = 0.3
tube_axis_end_x = 0.4
tube_axis_end_y = 0.4
tube_axis_end_z = 0.4

заменить на

tube_axis_start_x = 0.5
tube_axis_start_y = 0.5
tube_axis_start_z = 0.3
tube_axis_end_x = 0.5
tube_axis_end_y = 0.5
tube_axis_end_z = 0.4

то все бы заработало.

В первом случае почему-то иногда генерировались частицы с отрицательными координатами по x и y. Когда у частицы отрицательная координата, индексы узлов spat_mesh для раздачи заряда считаются неправильно. При попытке обратиться в массив с зарядовой плотностью по этим индексам программа падает.

Почему генерируются отрицательные координаты мне сходу не ясно. Скорее всего ошибка была где-то в Particle_source_tube::uniform_position_in_tube. Из-за того, что была попытка сделать произвольное направление для оси трубки все получилось слишком сложно.

Пока оставил трубку только вдоль оси Z. На ближайшее время хватит, потом надо будет добавить две другие оси.

То же касается цилиндрических источников.