EDEM
EDEM - это СAE (computer-aided engineering) программный пакет с заложенной в него моделью дискретных элементов DEM.
Стандартная папка для установки: "Disk":\Program Files\DEM Solutions\EDEM "Version of EDEM"\
В дальнейшем пути файлов будут указываться внутри данной папки.
Гид по использованию EDEM'a[1]. Подробнее [2]
Содержание
Заложенные модели
Подробнее [3]
Программирование под EDEM
Гид про программированию под EDEM[4]. Справка по EDEM API [5]
К EDEM'у можно подключать самостоятельно написанные библиотеки взаимодействий и создания частиц. Программирование данных библиотек осуществляется на языке C++. Всего есть три вида подключаемых библиотек, они же в терминах справки, "User Defined Library" (UDL):
- Contact Model (контактная модель взаимодействия, к примеру, взаимодействие Hertz-Mindlin'a);
- Particle Body Force (объемные силы и/или дальнодействующие взаимодействия, к примеру, сила тяжести и сила электромагнитного взаимодействия между частицами);
- Particle Factory (создание частиц, к примеру, в виде шаров на бильярдном столе).
Для создания UDL необходимо:
- начать новый (пустой) проект, создающий на выходе DLL библиотеку (а НЕ ехе-файл);
- добавить в проект header'ы соответствующие типу создаваемой библиотеки ([4], page 7);
- создать новый класс-наследник, методы которого будут перегружать методы интерфейса, представленного в header'ах
или
- начать новый (пустой) проект, создающий на выходе DLL библиотеку (а НЕ ехе-файл);
- загрузить в этот проект уже существующий пример UDL;
- видоизменить пример.
После компиляции и создания DLL-файла необходимо поместить его в соответствующую папку, указанную в настройках EDEM (Options->File locations...), тогда он станет доступен внутри EDEM.
Тонкости программирования
- у создаваемой библиотеки должна быть та же разрядность, что и у установленной версии EDEM (32bit или 64bit);
- у частиц есть два радиуса: физический и контактный; расчет силы (для Contact Models) между частицами происходит тогда и только тогда, когда частицы контактируют (что определяется контактным радиусом);
- с помощью встроенных средств создания начальной конфигурации невозможно создать частицы на расстоянии ближе контактного;
- библиотека, созданная в debug режиме работает существенно медленнее, чем созданная в release режиме;
- примеры UDL для EDEM 2.3 можно сказать с официального сайта (примеры UDL для EDEM 2.2[6]
Ошибки в EDEM
Не воспринимайте код в примерах и вспомогательных библиотеках, как безошибочный. Ошибки могут быть везде, в частности в:
- Helpers.h
- CBondedParticle.cpp (criterion, torques)
Отладка библиотек
С помощью Visual Studio 2010 (скорее всего верно и для 2007):
- скомпилировать библиотеку в режиме debug;
- ничего не меняя в исходниках, подключиться к процессу edem.exe (с помощью Attach to process...);
- расставить breakpoint'ы и запустить расчет/создание конфигурации.