Here is a problem I have with the Nabla operator:

I am working on a demonstration involving Maxwell's equations:

restart:with(Physics[Vectors]);

Setup(mathematicalnotation = true);

# Maxwell's eqn

M4 := `&x`(Nabla, B1_(x, y, z, t)) = mu*epsilon*(diff(E1_(x, y, z, t), t));

eval(subs(B1_(x,y,z,t)=Bxx(x,y,z,t)*_i+Bzz(x,y,z,t)*_k,M4)); # transverse magnetic field, no longitudinal (j) component

# Ok, this one is as expected.

eval(subs(B1_(x,y,z,t)=Bxx(x,y,z,t)*_i+Bzz(x,y,z,t)*_k,M4)) assuming real;

# Hmm... why is this zero?

eval assuming real seems to make them all zero. In this little example, Bxx and Bzz are just arbitrary functions and therefore the result cannot be zero in general. The bother here is that I later use a parametrization of the field (the Bxx and Bzz) which in fact does make curl(B) = 0. I wanted Maple to demonstrate that the parametrization does that, but it appears i can make the result zero for any B-field, which sort-of defeats the purpose. If I don't assume real, with the other parametrization Maple isn't getting anywhere...

So, how can I get correct results while declaring variables to be real when they are... ?

Thanks,

M.D.

Maxwell_test.mw