BrainDynamicsUSYD / nftsim

C++ library for simulation of multiscale neural field dynamics
Apache License 2.0
29 stars 24 forks source link

Implement spherical topology #128

Open pausz opened 7 years ago

pausz commented 7 years ago

PR request: implement spherical topology.

Alternatives discussed with @stuart-knock

1) Spherical boundary conditions (i.,e., a plane folded into an envelope) are tricky to implement and very likely to introduce boundary artifacts.

2) Using a spherical coordinates transformation, where the wave equation is solved on a grid representing phi, theta-domain instead of x, y. Singularities at the poles (near the origin and at the edges of the rectangular ) still need to be handled. Also, this approach results in a variable discretization in terms of delta x, delta y. A circle close to the equator will be undersampled (delta x is large), while a circle close to the poles will be oversampled.

Courant condition?

stuart-knock commented 6 years ago

Below is an out of band response to PR, regarding task and time guesstimates for the spherical coordinate case, posted here for tracking purposes.

Implementing Spherical Case in NFTsim

Note: this is not regarding the simpler case of spherical boundary conditions applied to a regular grid (ie, it is regarding point 2. in the initial post of #128).

Development Tasks

Note: A prerequisite for this work is that an explicit solution for the spherical grid case, equivalent to the regular grid case in Chris Rennie's thesis or the appendix to the NFTsim paper, has been derived.

Pre-Spherical Coordinates

Rough time estimates:

High level tasks (Ordered roughly from "required" to "may need to be addressed if we run into issues"):

Spherical Coordinates:

Rough time estimates:

High level tasks:

Post-Spherical Coordinates