![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
SvetlanaS |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 16.4.2013 Репутация: нет Всего: нет |
Есть программа, написанная для случая, когда электрическое поле - константа по всей камере. Я смоделировала неоднородное поле, которое представляется в виде файла с данными : (x,y,z,Е). Сама программа описывает трекинг частиц в камере и конечную поляризацию. Нужно понять, как повлияет изменение конфигурации поля на конечный результат. Благодарю за любую помощь!
|
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
E - это вектор, так что должны быть Ex, Ey, Ez. Или это производная от напряжённости электрического поля.
Данные из файла грузить в массив:
Как переделывать - зависит от того, как сделана оригинальная задача. Можно, например, камеру разбить на SizeX*SizeY*SizeZ кубиков и считать что в каждом кубике поле постоянно и применять для него старую программу. Это сообщение отредактировал(а) math64 - 16.4.2013, 12:56 |
|||
|
||||
SvetlanaS |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 16.4.2013 Репутация: нет Всего: нет |
Я уже на выходе векторы (Ex,Ey;Ez) перевожу в угловое распределение :
x y z (alpha)[°] 1.0600512E-5 -0.26 0.03 11.823385960146522 1.0600512E-5 -0.26 0.031 10.39239954987032 1.0600512E-5 -0.26 0.032 6.401619076676373 1.0600512E-5 -0.26 0.033 5.970332639677054 1.0600512E-5 -0.26 0.034 5.566954500788649 ---------------------------------------------------------------------------------------------------- Мне нужно, чтобы программа читала файл с данными о поле, например, выведу сразу абсолютные значения вместо углов. Добавлено через 6 минут и 8 секунд А оригинальная задача учитывает гравитационное действие, частица отражается от стенок камеры. Меняет поляризацию в процессе столкновений. Громоздкая программа. Как-то надо согласовать трекинг, который уже прописан с теми координатами,что в файле. |
|||
|
||||
SvetlanaS |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 16.4.2013 Репутация: нет Всего: нет |
Непонятно, надо ли каждый раз при переходе частиц из одних координат в другие обращаться к массиву, находить те координаты или близкие к ним, считывать значение поля в этой точке или в некоторой области, менять поляризацию, исходя из того,что поле поменялось, затем по новой.. Это же , наверное, супергромоздко. Совершенно не понимаю, как реализовать это в программе.
Добавлено через 2 минуты и 10 секунд В постоянном поле 1000 частиц обрабатывалась минут 20-25. |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
Значения поля меняется только по z? Тогда можно делить не на кубики, а на слои. Частица должна отражаться от верхней/нижней стенки только в верхнем и нижнем слое. В середине - переходить из одного слоя в другой.
|
|||
|
||||
SvetlanaS |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 16.4.2013 Репутация: нет Всего: нет |
Нет, я привела в примере только начало файла.. Там сложное движение нейтронов по объему камеры.
Добавлено через 2 минуты и 30 секунд Spintracking в полях |
|||
|
||||
SvetlanaS |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 16.4.2013 Репутация: нет Всего: нет |
Забыла добавить.. Конечно, C++
|
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
Тогда дели на кубики.
В исходной задаче выдели отдельно отражение от стенки и движение внутри камеры. При достижении границы кубика передаёшь частицу в соседний или отражаешь от стенки. При отсутствии магнитного поля, если не ошибаюсь, должен быть потенциал. Вместо вектора (Ex, Ey, Ez) можно использовать U Тогда Ex = (Uправ - Uлев)/dx, Ey = (Uтыл - Uпер) / dy, Ez = (Uверх - Uниз) / dz где Uправ, Uлев, Uтыл, Uпер, Uверх, Uниз - потенциалы на гранях кубика, dx, dy dz - размеры кубика. Если разбить на кубики 10x10x10 программа будет работать примерно в 1000 раз дольше, или нужно оптимизировать. Это сообщение отредактировал(а) math64 - 17.4.2013, 08:22 |
|||
|
||||
SvetlanaS |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 16.4.2013 Репутация: нет Всего: нет |
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |