ubuntu下安装配置 pylith 与 paraview

ubuntu下安装配置 pylith 与 paraview

版本号
ubuntu 20.04.6
pylith 4.0.0
paraview 5.12.0-Python3.10


1、pylith配置

pylith下载 官网(可能失效,失效访问GitHub地址或百度网盘下载):
https://geodynamics.org/resources/pylith/about#download
GitHub项目地址:
https://github.com/geodynamics/pylith
本文使用的安装包以及pylith用户手册
https://pan.baidu.com/s/1ZgTM3njAI6vzYDEwzb2Stg?pwd=8y6f
提取码:8y6f

使用编译好二进制包,已经具有配置完全的运行环境。
在这里插入图片描述

 (1)在 /home 下使用下面代码或者鼠标右键新建文件夹,pylith,然后复制下载的pylith压缩文件到该目录下,本例使用“pylith-4.0.0-linux-x86_64.tar.gz”。

cd $HOME
mkdir pylith

新建pylith文件夹

 (2)在 /home/user/pylith 下打开终端,复制下面代码解压文件或者直接鼠标右键“Extract Here,解压文件“pylith-4.0.0-linux-x86_64.tar.gz”到此文件夹。(user指你的用户名称,需要更改为自己系统的用户名)

cd pylith
# 复制到终端解压文件,“pylith-4.0.0-linux-x86_64.tar.gz”根据自己版本更改
tar -xzf pylith-4.0.0-linux-x86_64.tar.gz

pylith 压缩文件以及解压后文件夹

 (3)拷贝 /home/user/pylith/pylith-4.0.0-linux-x86_64/ 下的文件到上级目录/home/pylith/ 目录下,使用以下代码或者右键copy。(复制完成后可以删除 /home/user/pylith/pylith-4.0.0-linux-x86_64/ 目录)

# 复制文件到上级目录,user需要更改为自己系统的用户名
cp -a /home/user/pylith/pylith-4.0.0-linux-x86_64/. /home/user/pylith/
# 删除/home/user/pylith/pylith-4.0.0-linux-x86_64/ 目录-(可选)
rm -r /home/user/pylith/pylith-4.0.0-linux-x86_64/

pylith文件夹

 (4)进入 /home/user/pylith/ 文件夹

鼠标右键启动终端或者使用下面代码让终端处于文件夹。

# 终端进入/home/user/pylith/ 文件夹
cd /home/user/pylith/

 (5)设置环境pylith变量

pylith给出了可以自动执行环境变量设置的 setup.sh 文件,但是在实际的使用中无法成功设置,需要手动配置。

  自动配置

在第四步终端进入 /home/user/pylith/ 文件夹后,执行 setup.sh 脚本。

# 执行 setup.sh 脚本
source setup.sh

执行完毕后如果没有报错会返回,但是本人在配置时会出现在 .bashrc 中没有添加的情况,所以需手动配置。 (需要检查文件 .bashrc 有没有添加成功相对用的环境变量)

Ready to run PyLith.

自动配置bash脚本文件

  手动配置

/home 下打开隐藏文件显示,即可出现 .bashrc 文件,在该文件中添加 pylith 环境变量。
显示隐藏文件
使用记事本打开 .bashrc 文件,在文件最后位置添加以下代码,然后保存 .bashrc 文件即可。

#************注意user修改为自己的用户名**************
# python + pylith,,
export pylith=/home/user/pylith
export PYTHONHOME="$pylith"
export PATH="$pylith/bin:$PATH"
export PYTHONPATH="$pylith/lib/python3.10/site-packages:$pylith/lib64/python3.10/site-packages"
export LD_LIBRARY_PATH="$pylith/lib:$pylith/lib64"

 (6)环境变量配置完毕后需要检验是否成功配置,pylith时候成功安装使用 /home/user/pylith/src/pylith-4.0.0/examples 文件下的 box-2d 示例检验。

/home/user/pylith/src/pylith-4.0.0/examples/box-2d/ 下打开终端或者使用cd 使得终端处于该文件夹下

