//DEFINE THE NETCONNECTION

//objref [post][pre]
//Glutamate syn(Ex)
objref RBC2AC[Num_AC][Num_RBC]				//RBC -> AIIAC
objref ONCB2ONGC[Num_ONGC][Num_ONCBC] 		//ONCB -> ONGC
objref OFFCB2OFFGC[Num_OFFGC][Num_OFFCBC]	//OFFCB -> OFFGC
objref OFFCB2AC[Num_AC][47]			//OFFCB -> AIIAC

//Glycinergic syn(Inh)
objref AC2OFFGC[Num_OFFGC][Num_AC]		//AIIAC -> OFFGC
objref AC2OFFCB[Num_OFFCBC][Num_AC*2] 	//AIIAC -> OFFCB

//Gap junction
objref Gap_AC[Num_AC][Num_AC]			//AIIAC <-> AIIAC
objref Gap_OFFGC[Num_OFFGC][Num_OFFGC]	//OFFGC <-> OFFGC

objref Gap_ONBC_AC[Num_ONCBC][Num_AC]	//ONCB <-> AIIAC
objref Gap_AC_ONBC[Num_AC][Num_ONCBC]	//ONCB <-> AIIAC

//random seed
objref prob
prob = new Random(1)
objref prob2
prob2 = new Random(32)
objref prob3
prob3 = new Random(45)


//============================//
//    Glutamate synapses(Ex)  //
//----------------------------//
//	  Rod -> AIIAC   		  //
//    ONCB -> ONGC            //
//    OFFCB -> OFFGC          //
//    OFFCB -> AIIAC          //
//============================//

proc Ribbon_syn () {
	// Rod -> AIIAC
	//print "EX : RBC -> AIIAC"
	for i = 0, Num_AC-1{
		for j = 0, Num_RBC-1{
			RBC2AC[i][j] = new ribbon_syn()
			AIIAC[i].soma RBC2AC[i][j].loc(1)   // Post synaptic compartment
			setpointer RBC2AC[i][j].v_pre, RBC[j].soma.v(1)

			RBC2AC[i][j].act = 0.0
			RBC2AC[i][j].P1 = 0.00015
			RBC2AC[i][j].P2 = 0.0232
		}
	}


	// ONCB -> ONGC
	//print "EX : ONCB -> ONGC"
	for i = 0, Num_ONGC-1{
		for j = 0, 15{
			ONCB2ONGC[i][j] = new ribbon_syn()
			ON_GC[i].soma ONCB2ONGC[i][j].loc(1)   // Post synaptic compartment
			setpointer ONCB2ONGC[i][j].v_pre, ON_CBC[j].soma.v(1)
			ONCB2ONGC[i][j].act = 0.0
			ONCB2ONGC[i][j].P1 = 0.00015
			ONCB2ONGC[i][j].P2 = 0.0232
			ONCB2ONGC[i][j].v_th = v_th_ONCB_ONGC
			ONCB2ONGC[i][j].v_slp = 5
		}
	}

	// OFFCB -> OFFGC
	//print "EX : OFFCB -> OFFGC"
	for i = 0, Num_OFFGC-1{
		for j = 0, 15{

			OFFCB2OFFGC[i][j] = new ribbon_syn()
			OFF_GC[i].soma OFFCB2OFFGC[i][j].loc(1)   // Post synaptic compartment
			setpointer OFFCB2OFFGC[i][j].v_pre, OFF_CBC[j].soma.v(1)

			OFFCB2OFFGC[i][j].act = 0.0
			OFFCB2OFFGC[i][j].P1 = 0.00015
			OFFCB2OFFGC[i][j].P2 = 0.0232
			OFFCB2OFFGC[i][j].v_th = v_th_OFFCB_OFFGC
			OFFCB2OFFGC[i][j].v_slp = 6
		}
	}

	// OFFCB -> AIIAC
	//print "EX : OFFCB -> AIIAC"
	for i = 0, Num_AC-1{
		for j = 0, 46{
			OFFCB2AC[i][j] = new ribbon_syn()
			AIIAC[i].soma OFFCB2AC[i][j].loc(1)   // Post synaptic compartment
			setpointer OFFCB2AC[i][j].v_pre, OFF_CBC[j].soma.v(1)
			OFFCB2AC[i][j].act = 0.0
			OFFCB2AC[i][j].P1 = 0.00015
			OFFCB2AC[i][j].P2 = 0.0232
		}
	}
	print "Ribbon_syn: done\n"
}

