<div class="gmail_quote">On Mon, May 2, 2011 at 6:07 PM, Matt Peddie <span dir="ltr"><<a href="mailto:mpeddie@gmail.com">mpeddie@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

Hi,<br>
<br>
On Fri, 8 Apr 2011 at 15:44:08, Fedor Bezrukov <<a href="mailto:Fedor.Bezrukov@physik.uni-muenchen.de">Fedor.Bezrukov@physik.uni-muenchen.de</a>> wrote:<br>
> Though one thing is definitely needed (I'll think of it when I have<br>
> some time) -- ability to make the function for the ode to get and<br>
> return the arguments as an array -- quite a common case if you want to<br>
> solve a large system of differential equations (eg, inital value<br>
> problem for an ODE)<br>
<br>
I'd really, really like to use this array functionality.  I know nothing<br>
about CFFI and am a gsll newbie, but I'm willing to help if I can.<br>
<br>
Matt<br>
<br></blockquote><div><br>Unless I'm misunderstanding this request, this is already possible, in
fact I'd regard it as the basic usage.  Perhaps you are thrown off by
the with-ode-integration macro and example.  I made up this macro in
order to easily accommodate the case of non-array usage in the ODE
solvers, because I wanted to show a simple example with scalars.   However if you look at how that macro expands, there is a
symbol #:DEP that is bound to a foreign array with the appropriate
dimensions:<br>
<br>
(LET ((STEPPEROBJ<br>
       (MAKE-ODE-STEPPER STEPPER 2 'VANDERPOL 'VANDERPOL-JACOBIAN T))<br>
      (CONTROL (MAKE-Y-CONTROL 1.e-6 0.0))<br>
      (EVOLVE (MAKE-ODE-EVOLUTION 2))<br>
      (#:DEP (GRID:MAKE-FOREIGN-ARRAY 'DOUBLE-FLOAT :DIMENSIONS 2))<br>
      (#:CTIME (GRID:MAKE-FOREIGN-ARRAY 'DOUBLE-FLOAT :DIMENSIONS 1))<br>
      (#:CSTEP (GRID:MAKE-FOREIGN-ARRAY 'DOUBLE-FLOAT :DIMENSIONS 1)))<br>
  (SYMBOL-MACROLET ((TIME (GRID:GREF #:CTIME 0))<br>
                    (STEP (GRID:GREF #:CSTEP 0))<br>
                    (DEP0 (GRID:GREF #:DEP 0))<br>
                    (DEP1 (GRID:GREF #:DEP 1)))<br>
    (FLET ((NEXT-STEP ()<br>
             (APPLY-EVOLUTION EVOLVE #:CTIME #:DEP #:CSTEP CONTROL STEPPEROBJ<br>
                              MAX-TIME)))<br>
      (SETF DEP0 1.0<br>
            DEP1 0.0<br>
            STEP STEP-SIZE<br>
            TIME INITIAL-TIME)<br>
      (LOOP<br>
       (WHEN (OR (>= TIME MAX-TIME) (> ITER *MAX-ITER*))<br>
         (RETURN (VALUES ITER TIME DEP0 DEP1)))<br>
       (NEXT-STEP)<br>
       (INCF ITER)<br>
       (WHEN PRINT-STEPS<br>
         (FORMAT T "~12,6f~10t~12,6f~24t~12,6f~&" TIME DEP0 DEP1))))))<br>
<br>So what you want to do is mimic this form, but instead define your foreign array directly.  Is this what you're asking about?<br>If it's an issue of CL array vs. foreign array, then you can use #'cl-array or just copy it over at the beginning and end.<br>

 <br>Liam<br><br>P.S.  Please join the mailing list to post.  Thank you.<br><br></div></div>