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/
>
> 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
>  
> 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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/9797a914-06a6-4f8e-a99f-5403504862bfn%40googlegroups.com.

Reply via email to