//============================//
// Glu syn parameter setting  //
//============================//


proc Ribbon_syn_set() {
	// Rod -> AIIAC
	for i = 0, Num_AC-1{
		for j = 0, Num_RBC-1{
			RBC2AC[i][j].g_max = g_RB_AII
		}
	}

	// ONCB -> ONGC
	for i = 0, Num_ONGC-1{
		for j = 0, 15{
			ONCB2ONGC[i][j].g_max = g_ONCB_ONGC
			ONCB2ONGC[i][j].v_th = v_th_ONCB_ONGC
		}
	}
	
	// OFFCB -> OFFGC
	for i = 0, Num_OFFGC-1{
		for j = 0, 15{
			OFFCB2OFFGC[i][j].g_max = g_OFFCB_OFFGC
			OFFCB2OFFGC[i][j].v_th = v_th_OFFCB_OFFGC
		}
	}

	// OFFCB -> AIIAC
	for i = 0, Num_AC-1{
		for j = 0, 46{
			OFFCB2AC[i][j].g_max = g_OFFCB_AII
		}
	}
	print "Ribbon_syn_set(): done\n"
}


//=============================//
// Glycinergic synapses(Inh)   //
//-----------------------------//
// AIIAC -> OFFGC              //
// AIIAC -> OFFCB	       //
//=============================//

proc Gly_syn() {
	// AIIAC -> OFFGC
	//print "INH : AIIAC -> OFFGC"
	for i = 0, Num_OFFGC-1{
		for j = 0, Num_AC-1{
			AC2OFFGC[i][j] = new depsyn()
			OFF_GC[i].soma AC2OFFGC[i][j].loc(1)
			setpointer AC2OFFGC[i][j].v_pre, AIIAC[j].soma.v(1)

			AC2OFFGC[i][j].v_th = v_th_AC_OFFGC
			AC2OFFGC[i][j].v_slp = v_slp_AC_OFFGC
			AC2OFFGC[i][j].tau_e = tau_e_AC_OFFGC
			AC2OFFGC[i][j].tau_r = tau_r_AC_OFFGC
			AC2OFFGC[i][j].u = u_AC_OFFGC
		}
	}

	// AIIAC -> OFFCB
	//print "INH : AIIAC -> OFFCB"
	for i = 0, Num_OFFCBC-1{
		for j = 0, Num_AC-1{
			k = j * 2
			m = k + 1


			AC2OFFCB[i][k] = new depsyn()
			AC2OFFCB[i][m] = new depsyn()


			OFF_CBC[i].soma AC2OFFCB[i][k].loc(1)
			setpointer AC2OFFCB[i][k].v_pre, AIIAC[j].soma.v(1)
			OFF_CBC[i].soma AC2OFFCB[i][m].loc(1)
			setpointer AC2OFFCB[i][m].v_pre, AIIAC[j].soma.v(1)

			AC2OFFCB[i][k].v_th = v_th_AC_OFFCB
			AC2OFFCB[i][k].v_slp = v_slp_AC_OFFCB
			AC2OFFCB[i][k].tau_e = tau_e_AC_OFFCB
			AC2OFFCB[i][k].tau_r = tau_r_AC_OFFCB
			AC2OFFCB[i][k].u = u_AC_OFFCB	

			AC2OFFCB[i][m].v_th = v_th_AC_OFFCB
			AC2OFFCB[i][m].v_slp = v_slp_AC_OFFCB
			AC2OFFCB[i][m].tau_e = tau_e_AC_OFFCB
			AC2OFFCB[i][m].tau_r = tau_r_AC_OFFCB
			AC2OFFCB[i][m].u = u_AC_OFFCB			
		}
	}
}

// Gly syn parameter setting

proc Gly_syn_set() {
	// AIIAC -> OFFGC
	for i = 0, Num_OFFGC-1{
		for j = 0, Num_AC-1{
			AC2OFFGC[i][j].g_max = g_AC_OFFGC
		}
	}

	// AIIAC -> OFFCB
	for i = 0, Num_OFFCBC-1{
		for j = 0, 2*Num_AC-1{
			AC2OFFCB[i][j].g_max = g_AC_OFFCB
		}
	}

}

//===================//
//   Gap junction    //
//-------------------//
//  AIIAC <-> ONCB   //
//  AIIAC <-> AIIAC  //
//  OFFGC <-> OFFGC  //
//  ONCB <-> ONCB    //
//  OFFCB <-> OFFCB  //
//===================//

