// genesis

/*
** This file depends on functions and constants defined in defaults.g
*/

// CONSTANTS
float        ENa             =        -.012 // 0.045    //-.012
float        EK1             =        -0.070
float        EK2             =        -0.070
float        EA              =        -0.070
float        ECaF            =         .180 //0.1352 //.180
float        ECaS            =         .180 //0.1352 //.180
float        EP              =        -.012 // 0.045 
float        Eh              =         -.046  // -0.021  // -.046    

float        nashft_X        =      -.005  // -.005   units V
float        nashft_Y        =      -.005   // -.005   units V
float        k1shft1         =      -.010   // -.01
float        k1shft          =      -.010    // -.01
float        k2shft          =      -.010    // -.01
float        ashft           =      -.010    // -.01
float        CaSshft1        =        0
float        CaSshft2        =        0
float        CaFshft         =        0
float        Pshft           =        0

/***********************************************************************
                            Na-Current
 
***********************************************************************/

function make_Na_ron	// Na-current
    str chanpath = "Na_ron"
    if ({exists {chanpath}})
        return 
    end

    create  tabchannel  {chanpath}
    setfield  {chanpath}  \
         Ek     {ENa}     \
         Gbar   {250e-9}  \
         Ik     0         \
         Gk     0	  \
		 Xpower	3 \
		 Ypower	1 \
		 Zpower	0  

    call    {chanpath}    TABCREATE X 100 -0.100 0.050
                                  
    settab2const {chanpath}  X_A  0  100  0.0001    // -0.1 thru 0.05=>0.  
       //                               -150            -.023
    FillTableInf {chanpath}  X_B  0   1 -150 {nashft_X} -.024
		/* Setting the calc_mode to NO_INTERP for speed */
		setfield {chanpath} X_A->calc_mode 0 X_B->calc_mode 0

		/* tweaking the tables for the tabchan calculation */
		tweaktau {chanpath} X

		/* Filling the tables using B-SPLINE interpolation */
		call {chanpath} TABFILL X 3000 0


 call    {chanpath}    TABCREATE Y 100 -0.100 0.050
 //                             .004 .006 500            -.023
 FillTableTau_Na {chanpath} Y_A .004 .006 500 {nashft_Y} -.023
//                                       500            -.025  
 FillTableInf   {chanpath} Y_B 0     1   500 {nashft_Y} -.025	

		/* Setting the calc_mode to NO_INTERP for speed */
		setfield {chanpath} Y_A->calc_mode 0 Y_B->calc_mode 0

		/* tweaking the tables for the tabchan calculation */
		tweaktau {chanpath} Y

		/* Filling the tables using B-SPLINE interpolation */
		call {chanpath} TABFILL Y 3000 0
end

//
function make_K1_ron
    str chanpath = "K1_ron"
    if ({exists {chanpath}})
        return
    end

    create  tabchannel  {chanpath}
    setfield  {chanpath}  \
         Ek     {EK1}     \
         Gbar   {100e-9}  \
         Ik     0         \
         Gk     0         \
		 Xpower	2 \
		 Ypower	1 \
		 Zpower	0  

    call    {chanpath}    TABCREATE X 100 -0.100 0.050
    
    FillTableTau {chanpath} X_A .001 .011 150 {k1shft1} -.006
 //                                      -143
    FillTableInf {chanpath} X_B 0     1  -143 {k1shft} -.011
		/* Setting the calc_mode to NO_INTERP for speed */
		setfield {chanpath} X_A->calc_mode 0 X_B->calc_mode 0

		/* tweaking the tables for the tabchan calculation */
		tweaktau {chanpath} X

		/* Filling the tables using B-SPLINE interpolation */
		call {chanpath} TABFILL X 3000 0


 call    {chanpath}    TABCREATE Y 100 -0.100 0.050
 FillTableTau {chanpath} Y_A .500 .200 -143 {k1shft} -.003
 FillTableInf {chanpath} Y_B 0    1     111 {k1shft} -.018	

		/* Setting the calc_mode to NO_INTERP for speed */
		setfield {chanpath} Y_A->calc_mode 0 Y_B->calc_mode 0

		/* tweaking the tables for the tabchan calculation */
		tweaktau {chanpath} Y

		/* Filling the tables using B-SPLINE interpolation */
		call {chanpath} TABFILL Y 3000 0
end


