Perl: the Markov chain saw PerlMonks

### Re^3: Finding a module to work on

by moritz (Cardinal)
 on Oct 18, 2007 at 16:51 UTC ( #645771=note: print w/replies, xml ) Need Help??

in reply to Re^2: Finding a module to work on
in thread Finding a module to work on

I'll try to present a module I'm working on in my free time, and if you (or another monk) are interested in it, I'll set up a repository where you can get the code.

My inspiration comes from a simulation software called stella which I used in school, but which is closed source and, iirc, rather expensive.

The idea is that you can create objects and specify their relation, which means that you can either say things like "acceleration = force / mass", or things like "velocity gains/looses by "acceleration"" (which is, mathematically, a derivation).

A simple example for a falling stone might be something like this:

```mass: 1 # in kg

force: -9.81 # in N

acceleration: force / mass

velocity:
gains by: acceleration
initial: 2.5

height:
gains by: velocity
inital: 0

This will output a parabolic curve for height, and an linear for velocity. This is trivial to calculate manually as well, but if you want to add things like air resistance it's very hard to do manually.

That means that you can model physical relations (and other things, but being a physicist I tend to forget them...) with only very little physical knowledge, and without knowing it you are actually writing down a differential equation.

Solving that isn't hard (my prototype does that with Math::RungeKutta), the real work is manage the objects, ensure that values aren't calculated multiple times (to boost efficiency), and to create a usable API.

Further along the way I see a serialization format (based on yaml, json, xml or the like), plotting of the results and perhaps a GUI.

And I'm targeting the "everything is a library" approach, in Perl term "everything is a Module", so that large parts of the application (especially the modelling backend) can easily be used by other programs.

Am working on this occasionally, and plan to release the first modules to cpan as soons they have a stable API (and are not too buggy).

Create A New User
Node Status?
node history
Node Type: note [id://645771]
help
Chatterbox?
 1nickt gives up on finding a Perl YAML parser that supports hash merging. In 2017. [LanX]: Oh yes true, he lost his accent! xD [Eily]: and since his name is a modified version of astérisque (asterisk), which is a typographical symbol, I think it's even funnier that he would lose a diacritic [Eily]: the pun doesn't work so well with "he lost a diacritic" though :P [LanX]: Obelix might offer to find it again ... [LanX]: not much to translate anyway since Goscinny died [Eily]: https://en. wikipedia.org/ wiki/List_of_Aster ix_characters some of the names were changed to include a new pun [LanX]: sure some are even funnier now [LanX]: some lost because they were not translated like Epidemais

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (14)
As of 2017-05-24 15:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
My favorite model of computation is ...

Results (184 votes). Check out past polls.