//※Need to write both pre->post and post->pre connection

// AIIAC <-> AIIAC
proc AC_GJ () {
	//print "Gap : AIIAC <-> AIIAC"
	for i = 0, Num_AC-1{
		for j = 0, Num_AC-1{
			Gap_AC[i][j] = new Gap(0.5)
			AIIAC[i].soma Gap_AC[i][j].loc(0.5)
			setpointer Gap_AC[i][j].vgap, AIIAC[j].soma.v(0.5)
		}
	}
}


// AIIAC <-> AIIAC parameter setting
proc AC_GJ_set () {
	for i = 0, Num_AC-1{
		for j = 0, Num_AC-1{
			Gap_AC[i][j].g = gj_AC_AC
		}
	}
}

// OFFGC <-> OFFGC
proc OFFGC_GJ () {
	//print "Gap : OFFGC <-> OFFGC"
	for i = 0, Num_OFFGC-1{
		for j = 0, Num_OFFGC-1{
			Gap_OFFGC[i][j] = new Gap(0.5)
			OFF_GC[i].soma Gap_OFFGC[i][j].loc(0.5)
			setpointer Gap_OFFGC[i][j].vgap, OFF_GC[j].soma.v(0.5)
		}
	}
}

// OFFGC <-> OFFGC parameter setting
proc OFFGC_GJ_set () {
	for i = 0, Num_OFFGC-1{
		for j = 0, Num_OFFGC-1{
			Gap_OFFGC[i][j].g = gj_OFFGC_OFFGC
		}
	}
}


//AIIAC <-> ONCB
proc ACBC_GJ () {
	//print "Gap : AIIAC <-> ONCB"
	for i = 0, Num_AC-1{
		for j = 0, 15{
			Gap_AC_ONBC[i][j] = new Gap(0.5)
			AIIAC[i].soma Gap_AC_ONBC[i][j].loc(0.5)
			setpointer Gap_AC_ONBC[i][j].vgap, ON_CBC[j].soma.v(0.5)
		}
	}
	for i = 0, 15{
		for j = 0, Num_AC-1{
			Gap_ONBC_AC[i][j] = new Gap(0.5)
			ON_CBC[i].soma Gap_ONBC_AC[i][j].loc(0.5)
			setpointer Gap_ONBC_AC[i][j].vgap, AIIAC[j].soma.v(0.5)			
		}
	}
}

// AIIAC <-> ONCB parameter setting
proc ACBC_GJ_set () {
	for i = 0, Num_AC-1{
		for j = 0, 15{
			Gap_AC_ONBC[i][j].g = gj_AC_ONCB
		}
	}
	for i = 0, 15{
		for j = 0, Num_AC-1{
			Gap_ONBC_AC[i][j].g = gj_AC_ONCB
		}
	}
}


//  ONCB <-> ONCB
objref Gap_ONCB_alpha[18]
objref Gap_ONCB_alpha_inv[18]
objref Gap_ONCB_beta[8]
objref Gap_ONCB_beta_inv[8]
objref Gap_ONCB_gamma[3]
objref Gap_ONCB_gamma_inv[3]
objref Gap_ONCB_delta[36]
objref Gap_ONCB_delta_inv[36]

