(* Morris-Lecar with synapse *) component MorrisLecar81 = struct binding construct t V W gl gk gca vl vk vca v1 v2 v3 v4 phi c Isyn h = return [ [ minf (V) = 0.5 * (1 + (tanh ((V - v1) / v2))) ] [ winf (V) = 0.5 * (1 + (tanh ((V - v3) / v4))) ] [ lamw (V) = phi * (cosh ((V - v3) / (2 * v4))) ] [ ica (V) = gca * (minf (V) * ( vca - V)) ] [ ik (V) = gk * (W * (vk - V)) ] [ D (V t h) = (Isyn + (gl * (vl - V)) + ica(V) + ik(V)) / c ] [ D (W t h) = lamw(V) *((winf(V) - W)) ] ] end component AlphaSyn = struct binding construct t V S vt vs alpha beta Isyn h = return [ [ k (V) = 1 / (1 + exp(-((V - vt) / vs))) ] [ D (S t h) = alpha * k(V) * (1 - S) - (beta * S) ] ] end component MorrisLecar81Syn = struct binding construct t V W S gl gk gca vl vk vca v1 v2 v3 v4 phi c vt vs alpha beta Isyn h = Diagram.SEQUENCE (MorrisLecar81.construct t V W gl gk gca vl vk vca v1 v2 v3 v4 phi c Isyn h) (AlphaSyn.construct t V S vt vs alpha beta Isyn h) end