Hi,<br><br>I am trying to solve a second order ODE by calling a stepper for a number of fixed-size steps.  I am getting an error about conversion to foreign type c-pointer.  <br><br>I modeled my call to `apply-step' based on `apply-evolution'.  Looking at the source files, that is likely not to work because `apply-evolution' uses c-pointers, and `apply-step' makes direct variable references.  But I don't know how to deal with those - my C and CFFI knowledge are non-existent.<br>
<br>Anyway, here is a sample code that I hope someone can improve:<br><br>;;;; Example of a simple time-stepper<br>(defun sin-ode (time y z)<br>  "Define ODE for a sinusoid<br><br>y''=-y <br><br>or as a system:<br>
<br>y'=z<br>z'=-y<br><br>with initial conditions:<br><br>y0=0<br>z0=1 "<br>  (declare (ignore time))<br>  (values z (- y)))<br><br>(defun sin-ode-jacobian (time y z)<br>  (declare (ignore time y z))<br>  (values 0d0  0d0<br>
      0d0  1d0<br>      -1d0 0d0))<br>#|<br>(let  ((time 0d0)<br>       (delta-t 0.1d0)<br>       (stepper-type +step-rk2+))<br>    (let ((stepper (make-ode-stepper stepper-type 2 #'sin-ode #'sin-ode-jacobian))<br>
      (dep (make-marray 'double-float :dimensions 2))<br>      (dydt-in (make-marray 'double-float :dimensions 2))<br>      (dydt-out (make-marray 'double-float :dimensions 2))<br>      (yerr (make-marray 'double-float :dimensions 2)))<br>
      (setf (maref dep 0) 0d0<br>        (maref dep 1) 1d0)<br>      (dotimes (i 10)<br>    (incf time delta-t)<br>    (apply-step stepper time dep delta-t yerr dydt-in dydt-out))))<br><br>|#<br><br>BTW, once this is working, I will submit it as a patch to the ode-examples.lisp file<br>
<br>Thanks,<br><br>Mirko<br>