Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??
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).


In reply to Re^3: Finding a module to work on by moritz
in thread Finding a module to work on by johnlawrence

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?
    Username:
    Password:

    What's my password?
    Create A New User
    Domain Nodelet?
    Chatterbox?
    and the web crawler heard nothing...

    How do I use this?Last hourOther CB clients
    Other Users?
    Others exploiting the Monastery: (3)
    As of 2025-06-14 23:16 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?

      No recent polls found

      Notices?
      erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.