# 进入示例文件夹,user更改为自己用户名
cd /home/user/pylith/src/pylith-4.0.0/examples/box-2d/

终端中输入如下代码,如果结果如图并没有报错,则安装成功。

# 运行示例
pylith step01_axialdisp.cfg

安装成功后可得到如下结果,并且在该文件夹下的 output 文件夹下会出现结果。

 >> /home/kdq/pylith/lib/python3.10/site-packages/pylith/apps/PyLithApp.py:77:main
 -- pylithapp(info)
 -- Running on 1 process(es).
 >> /home/kdq/pylith/lib/python3.10/site-packages/pylith/meshio/MeshIOObj.py:38:read
 -- meshioascii(info)
 -- Reading finite-element mesh
 >> ../../../pylith-4.0.0/libsrc/pylith/meshio/MeshIO.cc:85:void pylith::meshio::MeshIO::read(pylith::topology::Mesh*, bool)
 -- meshioascii(info)
 -- Component 'reader': Domain bounding box:
    (-6000, 6000)
    (-16000, -0)
 >> /home/kdq/pylith/lib/python3.10/site-packages/pylith/problems/Problem.py:116:preinitialize
 -- timedependent(info)
 -- Performing minimal initialization before verifying configuration.
 >> /home/kdq/pylith/lib/python3.10/site-packages/pylith/problems/Solution.py:39:preinitialize
 -- solution(info)
 -- Performing minimal initialization of solution.
 >> /home/kdq/pylith/lib/python3.10/site-packages/pylith/problems/Problem.py:174:verifyConfiguration
 -- timedependent(info)
 -- Verifying compatibility of problem configuration.
 >> /home/kdq/pylith/lib/python3.10/site-packages/pylith/problems/Problem.py:219:_printInfo
 -- timedependent(info)
 -- Scales for nondimensionalization:
    Length scale: 1000*m
    Time scale: 3.15576e+09*s
    Pressure scale: 3e+10*m**-1*kg*s**-2
    Density scale: 2.98765e+23*m**-3*kg
    Temperature scale: 1*K
 >> /home/kdq/pylith/lib/python3.10/site-packages/pylith/problems/Problem.py:185:initialize
 -- timedependent(info)
 -- Initializing timedependent problem with quasistatic formulation.
 >> ../../../pylith-4.0.0/libsrc/pylith/utils/PetscOptions.cc:239:static void pylith::utils::_PetscOptions::write(pythia::journal::info_t&, const char*, const pylith::utils::PetscOptions&)
 -- petscoptions(info)
 -- Setting PETSc options:
ksp_atol = 1.0e-12
ksp_converged_reason = true
ksp_error_if_not_converged = true
ksp_guess_pod_size = 8
ksp_guess_type = pod
ksp_rtol = 1.0e-12
pc_type = lu
snes_atol = 1.0e-9
snes_converged_reason = true
snes_error_if_not_converged = true
snes_monitor = true
snes_rtol = 1.0e-12
ts_error_if_step_fails = true
ts_monitor = true
ts_type = beuler
 >> /home/kdq/pylith/lib/python3.10/site-packages/pylith/problems/TimeDependent.py:132:run
 -- timedependent(info)
 -- Solving problem.
0 TS dt 0.01 time 0.
    0 SNES Function norm 1.245882095312e-02 
    Linear solve converged due to CONVERGED_ATOL iterations 1
    1 SNES Function norm 6.738354969624e-18 
  Nonlinear solve converged due to CONVERGED_FNORM_ABS iterations 1
1 TS dt 0.01 time 0.01
 >> /home/kdq/pylith/lib/python3.10/site-packages/pylith/problems/Problem.py:199:finalize
 -- timedependent(info)
 -- Finalizing problem.

output文件夹结果

2、paraview配置

提示:paraview是对pylith的结果可视化,适用pylith得到的HDF5格式文件实现

paraview官网下载
https://www.paraview.org/download/
本文使用的安装包
https://pan.baidu.com/s/1ZgTM3njAI6vzYDEwzb2Stg?pwd=8y6f
提取码:8y6f

