Changeset 30957 in project


Ignore:
Timestamp:
06/04/14 04:28:01 (6 years ago)
Author:
Ivan Raikov
Message:

signal-diagram: beginning refactoring to allow event detection in variable-step integrators

Location:
release/4/signal-diagram/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • release/4/signal-diagram/trunk/examples/Izhikevich03.scm

    r30942 r30957  
    1616                 (threshold-detect        (ASSIGN (spike (> V theta))))
    1717
    18                  (tspike-set              (ASSIGN (tspike (if spike t tspike))))
    19 
    20                  (subthreshold-regime     (SEQUENCE subthreshold-eq (SEQUENCE threshold-detect tspike-set)))
    21                  
    2218                 (refractory-eq           (ASSIGN (t (+ t h) )
     19                                                  (tspike (if spike t tspike))
    2320                                                  (spike false)
    2421                                                  (tspike tspike)
     
    2724                 )
    2825
    29             (TRANSIENT subthreshold-regime refractory-eq 'spike)
     26            (TRANSIENT subthreshold-eq refractory-eq threshold-detect)
    3027
    3128            ))
  • release/4/signal-diagram/trunk/signal-diagram.scm

    r30942 r30957  
    188188       (symbol? (cadr h))))
    189189
     190
    190191(define-datatype diagram diagram?
    191192  (IDENTITY     (f diagram?))
     
    204205                )
    205206  (TRANSITION   (f diagram?) (g diagram?) (ef symbol?) (s symbol?))
    206   (TRANSIENT    (f diagram?) (g diagram?) (e symbol?) )
     207  (TRANSIENT    (f diagram?) (g diagram?) (e diagram?) )
    207208  (ON           (f diagram?) (e symbol?) )
    208209  (INTEGRAL     (i symbol?)
     
    893894         (fke-kill (compose (dfe-gen fke) fke-in))
    894895
    895          (fintegrals (integrals f))
    896          (fkintegrals (integrals fk))
    897896         )
    898    
    899     (for-each (lambda (x) (let ((evs (dynvector-ref integral-events x)))
    900                             (dynvector-set! integral-events x (cons e evs))))
    901               (map car fintegrals))
    902     (for-each (lambda (x) (let ((evs (dynvector-ref integral-events x)))
    903                             (dynvector-set! integral-events x (cons ek evs))))
    904               (map car fkintegrals))
    905897
    906898    (make-sfarrow
     
    11271119  (let* ((fe      (sfarrow-dfe f))
    11281120         (ge      (sfarrow-dfe g))
     1121         (ee      (sfarrow-dfe e))
    11291122         
    11301123         (fe-in   (dfe-in fe))
     
    11381131         (ge-kill (compose (dfe-gen ge) ge-in))
    11391132
    1140          (fintegrals (integrals f))
    1141          (gintegrals (integrals g))
     1133         (ee-in   (dfe-in ee))
     1134         (ee-out  (compose (dfe-out ee) ee-in))
     1135         (ee-gen  (compose (dfe-gen ee) ee-in))
     1136         (ee-kill (compose (dfe-gen ee) ee-in))
     1137
    11421138         )
    1143 
    1144     (for-each (lambda (x)
    1145                 (let ((evs (dynvector-ref integral-events x)))
    1146                   (dynvector-set! integral-events x (cons e evs))))
    1147               (map car fintegrals))
    11481139
    11491140    (make-sfarrow
     
    11601151      (lambda (s)  (lset-union eq?
    11611152                               (lset-union eq? (fe-in s) (ge-in s))
    1162                                (list e)))
     1153                               (ee-in s)))
    11631154      ;; out
    11641155      (lambda (s)
     
    11821173              (fcompute  (gensym 'transientf))
    11831174              (gcompute  (gensym 'transientg))
     1175              (ecompute  (gensym 'transiente))
    11841176
    11851177              (fenv      (map (lambda (s) (cons s s)) (fe-in s)))
    1186               (fcodegen ((sfarrow-codegen f)
    1187                          (lset-union eq? (fe-in s) (list e))
    1188                          fenv fe))
     1178              (fcodegen ((sfarrow-codegen f) (fe-in s) fenv fe))
    11891179
    11901180              (genv      (map (lambda (s) (cons s s)) (ge-in s)))
    1191               (gcodegen ((sfarrow-codegen g)
    1192                          (lset-union eq? (ge-in s) (list e))
    1193                          genv ge))
     1181              (gcodegen ((sfarrow-codegen g) (ge-in s) genv ge))
     1182
     1183              (eenv      (map (lambda (s) (cons s s)) (ee-in s)))
     1184              (ecodegen ((sfarrow-codegen f) (ee-in s) eenv ee))
    11941185
    11951186              )
     
    12171208                          )))
    12181209                   
     1210            (B:Val ecompute
     1211                   (V:Fn (ee-in s)
     1212                         (E:Let
     1213                          (append (relations-codegen e env)
     1214                                  (codegen-expr ecodegen))
     1215                          (E:Ret (V:Rec (map (lambda (x) (list x (select-signal '(transient ecompute) x (codegen-renv ecodegen))))
     1216                                             ((ee-out dfe) s))))
     1217                          )))
     1218                   
    12191219            )
    12201220           
     
    12541254
    12551255(define integral-index (make-parameter 0))
    1256 (define integral-events (make-dynvector 0 '()))
    1257 
    12581256
    12591257(define (sf-integral x ys h fs)
     
    12881286        ;; in
    12891287        (lambda (s)
    1290           (let ((x (lset-union eq?
    1291                                (dynvector-ref integral-events idx)
    1292                                (lset-union eq?
    1293                                            (concatenate fs-formals)
    1294                                            (append (list hname)
    1295                                                    (cons x ys))))))
     1288          (let ((x (lset-union eq?
     1289                               (concatenate fs-formals)
     1290                               (append (list hname)
     1291                                       (cons x ys)))))
    12961292            x))
    12971293       
     
    13101306
    13111307           (let* (
    1312                   (events    (dynvector-ref integral-events idx))
    1313                  
    13141308                  (idxv      (V:C idx))
    13151309
     
    13851379(define (construct d)
    13861380  (integral-index 0)
    1387   (dynvector-clear! integral-events 0)
    13881381  (construct1 d))
    13891382
     
    14031396           (RTRANSITION (f g ef eg s)  (sf-rtransition (recur f) (recur g) ef eg s))
    14041397           (TRANSITION (f g ef s)      (sf-transition (recur f) (recur g) ef s))
    1405            (TRANSIENT (f g e)          (sf-transient (recur f) (recur g) e))
     1398           (TRANSIENT (f g e)          (sf-transient (recur f) (recur g) (recur e)))
    14061399           (ON (f e)                   (sf-on (recur f) e))
    14071400           (INTEGRAL (x ys h fs)       (sf-integral x ys h fs))
     
    15281521           (relations-expr (relations-codegen f input)))
    15291522
    1530       (if pre (print-fragments (prelude/scheme solver: solver integral-index: (integral-index))))
     1523      (if pre (print-fragments (prelude/scheme solver: solver
     1524                                               integral-index: (integral-index))))
    15311525
    15321526      (print-fragments (list (map (lambda (x)
  • release/4/signal-diagram/trunk/signal-diagram.setup

    r30916 r30957  
    44  (make-pathname #f fn ##sys#load-dynamic-extension))   
    55
    6 (define version 3.4)
     6(define version 4.0)
    77
    88(use make)
Note: See TracChangeset for help on using the changeset viewer.