source: project/release/4/signal-diagram/trunk/examples/Morris-Lecar81.scm @ 23951

Last change on this file since 23951 was 23951, checked in by Ivan Raikov, 9 years ago

signal-diagram: updates to reflect changes in flsim 1.7

File size: 2.3 KB
Line 
1
2;; (bib
3;;     (author   "Morris, C" "Lecar, H")
4;;     (title    "Voltage oscillations in the barnacle giant muscle fiber")
5;;     (journal  "Biophys J")
6;;     (year     "1981")
7;;     (volume   "35")
8;;     (pages    "193-213")
9;;     (bibtype  "article"))
10
11
12(use signal-diagram signal-diagram-dynamics mathh)
13
14(define (Morris-Lecar81:construct gl gk gca vl vk vca v1 v2 v3 v4 phi c Isyn)
15 
16
17  `((f . ,(DAE h t
18               (minf (v) (* 0.5 (+ 1 (tanh (/ (- v v1) v2)))))
19               (winf (v) (* 0.5 (+ 1 (tanh (/ (- v v3) v4)))))
20               (lamw (v) (* phi (cosh (/ (- v v3) (* 2 v4)))))
21               (ica  (v) (* gca (* (minf v) (- vca v))))
22               (ik   (v) (* gk  (* w (- vk v ))))
23               (v    (/ (+ Isyn (* gl (- vl v)) (ica v) (ik v)) c))
24               (w    (* (lamw v) (- (winf v) w)))))
25
26
27    (initial . 
28             ((t      0.0)
29             (h       1e-3)
30             (v       -60.899) 
31             (w       0.0149)
32             (Isyn    ,Isyn)
33             (vk      ,vk)   
34             (vl      ,vl)
35             (vca     ,vca)
36             (gk      ,gk)
37             (gl      ,gl)
38             (gca     ,gca)
39             (c       ,c)
40             (v1      ,v1)
41             (v2      ,v2)
42             (v3      ,v3)
43             (v4      ,v4)
44             (phi     ,phi))))
45
46
47
48  )
49
50
51(define (dataflow model)
52  (let* ((f         (alist-ref 'f model)) 
53         (initial   (alist-ref 'initial model))
54         (input     (map car initial)))
55    (print "input = " input)
56    (print "dataflow f: "  (dataflow (construct f) input))
57    ))
58
59
60(define (codegen name model #!key (language 'scheme) (solver 'rk3))
61  (let* ((f         (alist-ref 'f model)) 
62         (initial   (alist-ref 'initial model))
63         (input     (map car initial)))
64    (let ((codegen (case language
65                     ((octave Octave) codegen/Octave)
66                     ((scheme Scheme) codegen/scheme)
67                     ((ML) codegen/ML))))
68      (codegen name (construct f) initial: initial solver: solver ))
69    ))
70
71
72;; gl gk gca vl vk vca v1 v2 v3 v4 phi c Isyn
73(define Morris-Lecar81 (Morris-Lecar81:construct 2.0 8.0 4.0 -50.0 -70.0 100.0 -1.0 15.0 10.0 14.5 0.0667 20.0 50.0))
74
75(with-output-to-file "Morris-Lecar81_solver.m"
76  (lambda () (codegen 'Morris_Lecar81 Morris-Lecar81  language: 'octave solver: #f)))
77
78(with-output-to-file "Morris-Lecar81_solver.scm"
79  (lambda () (codegen 'Morris_Lecar81 Morris-Lecar81  language: 'scheme)))
80
81(with-output-to-file "Morris-Lecar81_solver.sml"
82  (lambda () (codegen 'Morris-Lecar81 Morris-Lecar81 language: 'ML)))
83
84
Note: See TracBrowser for help on using the repository browser.