BUG DESCRIPTION:
----------------
Continuation is incorrectly supported in bvode
ERROR LOG:
----------
The adaptative mesh is incorrectly computed when using
continuation, leading in my case to division by zero error.
HOW TO REPRODUCE THE BUG:
-------------------------
One needs a computation using continuation, i can provide one.
OTHER INFORMATION:
------------------
I have found a solution to the problem and a patch. Below i give a more complete description in french and the patch
J'ai un calcul qui nécessite d'utiliser la procédure de "continuation" dans
bvode. Il faut donc fixer ipar(9) = 2 ou 3, mais la continuation tombe
rapidement en erreur du fait que le nombre de points du "mesh" n'est pas
spécifié correctement. Le programme fortran colnew.f qu'utilise bvode dit
qu'en pareil cas il faut fixer ipar(3)=ispace(1), mais scilab ne donne pas
accés à ispace. Je propose donc un patch très simple au wrapper
sci_bvode.f que voici (obtenu par diff -u sci_bvode.f.orig sci_bvode.f):
--- sci_bvode.f.orig 2013-03-20 11:13:27.000000000 +0100
+++ sci_bvode.f 2013-03-20 11:12:43.000000000 +0100
@@ -168,6 +168,9 @@
kz=top
if (.not.cremat(fname,top,0,mstar,1,lr,lc)) return
iero=0
+C For continuation implement ipar(3)=ispace(1), see colnew.f line 367
+ if (istk(ilipar+8).eq.2) istk(ilipar+2) = istk(iadr(lispace))
+ if (istk(ilipar+8).eq.3) istk(ilipar+2) = istk(iadr(lispace))
call colnew (ncomp,istk(iadr(lrm)),aleft,aright,stk(lzeta),
$ istk(iadr(lipar)),istk(iadr(lltol)), stk(ltol),stk(lfixpnt),
$ istk(iadr(lispace)), stk(lspace), iflag, fsub,
Avec ce patch mon calcul tourne sans problème, et le patch ne change rien au
cas usuel sans continuation ipar(9)=1. Je n'ai jamais utilisé le cas ipar(9)=4
donc je me suis bien gardé d'y toucher. Comme dit dans colnew.f pour que la
continuation avec ipar(9)=2,3 marche il faut utiliser bvode dans une boucle
serrée de façon à ce que le nouvel appel à colnew trouve les anciennes valeurs
sur la pile dans ispace, fspace, et ceci devrait être documenté dans le
manuel.
Je peux fournir un exemple intéressant de calcul utilisant cette technique.