Hello,
I'm using sympy in my upper level undergraduate physics courses, and of course the subject of how to deal with vectors has come up. As far as I can tell, there are three fairly reasonable approaches at the moment:
1. use 1 x n or n x 1 matrices. Simple vector operations work fine, but vector calculus requires some additional work on the part of the end user.
2. use the physics.mechanics.vector module. We get vector calculus, but this doesn't support curvilinear coordinates, and there's a bug in the pretty printer (printing iterables of vectors raises an exception; if this isn't a known issue, I'd be happy to open an issue on GitHub). Since we spend a lot of time in spherical and cylindrical coordinates when doing electricity and magnetism (the course I'm currently teaching), the lack of curvilinear coordinates is a blow.
3. use the vector module. In the 1.1.1 release, curvilinear coordinates are not officially supported, but can be made to work using private methods (although one of the Lame coefficients for cylindrical coordinates is wrong, and I haven't checked to see if this is fixed in the current master). The pretty-printer for this module doesn't have the same bug as the physics.mechanics.vector module, but the labeling scheme is significantly less flexible, and the defaults violate standard typographical convention by making the base scalars bold face.
None of these is perfect, but my current favorite is (3). If I understand correctly, this was a GSoC project. What is its current status? Is the vector module going to be the right way to do vector fields going forward?
I'm happy to contribute, if that would be helpful, but I don't want to step on anyone's toes, and if there's already a clear vision/roadmap I'd want to be sure that I don't take things in a different direction.
Cavendish