I realized you want 'a' to be a constant vector which my definition of
'a' in cylindrical coordinates is not. I will develop a solution for a
constant 'a'.
On 10/23/21 11:23 AM, Alan Bromborsky wrote:
I don't know if this would help but you problem cried out for
cylindrical coordinates. I assumed the vectors a and R were from the
origin and had no theta component (if not let me know and I will run
that case) then this code (snippet) -
def vector_potential_in_cylindrical_coordinates():
#Print_Function()
X = (r,th,z) = symbols('r theta z')
(k,ar,az) = symbols('k a_r a_z')
gprint('k =',k)
#g=[1,r**2,1] is the diagonal of the metric tensor for cylindrical
coordinates
c3d = Ga('e_r e_theta e_z',g=[1,r**2,1],coords=X,norm=True)
(er,eth,ez) = c3d.mv()
grad = c3d.grad
R = r*er+z*ez
gprint(r'\bs{R} =',R)
a = ar*er+az*ez
gprint(r'\bs{a} =',a)
A = (-k*(a|R)*(R|R)*ez).simplify()
gprint(r'\bs{A} = -k(\bs{a}\cdot \bs{R})\bs{R}^{2}\bs{e}_{z} =',A)
B = (-c3d.E()*(grad^A)).simplify()
gprint(r'\bs{B} = \nabla\times \bs{A} = -I*(\nabla\wedge \bs{A}) =',B)
produces this output -
The actual output was a pdf file generated from a LaTeX generated by
the galgebra print statement 'gprint.' I am attaching the actual code
and output files.
On 10/23/21 2:11 AM, Andreas Schuldei wrote:
I am putting together the components of a vector field (a magnetic
field, caused by a current in several conductors) in cartesian
coordinates. The field is derived from calculating the rotation of
its magnetic vector potential, which can be expressed as
A_z = -Const * dot(r,a)(dot(r,r)
A =(0,0,A_z
and then the rot(A):
B = curl(A)
gives me (after some simplifications)
u = (2 * C * r2 * (a1 * r1 + a2 * r2)) / np.square(r1*r1 + r2*r2) -
(C * a2) / (r1*r1 + r2*r2)
v = (C * a1) / (r1*r1 + r2*r2) - (2 * C * r1 * (a1 * r1 + a2 * r2)) /
np.square(r1*r1 + r2*r2)
w = 0
with B(u,v,w) being the vector field I am interested in.
My initial question ("How to create a vector") is mostly a sympy
syntactical one. I look for a function like
Sys = CoordSys3D("Sys")
O = Sys.origin
u = (2 * C * r2 * (a1 * r1 + a2 * r2)) / np.square(r1*r1 + r2*r2) -
(C * a2) / (r1*r1 + r2*r2)
v = (C * a1) / (r1*r1 + r2*r2) - (2 * C * r1 * (a1 * r1 + a2 * r2)) /
np.square(r1*r1 + r2*r2)
w = 0
V = O.vector(u,v,w)
^^^^^^^^^^^^^^^^^^^
where I can specify a vector, relative to a coordinate system, by its
components. The O.vector() function would return a vector that can
then safely be transformed into other (resting) coordinate systems.
brombo schrieb am Freitag, 22. Oktober 2021 um 19:06:03 UTC+2:
You might want to look at this link -
https://galgebra.readthedocs.io/en/latest/
<https://galgebra.readthedocs.io/en/latest/>
Also if you could show me symbolically (not code) what you are
doing perhaps I could give you an example of how to do it in
galgebra.
On 10/22/21 3:15 AM, Andreas Schuldei wrote:
I saw this
https://stackoverflow.com/questions/46993819/how-to-create-a-vector-function-in-sympy
<https://stackoverflow.com/questions/46993819/how-to-create-a-vector-function-in-sympy>
which uses Matrix() as a workaround to create a vector. The
author says, that it can not be transformed between coordinate
systems, like real vectors, though.
I need to transform my input and output vector from one
coordinate system to another (and back). How are vector
functions done in that case? My function is simple:
def B_el(r_vec, I):
mu_0 = 4 * np.pi * 1e-7
a1 = -0.05
a2 = 0.0
C = mu_0 * I / np.pi
r1 = r_vec.i
r2 = r_vec.j
u = (2 * C * r2 * (a1 * r1 + a2 * r2)) / np.square(r1*r1 +
r2*r2) - (C * a2) / (r1*r1 + r2*r2)
v = (C * a1) / (r1*r1 + r2*r2) - (2 * C * r1 * (a1 * r1 + a2 *
r2)) / np.square(r1*r1 + r2*r2)
return Matrix([u, v, 0])
--
You received this message because you are subscribed to the
Google Groups "sympy" group.
To unsubscribe from this group and stop receiving emails from
it, send an email to sympy+un...@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/sympy/8db840a8-20f9-47ac-a1c3-11b6658f00bfn%40googlegroups.com
<https://groups.google.com/d/msgid/sympy/8db840a8-20f9-47ac-a1c3-11b6658f00bfn%40googlegroups.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google
Groups "sympy" group.
To unsubscribe from this group and stop receiving emails from it,
send an email to sympy+unsubscr...@googlegroups.com
<mailto:sympy+unsubscr...@googlegroups.com>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/sympy/9797a914-06a6-4f8e-a99f-5403504862bfn%40googlegroups.com
<https://groups.google.com/d/msgid/sympy/9797a914-06a6-4f8e-a99f-5403504862bfn%40googlegroups.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google Groups
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to sympy+unsubscr...@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/sympy/2c5523bb-5909-765f-6fdf-7adaba89e7ac%40gmail.com.