import discretisedfield as df
import matplotlib.pyplot as plt
import numpy as np
mesh = df.Mesh(p1=(-10e-9, -10e-9, -10e-9), p2=(15e-9, 10e-9, 5e-9), cell=(1e-9, 1e-9, 1e-9))
def value_fun(point):
x, y, z = point
c = 1e9
if x < -5e-9:
return (0, y*c, z*c)
else:
return (x*c, 2*y*c, 3*z*c)
field = df.Field(mesh, dim=3, value=value_fun, norm=1e6)
line = field.line(p1=(-10e-9, 0, 0), p2=(10e-9, 0, 0), n=30)
line
r px py pz vx vy \ 0 0.000000e+00 -1.000000e-08 0.0 0.0 0.000000 707106.781187 1 6.896552e-10 -9.310345e-09 0.0 0.0 0.000000 707106.781187 2 1.379310e-09 -8.620690e-09 0.0 0.0 0.000000 707106.781187 3 2.068966e-09 -7.931034e-09 0.0 0.0 0.000000 707106.781187 4 2.758621e-09 -7.241379e-09 0.0 0.0 0.000000 707106.781187 5 3.448276e-09 -6.551724e-09 0.0 0.0 0.000000 707106.781187 6 4.137931e-09 -5.862069e-09 0.0 0.0 0.000000 707106.781187 7 4.827586e-09 -5.172414e-09 0.0 0.0 0.000000 707106.781187 8 5.517241e-09 -4.482759e-09 0.0 0.0 -928279.121633 206284.249252 9 6.206897e-09 -3.793103e-09 0.0 0.0 -889000.889001 254000.254000 10 6.896552e-09 -3.103448e-09 0.0 0.0 -889000.889001 254000.254000 11 7.586207e-09 -2.413793e-09 0.0 0.0 -811107.105654 324442.842262 12 8.275862e-09 -1.724138e-09 0.0 0.0 -639602.149067 426401.432711 13 8.965517e-09 -1.034483e-09 0.0 0.0 -639602.149067 426401.432711 14 9.655172e-09 -3.448276e-10 0.0 0.0 -267261.241912 534522.483825 15 1.034483e-08 3.448276e-10 0.0 0.0 267261.241912 534522.483825 16 1.103448e-08 1.034483e-09 0.0 0.0 639602.149067 426401.432711 17 1.172414e-08 1.724138e-09 0.0 0.0 639602.149067 426401.432711 18 1.241379e-08 2.413793e-09 0.0 0.0 811107.105654 324442.842262 19 1.310345e-08 3.103448e-09 0.0 0.0 889000.889001 254000.254000 20 1.379310e-08 3.793103e-09 0.0 0.0 889000.889001 254000.254000 21 1.448276e-08 4.482759e-09 0.0 0.0 928279.121633 206284.249252 22 1.517241e-08 5.172414e-09 0.0 0.0 950255.268139 172773.685116 23 1.586207e-08 5.862069e-09 0.0 0.0 950255.268139 172773.685116 24 1.655172e-08 6.551724e-09 0.0 0.0 963624.111659 148249.863332 25 1.724138e-08 7.241379e-09 0.0 0.0 972305.585328 129640.744710 26 1.793103e-08 7.931034e-09 0.0 0.0 972305.585328 129640.744710 27 1.862069e-08 8.620690e-09 0.0 0.0 978240.074002 115087.067530 28 1.931034e-08 9.310345e-09 0.0 0.0 982466.610991 103417.537999 29 2.000000e-08 1.000000e-08 0.0 0.0 985578.834374 93864.650893 vz 0 707106.781187 1 707106.781187 2 707106.781187 3 707106.781187 4 707106.781187 5 707106.781187 6 707106.781187 7 707106.781187 8 309426.373878 9 381000.381001 10 381000.381001 11 486664.263392 12 639602.149067 13 639602.149067 14 801783.725737 15 801783.725737 16 639602.149067 17 639602.149067 18 486664.263392 19 381000.381001 20 381000.381001 21 309426.373878 22 259160.527674 23 259160.527674 24 222374.794998 25 194461.117066 26 194461.117066 27 172630.601295 28 155126.306999 29 140796.976339
line.dim
3
line.length
2e-08
line.mpl(marker='o')
line.slider()
SelectionRangeSlider(description='r (nm):', index=(0, 29), options=((0.0, 0.0), (0.69, 6.896551724137937e-10),…
line.length
2e-08
@df.interact(xlim=line.slider(),
yaxis=line.selector())
def myplot(xlim, yaxis):
return line.mpl(figsize=(10, 6), yaxis=yaxis, marker='o', xlim=xlim)
interactive(children=(SelectionRangeSlider(description='r (nm):', index=(0, 29), options=((0.0, 0.0), (0.69, 6…