Користувальницькькі налаштування

Налаштування сайту


geant4

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Both sides previous revision Попередня ревізія
geant4 [2016/04/03 07:47]
wombat Использование G4MPI - компиляция программы
geant4 [2016/04/03 07:57] (поточний)
wombat [G4MPI] CMakeLists.txt
Рядок 1: Рядок 1:
 +====== GEANT4 ======
 +
 +[[http://​geant4.web.cern.ch/​geant4/​ | GEANT4]] --- это программный пакет для моделирования прохождения частиц через вещество методом Монте-Карло. Является одним из основных программных инструментов,​ используемых в [[http://​home.web.cern.ch/​ | CERN]].
 +====== Установка ======
 +
 +===== Из исходников =====
 +
 +Будем следовать рецепту((http://​geant4.cern.ch/​UserDocumentation/​UsersGuides/​InstallationGuide/​html/​ch02.html)) с официального сайта GEANT4. Установим пакеты,​ которые потребуются для сборки GEANT4:
 +
 +  apt-get install build-essential cmake libexpat1-dev
 +  ​
 +Если планируется использовать поддержку OpenGL, то:
 +
 +  apt-get install libglu1-mesa-dev libxmu-dev
 +
 +Если планируется использовать интерфейс Qt, то:
 +
 +  apt-get install libqt4-dev libqt4-opengl-dev
 +
 +  mkdir /​home/​user/​GEANT4-download
 +  cd /​home/​user/​GEANT4-download
 +  wget -cS '​http://​geant4.cern.ch/​support/​source/​geant4.10.00.p02.tar.gz'​
 +  tar -xvf geant4.10.00.p02.tar.gz
 +  mkdir geant4.10.00.p02-build
 +  cd geant4.10.00.p02-build/​
 +
 +Без поддержки OpenGL (или интерактивного графического интерфейса вообще?​ FIXME ) :
 +
 +  cmake -DCMAKE_INSTALL_PREFIX=/​home/​user/​GEANT4 -DGEANT4_BUILD_MULTITHREADED=ON /​home/​user/​GEANT4-download/​geant4.10.00.p02
 +
 +Для поддержки OpenGL для X11: ''​-DGEANT4_USE_OPENGL_X11=ON''​
 +
 +Для поддержки интерфейса Qt: ''​-DGEANT4_USE_QT=ON''​
 +
 +==== Файлы данных ====
 +
 +Если при конфигурировании отображается следующее предупреждение:​
 +
 +<​code>​
 +  *WARNING*
 +    Geant4 has been pre-configured to look for datasets
 +    in the directory:
 + 
 +    /​home/​user/​GEANT4/​share/​Geant4-10.0.2/​data
 + 
 +    but the following datasets are NOT present on disk at
 +    that location:
 + 
 +    G4NDL (4.4)
 +    G4EMLOW (6.35)
 +    PhotonEvaporation (3.0)
 +    RadioactiveDecay (4.0)
 +    G4NEUTRONXS (1.4)
 +    G4PII (1.3)
 +    RealSurface (1.0)
 +    G4SAIDDATA (1.1)
 +    G4ABLA (3.0)
 +    G4ENSDFSTATE (1.0)
 + 
 +    If you want to have these datasets installed automatically
 +    simply re-run cmake and set the GEANT4_INSTALL_DATA
 +    variable to ON. This will configure the build to download
 +    and install these datasets for you. For example, on the
 +    command line, do:
 + 
 +    cmake -DGEANT4_INSTALL_DATA=ON <​otherargs>​
 + 
 +    The variable can also be toggled in ccmake or cmake-gui.
 +    If you're running on a Windows system, this is the best
 +    solution as CMake will unpack the datasets for you
 +    without any further software being required
 + 
 +    Alternatively,​ you can install these datasets manually
 +    now or after you have installed Geant4. To do this,
 +    download the following files:
 + 
 +    http://​geant4.cern.ch/​support/​source/​G4NDL.4.4.tar.gz
 +    http://​geant4.cern.ch/​support/​source/​G4EMLOW.6.35.tar.gz
 +    http://​geant4.cern.ch/​support/​source/​G4PhotonEvaporation.3.0.tar.gz
 +    http://​geant4.cern.ch/​support/​source/​G4RadioactiveDecay.4.0.tar.gz
 +    http://​geant4.cern.ch/​support/​source/​G4NEUTRONXS.1.4.tar.gz
 +    http://​geant4.cern.ch/​support/​source/​G4PII.1.3.tar.gz
 +    http://​geant4.cern.ch/​support/​source/​RealSurface.1.0.tar.gz
 +    http://​geant4.cern.ch/​support/​source/​G4SAIDDATA.1.1.tar.gz
 +    http://​geant4.cern.ch/​support/​source/​G4ABLA.3.0.tar.gz
 +    http://​geant4.cern.ch/​support/​source/​G4ENSDFSTATE.1.0.tar.gz
 + 
 +    and unpack them under the directory:
 + 
 +    /​home/​user/​GEANT4/​share/​Geant4-10.0.2/​data
 + 
 +    As we supply the datasets packed in gzipped tar files,
 +    you will need the '​tar'​ utility to unpack them.
 + 
 +    Nota bene: Missing datasets will not affect or break
 +               ​compilation and installation of the Geant4
 +               ​libraries.
 +</​code>​
 +
 +это означает,​ что файлы данных ещё не установлены. Их можно установить прямо во время сборки,​ передав cmake параметр ''​-DGEANT4_INSTALL_DATA=ON''​. Но это потребует скачивания из интернета (несколькосот МБ). Если эти файлы уже скачаны,​ их можно вручную распаковать в нужую папку, как и подсказывает нам текст предупреждения(([[ftp://​gdo-nuclear.ucllnl.org/​pub/​|Дополнительные файлы данных]])). Для этого:
 +
 +  mkdir -p /​home/​user/​GEANT4/​share/​Geant4-10.0.2/​data
 +  cd /​home/​user/​GEANT4/​share/​Geant4-10.0.2/​data
 +  tar -xvf /​home/​user/​GEANT4-download/​G4ABLA.3.0.tar.gz ​
 +  tar -xvf /​home/​user/​GEANT4-download/​G4EMLOW.6.35.tar.gz ​
 +  tar -xvf /​home/​user/​GEANT4-download/​G4ENSDFSTATE.1.0.tar.gz ​
 +  tar -xvf /​home/​user/​GEANT4-download/​G4NDL.4.4.tar.gz ​
 +  tar -xvf /​home/​user/​GEANT4-download/​G4NEUTRONXS.1.4.tar.gz ​
 +  tar -xvf /​home/​user/​GEANT4-download/​G4PhotonEvaporation.3.0.tar.gz ​
 +  tar -xvf /​home/​user/​GEANT4-download/​G4PII.1.3.tar.gz ​
 +  tar -xvf /​home/​user/​GEANT4-download/​G4RadioactiveDecay.4.0.tar.gz ​
 +  tar -xvf /​home/​user/​GEANT4-download/​G4SAIDDATA.1.1.tar.gz ​
 +  tar -xvf /​home/​user/​GEANT4-download/​RealSurface.1.0.tar.gz
 +
 +После чего можно заново запустить cmake, как это делалось ранее, чтобы убедиться,​ что он находит все установленные файлы данных. Если это так, можно переходить к компиляции и установке:​
 +
 +  time make -j4
 +  make install
 + 
 +
 +===== G4MPI =====
 +
 +Для использования технологий MPI в GEANT4, нужно скомпилировать и установить библиотеку G4MPI. Она поставляется в архиве последних версий GEANT4 в разделе примеров((http://​geant4.web.cern.ch/​geant4/​UserDocumentation/​Doxygen/​examples_doc/​html/​Examples_MPI.html)).
 +
 +  mkdir G4MPI.build && cd G4MPI.build
 +  cmake -DGeant4_DIR=/​home/​user/​GEANT4/​lib/​Geant4-10.2.1 -DCMAKE_INSTALL_PREFIX=/​home/​user/​GEANT4/​G4MPI /​home/​user/​GEANT4-download/​geant4.10.02.p01/​examples/​extended/​parallel/​MPI/​source
 +  make
 +
 +Если компилятор выдаёт ошибку,​ приведённую ниже, это означает,​ что в системе установлена старая версия MPI.
 +
 +<​code>​
 +/​home/​user/​GEANT4-download/​geant4.10.02.p01/​examples/​extended/​parallel/​MPI/​source/​src/​G4MPIscorerMerger.cc:​ In member function ‘void G4MPIscorerMerger::​Pack(const G4VScoringMesh*)’:​
 +/​home/​user/​GEANT4-download/​geant4.10.02.p01/​examples/​extended/​parallel/​MPI/​source/​src/​G4MPIscorerMerger.cc:​309:​37:​ error: invalid conversion from ‘const void*’ to ‘void*’ [-fpermissive]
 +           &​outputBufferPosition,​comm);​
 +                                     ^
 +</​code>​
 +
 +Чтобы собрать G4MPI в таком случае нужно добавить параметр ''​-DG4MPI_OLD_MPI=ON''​
 +
 +После этого можно установить G4MPI в указанную ранее папку:
 +
 +  make install
 +
 +
 +====== Использование ======
 +
 +Список встроенных команд рабочей среды GEANT4 можно просмотреть [[http://​geant4.web.cern.ch/​geant4/​G4UsersDocuments/​UsersGuides/​ForApplicationDeveloper/​html/​Control/​UIcommands/​_.html | здесь]].
 +===== Пример B1 =====
 +
 +В этом примере моделируется прохождение γ-квантов с энергией 6 МэВ через мягкие ткани и кость человека,​ помещённые в водную среду.
 +
 +  cd /​home/​user/​geant/​
 +  cp -r geant4.10.00.p02/​examples/​basic/​B1 ./
 +  mkdir B1-build
 +  cd B1-build/
 +  . /​home/​user/​geant/​geant4.10.00.p02-install/​bin/​geant4.sh
 +
 +  С использованием графического интерфейса OpenGL:
 +  cmake -DWITH_GEANT4_UIVIS=ON -DGeant4_DIR=/​home/​user/​geant/​geant4.10.00.p02-install/​lib/​Geant4-10.0.2/​ ../B1
 +  make
 +
 +  cd /​home/​user/​geant/​B1-build/​
 +  ./exampleB1
 +
 +После запуска видим приглашение. Запустим в нём процесс моделирования пролёта частиц. Для того, чтобы просчитать траектории 10 частиц вводим((http://​geant4.web.cern.ch/​geant4/​UserDocumentation/​Doxygen/​examples_doc/​html/​ExampleB1.html)):​
 +
 +  Idle> /run/beamOn 10
 +
 +Если используется графический интерфейс,​ в нём должны появиться траектории 10 частиц.
 +
 +{{::​g4-b1-opengl-10particles-screenshot.png?​200 |}}
 +
 +Как видим, кроме зелёных траекторий исходных частиц появились ещё и красные траектории частиц,​ образовавшихся в результате взаимодействия исходных частиц со средой. Разными цветами GEANT4 показывает частицы разного заряда. Так траектории //​положительно//​ заряженных частиц отображаются **синим** цветом,​ //​отрицательно//​ заряженных -- **красным**,​ а //​нейтральных//​ -- **зелёным**((http://​geant4.web.cern.ch/​geant4/​G4UsersDocuments/​UsersGuides/​ForApplicationDeveloper/​html/​TrackingAndPhysics/​tracking.html#​5.1.6)).\\ ​
 +Полученное изображение можно экспортировать в файл. Для интерфейса OpenGL это делается так:
 +
 +  Idle> ​ /​vis/​ogl/​printEPS
 +  File G4OpenGL_0.eps has been saved
 +
 +Просмотреть EPS-файл можно при помощи команды ''​display'',​ входящей в пакет [[http://​imagemagick.org/​ | ImageMagick]]:​
 +
 +  display G4OpenGL_0.eps
 +
 +А можно преобразовать в какой-нибудь другой формат. Например,​
 +
 +  convert G4OpenGL_0.eps G4OpenGL_0.png
 +
 +==== Модификация примера ====
 +
 +Некоторая модификация поставленной в примере задачи возможна даже без перекомпиляции примера,​ а только используя его внутренние команды. Например,​ можно легко изменить энергию налетающих частиц:​
 +
 +  Idle> /gun/energy 1 GeV
 +  Idle> /run/beamOn 10
 +
 +{{::​g4-b1-opengl-10particles-gamma1gev.png?​200 |}}
 +
 +Как видим, после увеличения энергии исходных γ-частиц до 1 ГэВ на рисунке появились траектории синего цвета, а это означает,​ что при таких энергиях становится возможным рождение положительно заряженных частиц,​ чего не наблюдалось в этом примере ранее.\\ ​
 +Обратим также внимание на то, что жёлтые точки, обозначающие места взаимодействия частиц со средой,​ на красных и синих траекториях разположены гораздо гуще, чем на зелёных. Это вполне соответствует действительности,​ так как длина свободного пробега заряженных частиц меньше,​ чем у нейтральных частиц.
 +
 +Включим отображение границ объёма,​ в который помещены исследуемые тела. В рассматриваемом примере B1 существует некий общий объём с названием ''​World'',​ заполненный воздухом,​ в котором выделен другой объём под названием ''​Envelope'',​ заполненный водой. Включим отображение их границ:​
 +
 +  Idle> /​vis/​geometry/​set/​visibility/​ World 0 true
 +  Idle> /​vis/​geometry/​set/​visibility/​ Envelope 0 true
 +
 +После этого появятся границы указанных объёмов,​ но они будут непрозрачными. Чтобы сделать их прозрачными,​ изменим стиль отображения логических объёмов:​
 +
 +  Idle> /​vis/​viewer/​set/​style w
 +
 +Однко теперь и внутренние исследуемые тела также стали прозрачными. Чтобы вернуть непрозрачность только этим исследуемым телам, делаем так:
 +
 +  Idle> /​vis/​geometry/​set/​forceSolid Shape1 0 true
 +  Idle> /​vis/​geometry/​set/​forceSolid Shape2 0 true
 +
 +{{::​g4-b1-opengl-10particles-alpha500mev.png?​200 |}}
 +
 +Теперь попробуем изменить тип и энергию налетающих частиц:​
 +
 +  Idle> /​gun/​particle alpha
 +  Idle> /gun/energy 500 MeV
 +
 +И снова запустим моделирование:​
 +
 +  Idle> /run/beamOn 10
 +
 +
 +===== Параллельные вычисления =====
 +
 +==== G4MPI ====
 +
 +Согласно [[http://​geant4.web.cern.ch/​geant4/​UserDocumentation/​Doxygen/​examples_doc/​html/​Examples_MPI.html | документации G4MPI]], программа на GEANT4, использующая технологии MPI может иметь примерно такую структуру:​
 +
 +<code c++>
 +#include "​G4MPImanager.hh"​
 +#include "​G4MPIsession.hh"​
 +
 +int main(int argc,char** argv)
 +{
 +  // Создание диспетчера G4MPImanager
 +  G4MPImanager* g4MPI= new G4MPImanager(argc,​argv);​
 +      ​
 +  // Создание сессии MPI (G4MPIsession) вместо G4UIterminal
 +  G4MPIsession* session= g4MPI-> GetMPIsession();​
 +      ​
 +  // Далее следует стандартный код программы на GEANT4
 +  G4RunManager* runManager= new G4RunManager();​
 +
 +  ...
 +
 +  // После установки всех параметров программы нужно запустить сессию MPI.
 +  // MPIsession может работать как в интерактивном,​ так и в пакетном режиме.
 +  session->​SessionStart();​
 +
 +  // В конце выполнения программы
 +  delete g4MPI;
 +  delete runManager;
 +}   
 +</​code>​
 +
 +Компилировать такую программу нужно следующим образом (предполагается,​ что все пользовательские программы на GEANT4 находятся в каталоге ''/​home/​user/​geant/'',​ а текущая программа - в подкаталоге ''​MPItest''​).
 +
 +Сначала нужно указать в ''​CMakeLists.txt''​ для нашей программы пути к файлам MPI. Для этого нужно отредактировать или добавить такие строки:​
 +
 +<code txt "​CMakeLists.txt">​
 +# Поиск пакета MPI в системе:​
 +find_package(MPI REQUIRED)
 +
 +# Установка флагов компилятора и компоновщика:​
 +set(CMAKE_CXX_COMPILE_FLAGS ${CMAKE_CXX_COMPILE_FLAGS} ${MPI_COMPILE_FLAGS})
 +set(CMAKE_CXX_LINK_FLAGS ${CMAKE_CXX_LINK_FLAGS} ${MPI_LINK_FLAGS})
 +
 +# Путь к заголовочным файлам:​
 +include_directories(${MPI_INCLUDE_PATH} "/​home/​user/​GEANT4/​G4MPI/​include/"​)
 +
 +# Путь к библиотекам для компоновки окончательного исполнимого файла программы:​
 +target_link_libraries(MPItest-program.bin ${MPI_LIBRARIES} ${G4mpi_DIR}/​libG4mpi.so)
 +</​code>​
 +
 +Затем собственно компиляция:​
 +
 +<​code>​
 +cd /​home/​user/​geant/​
 +mkdir MPItest.build
 +cd MPItest.build
 +. /​home/​user/​GEANT4/​bin/​geant4.sh
 +cmake -DGeant4_DIR=/​home/​user/​GEANT4/​lib/​Geant4-10.2.1 -DG4mpi_DIR=/​home/​user/​GEANT4/​G4MPI/​lib ../MPItest
 +make
 +</​code>​
 +
 +Запускать полученную программу можно в стандартном окружении MPI. Например,​
 +
 +  mpirun -n 4 ./​MPItest-program.bin
 +
 +
 +===== Анимация =====
 +
 +При использовании интерфейса Qt правым щелчком мыши по изображению эксперимента вызывается меню, в котором можно выбрать пункт ''​Actions''​ → ''​Movie parameters...''​
 +
 +{{::​movie_parameters.png?​200 || }}
 +В этом окне можно выбрать параметры записи анимации,​ а также запустить и остановить её.
 +
 +Для того, чтобы этим воспользоваться,​ необходимо установить пакет [[http://​netpbm.alioth.debian.org/​ | netpbm]], который будет собирать из отдельных снимков в формате PPM((При этом сами снимки помещаются в подкаталог с именем вида ''​QtMovie_12-09-2014_09-27-35''​ (имя, по-видимому,​ соответствует дате и времени запуска) каталога,​ указанного в окне настроек видео под параметром ''​Temporary folder path''​)) видеофайл в формате MPEG:
 +
 +  sudo apt-get install netpbm ​
 +
 +
 +
 +====== Ссылки ======
 +
 +[[http://​geant4.web.cern.ch/​geant4/​UserDocumentation/​UsersGuides/​ForApplicationDeveloper/​html/​index.html | Geant4 User's Guide for Application Developers]]
 +
 +[[https://​geant4.web.cern.ch/​geant4/​UserDocumentation/​UsersGuides/​ForApplicationDeveloper/​html/​ch06.html | Chapter 6.  User Actions]]
 +
 +[[https://​geant4.web.cern.ch/​geant4/​UserDocumentation/​UsersGuides/​ForApplicationDeveloper/​html/​ch06s02.html | Optional User Actions]]
 +
 +[[https://​geant4.web.cern.ch/​geant4/​UserDocumentation/​UsersGuides/​ForApplicationDeveloper/​html/​ch03s03.html | System of Units]]
 +
 +[[http://​geant4.web.cern.ch/​geant4/​UserDocumentation/​UsersGuides/​ForApplicationDeveloper/​BackupVersions/​V9.6/​html/​ch11s04.html | FAQ.4. ​ Tracks and steps]]
 +
 +[[https://​geant4.web.cern.ch/​geant4/​UserDocumentation/​UsersGuides/​ForApplicationDeveloper/​html/​ch03s04.html#​sect.Run.Basic.Manage | Run]]
 +
 +[[http://​www.geant4.org/​geant4/​support/​training.shtml | GEANT4 Training Courses]]
 +
 +http://​wiki.opengatecollaboration.org/​index.php/​Users_Guide_V6:​Introduction
 +
 +http://​geant4.slac.stanford.edu/​tutorial/​mcgill06/​HandsOn3/​HandsOn3.htm
 +
 +[[http://​geant4.cern.ch/​G4UsersDocuments/​UsersGuides/​PhysicsReferenceManual/​html/​PhysicsReferenceManual.html | Physics Reference Manual]]
 +
 +http://​www.jlab.org/​conferences/​geant4/​
 +
 +http://​en.wikipedia.org/​wiki/​Geant4
 +
 +http://​geant4.web.cern.ch/​geant4/​UserDocumentation/​Welcome/​IntroductionToGeant4/​html/​introductionToGeant4.html#​1.
 +
 +http://​geant4.org/​geant4/​index.shtml
 +
 +[[http://​content.lib.utah.edu/​utils/​getfile/​collection/​etd3/​id/​2106/​filename/​2096.pdf | MCNP5 AND GEANT4 COMPARISONS FOR PRELIMINARY FAST NEUTRON PENCIL BEAM DESIGN AT THE UNIVERSITY OF UTAH TRIGA SYSTEM]] by Christian Amevi Adjei
 +===== На русском языке =====
 +
 +http://​mipt.jinr.ru/​edu/​course/​view.php?​id=23
 +
 +http://​vserv.sinp.msu.ru/​wiki/​GEANT4
 +
 +http://​code.google.com/​p/​geant4-labs/​
  
geant4.txt · В останнє змінено: 2016/04/03 07:57 by wombat