-
-
Notifications
You must be signed in to change notification settings - Fork 49
GSOC 2014 #18
Comments
Glad to hear that you are interested in ODE.jl! As you have probably seen we are currently trying to revise the package to some extent and would be most happy to get some help. I don't know if there is already a definite GSOC ODE project, but I am sure we can come up with something that suits your interests. I hope that the others will join the discussion with suggestions, but some potential topics that come to my mind would be
But you mentioned that you already have some ideas? |
Thank you for the reply. "Project: Native Julia solvers for ordinary differential equations Julia should have a full set of ODE solvers, as they are vital for numeric programming. This project should build on the work of ODE.jl. The best way forward will probably be to implement the solvers in Julia. See #75. Expected Results: A set of production-quality ODE solvers." This is what I have thought so far: I would start by implementing some basic ODE solvers, like implicit and explicit Euler, Crank-Nicolson and Heun. This is actually more useful for myself than to the library, because it's lets me enter in the julia's development frame of mind and can be used to assert that I am suitable for the project. (This will come before the actual project and before the GSOC, let's call it a warm up :) ). The first thing to do in my opinion is to improve the test suite and the documentation, to allow a much smoother development of the library. The library should then expand by implementing some other methods, with maybe some redundance in problem solving (different methods can solve the same thing) but with the possibility for the user to chose from a group of solvers. For the new methods to be implemented, I don't know much on the subject yet, but I think that maybe finite volume and finite element can be added. What do you think? |
Fun! ODE.jl could really benefit from growing its number of active developers, so it's nice to see that there is interest! =) As you'll see if you read through the open issues, much of the current discussion is around API design and basic functionality. Many good ideas have been raised, but at least some of them might require a fair amount of work to actually be implemented - however, I don't know if maybe work on many of those things will already be started by the time GSoC starts. A good way for you to familiarize yourself with Julia and with ODE.jl would be to get involved in the discussion ;) @acroy's suggestions for topics are great - in particular, the library is really in need for some rigorous testing, both for accuracy and performance, so if I got to pick, that would be my first priority for a GSoC project. However, there are some other things we could definitely use as well:
Edit: now I saw that you've posted another comment. Yes, your ideas sound good - as I said above, a good test suite would really add a lot of value to the package. If you'd like to work on that, that'd be really great! As for warm-up, why don't you start going through the issues and submit pull requests already now? ;) |
If you can show us reasonable implementations of explicit and implicit Euler in your GSoC application, that would go a very long way toward convincing us that we should have you on board. cc: @StefanKarpinski |
@tlycken I thought of implementing something related to the project by starting from the basic level, to allow a sort of educational pathway in the project course and to start getting the hang of things. Starting with actual issues, would mean a more step learning curve with the julia language and a more difficult project start in my opinion. |
Give me a couple of days to sort out the material and I'll start working with Euler :) |
@sapo93 we look forward to your application. |
I want to second @tlycken's call for testing, and let me expand on that by saying that we really need rigorous testing and comparison of our solvers to competing solvers (in Matlab, Mathematica, Sundials, etcetera). Without rigorous comparisons (on a variety of test cases exhibiting different characteristics, including both "easy" and "hard" cases), it is difficult to know whether our ODE solvers are any good. |
I looked over chapter six of the manual and the General linear methods explanation posted in #30 . It seams to me a worthwhile idea for the GSOC project. |
I can mentor, but you'd hit the jackpot with @stevengj if he were available. |
For GSOC I would concentrate on one specific solver and implement that in a correct and performant way (with support for the features we are discussing in doc/api.md. Personally, I would like to see an implicit solver (like RADAU or RODAS), but there might be other suggestions. That should be enough work for the summer and if there is still time we will certainly find some extra things to do. Regarding the test suite, I think one should not underestimate that task. We are not talking about the kind of really simple tests we have now. As @stevengj pointed out, we need rigorous testing and comparison of our solvers for a variety of test cases (involving different ODEs, parameters, accuracies). The tricky part is probably to obtain a sensible and useful analysis of the test results. I would consider this a separate project in it's own right. [edit ivarne: fixed link to api.md] |
The referenced RADAU & RODAS work for banded Jacobians only. It would be good to have an implementation which works with a general sparse Jacobian. |
Hi everyone, I am Niluka Piyasinghe. I am interested about ODE solver GSOC project. I am familiar with ODE's over 1 year since its included in academic curriculum and know some solving method like D operator, undetermined coefficient, Laplace transformation and matrix method. [edit ivarne: formatting] |
Hi everyone , I am Niluka piyasinghe.I am interested about ODE solver GSOC project. I know many ODE solving methods like D operator, Laplace transformation, undermined coefficient and matrix method. These days I am trying to choose suitable solving method for proposal. Any suggestions? [edit ivarne: formatting] |
@Nicksol: I think the methods you mention are used in analytic solutions of ODEs and not usually in numerical solutions. As mentioned earlier in this thread, interest would be in having a solver which works for stiff ODEs, i.e. an implicit solver, with adaptive time step. For example BDFs, implicit Runge-Kutta (RADAU is of that type), and general linear methods (DIMSIMs, IRKS). Have a look at Wikipedia for a quick overview. Edit: and such a solver should work for DAEs as well. But I think most implicit ones can do that. |
Here are my ideas as GSoC project As the discussions in JuliaLang/julia#75 ODE23 solver seems work correctly . But there are some issues with ODE45 solver.Also there are some concerns about the licensing. So as suggest in #25 , i will work on implementing pure Julia solver to ODE45 based on http://www.unige.ch/~hairer/prog/nonstiff/dopri5.f (There a C and Matlab versions of these in http://www.unige.ch/~hairer/software.html website.Since i am coding with these languages over 2 years.It won't be hard understand it.) I will make it according to API changes describe in https://github.com/JuliaLang/ODE.jl/blob/master/doc/api.md I am looking forward for suggestions. Thanks. |
Or I could focus on @acroy suggestions and implement RADAU solver with features in https://github.com/JuliaLang/ODE.jl/blob/master/doc/api.md .Since these API changes are tentative, I can come with changes according to it in the implementation as the project goes on. Before submit any proposal to GSOC ,I would like to know ideas of the comminuty and looking forward for a mentor since students can suggest some people as mentor to the project when submitting the proposal. |
It's fun that there is so much interest in this package for GSoC! I would like to re-iterate the suggestion to work on a good test suite for the package. There has been some discussion in #16 scratching the surface of how to work with performance tests, and there might be some salvageable ideas in #3 even if the PR is so old that most of the code is probably unusable. There also a few comments on this subject higher up in this thread, and the DETEST test suite seems to be a more or less mandatory resource in this context. Specifying the exact requirements on the test suite must of course be part of the project itself, but I can think of a few things that should be considered:
It's difficult to know exactly how much time it would take to implement all this - and it will probably depend a lot on how much background the student has both in numerics and in testing. It is of course very possible to do only part of this within the frames of a GSoC project. |
Hello, It can calculate the Jacobians numerically, but can also work with user provided Jacobians. The also have a nice implicit Euler solver: Regards: Uwe Fechner, TU Delft |
I suggested to implement a stiff solver, because (a) we don't have an adaptive solver for stiff problems at the moment, (b) it would allow us to explore some additional aspects of the API (like handling the Jacobian) and (c) gives some ideas about stiff test-problems. Radau IIA (which is implemented in RADAU5 or RADAU5DAE mentioned above (which is GPL)) seems to be a reasonable (and manageable) starting point. (I haven't looked a the PETSc code, but I am sort of afraid that one has to understand the PETSc machinery before one can take out one part of it, but maybe this isn't really a problem.) |
I agree with @acroy.Since Julia isn't equiped with a solver for stiff problems, it's a good idea to come with solver.I am going to submit a GSOC proposal based on RADAU Thing is i am going to need some time get more familiar with these numerical ODE solving theorems. so i will learn more in up coming weeks.(Not this week,I have mid semester exams.) I will implement Euler method in my GSOC application as @jiahao suggested just to show that i can complete the task. |
I see a lot of people linking to the codes at http://www.unige.ch/~hairer/software.html I cannot find a license for these codes. Are they under some permissive license? |
Why not asking the author directly: http://www.unige.ch/~hairer/welcome.html Am 06.11.2014 um 21:07 schrieb Daniel Carrera:
|
Actually, the license is included on his web-page: Copyright (c) 2004, Ernst Hairer Redistribution and use in source and binary forms, with or without
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS |
Excellent. Thanks. |
I was wondering what's the state of this project so far, is it still moving forward? I would really like to apply, I'm of course no expert in the field but I have experience using propietary software (gProms) to solve large DAE systems (with stiff ODEs) for polymerization reactions. Although not related to solving ODEs in Julia, my experience with the language is writing a kinetic MC simulation using the Gillespie Algorithm for the above DAE system and comparing the results between the two. This work in Julia, is drafted in this notebook, I know it's a little messy and confusing, but the simulation is working and giving good results. I'm working right now at uploading a better version of the notebook. As a minor plus, I'm a TA for Numerical Methods in chemical engineering class. |
@espintos : First of all thanks for your interest in working on ODEs in Julia! We are always happy about new contributors. Regarding this particular issue, I think it is fair to say that it is a bit outdated since there have been quite some developments in the last year or so, for instance,
This doesn't mean that everything is done of course, but we need to reconsider the project suggestions put forward in this issue. Some of the problems we have to tackle next are performance for custom scalar-like types after #68 is merged, mutating rhs functions, support of implicit ODEs, ... but I am not sure if those are good JSoC projects. (I know that there is a JSoC project suggestion for "adding RK45 to Base". Personally, I don't think that this is necessary, but others might think differently) |
Closing this because it's not relevant anymore. We can have a thread discuss new GSoC ideas, but this has served its purpose. |
Hi,
I am Francesco Saporito, and I was intested in applying for the ODE Solver project. I have been poking around the code and reading the Julia manual, and I am getting toghether some ideas for the project.
I wanted to know what the community had in mind regarding the ODE Solver and what the GSOC student it's expected to do to the project. In the project idea it was hinted that a major rewrite of the code was involved, but I wanted to know what you believe that has to be done for the solver.
Thank you for the suggestions.
Saporito Francesco
The text was updated successfully, but these errors were encountered: