簡體   English   中英

Python 中 Meep 中的 Vector3

[英]Vector3 in Meep in Python

我在我的簡單 python 代碼中收到'module' object has no attribute 'Vector3'錯誤。

這是rightAngle.py文件

import meep as mp
import math

cell = mp.Vector3(16, 8, 0)
geometry = [mp.Bloack(mp.Vector3(1e20, 1, 1e20),
                      center = mp.Vector3(0, 0),
                      material = mp.Medium(epsilon = 12))]
sources = [mp.Source(mp.ContinuousSource(frequency = 0.15),
                     component = mp.Ez,
                     center = mp.Vector3(-7, 0))]
pml_layers = [mp.PML(1.0)]
resolution = 10

編譯使用:

python rightAngle.py >& rightAngle.out

並得到這個輸出:

Traceback (most recent call last):
  File "rightAngle.py", line 4, in <module>
    cell = mp.Vector3(16, 8, 0)
AttributeError: 'module' object has no attribute 'Vector3'

我所做的只是從這個相當可靠的 來源復制和粘貼給定的代碼,但在Vector3對象中出現錯誤。

蟒蛇版本:

Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
[GCC 5.4.0 20160609] on linux2

我不知道我錯過了什么?

Meep 文檔: https ://meep.readthedocs.io/en/latest/Python_Tutorials/Basics/

嘗試在 Ubuntu 16.04 上使用它時遇到了同樣的問題。

對我有用的是為 python 2.7 安裝Anaconda並使用以下方法創建他們推薦的環境

conda create -n mp -c chogan -c defaults -c conda-forge pymeep

之后沒有 Vector3 問題。

我的環境腳本在下面,但我不會在這里詳細介紹。 我的計划是基於我當前的工作設置創建一個 git 存儲庫,並在 Github 上公開它,這將迫使我組織整個設置並使其對其他人有用。

以下腳本允許我在沒有 Anaconda3 的情況下使用 python3 運行 Meep。 這樣你就可以使用最新的包和 git 源來構建 Meep、Open MPI 和支持庫。 我的主目錄被替換為

    #!/bin/bash

export MPI_PROJ=/home/<USER>/projects/mpi

export MPI_BASE=/usr/local/mpi/openmpi/base

export MPI_411=$MPI_BASE/411

# 
# CRITICAL ENVARS - THESE MUST BE SET AS FOLLOWS FOR THE EXISTING MEEP, MPB AND OPENMPI 4.1.1
# 
export LD_LIBRARY_PATH="/usr/local/mpi/meep/latest/lib:/usr/local/mpi/openmpi/base/411/bin:/home/fraser/.local/bin:/usr/local/bin:/usr/bin:/opt/bin:/bin:/sbin:/home/fraser/projects/mpi/bin" 

export CFLAGS="-I/usr/local/mpi/meep/latest/include  -I/usr/local/mpi/mpb/latest/include -I/usr/include/python3.8"

export PKG_CONFIG_PATH="/usr/local/mpi/meep/latest/lib/pkgconfig:/usr/local/mpi/openmpi/base/411/lib/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/local/mpi/meep/latest/lib/pkgconfig"

export LDFLAGS="-L/usr/local/mpi/openmpi/base/411/lib  -L/usr/local/mpi/meep/latest/lib -lmpi -lmpb"

export PYTHONPATH="/home/fraser/.local/lib/python3.8/site-packages:/usr/lib/python3.8:/usr/local/mpi/meep/latest/lib/python3.8/site-packages:/usr/local/lib/python3.8/dist-packages"

export PATH=/home/fraser/projects/mpi/bin:/usr/local/mpi/meep/latest/bin:/usr/local/mpi/openmpi/base/411/bin:/home/fraser/.local/bin:/usr/local/bin:/usr/bin:/opt/bin:/bin:/sbin

Open MPI 4.1.1 首先構建了很多次,以便在 3 台真機和 2 台虛擬機上正確運行。 最后,所有 3 個 Centos 8 Stream 安裝都完美地運行了 mpi。 兩台 ubuntu 21 機器(一台真實的,一台虛擬機)能夠完美地一起運行 mpi。 Centos 8 機器將與 Ubuntu 21 機器通信。 由於 glibc 版本差異,我無法在 Ubuntu 21 和 Centos 8 Stream 之間復制 mpi 安裝。

然后轉到 Meep,它需要“從源代碼構建 Meep”文檔頁面中列出的所有庫。 有些不能從 Mint 20 存儲庫中獲得,必須從源代碼構建。 創建構建腳本來為每個腳本運行 configure 以記錄使用的選項。

Meep 需要特定構建的harminv、fftw3、guile、swig、hdf5。 其他庫是使用 apt 從 mint 20 軟件包存儲庫安裝的。

Meep 也被多次構建,因為我的環境是設置為從 /usr/local 以外的位置運行 Meep。 使上述環境變量足夠接近需要一些修補。 他們可能需要為您的目的進行一些調整。

中間更新 - 我能夠在 Centos 8 Stream 上的 Mint20 Linux 上復制我的成功。 將所有工作部分收集到一個 git repo 中,並記錄似乎沒有人在 StackOverflow 甚至 Github 問題上發布的小細節! 例如,在 swig git clone 中導出 PY3=1 BEFORE RUNNING AUTOGEN。 否則它要使用python 2!

另一個問題是:例如,將您的克隆另存為 git-meep。 然后將其復制到meep。 然后在meep上工作。 如果您使用 configure/make/make test/make install 超過 5 次或任何代碼或環境更改都不會被注意到,請刪除 meep 樹。 確保在刪除之前保存所有環境設置或配置運行腳本。

在運行任何環境設置腳本之前,將 git-meep 復制到 meep 並再次運行 autogen.sh。 然后運行那些然后運行任何運行配置和/或制作的腳本。

我的配置腳本嚴格運行配置。 然后我手動運行 make/make check/make install,以防構建失敗。

有更多奇怪的事情要做,使這項工作。

當github存儲庫在線時將在此處發回。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM