Перед установкой silomesh необходимо произвести некоторые подготовительные действия. На разных системах они могут быть разные. Некоторые описаны ниже.
sudo apt-get install python-h5py python3-h5py
Также требуется пакет libsiloh5-0
, но в Ubuntu 14.04 он собран с поддержкой MPI, а версия OpenMPI не поддерживает Fortran2003, который требуется для OpenMC. Поэтому для использования с OpenMC нужно пересобрать и пакет libsiloh5-0
без поддержки MPI, чтобы использовать gfortran
, который имеет поддержку Fortran2003.
~ $ apt-get source libsiloh5-0 ~ $ cd silo-llnl-4.8/ ~/silo-llnl-4.8 $ nano debian/rules
Вместо nano можно использовать любой текстовый редактор. Находим и редактируем следующие строки, удаляя параметр -I$(MPI_INC)
... #include /usr/share/mpi-default-dev/debian_defaults ##ARCH_DEFAULT_MPI_IMPL=lam #MPI_INC=/usr/lib/$(ARCH_DEFAULT_MPI_IMPL)/include # #ifeq ($(ARCH_DEFAULT_MPI_IMPL),lam) # CC:=mpicc.lam #else # CC:=mpicc #endif ... LDFLAGS="$(LDFLAGS) -Wl,--as-needed" dh_auto_configure -- --enable-pythonmodule --enable-silex --with-qt=/usr --enable-pythonmodule --enable-silex --with-qt-bin=/usr/bin --with-qt-lib=/usr/lib --with-qt-include=/usr/include/qt4 --with-hdf5=/usr/include,/usr/lib CPPFLAGS=" -I$(MPI_INC) $(CPPFLAGS)" CC=$(CC) CFLAGS="$(CFLAGS)" ... --with-hdf5=/usr/include,/usr/lib PYTHON=$$p CPPFLAGS=" -I$(MPI_INC) $(CPPFLAGS)" CC=$(CC) CFLAGS="$(CFLAGS)" ; \
~/silo-llnl-4.8 $ debuild -uc -us ~/silo-llnl-4.8 $ cd .. ~ $ sudo dpkg -i libsilo-bin_4.8-13build1_amd64.deb libsilo-dev_4.8-13build1_amd64.deb libsiloh5-0_4.8-13build1_amd64.deb python-silo_4.8-13build1_amd64.deb
emerge sci-libs/silo
В данном случае предлагается устанавливать silomesh не общесистемно, а в домашний каталог пользователя. В таком случае не требуются права администратора (хотя, права администратора требуются для подготовительных действий, описанных выше).
git clone https://github.com/nhorelik/silomesh cd silomesh/ python setup.py build python setup.py install --prefix=/home/user/local/usr/
Следует отметить, что в случае с Gentoo понадобилась такая последовательность команд:
python setup.py build_ext --libraries=stdc++ python setup.py build python setup.py install --prefix=/home/user/local/usr/
Если silomesh был установлен в домашний каталог пользователя, как описано выше, то для использования этого модуля в своих программах на Python, нужно указать путь к этому модулю:
import sys sys.path.append('/home/user/local/usr/lib/python2.7/site-packages/') import silomesh silomesh.init_silo("filename.silo") silomesh.init_mesh('Mesh1', *mesh.dimension, *mesh.lower_left, *mesh.upper_right) silomesh.init_var('Variable1') for x in range(1,nx+1): for y in range(1,ny+1): for z in range(1,nz+1): silomesh.set_value(float(value),x,y,z) silomesh.finalize_var() silomesh.finalize_mesh() silomesh.finalize_silo()
При этом
mesh.dimension
– это список числа ячеек сетки в трёх измерениях вида [nx, ny, nz]
;mesh.lower_left
– список координат нижнего левого угла трёхмерной сетки вида [x, y, z]
;mesh.upper_right
– список координат верхнего правого угла трёхмерной сетки вида [x, y, z]
;value
– значение измеряемой величины в данной ячейке сетки.