From: Gib Bogle on 18 Jan 2010 16:38 I'm looking for an ODE solver that is particularly suited to very large systems, i.e. thousands to tens of thousands of equations. I'm currently using the Fortran90 version (by John Burkardt) of the code from Sandia (Watts and Shampine) implementing "Low-order Classical Runge-Kutta Formulas with Stepsize Control" (Erwin Fehlberg). This works fine, but there may be code that is better suited to large systems of equations, e.g. using OpenMP. Suggestions welcomed.
From: Terence on 18 Jan 2010 19:42 On Jan 19, 8:38 am, Gib Bogle <g.bo...(a)auckland.no.spam.ac.nz> wrote: > I'm looking for an ODE solver that is particularly suited to very large systems, > i.e. thousands to tens of thousands of equations. I'm currently using the > Fortran90 version (by John Burkardt) of the code from Sandia (Watts and > Shampine) implementing "Low-order Classical Runge-Kutta Formulas with Stepsize > Control" (Erwin Fehlberg). This works fine, but there may be code that is > better suited to large systems of equations, e.g. using OpenMP. Suggestions > welcomed. There's a class of problems (inequality statements) that can be solved by the "Out of Kilter Algorithm". This expresses the inequalities as coted, capacity-limited flows through nodes (its origin was for country-wide large-scale water control planning and time-event action simulation of downstream effects). Remarkably, the number of iterations needed is in the tens to hundreds range. It's a mathetical inverse of the traditional methods. Another attack is to take the source of the algorithm you are using and see if you can optimise it for a particuar compiler-computer combination. A third is see if you can compile the (Fortran) source using CUDA for the nVidia graphics chip - which is being used extensively for these very large problems.
From: Gordon Sande on 18 Jan 2010 20:38 On 2010-01-18 20:42:09 -0400, Terence <tbwright(a)cantv.net> said: > On Jan 19, 8:38�am, Gib Bogle <g.bo...(a)auckland.no.spam.ac.nz> wrote: >> I'm looking for an ODE solver that is particularly suited to very large s > ystems, >> i.e. thousands to tens of thousands of equations. �I'm currently using > the >> Fortran90 version (by John Burkardt) of the code from Sandia (Watts and >> Shampine) implementing "Low-order Classical Runge-Kutta Formulas with Ste > psize >> Control" (Erwin Fehlberg). �This works fine, but there may be code that > is >> better suited to large systems of equations, e.g. using OpenMP. �Sugges > tions >> welcomed. > > There's a class of problems (inequality statements) that can be solved > by the "Out of Kilter Algorithm". This expresses the inequalities as > coted, capacity-limited flows through nodes (its origin was for > country-wide large-scale water control planning and time-event action > simulation of downstream effects). Remarkably, the number of > iterations needed is in the tens to hundreds range. It's a mathetical > inverse of the traditional methods. Out-of-kilter is an old method for solving network problems. Suitable for hand calculation. Network simplex or something even more modern would be preferred. ODE usually stands for Ordinary Differential Equations which are NOT network problems. Runge-Kutta is a well known method for ODEs which should have been an additional hint as to what kind of equations were being asked about. > Another attack is to take the source of the algorithm you are using > and see if you can optimise it for a particuar compiler-computer > combination. Polishing code rarely leads to serious improvements. Choosing a better algorithm is the way to go. > A third is see if you can compile the (Fortran) source using CUDA for > the nVidia graphics chip - which is being used extensively for these > very large problems.
From: none on 19 Jan 2010 13:58 On Tue, 19 Jan 2010 10:38:33 +1300, Gib Bogle wrote: > I'm looking for an ODE solver that is particularly suited to very large systems, > i.e. thousands to tens of thousands of equations. I'm currently using the > Fortran90 version (by John Burkardt) of the code from Sandia (Watts and > Shampine) implementing "Low-order Classical Runge-Kutta Formulas with Stepsize > Control" (Erwin Fehlberg). This works fine, but there may be code that is > better suited to large systems of equations, e.g. using OpenMP. Suggestions > welcomed. What kinds of ODE are you solving? Stiff or non-stiff? Smooth or non-smooth? Lots of intermediate output, or little? Nonsmooth, nonstiff: RK Nonstiff, smooth, lots of output: RK or Adams Nonstiff, smooth, little output: RK, ADams or Bulrisch-Stoer Stiff, nonsmooth: Runge-Kuuta Chebychev methods (eg RKC, ROCK2) or implicit rK (eg RADAU5) Stiff, smooth: VODPK or DASSLPK Most of these are available through Netlib. ROCK2 needs going to Hairer's website.
From: Gib Bogle on 20 Jan 2010 01:16 none wrote: > On Tue, 19 Jan 2010 10:38:33 +1300, Gib Bogle wrote: > >> I'm looking for an ODE solver that is particularly suited to very large systems, >> i.e. thousands to tens of thousands of equations. I'm currently using the >> Fortran90 version (by John Burkardt) of the code from Sandia (Watts and >> Shampine) implementing "Low-order Classical Runge-Kutta Formulas with Stepsize >> Control" (Erwin Fehlberg). This works fine, but there may be code that is >> better suited to large systems of equations, e.g. using OpenMP. Suggestions >> welcomed. > > What kinds of ODE are you solving? > > Stiff or non-stiff? Smooth or non-smooth? Lots of intermediate output, or > little? > > Nonsmooth, nonstiff: RK > Nonstiff, smooth, lots of output: RK or Adams > Nonstiff, smooth, little output: RK, ADams or Bulrisch-Stoer > > Stiff, nonsmooth: Runge-Kuuta Chebychev methods (eg RKC, ROCK2) or > implicit rK (eg RADAU5) > Stiff, smooth: VODPK or DASSLPK > > Most of these are available through Netlib. ROCK2 needs going to Hairer's > website. Hi, After some testing I've given up on this idea. Here is what I posted on sci.math.num-analysis: The situation I am interested in simulating is wet and squishy. Keratinocytes (skin cells in the epidermis) are proliferating in a healing wound. I have been handling this in a very ad hoc fashion, evaluating repulsion forces on each cell from neighbouring cells, then moving each cell in turn using F = kv, k = drag coefficient. I had the idea of trying to make this a bit more kosher, with F - kv = ma, and solving for all cells simultaneously. A bit of experimentation since I posted my query has convinced me that there is no future in this. The main problem is that determination of F is very expensive, making the solver go at a snail's pace. In any case I now see that using a proper ODE solver is really overkill for this situation. Cells are not really spheres with well-defined boundaries, as the formulation assumes, and there is no harm in allowing a degree of latitude in their interactions, i.e. I can live with temporary overlapping of cells. In other words, I'm now stepping back from an attempt at a kind of rigour that probably would have been spurious anyway. As long as the model parameters can be adjusted to make cell densities and motion characteristics roughly consistent with the behaviour of real cells (an empirical matter) the motion model will be adequate for the purpose.
|
Pages: 1 Prev: Maths constants Next: [ANN] Data Plotting Library DISLIN 10.0 |