本例使用 ParaView-5.12.0-RC1-MPI-Linux-Python3.10-x86_64.tar.gz
paraview下载

 (1)在 /home 创建文件夹 paraview ,移动 ParaView-5.12.0-RC1-MPI-Linux-Python3.10-x86_64.tar.gz /home/user/paraview 下。

移动文件

 (2)在 /home/user/paraview 打开终端或在终端中使 cd 进入文件夹,并解压ParaView-5.12.0-RC1-MPI-Linux-Python3.10-x86_64.tar.gz 文件。

# 终端进入/home/user/pylith/ 文件夹
cd /home/user/paraview/
# 解压 ParaView-5.12.0-RC1-MPI-Linux-Python3.10-x86_64.tar.gz 文件
sudo tar -xvzf ParaView-5.12.0-RC1-MPI-Linux-Python3.10-x86_64.tar.gz

 (3)将解压的ParaView-5.12.0-RC1-MPI-Linux-Python3.10-x86_64.tar.gz 文件夹移动到 opt/ 文件夹下,并修改文件夹名称,以方便后续操作。

# cd ../..  
cd /..  
cd opt/
# 移动文件到 opt/ 
sudo mv /home/user/paraview/ParaView-5.12.0-RC1-MPI-Linux-Python3.10-x86_64 Paraview-5.12

 (4)配置 paraview 环境变量,打开 /home/.bashrc 文件,在文件末尾添加如下变量

export PATH=$PATH:/opt/Paraview-5.12/bin/

 (5)检验是否成功安装

打开终端

paraview

如果成功打开则完成安装。

paraview

其他安装问题

 1、paraview 启动提示 xcb 错误

Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: xcb.

error: exception occurred: Subprocess aborted

问题分析:paraview 在启动时缺少 QT 的库文件

在终端进入 /opt/Paraview-5.12/plugins/platforms 文件夹

# cd ../..  
cd /..  
# 进入文件夹
cd opt/Paraview-5.12/plugins/platforms/

检查那个包存在问题

ldd libqxcb.so

如果ldd命令没有输出,安装LD或者升级glibc链接

# 安装LD
sudo apt-get install libc6

