Python再入手-03

又过了半年,已经完全忘了当时8月份的python工作了。这半年,先是跑合同,然后张罗出海,完了又搞了两次验收,还做了两次汇报,开了无数的会,忙坏了。

现在,得重新张罗电磁这档子事儿了。下面记录下最近的操作。

1 打开编程环境。

都忘了怎么打开环境了,翻一下以前的博客(这是第三篇),终于想起来了。

打开anaconda,然后激活环境e1(总共装了2个,1个e1,1个e2,忘了哪个能用了,随便激活1个)。然后打开spyder。 

下面是spyder界面:

这是4.2.5版本,python用的3.7

2 打开simpeg文件

装这个anaconda主要是为了跑simpeg,里面最感兴趣的就是频率域三维电磁了。下面就逐步分析一下这个文件。

2.1 引入依赖包

这里的代码是如下。首先来盘点一下:

  • 从discretize引入treemesh包,实现树形网格;
  • 从discretize.utils引入mkvc和refine_tree_xyz,实现向量组装和细化数网格;
  • 从SimPEG.utils引入plot2Ddata和surface2ind_topo,实现二维绘图和地形;
  • 引入SimPEG的电磁频率域模块,命名为fdem;
  • 引入os;
  • 引入numpy,命名为np;
  • 引入matplotlib,命名为mpl;
  • 引入matplotlib中的pyplot,命名为plt
  • 从以下选项尝试:先从pymatsolver中引入Pardiso求解器,命名为Solver,如果发生了ImportError,就执行:从SimPEG引入SuperLU求解器,并命名为Solver。
  • 规定变量save_file的值为true。
from discretize import TreeMesh
from discretize.utils import mkvc, refine_tree_xyz

from SimPEG.utils import plot2Ddata, surface2ind_topo
from SimPEG import maps
import SimPEG.electromagnetics.frequency_domain as fdem

import os
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

try:
    from pymatsolver import Pardiso as Solver
except ImportError:
    from SimPEG import SolverLU as Solver

save_file = True

2.2 定义地形

xx, yy = np.meshgrid(np.linspace(-3000, 3000, 101), np.linspace(-3000, 3000, 101))
zz = np.zeros(np.shape(xx))
topo_xyz = np.c_[mkvc(xx), mkvc(yy), mkvc(zz)]  # 定义(N, 3)numpy数组

这段代码写的很紧凑。

  • 首先,利用np中的linspace生成向量,然后作为meshgrid的输入变量,生成xx和yy。
  • 之后,利用xx的维度,生成0向量作为zz。
  • 最后,用mkvc将矩阵变为向量,然后调用c_生成topo_xyz。

2.3 定义观测装置

frequencies = [100, 500, 2500]
N = 9
xtx, ytx, ztx = np.meshgrid(np.linspace(-200, 200, N), np.linspace(-200, 200, N), [40])
source_locations = np.c_[mkvc(xtx), mkvc(ytx), mkvc(ztx)]
ntx = np
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Intimes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值