Menu

pyTectonics / Blog: Recent posts

3d Plate tectonics... now in your browser!

A new spin off simulator has emerged, tectonics.js!

This project goes one step further than pyTectonics - the project is intended to eventually implement all the features of pyTectonics, but in addition it will run in any modern web browser without requiring the installation of software.

For those of you not wanting to scroll to the bottom, you can check out the simulation here.... read more

Posted by Carl Davidson 2013-11-03

New Release: 0.3a

A new release comes to pytectonics:

  • cleaner
  • faster
  • speed control
  • thickness map
  • docking
  • dropped scipy dependency

I'd originally intended 0.3 to add the supercontinent cycle, but with how the work so far shapes up it seems like a new release is in order, anyways.

Perhaps most important this release is the docking functionality. Previous versions differed in how collision was performed between landmass. In real life, colliding continents have the potential to interrupt the plates they move on. Smaller, more common landmasses such as those found in island arcs however dock to larger landmasses without interrupting plates. Pytectonics previously handled the former without the latter. What made matters worse was how velocity was affected by collision - the model took a naive approach, stopping plates entirely when collision was detected. Effectively, this caused plates in the long run to stop moving, oftentimes for no reason other than hitting some insignificant island. The most recent version handles docking, though, appending crust from smaller colliding landmass to the plate of the larger landmass. Velocity is also now altered by collision in a much more sensible manner that assumes the conservation of angular momentum. This felt to me a good first order approximation given I wanted the model to remain simple without considering things like mantle convection. It still seems to me a bit naive given the timescales involved, but a brief look through literature really does seem to suggest that angular momentum is conserved.

On a bit of a side note, SciPy should now no longer be needed for subsequent versions. Previous versions used SciPy largely for the kd-tree library, allowing efficient lookups of nearest neighbors through 3d cartesian coordinates. Over the course of many commits though I've found it much faster to drop the 3rd dimension and determine neighbors based upon 2d spherical coordinates, which is rather incompatible with SciPy's kd-tree implementation. As of the previous version, kd-trees were only used upon initialization to determine the nearest plates and continents to each grid cell. Beyond that, SciPy did provide some functionality through the use of obscure mathematical constants such as the golden ratio, but that hardly warrants the dependency from the user's perspective.

Posted by Carl Davidson 2013-02-15

Website up

The website is complete now, at least as far as needed for a first pass. Work on the site will doubtlessly continue as need arises. The site makes use of several relatively new features of HTML5, in particular the details tag, which I've come to love. Chrome so far seems to be the only browser to support the tag, though other browsers display text within them just fine, and support will be added for those browsers in the future. Also of note - ads are now hosted through Dynamic Oxygen. Sourceforge in recent years seems to have warmed to the idea of ad support and I wouldn't mind some sort of incentive to continue work. Ads so far are science based and hopefully keep with the rest of site feel.

Posted by Carl Davidson 2013-02-09

Project website in the works

This week I mentioned pyTectonics briefly in a post on Reddit's r/worldbuilding subreddit. It seems the project got a few more downloads than expected, but hopefully the project may still be deserving of its own thread sometime in the future. Until then, I've started thinking about the ways to give a better face to the project. A new website is planned using Sourceforge's project web space as an obvious choice for hosting.

... read more

Posted by Carl Davidson 2013-01-11

New Release: 0.2a

A new version has been released, and to celebrate I figured I'd start up the blog, here.

Features:

  • Variable projections. Render the world as a globe or a traditional 2D map.
  • Variable map types. Choose between topographic relief maps and mock satellite imagery.

The undisputed theme this release is improvement to visualization, both in terms of user experience and the code behind it. Projections and map types have been something I've fooled around with a few times in the past, but most of this functionality was taken back when modifying renderings to use convex hulls. Prior to the release on source forge, crust was rendered through vpython's "points" class, which produced results much like the "debug" map type that remains in current version. It was easy to do, it performed fast, and it gave a good idea about what was going on in the model itself, but needless to say, it was ugly. Switching to convex hulls was remarkably easy to do for the globe projection and it produced some remarkably good results visually, but on 2d maps you couldn't assume the shape you were rendering would be convex as it was on the globe. One could switch to a 2d graphics library like PyGame or PIL, but Vpython was certainly up to the task and I'm not at all interested in adding libraries without damn good reason.

... read more

Posted by Carl Davidson 2012-10-19