Troubleshooting#

故障排除

本页解释了如何解决使用 PyDPF-Core 时遇到的最常见问题。它还包括改进脚本的建议。

Server issues#

服务器问题

Start the DPF server#

启动 DPF 服务器

当使用 PyDPF-Core 以 start_local_server() 方法启动服务器时, 或使用 Ans.Dpf.Grpc.shAns.Dpf.Grpc.bat 文件手动启动服务器时,可能会出现 Python 错误: TimeoutError: Server did not start in 10 seconds(超时错误:服务器在 10 秒内未启动)。 此类错误可能意味着未找到服务器或其依赖项。从 Ansys 统一安装中使用 DPF 时,确保设置了 AWP_ROOT{VER} 环境变量,其中 VER 是版本的三位数字格式,如 221222

Connect to the DPF server#

连接 DPF 服务器

如果在使用 Py-DPF 代码通过 connect_to_server() 方法 连接到初始化的服务器时出现问题,请确保作为参数设置的 IP 地址和端口号适用于在网络上启动的 DPF 服务器。

Import the pydpf-core package#

导入 ``pydpf-core`` 软件包

假设你正在导入 PyDPF-Core 软件包:

from ansys.dpf import core as dpf

如果错误列出了缺少的模块,请参阅 Compatibility。 对于 PyDPF-Core < 0.10.0ansys.grpc.dpf 模块应始终与其服务器版本同步。

Model issues#

Invalid UTF-8 error#

无效的 UTF-8 错误

假设您正试图访问 ansys.dpf.core.model.Model 类。可能会出现以下错误:

[libprotobuf ERROR C:\.conan\897de8\1\protobuf\src\google\protobuf\wire_format_lite.cc:578]
String field 'ansys.api.dpf.result_info.v0.ResultInfoResponse.user_name' contains invalid UTF-8
data when serializing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes.

无效的 UTF-8 数据阻止了模型的访问。为避免此错误,请确保您使用的是 0.3.2 或更高版本的 PyDPF-Core。 虽然警告仍会出现,但无效的 UTF-8 数据不应妨碍您使用 ansys.dpf.core.model.Model 类。

然后,在结果文件中重现此问题后,可以使用以下方法阻止触发警告:

from ansys.dpf import core as dpf
dpf.settings.set_dynamic_available_results_capability(False)

但是,前面的代码禁止读取和生成模型的可用结果。将使用模型可用的任何静态结果。

Plotting issues#

在尝试使用 DPF 绘制结果图时,可能会出现以下错误:

ModuleNotFoundError: No module named 'pyvista'

在这种情况下,只需使用此命令安装 PyVista 即可:

pip install pyvista

另一种方法是在安装 PyDPF-Core 的同时安装 PyVista。欲了解更多信息,请参阅 Install with plotting capabilities

Performance issues#

Get and set a field’s data#

获取并设置字段数据

如果字段大小较大或服务器距离 Python 客户端较远,通过 Field 类逐个实体获取或设置字段数据实体可能会很慢。 为提高性能,请在上下文管理器中使用 as_local_field() 方法,将字段数据从服务器带到本地计算机。有关示例,请参阅 Bring a field’s data locally to improve performance

Autocompletion in notebooks#

notebooks 自动补全功能

对于大型模型,Jupyter notebooks 中的自动补全有时会比较慢。 当按下 tab 键时,解释器可能会评估某些属性的获取器。 要禁用此功能,请使用 disable_interpreter_properties_evaluation() 方法:

from ansys.dpf import core as dpf
dpf.settings.disable_interpreter_properties_evaluation()