[英]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/
我的環境腳本在下面,但我不會在這里詳細介紹。 我的計划是基於我當前的工作設置創建一個 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.