我们执行依赖查看后发现 libxcb-xinerama.so.0libxcb-xinput.so.0 缺失 not found

	linux-vdso.so.1 (0x00007ffcd3756000)
	libQt5XcbQpa.so.5 => /opt/Paraview-5.12/plugins/platforms/./../../lib/libQt5XcbQpa.so.5 (0x00007fb31de0e000)
	libfontconfig.so.1 => /opt/Paraview-5.12/plugins/platforms/./../../lib/libfontconfig.so.1 (0x00007fb31ddb8000)
	libfreetype.so.6 => /opt/Paraview-5.12/plugins/platforms/./../../lib/libfreetype.so.6 (0x00007fb31dcee000)
	libz.so.1 => /opt/Paraview-5.12/plugins/platforms/./../../lib/libz.so.1 (0x00007fb31dcd0000)
	libQt5Gui.so.5 => /opt/Paraview-5.12/plugins/platforms/./../../lib/libQt5Gui.so.5 (0x00007fb31d600000)
	libQt5Core.so.5 => /opt/Paraview-5.12/plugins/platforms/./../../lib/libQt5Core.so.5 (0x00007fb31ce00000)
	libGL.so.1 => /lib/x86_64-linux-gnu/libGL.so.1 (0x00007fb31d579000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb31d574000)
	libX11-xcb.so.1 => /lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00007fb31d56f000)
	libxcb-icccm.so.4 => /lib/x86_64-linux-gnu/libxcb-icccm.so.4 (0x00007fb31d568000)
	libxcb-image.so.0 => /lib/x86_64-linux-gnu/libxcb-image.so.0 (0x00007fb31d562000)
	libxcb-shm.so.0 => /lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007fb31d55d000)
	libxcb-keysyms.so.1 => /lib/x86_64-linux-gnu/libxcb-keysyms.so.1 (0x00007fb31d558000)
	libxcb-randr.so.0 => /lib/x86_64-linux-gnu/libxcb-randr.so.0 (0x00007fb31d545000)
	libxcb-render-util.so.0 => /lib/x86_64-linux-gnu/libxcb-render-util.so.0 (0x00007fb31d53e000)
	libxcb-render.so.0 => /lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007fb31d52f000)
	libxcb-shape.so.0 => /lib/x86_64-linux-gnu/libxcb-shape.so.0 (0x00007fb31d52a000)
	libxcb-sync.so.1 => /lib/x86_64-linux-gnu/libxcb-sync.so.1 (0x00007fb31d520000)
	libxcb-xfixes.so.0 => /lib/x86_64-linux-gnu/libxcb-xfixes.so.0 (0x00007fb31d516000)
	libxcb-xinerama.so.0 => not found
	libxcb-xkb.so.1 => /lib/x86_64-linux-gnu/libxcb-xkb.so.1 (0x00007fb31d4f8000)
	libxcb-xinput.so.0 => not found
	libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fb31d4ce000)
	libXext.so.6 => /lib/x86_64-linux-gnu/libXext.so.6 (0x00007fb31d4b7000)
	libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007fb31ccc0000)
	libSM.so.6 => /lib/x86_64-linux-gnu/libSM.so.6 (0x00007fb31d4ac000)
	libICE.so.6 => /lib/x86_64-linux-gnu/libICE.so.6 (0x00007fb31d48f000)
	libxkbcommon-x11.so.0 => /lib/x86_64-linux-gnu/libxkbcommon-x11.so.0 (0x00007fb31ccb5000)
	libxkbcommon.so.0 => /lib/x86_64-linux-gnu/libxkbcommon.so.0 (0x00007fb31cc6e000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb31cc69000)
	libstdc++.so.6 => /home/kdq/pylith/lib64/libstdc++.so.6 (0x00007fb31c800000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb31c719000)
	libgcc_s.so.1 => /home/kdq/pylith/lib64/libgcc_s.so.1 (0x00007fb31c400000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb31c000000)
	libxcb-xinerama.so.0 => not found
	libxcb-xinput.so.0 => not found
	libxml2.so.2 => /opt/Paraview-5.12/plugins/platforms/./../../lib/../lib/libxml2.so.2 (0x00007fb31c24e000)
	libpng16.so.16 => /opt/Paraview-5.12/plugins/platforms/./../../lib/../lib/libpng16.so.16 (0x00007fb31cc28000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fb31dee5000)
	libGLdispatch.so.0 => /lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007fb31c661000)
	libGLX.so.0 => /lib/x86_64-linux-gnu/libGLX.so.0 (0x00007fb31cbf2000)
	libxcb-util.so.1 => /lib/x86_64-linux-gnu/libxcb-util.so.1 (0x00007fb31cbe9000)
	libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007fb31cbe3000)
	libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fb31cbdb000)
	libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007fb31cbd2000)
	libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007fb31c649000)
	libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007fb31c63c000)

执行命令安装这两个库

sudo apt-get install libxcb-xinput0
sudo apt-get install libxcb-xinerama0

如果失败重新启动你的计算机或者尝试刷新 DNS 缓存:使用命令 sudo systemctl restart systemd-resolved 或 sudo /etc/init.d/networking restart。

安装完成后再次查看依赖项
依赖项

 2、paraview启动vmwgfx错误

可能会出现

Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
libGL error: MESA-LOADER: failed to open vmwgfx: /usr/lib/dri/vmwgfx_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
libGL error: failed to load driver: vmwgfx
libGL error: MESA-LOADER: failed to open swrast: /usr/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
libGL error: failed to load driver: swrast
(   0.963s) [paraview        ]vtkXOpenGLRenderWindow.:653    ERR| vtkXOpenGLRenderWindow (0x2a0f0b0): Cannot create GLX context.  Aborting.
error: exception occurred: Subprocess aborted