proc ONCB_GJ () {
	//print "Gap : ONCB <-> ONCB"
	k = 0
	l = 0
	m = 0
	n = 0
	for i = 0, Num_ONCBC-1{
		//斜め右下 and 左下
		if(i == 0 || i == 1 || i == 2 || i == 8 || i == 9 || i == 10 || i == 16 || i == 17 || i == 18){
			//斜め左下方向接続
			Gap_ONCB_alpha[k] = new Gap(0.5)
			ON_CBC[i].soma Gap_ONCB_alpha[k].loc(0.5)
			setpointer Gap_ONCB_alpha[k].vgap, ON_CBC[i+3].soma.v(0.5)
			//斜め左下方向逆接続
			Gap_ONCB_alpha_inv[k] = new Gap(0.5)
			ON_CBC[i+3].soma Gap_ONCB_alpha_inv[k].loc(0.5)
			setpointer Gap_ONCB_alpha_inv[k].vgap, ON_CBC[i].soma.v(0.5)
			//斜め右下方向接続
			Gap_ONCB_alpha[k+1] = new Gap(0.5)
			ON_CBC[i].soma Gap_ONCB_alpha[k+1].loc(0.5)
			setpointer Gap_ONCB_alpha[k+1].vgap, ON_CBC[i+4].soma.v(0.5)
			//斜め右下方向逆接続
			Gap_ONCB_alpha_inv[k+1] = new Gap(0.5)
			ON_CBC[i+4].soma Gap_ONCB_alpha_inv[k+1].loc(0.5)
			setpointer Gap_ONCB_alpha_inv[k+1].vgap, ON_CBC[i].soma.v(0.5)

			k = k + 2
		}

		//斜め右下 or 左下
		if(i == 7 || i == 15 || i == 18){
			//斜め左下の場合のみ
			if(i == 18){
				Gap_ONCB_gamma[l] = new Gap(0.5)
				ON_CBC[i].soma Gap_ONCB_gamma[l].loc(0.5)
				setpointer Gap_ONCB_gamma[l].vgap, ON_CBC[i+3].soma.v(0.5)

				Gap_ONCB_gamma_inv[l] = new Gap(0.5)
				ON_CBC[i+3].soma Gap_ONCB_gamma_inv[l].loc(0.5)
				setpointer Gap_ONCB_gamma_inv[l].vgap, ON_CBC[i].soma.v(0.5)

				l = l + 1
			}

			if(i == 7 || i == 15){
				//斜め右下の場合
				Gap_ONCB_gamma[l] = new Gap(0.5)
				ON_CBC[i].soma Gap_ONCB_gamma[l].loc(0.5)
				setpointer Gap_ONCB_gamma[l].vgap, ON_CBC[i+4].soma.v(0.5)

				Gap_ONCB_gamma_inv[l] = new Gap(0.5)
				ON_CBC[i+4].soma Gap_ONCB_gamma_inv[l].loc(0.5)
				setpointer Gap_ONCB_gamma_inv[l].vgap, ON_CBC[i].soma.v(0.5)

				l = l + 1
			}
		}

		//縦方向
		if(i == 3 || i == 4 || i == 5 || i == 6 ||i == 11 || i == 12 || i == 13 || i == 14){
			Gap_ONCB_beta[m] = new Gap(0.5)
			ON_CBC[i].soma Gap_ONCB_beta[m].loc(0.5)
			setpointer Gap_ONCB_beta[m].vgap, ON_CBC[i+4].soma.v(0.5)

			Gap_ONCB_beta_inv[m] = new Gap(0.5)
			ON_CBC[i+4].soma Gap_ONCB_beta_inv[m].loc(0.5)
			setpointer Gap_ONCB_beta_inv[m].vgap, ON_CBC[i].soma.v(0.5)

			m = m + 1
		   }
		
		//放射状
		if(i == 22 || i == 23 || i == 24 || i == 25 || i == 26 || i == 27){
			if(i == 22 || i == 23 || i == 24){
				j = i - 22
			}
			if(i == 25 || i == 26 ){
				j = i - 17
			}

			//1つめ(6角形頂点)
			Gap_ONCB_delta[n] = new Gap(0.5)
			ON_CBC[i].soma Gap_ONCB_delta[n].loc(0.5)
			setpointer Gap_ONCB_delta[n].vgap, ON_CBC[j].soma.v(0.5)

			//1つめ逆方向
			Gap_ONCB_delta_inv[n] = new Gap(0.5)
			ON_CBC[j].soma Gap_ONCB_delta_inv[n].loc(0.5)
			setpointer Gap_ONCB_delta_inv[n].vgap, ON_CBC[i].soma.v(0.5)

			//2つめ(6角形左上)
			Gap_ONCB_delta[n+1] = new Gap(0.5)
			ON_CBC[i].soma Gap_ONCB_delta[n+1].loc(0.5)
			setpointer Gap_ONCB_delta[n+1].vgap, ON_CBC[j+3].soma.v(0.5)


			//2つめ逆方向
			Gap_ONCB_delta_inv[n+1] = new Gap(0.5)
			ON_CBC[j+3].soma Gap_ONCB_delta_inv[n+1].loc(0.5)
			setpointer Gap_ONCB_delta_inv[n+1].vgap, ON_CBC[i].soma.v(0.5)


			//3つめ(6角形右上)
			Gap_ONCB_delta[n+2] = new Gap(0.5)
			ON_CBC[i].soma Gap_ONCB_delta[n+2].loc(0.5)
			setpointer Gap_ONCB_delta[n+2].vgap, ON_CBC[j+4].soma.v(0.5)

			//3つめ逆方向
			Gap_ONCB_delta_inv[n+2] = new Gap(0.5)
			ON_CBC[j+4].soma Gap_ONCB_delta_inv[n+2].loc(0.5)
			setpointer Gap_ONCB_delta_inv[n+2].vgap, ON_CBC[i].soma.v(0.5)


			//4つめ(6角形左下)
			Gap_ONCB_delta[n+3] = new Gap(0.5)
			ON_CBC[i].soma Gap_ONCB_delta[n+3].loc(0.5)
			setpointer Gap_ONCB_delta[n+3].vgap, ON_CBC[j+7].soma.v(0.5)

			//4つめ逆方向
			Gap_ONCB_delta_inv[n+3] = new Gap(0.5)
			ON_CBC[j+7].soma Gap_ONCB_delta_inv[n+3].loc(0.5)
			setpointer Gap_ONCB_delta_inv[n+3].vgap, ON_CBC[i].soma.v(0.5)

			//5つめ(6角形右下)
			Gap_ONCB_delta[n+4] = new Gap(0.5)
			ON_CBC[i].soma Gap_ONCB_delta[n+4].loc(0.5)
			setpointer Gap_ONCB_delta[n+4].vgap, ON_CBC[j+8].soma.v(0.5)

			//5つめ逆方向
			Gap_ONCB_delta_inv[n+4] = new Gap(0.5)
			ON_CBC[j+8].soma Gap_ONCB_delta_inv[n+4].loc(0.5)
			setpointer Gap_ONCB_delta_inv[n+4].vgap, ON_CBC[i].soma.v(0.5)

			//6つめ(6角形下)
			Gap_ONCB_delta[n+5] = new Gap(0.5)
			ON_CBC[i].soma Gap_ONCB_delta[n+5].loc(0.5)
			setpointer Gap_ONCB_delta[n+5].vgap, ON_CBC[j+11].soma.v(0.5)

			//6つめ逆方向
			Gap_ONCB_delta_inv[n+5] = new Gap(0.5)
			ON_CBC[j+11].soma Gap_ONCB_delta_inv[n+5].loc(0.5)
			setpointer Gap_ONCB_delta_inv[n+5].vgap, ON_CBC[i].soma.v(0.5)

			n = n + 6
		}

		// if(i == 19 || i == 20 || i == 21){
		// 	continue
		// }
	}
}

