Dosiero:VFPt sphere-magnet potential.svg

El testwiki
Salti al navigilo Salti al serĉilo
Fonta dosiero (SVG-dosiero, 600 × 600 rastrumeroj, grandeco de dosiero: 90 KB)

Ĉi tiu dosiero estas de Vikimedia Komunejo kaj estas uzebla de aliaj projektoj. Jen la priskribo en ties dosier-priskriba paĝo.

Resumo

Priskribo
English: Drawing of a homogeneously magnetized spherical magnet with exactly computed magnetic field lines. A spherical magnet has the remarkable property that its field outside the magnet is identical to that of an ideal point-like dipole. Inside the magnetized volume, the field is exactly constant and aligned along the north-south axis. The magnetic scalar potential 𝜓 is shown in the background from positive (fuchsia) through zero (yellow) to negative (aqua). Note that the field lines follow the gradient of the scalar potential.
Dato
Fonto Propra verko
Aŭtoro Geek3
Ceteraj versioj VFPt sphere-magnet.svg
SVG genesis
InfoField
 The SVG code is valid.
 Ĉi tiu dosiero estas kreita per VectorFieldPlot.
Fontkodo
InfoField

Python code

# paste this code at the end of VectorFieldPlot 2.2
doc = FieldplotDocument('VFPt_sphere-magnet_potential', commons=True,
    width=600, height=600)

R = 1.0
c = np.array([0., 0.])
M = np.array([0., 1.])
field_outside = Field([ ['dipole', {'x':c[0], 'y':c[1], 'px':M[0]*4./3.*pi*R**3, 'py':M[1]*4./3.*pi*R**3}] ])
Bfield_inside = Field([ ['homogeneous', {'Fx':2./3.*M[0], 'Fy':2./3.*M[1]}] ])
Hfield_inside = Field([ ['homogeneous', {'Fx':-1/3.*M[0], 'Fy':-1/3.*M[1]}] ])

def spheremagnet_Bfield(xy):
    if vabs(xy - c) < R:
        return Bfield_inside.F(xy)
    else:
        return field_outside.F(xy)

def spheremagnet_potential(xy):
    if vabs(xy - c) < R:
        return Hfield_inside.V(xy)
    else:
        return field_outside.V(xy)

field = Field([ ['custom', {'F':spheremagnet_Bfield, 'V':spheremagnet_potential}] ])

U0 = field.V(c + R * vnorm(M))
doc.draw_scalar_field(func=field.V, cmap=doc.cmap_AqYlFs, vmin=-U0, vmax=U0)

nlines = 20
for iline in range(nlines):
    p0 = (R * (2 * (iline + 0.5) / nlines - 1), 0.)
    line = FieldLine(field, p0, directions='both', maxr=7)
    if fabs(iline - (nlines - 1) / 2.) < 1.:
        of = 0.2
    elif fabs(iline - (nlines - 1) / 2.) < 2.:
        of = 0.23
    elif fabs(iline - (nlines - 1) / 2.) < 3.:
        of = 0.3
    elif fabs(iline - (nlines - 1) / 2.) < 4.:
        of = 0.53
    elif fabs(iline - (nlines - 1) / 2.) < 5.:
        of = 0.4
    elif fabs(iline - (nlines - 1) / 2.) < 6.:
        of = 0.38
    else:
        of = 0.3
    off = {'start':0.9, 'leave_image':of, 'enter_image':of, 'end':0.9}
    doc.draw_line(line, arrows_style={'dist':2.0,
        'max_arrows':2, 'offsets':off})

# draw the spherical magnet
g = doc.draw_object('g', {'id':'sphere',
    'transform':'translate({},{})'.format(*c)})
defs = doc.draw_object('defs', {}, group=g)
grad = doc.draw_object('radialGradient', {'id':'grad', 'r':str(1.2*R),
    'cx':'0', 'cy':str(0.2*R), 'fx':'0', 'fy':str(0.6*R),
    'gradientUnits':'userSpaceOnUse'}, group=defs)
