PlanewaveWidgetTD.py 文件源码

python
阅读 26 收藏 0 点赞 0 评论 0

项目:em_examples 作者: geoscixyz 项目源码 文件源码
def InteractivePlaneProfile():
    srcLoc = 0.
    orientation = "X"
    nRx = 100

    def foo(Field, Sigma, Scale, Time):

        fig = plt.figure(figsize=(8,4))
        ax1 = plt.subplot(111)

        r = np.linspace(-1000., 0., nRx)
        val_ex, val_hy = PlaneEHfield(r, t=Time, sig=Sigma)

        if Field == "Ex":
            val = val_ex.flatten()
            label = "Ex-field (V/m)"

        elif Field == "Hy":
            val = val_hy.flatten()
            label = "Hy-field (A/m)"

        if Scale == "log":
            val_p, val_n = DisPosNegvalues(val)
            ax1.plot(r, val_p, 'k-', lw=2)
            ax1.plot(r, val_n, 'k--', lw=2)
            ax1.set_yscale(Scale)

        elif Scale == "linear":
            ax1.plot(r, val, 'k-', lw=2)
            ax1.set_yscale(Scale)
            y = ax1.yaxis.get_majorticklocs()
            yticksa = np.linspace(y.min(), y.max(), 3)
            ax1.yaxis.set_ticks(yticksa)
            ax1.yaxis.set_major_formatter(ticker.FormatStrFormatter("%.1e"))

        ax1.set_xlim(0, -1000)
        ax1.set_ylabel(label, color='k')
        ax1.set_xlabel("Z (m)")

        ax1.grid(True)
        plt.show()

    Q2 = widgets.interactive (foo
                    ,Field=widgets.ToggleButtons(options=['Ex','Hy'], value='Ex')
                    ,Sigma=widgets.FloatText(value=1, continuous_update=False, description='$\sigma$ (S/m)') \
                    ,Scale=widgets.ToggleButtons(options=['log','linear'], value="linear") \
                    ,Time=widgets.FloatSlider(min=0.01, max=1., step=0.01, value=0., description='$t$ (s)')
                    )
    return Q2
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号