proc ONCB_GJ_set () {
	for i = 0, 17{
		Gap_ONCB_alpha[i].g = gj_ONCB_ONCB
		Gap_ONCB_alpha_inv[i].g = gj_ONCB_ONCB
	}
	for i = 0, 7{
		Gap_ONCB_beta[i].g = gj_ONCB_ONCB
		Gap_ONCB_beta_inv[i].g = gj_ONCB_ONCB
	}
	for i = 0, 2{
		Gap_ONCB_gamma[i].g = gj_ONCB_ONCB
		Gap_ONCB_gamma_inv[i].g = gj_ONCB_ONCB
	}
	for i = 0, 35{
		Gap_ONCB_delta[i].g = gj_ONCB_ONCB
		Gap_ONCB_delta_inv[i].g = gj_ONCB_ONCB
	}
}


// OFFCB <-> OFFCB
objref Gap_OFFCB_alpha_one[32]
objref Gap_OFFCB_alpha_one_inv[32]
double Gap_OFFCB_alpha_one_arr[16]
Gap_OFFCB_alpha_one_arr[0] = 0
Gap_OFFCB_alpha_one_arr[1] = 1
Gap_OFFCB_alpha_one_arr[2] = 2
Gap_OFFCB_alpha_one_arr[3] = 3
Gap_OFFCB_alpha_one_arr[4] = 10
Gap_OFFCB_alpha_one_arr[5] = 11
Gap_OFFCB_alpha_one_arr[6] = 12
Gap_OFFCB_alpha_one_arr[7] = 13
Gap_OFFCB_alpha_one_arr[8] = 30
Gap_OFFCB_alpha_one_arr[9] = 31
Gap_OFFCB_alpha_one_arr[10] = 32
Gap_OFFCB_alpha_one_arr[11] = 33
Gap_OFFCB_alpha_one_arr[12] = 40
Gap_OFFCB_alpha_one_arr[13] = 41
Gap_OFFCB_alpha_one_arr[14] = 42
Gap_OFFCB_alpha_one_arr[15] = 43

