FYI for any users of the current vector calculus functionality - please let the author know if you have any suggestions, especially if you have a Trac account (note that now having a Github account suffices for making basic comments etc. there).
On Wednesday, March 14, 2018 at 12:06:18 PM UTC-4, Eric Gourgoulhon wrote: > > Hi, > > After demands from users (see e.g. > https://ask.sagemath.org/question/40792/div-grad-and-curl-once-again/ > and > > https://ask.sagemath.org/question/10104/gradient-divergence-curl-and-vector-products/) > > and a first attempt (see ticket #3021 > <https://trac.sagemath.org/ticket/3021>), a proposal to fully implement > elementary vector calculus (dot and cross products, gradient, divergence, > curl, Laplace operator) is ready for review at #24623 > <https://trac.sagemath.org/ticket/24623>. > > In this implementation, Euclidean spaces are considered as Riemannian > manifolds diffeomorphic to R^n endowed with a flat metric. This allows for > an easy use of various coordinate systems, along with the related > transformations. However, the user interface does not assume any knowledge > of Riemannian geometry. In particular, no direct manipulation of the metric > tensor is required. > > A minimal example is > > sage: E.<x,y,z> = EuclideanSpace(3) > sage: v = E.vector_field(-y, x, 0) > sage: v.display() > -y e_x + x e_y > sage: v[:] > [-y, x, 0] > sage: w = v.curl() > sage: w.display() > 2 e_z > sage: w[:] > [0, 0, 2] > > It is possible to use curl(v) instead of v.curl(), via > > sage: from sage.manifolds.operators import * > sage: w = curl(v) > > This can be compared with the curl() already implemented (through #3021 > <https://trac.sagemath.org/ticket/3021>) for vectors of symbolic > expressions: > > sage: x, y, z = var('x y z') > sage: v = vector([-y, x, 0]) > sage: v > (-y, x, 0) > sage: w = v.curl([x, y, z]) > sage: w > (0, 0, 2) > > > Note that [x, y, z] must be provided as the argument of curl to define the > orientation. A limitation of this implementation is that it is valid only > with Cartesian coordinates. With the #24623 > <https://trac.sagemath.org/ticket/24623> implementation, we can do, in > continuation with the first piece of code shown above: > > sage: spherical.<r,th,ph> = E.spherical_coordinates() > sage: spherical_frame = E.spherical_frame() # orthonormal frame (e_r, > e_th, e_ph) > sage: v.display(spherical_frame, spherical) > r*sin(th) e_ph > sage: v[spherical_frame, :, spherical] > [0, 0, r*sin(th)] > sage: w.display(spherical_frame, spherical) > 2*cos(th) e_r - 2*sin(th) e_th > sage: w[spherical_frame, :, spherical] > [2*cos(th), -2*sin(th), 0] > > > More detailed examples are provided in the following Jupyter notebooks > (click on the names to see them via nbviewer.jupyter.org): > > - vector calculus in Cartesian coordinates > <http://nbviewer.jupyter.org/github/egourgoulhon/SageMathTest/blob/master/Worksheets/vector_calc_cartesian.ipynb> > - vector calculus in spherical coordinates > <http://nbviewer.jupyter.org/github/egourgoulhon/SageMathTest/blob/master/Worksheets/vector_calc_spherical.ipynb> > - vector calculus in cylindrical coordinates > <http://nbviewer.jupyter.org/github/egourgoulhon/SageMathTest/blob/master/Worksheets/vector_calc_cylindrical.ipynb> > - changing coordinates in the Euclidean 3-space > <http://nbviewer.jupyter.org/github/egourgoulhon/SageMathTest/blob/master/Worksheets/vector_calc_change.ipynb> > - advanced aspects: Euclidean spaces as Riemannian manifolds > <http://nbviewer.jupyter.org/github/egourgoulhon/SageMathTest/blob/master/Worksheets/vector_calc_advanced.ipynb> > - the Euclidean plane > <http://nbviewer.jupyter.org/github/egourgoulhon/SageMathTest/blob/master/Worksheets/Euclidean_plane.ipynb> > > Needless to say, any feedback / review is welcome. > > Eric. > > > > > > > -- You received this message because you are subscribed to the Google Groups "sage-edu" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-edu+unsubscr...@googlegroups.com. To post to this group, send email to sage-edu@googlegroups.com. Visit this group at https://groups.google.com/group/sage-edu. For more options, visit https://groups.google.com/d/optout.