NEURON's ExpSyn and Exp2Syn are event-driven point processes that can be used to implement one or more synapses attached to a single segment (compartment). One way to represent simultaneously active synapses that are widely distributed (no longer restricted to a single compartment) would be to create a separate Exp2Syn for each compartment, but that would necessitate ensuring that each instance has the proper peak conductance--a compartment with more area should probably have more synapses attached to it than one with less area. Also, you'd have to create a separate NetStim for each Exp2Syn instance.
"Why not implement an event-driven density mechanism?"
Good idea, but it's not doable in NEURON quite yet--only point processes can have a NET_RECEIVE block, and without a NET_RECEIVE block a mechanism can't be driven directly by events.
However, it's quite feasible to split the event-driven waveform-generating stuff from the density mechanism itself, by which I mean break the problem into two tractable parts:
1. Fexp2, an event-driven waveform generator, implemented as a point process. This borrows much of its NMODL code from exp2syn.mod, especially the DERIVATIVE block that governs the time course of the two exponential functions, and the NET_RECEIVE block. A single instance of this can be driven by events generated by one or more NetStims or biophysical model cells. Its output is an NMODL POINTER variable called x whose time course will control the time course of the distributed synaptic conductance.
2. dsyn, a simple density mechanism that has a conductance g and delivers a current i specified by the equations
g = gbar*x
i = g*(v-e)
where
gbar is the "synaptic conductance density" in S/cm2
x is the fraction of synaptic channels that are open at any moment
g is the conductance density of the open synaptic channels
v is local membrane potential
e is the synaptic equilibrium potential
A hoc setpointer statement is used to couple the point process's x (waveform) variable to the density mechanism's x (open channel fraction) variable. dsyn.mod declares that x is GLOBAL, so only one setpointer statement is necessary to ensure that the waveform generated by Fsyn2 will control the open channel fraction in all instances of the dsyn mechanism.
The mod files for Fexp2 and dsyn are in
http://www.neuron.yale.edu/ftp/ted/neuron/dsyn.zip, which also contains a couple of ses files and an init.hoc that illustrates how to use this in a model. init.hoc sets up a toy model cell with three sections, each of which has dsyn. A single NetStim drives a single Fexp2, and Fexp2.x is linked via a setpointer statement to x_dsyn in the middle of the soma. To see the synaptic conductances evolve smoothly in time, click on the Init & Run button in the Movie Run panel. The graphs of v(.5) and g_dsyn(0.5) show membrane potential and synaptic conductance density in the soma; the graph of g_dsyn is a space plot that plots this variable in all comparments of the model vs. distance from the soma.