for col, of, opa in [['#ffffff', '0', '0.8'], ['#ffffff', '0.04', '0.7'],
        ['#ffffff', '0.11', '0.4'], ['#ffffff', '0.22', '0.2'],
        ['#555555', '0.7', '0.3'], ['#000000', '1', '0.6']]:
    stop = doc.draw_object('stop', {'stop-color':col, 'offset':of,
        'stop-opacity':opa}, group=grad)
clip = doc.draw_object('clipPath', {'id':'circle_clip'}, group=defs)
doc.draw_object('circle', {'cx':'0', 'cy':'0', 'r':str(R)}, group=clip)

gc = doc.draw_object('g', {'clip-path':'url(#circle_clip)'}, group=g)
doc.draw_object('circle', {'cx':'0', 'cy':'0', 'r':str(R),
    'style':'fill:#00cc00; stroke:none;'}, group=gc)
doc.draw_object('path', {'d':'M -1,0 A 1,1 0 0 0 1,0 L -1,0 Z',
    'style':'fill:#ff0000; stroke:none;'}, group=gc)
text_N = doc.draw_object('text', {'text-anchor':'middle', 'x':'0', 'y':'0',
    'transform':'translate({},{}) scale({},{})'.format(0, 0.56*R-0.2, 0.05, -0.05),
    'style':'fill:#000000; stroke:none; ' +
    'font-size:12px; font-family:Bitstream Vera Sans;'}, group=g)
text_N.text = 'N'
text_S = doc.draw_object('text', {'text-anchor':'middle', 'x':'0', 'y':'0',
    'transform':'translate({},{}) scale({},{})'.format(0, -0.56*R-0.2, 0.05, -0.05),
    'style':'fill:#000000; stroke:none; ' +
    'font-size:12px; font-family:Bitstream Vera Sans;'}, group=g)
text_S.text = 'S'
doc.draw_object('circle', {'cx':'0', 'cy':'0', 'r':str(R),
    'style':'fill:url(#grad); stroke:none;',
    'transform':'rotate(30) scale(1.4,1)'}, group=gc)
doc.draw_object('circle', {'cx':'0', 'cy':'0', 'r':str(R),
     'style':'fill:none; stroke:#000000; stroke-width:0.04;'}, group=g)

doc.write()

Permesiloj:

Mi, la posedanto de la aŭtorrajto por ĉi tiu verko, ĉi-maniere publikigas tiun laŭ la jena permesilo:
w:eo:Creative Commons
atribuite samkondiĉe
Ĉi tiu dosiero disponeblas laŭ la permesilo Krea Komunaĵo Atribuite-Samkondiĉe 4.0 Tutmonda.
Vi rajtas:
  • kunhavigi – kopii, distribui kaj publikigi la verkon
  • aliigi – modifi, adapti, kompletigi, transformi, uzi la tutan verkon aŭ ties partojn, memstare aŭ en aliaj verkoj
La verko rajtas esti kunhavigata nur:
  • atribuite – Vi devas atribui aŭtorecon, liveri ligilon al la permesilo kaj marki ĉu ŝanĝoj estis faritaj. Faru tion en aprobinda maniero, tamen ne sugestante, ke permesinto aprobas vin aŭ vian uzon.
  • samkondiĉe – Se vi rekombinas la verkon, transformas ĝin aŭ kreas devenaĵon bazitan sur ĝi, vi rajtas distribui la rezultan verkon nur laŭ la sama aŭ kongrua permesilo kompare kun ĉi tiu.

Titoloj

Donu unulinian priskribon de la enhavo de ĉi tiu dosiero

Eroj prezentitaj en ĉi tiu dosiero

montras

image/svg+xml

Dosiera historio

Klaku daton/tempon por vidi la dosieron kia ĝi aspektis tiam.

Dato/tempoBildetoDimensiojUzantoKomento
nuna11:55, 22 sep. 2019Bildeto por versio ekde 11:55, 22 sep. 2019600 × 600 (90 KB)wikimediacommons>Geek3User created page with UploadWizard

La jena paĝo ligas al ĉi tiu dosiero: