Changeset 25492 in project


Ignore:
Timestamp:
11/11/11 09:18:02 (9 years ago)
Author:
Ivan Raikov
Message:

signal-diagram: initial support for event function in Octave

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

Legend:

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

    r23951 r25492  
    172172                 (name  (car name.model))
    173173                 (model (cdr name.model)))
    174             (codegen name model language: 'octave pre: pre solver: 'rkbs)
     174            (codegen name model language: 'octave pre: pre solver: #f)
    175175            (recur (cdr models) #f)
    176176            )))
  • release/4/signal-diagram/trunk/signal-diagram.scm

    r25238 r25492  
    11801180
    11811181
    1182 (define (codegen/Octave name f #!key (initial #f) (pre #t) (solver 'rk4b))
     1182(define (codegen/Octave name f #!key (initial #f) (pre #t) (solver #f))
    11831183
    11841184  (if (and solver (not (member solver '(rkfe rk3 rk4a rk4b rkhe rkbs rkf45))))
     
    11931193           (fcodegen ((sfarrow-codegen f) input fenv dfe ))
    11941194           (relations-expr (relations-codegen f input))
     1195           (events   (let recur ((f f) (ax '()))
     1196                       (let ((sig (sfarrow-sig f)))
     1197                         (case (car sig)
     1198                           ((RTRANSITION)
     1199                            (let ((ef (fourth sig)) (eg (fifth sig)))
     1200                              (let* ((ax1 (cons ef ax))
     1201                                     (ax2 (if (symbol? eg)  (cons eg ax1) ax1)))
     1202                                (fold recur ax2 (cdr (sfarrow-children f)))
     1203                                )))
     1204                           ((TRANSIENT)
     1205                            (let ((e (fourth sig)))
     1206                              (let* ((ax1 (cons e ax)))
     1207                                (fold recur ax1 (cdr (sfarrow-children f)))
     1208                                )))
     1209                           (else ax)
     1210                           ))
     1211                       ))
    11951212           (globals   (filter-map
    11961213                       (lambda (x)
     
    12171234        "end" nl))
    12181235
     1236      (if (pair? events)
     1237        (let ((event-vector (map (lambda (x) (value->Octave (V:Op '- (list (V:Sel x (V:Var 'input)) (V:C 1.))))) events)))
     1238          (print-fragments
     1239           (list
     1240            "function " (name/Octave "retval") " = " (name/Octave (string-append (->string name) "_event")) " (input)" nl
     1241            "retval = [" (intersperse event-vector ",") "];" nl
     1242            "end" nl))))
     1243         
     1244     
    12191245      (if initial
    12201246          (print-fragments
  • release/4/signal-diagram/trunk/signal-diagram.setup

    r25236 r25492  
    66(required-extension-version 'flsim 1.7)
    77
    8 (define version 2.0)
     8(define version 2.1)
    99
    1010(make (
Note: See TracChangeset for help on using the changeset viewer.