function make_K2_ron
    str chanpath = "K2_ron"
    if ({exists {chanpath}})
        return
    end

    create  tabchannel  {chanpath}
    setfield  {chanpath}  \
         Ek     {EK2}     \
         Gbar   {50e-9}   \
         Ik     0         \
         Gk     0         \
		 Xpower	2 \
		 Ypower	0 \
		 Zpower	0  

    call    {chanpath}    TABCREATE X 100 -0.100 0.050
    
    FillTableTau {chanpath} X_A .057 .043 200 {k2shft} -.025
    FillTableInf {chanpath} X_B 0    1    -83 {k2shft} -.010
		/* Setting the calc_mode to NO_INTERP for speed */
		setfield {chanpath} X_A->calc_mode 0 X_B->calc_mode 0

		/* tweaking the tables for the tabchan calculation */
		tweaktau {chanpath} X

		/* Filling the tables using B-SPLINE interpolation */
		call {chanpath} TABFILL X 3000 0

end

// make A channel
function make_A_ron
    str chanpath = "A_ron"
    if ({exists {chanpath}})
        return
    end

    create  tabchannel  {chanpath}
    setfield  {chanpath}  \
         Ek     {EA}      \
         Gbar   {80e-9}   \
         Ik     0         \
         Gk     0	  \
		 Xpower	2 \
		 Ypower	1 \
		 Zpower	0  

    call    {chanpath}    TABCREATE X 100 -0.100 0.050
    //                                    0.0028
    //settab2const {chanpath}  X_A  0  100  0.010  //-0.1 thru 0.05=>0.
    
    FillTableTau {chanpath} X_A .005 .011 200 {ashft} -.020
    FillTableInf {chanpath}  X_B  0   1 -130 {ashft} -.034 
		/* Setting the calc_mode to NO_INTERP for speed */
		setfield {chanpath} X_A->calc_mode 0 X_B->calc_mode 0

		/* tweaking the tables for the tabchan calculation */
		tweaktau {chanpath} X

		/* Filling the tables using B-SPLINE interpolation */
		call {chanpath} TABFILL X 3000 0


    call    {chanpath}    TABCREATE Y 100 -0.100 0.050
    FillTableTau {chanpath} Y_A .026 .0085 -300 {ashft} -.045
    FillTableInf {chanpath} Y_B 0     1     160 {ashft} -.053	

		/* Setting the calc_mode to NO_INTERP for speed */
		setfield {chanpath} Y_A->calc_mode 0 Y_B->calc_mode 0

		/* tweaking the tables for the tabchan calculation */
		tweaktau {chanpath} Y

		/* Filling the tables using B-SPLINE interpolation */
		call {chanpath} TABFILL Y 3000 0
end


function make_h_ron
  
   str chanpath="h_ron"
   if ({exists {chanpath}})
        return
    end 
    
    create  tabchannel  {chanpath}
    setfield  {chanpath}  \
         Ek     {Eh}      \
         Gbar   {7e-9}    \
         Ik     0         \
         Gk     0         \
		 Xpower	2 \
		 Ypower	0 \
		 Zpower	0

   call    {chanpath}    TABCREATE X 100 -0.100 0.050
// add some fields                            
    FillTableTau {chanpath} X_A .700 1.700 -100 0 -.073 
    FillTableInf_h {chanpath} X_B 0 1 180 0 -.047  

		 setfield {chanpath} X_A->calc_mode 0 X_B->calc_mode 0
 
                /* tweaking the tables for the tabchan calculation */
                tweaktau {chanpath} X
 
                /* Filling the tables using B-SPLINE interpolation */
                call {chanpath} TABFILL X 3000 0
end


// make CaF
function make_CaF_ron
    str chanpath = "CaF_ron"
    if ({exists {chanpath}})
        return
    end

    create  tabchannel  {chanpath}
    setfield  {chanpath}  \
         Ek     {ECaF}    \
         Gbar   {16e-9}   \
         Ik     0         \
         Gk     0	  \
		 Xpower	2 \
		 Ypower	1 \
		 Zpower	0  

    call    {chanpath}    TABCREATE X 100 -0.100 0.050
    
    FillTableTau_CaF {chanpath} X_A 
    FillTableInf {chanpath} X_B 0 1 -600 {CaFshft} -.0467
		/* Setting the calc_mode to NO_INTERP for speed */
		setfield {chanpath} X_A->calc_mode 0 X_B->calc_mode 0

		/* tweaking the tables for the tabchan calculation */
		tweaktau {chanpath} X

		/* Filling the tables using B-SPLINE interpolation */
		call {chanpath} TABFILL X 3000 0


 call    {chanpath}    TABCREATE Y 100 -0.100 0.050
                           //.060 .310
 FillTableTau {chanpath} Y_A .060 .310   270 {CaFshft} -.055
 FillTableInf {chanpath} Y_B 0     1   350 {CaFshft} -.0555	

		/* Setting the calc_mode to NO_INTERP for speed */
		setfield {chanpath} Y_A->calc_mode 0 Y_B->calc_mode 0

		/* tweaking the tables for the tabchan calculation */
		tweaktau {chanpath} Y

		/* Filling the tables using B-SPLINE interpolation */
		call {chanpath} TABFILL Y 3000 0
