Changeset 25245 in project


Ignore:
Timestamp:
09/26/11 05:01:30 (10 years ago)
Author:
Ivan Raikov
Message:

sundials: added a test for discrete events and fixed some bugs in setting up discrete event routine

Location:
release/4/sundials/trunk
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • release/4/sundials/trunk/sundials.scm

    r25241 r25245  
    712712 
    713713  (let ((n (f64vector-length variables))
     714        (nev (s32vector-length events))
    714715        (data-index (if user-data (+ 1 (fold max 0 (map car (ida-data-global)))) 0)))
    715716
     
    766767                        (move-memory! yp yp1 (fx* 8 n))
    767768                        (let ((v (residual-event t yy1 yp1 data)))
    768                           (move-memory! v rr (fx* 8 n))
     769                          (move-memory! v rr (fx* 4 nev))
    769770                          )))
    770771                    (lambda (t yy yp rr data) 
     
    774775                        (move-memory! yp yp1 (fx* 8 n))
    775776                        (let ((v (residual-event t yy1 yp1)))
    776                           (move-memory! v rr (* 8 n))
     777                          (move-memory! v rr (* 4 nev))
    777778                          )))
    778779                    )))
     
    945946
    946947  (let ((n (f64vector-length variables))
     948        (nev (s32vector-length events))
    947949        (data-index (if user-data (+ 1 (fold max 0 (map car (cvode-data-global)))) 0)))
    948950
     
    980982               ))
    981983          (event-fn1
    982            (if user-data
    983                (lambda (t yy gout data) 
    984                  (let ((yy1 (make-f64vector n)))
    985                    (move-memory! yy yy1 (fx* 8 n))
    986                    (let ((v (event-fn t yy1 data)))
    987                      (move-memory! v gout (fx* 8 n))
    988                      )))
    989                (lambda (t yy gout data) 
    990                  (let ((yy1 (make-f64vector n)))
    991                    (move-memory! yy yy1 (fx* 8 n))
    992                    (let ((v (event-fn t yy1)))
    993                      (move-memory! v gout (fx* 8 n))
    994                      )))
    995                ))
     984           (and event-fn
     985                (if user-data
     986                    (lambda (t yy gout data) 
     987                      (let ((yy1 (make-f64vector n)))
     988                        (move-memory! yy yy1 (fx* 8 n))
     989                        (let ((v (event-fn t yy1 data)))
     990                          (move-memory! v gout (fx* 4 nev))
     991                          )))
     992                    (lambda (t yy gout data) 
     993                      (let ((yy1 (make-f64vector n)))
     994                        (move-memory! yy yy1 (fx* 8 n))
     995                        (let ((v (event-fn t yy1)))
     996                          (move-memory! v gout (fx* 4 nev))
     997                          )))
     998               )))
    996999          )
    9971000   
Note: See TracChangeset for help on using the changeset viewer.