vector_field.apply_map before and after vector.display (weird behaviour)
Hello,
Recently, I have come a cross a very weird behaviour with vector_field.apply_map function. Here is the case:
Consider the following code:
E.<r,th,ph>=EuclideanSpace(coordinates="spherical",start_index=0)
cart.<x,y,z>=E.cartesian_coordinates()
cartf=E.cartesian_frame()
spherf=E.spherical_frame()
E.set_default_frame(cartf)
Now, if I create a vector field, substitute ph with ph_1 and th with th_1, and then display the resultant vector as
var("r_1 th_1 ph_1")
v=E.vector_field([r_1,0,0], frame=spherf, chart=cart);
v.apply_map(lambda c:c.subs(ph==ph_1, th==th_1));show(v.display())
I get 0 printed
However,
If I do the same, but this time if I add show(v.display()) before calling apply_map function as
var("r_1 th_1 ph_1")
v=E.vector_field([r_1,0,0], frame=spherf, chart=cart); show(v.display())
v.apply_map(lambda c:c.subs(ph==ph_1, th==th_1));show(v.display())
I get
r_1 cos(ph)sin(th) e_x + r_1 sin(ph)sin(th) e_y + r_1 cos(th) e_z
r_1 cos(ph_1)sin(th_1) e_x + r_1 sin(ph_1)sin(th_1) e_y + r_1 cos(th_1) e_z
printed (as expected).
Why does the display function affect the substitution?