基于ed的rixs谱模拟开源工具包

edrixs的Python项目详细描述


https://img.shields.io/travis/NSLS-II/edrixs.svghttps://img.shields.io/pypi/v/edrixs.svg

基于精确对角化(ed)的强相关材料rixs谱模拟开源工具包。 It is developed作为布鲁克海文国家实验室计算材料光谱与设计中心COMSCOPE project的一部分

功能

  • ED解算器
  • xas光谱
  • 里克斯谱

安装

  • 所需的工具和库

    • Fortran compiler: gfortran and ifort are supported
    • MPI environment: openmpi and mpich are tested
    • mpif90 (binding with gfortran or ifort) and mpicc (binding with gcc)
    • Python3
    • BLAS and LAPACK: gfortran+OpenBLAS or ifort+MKL
    • arpack-ng (with mpi enabled)
    • Numpy
    • Scipy
    • Sympy
    • Matplotlib
    • mpi4py
    • Sphinx
    • Numpydoc

    请确保使用相同的(MPI)Fortran编译器编译openblas、arpack ng、mpi4py和edrix。

  • 安装edrix的fortran部分

    $ cd src
    $ make F90=mpif90 LIBS="-L/usr/local/lib -lopenblas -lparpack -larpack"
    $ make install
    

    其中,您可能需要根据您的特定环境更改F90LIBS。在mkl中使用gfortran时会出现问题,因此建议使用gfortran+OpenBLASifort+MKLlibedrixsfortran.a将被生成,这将在构建python接口时使用。可执行文件.x将安装在edrixs/bin目录中,并在.bashrc.bash_profile文件中添加以下行,

    exportPATH=/root_dir_of_edrixs/edrixs/bin:$PATH
  • 安装edrix的python部分

    确保首先在src中生成libedrixsfortran.a

    $ python setup.py config_fc --f77exec=mpif90 --f90exec=mpif90 build_ext \
      --libraries=openblas,parpack,arpack --library-dirs=/usr/lib:/usr/local/lib:/opt/local/lib \
      --link-objects=./src/libedrixsfortran.a
    $ pip install .
    

    其中,--library-dirs是搜索--libraries的路径,请根据您的环境进行设置。

在Docker中运行edrix

为了让生活更容易,我们已经为edrix构建了一个基于ubuntu linux(18.04)的docker镜像,这样你就不需要再为安装而纠结了。 只要docker应用程序可用,docker映像就可以在任何操作系统上使用。 按照以下步骤使用Docker图像:

  • 在系统和learn how to use it上安装docker应用程序。

  • Docker运行后,创建一个目录以将数据存储在主机操作系统中,并启动一个容器以运行EDRIX

    $ mkdir /dir/on/your/host/os   # A directory on your host OS
    $ docker pull edrixs/edrixs    # pull latest version
    $ docker run -it -p 8888:8888 -u rixs -w /home/rixs -v /dir/on/your/host/os:/home/rixs/data edrixs/edrixs
    

    第一次从Docker Hub中提取图像需要一段时间,而下一次它将非常快地启动本地图像。

    • -p 8888:8888将容器的端口8888映射到主机端口8888。
    • -u rix表示使用默认用户rixs登录ubuntu linux,密码是rixs
    • -v/dir/on/your/host/os:/home/rixs/dat意味着将目录/dir/on/your/host/os从主机操作系统装载到容器中的ubuntu linux上的/home/rixs/data
  • 启动容器后,您将在/home/rixs目录中看到dataedrixs_examples。如果要将来自edrixs计算的数据保存到主机系统,则需要在/home/rixs/data目录中工作。

    $ cd /home/rixs/data
    $ cp -r ../edrixs_examples .
    $ Play with edrixs ...
    

    请注意,当此容器停止时,/home/rixs/data之外的任何更改都将丢失。您只能使用主机操作系统制作交互式绘图。如果需要,请使用sudo apt-get install安装软件。

  • < >容器中的类型^ {TT26}$退出。您可以通过

    $ docker rm $(docker ps -a -q)
  • 您可以通过

    $ docker rmi edrixs/edrixs
    

如何引用

如果您正在使用edrixs代码进行一些研究,并希望发表您的伟大作品,如果您能引用以下文章,将不胜感激

EDRIXS: An open source toolkit for simulating spectra of resonant inelastic x-ray scattering
Y.L. Wang, G. Fabbris, M.P.M. Dean and G. Kotliar, arXiv:1812.05735. Accepted as publication in CPC.

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
maven字段#getGenericType()抛出java。lang.TypeNotPresentException   用java绘制三角形的几何图形   java无法下载主题和发件人地址(rediff)   java如何使代码线程安全   java在尝试转换FileInputStream中的文件时,我遇到了一个FileNotFound异常   java Moxy和Jackson如何将Json映射到Pojo   在foreach循环中使用BufferedWriter生成新行的java问题   java为什么我的测试在单次执行中运行时间小于1秒,而在maven构建中运行时间大于20秒?   java如何显示下载附件的进度条   了解java rmi的良好实践   .net可以将Java portlet嵌入ASP。网页?   循环如何多次执行Java方法?   java如何确保用户输入在给定的有效范围内?   java单元测试定理   java如何在IntelliJ上运行外部构建项目?   JAVA:试图编写一个检查字符串是否为数字的方法。总是返回错误   javahadoop将特定键的所有map方法生成的所有值都发送到一个reduce方法,对吗?   在java中读取和使用文件