SUBROUTINE synaptic_compmap_construct (thisno, & num_postsynaptic_cells, compmap, & num_presyninputs_perpostsyn_cell, & num_allowcomp, allow, display) c Construct a map of compartments at connections of one presynaptic c cell to type to a postsynaptic cell type. c compmap (i,j) = compartment number on postsynaptic cell j of its c i'th presynaptic input. c display is an integer flag. If display = 1, print compmap INTEGER thisno, & num_postsynaptic_cells, & num_presyninputs_perpostsyn_cell, & compmap (num_presyninputs_perpostsyn_cell, & num_postsynaptic_cells), & num_allowcomp, allow(num_allowcomp) c num_allowcomp = number of different allowed compartments c allow = list of allowed compartments INTEGER i,j,k,l,m,n,o,p INTEGER display double precision seed, x(1) seed = 377.d0 map = 0 k = 1 do i = 1, num_postsynaptic_cells do j = 1, num_presyninputs_perpostsyn_cell call durand (seed, k, x) c This defines a compartment L = int ( x(1) * dble (num_allowcomp) ) if (L.eq.0) L = 1 if (L.gt.num_allowcomp) & L = num_allowcomp compmap (j,i) = allow(L) end do end do c Possibly print out map when done. if ((display.eq.1).and.(thisno.eq.0)) then write (6,800) 800 format(' SYNAPTIC COMPARTMENT MAP ') do i = 1, num_postsynaptic_cells write (6,50) compmap(1,i), compmap(2,i), & compmap(num_presyninputs_perpostsyn_cell,i) 50 FORMAT(3i6) end do endif END