end

//make CaS
function make_CaS_ron
    str chanpath = "CaS_ron"
    if ({exists {chanpath}})
        return
    end

    create  tabchannel  {chanpath}
    setfield  {chanpath}  \
         Ek     {ECaS}    \
         Gbar   {3e-9}    \
         Ik     0         \
         Gk     0         \
		 Xpower	2 \
		 Ypower	1 \
		 Zpower	0  

    call    {chanpath}    TABCREATE X 100 -0.100 0.050
                             // .005 .134
    FillTableTau {chanpath} X_A .005 .134 -400 {CaSshft1}  -.0487
    FillTableInf {chanpath} X_B  0     1  -420 {CaSshft1} -.0472
		/* Setting the calc_mode to NO_INTERP for speed */
		setfield {chanpath} X_A->calc_mode 0 X_B->calc_mode 0

		/* tweaking the tables for the tabchan calculation */
		tweaktau {chanpath} X

		/* Filling the tables using B-SPLINE interpolation */
		call {chanpath} TABFILL X 3000 0


 call    {chanpath}    TABCREATE Y 100 -0.100 0.050
                           //.200
 FillTableTau {chanpath} Y_A .200 5.250 -250 {CaSshft2} -.043
                                               // -.0512
 FillTableInf {chanpath} Y_B 0 1  360 {CaSshft2} -.055

		/* Setting the calc_mode to NO_INTERP for speed */
		setfield {chanpath} Y_A->calc_mode 0 Y_B->calc_mode 0

		/* tweaking the tables for the tabchan calculation */
		tweaktau {chanpath} Y

		/* Filling the tables using B-SPLINE interpolation */
		call {chanpath} TABFILL Y 3000 0
end

function make_P_ron
    str chanpath = "P_ron"
    if ({exists {chanpath}})
        return
    end

    create  tabchannel  {chanpath}
    setfield  {chanpath}  \
         Ek     {EP}      \
         Gbar   {10e-9}   \
         Ik     0         \
         Gk     0         \
		 Xpower	1 \
		 Ypower	0 \
		 Zpower	0  

    call    {chanpath}    TABCREATE X 100 -0.100 0.050
                              //.010 .200       -.057
    FillTableTau {chanpath} X_A .010 .200 400 {Pshft} -.057
                          //             -120 0 -.039
    FillTableInf {chanpath} X_B 0     1  -120 0 -.039
		// Setting the calc_mode to NO_INTERP for speed 
		setfield {chanpath} X_A->calc_mode 0 X_B->calc_mode 0

		// tweaking the tables for the tabchan calculation 
		tweaktau {chanpath} X

		// Filling the tables using B-SPLINE interpolation 
		call {chanpath} TABFILL X 3000 0

end


function make_K3_ron
    str chanpath = "K3_ron"
    if ({exists {chanpath}})
        return
    end

    create  tabchannel  {chanpath}
    setfield  {chanpath}  \
         Ek     {EK1}      \
         Gbar   {10e-9}   \
         Ik     0         \
         Gk     0         \
		 Xpower	1 \
		 Ypower	0 \
		 Zpower	0  

    call    {chanpath}    TABCREATE X 100 -0.100 0.050
                              //.010 .200             -.057
    FillTableTau {chanpath} X_A .020 4.0 400  0 -.020
                          //             -120 0 -.039
    FillTableInf {chanpath} X_B 0     1  -400 0 -.020
		// Setting the calc_mode to NO_INTERP for speed 
		setfield {chanpath} X_A->calc_mode 0 X_B->calc_mode 0

		// tweaking the tables for the tabchan calculation 
		tweaktau {chanpath} X

		// Filling the tables using B-SPLINE interpolation 
		call {chanpath} TABFILL X 3000 0

end

function make_KF_ron
    str chanpath = "KF_ron"
    if ({exists {chanpath}})
        return
    end

    create  tabchannel  {chanpath}
    setfield  {chanpath}  \
         Ek     {EK2}     \
         Gbar   {40e-9}   \
         Ik     0         \
         Gk     0         \
		 Xpower	2 \
		 Ypower	0 \
		 Zpower	0  

    call    {chanpath}    TABCREATE X 100 -0.100 0.050
    
    FillTableTau_KF {chanpath} X_A 1.5 8.0 -100 {0} -.022
    FillTableInf {chanpath} X_B 0    1    -100 {0} -.022
		/* Setting the calc_mode to NO_INTERP for speed */
		setfield {chanpath} X_A->calc_mode 0 X_B->calc_mode 0

		/* tweaking the tables for the tabchan calculation */
		tweaktau {chanpath} X

		/* Filling the tables using B-SPLINE interpolation */
		call {chanpath} TABFILL X 3000 0

end