Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Hugo Granström
    @HugoGranstrom
    But we do get the advantage of having a way to interpolate the values after the simulation
    It's roughly half as fast as the old version so I guess it's a matter of choosing if we want fast and not so flexible or a bit slower but more flexible.
    We could of course also do so that it doesn't save every timestep and only every 10th or something like that.
    You who have a bit more experience than me in using ODE solvers, what do you think is the most important? Speed or flexibility?
    Hugo Granström
    @HugoGranstrom
    I implemented the more sparse saving and now it's on par with the old version when the saving is less frequent than the actual timesteps
    Hugo Granström
    @HugoGranstrom
    I've adjusted the benchmarks a bit now and when the two versions save the same amount of values, the new one is twice as fast!
    Hugo Granström
    @HugoGranstrom
    Tsit54 has also been re-done in the new version and it seems to be about as fast as the old version. I have fiddled a bit with the Interpolators as well so now we should be able to add custom interpolators for the once which support dense output
    It is in the newOde branch if you would like to play around with it
    matrixbot
    @matrixbot
    BarrOff Sorry, been busy the last days. I also started reading the Nim in Action book. It is well written and there are some good examples about concurrency and parallelism. I can really recommend it.
    Hugo Granström
    @HugoGranstrom
    I tried to read it once upon a time, but the topics weren't really my cup of tea 😅
    Some kind of parallelization would be fun though but I don't think async and await is really the right way to go then
    Just using parallell for loops is probably all we need
    I've ported all the integrators from the old to the new version now and the fixed timestep versions are consistently faster than the old ones, probably because we are using when-statements to control if the code for the adaptive integrators should be used or not
    Hugo Granström
    @HugoGranstrom
    One thing that has bugged me the past few days is how the start time and end time is set by the user. tStart is set in an ODEoption which is quite inconvenient if you only want to change the it and not the other parameters. And the endTime is a bit fuzzy how it is set as well atm. What way do you find the most intuitive for a user to set the start and end times of the simulation? For example if you compare the different methods used by others like JuliaDiffEq and Matlab
    Hugo Granström
    @HugoGranstrom
    I appreciate the shootout in your PariNim repo (which seems very interesting and I could definitely have a bit of fun with it in the future) but I have to say you yourself deserve 99% of the credit on that part. You came in like a fresh wind and lit my open-source fire again 😊 It's rather me who should thank you for the inspiration you have brought me! 😉 Thank you!
    matrixbot
    @matrixbot
    BarrOff I was rather busy the last days, so I did not respond earlier. It is nice to hear that I brought you inspiration. I wanted to thank you because you are the first person I encountered in an open source project. If that person would have been harsh, it might have stopped me from continuing. But you were welcoming and motivating. 😃👍
    Hugo Granström
    @HugoGranstrom
    I'm glad you found it so 😊 It's just unwise to scare people away who wants to work for free , don't you think? 🤪😂 Jokes aside, it's a whole lot more fun to have others to talk to and get inspiration from than working by yourself ☺️
    What do you have in mind with Pari? Is it something you yourself are using usually or just something you find cool and wanted to test your skills at? :-D
    matrixbot
    @matrixbot
    BarrOff I use pari/gp from time to time. Looking for a library to test Nim's FFI and nimterop it came to my mind and I was like: why not give it a try? 😜
    BarrOff Also, do you know project Euler? Pari is really well suited for that
    Hugo Granström
    @HugoGranstrom
    I've dabbled with it a few years ago but I used Python so it took some time for my codes to run, especially when considering that my code probably was very suboptimal 😂
    Pari sounds really useful for that 👍
    Great way to combine learning and joy 😉
    Making high-level wrappers is quite fun actually, it feels like you have accomplished something when you're able to simplify the use of something complicated
    matrixbot
    @matrixbot
    BarrOff Yeah, that's true. Nimterop can't convert functions as parameters of functions. Choosing to wrap PARI was maybe not the wisest decision, because it is based on closures. 🤪 I still need to wrap about more than 200 functions.
    Hugo Granström
    @HugoGranstrom
    Oh my.... 🙈😅 That sounds aweful 😬
    That definitely sounds like a test of patience 😂
    matrixbot
    @matrixbot
    BarrOff At least it isn't very difficult, just needs time and concentration. I have been trying to use nimarchive on Linux, MacOS and FreeBSD, but nowhere did it work. I allready filed an issue, but could you do a quick check on it? Just the simple example on the github page would be enough.

    BarrOff Like
    import nimarchive

    extract("archive.tar.gz", "outdir")

    Hugo Granström
    @HugoGranstrom
    I'm also getting a error:
    Error: undeclared identifier: 'getProjectCacheDir'
    But it seems to be another than you get
    I'm on Windows btw
    matrixbot
    @matrixbot
    BarrOff Interesting. 😂
    Hugo Granström
    @HugoGranstrom
    Haha there are apparently more than two sides on this coin 😂🙈 poor maintainer 😬
    Bug fixes are the least fun part of coding 😅
    Vindaar
    @Vindaar
    Hello there! Just noticed you have a gitter room for numericalnim :)
    Hugo Granström
    @HugoGranstrom
    Good afternoon 😄 Yeah it was BarrOff's idea to use Gitter for discussions rather than cluttering Issues and PRs.
    Vindaar
    @Vindaar
    Yeah, it makes sense for some things, especially simpler "how to do x" questions and this sort of stuff
    Hugo Granström
    @HugoGranstrom
    Yeah definitely :)
    The data science packages for Nim is starting to stack up now, Arraymancer and ggplotnim is a really promising start to make Nim more attractive to new users when they see we got both a great Dataframe/Plotting library and a nd-array library.
    The key now I guess is to make sure they all cooperate with each other, that is one of the main strengths of the Scipy ecosystem that everything works together
    So I think mratsim's question to us and brentp this morning was really good. To make sure his changes doesn't break the other stuff that's out there.
    Vindaar
    @Vindaar

    Thanks for the kind words :)

    The key now I guess is to make sure they all cooperate with each other, that is one of the main strengths of the Scipy ecosystem that everything works together

    and yes, this is something I've been thinking about more and more, since I rewrote ggplotnim's data frame

    I agree
    The thing I've been wondering about most lately however is whether we should strive for a single library "which does everything", kinda like scipy itself, you know?
    That is regarding pure numerical calculations of course
    data frames and plotting don't belong in there
    but integration routines and a lot of stuff I have in my seqmath fork here: https://github.com/vindaar/seqmath
    that would both help to maintain code working together, put more eyes on the written code and most importantly would help more with discoverability of the functionality for newer nim users