这个错误是在虚拟机中安装遇到的问题,似乎是显卡映射的问题,暂时并没有解决。在物理机没有遇到此问题。

 3、paraview启动提示HDF5 版本问题

这个造成这个问题主要是因为环境变量的问题,系统的HDF5版本与pylith的HDF5版本相互冲突引发的错误。

Warning! ***HDF5 library release mismatched error***
The HDF5 header files used to compile this application are not compatible with
the version used by the HDF5 library to which this application is linked.
Data corruption or segmentation faults may occur if the application continues.
This can happen when an application was compiled by one version of HDF5 but
linked with an incompatible version of static or shared HDF5 library.
You should recompile the application or check your shared library related
settings such as 'LD_LIBRARY_PATH'.
You can, at your own risk, disable this warning by setting the environment
variable 'HDF5_DISABLE_VERSION_CHECK' to a value of '1'.
Setting it to 2 or higher will suppress the warning messages totally.
Headers are 1.14.2, library is 1.14.0
Bye...
error: exception occurred: Subprocess aborted

在配置 pylith 的时候设置了环境变量

#************注意user修改为自己的用户名**************
# python + pylith,,
......
export LD_LIBRARY_PATH="$pylith/lib:$pylith/lib64"

只需要注释掉LD_LIBRARY_PATH 的变量设置即可解决问题。

#************注意user修改为自己的用户名**************
# python + pylith,,
......
# export LD_LIBRARY_PATH="$pylith/lib:$pylith/lib64"

!!!!!!!!!!注意注意注意!

paraview 与 pylith 一块使用时,两个软件的HDF5会相互干扰,在本例中paraview使用的是 1.14.2 而 pylith 使用的版本为 1.14.0 ,所以为了解决这个问题,我删除掉了pylith/lib文件夹下的所有的HDF5库文件,然后在环境变量中将环境变量改为

#************注意user修改为自己的用户名**************
# python + pylith,,
......
export LD_LIBRARY_PATH="$pylith/lib:$pylith/lib64:opt/Paraview-5.12/lib"

这样 pylith 在运行计算时也会使用paraview的高版本的DHF5,这样得到的结果文件使用paraview打开也不会出现斑纹不对应的问题。

!!!!!!!!!!注意注意注意!


######## 附加

!!当然由于HDF5版本引起的问题,也可以通过将paraview中或者pylith中高版本的HDF5拷贝到另一个软件的bin目录中,这样的话不需要修改环境变量就可以解决这个问题。 !!


 4、paraview启动缺少模块 ‘encodings’

Python path configuration:
  PYTHONHOME = '/home/aduser/pylith'
  PYTHONPATH = '/home/aduser/pylith/lib/python3.10/site-packages:/home/aduser/pylith/lib64/python3.10/site-packages'
  program name = '/usr/bin/python3'
  isolated = 0
  environment = 1
  user site = 1
  import site = 1
  sys._base_executable = '/usr/bin/python3'
  sys.base_prefix = '/home/aduser/pylith'
  sys.base_exec_prefix = '/home/aduser/pylith'
  sys.executable = '/usr/bin/python3'
  sys.prefix = '/home/aduser/pylith'
  sys.exec_prefix = '/home/aduser/pylith'
  sys.path = [
    '/home/aduser/pylith/lib/python3.10/site-packages',
    '/home/aduser/pylith/lib64/python3.10/site-packages',
    '/home/aduser/pylith/lib/python38.zip',
    '/home/aduser/pylith/lib/python3.8',
    '/home/aduser/pylith/lib/python3.8/lib-dynload',
  ]
Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
Python runtime state: core initialized
ModuleNotFoundError: No module named 'encodings'

Current thread 0x00007f5e3480b740 (most recent call first):
<no Python frame>

出现这个问题大概率存在两个问题,第一你要检查你的启动命令是否是“paraview”,第二检查你的pylith、Python以及paraview的环境变量设置是否正确。

 5、paraview使用附加

在使用paraview读取Python脚本显示成果时,会由于Python脚本中的相对路径报错,错误显示为找不到文件,解决方案即将相对路径更改为绝对路径。


  • 33
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值