objref Gap_OFFCB_alpha_two[8]
objref Gap_OFFCB_alpha_two_inv[8]
double Gap_OFFCB_alpha_two_arr[4]
Gap_OFFCB_alpha_two_arr[0] = 19
Gap_OFFCB_alpha_two_arr[1] = 20
Gap_OFFCB_alpha_two_arr[2] = 21
Gap_OFFCB_alpha_two_arr[3] = 22



objref Gap_OFFCB_beta[20]
objref Gap_OFFCB_beta_inv[20]
double Gap_OFFCB_beta_arr[20]
Gap_OFFCB_beta_arr[0] = 4
Gap_OFFCB_beta_arr[1] = 5
Gap_OFFCB_beta_arr[2] = 6
Gap_OFFCB_beta_arr[3] = 7
Gap_OFFCB_beta_arr[4] = 8
Gap_OFFCB_beta_arr[5] = 14
Gap_OFFCB_beta_arr[6] = 15
Gap_OFFCB_beta_arr[7] = 16
Gap_OFFCB_beta_arr[8] = 17
Gap_OFFCB_beta_arr[9] = 18
Gap_OFFCB_beta_arr[10] = 24
Gap_OFFCB_beta_arr[11] = 25
Gap_OFFCB_beta_arr[12] = 26
Gap_OFFCB_beta_arr[13] = 27
Gap_OFFCB_beta_arr[14] = 28
Gap_OFFCB_beta_arr[15] = 34
Gap_OFFCB_beta_arr[16] = 35
Gap_OFFCB_beta_arr[17] = 36
Gap_OFFCB_beta_arr[18] = 37
Gap_OFFCB_beta_arr[19] = 38

objref Gap_OFFCB_gamma[5]
objref Gap_OFFCB_gamma_inv[5]
double Gap_OFFCB_gamma_arr[5]
Gap_OFFCB_gamma_arr[0] = 9
Gap_OFFCB_gamma_arr[1] = 23
Gap_OFFCB_gamma_arr[2] = 29
Gap_OFFCB_gamma_arr[3] = 39
Gap_OFFCB_gamma_arr[4] = 43

objref Gap_OFFCB_delta[96]
objref Gap_OFFCB_delta_inv[96]
double Gap_OFFCB_delta_arr[16]




