Changeset 30976 in project


Ignore:
Timestamp:
06/06/14 15:00:05 (6 years ago)
Author:
Ivan Raikov
Message:

signal-diagram / 9ML-toolkit: refactoring transients

Location:
release/4
Files:
15 edited
1 copied

Legend:

Unmodified
Added
Removed
  • release/4/9ML-toolkit/trunk/NineMLdiagram.scm

    r30917 r30976  
    5858                      (make-valtype '() (arrow-type diagram-type (arrow-type diagram-type diagram-type))))
    5959
    60            (Value_sig (ident-create "TRANSITION")
    61                       (make-valtype '() (arrow-type diagram-type (arrow-type diagram-type (arrow-type sigfun-type diagram-type)))))
    62            
    6360           (Value_sig (ident-create "TRANSIENT")
    64                       (make-valtype '() (arrow-type diagram-type (arrow-type diagram-type (arrow-type sigfun-type diagram-type)))))
     61                      (make-valtype '() (arrow-type diagram-type (arrow-type diagram-type (arrow-type sigfun-type (arrow-type diagram-type diagram-type))))))
    6562           
    6663           (Value_sig (ident-create "ON")
     
    9087          (datacon 'pure 'GROUP 2)
    9188          (datacon 'diagram 'IDENTITY 1)
    92           (datacon 'diagram 'TRANSITION 3)
    93           (datacon 'diagram 'TRANSIENT 3)
     89          (datacon 'diagram 'TRANSIENT 4)
    9490          (datacon 'diagram 'RTRANSITION 5)
    9591          (datacon 'diagram 'ON 2)
  • release/4/9ML-toolkit/trunk/alsys-mlton.scm

    r30104 r30976  
    33;;
    44;;
    5 ;; Copyright 2010-2013 Ivan Raikov and the Okinawa Institute of
     5;; Copyright 2010-2014 Ivan Raikov and the Okinawa Institute of
    66;; Science and Technology.
    77;;
     
    137137  (let* ((dir          (or (pathname-directory prefix) "."))
    138138         (shared-dir   (chicken-home))
    139          (flsim-dir    (make-pathname shared-dir "flsim"))
    140139         (solver-path  (make-pathname (pathname-directory prefix) (conc alsys-id "_solver.sml")))
    141140         (run-path     (make-pathname (pathname-directory prefix) (conc alsys-id "_run.sml")))
  • release/4/9ML-toolkit/trunk/eval.scm

    r30917 r30976  
    33;; Support for evaluation of NineML.
    44;;
    5 ;; Copyright 2010-2012 Ivan Raikov and the Okinawa Institute of
     5;; Copyright 2010-2014 Ivan Raikov and the Okinawa Institute of
    66;; Science and Technology.
    77;;
     
    422422                         `(DiagramLib:Rtransition
    423423                           (@ (e ,e) (e ,ek) ,(recur f) ,(recur fk)))
    424                          ))
    425                      
    426                       ((TRANSITION) 
    427                        (let ((f (cadr sexpr)) (fk (caddr sexpr))
    428                              (e (cadddr sexpr)))
    429                          `(DiagramLib:Transition
    430                            (@ (e ,e) ,(recur f) ,(recur fk)))
    431424                         ))
    432425                     
     
    872865                                                (e2 (recur (caddr sexpr))))
    873866                                            (diagram:ON e1 e2)))
    874                         ((TRANSIENT)      (diagram:TRANSIENT (recur (cadr sexpr)) (recur (caddr sexpr))
    875                                                              (recur (cadddr sexpr))))
    876                         ((TRANSITION)     (diagram:TRANSITION (recur (cadr sexpr)) (recur (caddr sexpr))
    877                                                               (recur (cadddr sexpr))))
     867                        ((TRANSIENT)      (diagram:TRANSIENT (recur (cadr sexpr))
     868                                                             (recur (caddr sexpr))
     869                                                             (recur (cadddr sexpr))
     870                                                             (recur (cadddr (cdr sexpr)))))
    878871                        ((RTRANSITION)    (diagram:RTRANSITION (recur (cadr sexpr))
    879872                                                               (recur (caddr sexpr))
     
    888881                                                (rhs   (cadddr (cdr sexpr))))
    889882                                           
    890                                             (if (not (equal? tstep h))
     883                                            (if (not (equal? tstep (cadr h)))
    891884                                                (error 'sexpr->diagram "mismatch between independent variable step of ODE and IVP" h tstep))
    892885                                           
  • release/4/9ML-toolkit/trunk/examples/Izhikevich03.9ML

    r23765 r30976  
    1010struct
    1111
    12   binding construct t V U k1 k2 k3 theta a b c d spike tspike Isyn h =
     12  binding construct t V U k1 k2 k3 theta a b c d Isyn spike h =
    1313
    1414    binding subthreshold_eq = [
     
    1717                              ]
    1818
    19     binding threshold_detect  =  [ spike = (V > theta) ]
     19    binding threshold_detect  =  [ spike = (V - theta) ]
    2020
    21     binding tspike_set        =  [ tspike = (if spike then t else tspike) ]
    22 
    23     binding subthreshold_regime  = Diagram.SEQUENCE subthreshold_eq (Diagram.SEQUENCE threshold_detect tspike_set)
     21    binding subthreshold_regime  = subthreshold_eq
    2422                 
    2523    binding refractory_eq        = [
    26                                      [ t      =  t ]
    27                                      [ spike  = false ]
    28                                      [ tspike = tspike ]
     24                                     [ t      = t ]
     25                                     [ h      = h ]
    2926                                     [ V      = c ]
    3027                                     [ U      = (U + d) ]
    3128                                    ]
    3229
    33     return   Diagram.TRANSIENT subthreshold_regime refractory_eq spike
     30    return   Diagram.TRANSIENT subthreshold_regime refractory_eq spike threshold_detect
    3431
    3532end
  • release/4/9ML-toolkit/trunk/examples/IzhikevichFS_UL.xml

    r30835 r30976  
    8686
    8787        <ivp name="TestIzhikevichFS_Iext100">
    88           <timestep>0.001</timestep>
     88          <timestep>0.1</timestep>
    8989          <duration>800.0</duration>
    9090        </ivp>
     
    9292    </Component>
    9393
    94 
     94<!--
    9595    <Component name="IzhikevichFS_Iext200">
    9696
     
    263263
    264264        <ivp name="TestIzhikevichFS_Iext400">
    265           <timestep>0.001</timestep>
     265          <timestep>0.1</timestep>
    266266          <duration>800.0</duration>
    267267        </ivp>
    268268
    269269    </Component>
    270 
     270-->
    271271
    272272
  • release/4/9ML-toolkit/trunk/examples/TestIzhikevich03.9ML

    r25698 r30976  
    1111struct
    1212
    13   binding construct t V U k1 k2 k3 theta a b c d spike tspike Isyn h =
     13  binding construct t V U k1 k2 k3 theta a b c d spike Isyn h =
    1414
    1515    binding subthreshold_eq = [
     
    1818                              ]
    1919
    20     binding threshold_detect  =  [ spike = (V > theta) ]
     20    binding threshold_detect  =  [ spike = (V - theta) ]
    2121
    22     binding tspike_set        =  [ tspike = (if spike then t else tspike) ]
    23 
    24     binding subthreshold_regime  = Diagram.SEQUENCE subthreshold_eq (Diagram.SEQUENCE threshold_detect tspike_set)
     22    binding subthreshold_regime  = subthreshold_eq
    2523                 
    2624    binding refractory_eq        = [
    27                                      [ t      =  t ]
    28                                      [ spike  = false ]
    29                                      [ tspike = tspike ]
     25                                     [ t      = t ]
     26                                     [ h      = h ]
    3027                                     [ V      = c ]
    3128                                     [ U      = (U + d) ]
    3229                                    ]
    3330
    34     return   Diagram.TRANSIENT subthreshold_regime refractory_eq spike
     31    return   Diagram.TRANSIENT subthreshold_regime refractory_eq spike threshold_detect
    3532
    3633end
     
    4239
    4340
    44   val h = S.realsig `h (S.realconst 0.001)
     41  val h = S.realsig `h (S.realconst 0.1)
    4542
    4643  (* Parameters common to all spiking regimes *)
    47   val k1    =    S.realsig `k1 (S.realconst (Real.mul 4. 0.01))
     44  val k1    =    S.realsig `k1 (S.realconst 0.04)
    4845  val k2    =    S.realsig `k2 (S.realconst 5.0)
    4946  val k3    =    S.realsig `k3 (S.realconst 140.0)
    5047  val theta =    S.realsig `theta (S.realconst 30.0)
    5148  val Isyn  =    S.realsig `Isyn  (S.realconst 10.0)
    52 
    5349  (* State initial values *)
    5450  val t      = S.realsig `t (S.realconst 0.0)
    5551  val V      = S.realsig `V (S.realconst -65.0)
    56   val tspike = S.realsig `tspike (S.realconst 0.0)
    57   val spike  = S.boolsig `spike (S.boolconst false)
     52  val spike  = S.signal `spike
    5853
    5954  (* Regular spiking (RS) parameters *)
     
    6358  val RS_d   = S.realsig `d (S.realconst 8.0)
    6459  val RS_U   = S.realsig `U (S.mul RS_b V)
    65   val RS     = Izhikevich03.construct t V RS_U k1 k2 k3 theta RS_a RS_b RS_c RS_d spike tspike Isyn h
    66   val RS_ivp = IVP.construct RS `t `h 0.0 250.0
     60  val RS     = Izhikevich03.construct t V RS_U k1 k2 k3 theta RS_a RS_b RS_c RS_d spike Isyn h
     61  val RS_ivp = IVP.run RS `t `h 0.0 250.0
    6762
     63(*
    6864  (* Intrinsically bursting (IB) parameters *)
    6965  val IB_a = S.realsig `a (S.realconst 0.02)
     
    7268  val IB_d = S.realsig `d (S.realconst 4.0)
    7369  val IB_U = S.realsig `U (S.mul IB_b V)
    74   val IB   = Izhikevich03.construct t V IB_U k1 k2 k3 theta IB_a IB_b IB_c IB_d spike tspike Isyn h
    75   val IB_ivp = IVP.construct IB `t `h 0.0 250.0
     70  val IB   = Izhikevich03.construct t V IB_U k1 k2 k3 theta IB_a IB_b IB_c IB_d spike Isyn h
     71  val IB_ivp = IVP.run IB `t `h 0.0 250.0
    7672
    7773  (* Chattering (CH) parameters *)
     
    8177  val CH_d = S.realsig `d (S.realconst 2.0)
    8278  val CH_U = S.realsig `U (S.mul CH_b V)
    83   val CH   = Izhikevich03.construct t V CH_U k1 k2 k3 theta CH_a CH_b CH_c CH_d spike tspike Isyn h
    84   val CH_ivp = IVP.construct CH `t `h 0.0 250.0
     79  val CH   = Izhikevich03.construct t V CH_U k1 k2 k3 theta CH_a CH_b CH_c CH_d spike Isyn h
     80  val CH_ivp = IVP.run CH `t `h 0.0 250.0
    8581             
    8682  (* Fast-spiking (FS) parameters *)
     
    9086  val FS_d = S.realsig `d (S.realconst 2.0)
    9187  val FS_U = S.realsig `U (S.mul FS_b V)
    92   val FS   = Izhikevich03.construct t V FS_U k1 k2 k3 theta FS_a FS_b FS_c FS_d spike tspike Isyn h
    93   val FS_ivp = IVP.construct FS `t `h 0.0 250.0
     88  val FS   = Izhikevich03.construct t V FS_U k1 k2 k3 theta FS_a FS_b FS_c FS_d spike Isyn h
     89  val FS_ivp = IVP.run FS `t `h 0.0 250.0
    9490             
    9591  (* Thalamo-cortical (TC) parameters *)
     
    9995  val TC_d = S.realsig `d (S.realconst 0.05)
    10096  val TC_U = S.realsig `U (S.mul TC_b V)
    101   val TC   = Izhikevich03.construct t V TC_U k1 k2 k3 theta TC_a TC_b TC_c TC_d spike tspike Isyn h
    102   val TC_ivp = IVP.construct TC `t `h 0.0 250.0
     97  val TC   = Izhikevich03.construct t V TC_U k1 k2 k3 theta TC_a TC_b TC_c TC_d spike Isyn h
     98  val TC_ivp = IVP.run TC `t `h 0.0 250.0
    10399             
    104100  (* Resonator (RZ) parameters *)
     
    108104  val RZ_d = S.realsig `d (S.realconst 2.0)
    109105  val RZ_U = S.realsig `U (S.mul RZ_b V)
    110   val RZ   = Izhikevich03.construct t V RZ_U k1 k2 k3 theta RZ_a RZ_b RZ_c RZ_d spike tspike Isyn h
    111   val RZ_ivp = IVP.construct RZ `t `h 0.0 250.0
     106  val RZ   = Izhikevich03.construct t V RZ_U k1 k2 k3 theta RZ_a RZ_b RZ_c RZ_d spike Isyn h
     107  val RZ_ivp = IVP.run RZ `t `h 0.0 250.0
    112108             
    113109  (* Low-threshold spiking (LTS) parameters *)
     
    117113  val LTS_d = S.realsig `d (S.realconst 2.0)
    118114  val LTS_U = S.realsig `U (S.mul LTS_b V)
    119   val LTS   = Izhikevich03.construct t V LTS_U k1 k2 k3 theta LTS_a LTS_b LTS_c LTS_d spike tspike Isyn h
    120   val LTS_ivp = IVP.construct LTS `t `h 0.0 250.0
    121 
     115  val LTS   = Izhikevich03.construct t V LTS_U k1 k2 k3 theta LTS_a LTS_b LTS_c LTS_d spike Isyn h
     116  val LTS_ivp = IVP.run LTS `t `h 0.0 250.0
     117*)
    122118end
    123119
  • release/4/9ML-toolkit/trunk/examples/TestIzhikevichFS.9ML

    r30827 r30976  
    1111struct
    1212
    13   binding construct t V U k Vr Vt Vb Cm Vpeak a b c spike tspike Isyn Iext h =
     13  binding construct t V U k Vr Vt Vb Cm Vpeak a b c spike Isyn Iext h =
    1414
    1515    binding subthreshold_eq = [
  • release/4/9ML-toolkit/trunk/ivp-lib.scm

    r30935 r30976  
    9898
    9999
    100 (define (construct-ivp prefix name sxml-tuple)
     100(define (construct-ivp prefix name sxml-tuple htype)
    101101
    102102  (let ((sexpr
     
    114114
    115115             (let* (
    116                     (diagram+initial (sexpr->diagram+initial hvar (car sexpr)))
     116                    (diagram+initial (sexpr->diagram+initial `(,htype ,hvar) (car sexpr) ))
    117117                    (sd (construct (car diagram+initial)))
    118118                    (ic (cadr diagram+initial))
     
    153153                           #!key (platform 'chicken) (method 'rk3))
    154154
    155   (let ((sdinfo (construct-ivp prefix ivp-id sxml-tuple)))
     155  (let* ((htype (case method
     156                  ((rkfe rk3 rk4a rk4b) 'fixed)
     157                  ((rkhe rkbs rkf45 rkck rkdp rkf78 rkv65) 'variable)))
     158         (sdinfo (construct-ivp prefix ivp-id sxml-tuple htype)))
    156159
    157160    (d "generate-ivp-code: sdinfo = ~A~%" sdinfo)
     
    206209
    207210               
    208   (let ((sexpr
     211  (let ((htype (case method
     212                 ((rkfe rk3 rk4a rk4b) 'fixed)
     213                 ((rkhe rkbs rkf45 rkck rkdp rkf78 rkv65) 'variable)))
     214        (sexpr
    209215         (let ((sexpr (sxml-value->sexpr sxml-tuple)))
    210216           (case (car sexpr)
     
    221227           (match-let (((ivar hvar start end) (cdr sexpr)))
    222228
    223              (let* ((diagram+initial (sexpr->diagram+initial hvar (car sexpr)))
     229             (let* ((diagram+initial (sexpr->diagram+initial `(,htype ,hvar) (car sexpr)))
    224230                    (sd (construct (car diagram+initial)))
    225231                    (ic (cadr diagram+initial)))
  • release/4/9ML-toolkit/trunk/ivp-mlton.scm

    r30827 r30976  
    33;;
    44;;
    5 ;; Copyright 2010-2013 Ivan Raikov and the Okinawa Institute of
     5;; Copyright 2010-2014 Ivan Raikov and the Okinawa Institute of
    66;; Science and Technology.
    77;;
     
    4444   ((pair? v)
    4545    (case (car v)
     46      ((real)      (mlton-value (caddr v)))
    4647      ((realsig)   (mlton-value (caddr v)))
    4748      ((realconst) (mlton-value (cadr v)))
     
    157158  (let* ((dir          (or (pathname-directory prefix) "."))
    158159         (shared-dir   (chicken-home))
    159          (flsim-dir    (make-pathname shared-dir "flsim"))
     160         (signal-diagram-dir (make-pathname shared-dir "signal-diagram"))
    160161         (solver-path  (make-pathname (pathname-directory prefix) (conc ivp-id "_solver.sml")))
    161162         (run-path     (make-pathname (pathname-directory prefix) (conc ivp-id "_run.sml")))
     
    179180                            (,(sprintf "val initial = ~A~%" (mlton-initial ic)))
    180181                            ,(sprintf "val _ = (printstate initial; start (~A, Model.~A, initial))~%~%" end ivp-id)
     182                            )))))
     183           
     184           (mlb-path ()
     185                     (with-output-to-file mlb-path
     186                       (lambda ()
     187                         (print-fragments
     188                          `(("$(SML_LIB)/basis/basis.mlb" ,nl )
     189                            ("$(SML_LIB)/basis/unsafe.mlb" ,nl )
     190                            ("$(RK_LIB)/rk.mlb" ,nl )
     191                            ("$(RANDMTZIG_LIB)/randmtzig.mlb" ,nl )
     192                            ("local " ,nl)
     193                            (,(sprintf "    ~A_solver.sml" ivp-id) ,nl)
     194                            ("in" ,nl)
     195                            ("    structure Model" ,nl)
     196                            ("end" ,nl)
     197                            ,(sprintf "~A_run.sml" ivp-id) ,nl))
     198                         )))
     199           
     200           (exec-path (solver-path run-path mlb-path)
     201                      (run (,mlton-path -link-opt -s
     202                                        -mlb-path-var ,(string-append "'RK_LIB " signal-diagram-dir "/sml-lib/rk'")
     203                                        -mlb-path-var ,(string-append "'RANDMTZIG_LIB " signal-diagram-dir "/sml-lib/randmtzig'")
     204                                        ,mlb-path
     205                                        ,(string-append signal-diagram-dir "/sml-lib/randmtzig/randmtziglib.c")
     206                                        )))
     207           
     208           (log-path (exec-path)
     209                     (run (,exec-path > ,log-path)))
     210           )
     211      (list log-path) )
     212    ))
     213
     214
     215(define (ivp-mlton-codegen prefix ivp-id ivar dvars pvars ic sd solver)
     216  (let* ((dir          (or (pathname-directory prefix) "."))
     217         (shared-dir   (chicken-home))
     218         (solver-path  (make-pathname (pathname-directory prefix) (conc ivp-id "_solver.sml")))
     219         (run-path     (make-pathname (pathname-directory prefix) (conc ivp-id "_run.sml")))
     220         (mlb-path     (make-pathname (pathname-directory prefix) (conc ivp-id "_run.mlb")))
     221         (mlton-path  "mlton")
     222         )
     223   
     224    (make (
     225           (solver-path (prefix)
     226                        (with-output-to-file solver-path (lambda () (codegen/ML ivp-id sd solver: solver))))
     227           
     228           (run-path (prefix)
     229                     (with-output-to-file run-path
     230                       (lambda ()
     231                         (print-fragments
     232                          `(
     233                            (,mlton-run-prelude)
     234                            (,(mlton-printstate ivar dvars ic) ,nl)
     235                            (,(mlton-run-start ivar dvars ic) ,nl)
     236                            (,(sprintf "val initial = ~A~%" (mlton-initial ic)))
    181237                            )))))
    182238           
     
    196252                         )))
    197253           
    198            (exec-path (solver-path run-path mlb-path)
    199                       (run (,mlton-path -link-opt -s
    200                                         -mlb-path-var ,(string-append "'RK_LIB " flsim-dir "/sml-lib/rk'")
    201                                         -mlb-path-var ,(string-append "'RANDMTZIG_LIB " flsim-dir "/sml-lib/randmtzig'")
    202                                         ,mlb-path
    203                                         ,(string-append flsim-dir "/sml-lib/randmtzig/randmtziglib.c")
    204                                         )))
    205            
    206            (log-path (exec-path)
    207                      (run (,exec-path > ,log-path)))
    208            )
    209       (list log-path) )
    210     ))
    211 
    212 
    213 (define (ivp-mlton-codegen prefix ivp-id ivar dvars pvars ic sd solver)
    214   (let* ((dir          (or (pathname-directory prefix) "."))
    215          (shared-dir   (chicken-home))
    216          (flsim-dir    (make-pathname shared-dir "flsim"))
    217          (solver-path  (make-pathname (pathname-directory prefix) (conc ivp-id "_solver.sml")))
    218          (run-path     (make-pathname (pathname-directory prefix) (conc ivp-id "_run.sml")))
    219          (mlb-path     (make-pathname (pathname-directory prefix) (conc ivp-id "_run.mlb")))
    220          (mlton-path  "mlton")
    221          )
    222    
    223     (make (
    224            (solver-path (prefix)
    225                         (with-output-to-file solver-path (lambda () (codegen/ML ivp-id sd solver: solver))))
    226            
    227            (run-path (prefix)
    228                      (with-output-to-file run-path
    229                        (lambda ()
    230                          (print-fragments
    231                           `(
    232                             (,mlton-run-prelude)
    233                             (,(mlton-printstate ivar dvars ic) ,nl)
    234                             (,(mlton-run-start ivar dvars ic) ,nl)
    235                             (,(sprintf "val initial = ~A~%" (mlton-initial ic)))
    236                             )))))
    237            
    238            (mlb-path ()
    239                      (with-output-to-file mlb-path
    240                        (lambda ()
    241                          (print-fragments
    242                           `(("$(SML_LIB)/basis/basis.mlb" ,nl )
    243                             ("$(RK_LIB)/rk.mlb" ,nl )
    244                             ("$(RANDMTZIG_LIB)/randmtzig.mlb" ,nl )
    245                             ("local " ,nl)
    246                             (,(sprintf "    ~A_solver.sml" ivp-id) ,nl)
    247                             ("in" ,nl)
    248                             ("    structure Model" ,nl)
    249                             ("end" ,nl)
    250                             ,(sprintf "~A_run.sml" ivp-id) ,nl))
    251                          )))
    252            
    253254           )
    254255      (list solver-path run-path mlb-path) )
  • release/4/9ML-toolkit/trunk/ivp-octave-mlton.scm

    r29624 r30976  
    317317                         (make-pathname (current-directory) dir)))
    318318         (shared-dir         (chicken-home))
    319          (flsim-dir          (make-pathname shared-dir "flsim"))
     319         (signal-diagram-dir (make-pathname shared-dir "signal-diagram"))
    320320         (solver-path        (make-pathname dir (sprintf "~A_solver.sml" ivp-id)))
    321321         (clib-path          (make-pathname dir (sprintf "~A_clib.sml" ivp-id)))
     
    394394                                           -format library -export-header
    395395                                           ,h-path -default-ann "'allowFFI true'" -link-opt -s
    396                                            -mlb-path-var ,(string-append "'RK_LIB " flsim-dir "/sml-lib/rk'")
     396                                           -mlb-path-var ,(string-append "'RK_LIB " signal-diagram-dir "/sml-lib/rk'")
    397397                                           ,mlb-path)) )
    398398           
     
    445445                         (make-pathname (current-directory) dir)))
    446446         (shared-dir         (chicken-home))
    447          (flsim-dir          (make-pathname shared-dir "flsim"))
     447         (signal-diagram-dir (make-pathname shared-dir "signal-diagram"))
    448448         (solver-path        (make-pathname dir (sprintf "~A_solver.sml" ivp-id)))
    449449         (clib-path          (make-pathname dir (sprintf "~A_clib.sml" ivp-id)))
     
    513513                                           -format library -export-header
    514514                                           ,h-path -default-ann "'allowFFI true'" -link-opt -s
    515                                            -mlb-path-var ,(string-append "'RK_LIB " flsim-dir "/sml-lib/rk'")
     515                                           -mlb-path-var ,(string-append "'RK_LIB " signal-diagram-dir "/sml-lib/rk'")
    516516                                           ,mlb-path)) )
    517517           
  • release/4/9ML-toolkit/trunk/ivp.scm

    r30827 r30976  
    8787  `(
    8888    (platform . chicken)
     89    (method . rk3)
    8990    ))
    9091
     
    150151                            (transformer ,string->symbol)
    151152                             ))
     153
     154    (method        "integration method (one of rkfe, rk3, rk4a, rk4b, rkhe, rkf45, rkck, rkdp)"
     155                     (value (required PLATFORM)
     156                            (predicate
     157                             ,(lambda (x)
     158                                (let ((s (string->symbol (string-downcase x))))
     159                                  (case s
     160                                    ((rkfe rk3 rk4a rk4b rkhe rkf45 rkck rkdp) s)
     161                                    (else (error '9ML-ivp "unrecognized method" x))))))
     162                            (transformer ,string->symbol)
     163                            ))
    152164
    153165    (verbose          "print commands as they are executed"
     
    238250            (unified-envs (map (lambda (x) (interpreter x xml: (options 'xml))) operands)))
    239251        (if (options 'verbose) (begin (eval-verbose 1) (ivp-verbose 1)))
     252
    240253        (ivp-simulation-platform (or (options 'platform) (defopt 'platform) ))
     254        (ivp-simulation-method (or (options 'method) (defopt 'method) ))
     255
    241256        (for-each
    242257         (lambda (operand uenv)
  • release/4/9ML-toolkit/trunk/network.scm

    r30935 r30976  
    33;;
    44;;
    5 ;; Copyright 2010-2013 Ivan Raikov and the Okinawa Institute of
     5;; Copyright 2010-2014 Ivan Raikov and the Okinawa Institute of
    66;; Science and Technology.
    77;;
     
    14971497                                                   group-tenv
    14981498                                                   `((sml_lib_home . ,(Tstr (make-pathname
    1499                                                                              (make-pathname shared-dir "flsim")
     1499                                                                             (make-pathname shared-dir "signal-diagram")
    15001500                                                                             "sml-lib")))
    15011501                                                     (nineml_lib_home . ,(Tstr (make-pathname
  • release/4/9ML-toolkit/trunk/parse.scm

    r30917 r30976  
    179179(define diagram-on            (Longid (Pdot (Pident (ident-create "Diagram")) "ON")))
    180180(define diagram-transient     (Longid (Pdot (Pident (ident-create "Diagram")) "TRANSIENT")))
    181 (define diagram-transition    (Longid (Pdot (Pident (ident-create "Diagram")) "TRANSITION")))
    182181(define diagram-rtransition   (Longid (Pdot (Pident (ident-create "Diagram")) "RTRANSITION")))
    183182(define diagram-relation      (Longid (Pdot (Pident (ident-create "Diagram")) "RELATION")))
  • release/4/signal-diagram/trunk/examples/Izhikevich03.scm

    r30972 r30976  
    153153
    154154
    155 (define models `((RS  . ,RS))) ; (IB . ,IB) (CH . ,CH) (FS . ,FS)  (RZ . ,RZ) (LTS . ,LTS) ))
     155(define models `((RS  . ,RS) (IB . ,IB) (CH . ,CH) (FS . ,FS)  (RZ . ,RZ) (LTS . ,LTS) ))
    156156
    157157 
  • release/4/signal-diagram/trunk/signal-diagram.scm

    r30972 r30976  
    3333        (PURE PRIM RELATION IDENTITY
    3434         SENSE ACTUATE SEQUENCE UNION REDUCE
    35          INTEGRAL TRANSITION RTRANSITION TRANSIENT ON
     35         INTEGRAL RTRANSITION TRANSIENT ON
    3636
    3737         function? make-function function-formals function-body
     
    200200  (REDUCE       (f function?) (name symbol?) (init symbol?))
    201201  (RTRANSITION  (f diagram?) (g diagram?)
    202                 (ef symbol?)
    203                 (eg (lambda (x) (or (symbol? x) (boolean? x))))
     202                (ef symbol?) (eg symbol?)
    204203                (s  symbol?)
    205204                )
    206   (TRANSITION   (f diagram?) (g diagram?) (ef symbol?) (s symbol?))
    207205  (TRANSIENT    (f diagram?) (g diagram?) (e symbol?) (ef diagram?) )
    208206  (ON           (f diagram?) (e symbol?) )
     
    11091107  (sf-rtransition0 f fk e ek s))
    11101108
    1111 ;; One-time state transition
    1112 
    1113 (define (sf-transition f fk ev s)
    1114   (sf-rtransition0 f fk ev #f s))
    1115 
    11161109
    11171110;; Transient events
     
    14811474           (REDUCE (f n i)             (sf-reduce f n i))
    14821475           (RTRANSITION (f g ef eg s)  (sf-rtransition (recur f ev) (recur g ev) ef eg s))
    1483            (TRANSITION (f g ef s)      (sf-transition (recur f ev) (recur g ev) ef s))
    14841476           (TRANSIENT (f g e ef)       (let ((ee (recur ef #f)))
    14851477                                         (sf-transient (recur f (list e ee)) (recur g ev) e ee)))
     
    17741766            then (let
    17751767                     val theta   = secant tol (evtest o finterp) (evtest ys) 1.0 0.0
    1776                      val ys''    = finterp (theta+tol)
     1768                     val ys''    = finterp (theta)
    17771769                 in
    1778                      Root (x+(theta+tol)*h,ys'',h')
     1770                     Root (x+(theta)*h,ys'',h')
    17791771                 end)
    17801772            else Next (x+h,ys',h')
     
    18231815       )
    18241816))
    1825 
    1826 
    18271817 
    18281818(define (prelude/Octave #!key (solver 'lsode))
     
    19031893
    19041894EOF
    1905 
     1895,(if (not solver)
     1896     `("function res = integral (f,x,y,h,i)" ,nl
     1897       "  res = f(x,y); " ,nl end ,nl
     1898       ,nl)
     1899     `((
     1900#<<EOF
     1901
     1902EOF
     1903)
     1904       ("global " ,solver #\; ,nl)
     1905       (,solver = #\@ ,(case solver
     1906                         ((rk3) 'ode23) ((rk4b rk4a) 'ode45) ((rkf45) 'ode54)
     1907                         (else 'lsode)) #\; ,nl)
     1908
     1909       ,(cond
     1910
     1911         ((member solver '(rk3 rk4b rk4a rkf45))
     1912
     1913               `(
     1914#<<EOF
     1915global reltol abstol dt;
     1916reltol = 0.1;
     1917abstol = 0.01;
     1918dt = 0.001;
     1919
     1920global P;
     1921P = odeset ("RelTol" , reltol , "AbsTol" , abstol , "MaxStep" , 1 , "InitialStep" , dt) ;
     1922
     1923EOF
     1924       "function res = integral (f,x,y,h,i)" ,nl
     1925       "  global P " ,solver ";" ,nl
     1926       "  [t,y] = " ,solver "(f,[x,x+h],y,P); " ,nl
     1927       "  res = y(2);" ,nl end ,nl
     1928       ))
     1929              (else
     1930
     1931               `(
     1932#<<EOF
     1933lsode_options("relative tolerance",1e-4);
     1934lsode_options("absolute tolerance",1e-4);
     1935
     1936
     1937EOF
     1938       "function res = integral (f,x,y0,h,i)" ,nl
     1939       "  global " ,solver ";" ,nl
     1940       "  y = " ,solver "(@(yvec,t) f(t,yvec),y0,[x,x+h]); " ,nl
     1941       "  res = y(2);" ,nl end ,nl
     1942       )
     1943   ))
     1944 ))
    19061945))
     1946
    19071947
    19081948(define (codegen/Octave name f #!key (initial #f) (pre #t) (solver #f))
Note: See TracChangeset for help on using the changeset viewer.