Re: Geodesics with NDSolve
- To: mathgroup at smc.vnet.net
- Subject: [mg66422] Re: Geodesics with NDSolve
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Thu, 11 May 2006 05:36:34 -0400 (EDT)
- Organization: The Open University, Milton Keynes, UK
- References: <e3unsi$i2d$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
sigmundv wrote: > I am working with geodesics on a torus, for which I want to locate the > cut locus. For this purpose I solve the geodesic equations (two coupled > non-linear first order ODEs), shooting off two geodesics in different > directions from a point p on the surface. The geodesics then meet at > some other (cut) point q1 on the surface. If you change the angle > between the geodesics at the inital point p, they meet at another point > q2 on the surface. In this way, you get a set of points, which together > constitute the socalled cut locus of the torus. > > To solve the coupled ODEs in Mathematica, I use NDSolve. This works > good, and I am able to locate the points q1, q2, etc. I do this by > solving the ODEs in a fixed interval for the independent variable, say > t. However, in order to find all the cut points, I have to use > different intervals for t. At the moment, I change the interval > manually, but I would like to do it somehow automatically. > > What I would like to achieve is: 1) I specify a large interval for t; > 2) after each time step, I check the distance in space between the two > geodesics; 3) if the distance is smaller than a given tolerance, > NDSolve is stopped -- alternatively, if the distance at t(n+1) is > larger than the distance at t(n), NDSolve is stopped, and t(n) is > accepted. > > The problem is, however, that the solution to the ODEs is in the > (u,v)-plane, and thus has to be inserted into the parametrization of > the torus, in order to check the distance in space. This has to be done > after each time step in NDSolve, why this strategy might prove > ineffective. > > I do not know if I can achieve this in Mathematica -- with the built-in > function NDSolve. Therefore I am asking you Mathematica experts for any > suggestions on how to achieve what I want here. Do you see what I want > to achieve? I will not provide you with more information now, but if > you want to, I can post the work I have done so far later. > > Regards, > > Sigmund Vestergaard > stud.polyt. at the Technical University of Denmark > Hi Sigmund, The option *EventLocator* might be the answer to your question. Check the _Advanced Documentation_: "It is often useful to be able to detect and precisely locate a change in a differential system. For example, with the detection of a singularity or state change, the appropriate action can be taken, such as restarting the integration [1]." HTH, Jean-Marc [1] http://documents.wolfram.com/mathematica/Built-inFunctions/AdvancedDocumentation/DifferentialEquations/NDSolve/ODEIntegrationMethods/ControllerMethods/EventLocation.html