proc OFFCB_GJ () {
	//print "Gap : OFFCB <-> OFFCB"
	//斜め左下 and 斜め右下接続(one)
	for i = 0, 15{
		k = i * 2
		j = Gap_OFFCB_alpha_one_arr[i]

		//斜め左下接続
		Gap_OFFCB_alpha_one[k] = new Gap(0.5)
		OFF_CBC[j].soma Gap_OFFCB_alpha_one[k].loc(0.5)
		setpointer Gap_OFFCB_alpha_one[k].vgap, OFF_CBC[j+4].soma.v(0.5)

		//逆接続
		Gap_OFFCB_alpha_one_inv[k] = new Gap(0.5)
		OFF_CBC[j+4].soma Gap_OFFCB_alpha_one_inv[k].loc(0.5)
		setpointer Gap_OFFCB_alpha_one_inv[k].vgap, OFF_CBC[j].soma.v(0.5)

		//斜め右下接続
		Gap_OFFCB_alpha_one[k+1] = new Gap(0.5)
		OFF_CBC[j].soma Gap_OFFCB_alpha_one[k+1].loc(0.5)
		setpointer Gap_OFFCB_alpha_one[k+1].vgap, OFF_CBC[j+5].soma.v(0.5)

		//逆接続
		Gap_OFFCB_alpha_one_inv[k+1] = new Gap(0.5)
		OFF_CBC[j+5].soma Gap_OFFCB_alpha_one_inv[k+1].loc(0.5)
		setpointer Gap_OFFCB_alpha_one_inv[k+1].vgap, OFF_CBC[j].soma.v(0.5)
	}
	//斜め左下 and 斜め右下接続(two)
	for i = 0, 3{
		k = i * 2
		j = Gap_OFFCB_alpha_two_arr[i]

		//斜め左下接続
		Gap_OFFCB_alpha_two[k] = new Gap(0.5)
		OFF_CBC[j].soma Gap_OFFCB_alpha_two[k].loc(0.5)
		setpointer Gap_OFFCB_alpha_two[k].vgap, OFF_CBC[j+5].soma.v(0.5)

		//逆接続
		Gap_OFFCB_alpha_two_inv[k] = new Gap(0.5)
		OFF_CBC[j+5].soma Gap_OFFCB_alpha_two_inv[k].loc(0.5)
		setpointer Gap_OFFCB_alpha_two_inv[k].vgap, OFF_CBC[j].soma.v(0.5)

		//斜め右下接続
		Gap_OFFCB_alpha_two[k+1] = new Gap(0.5)
		OFF_CBC[j].soma Gap_OFFCB_alpha_two[k+1].loc(0.5)
		setpointer Gap_OFFCB_alpha_two[k+1].vgap, OFF_CBC[j+6].soma.v(0.5)

		//逆接続
		Gap_OFFCB_alpha_two_inv[k+1] = new Gap(0.5)
		OFF_CBC[j+6].soma Gap_OFFCB_alpha_two_inv[k+1].loc(0.5)
		setpointer Gap_OFFCB_alpha_two_inv[k+1].vgap, OFF_CBC[j].soma.v(0.5)

	}

	//縦方向接続
	for i = 0, 19{
		j = Gap_OFFCB_beta_arr[i]

		//下方向接続
		Gap_OFFCB_beta[i] = new Gap(0.5)
		OFF_CBC[j].soma Gap_OFFCB_beta[i].loc(0.5)
		setpointer Gap_OFFCB_beta[i].vgap, OFF_CBC[j+5].soma.v(0.5)

		//逆接続
		Gap_OFFCB_beta_inv[i] = new Gap(0.5)
		OFF_CBC[j+5].soma Gap_OFFCB_beta_inv[i].loc(0.5)
		setpointer Gap_OFFCB_beta_inv[i].vgap, OFF_CBC[j].soma.v(0.5)
	}

	//斜め左下 or 斜め右下接続
	for i = 0, 4{
		j = Gap_OFFCB_gamma_arr[i]
		//+4
		if(j == 43){
			Gap_OFFCB_gamma[i] = new Gap(0.5)
			OFF_CBC[j].soma Gap_OFFCB_gamma[i].loc(0.5)
			setpointer Gap_OFFCB_gamma[i].vgap, OFF_CBC[j+4].soma.v(0.5)

			//逆接続
			Gap_OFFCB_gamma_inv[i] = new Gap(0.5)
			OFF_CBC[j+4].soma Gap_OFFCB_gamma_inv[i].loc(0.5)
			setpointer Gap_OFFCB_gamma_inv[i].vgap, OFF_CBC[j].soma.v(0.5)
		}
		//+5
		if(j == 9 || j = 23 || j == 29 || j == 39){
			Gap_OFFCB_gamma[i] = new Gap(0.5)
			OFF_CBC[j].soma Gap_OFFCB_gamma[i].loc(0.5)
			setpointer Gap_OFFCB_gamma[i].vgap, OFF_CBC[j+5].soma.v(0.5)

			//逆接続
			Gap_OFFCB_gamma_inv[i] = new Gap(0.5)
			OFF_CBC[j+5].soma Gap_OFFCB_gamma_inv[i].loc(0.5)
			setpointer Gap_OFFCB_gamma_inv[i].vgap, OFF_CBC[j].soma.v(0.5)
		}
	}

	//放射状
	k = 0
	for i = 48, 63{
		down = 5
		if(i == 48 || i == 49 || i == 50 || i == 51){
			j = i - 48
			left = 4
			right = 5
			dammy = 0
		}
		if(i == 52 || i == 53 || i == 54 || i == 55){
			j = i - 42
			left = 4
			right = 5
			dammy = 1
		}
		if(i == 56 || i == 57 || i == 58 || i == 59){
			j = i - 37
			left = 5
			right = 6
			dammy = -1
		}
		if(i == 60 || i == 61 || i == 62 || i == 63){
			j = i - 30
			left = 4
			right = 5
			dammy = 0
		}

		//上方向
		Gap_OFFCB_delta[k] = new Gap(0.5)
		OFF_CBC[i].soma Gap_OFFCB_delta[k].loc(0.5)
		setpointer Gap_OFFCB_delta[k].vgap, OFF_CBC[j].soma.v(0.5)

		//逆接続
		Gap_OFFCB_delta_inv[k] = new Gap(0.5)
		OFF_CBC[j].soma Gap_OFFCB_delta_inv[k].loc(0.5)
		setpointer Gap_OFFCB_delta_inv[k].vgap, OFF_CBC[i].soma.v(0.5)

		//左上方向
		Gap_OFFCB_delta[k+1] = new Gap(0.5)
		OFF_CBC[i].soma Gap_OFFCB_delta[k+1].loc(0.5)
		setpointer Gap_OFFCB_delta[k+1].vgap, OFF_CBC[j+left].soma.v(0.5)

		//逆接続
		Gap_OFFCB_delta_inv[k+1] = new Gap(0.5)
		OFF_CBC[j+left].soma Gap_OFFCB_delta_inv[k+1].loc(0.5)
		setpointer Gap_OFFCB_delta_inv[k+1].vgap, OFF_CBC[i].soma.v(0.5)

		//右上方向
		Gap_OFFCB_delta[k+2] = new Gap(0.5)
		OFF_CBC[i].soma Gap_OFFCB_delta[k+2].loc(0.5)
		setpointer Gap_OFFCB_delta[k+2].vgap, OFF_CBC[j+right].soma.v(0.5)

		//逆接続
		Gap_OFFCB_delta_inv[k+2] = new Gap(0.5)
		OFF_CBC[j+right].soma Gap_OFFCB_delta_inv[k+2].loc(0.5)
		setpointer Gap_OFFCB_delta_inv[k+2].vgap, OFF_CBC[i].soma.v(0.5)

		//左下方向
		Gap_OFFCB_delta[k+3] = new Gap(0.5)
		OFF_CBC[i].soma Gap_OFFCB_delta[k+3].loc(0.5)
		setpointer Gap_OFFCB_delta[k+3].vgap, OFF_CBC[j+left+down].soma.v(0.5)

		//逆接続
		Gap_OFFCB_delta_inv[k+3] = new Gap(0.5)
		OFF_CBC[j+left+down].soma Gap_OFFCB_delta_inv[k+3].loc(0.5)
		setpointer Gap_OFFCB_delta_inv[k+3].vgap, OFF_CBC[i].soma.v(0.5)

		//右下方向
		Gap_OFFCB_delta[k+4] = new Gap(0.5)
		OFF_CBC[i].soma Gap_OFFCB_delta[k+4].loc(0.5)
		setpointer Gap_OFFCB_delta[k+4].vgap, OFF_CBC[j+right+down].soma.v(0.5)

		//逆接続
		Gap_OFFCB_delta_inv[k+4] = new Gap(0.5)
		OFF_CBC[j+right+down].soma Gap_OFFCB_delta_inv[k+4].loc(0.5)
		setpointer Gap_OFFCB_delta_inv[k+4].vgap, OFF_CBC[i].soma.v(0.5)

		//下方向
		Gap_OFFCB_delta[k+5] = new Gap(0.5)
		OFF_CBC[i].soma Gap_OFFCB_delta[k+5].loc(0.5)
		setpointer Gap_OFFCB_delta[k+5].vgap, OFF_CBC[j+left+down+dammy].soma.v(0.5)

		//逆接続
		Gap_OFFCB_delta_inv[k+5] = new Gap(0.5)
		OFF_CBC[j+left+down+dammy].soma Gap_OFFCB_delta_inv[k+5].loc(0.5)
		setpointer Gap_OFFCB_delta_inv[k+5].vgap, OFF_CBC[i].soma.v(0.5)

		k = k + 6
	}
}

// OFFCB <-> OFFCB parameter setting

proc OFFCB_GJ_set () {
	//alpha
	for i = 0, 15{
		Gap_OFFCB_alpha_one[i].g = gj_OFFCB_OFFCB
		Gap_OFFCB_alpha_one_inv[i].g = gj_OFFCB_OFFCB
	}
	for i = 0, 3{
		Gap_OFFCB_alpha_two[i].g = gj_OFFCB_OFFCB
		Gap_OFFCB_alpha_two_inv[i].g = gj_OFFCB_OFFCB	
	}
	//beta
	for i = 0, 19{
		Gap_OFFCB_beta[i].g = gj_OFFCB_OFFCB
		Gap_OFFCB_beta_inv[i].g = gj_OFFCB_OFFCB
	}
	//gamma
	for i = 0, 4{
		Gap_OFFCB_gamma[i].g = gj_OFFCB_OFFCB
		Gap_OFFCB_gamma_inv[i].g = gj_OFFCB_OFFCB
	}
	//delta
	for i = 0, 95{
		Gap_OFFCB_delta[i].g = gj_OFFCB_OFFCB
		Gap_OFFCB_delta_inv[i].g = gj_OFFCB_OFFCB
	}
}