本人的py27文件夹放到了网盘,可以直接下载下来然后直接创建环境变量
链接:https://pan.baidu.com/s/13aj58_VDdYxyRxuwGxRUoA
提取码:k3hs
这里直接根据github的提示来安装添加链接描述
1:安装python2.7
这里本人使用的是anaconda,在windows安装好anaconda3.9以后,本人创建了一个虚拟环境用于安装python2.7,步骤如下
1a:打开anaconda prompt(或者同时按win+R,在搜索中输入cmd)
1b:输入conda create -n py27 python=2.7,然后回车,直到结束
这样就创建好了虚拟环境,接下来只需要在anaconda prompt中输入
conda activate py27进入虚拟环境即可
2:安装numpy+mkl
这个库需要到官网上添加链接描述先下载whl文件,上面有很多numpy+mkl,需要选择适当的版本才能用
2a:使用管理员身份点击anaconda prompt,然后
conda activate py27进入虚拟环境
2b:输入pip debug --verbose
观察到了自己的anaconda匹配的whl版本,对于64位的电脑,只能下载画圈的这个whl
2c:下载完whl以后,把whl文件放到对应的环境变量文件夹里面,比如我的是
C:\Users\anaconda3\envs\py27
2d:然后在anaconda prompt里面输入cd C:\Users\anaconda3\envs\py27进入该文件夹,
2e:输入 pip install numpy-1.16.6+mkl-cp27-cp27m-win_amd64.whl
3:安装pysparse
在官网添加链接描述上下载
和2安装numpy+mkl一样,把whl文件也放在py27里面,然后使用命令
pip install pysparse-1.3-cp27-none-win_amd64.whl
4:用pip install 分别安装matplotlib,sympy,pyvtk(特别注意,刚刚安装2,3的时候使用管理员身份,而且使用了cd …\py27,此时如果直接使用pip install XX会失败)
这里需要关闭anaconda prompt,重新打开anaconda prompt,激活conda activate py27,
此时使用pip install XX才不会报错
5:从github上添加链接描述下载code得到topy-master压缩包
解压以后,把文件夹放到刚刚的py27文件里面,修改文件夹名字为topy,
使用命令cd C:\Users\anaconda3\envs\py27\topy,然后键入命令
python setup.py install
按道理应该就安装好了,但是本人经过上述步骤,使用import topy的时候报错,说numpy._import.tools不存在。
经过调试,本人在github上找到了一个库添加链接描述,将这个numpy库下载下来成为压缩包,解压以后修改名字为numpy文件夹,然后把Numpy文件夹放到文件夹\anaconda3\envs\py27\Lib\site-packages里面代替原来的numpy文件夹。然后重新
conda activate py27,此时import topy就成功了
注意:如果跟着上面步骤还是报错,比如说报错DLL load failed,那么说明环境变量没有配置好,需要自己在环境变量那里path增加路径三行
然后重新启动py27即可
基础代码
经过上述安装,topy已经安装成功,下面我们用vscode来运行一个基础代码,
import topy
config = {
'DOF_PN': 2,
'ELEM_K': 'Q4',
'ETA': '0.5',
'FILT_RAD': 1.5,
'FXTR_NODE_X': range(1, 22),
'FXTR_NODE_Y': 1281,
'LOAD_NODE_Y': 1,
'LOAD_VALU_Y': -1,
'NUM_ELEM_X': 60,
'NUM_ELEM_Y': 20,
'NUM_ELEM_Z': 0,
'NUM_ITER': 4,
'PROB_NAME': 'beam_2d_reci',
'PROB_TYPE': 'comp',
'P_FAC': 3.0,
'VOL_FRAC': 0.5
}
t = topy.Topology(config)
t.set_top_params()
topy.optimise(t)
print(t)
在VScode上写入这段代码,然后我们需要用py27来运行,这里VScode默认用的是base环境(也就是python3.9),因此我们需要切换。
同时摁住Ctrl+Shift+P,然后会跳出一条输入框,输入>Python:Select Interpreter,回车。就可以根据需要切换虚拟环境了,这里参考别人的博客添加链接描述
运行结果如下:
可视化
这里注意,如果仅仅使用VScode无法得到可视化的结果,需要借助于anaconda Prompt,打开anaconda Prompt(然后把这个平台当成linux终端),激活环境py27,然后进入代码所在的文件夹,比如我的是:
cd \topy\soft
此时运行上述代码
python test.py
然后会发现在文件夹soft下面生成了一个子文件夹,里面放了所有迭代过程的图片
有了这些图片以后,我们需要借助于matplotlib库把图片转换成gif,网上有很多教程,这里本人写了一个代码转换gif
import matplotlib.animation as animation
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1,1,figsize = (10.5,8))
imglist = []
for i in range(1,40):
ax.set_axis_off()
if i < 10:
im = ax.imshow(plt.imread(r'Desktop\OSP\topocode\softtopy\iterations\beam_2d_reci_00{}.png'.format(i)), animated = True)
elif i >= 10 and i < 100:
im = ax.imshow(plt.imread(r'C:\Users\2001213226\Desktop\OSP\topocode\softtopy\iterations\beam_2d_reci_0{}.png'.format(i)), animated = True)
else:
im = ax.imshow(plt.imread(r'Desktop\OSP\topocode\softtopy\iterations\beam_2d_reci_{}.png'.format(i)), animated = True)
imglist.append([im])
ani = animation.ArtistAnimation(fig, imglist, interval=80)#interval时间间隔 单位毫秒
ani.save(r'Desktop\OSP\topocode\softtopy\iterations\beam.gif',dpi = 800)
plt.show()
print('ok')