Changeset 31028 in project


Ignore:
Timestamp:
06/15/14 02:33:29 (6 years ago)
Author:
Ivan Raikov
Message:

9ML-toolkit + signal-diagram: completed adaptive integration changes

Location:
release/4
Files:
2 added
1 deleted
12 edited

Legend:

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

    r30919 r31028  
    371371(copy-file-to-9ML-dir "examples/LIF_UL.xml")
    372372
     373(copy-file-to-9ML-dir "templates/Network.sml.adaptive.tmpl")
     374(copy-file-to-9ML-dir "templates/Sim.sml.adaptive.tmpl")
    373375(copy-file-to-9ML-dir "templates/Network.sml.tmpl")
    374376(copy-file-to-9ML-dir "templates/Sim.sml.tmpl")
  • release/4/9ML-toolkit/trunk/alsys-lib.scm

    r30105 r31028  
    137137                 
    138138
    139 (define (generate-alsys-code prefix alsys-id sxml-tuple #!key (platform 'mlton))
     139(define (generate-alsys-code prefix alsys-id sxml-tuple #!key (platform 'mlton) (random #f))
    140140
    141141  (let ((lsinfo (construct-alsys prefix alsys-id sxml-tuple)))
     
    156156        ((mlton)
    157157         (begin
    158            (alsys-mlton-codegen prefix alsys-id dvars pvars ic ls)
     158           (alsys-mlton-codegen prefix alsys-id dvars pvars ic ls random: random)
    159159           `((sys-id . ,alsys-id) . ,lsinfo)))
    160160       
     
    176176          (and (pair? label) (string=? (car label) "alsys"))) ;; value is an algebraic system
    177177
    178       (let ((alsys-info (generate-alsys-code prefix name value platform: (alsys-simulation-platform))))
     178      (let ((alsys-info (generate-alsys-code prefix name value
     179                                             platform: (alsys-simulation-platform) random: #t)))
    179180        (alsys-env (cons `(,(string->symbol name) . ,alsys-info) (alsys-env)))
    180181        alsys-info
  • release/4/9ML-toolkit/trunk/alsys-mlton.scm

    r30976 r31028  
    134134
    135135
    136 (define (alsys-mlton-codegen prefix alsys-id dvars pvars ic sd)
     136(define (alsys-mlton-codegen prefix alsys-id dvars pvars ic sd #!key (random #f))
    137137  (let* ((dir          (or (pathname-directory prefix) "."))
    138138         (shared-dir   (chicken-home))
     
    145145    (make (
    146146           (solver-path (prefix)
    147                         (with-output-to-file solver-path (lambda () (codegen/ML alsys-id sd))))
     147                        (with-output-to-file solver-path (lambda () (codegen/ML alsys-id sd random: random))))
    148148           
    149149           (run-path (prefix)
  • release/4/9ML-toolkit/trunk/examples/Brunel00/BrunelIaF.xml

    r30924 r31028  
    2727         
    2828          <TimeDerivative variable="V">
    29             <MathInline> ( - V) / tau </MathInline>
     29            <MathInline> ( - V + (R * Isyn)) / tau </MathInline>
    3030          </TimeDerivative>
    31 
    32 
    33           <StateAssignment variable="V" >
    34             <MathInline> V + (R * Isyn) </MathInline>
    35           </StateAssignment>
    3631
    3732          <OnCondition>
     
    4540            </StateAssignment>
    4641           
     42            <StateAssignment variable="V" >
     43              <MathInline> Vreset </MathInline>
     44            </StateAssignment>
     45           
    4746            <EventOut port="spikeOutput" />
    4847           
     
    5352        <Regime name="refractoryRegime">
    5453           
    55           <StateAssignment variable="V" >
    56             <MathInline> Vreset </MathInline>
    57           </StateAssignment>
    58 
    59           <StateAssignment variable="t" >
    60             <MathInline> t + h </MathInline>
    61           </StateAssignment>
     54          <TimeDerivative variable="V" >
     55            <MathInline> 0.0 </MathInline>
     56          </TimeDerivative>
    6257
    6358          <OnCondition>
  • release/4/9ML-toolkit/trunk/examples/Brunel00/Brunel_network_delta.xml

    r30998 r31028  
    136136      <Property>
    137137        <label>R</label>
    138         <value>1.0</value>
     138        <value>10.0</value>
    139139      </Property>
    140140     
     
    188188      <Property>
    189189        <label>R</label>
    190         <value>1.0</value>
     190        <value>10.0</value>
    191191      </Property>
    192192
  • release/4/9ML-toolkit/trunk/ivp-lib.scm

    r30993 r31028  
    154154
    155155(define (generate-ivp-code prefix ivp-id sxml-tuple
    156                            #!key (platform 'chicken) (method 'rk3))
     156                           #!key (platform 'chicken) (method 'rk3) (random #f))
    157157
    158158  (let* ((htype (case method
     
    194194            ((mlton)
    195195             (begin
    196                (ivp-mlton-codegen prefix ivp-id ivar dvars pvars ic sd method)
     196               (ivp-mlton-codegen prefix ivp-id ivar dvars pvars ic sd method random: random)
    197197               `((ivp-id . ,ivp-id) . ,sdinfo)))
    198198           
     
    209209  )               
    210210
    211 (define (generate-ivp-table prefix ivp-id sxml-tuple #!key (platform 'chicken) (method 'rk3))
     211(define (generate-ivp-table prefix ivp-id sxml-tuple #!key (platform 'chicken) (method 'rk3) (random #f))
    212212
    213213               
     
    265265                   ((mlton)
    266266                    (process-fork
    267                      (lambda () (ivp-mlton  prefix ivp-id ivar dvars pvars start end ic sd method)))
     267                     (lambda () (ivp-mlton  prefix ivp-id ivar dvars pvars start end ic sd method random: random)))
    268268                    (list ivp-id ivar dvars) )
    269269
     
    292292
    293293      (let ((ivp-info (generate-ivp-code prefix name value
    294                                          method: 'rkfe
    295                                          platform: (ivp-simulation-platform))))
     294                                         method: (ivp-simulation-method)
     295                                         platform: (ivp-simulation-platform)
     296                                         random: #t)))
    296297        (ivp-env (cons `(,(string->symbol name) . ,ivp-info) (ivp-env)))
    297298        ivp-info
  • release/4/9ML-toolkit/trunk/ivp-mlton.scm

    r30993 r31028  
    155155
    156156
    157 (define (ivp-mlton prefix ivp-id ivar dvars pvars start end ic sd solver)
     157(define (ivp-mlton prefix ivp-id ivar dvars pvars start end ic sd solver #!key (random #f))
    158158  (let* ((dir          (or (pathname-directory prefix) "."))
    159159         (shared-dir   (chicken-home))
     
    168168    (make (
    169169           (solver-path (prefix)
    170                         (with-output-to-file solver-path (lambda () (codegen/ML ivp-id sd solver: solver))))
     170                        (with-output-to-file solver-path (lambda () (codegen/ML ivp-id sd solver: solver random: random))))
    171171           
    172172           (run-path (prefix)
     
    213213
    214214
    215 (define (ivp-mlton-codegen prefix ivp-id ivar dvars pvars ic sd solver)
     215(define (ivp-mlton-codegen prefix ivp-id ivar dvars pvars ic sd solver #!key (random #f))
    216216  (let* ((dir          (or (pathname-directory prefix) "."))
    217217         (shared-dir   (chicken-home))
     
    224224    (make (
    225225           (solver-path (prefix)
    226                         (with-output-to-file solver-path (lambda () (codegen/ML ivp-id sd solver: solver))))
     226                        (with-output-to-file solver-path (lambda () (codegen/ML ivp-id sd solver: solver random: random))))
    227227           
    228228           (run-path (prefix)
  • release/4/9ML-toolkit/trunk/network.scm

    r30993 r31028  
    973973                                      states: states
    974974                                      fields: (map car fields)
    975                                       update: '((Isyn . Isyn_i))))
     975                                      update: '((h . h_i) (Isyn . Isyn_i))))
    976976               (copyState/ML          (mlton-state-update states
    977977                                                          input: "initial"
     
    14281428             (shared-dir    (chicken-home))
    14291429             (template-dir  (make-pathname (make-pathname shared-dir "9ML") "templates"))
    1430              (network-tmpl  "Network.sml.tmpl")
    1431              (sim-tmpl      "Sim.sml.tmpl")
     1430             (network-tmpl  (case (simulation-method)
     1431                              ((rkfe rk3 rk4a rk4b)
     1432                               "Network.sml.tmpl")
     1433                              ((rkhe rkf45 rkck rkdp)
     1434                               "Network.sml.adaptive.tmpl")
     1435                              (else
     1436                               "Network.sml.tmpl")))
     1437             (sim-tmpl      (case (simulation-method)
     1438                              ((rkfe rk3 rk4a rk4b)
     1439                               "Sim.sml.tmpl")
     1440                              ((rkhe rkf45 rkck rkdp)
     1441                               "Sim.sml.adaptive.tmpl")
     1442                              (else
     1443                               "Sim.sml.tmpl")))
    14321444             (mlb-tmpl      "Sim.mlb.tmpl")
    14331445             (makefile-tmpl "Makefile.tmpl")
  • release/4/9ML-toolkit/trunk/parse.scm

    r31009 r31028  
    546546                                (sys2 (if e1 (make-event e1 sys1 aliases) sys1)))
    547547
    548                   (print "e1 = " e1)
    549                   (print "c-assignments1 = " c-assignments1)
    550548
    551549                  sys2))
  • release/4/9ML-toolkit/trunk/sml-lib/priority.sml

    r30905 r31028  
    11
    2 functor TEventQueue (val h: real) =
     2
     3functor TEventQueue (structure P : PRIORITY
     4                     type value
     5                     val value : P.item -> value) =
    36struct
    47
    5     structure TEventPriority =
    6     struct
    7        type priority     = int
    8        fun compare (x,y) = Int.compare (y,x)
    9        type item         = int * (RTensor.tensor * (RTensor.tensor list))
    10        val priority : item -> int = #1
    11     end
     8    structure PQ = LeftPriorityQFn (P)
    129
     10    type priority = P.priority
     11    type value = value
     12                                   
     13    val empty   = PQ.empty
    1314
    14     structure PQ = LeftPriorityQFn (TEventPriority)
     15    val numItems    = PQ.numItems
    1516
    16     (* Given a delay (positive real number), compute the priority given a time step *)
    17     fun delayPriority (delay) = Real.round (Real./ (delay, h))
     17    val isEmpty = PQ.isEmpty
    1818
    19     val empty = PQ.empty
     19    val merge   = PQ.merge
    2020
    21     fun addEvent ((delay, elem), pq) =
    22         let
    23             val prio = delayPriority delay
    24         in
    25             PQ.insert ((prio, elem), pq)
    26         end
    27 
     21    fun addEvent (item, pq) =
     22        PQ.insert (item, pq)
    2823
    2924    fun nextEvent (f, dflt, pq) =
    3025        case PQ.next pq of
    3126            NONE => (dflt, pq)
    32           | SOME ((prio, v), pq') =>
    33             (f (prio, v), pq')
     27          | SOME (v, pq') =>
     28            (f (P.priority v, value v), pq')
    3429
    3530
     
    3732        case PQ.next pq of
    3833            NONE => (dflt, pq)
    39           | SOME ((prio, v), pq') =>
    40             (if p (prio, v)
    41              then (f (prio, v), pq')
     34          | SOME (v, pq') =>
     35            (if p (P.priority v, value v)
     36             then (f (P.priority v, value v), pq')
    4237             else (dflt, pq))
    4338
    44     fun nextUntil (t, f, pq) =
     39
     40    fun nextUntil (f, t, pq) =
    4541        let
    46             val prio = delayPriority t
    47             val _ = print ("nextUntil: prio = " ^ (Int.toString prio) ^ "\n")
    48                                            
     42            val prio = t
    4943
    5044            fun recur (lst, pq) =
    5145                let
    52                     val (e, pq') = nextEvent' ((fn (prio',_) => prio' <= prio),
    53                                                (fn (prio,v) => SOME (prio,v)),
     46                    val (e, pq') = nextEvent'
     47                                       ((fn (p,v) => case P.compare (p, prio) of
     48                                                         LESS => true
     49                                                       | EQUAL => true
     50                                                       | GREATER => false),
     51                                               (fn (item) => SOME item),
    5452                                               NONE,
    5553                                               pq)
     
    6361        end
    6462
     63
     64    fun app f pq =
     65        case PQ.next pq of
     66            NONE => ()
     67          | SOME (item, pq') =>
     68            (f (P.priority item, value item);
     69             app f pq')
     70
     71
     72    fun foldl f pq init =
     73        case PQ.next pq of
     74            NONE => init
     75          | SOME (item, pq') =>
     76            foldl f pq' (f (P.priority item, value item, init))
     77
    6578end
  • release/4/signal-diagram/trunk/algebraic-system.scm

    r30998 r31028  
    578578      )))
    579579
    580 (define (codegen/ML name f #!key (initial #f) (pre #t) (post #t))
     580(define (codegen/ML name f #!key (initial #f) (pre #t) (post #t) (random #f))
    581581
    582582  (let ((dfe (larrow-dfe f)))
     
    591591
    592592
    593       (if pre (print-fragments (prelude/ML)))
     593      (if pre (print-fragments (prelude/ML random: random)))
    594594
    595595      (print-fragments (list (map (lambda (x)
  • release/4/signal-diagram/trunk/signal-diagram.scm

    r31008 r31028  
    957957                                      (E:Ret (V:Op kons
    958958                                                   (list (V:Rec (append
    959                                                                  (list (list eother (select-signal '(eother blender) eother blender-env))
     959                                                                 (list (list eother (V:C -1.0))
    960960                                                                       (list e (V:Op etest
    961961                                                                                     (map (lambda (v)
Note: See TracChangeset for help on using the changeset viewer.